From: Matthias Klose Date: Sat, 13 Jun 2026 09:21:26 +0000 (+0200) Subject: gcc-15 (15.3.0-1) unstable; urgency=medium X-Git-Tag: archive/raspbian/15.3.0-4+rpi1^2^2^2~1 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=42351716346dff2522476a574ba2ad335264eff3;p=gcc-15.git gcc-15 (15.3.0-1) unstable; urgency=medium * GCC 15.3.0 release. - Fix PR middle-end/124900, PR tree-optimization/125431, PR tree-optimization/125250, PR tree-optimization/124086, PR middle-end/121661, PR tree-optimization/120560, PR ipa/120098, PR ipa/120098, PR target/122827 (AArch64), PR rtl-optimization/122266, PR tree-optimization/120003, PR middle-end/125146, PR tree-optimization/125025, PR tree-optimization/125019, PR tree-optimization/124868, PR target/125373 (X86), PR tree-optimization/125079, PR tree-optimization/125039, PR target/124133 (PPC), PR target/124892 (X86), PR tree-optimization/124891, PR tree-optimization/124826, PR tree-optimization/124754, PR target/124870 (ARM), PR target/125409 (AVR), PR target/125049 (loongarch), PR target/125351 (X86), PR target/124316 (X86), PR target/125194 (AVR), PR target/123102 (ARM), PR tree-optimization/122976, PR ipa/124777, PR target/124933 (ARM), PR rtl-optimization/122274, PR ada/125695, PR ada/125240, PR ada/125044, PR ada/125044, PR c/123856, PR c/125252, PR c/124532, PR c++/122163, PR c++/125376, PR c++/124850, PR c++/124487, PR c++/124487, PR c++/124198, PR c++/124531, PR c++/124632, PR c++/123143, PR d/125089, PR fortran/125606, PR fortran/106546, PR fortran/115260, PR fortran/125021, PR fortran/111952, PR fortran/125059, PR fortran/96986, PR fortran/94978, PR fortran/93832, PR fortran/93814, PR fortran/93715, PR fortran/101760, PR fortran/102314, PR fortran/85352, PR fortran/107425, PR fortran/79524, PR fortran/79524, PR fortran/109788, PR fortran/102430, PR target/125752 (AVR), PR libfortran/125095, PR sanitizer/124248, PR libstdc++/117214, PR libstdc++/120789, PR libstdc++/119163, PR libstdc++/122224, PR libstdc++/120386, PR libstdc++/120384, PR libstdc++/125374, PR libstdc++/125369, PR libstdc++/123100, PR libstdc++/122567, PR libstdc++/124513, PR libstdc++/116110, PR libstdc++/116110, PR libstdc++/109965. * Update newlib to 4.6.0.20260123. * Update libga68 symbols file. * d/shlibs.common: Add libgdiagnostics. * Fix PR sanitizer/124248, taken from the gcc-16 branch. * libstdc++-dev: Make baseline file reproducible. Closes: #1133772. * Apply proposed patch for PR rtl-optimization/123853 (m68k). See #1107416. * Apply PR middle-end/124637, taken from the trunk. Closes: #1131886. [dgit import unpatched gcc-15 15.3.0-1] --- 42351716346dff2522476a574ba2ad335264eff3 diff --cc debian/NEWS.gcc index 0000000,0000000..9787ba4 new file mode 100644 --- /dev/null +++ b/debian/NEWS.gcc @@@ -1,0 -1,0 +1,864 @@@ ++GCC 15 Release Series - Changes, New Features, and Fixes ++ ++This page is a "brief" summary of some of the huge number of improvements in ++GCC 15. You may also want to check out our Porting to GCC 15 page and the full ++GCC documentation. ++ ++ ++Caveats ++ ++ * Support for Nios II targets, which was marked obsolete in GCC 14, ++ has now been removed entirely. ++ ++ * In the AArch64 port, support for ILP32 (-mabi=ilp32) has been deprecated ++ and will be removed in a future release. ++ ++ * {0} initializer in C or C++ for unions no longer guarantees ++ clearing of the whole union (except for static storage duration ++ initialization), it just initializes the first union member to ++ zero. If initialization of the whole union including padding bits ++ is desirable, use {} (valid in C23 or C++) or use ++ -fzero-init-padding-bits=unions option to restore old GCC ++ behavior. ++ ++ ++General Improvements ++ ++ * The default vectorizer cost model at -O2 has been enhanced to ++ handle unknown tripcount. But it still disables vectorization of ++ loops when any runtime check for data dependence or alignment is ++ required, it also disables vectorization of epilogue loops but ++ otherwise is equal to the cheap cost model. ++ ++ * The vectorizer now supports vectorizing loops with early exits ++ where the number of elements for the input pointers are unknown ++ through peeling for alignment. This is supported for only for ++ loops with fixed vector lengths. ++ ++ * -ftime-report now only reports monotonic run time instead of ++ system and user time. This reduces the overhead of the option ++ significantly, making it possible to use in standard build ++ systems. ++ ++ * Incremental Link-Time Optimizations significantly reduce average ++ recompilation time of LTO when doing small code edits ++ (e.g. editing a single function). Enable with -flto-incremental=. ++ ++ * For offloading using OpenMP and OpenACC, issues preventing some ++ host-device architecture combinations have been resolved. In ++ particular, offloading from aarch64 hosts to nvptx devices is now ++ supported. Additionally, the support for using C++ in offload ++ regions has been extended. ++ ++ * Improvements for compiling very large input files. The compile ++ time for large input files with -Wmisleading-indentation has been ++ significantly improved. The compiler can now track columnn numbers ++ larger than 4096. Very large source files have more accurate ++ location reporting. ++ ++ ++New Languages and Language specific improvements ++ ++OpenMP ++ ++See the GNU Offloading and Multi-Processing Project (GOMP) page for ++general information. ++ ++ * Support for unified-shared memory has been added for some AMD and ++ Nvidia GPU devices, enabled when using the unified_shared_memory ++ clause to the requires directive. The OpenMP 6.0 self_maps clause ++ is also now supported. For details, see the offload-target ++ specifics section in the GNU Offloading and Multi Processing ++ Runtime Library Manual. ++ ++ * GCC added ompx_gnu_pinned_mem_alloc as a predefined allocator and, ++ for C++, allocator class templates in the omp::allocator namespace ++ for the predefined allocators as specified in the OpenMP ++ specification 5.0, including omp::allocator::null_allocator of ++ OpenMP 6.0 and ompx::allocator::gnu_pinned_mem; the allocator ++ templates can be used with C++ containers such as std::vector. ++ ++ * In C and Fortran, the allocate directive now supports static ++ variables; stack variables were previously supported in those ++ languages. C++ support is not available yet. ++ ++ * Offloading improvements: On Nvidia GPUs, writing to the terminal ++ from OpenMP target regions (but not from OpenACC compute regions) ++ is now also supported in Fortran; in C/C++ and on AMD GPUs this ++ was already supported before with both OpenMP and OpenACC. ++ Constructors and destructors on the device side for declare target ++ static aggregates are now handled. ++ ++ * For Fortran, mapping derived-type variables with allocatable ++ components is now supported. ++ ++ * The OpenMP 5.1 unroll and tile loop-transforming constructs are ++ now supported. ++ ++ * OpenMP 5.0 metadirectives are now supported, as are OpenMP 5.1 ++ dynamic selectors in both metadirective and declare variant (the ++ latter with some restrictions). ++ ++ * The interop construct and the OpenMP interoperability API routines ++ for C, C++ and Fortran are now implemented, including the OpenMP ++ 6.0 additions. This includes foreign-runtime support for Cuda, ++ Cuda Driver, and HIP on Nvida GPUs and for HIP and HSA on AMD GPUs. ++ ++ * The OpenMP 5.1 dispatch construct has been implemented with ++ support for the adjust_args and append_args clauses to the declare ++ variant directive, including the following OpenMP 6.0 additions: ++ the interop clause to dispatch and the syntax extensions to ++ append_args are supported. ++ ++ * OpenMP 6.0: The get_device_from_uid and omp_get_uid_from_device ++ API routines have been added. ++ ++ ++COBOL ++ ++ * GCC now includes an ISO COBOL compiler, gcobol. It has been ++ tested on x86-64 and AArch64 targets. It is not expected to work ++ on 32-bit systems. Efforts are underway to adapt it to other ++ machine architectures that support native 128-bit computation. ++ ++ * gcobol passes much of the NIST CCVS/85 test suite (except for ++ parts that are now obsolete). It uses ISO/IEC 1989:2023 as a ++ reference specification. Some parts of that document, notably ++ object-orientation features, are yet to be implemented. Beyond ++ ISO, gcobol recognizes some syntax common on other compilers, with ++ special attention given to IBM. More information about GCC COBOL ++ can be found at the COBOLworx website. ++ ++ ++Ada ++ ++ * GNAT now allows the 'Round attribute also for ordinary fixed-point ++ types. ++ ++ * The new GNAT attribute 'Super can be applied to objects of tagged ++ types in order to obtain a view conversion to the most immediate ++ specific parent type. ++ ++ * Mutably tagged types with a defined size are now available through ++ the use of Size'Class. This allows defining a maximum size for the ++ tagged. Example: ++ ++ type Base is tagged null record with Size'Class => 16 * 8; ++ -- Size in bits (128 bits, or 16 bytes) ++ ++ type Derived_Type is new Base with record Data_Field : Integer; end record; ++ -- ERROR if Derived_Type exceeds 16 bytes ++ ++ * New Finalizable aspect. It is a GNAT language extension which ++ serves as a lightweight alternative to controlled types. ++ ++ type T is record ++ ... ++ end record with Finalizable => (Initialize => Initialize, ++ Adjust => Adjust, ++ Finalize => Finalize, ++ Relaxed_Finalization => True); ++ ++ procedure Adjust (Obj : in out T); ++ procedure Finalize (Obj : in out T); ++ procedure Initialize (Obj : in out T); ++ ++ * The aspect No_Raise has been added, it declares that a subprogram ++ cannot raise an exception. ++ ++ * The aspect External_Initialization has been added, it allows for ++ data to be initialized using an external file which is loaded ++ during compilation time. ++ ++ * The aspect Exit_Cases has been added to annotate functions and ++ procedures with side effects in SPARK (see SPARK reference manual) ++ . It can be used to partition the input state into a list of cases ++ and specify, for each case, how the subprogram is allowed to ++ terminate. ++ ++ * Language extensions are enabled through the use of pragma ++ Extensions_Allowed (On | Off | All_Extensions); which has had its ++ syntax changed. An argument of All_Extensions has the same effect ++ as On, except that some extra experimental extensions are enabled. ++ ++ * Several new compilation flags have been added, some examples ++ include -gnatis, -gnatw.n, -gnatw_l and -gnatw.v. The internal ++ debugging utilities for the compiler have also received a lot of ++ new options, please refer to debug.adb for more information. ++ ++ * The diagnostics code has seen a major refactor, it now supports ++ the sarif format -fdiagnostics-format=sarif-file among other ++ improvements. More changes are expected in following releases. ++ ++ * System.Image_A has now printing routines to output address ++ information in HEX. ++ ++ * Several program units have had contracts added to them and SPARK ++ analysis has been enabled. ++ ++ * Support for FreeBSD, Android and aarch64 targets has been improved. ++ ++ * Task priorities on MinGW have been reworked. ++ ++ * The documentation has been rearanged for clarity, mainly the ++ sections related to tasking and platform dependent information. ++ ++ * REMOVAL: Generic_Formal_Hash_Table has been removed, the SPARK ++ Library is recommended as a substitute. ++ ++ ++C family ++ ++ * A musttail statement attribute was added to enforce tail calls. ++ ++ * Extended inline assembler statements can now be used with some ++ limitations outside of functions as well. New constraints have ++ been added for defining symbols or using symbols inside of inline ++ assembler, and a new generic operand modifier has been added to ++ allow printing those regardless of PIC. For example: ++ ++ struct S { int a, b, c; }; ++ extern foo (void); ++ extern char var; ++ int var2; ++ asm (".text; %cc0: mov %cc2, %%r0; .previous;" ++ ".rodata: %cc1: .byte %3; .previous" : : ++ ":" (foo), /* Tell compiler asm defines foo function. */ ++ ":" (&var), /* Tell compiler asm defines var variable. */ ++ "-s" (var2), /* Tell compiler asm uses var2 variable. */ ++ /* "s" would work too but might not work with -fpic. */ ++ "i" (sizeof (struct S))); /* It is possible to pass constants to toplevel asm. */ ++ ++ * The "redzone" clobber is now allowed in inline assembler ++ statements to describe that the assembler can overwrite memory in ++ the stack red zone (e.g. on x86-64 or PowerPC). ++ ++ * The nonnull_if_nonzero function attribute has been added to ++ describe functions where some pointer parameter may be NULL ++ only if some other parameter is zero. ++ ++ * The -Wtrailing-whitespace= and -Wleading-whitespace= options have ++ been added to diagnose certain whitespace characters at the end of ++ source lines or whitespace characters at the start of source lines ++ violating certain indentation styles. ++ ++ * The -Wheader-guard warning has been added and enabled in -Wall to ++ warn about some inconsistencies in header file guarding macros. ++ ++ ++C ++ ++ * C23 by default: GCC 15 changes the default language version for C ++ compilation from -std=gnu17 to -std=gnu23. If your code relies on ++ older versions of the C standard, you will need to either add ++ -std= to your build flags, or port your code; see the porting ++ notes. ++ ++ * Some more C23 features have been implemented: ++ ++ * #embed preprocessing directive support. ++ * Support for unsequenced and reproducible attributes. ++ * __STDC_VERSION__ predefined macro value changed ++ for -std=c23 or -std=gnu23 to 202311L. ++ ++ * Some new features from the upcoming C2Y revision of the ISO C ++ standard are supported with -std=c2y and -std=gnu2y. Some of ++ these features are also supported as extensions when compiling for ++ older language versions. ++ ++ * Generic selection expression with a type operand. ++ * Support ++ and -- on complex values. ++ * Accessing byte arrays. ++ * alignof of an incomplete array type. ++ * Obsolete implicitly octal literals and add delimited escape ++ sequences (just partially implemented, support for new syntax ++ added but nothing deprecated yet). ++ * Named loops. ++ * More Modern Bit Utilities (addition of __builtin_stdc_rotate_left ++ and __builtin_stdc_rotate_right builtins for use in future C ++ library headers). ++ * Case range expressions. ++ * if declarations. ++ * Introduce complex literals. ++ * Abs Without Undefined Behavior (addition of builtins for use in ++ future C library headers). ++ * Allow zero length operations on null pointers (just the compiler ++ side, C library headers will need adjustments too if using ++ nonnull attribute). ++ ++ ++C++ ++ ++ * Several C++26 features have been implemented: ++ ++ * P2558R2, Add @, $, and ` to the basic character set (PR110343) ++ * P2552R3, On the ignorability of standard attributes (PR110345) ++ * P2662R3, Pack indexing (PR113798) ++ * P0609R3, Attributes for structured bindings (PR114456) ++ * P2573R2, = delete("reason"); (PR114458) ++ * P2893R3, Variadic friends (PR114459) ++ * P3034R1, Disallow module declarations to be macros (PR114461) ++ * P2747R2, constexpr placement new (PR115744) ++ * P0963R3, Structured binding declaration as a condition (PR115745) ++ * P3144R2, Deleting a pointer to an incomplete type should be ++ ill-formed (PR115747) ++ * P3176R0, Oxford variadic comma (PR117786) ++ * P2865R5, Removing deprecated array comparisons (PR117788) ++ * P1967R14, #embed (PR119065) ++ * P3247R2, Deprecating the notion of trivial types (PR117787) ++ ++ * Several C++23 features have been implemented: ++ ++ * P2615R1, Meaningful exports (PR107688) ++ * P2718R0, Wording for P2644R1 Fix for Range-based for Loop (PR107637) ++ ++ * Several C++ Defect Reports have been resolved, e.g.: ++ ++ * DR 36, using-declarations in multiple-declaration contexts ++ * DR 882, Defining main as deleted ++ * DR 1363, Triviality vs multiple default constructors ++ * DR 1496, Triviality with deleted and missing default constructors ++ * DR 2387, Linkage of const-qualified variable template ++ * DR 2521, User-defined literals and reserved identifiers ++ * DR 2627, Bit-fields and narrowing conversions ++ * DR 2819, Cast from null pointer value in a constant expression (C++26 only) ++ * DR 2867, Order of initialization for structured bindings ++ * DR 2918, Consideration of constraints for address of overloaded function ++ ++ * Inline assembler statements now support constexpr generated ++ strings, analoguous to static_assert. ++ ++ * Qualified name lookup failure into the current instantiation, e.g. ++ this->non_existent, is now proactively diagnosed when parsing a ++ template. ++ ++ * The -fassume-sane-operators-new-delete option has been added and ++ enabled by default. This option allows control over some ++ optimizations around calls to replaceable global operators new and ++ delete. If a program overrides those replaceable global operators ++ and the replaced definitions read or modify global state visible to ++ the rest of the program, programs might need to be compiled with ++ -fno-assume-sane-operators-new-delete. ++ ++ * The -Wself-move warning now warns even in a ++ member-initializer-list. ++ ++ * The support for Concepts TS was removed. -fconcepts-ts has no ++ effect anymore. ++ ++ * A new option -Wtemplate-body was added, which can be used to ++ disable diagnosing errors when parsing a template. ++ ++ * C++ Modules have been greatly improved. ++ ++ * C++11 attributes are now supported even in C++98. ++ ++ ++ * New flag_enum attribute to indicate that the enumerators are used ++ in bitwise operations; this suppresses a -Wswitch warning. ++ ++ * The -Wdangling-reference warning has been improved: for example, ++ it doesn't warn for empty classes anymore. ++ ++ * The front end's handling of explicitly-defaulted functions has ++ been corrected to properly handle [dcl.fct.def.default]. The new ++ -Wdefaulted-function-deleted warning warns when an explicitly ++ defaulted function is deleted. ++ ++ * The implementation of DR 2789 was refined. ++ ++ * Compilation time speed ups, e.g. by improving hashing of template ++ specializations. ++ ++ * Support for __builtin_operator_new and __builtin_operator_delete ++ was added. See the manual for more info. ++ ++ * More prvalues are evaluated at compile time (git). ++ ++ * Various diagnostic improvements. ++ ++ ++Runtime Library (libstdc++) ++ ++ * Debug assertions are now enabled by default for unoptimized ++ builds. Use -D_GLIBCXX_NO_ASSERTIONS to override this. ++ ++ * Improved experimental support for C++26, including: ++ * views::concat. ++ * Member visit. ++ * Type-checking std::format args. ++ ++ * Improved experimental support for C++23, including: ++ * std and std.compat modules (also supported for C++20). ++ * std::flat_map and std::flat_set. ++ * Clarify handling of encodings in localized formatting of chrono types. ++ ++ ++D ++ ++ * Support for the D programming language has been updated to version ++ 2.111.0 of the language and run-time library. Full changelog for ++ this release and previous releases can be found on the dlang.org ++ website. ++ ++ * On supported targets, the version GNU_CET is now predefined when ++ the option -fcf-protection is used. The protection level is also ++ set in the traits key __traits(getTargetInfo, "CET"). ++ ++ * A new option -finclude-imports was added, which tells the compiler ++ to include imported modules in the compilation, as if they were ++ given on the command-line. ++ ++ ++Fortran ++ ++ * Fortran 2018 and 2023 locality specifiers to do concurrent are ++ now supported. ++ ++ * Experimental support for unsigned modular integers, enabled by ++ -funsigned; see gfortran documentation for details. This follows ++ (J3/24-116). With this option in force, the selected_logical_kind ++ intrinsic function and, in the ISO_FORTRAN_ENV module, the named ++ constants logical{8,16,32,64} and real16 were added. The ++ ISO_C_BINDING module has been extended accordingly. ++ ++ * Missing commas separating descriptors in input/output format ++ strings are no longer permitted by default and are rejected at ++ run-time unless -std=legacy is used when compiling the main ++ program unit. See Fortran 2023 constraint C1302. ++ ++ * The Fortran module *.mod format generated by GCC 15 is ++ incompatible with the module format generated by GCC 8 - 14, but ++ GCC 15 can for compatibility still read GCC 8 - 14 created module ++ files. ++ ++ * Coarray support has been reworked to allow access to components in ++ derived types that have not been compiled with coarray support ++ enabled; especially, when the derived type is in a binary only ++ module. This has changed the ABI and may lead to link-time errors ++ with object files generated with a previous GCC version and to be ++ linked to the current caf_single library. If this library is to ++ be used, then it is recommended to recompile all artifacts. The ++ OpenCoarrays library is not affected, because it provides ++ backwards compatibility with the older ABI. ++ ++ * The -Wexternal-interface-mismatch option has been added. This ++ checks for mismatches between the argument lists in dummy external ++ arguments, and is implied by -Wall and -fc-prototypes-external ++ options. ++ ++ * The -fc-prototypes now also generates prototypes for interoperable ++ procedures with assumed shape and assumed rank arguments that ++ require the header file . ++ ++ ++Modula-2 ++ ++ * The keyword FORWARD has been implemented in the compiler and is ++ available by default in all dialects. ++ ++ * The SYSTEM module now exports the datatype COFF_T mapping onto the ++ POSIX off_t type. The size of this datatype can be controlled by ++ the new option -fm2-file-offset-bits=. ++ ++ * Access to the GCC builtins clz, clzll, ctz and ctzll are now ++ available from the module Builtins. ++ ++ ++New Targets and Target Specific Improvements ++ ++ ++AArch64 ++ ++ * Support has been added for the AArch64 MinGW target ++ (aarch64-w64-mingw32). At present, this target supports C and C++ ++ for base Armv8-A, but with some caveats: ++ ++ * Although most variadic functions work, the implementation of ++ them is not yet complete. ++ * C++ exception handling is not yet implemented. ++ ++ Further work is planned for GCC 16. ++ ++ * As noted above, support for ILP32 (-mabi=ilp32) has been ++ deprecated and will be removed in a future release. aarch64*-elf ++ targets no longer build the ILP32 multilibs. ++ ++ * The following architecture level is now supported by -march and ++ related source-level constructs (GCC identifiers in parentheses): ++ ++ * Armv9.5-A (arm9.5-a) ++ ++ * The following CPUs are now supported by -mcpu, -mtune, and related ++ source-level constructs (GCC identifiers in parentheses): ++ ++ * Apple A12 (apple-a12) ++ * Apple M1 (apple-m1) ++ * Apple M2 (apple-m2) ++ * Apple M3 (apple-m3) ++ * Arm Cortex-A520AE (cortex-a520ae) ++ * Arm Cortex-A720AE (cortex-a720ae) ++ * Arm Cortex-A725 (cortex-a725) ++ * Arm Cortex-R82AE (cortex-r82ae) ++ * Arm Cortex-X925 (cortex-x925) ++ * Arm Neoverse N3 (neoverse-n3) ++ * Arm Neoverse V3 (neoverse-v3) ++ * Arm Neoverse V3AE (neoverse-v3ae) ++ * FUJITSU-MONAKA (fujitsu-monaka) ++ * NVIDIA Grace (grace) ++ * NVIDIA Olympus (olympus) ++ * Qualcomm Oryon-1 (oryon-1) ++ ++ * The following features are now supported by -march, -mcpu, and ++ related source-level constructs (GCC modifiers in parentheses): ++ ++ * FEAT_CPA (+cpa), enabled by default for Arm9.5-A and above ++ * FEAT_FAMINMAX (+faminmax), enabled by default for Arm9.5-A and above ++ * FEAT_FCMA (+fcma), enabled by default for Armv8.3-A and above ++ * FEAT_FLAGM2 (+flagm2), enabled by default for Armv8.5-A and above ++ * FEAT_FP8 (+fp8) ++ * FEAT_FP8DOT2 (+fp8dot2) ++ * FEAT_FP8DOT4 (+fp8dot4) ++ * FEAT_FP8FMA (+fp8fma) ++ * FEAT_FRINTTS (+frintts), enabled by default for Armv8.5-A and above ++ * FEAT_JSCVT (+jscvt), enabled by default for Armv8.3-A and above ++ * FEAT_LUT (+lut), enabled by default for Arm9.5-A and above ++ * FEAT_LRCPC2 (+rcpc2), enabled by default for Armv8.4-A and above ++ * FEAT_SME_B16B16 (+sme-b16b16) ++ * FEAT_SME_F16F16 (+sme-f16f16) ++ * FEAT_SME2p1 (+sme2p1) ++ * FEAT_SSVE_FP8DOT2 (+ssve-fp8dot2) ++ * FEAT_SSVE_FP8DOT4 (+ssve-fp8dot4) ++ * FEAT_SSVE_FP8FMA (+ssve-fp8fma) ++ * FEAT_SVE_B16B16 (+sve-b16b16) ++ * FEAT_SVE2p1 (+sve2p1), enabled by default for Armv9.4-A and above ++ * FEAT_WFXT (+wfxt), enabled by default for Armv8.7-A and above ++ * FEAT_XS (+xs), enabled by default for Armv8.7-A and above ++ ++ The features listed as being enabled by default for Armv8.7-A or ++ earlier were previously only selectable using the associated ++ architecture level. For example, FEAT_FCMA was previously ++ selected by -march=armv8.3-a and above (as it still is), but it ++ wasn't previously selectable independently. ++ ++ * -mbranch-protection has been extended to support the Guarded ++ Control Stack (GCS) extension. This support is included in ++ -mbranch-protection=standard and can be enabled individually using ++ -mbranch-protection=gcs. ++ ++ * The following additional changes have been made to the ++ command-line options: ++ ++ * In order to align with other tools, the SME feature modifier ++ +sme no longer enables SVE. However, GCC does not yet support ++ using SME without SVE and instead rejects such combinations with ++ a "not implemented" error. ++ ++ * The options -mfix-cortex-a53-835769 and -mfix-cortex-a53-843419 ++ are now silently ignored if the selected architecture is ++ incompatible with Cortex-A53. This is particularly useful for ++ toolchains that are configured to apply the Cortex-A53 workarounds ++ by default. For example, all other things being equal, a ++ toolchain configured with --enable-fix-cortex-a53-835769 now ++ produces the same code for -mcpu=neoverse-n2 as a toolchain ++ configured without --enable-fix-cortex-a53-835769. ++ ++ * -mcpu=native now handles unrecognized heterogeneous systems by ++ detecting which individual architecture features are supported ++ by the CPUs. This matches the preexisting behavior for unknown ++ homogeneous systems. ++ ++ * The first scheduling pass (-fschedule-insns) is no longer ++ enabled by default at -O2 for AArch64 targets. The pass is ++ still enabled by default at -O3 and -Ofast. ++ ++ * Support has been added for the following features of the Arm C ++ Language Extensions (ACLE): ++ ++ * guarded control stacks ++ * lookup table instructions with 2-bit and 4-bit indices ++ (predefined macro __ARM_FEATURE_LUT, enabled by +lut) ++ * floating-point absolute minimum and maximum instructions ++ (predefined macro __ARM_FEATURE_FAMINMAX, enabled by +faminmax) ++ ++ * FP8 conversions (predefined macro __ARM_FEATURE_FP8, enabled by +fp8) ++ ++ * FP8 2-way dot product to half precision instructions (predefined ++ macro __ARM_FEATURE_FP8DOT2, enabled by +fp8dot2) ++ ++ * FP8 4-way dot product to single precision instructions ++ (predefined macro __ARM_FEATURE_FP8DOT4, enabled by +fp8dot4) ++ ++ * FP8 multiply-accumulate to half precision and single precision ++ instructions (predefined macro __ARM_FEATURE_FP8FMA, enabled by ++ +fp8fma) ++ ++ * SVE FP8 2-way dot product to half precision instructions ++ (predefined macro __ARM_FEATURE_SSVE_FP8DOT2, enabled by ++ +ssve-fp8dot2) ++ ++ * SVE FP8 4-way dot product to single precision instructions ++ (predefined macro __ARM_FEATURE_SSVE_FP8DOT4, enabled by ++ +ssve-fp8dot4) ++ ++ * SVE FP8 multiply-accumulate to half precision and single ++ precision instructions (predefined macro ++ __ARM_FEATURE_SSVE_FP8FMA, enabled by +ssve-fp8fma) ++ ++ * SVE2.1 instructions (predefined macro __ARM_FEATURE_SVE2p1, ++ enabled by +sve2p1) ++ ++ * SVE non-widening bfloat16 instructions (predefined macro ++ __ARM_FEATURE_SVE_B16B16, enabled by +sve-b16b16) ++ ++ * SME2.1 instructions (predefined macro __ARM_FEATURE_SME2p1, ++ enabled by +sme2p1) ++ ++ * SME non-widening bfloat16 instructions (predefined macro ++ __ARM_FEATURE_SME_B16B16, enabled by +sme-b16b16) ++ ++ * SME half-precision instructions (predefined macro ++ __ARM_FEATURE_SME_F16F16, enabled by +sme-f16f16) ++ ++ * using C and C++ prefix operators, infix operators, and postfix ++ operators with scalable SVE ACLE types (predefined macro ++ __ARM_FEATURE_SVE_VECTOR_OPERATORS==2, enabled by +sve) ++ ++ * __fma (in arm_acle.h) ++ * __fmaf (in arm_acle.h) ++ * __chkfeat (in arm_acle.h) ++ ++ * In addition, the following changes have been made to preexisting ++ ACLE features: ++ ++ * The macros __ARM_FEATURE_BF16 and __ARM_FEATURE_SVE_BF16 are now ++ predefined when the associated support is available. Previous ++ versions of GCC provided the associated intrinsics but did not ++ predefine the macros. ++ ++ * OpenMP tasks can now share scalable SVE vectors and predicates. ++ However, offloading of scalable vectors and predicates is not ++ supported. ++ ++ * ACLE system register functions (such as __arm_rsr and __arm_wsr) ++ no longer try to enforce the minimum architectural requirement. ++ ++ * A warning is reported if code attempts to use the Function ++ Multi-Versioning feature. GCC's current implementation of this ++ feature is still experimental and it does not conform to the ++ ACLE specification. ++ ++ * Support has been added for the indirect_return function-type ++ attribute, which indicates that a function might return via an ++ indirect branch instead of via a normal return instruction. ++ ++ * 128-bit atomic operations have been extended to make use of ++ FEAT_LRCPC3 instructions, when support for the instructions is ++ detected at runtime. ++ ++ * There have been many code-generation improvements to the AArch64 port. ++ Some examples are: ++ ++ * automatic use of AArch64 CRC instructions ++ * automatic use of AArch64 saturating vector arithmetic instructions ++ * better code generation of population counts ++ * improved handling of floating-point and vector immediates ++ * improved handling of vector permutations ++ * more use of SVE instructions to optimize Advanced SIMD code ++ * more folding and simplification of SVE ACLE intrinsics ++ * improved CPU-specific tuning ++ * improved register allocation, such as eliminating some vector moves ++ ++ ++AMD GPU (GCN) ++ ++ * The standard C++ library (libstdc++) is now supported and enabled. ++ ++ * Experimental support for supporting generic devices has been ++ added; specifying gfx9-generic, gfx10-3-generic, or gfx11-generic ++ to -march= will generate code that can run on all devices of a ++ series. Additionally, the following specific devices are now have ++ experimental support, all of which are compatible with a listed ++ generic: gfx902, gfx904, gfx909, gfx1031, gfx1032, gfx1033, ++ gfx1034, gfx1035, gfx1101, gfx1102, gfx1150, and gfx1151. To use ++ any of the listed new devices including the generic ones, GCC has ++ to be configured to build the runtime library for the device. Note ++ that generic support requires ROCm 6.4.0 (or newer). For details, ++ consult GCC's installation notes. ++ ++ * Support for Fiji (gfx803) devices has been removed (this was ++ already deprecated in GCC 14). ++ ++ ++AVR ++ ++ * Support has been added for the signal(num) and interrupt(num) ++ function attributes that allow to specify the interrupt vector ++ number num as an argument. It allows to use static functions as ++ interrupt handlers, and also functions defined in a C++ namespace. ++ ++ * Support has been added for the noblock function attribute. It can ++ be specified together with the signal attribute to indicate that ++ the interrupt service routine should start with a SEI instruction ++ to globally re-enable interrupts. The difference to the interrupt ++ attribute is that the noblock attribute just acts like a flag and ++ does not impose a specific function name. ++ ++ * Support has been added for the __builtin_avr_mask1 built-in ++ function. It can be used to compute some bit masks when code like ++ 1 << offset is not fast enough. ++ ++ * Support has been added for a new 24-bit named address space ++ __flashx. It is similar to the __memx address space introduced in ++ v4.7, but reading is a bit more efficient since it only supports ++ reading from program memory. Objects in the __flashx address space ++ are located in the .progmemx.data section. ++ ++ * Apart from the built-in types __int24 and __uint24 supported since ++ v4.7, support has been added for the signed __int24 and unsigned ++ __int24 types. ++ ++ * Code generation for the 32-bit integer shifts with constant offset ++ has been improved. The code size may slightly increase even when ++ optimizing for code size with -Os. ++ ++ * Support has been added for a compact vector table as supported by ++ some AVR devices. It can be activated by the new command-line ++ option -mcvt. It links crtmcu-cvt.o as startup code which is ++ supported since AVR-LibC v2.3. ++ ++ * Support has been added for the new option -mno-call-main. Instead ++ of calling main, it will be located in section .init9. ++ ++ * New AVR specific optimizations have been added. They can be ++ controlled by the new command-line options -mfuse-move, ++ -msplit-ldst, -msplit-bit-shift and -muse-nonzero-bits. ++ ++ ++IA-32/x86-64 ++ ++ * New ISA extension support for Intel AMX-AVX512 was added. ++ AMX-AVX512 intrinsics are available via the -mamx-avx512 compiler ++ switch. ++ ++ * New ISA extension support for Intel AMX-FP8 was added. AMX-FP8 ++ intrinsics are available via the -mamx-fp8 compiler switch. ++ ++ * New ISA extension support for Intel AMX-MOVRS was added. ++ AMX-MOVRS intrinsics are available via the -mamx-movrs compiler ++ switch. ++ ++ * New ISA extension support for Intel AMX-TF32 was added. ++ AMX-TF32 intrinsics are available via the -mamx-tf32 ++ compiler switch. ++ ++ * New ISA extension support for Intel AMX-TRANSPOSE was added. ++ AMX-TRANSPOSE intrinsics are available via the -mamx-transpose ++ compiler switch. ++ ++ * All of new feature support for Intel APX expect for CFCMOV was ++ added, including CCMP/CTEST, NF and ZU. APX support is available ++ via the -mapxf compiler switch. ++ ++ * New ISA extension support for Intel AVX10.2 was added. AVX10.2 ++ intrinsics are available via the -mavx10.2 compiler switch. ++ ++ * New ISA extension support for Intel MOVRS was added. MOVRS ++ intrinsics are available via the -mmovrs compiler switch. MOVRS ++ vector intrinsics are available via the -mmovrs -mavx10.2 compiler ++ switches. ++ ++ * EVEX version support for Intel SM4 was added. New 512-bit SM4 ++ intrinsics are available via the -msm4 -mavx10.2 compiler ++ switches. ++ ++ * GCC now supports the Intel CPU named Diamond Rapids through ++ -march=diamondrapids. Based on Granite Rapids, the switch further ++ enables the AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, ++ APX_F, AVX10.2, AVX-IFMA, AVX-NE-CONVERT, AVX-VNNI-INT16, ++ AVX-VNNI-INT8, CMPccXADD, MOVRS, SHA512, SM3, SM4, and USER_MSR ISA ++ extensions. ++ ++ * Support for Xeon Phi CPUs (a.k.a. Knight Landing and Knight Mill) ++ were removed in GCC 15. GCC will no longer accept -march=knl, ++ -march=knm, -mavx5124fmaps, -mavx5124vnniw, -mavx512er, ++ -mavx512pf, -mprefetchwt1, -mtune=knl, and -mtune=knm compiler ++ switches. ++ ++ * -mavx10.1-256, -mavx10.1-512, and mevex512 are ++ -deprecated. Meanwhile, -mavx10.1 enables AVX10.1 intrinsics with ++ -512-bit vector support, while in GCC 14.1 and GCC 14.2, it only ++ -enables 256-bit vector support. GCC will emit a warning when ++ -using these compiler switches. -mavx10.1-256, mavx10.1-512, and ++ --mevex512 will be removed in GCC 16 together with the warning for ++ -the behavior change on mavx10.1. ++ ++ * With the -mveclibabi compiler switch GCC is able to generate ++ vectorized calls to external libraries. GCC 15 newly supports ++ generating vectorized math calls to the math library from AMD ++ Optimizing CPU Libraries (AOCL LibM). This option is available ++ through -mveclibabi=aocl. GCC still supports generating calls to ++ AMD Core Math Library (ACML). However, that library is end-of-life ++ and AOCL offers many more vectorized functions. ++ ++ ++LoongArch ++ ++ * Support has been added for target attributes and pragmas. For more ++ details on available attributes and pragmas, including their ++ proper usage, please refer to the provided documentation. ++ ++ * Support has been added for the new option ++ -mannotate-tablejump. Which can create an annotation section ++ .discard.tablejump_annotate to correlate the jirl instruction and ++ the jump table. ++ ++ * Add CRC expander to generate faster CRC. ++ ++ * Add ABI names for FPR. ++ ++ ++NVPTX ++ ++ * The standard C++ library (libstdc++) is now supported and enabled. ++ ++ * GCC's nvptx target now supports constructors and destructors. For ++ this, a recent version of nvptx-tools is required. ++ ++ ++SH ++ ++ * Bare metal sh-elf targets are now using the newer soft-fp library ++ for improved performance of floating-point emulation on CPUs ++ without hardware floating-point support. ++ ++ ++Operating Systems ++ ++PowerPC Darwin ++ ++ * Fortran's IEEE modules are now supported on Darwin PowerPC. ++ ++ ++Other significant improvements ++ ++ ++GCC 15.1 ++ ++This is the list of problem reports (PRs) from GCC's bug tracking ++system that are known to be fixed in the 15.1 release. This list might ++not be complete (that is, it is possible that some PRs that have been ++fixed are not listed here). ++ ++For questions related to the use of GCC, please consult these web ++pages and the GCC manuals. If that fails, the gcc-help@gcc.gnu.org ++mailing list might help. Comments on these web pages and the ++development of GCC are welcome on our developer list at ++gcc@gcc.gnu.org. All of our lists have public archives. ++ ++ ++Copyright (C) Free Software Foundation, Inc. Verbatim copying and ++distribution of this entire article is permitted in any medium, ++provided this notice is preserved. ++ ++These pages are maintained by the GCC team. Last modified 2025-04-25. diff --cc debian/NEWS.html index 0000000,0000000..adbfc7d new file mode 100644 --- /dev/null +++ b/debian/NEWS.html @@@ -1,0 -1,0 +1,1251 @@@ ++ ++ ++ ++ ++ ++ ++ ++ ++GCC 15 Release Series — Changes, New Features, and Fixes ++- GNU Project ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++

GCC 15 Release Series
Changes, New Features, and Fixes

++ ++

++This page is a "brief" summary of some of the huge number of improvements ++in GCC 15. ++You may also want to check out our ++Porting to GCC 15 page and the ++full GCC documentation. ++

++ ++ ++

Caveats

++
    ++
  • Support for Nios II targets, which was marked obsolete in GCC 14, ++ has now been removed entirely. ++
  • ++
  • In the AArch64 port, support for ILP32 (-mabi=ilp32) has ++ been deprecated and will be removed in a future release. ++
  • ++
  • {0} initializer in C or C++ for unions no longer ++ guarantees clearing of the whole union (except for static storage ++ duration initialization), it just initializes the first ++ union member to zero. If initialization of the whole union including ++ padding bits is desirable, use {} (valid in C23 or C++) ++ or use -fzero-init-padding-bits=unions option to restore ++ old GCC behavior.
  • ++
++ ++ ++ ++

General Improvements

++ ++
    ++
  • The default vectorizer cost model at -O2 has been enhanced ++ to handle unknown tripcount. But it still disables vectorization of loops ++ when any runtime check for data dependence or alignment is required, ++ it also disables vectorization of epilogue loops but otherwise is equal ++ to the cheap cost model. ++
  • ++
  • The vectorizer now supports vectorizing loops with early exits where ++ the number of elements for the input pointers are unknown through peeling ++ for alignment. This is supported for only for loops with fixed vector ++ lengths. ++
  • ++
  • -ftime-report now only reports monotonic run time instead of ++ system and user time. This reduces the overhead of the option significantly, ++ making it possible to use in standard build systems. ++
  • ++
  • Incremental Link-Time Optimizations significantly reduce average ++ recompilation time of LTO when doing small code edits ++ (e.g. editing a single function). ++ Enable with -flto-incremental=. ++
  • ++
  • ++ For offloading using OpenMP and OpenACC, issues preventing some ++ host–device architecture combinations have been resolved. In particular, ++ offloading from aarch64 hosts to nvptx devices is now supported. Additionally, ++ the support for using C++ in offload regions has been extended. ++
  • ++
  • ++ Improvements for compiling very large input files. The compile time for ++ large input files with -Wmisleading-indentation has been ++ significantly improved. The compiler can now track columnn numbers larger ++ than 4096. Very large source files have more accurate location reporting. ++
  • ++
++ ++ ++ ++

New Languages and Language specific improvements

++ ++

OpenMP

++ ++

++ See the ++ GNU Offloading and Multi-Processing Project (GOMP) ++ page for general information. ++

++ ++
    ++
  • ++ Support for unified-shared memory has been added for some AMD and Nvidia ++ GPU devices, enabled when using the unified_shared_memory ++ clause to the requires directive. ++ The OpenMP 6.0 self_maps clause is also now supported. ++ For details, ++ see the offload-target specifics section in the ++ GNU Offloading and Multi Processing Runtime Library Manual. ++
  • ++
  • ++ GCC added ompx_gnu_pinned_mem_alloc as a predefined ++ allocator and, for C++, allocator class templates in the ++ omp::allocator namespace for the predefined allocators as ++ specified in the OpenMP specification 5.0, including ++ omp::allocator::null_allocator of OpenMP 6.0 and ++ ompx::allocator::gnu_pinned_mem; the allocator templates ++ can be used with C++ containers such as std::vector. ++
  • ++
  • ++ In C and Fortran, the allocate directive now supports ++ static variables; stack variables were previously supported in ++ those languages. C++ support is not available yet. ++
  • ++
  • ++ Offloading improvements: ++ On Nvidia ++ GPUs, writing to the terminal from OpenMP target regions (but not from ++ OpenACC compute regions) is now also supported in Fortran; in C/C++ and ++ on AMD GPUs this was already supported before with both OpenMP and OpenACC. ++ Constructors and destructors on the device side for ++ declare target static aggregates are now handled. ++
  • ++
  • For Fortran, mapping derived-type variables with allocatable components ++ is now supported.
  • ++
  • ++ The OpenMP 5.1 unroll and tile ++ loop-transforming constructs are now supported. ++
  • ++
  • OpenMP 5.0 metadirectives are now supported, as are OpenMP 5.1 dynamic ++ selectors in both metadirective and ++ declare variant (the latter with some restrictions). ++
  • ++
  • ++ The interop construct and the OpenMP interoperability API ++ routines for C, C++ and Fortran are now implemented, including the ++ OpenMP 6.0 additions. This includes foreign-runtime support for Cuda, Cuda Driver, and HIP on Nvida GPUs and for HIP and HSA on AMD GPUs. ++
  • ++
  • ++ The OpenMP 5.1 dispatch construct has been implemented ++ with support for the adjust_args and append_args ++ clauses to the declare variant directive, including the ++ following OpenMP 6.0 additions: the interop clause to ++ dispatch and the syntax extensions to append_args ++ are supported. ++
  • ++
  • ++ OpenMP 6.0: The get_device_from_uid and ++ omp_get_uid_from_device API routines have been added. ++
  • ++
++ ++

COBOL

++
    ++
  • GCC now includes an ISO COBOL compiler, gcobol. It has been ++ tested on x86-64 and AArch64 targets. It is not expected to work ++ on 32-bit systems. Efforts are underway to adapt it to other machine ++ architectures that support native 128-bit computation.
  • ++
  • gcobol passes much of the NIST CCVS/85 test suite (except for parts ++ that are now obsolete). It uses ISO/IEC 1989:2023 as a ++ reference specification. Some parts of that document, notably ++ object-orientation features, are yet to be implemented. Beyond ++ ISO, gcobol recognizes some syntax common on other compilers, ++ with special attention given to IBM. ++

    More information about GCC COBOL can be found at ++ the COBOLworx website.

  • ++
++ ++

Ada

++
    ++
  • ++ GNAT now allows ++ the 'Round ++ attribute also for ordinary fixed-point types. ++
  • ++
  • ++ The new GNAT ++ attribute 'Super ++ can be applied to objects of tagged types in order to obtain a view ++ conversion to the most immediate specific parent type. ++
  • ++
  • ++ Mutably tagged types with a defined size are now available ++ through the use of Size'Class. This allows defining a maximum ++ size for the tagged. Example: ++
    ++type Base is tagged null record with Size'Class => 16 * 8;
    ++     -- Size in bits (128 bits, or 16 bytes)
    ++
    ++type Derived_Type is new Base with record Data_Field : Integer; end record;
    ++     -- ERROR if Derived_Type exceeds 16 bytes
    ++
    ++
  • ++
  • ++ New Finalizable ++ aspect. It is a GNAT language extension which serves as a lightweight ++ alternative to controlled types. ++
    ++type T is record
    ++     ...
    ++end record with Finalizable => (Initialize           => Initialize,
    ++                                Adjust               => Adjust,
    ++                                Finalize             => Finalize,
    ++                                Relaxed_Finalization => True);
    ++
    ++procedure Adjust     (Obj : in out T);
    ++procedure Finalize   (Obj : in out T);
    ++procedure Initialize (Obj : in out T);
    ++
    ++
  • ++
  • ++ The ++ aspect No_Raise ++ has been added, it declares that a subprogram cannot raise an exception. ++
  • ++
  • ++ The ++ aspect External_Initialization ++ has been added, it allows for data to be initialized using an external file ++ which is loaded during compilation time. ++
  • ++
  • ++ The ++ aspect Exit_Cases ++ has been added to annotate functions and procedures with side effects in ++ SPARK ++ (see SPARK ++ reference manual) . It can be used to partition the input state into a ++ list of cases and specify, for each case, how the subprogram is allowed to ++ terminate. ++
  • ++
  • ++ Language extensions are enabled through the use of pragma ++ Extensions_Allowed (On | Off | All_Extensions); which has had its ++ syntax changed. An argument of All_Extensions has the same ++ effect as On, except ++ that some ++ extra experimental extensions are enabled. ++
  • ++
  • ++ Several new compilation flags have been added, some examples ++ include -gnatis, -gnatw.n, -gnatw_l ++ and -gnatw.v. ++ The internal debugging utilities for the compiler have also received a lot ++ of new options, please refer ++ to debug.adb ++ for more information. ++
  • ++
  • ++ The diagnostics code has seen a major refactor, it now supports the sarif ++ format -fdiagnostics-format=sarif-file among other ++ improvements. More changes are expected in following releases. ++
  • ++
  • ++ System.Image_A has now printing routines to output address ++ information in HEX. ++
  • ++
  • ++ Several program units have had contracts added to them and SPARK analysis ++ has been enabled. ++
  • ++
  • ++ Support for FreeBSD, Android and aarch64 targets has been improved. ++
  • ++
  • ++ Task priorities on MinGW have been reworked. ++
  • ++
  • ++ The documentation has been rearanged for clarity, mainly the sections ++ related to tasking and platform dependent information. ++
  • ++
  • ++ REMOVAL: Generic_Formal_Hash_Table has been removed, ++ the SPARK ++ Library is recommended as a substitute. ++
  • ++
++ ++ ++

C family

++
    ++
  • A ++ musttail statement attribute was added to enforce tail calls.
  • ++
  • Extended inline assembler statements ++ can now be used with some limitations outside of functions as well. ++ New constraints have been added for defining symbols or using symbols ++ inside of inline assembler, and a new generic operand modifier has ++ been added to allow printing those regardless of PIC. For example: ++
    ++struct S { int a, b, c; };
    ++extern foo (void);
    ++extern char var;
    ++int var2;
    ++asm (".text; %cc0: mov %cc2, %%r0; .previous;"
    ++     ".rodata: %cc1: .byte %3; .previous" : :
    ++     ":" (foo), /* Tell compiler asm defines foo function. */
    ++     ":" (&var), /* Tell compiler asm defines var variable.  */
    ++     "-s" (var2), /* Tell compiler asm uses var2 variable.  */
    ++                  /* "s" would work too but might not work with -fpic.  */
    ++     "i" (sizeof (struct S))); /* It is possible to pass constants to toplevel asm.  */
    ++
    ++
  • ++
  • The "redzone" clobber is now allowed in inline ++ assembler statements to describe that the assembler can overwrite ++ memory in the stack red zone (e.g. on x86-64 or PowerPC).
  • ++
  • The ++ nonnull_if_nonzero function attribute has been added to describe ++ functions where some pointer parameter may be NULL only ++ if some other parameter is zero.
  • ++
  • The ++ -Wtrailing-whitespace= and ++ ++ -Wleading-whitespace= options have been added to ++ diagnose certain whitespace characters at the end of source lines or ++ whitespace characters at the start of source lines violating certain ++ indentation styles.
  • ++
  • The ++ -Wheader-guard warning has been added and enabled ++ in -Wall to warn about some inconsistencies in header ++ file guarding macros.
  • ++
++ ++

C

++
    ++
  • C23 by default: GCC 15 changes the default language version ++ for C compilation from ++ -std=gnu17 ++ to ++ -std=gnu23. ++ If your code relies on older versions of the C standard, you will need to ++ either add ++ -std= ++ to your build flags, or port your code; see the porting notes. ++
  • ++
  • Some more C23 features have been implemented: ++
      ++
    • #embed preprocessing directive support.
    • ++
    • Support for unsequenced and reproducible ++ attributes.
    • ++
    • __STDC_VERSION__ predefined macro value changed ++ for -std=c23 or -std=gnu23 to ++ 202311L.
    • ++
    ++
  • ++
  • Some new features from the upcoming C2Y revision of the ISO C ++ standard are supported with -std=c2y ++ and -std=gnu2y. Some of these features are also ++ supported as extensions when compiling for older language versions. ++
      ++
    • Generic selection expression with a type operand.
    • ++
    • Support ++ and -- on complex values.
    • ++
    • Accessing byte arrays.
    • ++
    • alignof of an incomplete array type.
    • ++
    • Obsolete implicitly octal literals and add delimited escape ++ sequences (just partially implemented, support for new syntax added ++ but nothing deprecated yet).
    • ++
    • Named loops.
    • ++
    • More Modern Bit Utilities (addition of ++ __builtin_stdc_rotate_left and ++ __builtin_stdc_rotate_right builtins for use in future ++ C library <stdbit.h> headers).
    • ++
    • Case range expressions.
    • ++
    • if declarations.
    • ++
    • Introduce complex literals.
    • ++
    • Abs Without Undefined Behavior (addition of builtins for ++ use in future C library <stdlib.h> headers).
    • ++
    • Allow zero length operations on null pointers (just the compiler ++ side, C library headers will need adjustments too if using ++ nonnull attribute).
    • ++
    ++
  • ++
++ ++

C++

++ ++
    ++
  • Several C++26 features have been implemented: ++ ++
  • ++
  • Several C++23 features have been implemented: ++ ++
  • ++
  • Several C++ Defect Reports have been resolved, e.g.: ++
      ++
    • DR 36, ++ using-declarations in multiple-declaration contexts
    • ++
    • DR 882, ++ Defining main as deleted
    • ++
    • DR 1363, ++ Triviality vs multiple default constructors
    • ++
    • DR 1496, ++ Triviality with deleted and missing default constructors
    • ++
    • DR 2387, ++ Linkage of const-qualified variable template
    • ++
    • DR 2521, ++ User-defined literals and reserved identifiers
    • ++
    • DR 2627, ++ Bit-fields and narrowing conversions
    • ++
    • DR 2819, ++ Cast from null pointer value in a constant expression (C++26 only)
    • ++
    • DR 2867, ++ Order of initialization for structured bindings
    • ++
    • DR 2918, ++ Consideration of constraints for address of overloaded function
    • ++
    ++
  • ++
  • Inline assembler statements now support ++ constexpr generated strings, ++ analoguous to static_assert.
  • ++
  • ++ ++ Qualified name lookup failure into the current instantiation, e.g. ++ this->non_existent, is now proactively diagnosed ++ when parsing a template. ++
  • ++
  • The ++ -fassume-sane-operators-new-delete option has been ++ added and enabled by default. This option allows control over some ++ optimizations around calls to replaceable global operators new and ++ delete. If a program overrides those replaceable global operators and ++ the replaced definitions read or modify global state visible to the ++ rest of the program, programs might need to be compiled with ++ -fno-assume-sane-operators-new-delete.
  • ++
  • ++ ++ The ++ -Wself-move warning now warns even in a ++ member-initializer-list. ++
  • ++
  • ++ ++ The support for Concepts TS was removed. -fconcepts-ts has no ++ effect anymore. ++
  • ++
  • ++ ++ A new option ++ ++ -Wtemplate-body was added, which can be used to disable ++ diagnosing errors when parsing a template. ++
  • ++
  • ++ C++ Modules have been greatly improved. ++
  • ++
  • ++ ++ C++11 attributes are now supported even in C++98. ++
  • ++
  • ++ New ++ ++ flag_enum attribute to indicate that the enumerators ++ are used in bitwise operations; this suppresses a -Wswitch ++ warning. ++
  • ++
  • ++ The ++ -Wdangling-reference warning has been improved: for ++ example, it doesn't warn for empty classes anymore. ++
  • ++
  • ++ The front end's handling of explicitly-defaulted functions has been ++ corrected to properly handle [dcl.fct.def.default]. The ++ new ++ ++ -Wdefaulted-function-deleted warning warns when an ++ explicitly defaulted function is deleted. ++
  • ++
  • ++ The implementation of DR 2789 ++ was refined. ++
  • ++
  • ++ ++ Compilation time speed ups, e.g. by improving hashing of template ++ specializations. ++
  • ++
  • ++ ++ Support for __builtin_operator_new and ++ __builtin_operator_delete was added. See ++ ++ the manual for more info. ++
  • ++
  • ++ ++ More prvalues are evaluated at compile time ++ (git). ++
  • ++
  • ++ Various diagnostic improvements. ++
  • ++
++

Runtime Library (libstdc++)

++ ++
    ++
  • Debug assertions are now enabled by default for unoptimized builds. ++ Use -D_GLIBCXX_NO_ASSERTIONS to override this. ++
  • ++
  • Improved experimental support for C++26, including: ++
      ++
    • views::concat.
    • ++
    • Member visit.
    • ++
    • Type-checking std::format args.
    • ++
    ++
  • ++
  • Improved experimental support for C++23, including: ++
      ++
    • ++ std and std.compat modules ++ (also supported for C++20). ++
    • ++
    • ++ std::flat_map and std::flat_set. ++
    • ++
    • ++ Clarify handling of encodings in localized formatting of chrono types. ++
    • ++
    ++
  • ++
++ ++

D

++
    ++
  • Support for the D programming language has been updated to version ++ 2.111.0 of the language and run-time library. Full changelog for this ++ release and previous releases can be found on the ++ dlang.org ++ website. ++
  • ++
  • On supported targets, the version GNU_CET is now predefined ++ when the option -fcf-protection is used. The protection level ++ is also set in the traits key __traits(getTargetInfo, "CET"). ++
  • ++
  • A new option ++ ++ -finclude-imports was added, which tells the compiler to ++ include imported modules in the compilation, as if they were given on the ++ command-line. ++
  • ++
++ ++

Fortran

++ ++
    ++
  • ++ Fortran 2018 and 2023 locality specifiers to do concurrent are ++ now supported. ++
  • ++
  • ++ Experimental support for unsigned modular integers, ++ enabled by -funsigned; ++ see ++ gfortran documentation for details. This follows ++ (J3/24-116). ++ With this option in force, the selected_logical_kind ++ intrinsic function and, in the ISO_FORTRAN_ENV ++ module, the named constants logical{8,16,32,64} and ++ real16 were added. The ISO_C_BINDING ++ module has been extended accordingly. ++
  • ++
  • Missing commas separating descriptors in input/output format strings are no ++ longer permitted by default and are rejected at run-time unless -std=legacy ++ is used when compiling the main program unit. See Fortran 2023 constraint C1302. ++
  • ++
  • The Fortran module *.mod format generated by GCC 15 is ++ incompatible with the module format generated by GCC 8 - 14, but GCC ++ 15 can for compatibility still read GCC 8 - 14 created module ++ files.
  • ++
  • Coarray support has been reworked to allow access to components in derived ++ types that have not been compiled with coarray support enabled; ++ especially, when the derived type is in a binary only module. This has ++ changed the ABI and may lead to link-time errors with object files ++ generated with a previous GCC version and to be linked to the current ++ caf_single library. If this library is to be used, then ++ it is recommended to recompile all artifacts. The OpenCoarrays library ++ is not affected, because it provides backwards compatibility with the ++ older ABI.
  • ++
  • ++ The -Wexternal-interface-mismatch option has been ++ added. This checks for mismatches between the argument lists in ++ dummy external arguments, and is implied by -Wall ++ and -fc-prototypes-external options. ++
  • ++
  • ++ The -fc-prototypes now also generates prototypes for ++ interoperable procedures with assumed shape and assumed rank ++ arguments that require the header file ++ <ISO_Fortran_binding.h>. ++
  • ++
++ ++ ++ ++ ++ ++ ++

Modula-2

++
    ++
  • The keyword FORWARD has been implemented in the ++ compiler and is available by default in all dialects. ++
  • ++
  • The SYSTEM module now exports the ++ datatype COFF_T mapping onto the POSIX off_t ++ type. The size of this datatype can be controlled by the new ++ option -fm2-file-offset-bits=. ++
  • ++
  • Access to the GCC ++ builtins clz, clzll, ctz ++ and ctzll are now available from the ++ module Builtins. ++
  • ++
++ ++ ++

New Targets and Target Specific Improvements

++ ++

AArch64

++ ++
    ++
  • Support has been added for the AArch64 MinGW target ++ (aarch64-w64-mingw32). At present, this target ++ supports C and C++ for base Armv8-A, but with some caveats: ++
      ++
    • Although most variadic functions work, the implementation ++ of them is not yet complete. ++
    • ++
    • C++ exception handling is not yet implemented.
    • ++
    ++ Further work is planned for GCC 16. ++
  • ++
  • As noted above, support for ILP32 (-mabi=ilp32) ++ has been deprecated and will be removed in a future release. ++ aarch64*-elf targets no longer build the ILP32 multilibs. ++
  • ++
  • The following architecture level is now supported by ++ -march and related source-level constructs ++ (GCC identifiers in parentheses): ++
      ++
    • Armv9.5-A (arm9.5-a)
    • ++
    ++
  • ++
  • The following CPUs are now supported by -mcpu, ++ -mtune, and related source-level constructs ++ (GCC identifiers in parentheses): ++
      ++
    • Apple A12 (apple-a12)
    • ++
    • Apple M1 (apple-m1)
    • ++
    • Apple M2 (apple-m2)
    • ++
    • Apple M3 (apple-m3)
    • ++
    • Arm Cortex-A520AE (cortex-a520ae)
    • ++
    • Arm Cortex-A720AE (cortex-a720ae)
    • ++
    • Arm Cortex-A725 (cortex-a725)
    • ++
    • Arm Cortex-R82AE (cortex-r82ae)
    • ++
    • Arm Cortex-X925 (cortex-x925)
    • ++
    • Arm Neoverse N3 (neoverse-n3)
    • ++
    • Arm Neoverse V3 (neoverse-v3)
    • ++
    • Arm Neoverse V3AE (neoverse-v3ae)
    • ++
    • FUJITSU-MONAKA (fujitsu-monaka)
    • ++
    • NVIDIA Grace (grace)
    • ++
    • NVIDIA Olympus (olympus)
    • ++
    • Qualcomm Oryon-1 (oryon-1)
    • ++
    ++
  • ++
  • The following features are now supported by -march, ++ -mcpu, and related source-level constructs ++ (GCC modifiers in parentheses): ++
      ++
    • FEAT_CPA (+cpa), enabled by default for ++ Arm9.5-A and above ++
    • ++
    • FEAT_FAMINMAX (+faminmax), enabled by default for ++ Arm9.5-A and above ++
    • ++
    • FEAT_FCMA (+fcma), enabled by default for Armv8.3-A ++ and above ++
    • ++
    • FEAT_FLAGM2 (+flagm2), enabled by default for ++ Armv8.5-A and above ++
    • ++
    • FEAT_FP8 (+fp8)
    • ++
    • FEAT_FP8DOT2 (+fp8dot2)
    • ++
    • FEAT_FP8DOT4 (+fp8dot4)
    • ++
    • FEAT_FP8FMA (+fp8fma)
    • ++
    • FEAT_FRINTTS (+frintts), enabled by default for ++ Armv8.5-A and above ++
    • ++
    • FEAT_JSCVT (+jscvt), enabled by default for ++ Armv8.3-A and above ++
    • ++
    • FEAT_LUT (+lut), enabled by default for ++ Arm9.5-A and above ++
    • ++
    • FEAT_LRCPC2 (+rcpc2), enabled by default for ++ Armv8.4-A and above ++
    • ++
    • FEAT_SME_B16B16 (+sme-b16b16)
    • ++
    • FEAT_SME_F16F16 (+sme-f16f16)
    • ++
    • FEAT_SME2p1 (+sme2p1)
    • ++
    • FEAT_SSVE_FP8DOT2 (+ssve-fp8dot2)
    • ++
    • FEAT_SSVE_FP8DOT4 (+ssve-fp8dot4)
    • ++
    • FEAT_SSVE_FP8FMA (+ssve-fp8fma)
    • ++
    • FEAT_SVE_B16B16 (+sve-b16b16)
    • ++
    • FEAT_SVE2p1 (+sve2p1), enabled by default for ++ Armv9.4-A and above ++
    • ++
    • FEAT_WFXT (+wfxt), enabled by default for ++ Armv8.7-A and above ++
    • ++
    • FEAT_XS (+xs), enabled by default for ++ Armv8.7-A and above ++
    • ++
    ++ The features listed as being enabled by default for Armv8.7-A or earlier ++ were previously only selectable using the associated architecture level. ++ For example, FEAT_FCMA was previously selected by ++ -march=armv8.3-a and above (as it still is), but it wasn't ++ previously selectable independently. ++
  • ++
  • -mbranch-protection has been extended to support ++ the Guarded Control Stack (GCS) extension. This support ++ is included in -mbranch-protection=standard and can ++ be enabled individually using -mbranch-protection=gcs. ++
  • ++
  • The following additional changes have been made to the ++ command-line options: ++
      ++
    • In order to align with other tools, the SME feature modifier ++ +sme no longer enables SVE. However, GCC does not ++ yet support using SME without SVE and instead rejects such ++ combinations with a “not implemented” error. ++
    • ++
    • The options -mfix-cortex-a53-835769 and ++ -mfix-cortex-a53-843419 are now silently ignored ++ if the selected architecture is incompatible with Cortex-A53. ++ This is particularly useful for toolchains that are configured ++ to apply the Cortex-A53 workarounds by default. For example, ++ all other things being equal, a toolchain configured with ++ --enable-fix-cortex-a53-835769 now produces the ++ same code for -mcpu=neoverse-n2 as a toolchain ++ configured without --enable-fix-cortex-a53-835769. ++
    • ++
    • -mcpu=native now handles unrecognized heterogeneous ++ systems by detecting which individual architecture features are ++ supported by the CPUs. This matches the preexisting behavior for ++ unknown homogeneous systems. ++
    • ++
    • The first scheduling pass (-fschedule-insns) is no ++ longer enabled by default at -O2 for AArch64 targets. ++ The pass is still enabled by default at -O3 and ++ -Ofast. ++
    • ++
    ++
  • ++
  • Support has been added for the following features of the Arm C ++ Language Extensions ++ (ACLE): ++
      ++
    • guarded control stacks
    • ++
    • lookup table instructions with 2-bit and 4-bit indices ++ (predefined macro ++ __ARM_FEATURE_LUT, enabled by +lut) ++
    • ++
    • floating-point absolute minimum and maximum instructions ++ (predefined macro __ARM_FEATURE_FAMINMAX, ++ enabled by +faminmax) ++
    • ++
    • FP8 conversions (predefined macro ++ __ARM_FEATURE_FP8, enabled by +fp8) ++
    • ++
    • FP8 2-way dot product to half precision instructions ++ (predefined macro __ARM_FEATURE_FP8DOT2, ++ enabled by +fp8dot2) ++
    • ++
    • FP8 4-way dot product to single precision instructions ++ (predefined macro __ARM_FEATURE_FP8DOT4, ++ enabled by +fp8dot4) ++
    • ++
    • FP8 multiply-accumulate to half precision and single precision ++ instructions (predefined macro __ARM_FEATURE_FP8FMA, ++ enabled by +fp8fma) ++
    • ++
    • SVE FP8 2-way dot product to half precision instructions ++ (predefined macro __ARM_FEATURE_SSVE_FP8DOT2, ++ enabled by +ssve-fp8dot2) ++
    • ++
    • SVE FP8 4-way dot product to single precision instructions ++ (predefined macro __ARM_FEATURE_SSVE_FP8DOT4, ++ enabled by +ssve-fp8dot4) ++
    • ++
    • SVE FP8 multiply-accumulate to half precision and single precision ++ instructions (predefined macro __ARM_FEATURE_SSVE_FP8FMA, ++ enabled by +ssve-fp8fma) ++
    • ++
    • SVE2.1 instructions (predefined macro ++ __ARM_FEATURE_SVE2p1, enabled by +sve2p1) ++
    • ++
    • SVE non-widening bfloat16 instructions ++ (predefined macro __ARM_FEATURE_SVE_B16B16, ++ enabled by +sve-b16b16) ++
    • ++
    • SME2.1 instructions (predefined macro ++ __ARM_FEATURE_SME2p1, enabled by +sme2p1) ++
    • ++
    • SME non-widening bfloat16 instructions ++ (predefined macro __ARM_FEATURE_SME_B16B16, ++ enabled by +sme-b16b16) ++
    • ++
    • SME half-precision instructions ++ (predefined macro __ARM_FEATURE_SME_F16F16, ++ enabled by +sme-f16f16) ++
    • ++
    • using C and C++ prefix operators, infix operators, and postfix ++ operators with scalable SVE ACLE types ++ (predefined macro __ARM_FEATURE_SVE_VECTOR_OPERATORS==2, ++ enabled by +sve) ++
    • ++
    • __fma (in arm_acle.h)
    • ++
    • __fmaf (in arm_acle.h)
    • ++
    • __chkfeat (in arm_acle.h)
    • ++
    ++
  • ++
  • In addition, the following changes have been made to preexisting ++ ACLE features: ++
      ++
    • The macros __ARM_FEATURE_BF16 and ++ __ARM_FEATURE_SVE_BF16 are now predefined when the ++ associated support is available. Previous versions of GCC provided ++ the associated intrinsics but did not predefine the macros. ++
    • ++
    • OpenMP tasks can now share scalable SVE vectors and predicates. ++ However, offloading of scalable vectors and predicates is not ++ supported. ++
    • ++
    • ACLE system register functions (such as __arm_rsr ++ and __arm_wsr) no longer try to enforce the minimum ++ architectural requirement. ++
    • ++
    • A warning is reported if code attempts to use the Function ++ Multi-Versioning feature. GCC's current implementation of this ++ feature is still experimental and it does not conform to the ++ ACLE specification. ++
    • ++
    ++
  • ++
  • Support has been added for the indirect_return ++ function-type attribute, which indicates that a function might return ++ via an indirect branch instead of via a normal return instruction. ++
  • ++
  • 128-bit atomic operations have been extended to make use of ++ FEAT_LRCPC3 instructions, when support for the instructions is ++ detected at runtime. ++
  • ++
  • There have been many code-generation improvements to the AArch64 port. ++ Some examples are: ++
      ++
    • automatic use of AArch64 CRC instructions
    • ++
    • automatic use of AArch64 saturating vector arithmetic ++ instructions ++
    • ++
    • better code generation of population counts
    • ++
    • improved handling of floating-point and vector immediates
    • ++
    • improved handling of vector permutations
    • ++
    • more use of SVE instructions to optimize Advanced SIMD code
    • ++
    • more folding and simplification of SVE ACLE intrinsics
    • ++
    • improved CPU-specific tuning
    • ++
    • improved register allocation, such as eliminating some ++ vector moves ++
    • ++
    ++
  • ++
++ ++

AMD GPU (GCN)

++ ++
    ++
  • The standard C++ library (libstdc++) is now supported and enabled.
  • ++
  • Experimental support for supporting generic devices has been added; ++ specifying gfx9-generic, gfx10-3-generic, ++ or gfx11-generic to ++ ++ -march= will generate code that can run on all ++ devices of a series. Additionally, the following specific devices ++ are now have experimental support, all of which are compatible with a ++ listed generic: gfx902, gfx904, ++ gfx909, gfx1031, gfx1032, ++ gfx1033, gfx1034, gfx1035, ++ gfx1101, gfx1102, gfx1150, ++ and gfx1151. To use any of the listed new devices including ++ the generic ones, GCC has to be configured to build the runtime library ++ for the device. Note that generic support requires ROCm 6.4.0 (or newer). ++ For details, consult GCC's ++ ++ installation notes.
  • ++
  • Support for Fiji (gfx803) devices has been removed (this was already ++ deprecated in GCC 14).
  • ++
++ ++ ++ ++ ++ ++

AVR

++ ++
    ++
  • Support has been added for the signal(num) ++ and interrupt(num) ++ function attributes ++ that allow to specify the interrupt vector number num ++ as an argument. ++ It allows to use static functions as interrupt handlers, and also ++ functions defined in a C++ namespace.
  • ++
  • Support has been added for the noblock function attribute. ++ It can be specified together with the signal attribute to ++ indicate that the interrupt service routine should start with a ++ SEI instruction to globally re-enable interrupts. ++ The difference to the interrupt attribute is that the ++ noblock attribute just acts like a flag and does not ++ impose a specific function name.
  • ++
  • Support has been added for the __builtin_avr_mask1 ++ built-in function. It can be used to compute some bit masks when ++ code like 1 << offset is not fast enough.
  • ++
  • Support has been added for a new 24-bit ++ named address space __flashx. ++ It is similar to the __memx address space introduced in v4.7, ++ but reading is a bit more efficient since it only supports reading from ++ program memory. Objects in the __flashx address space are ++ located in the .progmemx.data section.
  • ++
  • Apart from the built-in types __int24 and ++ __uint24 supported since v4.7, support has been added for the ++ signed __int24 and unsigned __int24 types.
  • ++
  • Code generation for the 32-bit integer shifts with constant ++ offset has been improved. The code size may slightly increase even ++ when optimizing for code size with -Os.
  • ++
  • Support has been added for a compact vector table as supported ++ by some AVR devices. It can be activated by the new command-line option ++ -mcvt. ++ It links crtmcu-cvt.o as startup code which ++ is supported since AVR-LibC v2.3.
  • ++
  • Support has been added for the new option ++ -mno-call-main. Instead of calling main, ++ it will be located in section .init9.
  • ++
  • New AVR specific optimizations have been added. ++ They can be controlled by the new command-line options ++ -mfuse-move, ++ -msplit-ldst, ++ -msplit-bit-shift and ++ -muse-nonzero-bits.
  • ++
++ ++

IA-32/x86-64

++ ++
    ++
  • New ISA extension support for Intel AMX-AVX512 was added. ++ AMX-AVX512 intrinsics are available via the -mamx-avx512 ++ compiler switch. ++
  • ++
  • New ISA extension support for Intel AMX-FP8 was added. ++ AMX-FP8 intrinsics are available via the -mamx-fp8 ++ compiler switch. ++
  • ++
  • New ISA extension support for Intel AMX-MOVRS was added. ++ AMX-MOVRS intrinsics are available via the -mamx-movrs ++ compiler switch. ++
  • ++
  • New ISA extension support for Intel AMX-TF32 was added. ++ AMX-TF32 intrinsics are available via the -mamx-tf32 ++ compiler switch. ++
  • ++
  • New ISA extension support for Intel AMX-TRANSPOSE was added. ++ AMX-TRANSPOSE intrinsics are available via the -mamx-transpose ++ compiler switch. ++
  • ++
  • All of new feature support for Intel APX expect for CFCMOV was added, ++ including CCMP/CTEST, NF and ZU. APX support is available via the ++ -mapxf compiler switch. ++
  • ++
  • New ISA extension support for Intel AVX10.2 was added. ++ AVX10.2 intrinsics are available via the -mavx10.2 ++ compiler switch. ++
  • ++
  • New ISA extension support for Intel MOVRS was added. ++ MOVRS intrinsics are available via the -mmovrs ++ compiler switch. MOVRS vector intrinsics are available via ++ the -mmovrs -mavx10.2 compiler switches. ++
  • ++
  • EVEX version support for Intel SM4 was added. ++ New 512-bit SM4 intrinsics are available via the ++ -msm4 -mavx10.2 compiler switches. ++
  • ++
  • GCC now supports the Intel CPU named Diamond Rapids through ++ -march=diamondrapids. ++ Based on Granite Rapids, the switch further enables the AMX-AVX512, ++ AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE, APX_F, AVX10.2, AVX-IFMA, ++ AVX-NE-CONVERT, AVX-VNNI-INT16, AVX-VNNI-INT8, CMPccXADD, MOVRS, SHA512, ++ SM3, SM4, and USER_MSR ISA extensions. ++
  • ++
  • Support for Xeon Phi CPUs (a.k.a. Knight Landing and Knight Mill) were ++ removed in GCC 15. GCC will no longer accept -march=knl, ++ -march=knm, -mavx5124fmaps, ++ -mavx5124vnniw, -mavx512er, ++ -mavx512pf, -mprefetchwt1, ++ -mtune=knl, and -mtune=knm compiler switches. ++
  • ++
  • -mavx10.1-256, -mavx10.1-512, and ++ -mevex512 are deprecated. Meanwhile, -mavx10.1 ++ enables AVX10.1 intrinsics with 512-bit vector support, while in GCC 14.1 ++ and GCC 14.2, it only enables 256-bit vector support. GCC will emit a ++ warning when using these compiler switches. -mavx10.1-256, ++ -mavx10.1-512, and -mevex512 will be removed in ++ GCC 16 together with the warning for the behavior change on ++ -mavx10.1. ++
  • ++
  • With the -mveclibabi compiler switch GCC is able to generate ++ vectorized calls to external libraries. GCC 15 newly supports generating ++ vectorized math calls to the math library from AMD Optimizing CPU Libraries ++ (AOCL LibM). This option is available through ++ -mveclibabi=aocl. GCC still supports generating calls to AMD ++ Core Math Library (ACML). However, that library is end-of-life and AOCL ++ offers many more vectorized functions. ++
  • ++
++ ++

LoongArch

++
    ++
  • Support has been added for target attributes and pragmas. For more details ++ on available attributes and pragmas, including their proper usage, please ++ refer to the provided ++ ++ documentation. ++
  • ++
  • Support has been added for the new option ++ ++ -mannotate-tablejump. Which can create an annotation ++ section .discard.tablejump_annotate to correlate the ++ jirl instruction and the jump table. ++
  • ++
  • Add CRC expander to generate faster CRC. ++
  • ++
  • Add ABI names for FPR. ++
  • ++
++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++

NVPTX

++ ++
    ++
  • The standard C++ library (libstdc++) is now supported and enabled.
  • ++
  • GCC's nvptx target now supports constructors and destructors. ++ For this, a recent version of nvptx-tools is required.
  • ++
++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++

SH

++ ++
    ++
  • Bare metal sh-elf targets are now using the newer soft-fp ++ library for improved performance of floating-point emulation on CPUs ++ without hardware floating-point support.
  • ++
++ ++ ++ ++ ++ ++ ++

Operating Systems

++ ++ ++ ++

PowerPC Darwin

++
    ++
  • Fortran's IEEE modules are now supported on Darwin PowerPC.
  • ++
++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++

Other significant improvements

++ ++ ++ ++ ++

GCC 15.1

++ ++

This is the list ++of problem reports (PRs) from GCC's bug tracking system that are ++known to be fixed in the 15.1 release. This list might not be ++complete (that is, it is possible that some PRs that have been fixed ++are not listed here).

++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ ++ diff --cc debian/README.Bugs.m4 index 0000000,0000000..a2d1606 new file mode 100644 --- /dev/null +++ b/debian/README.Bugs.m4 @@@ -1,0 -1,0 +1,333 @@@ ++Reporting Bugs in the GNU Compiler Collection for DIST ++======================================================== ++ ++Before reporting a bug, please ++------------------------------ ++ ++- Check that the behaviour really is a bug. Have a look into some ++ ANSI standards document. ++ ++- Check the list of well known bugs: http://gcc.gnu.org/bugs.html#known ++ ++- Try to reproduce the bug with a current GCC development snapshot. You ++ usually can get a recent development snapshot from the gcc-snapshot ++ifelse(DIST,`Debian',`dnl ++ package in the unstable (or experimental) distribution. ++ ++ See: http://packages.debian.org/gcc-snapshot ++', DIST, `Ubuntu',`dnl ++ package in the current development distribution. ++ ++ See: http://archive.ubuntu.com/ubuntu/pool/universe/g/gcc-snapshot/ ++')dnl ++ ++- Try to find out if the bug is a regression (an older GCC version does ++ not show the bug). ++ ++- Check if the bug is already reported in the bug tracking systems. ++ ++ifelse(DIST,`Debian',`dnl ++ Debian: http://bugs.debian.org/debian-gcc@lists.debian.org ++', DIST, `Ubuntu',`dnl ++ Ubuntu: https://bugs.launchpad.net/~ubuntu-toolchain/+packagebugs ++ Debian: http://bugs.debian.org/debian-gcc@lists.debian.org ++')dnl ++ Upstream: http://gcc.gnu.org/bugzilla/ ++ ++ ++Where to report a bug ++--------------------- ++ ++ifelse(DIST,`Debian',`dnl ++Please report bugs found in the packaging of GCC to the Debian bug tracking ++system. See http://www.debian.org/Bugs/ for instructions (or use the ++reportbug script). ++', DIST, `Ubuntu',`dnl ++Please report bugs found in the packaging of GCC to Launchpad. See below ++how issues should be reported. ++')dnl ++ ++DIST's current policy is to closely follow the upstream development and ++only apply a minimal set of patches (which are summarized in the README.Debian ++document). ++ ++ifelse(DIST,`Debian',`dnl ++If you think you have found an upstream bug, you did check the section ++above ("Before reporting a bug") and are able to provide a complete bug ++report (see below "How to report a bug"), then you may help the Debian ++GCC package maintainers, if you report the bug upstream and then submit ++a bug report to the Debian BTS and tell us the upstream report number. ++This way you are able to follow the upstream bug handling as well. If in ++doubt, report the bug to the Debian BTS (but read "How to report a bug" ++below). ++', DIST, `Ubuntu',`dnl ++If you think you have found an upstream bug, you did check the section ++above ("Before reporting a bug") and are able to provide a complete bug ++report (see below "How to report a bug"), then you may help the Ubuntu ++GCC package maintainers, if you report the bug upstream and then submit ++a bug report to Launchpad and tell us the upstream report number. ++This way you are able to follow the upstream bug handling as well. If in ++doubt, report the bug to Launchpad (but read "How to report a bug" below). ++ ++Report the issue to https://bugs.launchpad.net/ubuntu/+source/SRCNAME. ++')dnl ++ ++ ++How to report a bug ++------------------- ++ ++There are complete instructions in the gcc info manual (found in the ++gcc-doc package), section Bugs. ++ ++The manual can be read using `M-x info' in Emacs, or if the GNU info ++program is installed on your system by `info --node "(gcc)Bugs"'. Or see ++the file BUGS included with the gcc source code. ++ ++Online bug reporting instructions can be found at ++ ++ http://gcc.gnu.org/bugs.html ++ ++[Some paragraphs taken from the above URL] ++ ++The main purpose of a bug report is to enable us to fix the bug. The ++most important prerequisite for this is that the report must be ++complete and self-contained, which we explain in detail below. ++ ++Before you report a bug, please check the list of well-known bugs and, ++if possible in any way, try a current development snapshot. ++ ++Summarized bug reporting instructions ++------------------------------------- ++ ++What we need ++ ++Please include in your bug report all of the following items, the ++first three of which can be obtained from the output of gcc -v: ++ ++ * the exact version of GCC; ++ * the system type; ++ * the options given when GCC was configured/built; ++ * the complete command line that triggers the bug; ++ * the compiler output (error messages, warnings, etc.); and ++ * the preprocessed file (*.i*) that triggers the bug, generated by ++ adding -save-temps to the complete compilation command, or, in ++ the case of a bug report for the GNAT front end, a complete set ++ of source files (see below). ++ ++What we do not want ++ ++ * A source file that #includes header files that are left out ++ of the bug report (see above) ++ * That source file and a collection of header files. ++ * An attached archive (tar, zip, shar, whatever) containing all ++ (or some :-) of the above. ++ * A code snippet that won't cause the compiler to produce the ++ exact output mentioned in the bug report (e.g., a snippet with ++ just a few lines around the one that apparently triggers the ++ bug, with some pieces replaced with ellipses or comments for ++ extra obfuscation :-) ++ * The location (URL) of the package that failed to build (we won't ++ download it, anyway, since you've already given us what we need ++ to duplicate the bug, haven't you? :-) ++ * An error that occurs only some of the times a certain file is ++ compiled, such that retrying a sufficient number of times ++ results in a successful compilation; this is a symptom of a ++ hardware problem, not of a compiler bug (sorry) ++ * E-mail messages that complement previous, incomplete bug ++ reports. Post a new, self-contained, full bug report instead, if ++ possible as a follow-up to the original bug report ++ * Assembly files (*.s) produced by the compiler, or any binary files, ++ such as object files, executables, core files, or precompiled ++ header files ++ * Duplicate bug reports, or reports of bugs already fixed in the ++ development tree, especially those that have already been ++ reported as fixed last week :-) ++ * Bugs in the assembler, the linker or the C library. These are ++ separate projects, with separate mailing lists and different bug ++ reporting procedures ++ * Bugs in releases or snapshots of GCC not issued by the GNU ++ Project. Report them to whoever provided you with the release ++ * Questions about the correctness or the expected behavior of ++ certain constructs that are not GCC extensions. Ask them in ++ forums dedicated to the discussion of the programming language ++ ++ ++Known Bugs and Non-Bugs ++----------------------- ++ ++[Please see /usr/share/doc/gcc/FAQ or http://gcc.gnu.org/faq.html first] ++ ++ ++C++ exceptions don't work with C libraries ++------------------------------------------ ++ ++[Taken from the closed bug report #22769] C++ exceptions don't work ++with C libraries, if the C code wasn't designed to be thrown through. ++A solution could be to translate all C libraries with -fexceptions. ++Mostly trying to throw an exception in a callback function (qsort, ++Tcl command callbacks, etc ...). Example: ++ ++ #include ++ #include ++ ++ class A {}; ++ ++ static ++ int SortCondition(void const*, void const*) ++ { ++ printf("throwing 'sortcondition' exception\n"); ++ throw A(); ++ } ++ ++ int main(int argc, char *argv[]) ++ { ++ int list[2]; ++ ++ try { ++ SortCondition(NULL,NULL); ++ } catch (A) { ++ printf("caught test-sortcondition exception\n"); ++ } ++ try { ++ qsort(&list, sizeof(list)/sizeof(list[0]),sizeof(list[0]), ++ &SortCondition); ++ } catch (A) { ++ printf("caught real-sortcondition exception\n"); ++ } ++ return 0; ++} ++ ++Andrew Macleod responded: ++ ++When compiled with the table driven exception handling, exception can only ++be thrown through functions which have been compiled with the table driven EH. ++If a function isn't compiled that way, then we do not have the frame ++unwinding information required to restore the registers when unwinding. ++ ++I believe the setjmp/longjmp mechanism will throw through things like this, ++but its produces much messier code. (-fsjlj-exceptions) ++ ++The C compiler does support exceptions, you just have to turn them on ++with -fexceptions. ++ ++Your main options are to: ++ a) Don't use callbacks, or at least don't throw through them. ++ b) Get the source and compile the library with -fexceptions (You have to ++ explicitly turn on exceptions in the C compiler) ++ c) always use -fsjlj-exceptions (boo, bad choice :-) ++ ++ ++g++: "undefined reference" to static const array in class ++--------------------------------------------------------- ++ ++The following code compiles under GNU C++ 2.7.2 with correct results, ++but produces the same linker error with GNU C++ 2.95.2. ++Alexandre Oliva responded: ++ ++All of them are correct. A static data member *must* be defined ++outside the class body even if it is initialized within the class ++body, but no diagnostic is required if the definition is missing. It ++turns out that some releases do emit references to the missing symbol, ++while others optimize it away. ++ ++#include ++ ++class Test ++{ ++ public: ++ Test(const char *q); ++ protected: ++ static const unsigned char Jam_signature[4] = "JAM"; ++}; ++ ++Test::Test(const char *q) ++{ ++ if (memcmp(q, Jam_signature, sizeof(Jam_signature)) != 0) ++ cerr << "Hello world!\n"; ++} ++ ++int main(void) ++{ ++ Test::Test("JAM"); ++ return 0; ++} ++ ++g++: g++ causes passing non const ptr to ptr to a func with const arg ++ to cause an error (not a bug) ++--------------------------------------------------------------------- ++ ++Example: ++ ++#include ++void test(const char **b){ ++ printf ("%s\n",*b); ++} ++int main(void){ ++ char *test1="aoeu"; ++ test(&test1); ++} ++ ++make const ++g++ const.cc -o const ++const.cc: In function `int main()': ++const.cc:7: passing `char **' as argument 1 of `test(const char **)' adds cv-quals without intervening `const' ++make: *** [const] Error 1 ++ ++Answer from "Martin v. Loewis" : ++ ++> ok... maybe I missed something.. I haven't really kept up with the latest in ++> C++ news. But I've never heard anything even remotly close to passing a non ++> const var into a const arg being an error before. ++ ++Thanks for your bug report. This is a not a bug in the compiler, but ++in your code. The standard, in 4.4/4, puts it that way ++ ++# A conversion can add cv-qualifiers at levels other than the first in ++# multi-level pointers, subject to the following rules: ++# Two pointer types T1 and T2 are similar if there exists a type T and ++# integer n > 0 such that: ++# T1 is cv(1,0) pointer to cv(1,1) pointer to ... cv(1,n-1) ++# pointer to cv(1,n) T ++# and ++# T2 is cv(2,0) pointer to cv(2,1) pointer to ... cv(2,n-1) ++# pointer to cv(2,n) T ++# where each cv(i,j) is const, volatile, const volatile, or ++# nothing. The n-tuple of cv-qualifiers after the first in a pointer ++# type, e.g., cv(1,1) , cv(1,2) , ... , cv(1,n) in the pointer type ++# T1, is called the cv-qualification signature of the pointer type. An ++# expression of type T1 can be converted to type T2 if and only if the ++# following conditions are satisfied: ++# - the pointer types are similar. ++# - for every j > 0, if const is in cv(1,j) then const is in cv(2,j) , ++# and similarly for volatile. ++# - if the cv(1,j) and cv(2,j) are different, then const is in every ++# cv(2,k) for 0 < k < j. ++ ++It is the last rule that your code violates. The standard gives then ++the following example as a rationale: ++ ++# [Note: if a program could assign a pointer of type T** to a pointer ++# of type const T** (that is, if line //1 below was allowed), a ++# program could inadvertently modify a const object (as it is done on ++# line //2). For example, ++# int main() { ++# const char c = 'c'; ++# char* pc; ++# const char** pcc = &pc; //1: not allowed ++# *pcc = &c; ++# *pc = 'C'; //2: modifies a const object ++# } ++# - end note] ++ ++If you question this line of reasoning, please discuss it in one of ++the public C++ fora first, eg. comp.lang.c++.moderated, or ++comp.std.c++. ++ ++ ++cpp removes blank lines ++----------------------- ++ ++With the new cpp, you need to add -traditional to the "cpp -P" args, else ++blank lines get removed. ++ ++[EDIT ME: scan Debian bug reports and write some nice summaries ...] diff --cc debian/README.C++ index 0000000,0000000..8cc40f8 new file mode 100644 --- /dev/null +++ b/debian/README.C++ @@@ -1,0 -1,0 +1,35 @@@ ++libstdc++ is an implementation of the Standard C++ Library, including the ++Standard Template Library (i.e. as specified by ANSI and ISO). ++ ++Some notes on porting applications from libstdc++-2.90 (or earlier versions) ++to libstdc++-v3 can be found in the libstdc++6-4.3-doc package. After the ++installation of the package, look at: ++ ++ file:///usr/share/doc/gcc-4.3-base/libstdc++/html/17_intro/porting-howto.html ++ ++On Debian GNU/Linux you find additional documentation in the ++libstdc++6-4.3-doc package. After installing these packages, ++point your browser to ++ ++ file:///usr/share/doc/libstdc++6-4.3-doc/libstdc++/html/index.html ++ ++Other documentation can be found: ++ ++ http://www.sgi.com/tech/stl/ ++ ++with a good, recent, book on C++. ++ ++A great deal of useful C++ documentation can be found in the C++ FAQ-Lite, ++maintained by Marshall Cline . It can be found at the ++mirror sites linked from the following URL (this was last updated on ++2010/09/11): ++ ++ http://www.parashift.com/c++-faq/ ++ ++or use some search engin site to find it, e.g.: ++ ++ http://www.google.com/search?q=c%2B%2B+faq+lite ++ ++Be careful not to use outdated mirors. ++ ++Please send updates to this list as bug report for the g++ package. diff --cc debian/README.Debian index 0000000,0000000..b2275d4 new file mode 100644 --- /dev/null +++ b/debian/README.Debian @@@ -1,0 -1,0 +1,45 @@@ ++ The Debian GNU Compiler Collection setup ++ ======================================== ++ ++Please see the README.Debian in /usr/share/doc/gcc, contained in the ++gcc package for a description of the setup of the different compiler ++versions. ++ ++For general discussion about the Debian toolchain (GCC, glibc, binutils) ++please use the mailing list debian-toolchain@lists.debian.org; for GCC ++specific things, please use debian-gcc@lists.debian.org. When in doubt ++use the debian-toolchain ML. ++ ++ ++Maintainers of these packages ++----------------------------- ++ ++Matthias Klose ++Ludovic Brenta (gnat) ++Iain Buclaw (gdc) ++Aurelien Jarno (mips*-linux) ++Aurelien Jarno (s390X*-linux) ++ ++The following ports lack maintenance in Debian: powerpc, ppc64, ++sparc, sparc64 (unmentioned ports are usually handled by the Debian ++porters). ++ ++Former and/or inactive maintainers of these packages ++---------------------------------------------------- ++ ++Falk Hueffner (alpha-linux) ++Ray Dassen ++Jeff Bailey (hurd-i386) ++Joel Baker (netbsd-i386) ++Randolph Chung (ia64-linux) ++Philip Blundell (arm-linux) ++Ben Collins (sparc-linux) ++Dan Jacobowitz (powerpc-linux) ++Thiemo Seufer (mips*-linux) ++Matt Taggart (hppa-linux) ++Gerhard Tonn (s390-linux) ++Roman Zippel (m68k-linux) ++Arthur Loiret (gdc) ++ ++=============================================================================== ++ diff --cc debian/README.cross index 0000000,0000000..ccf245b new file mode 100644 --- /dev/null +++ b/debian/README.cross @@@ -1,0 -1,0 +1,22 @@@ ++Building cross-compiler Debian packages ++--------------------------------------- ++ ++The packaging for cross toolchains is now in the archive, including ++all frontends, and targeting all release and ports architectures. ++ ++Cross toolchains are built from the following source packages: ++ ++ - binutils ++ - cross-toolchain-base ++ - cross-toolchain-base-ports ++ - gcc-7-cross ++ - gcc-7-cross-ports ++ - gcc-8-cross ++ - gcc-8-cross-ports ++ - gcc-9-cross ++ - gcc-9-cross-ports ++ - gcc-defaults ++ - gcc-defaults-ports ++ ++Issues about the cross toolchains should be filed for one of the ++above source packages. diff --cc debian/README.libstdc++-baseline.in index 0000000,0000000..e771c16 new file mode 100644 --- /dev/null +++ b/debian/README.libstdc++-baseline.in @@@ -1,0 -1,0 +1,2 @@@ ++The libstdc++ baseline file is a list of symbols exported by the ++libstdc++ library. diff --cc debian/README.maintainers index 0000000,0000000..9240455 new file mode 100644 --- /dev/null +++ b/debian/README.maintainers @@@ -1,0 -1,0 +1,190 @@@ ++-*- Outline -*- ++ ++Read this file if you are a Debian Developer or would like to become ++one, or if you would like to create your own binary packages of GCC. ++ ++* Overview ++ ++From the GCC sources, Debian currently builds 3 source packages and ++almost 100 binary packages, using a single set of build scripts. The ++3 source packages are: ++ ++gcc-x.y: C, C++, Fortran, Objective-C and Objective-C++, plus many ++ common libraries like libssp and libgcc. ++gnat-x.y: Ada. ++ ++The way we do this is quite peculiar, so listen up :) ++ ++When we build from the gcc-x.y source package, we produce, among many ++others, a gcc-x.y-source binary package that contains the pristine ++upstream tarball and some Debian-specific patches. Any user can then ++install this package on their Debian system, and will have the full ++souces in /usr/src/gcc-x.y/gcc-.tar.bz2, along with the ++Makefile snippets that unpack and patch them. ++ ++The intended use for this package is twofold: (a) allow users to build ++their own cross-compilers, and (b) build the other packages like ++gnat-x.y. ++ ++- gcc-x.y requires only a C compiler to build and produces C, C++, ++ Fortran, Go and Objective-C compilers and libraries. It also ++ produces the binary package gcc-x.y-source containing all the ++ sources and patches in a tarball. ++ ++- gnat-x.y build-depends on gcc-x.y-source and an Ada compiler. It ++ does not even have an .orig.tar.bz2 package; it is a Debian native ++ package. ++ ++The benefits of this split are many: ++ ++- bootstrapping a subset of languages is much faster than ++ bootstrapping all languages and libraries (which can take a full ++ week on slow architectures like mips or arm) ++ ++- the language maintainers don't have to wait for each other ++ ++- for new ports, the absence of a port of, say, gnat-x.y does not ++ block the porting of gcc-x.y. ++ ++gcc-x.y-source is also intended for interested users to build ++cross-compiler packages. Debian cannot provide all possible ++cross-compiler packages (i.e. all possible host, target, language and ++library combinations), so instead tries to facilitate building them. ++ ++* The build sequence ++ ++As for all other Debian packages, you build GCC by calling ++debian/rules. ++ ++The first thing debian/rules does it to look at the top-most entry in ++debian/changelog: this tells it which source package it is building. ++For example, if the first entry in debian/changelog reads: ++ ++gnat-6 (6.2.0-1) unstable; urgency=low ++ ++ * Upload as gnat-6. ++ ++ -- Ludovic Brenta Tue, 26 Jun 2007 00:26:42 +0200 ++ ++then, debian/rules will build only the gnat binary packages. ++ ++The second step is to build debian/control from debian/control.m4 and ++a complex set of rules specified in debian/rules.conf. The resulting ++control file contains only the binary packages to be built. ++ ++The third step is to select which patches to apply (this is done in ++debian/rules.defs), and then to apply the selected patches (see ++debian/rules.patch). The result of this step is a generated ++debian/patches/series file for use by quilt. ++ ++The fourth step is to unpack the GCC source tarball. This tarball is ++either in the build directory (when building gcc-x.y), or in ++/usr/src/gcc-x.y/gcc-x.y.z.tar.xz (when building the other source ++packages). ++ ++The fifth step is to apply all patches to the unpacked sources with ++quilt. ++ ++The sixth step is to create a "build" directory, cd into it, call ++../src/configure, and bootstrap the compiler and libraries selected. ++This is in debian/rules2. ++ ++The seventh step is to call "make install" in the build directory: ++this installs the compiler and libraries into debian/tmp ++(i.e. debian/tmp/usr/bin/gcc, etc.) ++ ++The eighth step is to run the GCC test suite. This actually takes at ++least as much time as bootstrapping, and you can disable it by setting ++WITHOUT_CHECK to "yes" in the environment. ++ ++The ninth step is to build the binary packages, i.e. the .debs. This ++is done by a set of language- and architecture-dependent Makefile ++snippets in the debian/rules.d/ directory, which move files from the ++debian/tmp tree to the debian/ trees. ++ ++* Making your own packages ++ ++In this example, we will build our own gnat-x.y package. ++ ++1) Install gcc-x.y-source, which contains the real sources: ++ ++# aptitude install gcc-x.y-source ++ ++2) Create a build directory: ++ ++$ mkdir gnat-x.y-x.y.z; cd gnat-x.y-x.y.z ++ ++3) Checkout from Subversion: ++ ++$ svn checkout svn://svn.debian.org/gcccvs/branches/sid/gcc-x.y/debian ++ ++4) Edit the debian/changelog file, adding a new entry at the top that ++ starts with "gnat-x.y". ++ ++5) Generate the debian/control file, adjusted for gnat: ++ ++$ debian/rules control ++ ++8) Build: ++ ++$ dpkg-buildpackage ++ ++* Hints ++ ++You need a powerful machine to build GCC. The larger, the better. ++The build scripts take advantage of as many CPU threads as are ++available in your box (for example: 2 threads on a dual-core amd64; 4 ++threads on a dual-core POWER5; 32 threads on an 8-core UltraSPARC T1, ++etc.). ++ ++If you have 2 GB or more of physical RAM, you can achieve maximum ++performance by building in a tmpfs, like this: ++ ++1) as root, create the new tmpfs: ++ ++# mount -t tmpfs -o size=1280m none /home/lbrenta/src/debian/ram ++ ++By default, the tmpfs will be limited to half your physical RAM. The ++beauty of it is that it only consumes as much physical RAM as ++necessary to hold the files in it; deleting files frees up RAM. ++ ++2) As your regular user, create the working directory in the tmpfs ++ ++$ cp --archive ~/src/debian/gcc-x.y-x.y.z ~/src/debian/ram ++ ++3) Build in there. On my dual-core, 2 GHz amd64, it takes 34 minutes ++ to build gnat, and the tmpfs takes 992 MiB of physical RAM but ++ exceeds 1 GiB during the build. ++ ++Note that the build process uses a lot of temporary files. Your $TEMP ++directory should therefore also be in a ram disk. You can achieve ++that either by mounting it as tmpfs, or by setting TEMP to point to ++~/src/debian/ram. ++ ++Also note that each thread in your processor(s) will run a compiler in ++it and use up RAM. Therefore your physical memory should be: ++ ++Physical_RAM >= 1.2 + 0.4 * Threads (in GiB) ++ ++(this is an estimate; your mileage may vary). If you have less ++physical RAM than recommended, reduce the number of threads allocated ++to the build process, or do not use a tmpfs to build. ++ ++* Patching GCC ++ ++Debian applies a large number of patches to GCC as part of the build ++process. It uses quilt but the necessary debian/patches/series is not ++part of the packaging scripts; instead, "debian/rules patch" generates ++this file by looking at debian/control (which is itself generated!), ++debian/changelog and other files. Then it applies all the patches. ++At this point, you can use quilt as usual: ++ ++$ cd ~/src/debian/gcc-x.y ++$ export QUILT_PATCHES=$PWD/debian/patches ++$ quilt series ++ ++If you add new patches, remember to add them to the version control ++system too. ++ ++-- ++Ludovic Brenta, 2012-04-02. diff --cc debian/README.snapshot index 0000000,0000000..5351938 new file mode 100644 --- /dev/null +++ b/debian/README.snapshot @@@ -1,0 -1,0 +1,46 @@@ ++Debian gcc-snapshot package ++=========================== ++ ++This package contains a recent development SNAPSHOT of all files ++contained in the GNU Compiler Collection (GCC). ++ ++DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! ++ ++This package will NEVER hit the testing distribution. It's used for ++tracking gcc bugs submitted to the Debian BTS in recent development ++versions of gcc. ++ ++To use this snapshot, you should set the following environment variables: ++ ++ LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ++ PATH=/usr/lib/gcc-snapshot/bin${PATH:+:$PATH} ++ ++You might also like to use a shell script to wrap up this ++funcationality, e.g. ++ ++place in /usr/local/bin/gcc-snapshot and chmod +x it ++ ++----------- snip ---------- ++#!/bin/sh ++LD_LIBRARY_PATH=/usr/lib/gcc-snapshot/lib${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} ++PATH=/usr/lib/gcc-snapshot/bin${PATH:+:$PATH} ++rpath="" ++OLD_IFS="$IFS" ++IFS=: ++for i in $LD_RUN_PATH ++do ++ rpath="$rpath -Wl,-rpath -Wl,$i" ++done ++IFS="$OLD_IFS" ++exec gcc -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/lib \ ++ -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/lib32 \ ++ -Wl,-rpath -Wl,/usr/lib/gcc-snapshot/libx32 $rpath "$@" ++----------- snip ---------- ++ ++Make the same for g++, g77, cpp, ... ++ ++Don't forget the quotes around the $@ or gcc will not parse it's ++command line correctly! ++ ++Unset these variables before building Debian packages destined for an ++upload to ftp-master.debian.org. diff --cc debian/README.source index 0000000,0000000..8eed2f0 new file mode 100644 --- /dev/null +++ b/debian/README.source @@@ -1,0 -1,0 +1,29 @@@ ++Patches applied to the Debian version of GCC ++-------------------------------------------- ++ ++Debian specific patches can be found in the debian/patches directory. ++Quilt is used as the patch system. See /usr/share/doc/quilt/README.source ++for details about quilt. ++ ++Patches are applied by calling `debian/rules patch'. The `series' ++file is constructed on the fly based on the files found in the to ++debian/rules.patch "debian_patches" variable, configure scripts are ++regenerated in the `patch' target. The gcc source is unpacked under ++src/ this needs to be reflected in the patch header. ++ ++Running a single dejagnu test ++----------------------------- ++ ++ - Find out the test suite containing the test, and the associated ++ target (e.g. check-gcc in /gcc, or check in /. ++ ++ - Find out the dejagnu test suite, e.g. guality.exp ++ - If you have a log of the original testsuite run, search back for the ++ .exp file before the fail. ++ - Find the directory with the test and then the .exp in the nearest ++ enclosing directory. ++ ++ - Set RUNTESTFLAGS to the testsuite name and the test name to run, e.g ++ RUNTESTFLAGS="guality.exp=pr54519-2.c" make -e check-gcc ++ The test name is just the base name, but might be the path relative ++ from gcc/testsuite for C++ tests. diff --cc debian/README.ssp index 0000000,0000000..9facca7 new file mode 100644 --- /dev/null +++ b/debian/README.ssp @@@ -1,0 -1,0 +1,28 @@@ ++Stack smashing protection is a feature of GCC that enables a program to ++detect buffer overflows and immediately terminate execution, rather than ++continuing execution with corrupt internal data structures. It uses ++"canaries" and local variable reordering to reduce the likelihood of ++stack corruption through buffer overflows. ++ ++Options that affect stack smashing protection: ++ ++-fstack-protector ++ Enables protection for functions that are vulnerable to stack ++ smashing, such as those that call alloca() or use pointers. ++ ++-fstack-protector-all ++ Enables protection for all functions. ++ ++-Wstack-protector ++ Warns about functions that will not be protected. Only active when ++ -fstack-protector has been used. ++ ++Applications built with stack smashing protection should link with the ++ssp library by using the option "-lssp" for systems with glibc-2.3.x or ++older; glibc-2.4 and newer versions provide this functionality in libc. ++ ++The Debian architectures alpha, hppa, ia64, m68k, mips, mipsel do not ++have support for stack smashing protection. ++ ++More documentation can be found at the project's website: ++http://researchweb.watson.ibm.com/trl/projects/security/ssp/ diff --cc debian/TODO index 0000000,0000000..05c8bf5 new file mode 100644 --- /dev/null +++ b/debian/TODO @@@ -1,0 -1,0 +1,58 @@@ ++(It is recommended to edit this file with emacs' todoo mode) ++Last updated: 2020-05-12 ++ ++* General ++ ++- Clean up the sprawl of debian/rules. I'm sure there are neater ++ ways to do some of it; perhaps split it up into some more files? ++ Partly done. ++ ++- Make debian/rules control build the control file without unpacking ++ the sources or applying patches. Currently, it unpacks the sources, ++ patches them, creates the control file, and a subsequent ++ dpkg-buildpackage deletes the sources, re-unpacks them, and ++ re-patches them. ++ ++ This would require hard-coding things like soversions in some ++ places. Is it worth it? ++ ++- Reorganise debian/rules.defs to decide which packages to build in a ++ more straightforward and less error-prone fashion: (1) start with ++ all languages; override the list of languages depending on the name ++ of the source package (gcc-4.3, gnat-4.3, gdc-4.3). (2) ++ filter the list of languages depending on the target platform; (3) ++ depending on the languages to build, decide on which libraries to ++ build. ++ ++ Now that we build all languages from one source package, should that ++ be changed? Building from separate packages makes building the ++ cross compilers more complicated. ++ ++o [Ludovic Brenta] Ada ++ ++- Done: Build both the zero-cost and setjump/longjump exceptions ++ versions of libgnat. In particular, gnat-glade (distributed systems) ++ works best with SJLJ. ++ This is disabled now in GCC 10. ++ ++- Add support for multilib (not yet supported upstream). ++ ++ ++* Testsuite ++ ++- Only run libgo/x32, if the kernel is prepared to execute the x32 ++ executables. ++ ++- PR target/94278: segfaults running the amdgcn target tools, based ++ on LLVM 9 and LLVM 10. https://bugs.llvm.org/show_bug.cgi?id=45887 ++ ++- Investigate regressions for test failures, seen when turning on the ++ hardening flags by default. ++ ++- Fix gm2 link errors when running the tests. ++ ++- Fix asan test errors in g++. Seen when run locally, e.g. alloca_big_alignment.c ++ ==1453818==ASan runtime does not come first in initial library list; you should either link runtime to your application or manually preload it with LD_PRELOAD. ++ ++- libstdc++ locale related test failures with recent glibc versions: ++ https://gcc.gnu.org/PR71367 diff --cc debian/ada/README.gnat index 0000000,0000000..09981e3 new file mode 100644 --- /dev/null +++ b/debian/ada/README.gnat @@@ -1,0 -1,0 +1,39 @@@ ++If you want to develop Ada programs and libraries on Debian, please ++read the Debian Policy for Ada: ++ ++http://people.debian.org/~lbrenta/debian-ada-policy.html ++ ++The default Ada compiler is and always will be the package `gnat'. ++Debian contains many programs and libraries compiled with it, which ++are all ABI-compatible. ++ ++Starting with gnat-4.2, Debian provides both zero-cost and ++setjump/longjump versions of the run-time library. The zero-cost ++exception handling mechanism is the default as it provides the best ++performance. The setjump/longjump exception handling mechanism is new ++and only provided as a static library. It is necessary to use this ++exception handling mechanism in distributed (annex E) programs. If ++you wish to use the new sjlj library: ++ ++1) call gnatmake with --RTS=sjlj ++2) call gnatbind with -static ++ ++Do NOT link your programs with libgnat-4.2.so, because it uses the ZCX ++mechanism. ++ ++ ++This package also includes small tools covering specific needs. ++ ++* When linking objects compiled from both Ada and C sources, you need ++ to use compatible versions of the Ada and C compilers. The ++ required major version is the output of ++ # gnatmake --version | sed 's/.* \([0-9]\+\).*/\1/;q') ++ Then compile C sources with gcc-MAJOR instead of gcc. ++ For GPR projects, this should be sufficient: ++ # gprconfig --batch --config=Ada --config=C,,,,MAJOR ++ ++ The same advice applies to C++, Fortran and assembly. ++ ++* When packaging Ada sources for Debian, you may want to read the ++ /usr/share/ada/debian_packaging.mk Makefile snippet from the gnat ++ package. diff --cc debian/ada/confirm_debian_bugs.py index 0000000,0000000..fe1574b new file mode 100644 --- /dev/null +++ b/debian/ada/confirm_debian_bugs.py @@@ -1,0 -1,0 +1,899 @@@ ++#!/usr/bin/python3 ++ ++# Helper when migrating bugs from a gnat version to another. ++ ++# Attempt to reproduce each known GNAT bug with version BV. ++# Reports results as control@bugs.debian.org commands. ++# Only remove temporary subdirectories when the bug is reproduced. ++ ++# python3 confirm_debian_bugs.py same BV -> found | fixed ++# python3 confirm_debian_bugs.py new BV -> reassign | retitle ++ ++# flake8 confirm_debian_bugs.py ++# pylint confirm_debian_bugs.py ++# mypy confirm_debian_bugs.py ++# rm -fr .mypy_cache/ ++ ++# pylint: disable=too-many-lines ++# pylint: disable=missing-module-docstring ++# pylint: disable=missing-function-docstring ++ ++import os.path ++import re ++import shutil ++import subprocess ++import sys ++import tempfile ++import typing ++ ++Make: typing.TypeAlias = typing.Sequence[str] ++Sources: typing.TypeAlias = typing.Iterable[tuple[str, str]] ++ ++os.environ['LC_ALL'] = 'C' ++ ++assert len(sys.argv) == 3, 'expected same|new new_version' ++assert sys.argv[1] in ("same", "new") ++SAME_GCC_BASE_VERSION = sys.argv[1] == "same" ++new_version = sys.argv[2] ++ ++for line in subprocess.check_output( ++ ("dpkg", "--status", f"gnat-{new_version}")).decode().split("\n"): ++ if line.startswith("Version: "): ++ deb_version = line[len("Version: "):] ++ break ++# Will cause an error later if deb_version is not defined. ++ ++# Each bug has its own subdirectory in WORKSPACE. ++# Every bug subdir is removed if the bug is confirmed, ++# and WORKSPACE is removed if empty. ++workspace = tempfile.mkdtemp(suffix=f"-gnat-{new_version}-bugs") ++ ++ ++def attempt_to_reproduce(bug: int, ++ make: Make, ++ sources: Sources, ++ ) -> tuple[str, int, str]: ++ tmp_dir = os.path.join(workspace, f"bug{bug}") ++ os.mkdir(tmp_dir) ++ ++ for (name, contents) in sources: ++ with open(os.path.join(tmp_dir, name), "w", encoding="UTF-8") as out_f: ++ out_f.write(contents) ++ ++ path = os.path.join(tmp_dir, "stderr.log") ++ with open(path, "w", encoding="UTF-8") as out_f: ++ status = subprocess.call(make, stderr=out_f, cwd=tmp_dir) ++ with open(path, "r", encoding="UTF-8") as in_f: ++ stderr = in_f.read() ++ return tmp_dir, status, stderr ++ ++ ++def reassign_and_remove_dir(bug: int, tmp_dir: str) -> None: ++ if SAME_GCC_BASE_VERSION: ++ print(f"found {bug} {deb_version}") ++ else: ++ print(f"reassign {bug} gnat-{new_version} {deb_version}") ++ shutil.rmtree(tmp_dir) ++ ++ ++def report(bug: int, message: str, output: str) -> None: ++ print(f"# {bug}: {message}.") ++ for report_line in output.split("\n"): ++ print(f"# {report_line}") ++ ++ ++def report_and_retitle(bug: int, message: str, output: str) -> None: ++ report(bug, message, output) ++ if SAME_GCC_BASE_VERSION: ++ print(f"fixed {bug} {deb_version}") ++ else: ++ print(f"retitle {bug} [Fixed in {new_version}] ") ++ ++ ++def check_compiles_but_should_not(bug: int, ++ make: Make, ++ sources: Sources, ++ ) -> None: ++ tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) ++ if status == 0: ++ reassign_and_remove_dir(bug, tmp_dir) ++ else: ++ report_and_retitle(bug, "now fails to compile (bug is fixed?)", stderr) ++ ++ ++def check_reports_an_error_but_should_not(bug: int, ++ make: Make, ++ sources: Sources, ++ regex: str, ++ ) -> None: ++ tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) ++ if status == 0: ++ report_and_retitle(bug, "now compiles (bug is fixed?)", stderr) ++ elif re.search(regex, stderr): ++ reassign_and_remove_dir(bug, tmp_dir) ++ else: ++ report(bug, "still fails to compile, but with a new stderr", stderr) ++ ++ ++def check_reports_error_but_forgets_one(bug: int, ++ make: Make, ++ sources: Sources, ++ regex: str, ++ ) -> None: ++ tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) ++ if status == 0: ++ report(bug, "now compiles (?)", stderr) ++ elif re.search(regex, stderr): ++ report_and_retitle(bug, "now reports the error (bug is fixed ?)", ++ stderr) ++ else: ++ reassign_and_remove_dir(bug, tmp_dir) ++ ++ ++def check_produces_a_faulty_executable(bug: int, ++ make: Make, ++ sources: Sources, ++ regex: str, ++ trigger: str, ++ ) -> None: ++ tmp_dir, status, stderr = attempt_to_reproduce(bug, make, sources) ++ if status != 0: ++ report(bug, "cannot compile the trigger anymore", stderr) ++ else: ++ output = subprocess.check_output((os.path.join(tmp_dir, trigger), ), ++ cwd=tmp_dir).decode() ++ if re.search(regex, output): ++ reassign_and_remove_dir(bug, tmp_dir) ++ else: ++ report_and_retitle(bug, ++ "output of the trigger changed (bug fixed?)", ++ output) ++ ++ ++###################################################################### ++ ++check_reports_an_error_but_should_not( ++ bug=244936, ++ make=(f"gnatmake-{new_version}", "p"), ++ regex='p[.]ads:3:25: error: ' ++ '"foo" is hidden within declaration of instance', ++ sources=( ++ ("foo.ads", """generic ++procedure foo; ++"""), ++ ("foo.adb", """procedure foo is ++begin ++ null; ++end foo; ++"""), ("p.ads", """with foo; ++package p is ++ procedure FOO is new foo; -- OK ++end p; ++"""))) ++ ++check_reports_an_error_but_should_not( ++ bug=246187, ++ make=(f"gnatmake-{new_version}", "test_43"), ++ regex="Error detected at test_43.ads:11:4", ++ sources=( ++ ("test_43.ads", """package Test_43 is ++ type T1 is private; ++ ++private ++ ++ type T2 is record ++ a: T1; ++ end record; ++ type T2_Ptr is access T2; ++ ++ type T1 is record ++ n: T2_Ptr := new T2; ++ end record; ++ ++end Test_43; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=247013, ++ make=(f"gnatmake-{new_version}", "test_53"), ++ sources=( ++ ("test_53.ads", """generic ++ type T1 is private; ++package Test_53 is ++ type T2 (x: integer) is new T1; -- ERROR: x not used ++end Test_53; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=247017, ++ make=(f"gnatmake-{new_version}", "test_59"), ++ sources=( ++ ("test_59.adb", """procedure Test_59 is ++ ++ generic ++ type T1 (<>) is private; ++ procedure p1(x: out T1); ++ ++ procedure p1 (x: out T1) is ++ b: boolean := x'constrained; --ERROR: not a discriminated type ++ begin ++ null; ++ end p1; ++ ++begin ++ null; ++end Test_59; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=247018, ++ make=(f"gnatmake-{new_version}", "test_60"), ++ sources=( ++ ("pak1.ads", """package pak1 is ++ generic ++ package pak2 is ++ end pak2; ++end pak1; ++"""), ++ ("test_60.ads", """with pak1; ++package Test_60 is ++ package PAK1 is new pak1.pak2; --ERROR: illegal reference to pak1 ++end Test_60; ++"""))) ++ ++check_compiles_but_should_not( ++ bug=247019, ++ make=(f"gnatmake-{new_version}", "test_61"), ++ sources=( ++ ("test_61.adb", """procedure Test_61 is ++ procedure p1; ++ ++ generic ++ package pak1 is ++ procedure p2 renames p1; ++ end pak1; ++ ++ package new_pak1 is new pak1; ++ procedure p1 renames new_pak1.p2; --ERROR: circular renames ++begin ++ p1; ++end Test_61; ++"""),)) ++ ++check_produces_a_faulty_executable( ++ bug=247569, ++ make=(f"gnatmake-{new_version}", "test_75"), ++ trigger="test_75", ++ regex="failed: wrong p1 called", ++ sources=( ++ ("test_75.adb", """with text_io; ++procedure Test_75 is ++ generic ++ package pak1 is ++ type T1 is null record; ++ end pak1; ++ ++ generic ++ with package A is new pak1(<>); ++ with package B is new pak1(<>); ++ package pak2 is ++ procedure p1(x: B.T1); ++ procedure p1(x: A.T1); ++ end pak2; ++ ++ package body pak2 is ++ ++ procedure p1(x: B.T1) is ++ begin ++ text_io.put_line("failed: wrong p1 called"); ++ end p1; ++ ++ procedure p1(x: A.T1) is ++ begin ++ text_io.put_line("passed"); ++ end p1; ++ ++ x: A.T1; ++ begin ++ p1(x); ++ end pak2; ++ ++ package new_pak1 is new pak1; ++ package new_pak2 is new pak2(new_pak1, new_pak1); -- (1) ++ ++begin ++ null; ++end Test_75; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=247570, ++ make=(f"gnatmake-{new_version}", "test_76"), ++ sources=( ++ ("test_76.adb", """procedure Test_76 is ++ ++ generic ++ procedure p1; ++ ++ pragma Convention (Ada, p1); ++ ++ procedure p1 is ++ begin ++ null; ++ end p1; ++ ++ procedure new_p1 is new p1; ++ pragma Convention (Ada, new_p1); --ERROR: new_p1 already frozen ++ ++begin ++ null; ++end Test_76; ++"""),)) ++ ++check_produces_a_faulty_executable( ++ bug=247571, ++ make=(f"gnatmake-{new_version}", "test_77"), ++ trigger="test_77", ++ regex="failed: wrong p1 called", ++ sources=( ++ ("pak.ads", """package pak is ++ procedure p1; ++ procedure p1(x: integer); ++ pragma export(ada, p1); ++end pak; ++"""), ++ ("pak.adb", """with text_io; use text_io; ++package body pak is ++ procedure p1 is ++ begin ++ put_line("passed"); ++ end; ++ ++ procedure p1(x: integer) is ++ begin ++ put_line("failed: wrong p1 called"); ++ end; ++end pak; ++"""), ++ ("test_77.adb", """with pak; ++procedure Test_77 is ++ procedure p1; ++ pragma import(ada, p1); ++begin ++ p1; ++end Test_77; ++"""))) ++ ++check_compiles_but_should_not( ++ bug=248166, ++ make=(f"gnatmake-{new_version}", "test_82"), ++ sources=( ++ ("test_82.adb", """procedure Test_82 is ++ package pak1 is ++ type T1 is tagged null record; ++ end pak1; ++ ++ package body pak1 is ++ -- type T1 is tagged null record; -- line 7 ++ ++ function "=" (x, y : T1'class) return boolean is -- line 9 ++ begin ++ return true; ++ end "="; ++ ++ procedure proc (x, y : T1'class) is ++ b : boolean; ++ begin ++ b := x = y; --ERROR: ambiguous "=" ++ end proc; ++ ++ end pak1; ++ ++begin ++ null; ++end Test_82; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=248168, ++ make=(f"gnatmake-{new_version}", "test_84"), ++ sources=( ++ ("test_84.adb", """procedure Test_84 is ++ package pak1 is ++ type T1 is abstract tagged null record; ++ procedure p1(x: in out T1) is abstract; ++ end pak1; ++ ++ type T2 is new pak1.T1 with null record; ++ ++ protected type T3 is ++ end T3; ++ ++ protected body T3 is ++ end T3; ++ ++ procedure p1(x: in out T2) is --ERROR: declared after body of T3 ++ begin ++ null; ++ end p1; ++ ++begin ++ null; ++end Test_84; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=248678, ++ make=(f"gnatmake-{new_version}", "test_80"), ++ sources=( ++ ("test_80.ads", """package Test_80 is ++ generic ++ type T1(<>) is private; ++ with function "=" (Left, Right : T1) return Boolean is <>; ++ package pak1 is ++ end pak1; ++ ++ package pak2 is ++ type T2 is abstract tagged null record; ++ package new_pak1 is new pak1 (T2'Class); --ERROR: no matching "=" ++ end pak2; ++end Test_80; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=248681, ++ make=(f"gnatmake-{new_version}", "test_91"), ++ sources=( ++ ("test_91.adb", """-- RM 8.5.4(5) ++-- ...the convention of the renamed subprogram shall not be ++-- Intrinsic. ++with unchecked_deallocation; ++procedure Test_91 is ++ generic -- when non generic, we get the expected error ++ package pak1 is ++ type int_ptr is access integer; ++ procedure free(x: in out int_ptr); ++ end pak1; ++ ++ package body pak1 is ++ procedure deallocate is new ++ unchecked_deallocation(integer, int_ptr); ++ procedure free(x: in out int_ptr) renames ++ deallocate; --ERROR: renaming as body can't rename intrinsic ++ end pak1; ++begin ++ null; ++end Test_91; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=248682, ++ make=(f"gnatmake-{new_version}", "main"), ++ sources=( ++ ("main.adb", """-- RM 6.3.1(9) ++-- The default calling convention is Intrinsic for ... an attribute ++-- that is a subprogram; ++ ++-- RM 8.5.4(5) ++-- ...the convention of the renamed subprogram shall not be ++-- Intrinsic. ++procedure main is ++ package pak1 is ++ function f1(x: integer'base) return integer'base; ++ end pak1; ++ ++ package body pak1 is ++ function f1(x: integer'base) return integer'base renames ++ integer'succ; --ERROR: renaming as body can't rename intrinsic ++ end pak1; ++begin ++ null; ++end; ++"""),)) ++ ++check_reports_an_error_but_should_not( ++ bug=253737, ++ make=(f"gnatmake-{new_version}", "test_4"), ++ regex='test_4[.]ads:3:01: error: "pak2" not declared in "pak1"', ++ sources=( ++ ("parent.ads", """generic ++package parent is ++end parent; ++"""), ++ ("parent-pak2.ads", """generic ++package parent.pak2 is ++end parent.pak2; ++"""), ++ ("parent-pak2-pak3.ads", """generic ++package parent.pak2.pak3 is ++end parent.pak2.pak3; ++"""), ++ ("parent-pak2-pak4.ads", """with parent.pak2.pak3; ++generic ++package parent.pak2.pak4 is ++ package pak3 is new parent.pak2.pak3; ++end parent.pak2.pak4; ++"""), ++ ("pak1.ads", """with parent; ++package pak1 is new parent; ++"""), ++ ("pak6.ads", """with parent.pak2; ++with pak1; ++package pak6 is new pak1.pak2; ++"""), ++ ("test_4.ads", """with parent.pak2.pak4; ++with pak6; ++package Test_4 is new pak6.pak4; ++"""))) ++ ++check_compiles_but_should_not( ++ bug=269948, ++ make=(f"gnatmake-{new_version}", "test_119"), ++ sources=( ++ ("test_119.ads", """ ++-- RM 3.9.3/11 A generic actual subprogram shall not be an abstract ++-- subprogram. works OK if unrelated line (A) is commented out. ++package Test_119 is ++ generic ++ with function "=" (X, Y : integer) return Boolean is <>; ++ -- Removing this allows GCC to detect the problem. ++ package pak1 is ++ function "=" (X, Y: float) return Boolean is abstract; ++ generic ++ with function Equal (X, Y : float) return Boolean is "="; --ERROR: ++ package pak2 is ++ end pak2; ++ end pak1; ++ ++ package new_pak1 is new pak1; ++ package new_pak2 is new new_pak1.pak2; ++end Test_119; ++"""),)) ++ ++check_compiles_but_should_not( ++ bug=269951, ++ make=(f"gnatmake-{new_version}", "test_118"), ++ sources=( ++ ("pak1.ads", """generic ++package pak1 is ++end pak1; ++"""), ++ ("pak1-foo.ads", """generic ++package pak1.foo is ++end pak1.foo; ++"""), ++ ("test_118.ads", """with pak1.foo; ++package Test_118 is ++ package pak3 is ++ foo: integer; ++ end pak3; ++ use pak3; ++ ++ package new_pak1 is new pak1; ++ use new_pak1; ++ ++ x: integer := foo; -- ERROR: foo hidden by use clauses ++end Test_118; ++"""),)) ++ ++# As long as 24:14 is detected, it inhibits detection of 25:21. ++check_reports_error_but_forgets_one( ++ bug=276224, ++ make=(f"gnatmake-{new_version}", "test_121"), ++ regex="test_121[.]adb:25:21: dynamically tagged expression not allowed", ++ sources=( ++ ("test_121.adb", ++ """-- If the expected type for an expression or name is some specific ++-- tagged type, then the expression or name shall not be dynamically ++-- tagged unless it is a controlling operand in a call on a ++-- dispatching operation. ++procedure Test_121 is ++ package pak1 is ++ type T1 is tagged null record; ++ function f1 (x1: T1) return T1; ++ end pak1; ++ ++ package body pak1 is ++ function f1 (x1: T1) return T1 is ++ begin ++ return x1; ++ end; ++ end pak1; ++ use pak1; ++ ++ type T2 is record ++ a1: T1; ++ end record; ++ ++ z0: T1'class := T1'(null record); ++ z1: T1 := f1(z0); -- ERROR: gnat correctly rejects ++ z2: T2 := (a1 => f1(z0)); -- ERROR: gnat mistakenly allows ++begin ++ null; ++end Test_121; ++"""),)) ++ ++check_reports_an_error_but_should_not( ++ bug=276227, ++ make=(f"gnatmake-{new_version}", "test_124"), ++ regex='test_124[.]ads:6:35: error: ' ++ 'size for "T_arr_constrained" too small, minimum allowed is 256', ++ sources=( ++ ("test_124.ads", """package Test_124 is ++ type T is range 1 .. 32; ++ type T_arr_unconstrained is array (T range <>) of boolean; ++ type T_arr_constrained is new T_arr_unconstrained (T); ++ pragma pack (T_arr_unconstrained); ++ for T_arr_constrained'size use 32; ++end Test_124; ++"""),)) ++ ++check_reports_an_error_but_should_not( ++ bug=278687, ++ make=(f"gnatmake-{new_version}", "test_127"), ++ regex='test_127[.]adb:10:21: error: expected type "T2" defined at line 4', ++ sources=( ++ ("test_127.ads", ++ """-- The second parameter of T2'Class'Read is of type T2'Class, ++-- which should match an object of type T3, which is derived ++-- from T2. ++package test_127 is ++ pragma elaborate_body; ++end test_127; ++"""), ++ ("test_127.adb", """with ada.streams; ++package body test_127 is ++ type T1 is access all ada.streams.root_stream_type'class; ++ type T2 is tagged null record; ++ type T3 is new T2 with null record; ++ ++ x: T1; ++ y: T3; ++begin ++ T2'class'read(x, y); ++end test_127; ++"""))) ++ ++check_compiles_but_should_not( ++ bug=278831, ++ make=(f"gnatmake-{new_version}", "test_128"), ++ sources=( ++ ("test_128.ads", """package Test_128 is ++ package inner is ++ private ++ type T1; ++ end inner; ++ type T1_ptr is access inner.T1; -- line 9 ERROR: gnat mistakenly accepts ++end Test_128; ++"""), ++ ("test_128.adb", """package body test_128 is ++ package body inner is ++ type T1 is new Integer; ++ end inner; ++end Test_128; ++"""))) ++ ++# Note that we also check the absence of the next inhibited message. ++check_reports_an_error_but_should_not( ++ bug=279893, ++ make=(f"gnatmake-{new_version}", "test_129"), ++ regex='test_129[.]ads:13:49: error: ' ++ 'designated type of actual does not match that of formal "T2"', ++ sources=( ++ ("pak1.ads", ++ """-- legal instantiation rejected; illegal instantiation accepted ++-- adapted from John Woodruff c.l.a. post ++ ++generic ++ type T1 is private; ++package pak1 is ++ subtype T3 is T1; ++end pak1; ++"""), ++ ("pak2.ads", """with pak1; ++generic ++ type T2 is private; ++package pak2 is ++ package the_pak1 is new pak1 (T1 => T2); ++end pak2; ++"""), ++ ("pak2-pak3.ads", """generic ++ type T2 is access the_pak1.T3; ++package pak2.pak3 is ++end pak2.pak3; ++"""), ++ ("test_129.ads", """with pak1; ++with pak2.pak3; ++package Test_129 is ++ ++ type T4 is null record; ++ type T5 is null record; ++ subtype T3 is T5; -- line 9: triggers the bug at line 16 ++ ++ type T4_ptr is access T4; ++ type T5_ptr is access T5; ++ ++ package new_pak2 is new pak2 (T2 => T4); ++ package new_pak3a is new new_pak2.pak3(T2 => T4_ptr); -- line 15: Legal ++ package new_pak3b is new new_pak2.pak3(T2 => T5_ptr); -- line 16: Illegal ++end Test_129; ++"""))) ++ ++print("# Please ignore the gnatlink message.") ++check_reports_an_error_but_should_not( ++ bug=280939, ++ make=(f"gnatmake-{new_version}", "test_130"), ++ regex="test_130[.]adb:.*: undefined reference to [`]p2\'", ++ sources=( ++ ("pak1.ads", ++ """-- RM 10.1.5(4) "the pragma shall have an argument that is a name ++-- denoting that declaration." ++-- RM 8.1(16) "The children of a parent library unit are inside the ++-- parent's declarative region." ++ ++package pak1 is ++ pragma Pure; ++end pak1; ++"""), ++ ("pak1-p2.ads", """procedure pak1.p2; ++pragma Pure (p2); -- ERROR: need expanded name ++pragma Import (ada, p2); -- ERROR: need expanded name ++pragma Inline (p2); -- ERROR: need expanded name ++"""), ++ ("test_130.adb", """with Pak1.P2; ++procedure Test_130 is ++begin ++ Pak1.P2; ++end Test_130; ++"""))) ++ ++check_compiles_but_should_not( ++ bug=283833, ++ make=(f"gnatmake-{new_version}", "test_132"), ++ sources=( ++ ("pak1.ads", ++ """-- RM 8.5.4(5) the convention of the renamed subprogram shall not ++-- be Intrinsic, if the renaming-as-body completes that declaration ++-- after the subprogram it declares is frozen. ++ ++-- RM 13.14(3) the end of the declaration of a library package ++-- causes freezing of each entity declared within it. ++ ++-- RM 6.3.1(7) the default calling convention is Intrinsic for ++-- any other implicitly declared subprogram unless it is a ++-- dispatching operation of a tagged type. ++ ++package pak1 is ++ type T1 is null record; ++ procedure p1 (x1: T1); ++ type T2 is new T1; ++end pak1; ++"""), ++ ("pak1.adb", """package body Pak1 is ++ procedure P1 (X1 : T1) is begin null; end P1; ++end Pak1; ++"""), ++ ("test_132.ads", """with pak1; ++package Test_132 is ++ procedure p2 (x2: pak1.T2); ++end Test_132; ++"""), ++ ("test_132.adb", """package body Test_132 is ++ procedure p2 (x2: pak1.T2) renames pak1.p1; --ERROR: can't rename intrinsic ++end Test_132; ++"""))) ++ ++check_compiles_but_should_not( ++ bug=283835, ++ make=(f"gnatmake-{new_version}", "test_133"), ++ sources=( ++ ("test_133.ads", """package Test_133 is ++ package pak1 is ++ type T1 is null record; ++ end pak1; ++ ++ package pak2 is ++ subtype boolean is standard.boolean; ++ function "=" (x, y: pak1.T1) return boolean; ++ end pak2; ++ ++ use pak1, pak2; ++ ++ x1: pak1.T1; ++ b1: boolean := x1 /= x1; -- ERROR: ambigous (gnat misses) ++ -- b2: boolean := x1 = x1; -- ERROR: ambigous ++end Test_133; ++"""), ++ ("test_133.adb", """package body test_133 is ++ package body pak2 is ++ function "=" (x, y: pak1.T1) return boolean is ++ begin ++ return true; ++ end "="; ++ end pak2; ++end test_133; ++"""))) ++ ++check_compiles_but_should_not( ++ bug=416979, ++ make=(f"gnatmake-{new_version}", "pak1"), ++ sources=( ++ ("pak1.ads", """package pak1 is ++ -- RM 7.3(13), 4.9.1(1) ++ -- check that discriminants statically match ++ type T1(x1: integer) is tagged null record; ++ x2: integer := 2; ++ x3: constant integer := x2; ++ type T2 is new T1 (x2) with private; ++ type T3 is new T1 (x3) with private; ++private ++ type T2 is new T1 (x2) with null record; --ERROR: nonstatic discriminant ++ type T3 is new T1 (x3) with null record; --ERROR: nonstatic discriminant ++end pak1; ++"""),)) ++ ++check_reports_an_error_but_should_not( ++ bug=660698, ++ make=(f"gnatmake-{new_version}", "proc.adb"), ++ regex='proc[.]adb:17:28: error: ' ++ 'there is no applicable operator "And" for type "Standard[.]Integer"', ++ sources=( ++ ("proc.adb", """procedure Proc is ++ package P1 is ++ type T is new Integer; ++ function "and" (L, R : in Integer) return T; ++ end P1; ++ package body P1 is ++ function "and" (L, R : in Integer) return T is ++ pragma Unreferenced (L, R); ++ begin ++ return 0; ++ end "and"; ++ end P1; ++ use type P1.T; ++ package P2 is ++ use P1; ++ end P2; ++ G : P1.T := Integer'(1) and Integer'(2); ++begin ++ null; ++end Proc; ++"""), )) ++ ++check_produces_a_faulty_executable( ++ bug=864969, ++ make=(f"gnatmake-{new_version}", "main"), ++ trigger="main", ++ regex="ZZund", ++ sources=( ++ ("main.adb", """with Ada.Locales, Ada.Text_IO; ++procedure Main is ++begin ++ Ada.Text_IO.Put_Line (String (Ada.Locales.Country) ++ & String (Ada.Locales.Language)); ++end Main; ++"""),)) ++ ++check_produces_a_faulty_executable( ++ bug=894225, ++ make=(f"gnatmake-{new_version}", "main"), ++ trigger="main", ++ sources=( ++ ("main.adb", ++ """with Ada.Directories, Ada.Text_IO; ++procedure Main is ++begin ++ Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("/a/b/")); ++ Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("a/b/")); ++ Ada.Text_IO.Put_Line (Ada.Directories.Containing_Directory ("b/")); ++end Main; ++"""), ++ ), ++ regex="""^/a/b ++a/b ++b$""") ++ ++try: ++ os.rmdir(workspace) ++except OSError: ++ print(f"Some unconfirmed, not removing directory {workspace}.") diff --cc debian/ada/libgnat_alihash index 0000000,0000000..34d4481 new file mode 100755 --- /dev/null +++ b/debian/ada/libgnat_alihash @@@ -1,0 -1,0 +1,39 @@@ ++#!/usr/bin/perl ++ ++# Helper for debian/rules2. ++ ++# Exit silently during builds without Ada. ++ ++# If the gnat RTS directory contains .ali (Ada Library Information) files, ++# output a dpkg-gencontrol command line argument setting the ++# libgnat:Provides substitution variable ++# to the XOR of the checksums in all such files, ++# as 8 lowercase hexadecimal digits. ++ ++# See https://people.debian.org/~lbrenta/debian-ada-policy.html. ++ ++# Should be in sync with dh_ada_library in the dh-ada-library package. ++ ++# perl -c $script ++# perltidy $script -st | diff -u $script - ++# perlcritic -1 --verbose=11 --exclude=Modules::RequireVersionVar $script ++ ++use autodie; ++use re '/amsx'; ++use strict; ++use warnings; ++ ++my @ali_files = glob 'build/gcc/ada/rts/*.ali'; ++if (@ali_files) { ++ my $result = 0; ++ for my $path (@ali_files) { ++ open my $fh, q{<}, $path; ++ while (<$fh>) { ++ if (m/ ^ D [ ] [^\t]+ \t+ \d{14} [ ] ( [[:xdigit:]]{8} ) /) { ++ $result ^= hex $1; ++ } ++ } ++ close $fh; ++ } ++ printf '-Vlibgnat:alihash=%08x', $result; ++} diff --cc debian/ada/test_ada_source_date_epoch.sh index 0000000,0000000..5154341 new file mode 100644 --- /dev/null +++ b/debian/ada/test_ada_source_date_epoch.sh @@@ -1,0 -1,0 +1,97 @@@ ++#!/bin/sh ++# Basic checks for debian/patches/ada-lib-info-source-date-epoch.diff. ++ ++# Copyright (C) 2020 Nicolas Boulenguez ++ ++# Usage: ++# build GCC ++# sh debian/ada/test_ada_source_date_epoch.sh ++# rm -fr build/test_ada_source_data_epoch ++ ++set -C -e -u -x ++ ++# Inside the GCC tree: ++mkdir build/test_ada_source_data_epoch ++cd build/test_ada_source_data_epoch ++export LD_LIBRARY_PATH=../gcc/ada/rts:`echo ../*/libgnat_util/.libs` ++gnatmake="../gcc/gnatmake --RTS=`echo ../*/libada` --GCC=../gcc/xgcc -c -v" ++# For local tests: ++# gnatmake="gnatmake -c -v" ++ ++cat > lib.ads < main.adb < Sat, 13 Jun 2026 11:21:26 +0200 ++ ++gcc-15 (15.2.0-17) unstable; urgency=medium ++ ++ * Update to git 20260423 from the gcc-15 branch. ++ - Fix PR target/69639 (MingW), PR tree-optimization/123002, ++ PR target/124876 (x86), PR tree-optimization/124802, ++ PR tree-optimization/124677, PR debug/124644, PR tree-optimization/124555, ++ PR tree-optimization/120987, PR target/124670 (bpf), ++ PR target/123271 (ARM), PR target/124710 (x86), PR target/105192 (MIPS), ++ PR target/124613 (RISCV), PR target/123017 (AArch64), ++ PR target/124674 (AArch64), PR tree-optimization/124627, PR ada/124836, ++ PR ada/124607, PR ada/124606, PR c/124635, PR c/122572, PR c++/120338, ++ PR c++/121643, PR c++/123975, PR c++/121961, PR c++/117133, PR c++/124768, ++ PR c++/124773, PR c++/123700, PR c++/123529, PR c++/98930, PR c++/118630, ++ PR c++/124735, PR c++/124781, PR c++/124785, PR c++/124477, PR c++/123665, ++ PR c++/123408, PR c++/122621, PR d/123411, PR fortran/100155, ++ PR fortran/102619, PR fortran/95879, PR fortran/95879, PR fortran/66973, ++ PR fortran/124652, PR fortran/117303, PR fortran/120723, ++ PR fortran/124751, PR fortran/100194, PR fortran/124567, ++ PR fortran/121342, PR fortran/120713, PR fortran/124631, ++ PR fortran/95338, PR fortran/102459, PR fortran/82721, PR fortran/84245, ++ PR fortran/119273, PR fortran/105168, PR libstdc++/124463. ++ * Update the ada-armel-libatomic patch for PR ada/107475. ++ * Build gcc itself with branch-protection (Emanuele Rocca). Closes: #1130592. ++ - On arm64 by appending CFLAGS_SECURE to BOOT_CFLAGS. ++ - Set BOOT_CFLAGS explicitly instead of relying on upstream defaults. ++ * Bump standards version. ++ ++ -- Matthias Klose Thu, 23 Apr 2026 12:06:05 +0200 ++ ++gcc-15 (15.2.0-16) unstable; urgency=medium ++ ++ * Update to git 20260321 from the gcc-15 branch. ++ - Fix PR target/124461 (x86), PR target/123457 (AArch64), ++ PR target/124126 (AArch64), PR target/123285 (AArch64), ++ PR target/124409 (RISCV), PR tree-optimization/119568, ++ PR tree-optimization/121103, PR rtl-optimization/122170, ++ PR rtl-optimization/123294, PR tree-optimization/123645, ++ PR target/124147 (RISCV), PR target/122448 (RISCV), ++ PR target/112400 (VAX), PR tree-optimization/124135, ++ PR tree-optimization/124358, PR target/124349 (x86), ++ PR target/124367 (x86), PR target/124366 (x86), ++ PR target/124341 (x86), PR target/124349 (x86), ++ PR target/124315 (x86), PR target/124335 (x86), ++ PR target/124294 (x86), PR target/124138 (x86), PR middle-end/124056, ++ PR rtl-optimization/116600, PR middle-end/123386, PR c/101312, ++ PR tree-optimization/123672, PR middle-end/123978, PR c++/123818, ++ PR middle-end/122689, PR tree-optimization/121104, ++ PR tree-optimization/123864, PR c++/123790, PR middle-end/123876, ++ PR ada/107475, PR c/105555, PR c/123365, PR c++/124309, ++ PR c++/124311, PR c++/124431, PR c++/120685, PR c++/123889, ++ PR c++/123578, PR c++/123737, PR c++/123667, PR c++/123684, ++ PR fortran/124450, PR fortran/121743, PR preprocessor/105412, ++ PR preprocessor/123273, PR target/124365 (AArch64), ++ PR libstdc++/124015, PR libstdc++/121771, PR rtl-optimization/121649, ++ PR middle-end/123573, PR middle-end/123175, PR tree-optimization/124132, ++ PR tree-optimization/124130, PR tree-optimization/123596, ++ PR tree-optimization/123298, PR tree-optimization/123061, ++ PR tree-optimization/123636, PR tree-optimization/122537, ++ PR tree-optimization/121726, PR ipa/123416, PR tree-optimization/116747, ++ PR ipa/111036, PR c++/124489, PR c++/120039, PR c++/122559, ++ PR fortran/122046, PR fortran/124161, PR fortran/120286, ++ PR fortran/102596, PR fortran/106946, PR fortran/124482, ++ PR libstdc++/124568, PR libstdc++/124124, PR libstdc++/105580. ++ * For backports, require binutils (>= 2.40) on riscv64. ++ * Fix PR ada/107475 also for armhf and s390x. ++ ++ -- Matthias Klose Sun, 22 Mar 2026 10:52:07 +0100 ++ ++gcc-15 (15.2.0-15) unstable; urgency=medium ++ ++ * Update to git 20260307 from the gcc-15 branch. ++ - Fix PR ada/124226, PR ada/124224, PR target/123807 (loongarch). ++ PR middle-end/124250, PR ipa/122856, PR target/122097 (loongarch), ++ PR ada/124285, PR ada/123306, PR c++/123845, PR lto/121588, ++ PR libstdc++/124363, PR libstdc++/114865, PR libstdc++/123875. ++ * Fix backport builds for Ubuntu 24.04. ++ * Fix PR demangler/106641, taken from the trunk. ++ * libsanitizer/TSan: Fix determining static TLS blocks. Addresses: #1126312. ++ * Stop building packages now built by GCC 16. ++ ++ -- Matthias Klose Sat, 07 Mar 2026 12:32:03 +0100 ++ ++gcc-15 (15.2.0-14) unstable; urgency=medium ++ ++ * Update to git 20260223 from the gcc-15 branch. ++ - Fix PR c++/120974, PR target/121571, PR target/124134 (ARM), ++ PR target/123206 (AArch64), PR tree-optimization/117217, ++ PR ipa/106260, PR target/123910 (RISCV), PR middle-end/123447, ++ PR target/123624 (AArch64), PR rtl-optimization/116479, ++ PR tree-optimization/123940, PR target/123870 (RISCV), ++ PR target/123969 (RISCV), PR target/123971 (RISCV), ++ PR target/123806 (RISCV), PR rtl-optimization/121787, ++ PR target/122869 (RISCV), PR pch/14940, PR target/122781 (S390), ++ PR ada/124106, PR ada/124054, PR ada/124025, PR c++/123989, ++ PR c++/121822, PR c++/122318, PR c++/101670, PR d/124026, ++ PR fortran/123961, PR c++/124153, PR c++/119756, PR libstdc++/122821, ++ PR libstdc++/123991, PR libstdc++/124024. ++ * Fix build when building without common libraries. ++ * Re-enable profiled build on armhf to check for PR target/119937. ++ * Re-enable lto build on loong64. Closes: #1127462. ++ * Bump standards version. ++ ++ -- Matthias Klose Mon, 23 Feb 2026 10:34:32 +0100 ++ ++gcc-15 (15.2.0-13) unstable; urgency=medium ++ ++ * Update to git 20260207 from the gcc-15 branch. ++ - Fix PR tree-optimization/123513, PR target/123607 (x86), PR target/120250, ++ PR rtl-optimization/123523, PR tree-optimization/123431, ++ PR target/123489 (x86), PR middle-end/111817, PR rtl-optimization/119291, ++ PR rtl-optimization/121773, PR tree-optimization/123351, ++ PR tree-optimization/123372, PR target/123217 (x86), ++ PR target/123155 (x86), PR target/123460, PR rtl-optimization/123121, ++ PR middle-end/123392, PR target/123521 (loongarch), PR diagnostics/120063, ++ PR tree-optimization/123300, PR target/123484 (x86), ++ PR tree-optimization/123040, PR target/121192, PR target/121485 (RISCV), ++ PR tree-optimization/122868, PR debug/121964, PR ada/68179, PR ada/123589, ++ PR ada/123371, PR ada/123306, PR ada/123088, PR ada/123302, PR ada/123289, ++ PR ada/123185, PR ada/123060, PR analyzer/123085, PR analyzer/122975, ++ PR c/123156, PR c++/123331, PR c++/91388, PR c++/122772, PR c++/122834, ++ PR c++/121966, PR c++/116952, PR c++/122048, PR c++/121854, PR c++/122922, ++ PR libfortran/122936, PR libstdc++/122907, PR libstdc++/122812, ++ PR target/123092, PR target/117575 (loongarch), PR c++/122550, ++ PR c++/122070, PR target/123766 (loongarch), PR target/123807 (loongarch), ++ PR middle-end/123703, PR tree-optimization/123736, PR middle-end/123107, ++ PR tree-optimization/123741, PR tree-optimization/123602, ++ PR tree-optimization/122793, PR target/119130 (PPC), ++ PR target/123742 (ARM), PR ada/123902, PR ada/121316, PR ada/123867, ++ PR ada/123861, PR ada/123857, PR ada/123832, PR ada/123580, ++ PR c++/123676, PR c++/122494, PR c++/123814, PR c++/123597, ++ PR d/123264, PR d/123407, PR d/123046, PR d/123349, PR d/123419, ++ PR d/123798, PR d/121477, PR d/123422, PR d/120096, PR d/122817, ++ PR libstdc++/123147, PR target/123584 (AArch64), PR target/123779 (x86), ++ PR target/122051 (RISCV), PR target/120642 (RISCV), ++ PR target/123548 (AArch64), PR debug/123886, PR tree-optimization/123794, ++ PR middle-end/123775, PR tree-optimization/123729, PR middle-end/123575, ++ PR tree-optimization/123537, PR ipa/116296, PR tree-optimization/110043, ++ PR tree-optimization/109410, PR rtl-optimization/106859, ++ PR middle-end/123887, PR middle-end/123887, PR c++/122169, PR d/123633, ++ PR libstdc++/90192, PR libstdc++/114153. ++ * Don't complain about missing gccrs and gcobc man pages. ++ * Stop building multilibs for s390x. Closes: #1125358. ++ * Add again build dependency on python3-check-jsonschema, needed for tests. ++ * Fix D #22463: SOURCE_DATE_EPOCH parsing incorrectly affected by system ++ timezone. Closes: #1126512. ++ ++ -- Matthias Klose Sat, 07 Feb 2026 15:26:50 +0100 ++ ++gcc-15 (15.2.0-12) unstable; urgency=medium ++ ++ * Update to git 20251217 from the gcc-15 branch. ++ - Fix PR target/123022 (RISCV), PR target/122652 (RISCV), ++ PR target/122656 (RISCV), PR ada/123138, PR ada/123060, PR ada/123096, ++ PR ada/123088, PR c/123018, PR c++/122752, PR c++/122668, PR c++/114764, ++ PR fortran/107406, PR fortran/122977, PR libstdc++/122907, ++ PR libstdc++/122812. ++ - libstdc++: Update tzdata to 2025c. ++ * Log the available disk space for the build. ++ * Build liblsan and libtsan on s390x. ++ * Update sanitizer symbols files. ++ * Disable the LTO build on loong64 (requested by Adrian Glaubitz). ++ * Enable PAC/BTI/GCS on arm64 for libgfortran (Emanuele Rocca). ++ Closes: #1123084. ++ ++ -- Matthias Klose Wed, 17 Dec 2025 17:52:48 +0100 ++ ++gcc-15 (15.2.0-11) unstable; urgency=medium ++ ++ * Update to git 20251209 from the gcc-15 branch. ++ - Fix PR target/122991 (AArch64), PR tree-optimization/122943, ++ PR middle-end/120052, PR middle-end/120564, PR ada/123037, PR ada/115305, ++ PR middle-end/122624, PR c/121506, PR c++/121445, PR c++/120876, ++ PR lto/122515. ++ * Fix Algol-68 build on sparc64, patch taken from the trunk. ++ * Don't rely on python3-check-jsonschema for testing, still having ++ unpackaged dependencies. ++ * Add architectureVariant to ELF_PACKAGE_METADATA. ++ ++ -- Matthias Klose Tue, 09 Dec 2025 21:10:53 +0100 ++ ++gcc-15 (15.2.0-10) unstable; urgency=medium ++ ++ * Update to git 20251202 from the gcc-15 branch. ++ - Fix PR target/122858 (ARM), PR target/110796 (ARM), ++ PR target/118446 (ARM), PR target/122867 (ARM), PR target/122692 (RISCV), ++ PR c++/122658, PR c++/121325, PR c++/122789, PR libstdc++/122921, ++ PR libstdc++/122842. ++ * Update algol68 to the gcc-15 branch 20251030. ++ * Fix some lintian warnings, override some more. ++ * Manage the libasan and libcc1 symbols files with the symbols helper. ++ ++ -- Matthias Klose Tue, 02 Dec 2025 14:07:24 +0100 ++ ++gcc-15 (15.2.0-9) unstable; urgency=medium ++ ++ * Update to git 20251122 from the gcc-15 branch. ++ - Fix PR tree-optimization/122225, PR target/122695 (loongarch), ++ PR target/122539 (ARM), PR lto/122515, PR target/121853 (AArch64), ++ PR tree-optimization/121776, PR middle-end/121581, ++ PR rtl-optimization/122627, PR target/119275 (RISCV), ++ PR target/122216 (ARM), PR target/122175 (ARM), PR target/122189 (ARM), ++ PR target/122446 (x86), PR lto/122620, PR target/122097 (loongarch), ++ PR ada/111433, PR ada/122640, PR c++/120529, PR c++/119580, ++ PR c++/122677, PR c++/122625, PR fortran/122709, PR libstdc++/122743, ++ PR libstdc++/122726, PR libstdc++/122661. ++ * Build using amdgcn-tools-21 instead of -19. ++ * Update VCS attributes. ++ * Add libgcobol symbols file. ++ ++ -- Matthias Klose Sat, 22 Nov 2025 13:14:34 +0100 ++ ++gcc-15 (15.2.0-8) unstable; urgency=medium ++ ++ * Update to git 20251111 from the gcc-15 branch. ++ - Fix PR tree-optimization/122012, PR target/99930 (x86), ++ PR target/122323 (x86), PR ada/118782 (closes: #749574), PR ada/81087, ++ PR c++/122302, PR target/118460 (ARM), PR target/122516 (AVR), ++ PR rtl-optimization/122321, PR target/122270 (RISCV, LP: #2126058), ++ PR target/122527 (AVR), PR tree-optimization/118012, ++ PR tree-optimization/122505, PR tree-optimization/122408, ++ PR tree-optimization/122394, PR target/120674 (RISCV), ++ PR target/121604 (AArch64), PR target/119079 (x86), PR ada/118208, ++ PR c++/122253, PR c++/122421, PR c++/122381, PR c++/122192, ++ PR c++/122310, PR fortran/114023, PR fortran/122386, ++ PR fortran/122206, PR fortran/107968. ++ * Bootstrap using GCC 15. ++ * Disable sframe generation for Ubuntu 26.04 LTS. ++ * Ignore some bootstrap comparison failures on sh4. Closes: #1119146. ++ ++ -- Matthias Klose Tue, 11 Nov 2025 03:02:32 +0100 ++ ++gcc-15 (15.2.0-7) unstable; urgency=medium ++ ++ * Also exclude python3-check-jsonschema build dependency for x32. ++ ++ -- Matthias Klose Wed, 22 Oct 2025 11:45:23 +0200 ++ ++gcc-15 (15.2.0-6) unstable; urgency=medium ++ ++ * Update to git 20251022 from the gcc-15 branch. ++ - Fix PR target/122223 (ARM), PR target/121599 (AArch64), PR go/104290, ++ PR target/122119 (x86), PR middle-end/122133, PR tree-optimization/122104, ++ PR tree-optimization/122213, PR target/121845 (RISCV), PR ada/107536, ++ PR c/122188, PR c++/120757, PR libstdc++/122322, PR libstdc++/122062. ++ * Limit python3-check-jsonschema dependency to architectures which ++ have rustc available. Closes: #1118541. ++ ++ -- Matthias Klose Wed, 22 Oct 2025 09:06:13 +0200 ++ ++gcc-15 (15.2.0-5) unstable; urgency=medium ++ ++ * Update to git 20251009 from the gcc-15 branch. ++ - Fix PR target/121602 (AArch64), PR target/121464 (ARM), ++ PR target/121749 (AArch64), PR target/121906 (loongarch), ++ PR rtl-optimization/121757, PR c++/121801, PR c++/121795, PR c++/97740, ++ PR libstdc++/117276, PR target/121742 (RISCV), PR target/121780 (RISCV), ++ PR target/121781 (RISCV), PR target/110812 (RISCV), ++ PR target/121875 (loongarch), PR tree-optimization/121772, ++ PR middle-end/121922, PR c++/121977, PR middle-end/121828, ++ PR middle-end/121831, PR middle-end/121453, PR tree-optimization/122016, ++ PR tree-optimization/121870, PR tree-optimization/107997, ++ PR tree-optimization/121844, PR tree-optimization/121659, ++ PR tree-optimization/121527, PR tree-optimization/121370, ++ PR target/118280 (microblaze), PR ada/118343, PR ada/117517, ++ PR ada/121968, PR c++/122015, PR c++/122019, PR c++/121981, ++ PR c++/121524, PR c++/122019, PR c++/122015, PR fortran/121616, ++ PR fortran/121939, PR fortran/108581, PR fortran/89092, ++ PR libstdc++/121827, PR target/121652 (RISCV), PR target/122187 (AVR). ++ * Add build dependency on python3-check-jsonschema, needed for some tests. ++ * For Ubuntu 26.04 LTS s390x, bump the baseline to z15. ++ * Re-enable running the testsuite. ++ * Strip again the executables. ++ ++ -- Matthias Klose Thu, 09 Oct 2025 10:16:43 +0200 ++ ++gcc-15 (15.2.0-4) unstable; urgency=medium ++ ++ * Update to git 20250911 from the gcc-15 branch. ++ - Fix PR target/121794 (AVR), PR c++/121724, PR libstdc++/110853, ++ PR libstdc++/121745, PR target/121794 (AVR), PR libstdc++/120698, ++ PR target/121510 (RISCV) LP: #2121522, PR target/81540 (AVR), ++ PR target/49857 (AVR), PR fortran/121263. ++ - Includes libgphobos build fixes for ppc64el and sparc64. ++ * Disable sframe generation for now, until sframe-v3 (binutils 2.46) is ++ released. Closes: #1114556. ++ * Build gnat again on m68k. ++ * Build libgphobos on sparc64. ++ * Fix libgphobos scanf decl for ppc64el. ++ * Update libgfortran, libga68 and libgphobos symbols files. ++ * Disable LTO builds for Debian/riscv64, builders are very slow. ++ * Update the gcc-search-prefixed-as-ld patch to find the correct as. ++ Still needs an update for collect2.cc. Addresses: #1113854. ++ * libstdc++-dev: Fix dependency on libc, when libstdc++ is not built. ++ ++ -- Matthias Klose Thu, 11 Sep 2025 06:56:06 +0200 ++ ++gcc-15 (15.2.0-3) unstable; urgency=medium ++ ++ * Update to git 20250903 from the gcc-15 branch. ++ - Fix PR bootstrap/118009, PR bootstrap/119089, PR target/121548 (RISCV), ++ PR libstdc++/121374, PR libstdc++/121496, PR libstdc++/121097, ++ PR libstdc++/120390. ++ * Add two patches for newlib amdgcn: ++ - amdgcn, libm: Fix infinite loop. ++ - amdgcn, libm: Fix vector ilogb bugs (bug 33272). ++ * ga68, gcobol: Depend on libc-dev. ++ * Build full libgphobos on ppc64el for IEEE long double. ++ ++ -- Matthias Klose Thu, 04 Sep 2025 01:35:42 +0200 ++ ++gcc-15 (15.2.0-2) unstable; urgency=medium ++ ++ * Update to git 20250828 from the gcc-15 branch. ++ - Fix PR rtl-optimization/120983, PR target/121634 (loongach), ++ PR target/121608 (AVR), PR target/121534 (RISCV), ++ PR target/121118 (AArch64), PR rtl-optimization/121253, ++ PR target/120986 (AArch64), PR target/120986 (AArch64), ++ PR target/121449 (AArch64), PR target/121542 (loongarch), ++ PR target/121414 (AArch64), PR target/121294 (AArch64), ++ PR rtl-optimization/120718, PR target/121007, PR target/119830 (RISCV), ++ PR target/121208 (x86), PR target/120476 (loongarch), PR c++/120499, ++ PR c++/121351, PR libgcc/117600, PR libfortran/121234, ++ PR libstdc++/121313, PR libstdc++/119861. ++ * Configure for the build variant on Ubuntu. ++ * Enable sframe generation with binutils 2.45 on amd64 and arm64 (pass ++ -Wa,--gsframe=no to disable). Enabled unless one of the options -m16, ++ -m32, -mx32 or -ffreestanding is used. ++ * riscv64: Configure for the RVA23U64 profile on Ubuntu 25.10 or later. ++ * libga68-dev: Install libga68.a ++ * Fix Algol-68 autopkg test. ++ * Fix PR target/119830 (riscv64), taken from the trunk. ++ * ga68: Link libga68 dynamically. ++ ++ -- Matthias Klose Thu, 28 Aug 2025 14:38:46 +0200 ++ ++gcc-15 (15.2.0-1) unstable; urgency=medium ++ ++ * GCC 15.2.0 release. ++ - Fix PR target/96226 (x86). ++ * Update to git 20250810 from the gcc-15 branch. ++ - Fix PR middle-end/121389, PR tree-optimization/121413, ++ PR tree-optimization/121127, PR c++/121351, PR c++/119859, PR c++/120620, ++ PR c++/120845, PR libstdc++/121373, PR rtl-optimization/120983. ++ * Refresh patches. ++ ++ -- Matthias Klose Sun, 10 Aug 2025 11:52:24 +0200 ++ ++gcc-15 (15.1.0-11) experimental; urgency=medium ++ ++ * Update to git 20250904 from the gcc-15 branch (15.2.0 release candidate). ++ - Fix PR middle-end/121095, PR target/120119 (AArch64), ++ PR tree-optimization/121202, PR tree-optimization/117423, ++ PR middle-end/119835, PR lto/120308, PR target/119737 (GCN), ++ PR target/121027 (AArch64). PR target/118891 (AArch64), ++ PR tree-optimization/118891, PR ada/121184, PR c++/120577, ++ PR c++/121055, PR c++/120412, PR fortran/121203, PR fortran/121145, ++ PR modula2/121164, PR target/119853, PR target/119854, ++ PR middle-end/119835, PR lto/120308, PR target/120530, ++ PR target/119692, PR target/119853, PR target/119854, ++ PR target/119737, PR target/118794, PR libstdc++/119962, ++ PR target/120351 (ARM), PR tree-optimization/121323, ++ PR tree-optimization/121320, PR middle-end/121322, ++ PR rtl-optimization/121340, PR target/121028 (AArch64), ++ PR tree-optimization/121256, PR target/121121 (RISCV), ++ PR tree-optimization/121264, PR ipa/114790, PR tree-optimization/121256, ++ PR tree-optimization/121130, PR tree-optimization/121190, ++ PR target/120427 (x86), PR target/121274 (x86), PR target/120645, ++ PR tree-optimization/119085, PR middle-end/121159, PR target/121277, ++ PR target/121064 (loongarch), PR target/120714 (RISCV), PR ada/120440, ++ PR c/120055, PR c/119950, PR c/120354, PR c/120353, PR cobol/119231, ++ PR cobol/120402, PR cobol/120621, PR cobol/120765, PR cobol/120765, ++ PR cobol/119337, PR cobol/120794, PR cobol/120772, PR cobol/120779, ++ PR cobol/120790, PR cobol/120791, PR cobol/120794, PR cobol/120621, ++ PR cobol/120328, PR cobol/119695, PR cobol/119975, PR cobol/119770, ++ PR cobol/119772, PR cobol/119790, PR cobol/119771, PR cobol/119810, ++ PR cobol/119335, PR cobol/119632, PR cobol/119337, PR cobol/119217, ++ PR cobol/119364, PR c++/108080, PR c++/121238, PR c++/120800, ++ PR c++/120224, PR c++/120756, PR c++/121133, PR c++/121219, PR c++/115908, ++ PR c++/118074, PR c++/95615, PR c++/120273, PR c++/116775, PR c++/120495, ++ PR c++/115605, PR c++/118903, PR c++/109283, PR c++/119916, PR c++/120453, ++ PR fortran/119106. ++ * Fix broken ada timespec record with -D_TIME_BITS=64 on 32-bit big-endian ++ targets (John David Anglin). Addresses: #1108322. ++ Only apply this patch for 32bit big-endian targets. ++ * LRA support on sh4, documentation (Adrian Glaubitz). ++ * Update Algol-68 to the gcc-15-a68 branch. ++ * Configure with --enable-checking=release. ++ ++ -- Matthias Klose Mon, 04 Aug 2025 11:42:09 +0200 ++ ++gcc-15 (15.1.0-10) experimental; urgency=medium ++ ++ * Update to git 20250719 from the gcc-15 branch. ++ - Fix PR target/120356 (RISCV), PR target/120995 (RISCV), ++ PR ipa/121023, PR tree-optimization/120780, PR tree-optimization/120358, ++ PR tree-optimization/118669, PR tree-optimization/120817, ++ PR tree-optimization/120927, PR tree-optimization/120944, ++ PR middle-end/120369, PR rtl-optimization/120795, ++ PR rtl-optimization/120550, PR tree-optimization/120927, ++ PR middle-end/120608, PR tree-optimization/120729, ++ PR tree-optimization/120654, PR target/120624 (AArch64), ++ PR rtl-optimization/120347, PR middle-end/120608, PR middle-end/120631, ++ PR target/119971 (RISCV), PR tree-optimization/120677, ++ PR rtl-optimization/120423, PR rtl-optimization/116389, PR c/120837, ++ PR c++/120628, PR c++/120569, PR c++/120575, PR c++/116064, ++ PR c++/120940, PR c++/120684, PR c++/118856, PR c++/120471, ++ PR fortran/120843, PR fortran/120847, PR fortran/120843, ++ PR fortran/120711, PR fortran/120784, PR fortran/120784, ++ PR fortran/119948, PR fortran/51961, PR modula2/120253, ++ PR libstdc++/119754, PR libstdc++/120997, PR libstdc++/118681, ++ PR libstdc++/120934, PR libstdc++/120931, PR libstdc++/120648, ++ PR libstdc++/120650, PR middle-end/120935, PR tree-optimization/120924, ++ PR tree-optimization/121059, PR tree-optimization/121049, ++ PR tree-optimization/121035, PR tree-optimization/121131, ++ PR target/120807 (loongarch), PR middle-end/120709, ++ PR target/120999 (AArch64), PR rtl-optimization/120242, ++ PR rtl-optimization/120627, PR rtl-optimization/120736, ++ PR rtl-optimization/120813, PR target/118241 (RISCV), ++ PR target/118241 (RISCV), PR target/120908 (x86), PR target/120908 (x86), ++ PR ada/121056, PR fortran/121060, PR fortran/104428, PR fortran/120637, ++ PR modula2/121164, PR modula2/120912, PR modula2/117203, ++ PR modula2/120731, PR modula2/120673, PR modula2/119650, ++ PR modula2/120606, PR modula2/119650, PR modula2/120542, ++ PR modula2/120474, PR modula2/120497, PR modula2/120389. ++ * Enable LRA support on sh4 (Adrian Glaubitz). Closes: #1108158. ++ * Fix NaN signalling bit and propagation rules on sh4 (Adrian Glaubitz). ++ Closes: #1109115. ++ * Drop obsolete ia64-disable-selective-scheduling patch (Adrian Glaubitz). ++ Closes: #1108247. ++ * Enable algol on sh4 (Adrian Glaubitz). Closes: #1108261. ++ * RISC-V: Minimal support for ssnpm, smnpm and smmpm extensions (taken from ++ the trunk, Heinrich Schuchardt). LP: #2116120. ++ * RISC-V: Bump to the RVA23U64 extension profile for Ubuntu 25.10 and later ++ (Heinrich Schuchardt). LP: #2116086. ++ * Enable -fzero-init-padding-bits=all, -Wbidi-chars=any for Ubuntu 25.10 ++ and later. LP: #2108968. ++ * Bump standards version. ++ ++ -- Matthias Klose Sat, 19 Jul 2025 16:56:42 +0200 ++ ++gcc-15 (15.1.0-8) experimental; urgency=medium ++ ++ * Update to git 20250614 from the gcc-15 branch. ++ - Fix PR tree-optimization/120638, PR middle-end/120547, PR ipa/120295, ++ PR target/120042 (RISCV), PR rtl-optimization/120050, PR c++/120555, ++ PR c++/120502, PR fortran/120483, PR libstdc++/120625, ++ PR libstdc++/99832, PR libstdc++/120548. ++ * Remove the distro specific patch for PR libstdc++/99832. ++ * Build c++ for the amdgcn offload compiler. ++ ++ -- Matthias Klose Mon, 16 Jun 2025 19:21:02 +0200 ++ ++gcc-15 (15.1.0-7) experimental; urgency=medium ++ ++ * Fix applying the gcc-m68k-no-fold-mem-offsets patches. ++ ++ -- Matthias Klose Mon, 09 Jun 2025 15:31:57 +0200 ++ ++gcc-15 (15.1.0-6) experimental; urgency=medium ++ ++ * Update to git 20250609 from the gcc-15 branch. ++ - Fix PR tree-optimization/120357, PR tree-optimization/120341, ++ PR rtl-optimization/120182, PR tree-optimization/120003, ++ PR tree-optimization/119960, PR tree-optimization/116352, ++ PR target/86772 (microblaze), PR c/120180, PR c++/120123, PR c/120180, ++ PR c++/120413, PR c++/120363, PR c++/120414, PR fortran/99838, ++ PR fortran/102599, PR fortran/114022, PR fortran/101735, ++ PR fortran/101735, PR fortran/120193, PR fortran/120049, ++ PR fortran/120355, PR target/120442 (AVR), PR target/120441 (AVR), ++ PR libfortran/119856, PR middle-end/118694, PR middle-end/118694, ++ PR libstdc++/120432, PR libstdc++/120465, PR libstdc++/120367. ++ * Don't default to -ffold-mem-offsets on m68k (Adrian Glaubitz). ++ Closes: #1107416. ++ ++ -- Matthias Klose Mon, 09 Jun 2025 13:27:55 +0200 ++ ++gcc-15 (15.1.0-5) experimental; urgency=medium ++ ++ * Update to git 20250523 from the gcc-15 branch. ++ - Fix PR modula2/120188, PR ipa/120146, PR tree-optimization/120143, ++ PR tree-optimization/120089, PR tree-optimization/120043, ++ PR c++/120161, PR c++/120125, PR c++/119864, PR c++/120012, ++ PR fortran/120139, PR fortran/120163, PR fortran/120191, ++ PR fortran/119928, PR modula2/120117, PR modula2/119915, ++ PR modula2/119914, PR libfortran/120196, PR modula2/115276, ++ PR libstdc++/120187, PR libstdc++/120198, PR libstdc++/119714, ++ PR libstdc++/112490, PR libstdc++/119427, PR libstdc++/118260, ++ PR tree-optimization/111873, PR c++/120013, PR c++/120350, ++ PR fortran/85750, PR fortran/102891, PR fortran/120049, ++ PR libstdc++/120293, PR libstdc++/120029, PR libstdc++/120190. ++ * Fix amdgcn-tools dependency generation for snapshot builds. ++ * d/copyright*: Update for new binary packages. ++ * Disable testsuite again on Debian/alpha. ++ ++ -- Matthias Klose Fri, 23 May 2025 19:08:37 +0200 ++ ++gcc-15 (15.1.0-4) experimental; urgency=medium ++ ++ * Update to git 20250510 from the gcc-15 branch. ++ - Fix PR ipa/119852, PR tree-optimization/120048, PR ipa/120006, ++ PR tree-optimization/120074, PR ada/120104, PR c++/120012, ++ PR fortran/120179, PR fortran/119986, PR fortran/102900, ++ PR preprocessor/108900, PR preprocessor/116047, PR preprocessor/120061, ++ PR libfortran/120158, PR libfortran/120153, PR libfortran/120152, ++ PR libstdc++/120159, PR libstdc++/120114. ++ ++ [ Matthias Klose ] ++ * Backport PR cobol/119364, taken from the trunk. ++ * Build cobol cross compiler again on i686. ++ ++ [ Nicolas Boulenguez ] ++ * Replace tabulations with spaces in rules.defs. Closes: #1104665. ++ * Ada: shorten ada-gcc-name.diff, remove pr79724-revert.diff. ++ ++ -- Matthias Klose Sat, 10 May 2025 09:25:21 +0200 ++ ++gcc-15 (15.1.0-3) experimental; urgency=medium ++ ++ * Update to git 20250503 from the gcc-15 branch. ++ - Fix PR c/120057. ++ - libsanitizer: Fix build with glibc 2.42. ++ * Disable profiled bootstrap on Debian/armhf. See PR target/119937. ++ * gnat: Add gnat-N- conflicts. Closes: #1063664. ++ ++ -- Matthias Klose Sat, 03 May 2025 22:05:51 +0200 ++ ++gcc-15 (15.1.0-2) experimental; urgency=medium ++ ++ * Update to git 20250502 from the gcc-15 branch. ++ - Fix PR target/119610 (AArch64), PR c++/119939, PR c++/119863, ++ PR tree-optimization/119712, PR ada/112958, PR c++/120023, PR c++/119938, ++ PR c++/119551, PR c++/119996, PR c++/119981, PR c++/119378. ++ * Update Algol-68 to the a86-gcc-15 branch. ++ * Update libasan, libga68 and libobjc symbols. ++ * Fix multilib installation for PR libstdc++/103382. ++ * Enable running the tests again. ++ ++ -- Matthias Klose Fri, 02 May 2025 09:30:32 +0200 ++ ++gcc-15 (15.1.0-1) experimental; urgency=medium ++ ++ * GCC 15.1.0 release. ++ * Update to git 20250426 from the gcc-15 branch. ++ * Provide local unversioned symlinks gnatmake and gnatbind for the build. ++ * Update Algol 68 from the a68-15 branch. ++ * Don't install the gcobol-io man page for cross builds. Closes: #1103019. ++ * Update NEWS files. ++ * Don't build cobol cross compiler on 32bit archs, PR cobol/119364 needs an ++ update. ++ * Refresh patches. ++ ++ -- Matthias Klose Sat, 26 Apr 2025 03:22:52 +0200 ++ ++gcc-15 (15-20250423-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the gcc-15 branch (20250423). ++ ++ [ Matthias Klose ] ++ * Install the libgcobol.spec file. ++ * Fix source-path in the installed libstdc++.modules.json. Closes: #1102350. ++ * On ppc64el configure --with-long-double-format=ieee for upcoming distros. ++ * Update libga68 symbols. ++ * Address PR libstdc++/103382, when not building the common libs, install ++ the library in the gcc_lib_dir to link against the libstdc++ from this ++ GCC version. ++ * Build cobol on riscv64. ++ ++ [ Nicolas Boulenguez ] ++ * Ada patches: refresh ada-749574, update pr114065/#1092866 to v15, ++ complete ada-gnat-names. Addresses: #1078144. ++ ++ -- Matthias Klose Wed, 23 Apr 2025 16:20:46 +0200 ++ ++gcc-15 (15-20250406-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk (20250406). ++ * Update the ag68 branch to 20250405. ++ * Add libgccjit-doc conflict. Closes: #1101750. ++ * libga68-doc: Remove not needed doc link. Closes: #1101749. ++ * Build cobol on ppc64el. ++ * Build cobol cross compilers. ++ * d/copyright: Add licenses for vendored crates. ++ * Apply proposed patch for PR cobol/119364, non LP64 builds. ++ ++ -- Matthias Klose Sun, 06 Apr 2025 10:48:32 +0200 ++ ++gcc-15 (15-20250329-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk (20250329). ++ * Update the ag68 branch to 20250322. ++ * Don't run the tests on the Hurd, timing out. ++ * Fix GCN SIMD libm bug, taken from newlib upstream. ++ * Refresh patches. ++ * Re-enable profiled and LTO build. ++ ++ -- Matthias Klose Sat, 29 Mar 2025 10:31:23 +0100 ++ ++gcc-15 (15-20250319-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250319. ++ - Fix building gcobol cross compilers. ++ * Fix libga68 build on the Hurd. ++ * Fix gccrs build, see PR rust/119353. ++ * Don't build gcobol on arc. ++ ++ -- Matthias Klose Wed, 19 Mar 2025 12:38:10 +0100 ++ ++gcc-15 (15-20250315-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250315. ++ * Let the gcobol compiler depend on the g++ compiler. ++ * Update the Algol 68 patch. ++ * Bump libgo soname again. ++ * Reset the libgcobol soname after the upstream merge. ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Sat, 15 Mar 2025 02:37:08 +0100 ++ ++gcc-15 (15-20250220-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250220. ++ * Add packages for Algol 68. ++ ++ -- Matthias Klose Thu, 20 Feb 2025 15:50:14 +0100 ++ ++gcc-15 (15-20250213-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250213. ++ * Disable the gnat build on m68k. See PR target/118485. ++ * Apply workaround for PR target/118248 (riscv64). ++ ++ -- Matthias Klose Thu, 13 Feb 2025 11:16:17 +0100 ++ ++gcc-15 (15-20250208-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250208. ++ * Disable building the riscv64 gdc cross compiler on s390x. See PR118248. ++ * Build using amdgcn-tools-19 instead of -18. ++ * Build a libgccjit package, which is not conflicting with the installed ++ default compiler (libgccjit15). ++ ++ -- Matthias Klose Sat, 08 Feb 2025 14:43:15 +0100 ++ ++gcc-15 (15-20250203-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250203. ++ * d/p/libphobos-no-REUSEPORT.diff: Drop, fixed upstream. ++ ++ -- Matthias Klose Mon, 03 Feb 2025 10:45:47 +0100 ++ ++gcc-15 (15-20250130-2) experimental; urgency=medium ++ ++ * Fix installation of sarif-reply. ++ ++ -- Matthias Klose Thu, 30 Jan 2025 21:38:18 +0100 ++ ++gcc-15 (15-20250130-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250130. ++ * Apply proposed patches for PR c++/116506 and PR c++/116914. ++ * Constrain the lib32 conflicts to non-mips architectures. ++ * Fix nroff warnings for gcc-TOOL manpages (Bjarni Ingi Gislason). ++ Addresses: #1094299, #1094300, #1094302. ++ * Revert the libgo soname bump. No changes for libgo in GCC 15. ++ * Only pass --enable-multiarch once for staged builds (Helmut Grohne) ++ Closes: #1094387. ++ * Configure with --disable-libgcobol for stage1 and stage2 builds. ++ ++ -- Matthias Klose Thu, 30 Jan 2025 12:34:33 +0100 ++ ++gcc-15 (15-20250114-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250114. ++ * Re-enable the 64bit time_t Ada patches, somehow uninformed update. ++ * d/p/libphobos-no-REUSEPORT.diff, revert upstream commit to fix ftbfs. ++ ++ -- Matthias Klose Tue, 14 Jan 2025 10:43:44 +0100 ++ ++gcc-15 (15-20250112-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20250112. ++ ++ [ Nicolas Boulenguez ] ++ * Ada: remove 'Provides: gnat-V-HASH' from gnat-V (keep it in gnat-V-TARGET). ++ ++ [ Matthias Klose ] ++ * Update newlib to 4.5.0.20241231. ++ * Only provide the gnat-V-HASH for native compilers. ++ * Apply proposed patch for PR/rtl-optimization 118266. ++ * Disable the 64bit time_t Ada patches for now, fail to apply. ++ * Enable the testsuite on alpha again. ++ * Add lib32 conflicts for libn32 packages. Addresses: #1092571. ++ * Update libgphobos symbols files. ++ * Remove invalid gcobol packages from the control file. ++ ++ -- Matthias Klose Sun, 12 Jan 2025 11:48:38 +0100 ++ ++gcc-15 (15-20241231-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20241231. ++ * Drop the package-metadata spec, now implemented in the linkers. ++ * Fix check for assembler section merging support on ARM, see binutils ++ PR ld/32491. ++ * Add conflicts for libstdc++ -doc and -dbg packages. Closes: #1091354. ++ ++ -- Matthias Klose Sat, 21 Dec 2024 12:13:58 +0100 ++ ++gcc-15 (15-20241220-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20241220. ++ * Fix amdgcn-tools links for the amdgcn offload install. ++ * Apply proposed patch for PR libgomp/117851. ++ * Build-depend on git, needed for the gotools tests. ++ * Don't run the libgo tests for multilibs, that cannot run. ++ * Don't run the gnat and gm2 tests for multilibs, which are not built. ++ * Run the tests sequentially on architectures with failing builds. ++ * Run the logwatch check on almost all architectures. ++ * Remove the ada-nobiarch-check patch, superseded. ++ * Refresh patches. ++ * Bump standards version. ++ * Rewrite the logwatch script to look at all log files. ++ * Fix libphobos testsuite with sbuild's unshare backend. Addresses: #1089007. ++ * PR sanitizer/117725: Pull libsanitizer patch from LLVM for s390x/-m31. ++ * Add proposed gcobol patches, build gcobol and libgcobol packages. ++ * Update debian copyright for gcobol. ++ * Add missing build dependency on gnat [hurd-amd64] (Samuel Thibault). ++ Addresses: #1089930. ++ * Use GCC 14 as build dependency except on m68k. ++ * Build with --enable-checking=yes,extra,rtl. ++ * Disable building gccrs on the Hurd. ++ * d/control: Add Rules-Requires-Root: binary-targets. Too late for trixie. ++ * Restrict gcobol autopkg test to arm64, amd64 and ppc64el. ++ * Revert Yun's config-ml.in upstream patch, trying to unbreak cross builds. ++ * Apply proposed patch for PR modula2/118045. ++ * Build cobol only on amd64, arm64 and ppc64el. ++ * Disable pgo/lto builds for now. ++ * Drop the package-metadata spec, now implemented in the linkers. ++ ++ -- Matthias Klose Fri, 20 Dec 2024 19:28:09 +0100 ++ ++gcc-15 (15-20241128-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20241128. ++ * Update packaging for new major version. ++ * Update patches. ++ * Disable some Ada patches, needing an update. 000?-Ada*, ada-749574. ++ * Update symbols files. ++ * libstdc++-dev: Install libstdc++.modules.json. ++ * Configure the jit build with --enable-libdiagnostics. ++ * Update libsanitizer symbols. ++ * Bump sonames for D, Go runtime libs (no conflicts with GCC 14). ++ * Update patches for PR ada/114065 to v13. ++ * Apply proposed patch for PR sanitizer/117725. ++ * Add packages for libdiagnostics and gcc-diagnostics (sarif-replay). ++ * Add sparc to any_archs (Adrian Glaubitz). ++ ++ -- Matthias Klose Thu, 28 Nov 2024 10:00:59 +0100 ++ ++gcc-14 (14.2.0-8) unstable; urgency=medium ++ ++ * Update to git 20241102 from the gcc-14 branch. ++ Fix PR target/114759 (PPC), PR jit/117275, ++ PR rtl-optimization/116783 (closes: #1080974), PR target/117318 (x86), ++ PR rtl-optimization/117327, PR target/116415 (PPC), ++ PR middle-end/117249, PR sanitizer/117209, PR target/116953 (AVR), ++ PR target/117240 (x86), PR middle-end/116891, PR middle-end/116891, ++ PR tree-optimization/117104, PR tree-optimization/116982, ++ PR tree-optimization/116907, PR tree-optimization/116481, ++ PR tree-optimization/116290, PR middle-end/115110, PR target/117159 (x86), ++ PR ada/116551, PR c/117230, PR c++/117259, PR c++/117107, PR c++/92687, ++ PR c++/116929, PR fortran/84868, PR fortran/79685. ++ * Re-enable rs on hurd-i386 and hurd-amd64 (Samuel Thibault). ++ Closes: #1086120. ++ * Add go support for hurd-amd64 (Samuel Thibault). Closes: #1086475. ++ * Remove hurd-alpha references. ++ * Disable the rust frontend on x32 temporarily (Adrian Glaubitz). ++ Closes: #1086022. ++ ++ -- Matthias Klose Sat, 02 Nov 2024 14:48:28 +0100 ++ ++gcc-14 (14.2.0-7) unstable; urgency=medium ++ ++ * Update to git 20241019 from the gcc-14 branch. ++ - Fix PR ipa/115815, PR target/116883 (RISCV), PR c++/116534, ++ PR target/117116 (x86), PR ipa/109985, PR testsuite/116238 (AArch64), ++ PR tree-optimization/117041, PR middle-end/117086, ++ PR tree-optimization/116990, PR tree-optimization/116879, ++ PR tree-optimization/116850, PR tree-optimization/116768, ++ PR tree-optimization/116166, PR target/116921 (x86), ++ PR middle-end/116899, PR middle-end/116898, PR target/116627, ++ PR target/116738 (x86), PR ada/114593, PR ada/115535, PR ada/114640, ++ PR ada/114636, PR c++/117054, PR c++/116476, PR c++/116424, PR c++/116678, ++ PR libstdc++/90276, PR libstdc++/117085, PR libstdc++/117135, ++ PR libstdc++/117094. ++ ++ -- Matthias Klose Sat, 19 Oct 2024 09:24:57 +0200 ++ ++gcc-14 (14.2.0-6) unstable; urgency=medium ++ ++ * Update to git 20241005 from the gcc-14 branch. ++ - PR target/116962 (x86), PR target/116953 (AVR), ++ PR tree-optimization/116585, PR target/116839 (x86), ++ PR target/115860 (S390), PR target/116237 (darwin), ++ PR tree-optimization/116460, PR middle-end/115426, ++ PR tree-optimization/116610, PR middle-end/116454, ++ PR tree-optimization/116380, PR tree-optimization/116274, ++ PR tree-optimization/116258, PR middle-end/115641, PR target/116621 (x86), ++ PR ada/116430, PR c++/115361, PR c++/115987, PR c++/116418, ++ PR c++/116492, PR c++/116676, PR fortran/100273, PR c++/116369, ++ PR libstdc++/116857, PR libstdc++/37475, PR libstdc++/90276, ++ PR libstdc++/116755, PR libstdc++/116529, PR libstdc++/116754, ++ PR libstdc++/116777, PR libstdc++/108619. ++ * Reapply the sparc64 bits to the gcc-as-needed patch. Closes: #1082624, ++ ++ -- Matthias Klose Sat, 05 Oct 2024 05:46:25 +0200 ++ ++gcc-14 (14.2.0-5) unstable; urgency=medium ++ ++ * Update to git 20240915 from the gcc-14 branch. ++ - Fix PR ipa/116410, PR tree-optimization/116501, PR c++/116219, ++ PR target/112108 (AArch64), PR target/116512 (x86), PR c++/116567, ++ PR c++/116606, PR fortran/116530, PR libstdc++/113663, ++ PR libstdc++/116549, PR libstdc++/116381, PR lto/116361, ++ PR target/116617 (x86), PR c++/96097, PR c++/116636, PR c++/116449, ++ PR c++/116320, PR c++/116276, PR lto/116614, PR libstdc++/116159, ++ PR libstdc++/116641. ++ * Don't run the tests on the riscv64 buildds, timing out. ++ * For offloading, require the amdgcn tools based on LLVM 19. ++ ++ -- Matthias Klose Sun, 15 Sep 2024 10:44:10 +0200 ++ ++gcc-14 (14.2.0-4) unstable; urgency=medium ++ ++ * Update to git 20240829 from the gcc-14 branch. ++ - Fix PR target/116390 (AVR), PR target/116407 (AVR), ++ PR c++/116384 (closes: #1078786). ++ * Disable running the tests on alpha and arm64, hanging on the buildds. ++ * gcc/configure.ac enables some features based on the binutils version. The ++ most recently checked binutils version is 2.36 for GCC 14. For now it is ++ safe to derive the binutils runtime dependency from the binutils build ++ dependency. ++ ++ -- Matthias Klose Fri, 30 Aug 2024 12:17:39 +0200 ++ ++gcc-14 (14.2.0-3) unstable; urgency=medium ++ ++ * Update to git 20240817 from the gcc-14 branch. ++ - Fix PR target/85624 (AVR), PR target/115464 (AArch64), ++ PR target/116174 (x86), PR c++/116327, PR c++/104981, PR c++/115550. ++ - s390: Fix high-level builtins vec_gfmsum{,_accum}_128. LP: #2075567. ++ * Don't build gccrs on the Hurd. ++ * Disable building gnat on hurd-amd64, until it gets bootstrapped. ++ * Don't run dwz on hurd-*. ++ * Update symbols files for libasan, libgccjit, libstdc++ and libgphobos. ++ Closes: #1077492. ++ ++ -- Matthias Klose Sun, 18 Aug 2024 19:10:28 +0200 ++ ++gcc-14 (14.2.0-2) unstable; urgency=medium ++ ++ * Update to git 20240811 from the gcc-14 branch. ++ - Fix PR target/116287 (x86), PR target/116295 (AVR), PR target/113384 (PA), ++ PR tree-optimization/116224, PR target/116189 (SH), ++ PR target/116033 (RISCV), PR tree-optimization/116156, ++ PR target/116043 (x86), PR target/115981 (x86), PR c++/116223, ++ PR c++/112632, PR c++/116071, PR c++/88313, PR c++/115897, ++ PR c++/115656, PR c++/115296, PR c++/112288, PR fortran/108889, ++ PR target/116007, PR libstdc++/116038, PR libstdc++/115399, ++ PR libstdc++/114387, PR libstdc++/115854, PR libstdc++/116070, ++ PR libstdc++/116070. ++ * Fix two lintian warnings for the control file. ++ * Build-depend on pkgconf instead of pkg-config. ++ * gnat: Use the GNATBIND/GNATMAKE passed from the toplevel makefile. ++ Provide local unversioned symlinks gnatmake and gnatbind for the build. ++ Closes: #1078144. ++ ++ -- Matthias Klose Sun, 11 Aug 2024 03:56:24 +0200 ++ ++gcc-14 (14.2.0-1) unstable; urgency=medium ++ ++ * GCC 14.2.0 release. ++ ++ * Update to git 20240801 from the gcc-14 branch. ++ - Fix PR target/115981 (x86). ++ * Show bootstrap compilers in the build log. ++ * Configure with --disable-multilib on loong64. ++ * Use the versioned gnatbind and gnatmake binaries for the build. ++ * Emit the config.log when the configure step fails. ++ * Refresh patches. ++ ++ -- Matthias Klose Thu, 01 Aug 2024 17:43:39 +0200 ++ ++gcc-14 (14.1.0-5) unstable; urgency=medium ++ ++ * Update to git 20240719 from the gcc-14 branch. ++ - Fix PR c++/115865, PR rtl-optimization/115049, PR target/115351 (x86), ++ PR ipa/113787, PR tree-optimization/113673, PR target/115526 (alpha), ++ PR middle-end/115887, PR middle-end/115527, PR tree-optimization/115382, ++ PR tree-optimization/115868, PR tree-optimization/115841, ++ PR tree-optimization/115843, PR tree-optimization/115701, ++ PR tree-optimization/115701, PR tree-optimization/115867, ++ PR tree-optimization/115843, PR target/115459 (alpha), ++ PR target/115554 (RISCV), PR target/115562 (RISCV), ++ PR target/113719 (x86), PR target/113719 (x86), PR target/115872, ++ PR target/115752 (loongarch), PR target/115840 (RISCV), ++ PR target/115611 (ARM), PR middle-end/115836, PR target/113715 (RISCV), ++ PR analyzer/114899, PR c++/115476, PR c++/115165, PR c++/111890, ++ PR c++/115897, PR c++/106760, PR c++/115754, PR c++/99242, PR c++/99241, ++ PR fortran/93635, PR fortran/99798, PR fortran/103312, ++ PR libstdc++/113376, PR libstdc++/115522. ++ * On loong64, also build-depend on the gdc-14 frontend. ++ * Build libitm1 on loong64 and riscv64. ++ * Disable running the tests on x32, hanging on the buildds. ++ ++ -- Matthias Klose Fri, 19 Jul 2024 12:09:39 +0200 ++ ++gcc-14 (14.1.0-4) unstable; urgency=medium ++ ++ * Update to git 20240710 from the gcc-14 branch. ++ - Fix PR target/115591 (RISCV), PR target/115188 (ARM), ++ PR target/87376 (AVR), PR target/115475 (AArch64), ++ PR target/115691 (PARISC), PR target/98762 (AVR), PR target/106069 (PPC), ++ PR target/115355 (PPC), PR target/114936 (AArch64), ++ PR target/88236 (AVR), PR target/115726 (AVR), PR pch/115312, ++ PR c/114930, PR c/115502, PR c++/115623, PR fortran/114019, ++ PR fortran/55978, PR fortran/115390, PR target/114890 (AArch64), ++ PR target/115153 (ARM), PR target/115763 (RISCV), ++ PR tree-optimization/115723, PR tree-optimization/115694, ++ PR tree-optimization/115669, PR tree-optimization/115646, ++ PR fortran/84006, PR fortran/100027, PR fortran/98534, PR fortran/115700, ++ PR libstdc++/115807, PR libstdc++/115585. ++ * d/p/0009-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff: ++ Adjust for the new glibc behaviour of defining __USE_TIME_BITS64 also ++ on native 64-bits platforms (Simon Chopin). Addresses: #1074577. ++ LP: #2071605. ++ * Pass --package-metadata on distros with supporting linkers (starting ++ with Debian trixie and Ubuntu noble). ++ The package metadata is constructed from the environment variables ++ ELF_PACKAGE_METADATA. ++ Setting NO_PKG_METADATA=1 disables the generation of the package metadata. ++ * Build target libraries with -mbranch-protection=standard to enable PAC/BTI ++ support on arm64 (Emanuele Rocca). Addresses: #1055711. ++ * Build target libraries with -fno-omit-frame-pointer, when enabled in ++ dpkg-buildflags. ++ * Strip again the executables. ++ ++ -- Matthias Klose Wed, 10 Jul 2024 12:12:12 +0200 ++ ++gcc-14 (14.1.0-3) unstable; urgency=medium ++ ++ * Update to git 20240630 from the gcc-14 branch. ++ - Fix PR tree-optimization/115278, PR target/114846 (PPC), ++ PR tree-optimization/115508, PR driver/115440, PR target/115342 (AArch64), ++ PR target/106069 (PPC), PR target/115355 (PPC), PR target/114846 (PPC), ++ PR c++/115624, PR c/115587, PR c++/115504, PR c++/115198, PR c++/115358, ++ PR libstdc++/115668, PR libstdc++/115575, PR libstdc++/115454. ++ - Backport a fix for an ICE on riscv64. Closes: #1071140. ++ * Fix typo for loong64 build dependencies. ++ * Disable running the tests on the Ubuntu arm64 buildds (times out). ++ * Starting with Ubuntu 24.10, stop building s390x multilibs. ++ * Fix gccrs build dependencies on the Hurd. Closes: #1073830. ++ * Drop the sys-auxv-header patch. Closes: #1071555. ++ ++ -- Matthias Klose Sun, 30 Jun 2024 16:27:40 +0200 ++ ++gcc-14 (14.1.0-2) unstable; urgency=medium ++ ++ * Update to git 20240619 from the gcc-14 branch. ++ - Fix PR target/109549 (S390), PR target/115253 (ARM), ++ PR rtl-optimization/115281, PR target/115353 (ARM), ++ PR middle-end/115352, PR tree-optimization/115337, PR middle-end/108789, ++ PR target/115324 (PPC), PR rtl-optimization/114902, ++ PR rtl-optimization/115092, PR tree-optimization/115307, ++ PR target/115297 (alpha), PR tree-optimization/115192, ++ PR target/113719 (x86), PR tree-optimization/115149, ++ PR tree-optimization/115197, PR tree-optimization/114921, ++ PR target/115169 (loongarch), PR tree-optimization/115232, ++ PR rtl-optimization/115038, PR tree-optimization/115152, ++ PR sanitizer/115172, PR target/115069 (x86), PR tree-optimization/115154, ++ PR tree-optimization/115143, PR tree-optimization/114998, ++ PR middle-end/114931, PR middle-end/114931, PR ada/114708, ++ PR ada/115270, PR c/115290, PR middle-end/114931, PR c/114493, ++ PR target/111343 PR c++/115511, PR c++/99678, PR c++/115239, ++ PR c++/115283, PR c++/115378, PR c++/115187, PR c++/114868, ++ PR c++/105320, PR c++/114275, PR c++/114983, PR libstdc++/107800, ++ PR c++/115139, PR c++/115114, PR c++/114994, PR fortran/83865, ++ PR fortran/115150, PR fortran/86100, PR fortran/115039, ++ PR fortran/114874, PR jit/115442, PR target/115360 (ARM), ++ PR target/115065 (AVR), PR libstdc++/115308, PR libstdc++/115247, ++ PR libstdc++/114958, PR libstdc++/115335, PR libstdc++/111641, ++ PR libstdc++/109849, PR libstdc++/115269, PR libstdc++/114940, ++ PR libstdc++/115099, PR libstdc++/115119, PR libstdc++/115015, ++ PR libstdc++/115063, PR libstdc++/114891, PR libstdc++/114866. ++ * Configure again with --enable-checking=release. Closes: #1072519. ++ * On loong64, build-depend on GCC 14 frontends. Closes: #1072635. ++ * Build gccrs on x32. Closes: #1072345, #1072327. ++ * Don't build Ada on sparc (32bit). Closes: #1072328. ++ ++ -- Matthias Klose Wed, 19 Jun 2024 09:44:29 +0200 ++ ++gcc-14 (14.1.0-1) unstable; urgency=medium ++ ++ * GCC 14.1.0 release. ++ * Update to git 20240514 from the gcc-14 branch. ++ - Fix PR target/114975 (AVR), PR tree-optimization/114965, ++ PR middle-end/114907, PR sanitizer/114956, PR tree-optimization/114876, ++ PR ipa/92606, PR c++/89224, PR c++/114856, PR c++/114889, ++ PR target/69374, PR target/112959, PR target/114968 (x86), ++ PR driver/114980, PR c++/114974, PR c++/114901, PR c++/114903, ++ PR fortran/114827, PR target/114981 (AVR). ++ ++ [ Nicolas Boulenguez ] ++ * Improve the ada-lib-info-source-date-epoch patch. ++ * Ada: remove duplicate unused patches ++ * ada-749574.diff: update and apply again. ++ * Refresh the autogen part of ada-{armel-libatomic,link-lib}.diff. ++ * Ada: fix a typo in patch for PR ada/114065 breaking the build on hurd. ++ ++ [ Matthias Klose ] ++ * Refresh patches. ++ * Update NEWS files. ++ * gcc-14: Depend on cpp-14, lost with the -for-build/-for-host changes. ++ * Run the tests again during the build. ++ * Turn on again PGO and LTO builds. ++ ++ -- Matthias Klose Tue, 14 May 2024 09:22:26 +0200 ++ ++gcc-14 (14-20240429-1) unstable; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240429. ++ ++ * Apply proposed patch for PR libquadmath/114533 (Simon Chopin). ++ Closes: #1064426. LP: #2052929. ++ * Don't build the libstdc++-doc package when the nodoc profile is enabled. ++ * Clean up some version restrictions on build-dependencies. ++ * Don't set the _FILE_OFFSET_BITS and _TIME_BITS macros, if the ++ _DISTRO_EVADE_TIME_BITS macro is defined. ++ See https://sourceware.org/bugzilla/show_bug.cgi?id=31624. ++ * Build-depend on amdgcn-tools-18, required for new gcn offload targets. ++ * Package the new gfx1030, gfx1036, gfx1100 and gfx1103 offload targets. ++ LP: #2060619. ++ * rs now requires cargo to bootstrap. Disable building gccrs on architectures ++ which don't have cargo. ++ Disable gccrs cross compilers. Not working upstream, more constraints ++ on rust macros. ++ * Build gnat, gdc and gm2 on loong64. Closes: #1069708. ++ * Integrate gnat patches from Nicolas: ++ - Update the ada-lib-info-source-date-epoch patch. ++ - Remove the pr114065-proposed patch. ++ - Add patches (v7) from PR ada/114065. Addresses: #1067453. ++ ++ -- Matthias Klose Mon, 29 Apr 2024 11:15:28 +0200 ++ ++gcc-14 (14-20240330-1) unstable; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240330. ++ ++ * Make vhdl known to the PPC backend. ++ * Use the proposed patch to fix PR ada/114064, 64bit definitions for ++ time_t_bits type on 32bit archs. ++ * Move the _FORTIFY_SOURCE setting from cc1 to the driver. ++ * d/p/gcc-distro-defaults: Make -fstack-protector-explicit known. ++ * newlib: amdgcn: Implement proper locks, taken from newlib trunk. ++ * Refresh patches. ++ * Use gcc:SoftVersion for -for-host dependencies (Helmut Grohne). ++ Closes: #1067904. ++ ++ -- Matthias Klose Sat, 30 Mar 2024 13:27:56 +0100 ++ ++gcc-14 (14-20240315-1) unstable; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240315. ++ ++ * Fix installation of the amdgcn offload compiler. Closes: #1065458. ++ * Fix installation of the nvptx offload compiler. Closes: #1065599. ++ * Add loong64 bits for the gcc-multilib-multiarch patch. Closes: #1061371. ++ * Enable Modula-2 on the Hurd (Samuel Thibault). Closes: #1066932. ++ ++ -- Matthias Klose Fri, 15 Mar 2024 20:35:12 +0100 ++ ++gcc-14 (14-20240303-1) unstable; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240303. ++ * Build without gdb for now. ++ ++ -- Matthias Klose Sun, 03 Mar 2024 11:40:51 +0100 ++ ++gcc-14 (14-20240221-2.1) unstable; urgency=medium ++ ++ * Non-maintainer upload. ++ * Upload to unstable to start the 64-bit time_t transition. ++ ++ -- Steve Langasek Mon, 26 Feb 2024 21:41:05 +0000 ++ ++gcc-14 (14-20240221-2) experimental; urgency=medium ++ ++ * libgnat: Use Long_Long_Integer'Size for the definition of time_t_bits ++ for 32bit architectures using time_t64. ++ ++ -- Matthias Klose Thu, 22 Feb 2024 04:12:32 +0100 ++ ++gcc-14 (14-20240221-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240221. ++ ++ * Proposed fix for PR d/113772. ++ * Fix disabling go and m2 according to OS (Samuel Thibault). Closes: #1063643. ++ * Pass -D_TIME_BITS=64 together with -D_FILE_OFFSET_BITS=64 by default ++ on the 32bit architectures armel, armhf, hppa, m68k, mips, mipsel, ++ powerpc (-m32 only) and sh4. ++ * PR libstdc++/99832, std::chrono::system_clock::{from,to}_time_t: ++ Add ABI tag for timet64. ++ * Fix libsanitizer build with _TIME_BITS set. ++ ++ -- Matthias Klose Thu, 22 Feb 2024 00:27:13 +0100 ++ ++gcc-14 (14-20240207-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240207. ++ ++ * Enable sanitizer packages for loong64. ++ * Build libubsan1 for riscv64. ++ * Apply proposed patch for PR target/113720 (alpha). ++ * Drop the libgo-soname patch, use the bumped libgo upstream soname. ++ * Apply proposed patch for PR middle-end/113731. ++ ++ -- Matthias Klose Wed, 07 Feb 2024 05:39:32 +0100 ++ ++gcc-14 (14-20240201-3) unstable; urgency=medium ++ ++ * Fix PR middle-end/113705 (ftbfs on arm64). Closes: #1062535. ++ ++ -- Matthias Klose Thu, 01 Feb 2024 22:53:33 +0100 ++ ++gcc-14 (14-20240201-2) unstable; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240201. ++ ++ * Add more dependencies for -for-build and -for-host packages. ++ * For Ubuntu, only define _FORTIFY_SOURCE, if there are no options ++ -U_FORTIFY_SOURCE or -D_FORTIFY_SOURCE=N given. ++ * Update libgcc-s symbols files. ++ ++ -- Matthias Klose Thu, 01 Feb 2024 14:11:28 +0100 ++ ++gcc-14 (14-20240131-1) unstable; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240131. ++ ++ [ Matthias Klose ] ++ * Fix and add dependencies for -for-build and -for-host packages. ++ * Add conflict to libgccjit-13-doc. Closes: #1061647. ++ * Fix some -for-{build,host} package descriptions. Closes: #1061670. ++ * Correct conflicts with old gnat-N versions. Addresses: #1061648. ++ * Apply proposed patch for PR target/113336 (ARM). Closes: #1061370. ++ * Build again gnat and gcc on armel. ++ ++ [ Aurelien Jarno ] ++ * Update libasan8 symbols for riscv64. ++ * Update liblsan0 symbols for riscv64. ++ ++ -- Matthias Klose Wed, 31 Jan 2024 10:40:26 +0100 ++ ++gcc-14 (14-20240127-1) unstable; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240127. ++ * Disable the gccgo build on armel for now. See #1061370. ++ ++ -- Matthias Klose Sat, 27 Jan 2024 09:51:04 +0100 ++ ++gcc-14 (14-20240126-2) unstable; urgency=medium ++ ++ * Update libgccjit symbols file. ++ * Bump autopkg test dependencies to GCC 14. ++ * Try harder to disable ada on armel. ++ ++ -- Matthias Klose Fri, 26 Jan 2024 15:05:36 +0100 ++ ++gcc-14 (14-20240126-1) unstable; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240126. ++ * Don't define _no_archs macros directly. ++ * Add missing libstdc++-{dbg,doc} conflicts. Closes: #1061345. ++ * Fix gm2-14 package description. Closes: #1061372. ++ * Re-add conflicts for gnat packages. ++ * Disable the ada build on armel for now. See #1061370. ++ ++ -- Matthias Klose Fri, 26 Jan 2024 12:42:52 +0100 ++ ++gcc-14 (14-20240121-1) experimental; urgency=medium ++ ++ * Snapshot, taken from the trunk 20240121. ++ ++ [ Matthias Klose ] ++ * Update symbols files. ++ * Refresh patches. ++ * Drop KFreeBSD patches. ++ * Drop the KFreeBSD build support. ++ * Bump debhelper to v11. ++ * Configure with --disable-s390-excess-float-precision for sid/trixie and ++ Ubuntu noble (24.04 LTS). ++ * Update the gcc-as-needed patch for loong64. Addresses: #1054469. ++ * Remove the support to build ARM sf/hf multilib packages. ++ * Update the variants for the amdgcn offload compiler. ++ * Remove references to obsolete CPUs m32r and tilegx. ++ * Add changes for hurd-amd64 (Samuel Thibault). Addresses: #1057004. ++ * Don't build-depend on gdb on hurd-amd64 for now. ++ * Remove the packaging bits to build gdc as a separate source package. ++ * Remove the packaging bits to build gccgo as a separate source package. ++ * Build the nvptx offload compiler on arm64. ++ * Don't strip executables for the prerelease uploads. ++ * Disable LTO builds on hurd-amd64. ++ * Configure with --enable-checking=yes,extra,rtl for now. ++ * Bump libgm2 soname. ++ * Add support to build from a combined binutils/GCC tree. ++ * Use DEB_BUILD_OPTIONS='... gcc-ice=nodump,norepro' for turning off dumping ++ the preprocessed source to stdout. Addresses: #1057635. ++ * Set DEB_BUILD_OPTIONS='... gcc-ice=nodump,norepro' when running the ++ testsuite. ++ * Default to pie on loong64. Addresses: #1057433. ++ * Bump the libphobos soname to distinguish from GCC 13 (local patch) ++ * Bump the libgo soname to distinguish from GCC 13 (local patch) ++ * For Ubuntu 24.04 LTS and later, switch _FORTIFY_SOURCE to 3 by default ++ instead of 2 when optimization is enabled. LP: #2012440. ++ * Use "arch" macros instead of "cpu" macros for control file generation. ++ * Set {go,m2,rs}_no_archs macros for the generation of the control file. ++ * Remove trailing whitespace in control file. ++ * Build Enable LSan and TSan packages for riscv64. ++ * Remove empty directory in the snapshot package. Addresses: #1060080. ++ * Disable the LTO build on mips64el (requested by YunQiang Su). ++ * Configure with --enable-libstdcxx-backtrace. LP: #2048233. ++ * Update the testsuite-hardening patches, and apply them again. ++ * Fall-back to the host crypt.h for the target, required by cross builds. ++ See: #1014375. ++ * Build again gccrs. ++ * Update newlib to 4.4.0.20231231. ++ * Remove the support to create i586 symlinks on i386 and hurd-i386. ++ * Mark *-N-for-{build,host} packages as dependency packages. ++ * Don't include -Xliblto_plugin.so for dh_fixperms call. ++ * debian/copyright: Update copyright years, add libgm2 and libgrust. ++ ++ [ Nicolas Boulenguez ] ++ * Ada: Actually install README.gnat to the gnat-X package. ++ * Ada: Remove a duplicate conditional on with_separate_gnat. ++ * Ada: Stop installing unversioned symlinks to the shared libgnat. ++ * Ada: Stop installing the /usr/bin/gnatgcc symbolic link. ++ * Ada: Remove unversioned symbolic links to gnat tools. ++ * Ada: Remove the conflict between gnat-14 and previous versions. ++ * Ada: Stop searching gnatgcc in build dependencies. ++ * Ada: Remove the with_separate_gnat Make variable. ++ * Ada: Remove all stuff conditioned by PKGSOURCE=gnat. ++ ++ [ Helmut Grohne ] ++ * Add loong64 to any_archs. ++ * Always issue a build-dependency on debhelper. ++ * For cross toolchain builds, add a build dependency on target binutils. ++ * For cross toolchain builds, add build dependencies on the Ada, D and ++ Modula-2 frontends. ++ * Remove redundant sections and priorities for non-tools in the control file. ++ * Remove redundant sections and priorities for tools in the control file. ++ * Add support code for gcc-for-host. ++ - control.m4 macro for_each_arch iterates over all known architectures and ++ substitutes arch_deb (the Debian architecture name), arch_gnu (the GNU ++ triplet) and arch_gnusuffix (a package name suffix encoding the ++ architecture) variables. ++ - The substitution variable target:suffix can be used to interpolate the ++ current target architecture suffix for dependencies from the regular ++ tool packages on architecture-qualified tool packages. ++ * Build $triplet packages: ++ {cpp,gcc,g++,gfortran,gdc,gobjc,gobjc++,gccgo,gnat,gm2,gccrs}-14-$triplet ++ * Use cross_gencontrol for *-for-host packages. ++ * libgcc-s[124]: move libgcc_s.so.? to /usr for DEP17. Addresses: #1060001. ++ * Add packages {cpp,gcc,g++,gfortran,gdc,gobjc,gobjc++}-N-for-{build,host}. ++ * Add packages {gccgo,gnat,gm2,gccrs}-N-for-{build,host}. ++ * Restrict $tool-$v-$triplet packages via ${tool}_no_archs. ++ ++ -- Matthias Klose Sun, 21 Jan 2024 07:38:02 +0100 ++ ++gcc-13 (13.2.0-5) unstable; urgency=medium ++ ++ * Update to git 20231005 from the gcc-13 branch. ++ - Fix PR tree-optimization/111331, PR tree-optimization/110386, ++ PR target/111121 (AArch64), PR tree-optimization/110315, ++ PR target/111411 (AArch64), PR target/111412 (riscv), ++ PR ada/110488, PR c++/111493, PR c++/111485, PR c++/99631, ++ PR c++/111471, PR fortran/37336, PR fortran/111674, PR fortran/92586, ++ PR fortran/68155, PR modula2/111510, PR libstdc++/111050, ++ PR libstdc++/111102, PR libstdc++/108046, PR libstdc++/111511, ++ PR c++/111512, PR c++/111357. ++ * Provide symlinks for the shared Modula-2 runtime libraries in ++ the private gcc library directory. Closes: #1052008. ++ * Install the static Modula-2 libraries. ++ * Add autopkg test for Modula-2. ++ * Don't assume that hppa64-linux-gnu has the sys/mman.h header, ++ use the fallback for libgcov. ++ * Update the libquadmath portions of the copyright file. Closes: #1052314. ++ ++ -- Matthias Klose Thu, 14 Dec 2023 18:38:37 +0100 ++ ++gcc-13 (13.2.0-4) unstable; urgency=medium ++ ++ * Update to git 20230913 from the gcc-13 branch. ++ - Fix PR target/96762 (PPC), PR target/111340 (x86), ++ PR target/111306 (x86), PR target/111335 (x86), ++ PR modula2/111330. ++ - Address stack protector and stack clash protection weaknesses ++ on AArch64. CVE-2023-4039. ++ ++ [ Matthias Klose ] ++ * Fix PR fortran/88552, taken from the trunk. LP: #1842164. ++ ++ [ Aurelien Jarno ] ++ * Update libasan8 symbols for riscv64. ++ ++ -- Matthias Klose Wed, 13 Sep 2023 13:17:34 +0200 ++ ++gcc-13 (13.2.0-3) unstable; urgency=medium ++ ++ * Update to git 20230902 from the gcc-13 branch. ++ - Fix PR target/111127 (x86), PR middle-end/111017 (x86), ++ PR tree-optimization/111070, PR tree-optimization/111039, ++ PR tree-optimization/111019, PR tree-optimization/110702, ++ PR tree-optimization/111109, PR debug/111080, PR target/111010 (x86), ++ PR c++/106652, PR c++/110927, PR c++/109678, PR c++/106310, ++ PR fortran/87477, PR modula2/110779, PR modula2/108119, ++ PR libgcc/110956, PR middle-end/111017, PR libstdc++/110860, ++ PR libstdc++/110990, PR libstdc++/110970, PR libstdc++/110974, ++ PR libstdc++/110968, PR target/110484 (loong64), ++ PR tree-optimization/110914, PR tree-optimization/111015, ++ PR target/109725 (riscv), PR c++/109751, PR c++/92407. ++ ++ [ Aurelien Jarno ] ++ * Fix PR target/110066 (RISCV), taken from the trunk. ++ ++ [ Matthias Klose ] ++ * Remove test protocols in clean target. Addresses: #1044154. ++ * Disable Ada, Go, D, Modula-2 frontends on loong64. ++ ++ [ Nicolas Boulenguez ] ++ * Ada: deprecate the gnatgcc symbolic link. ++ * Ada: move README.gnat to debian/ada/. ++ * Ada: remove the obsolete acats-killer script. ++ * Ada: let gnat-BV provide a versioned virtual package. ++ ++ -- Matthias Klose Sat, 02 Sep 2023 11:39:47 +0200 ++ ++gcc-13 (13.2.0-2) unstable; urgency=medium ++ ++ * Update to git 20230810 from the gcc-13 branch. ++ - Fix PR target/110220 (AVR), PR target/110741 (PPC), ++ PR target/109713 (RISCV), PR target/89835 (RISCV), ++ PR tree-optimization/110280, PR modula2/110125, PR c++/110197, ++ PR c++/110566, PR c++/108179, PR fortran/109684, PR fortran/110825, ++ PR fortran/108961, PR modula2/110779, PR modula2/110161, ++ PR modula2/110865, PR modula2/110284, PR modula2/110174, ++ PR modula2/110631, PR modula2/110125, PR libstdc++/110860, ++ PR libstdc++/110917, PR libstdc++/110862. ++ * Stop building 32bit liblsan packages, where gcc-13 is not part of ++ the distro. Closes: #1042482. ++ * Update sanitizer symbols files. ++ * Address some lintian warnings: ++ - Be quiet about libstdc++-doc manpages. ++ - Don't complain about unstripped sanitizer libraries. ++ * Correct debhelper to mess up permissions in /usr/libexec. ++ * Strip again the executables. ++ ++ -- Matthias Klose Thu, 10 Aug 2023 05:49:00 +0200 ++ ++gcc-13 (13.2.0-1) unstable; urgency=medium ++ ++ * GCC 13.2.0 release. ++ * Update to git 20230730 from the gcc-13 branch. ++ - Fix PR tree-optimization/110755, PR tree-optimization/110799, ++ PR tree-optimization/110766, PR c++/110809, PR modula2/109952, ++ PR modula2/109952, PR modula2/109586. ++ ++ [ Nicolas Boulenguez ] ++ * autopkgtests: compute GCC version, reuse AUTOPKGTEST_TMP ++ ++ [Matthias Klose] ++ * Stop building gccrs, not ready yet for GCC 13.2, and probably ++ won't be backported to GCC 13 at all. Just keep it building ++ for Ubuntu 23.04, where it cannot be removed from the release pocket. ++ * gcc-13-doc: Fix installation of the libitm info file. LP: #1936394. ++ * Refresh patches. ++ ++ -- Matthias Klose Sun, 30 Jul 2023 07:04:14 +0200 ++ ++gcc-13 (13.1.0-9) unstable; urgency=medium ++ ++ * Update to git 20230720 from the gcc-13 branch (13.2 release candidate). ++ - Fix PR tree-optimization/110731, PR tree-optimization/110669, ++ PR target/110206, PR target/101469 (SH), PR target/106966 (alpha), ++ PR c++/110535, PR c++/110122, PR c++/110524, PR fortran/95947, ++ PR fortran/110658, PR fortran/110288, PR libgcc/110179, PR libgcc/109712, ++ PR libstdc++/109921, PR libstdc++/110432, PR libstdc++/110542, ++ PR libstdc++/110574, PR libstdc++/95048. ++ * Update libstdc++ symbols file for ppc64el. ++ * Update patches for backports. ++ * libgccjit-13-doc: Relax dependency on the gcc-13-base package. ++ * Fix some lintian warnings. ++ ++ -- Matthias Klose Thu, 20 Jul 2023 13:37:42 +0200 ++ ++gcc-13 (13.1.0-8) unstable; urgency=medium ++ ++ * Update to git 20230711 from the gcc-13 branch. ++ - Fix PR tree-optimization/110557, PR c++/110595, ++ PR tree-optimization/110556, PR tree-optimization/110515, ++ PR tree-optimization/110392, PR tree-optimization/110381, ++ PR target/110560 (RISCV), PR target/105325 (PPC), ++ PR tree-optimization/110228, PR c++/110468, PR c++/110463, ++ PR d/108842, PR d/110516, PR d/110514, PR d/110471, PR fortran/110585, ++ PR testsuite/108835, PR d/103944, PR libstdc++/104299. ++ * Apply proposed patch for PR target/106966. Addresses: #1019011. ++ ++ -- Matthias Klose Tue, 11 Jul 2023 10:25:56 +0200 ++ ++gcc-13 (13.1.0-7) unstable; urgency=medium ++ ++ * Update to git 20230630 from the gcc-13 branch. ++ - Fix PR tree-optimization/110298, PR debug/110295, PR middle-end/110055, ++ PR ipa/109983, PR tree-optimization/109143, PR target/110132 (AArch64), ++ PR target/110100 (AArch64), PR target/110100 (AArch64), ++ PR target/109932 (PPC), PR target/110011 (PPC), PR c++/110102, ++ PR c++/109247, PR rtl-optimization/110237, PR target/110309 (x86), ++ PR testsuite/66005, PR middle-end/110420, PR middle-end/103979, ++ PR middle-end/98619, PR ipa/110276, ++ PR target/110264 (RISCV, closes: #1038774), PR d/106977, ++ PR target/110406, PR d/110359, PR d/110113, PR fortran/86277, ++ PR libstdc++/110239, PR libstdc++/110149, PR libstdc++/109741, ++ PR libstdc++/100285. ++ ++ [ Nicolas Boulenguez ] ++ * ada/check_ali_update.sh: report checksum changes but ignore timestamps ++ ++ [Matthias Klose] ++ * Fix PR tree-optimization/110280, taken from the trunk. Closes: #1038768. ++ ++ -- Matthias Klose Fri, 30 Jun 2023 14:36:39 +0200 ++ ++gcc-13 (13.1.0-6) unstable; urgency=medium ++ ++ * Update to git 20230617 from the gcc-13 branch. ++ - Fix PR target/110136 (loongarch), PR target/110227 (X86), ++ PR middle-end/110200. ++ * Ignore gccrs bootstrap comparison failures on mipsel. ++ * Remove obsolete gcn assembler patch. ++ * Mark libgcc-sN packages as protected/important for newer releases. ++ * Apply proposed patch for PR ipa/110276. Closes: #1037640. ++ ++ -- Matthias Klose Sat, 17 Jun 2023 11:34:12 +0200 ++ ++gcc-13 (13.1.0-5) unstable; urgency=medium ++ ++ * Re-enable building gccrs. ++ ++ -- Matthias Klose Sun, 11 Jun 2023 17:12:06 +0200 ++ ++gcc-13 (13.1.0-4) unstable; urgency=medium ++ ++ * Update to git 20230611 from the gcc-13 branch. ++ - Fix PR target/109650 (AVR), PR target/92729 (AVR), ++ PR tree-optimization/110165, PR tree-optimization/110166, ++ PR target/110044 (PPC), PR target/110108 (X86), PR target/109939 (ARM), ++ PR target/106907 (PPC), PR target/109800 (ARM), PR bootstrap/110085, ++ PR target/110088 (AVR), PR target/109954 (X86), PR target/110036 (RISCV), ++ PR target/109547 (RISCV), PR target/104327 (AVR), PR target/82931 (AVR), ++ PR tree-optimization/109505, PR target/105753 (AVR), PR fortran/96024, ++ PR fortran/100607, PR libgcc/109670, PR libgcc/109685, ++ PR libstdc++/108178, PR libstdc++/110139, PR libstdc++/109758, ++ PR libstdc++/109822, PR libstdc++/109261, PR libstdc++/109949, ++ PR libstdc++/109261. ++ * Configure --with-cpu=ev56 instead of --with-arch=ev56 for alpha. ++ * Also provide the liblto_plugin.so symlink in the old place. ++ Closes: #1036566. ++ ++ -- Matthias Klose Sun, 11 Jun 2023 13:48:04 +0200 ++ ++gcc-13 (13.1.0-3) experimental; urgency=medium ++ ++ * Update to git 20230520 from the gcc-13 branch. ++ - PR c++/109884, PR target/104338 (RISCV), PR libstdc++/109816, ++ Fix PR target/109661 (AArch64), PR c++/109871, PR c++/109868, ++ PR c++/109774, PR c++/109745, PR c++/83258, PR c++/80488, PR c++/97700, ++ PR c++/109761, PR c++/109651, PR fortran/109846, PR fortran/109641, ++ PR target/104338 (RISCV), PR libstdc++/109816, PR libstdc++/109883, ++ PR libstdc++/109883. ++ * Update libgcc-s, libhwasan and libstdc++ symbols files. ++ * Patch libstdc++ to support SOURCE_DATE_EPOCH in documentation (Vagrant ++ Cascadian). Closes: #1036367. ++ * Configure --with-arch=ev56 for alpha. Closes: #1036158. ++ ++ -- Matthias Klose Sat, 20 May 2023 11:42:17 +0200 ++ ++gcc-13 (13.1.0-2) experimental; urgency=medium ++ ++ * Update to git 20230510 from the gcc-13 branch. ++ - Fix PR tree-optimization/109778, PR target/108758 (PPC), ++ PR target/109069 (PPC), PR libgomp/108098, PR target/109762 (AArch64), ++ PR tree-optimization/109609, PR rtl-optimization/109585, ++ PR tree-optimization/109573, PR c/109409, PR c/107682, PR c/109412, ++ PR c/107041, PR debug/109676, PR target/109535 (RISCV), PR c++/109756, ++ PR c++/109642, PR c++/109640, PR c++/109671, PR c++/109666, PR c++/108099, ++ PR libstdc++/109694, PR libstdc++/108969, PR libstdc++/109703, ++ PR libstdc++/40380, PR fortran/109622, PR fortran/109622, ++ PR libffi/109447. ++ * Add build support for hurd-amd64 (Samuel Thibault). Closes: #1035614. ++ ++ -- Matthias Klose Wed, 10 May 2023 13:43:04 +0200 ++ ++gcc-13 (13.1.0-1) experimental; urgency=medium ++ ++ * GCC 13.1.0 release. ++ * Update NEWS files. ++ * Refresh patches. ++ * Update cross-install-location patch (Helmut Grohne). Closes: #1034293. ++ ++ -- Matthias Klose Thu, 27 Apr 2023 11:28:53 +0200 ++ ++gcc-13 (13-20230419-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the gcc-13 branch. ++ * Disable rust, as done upstream for the gcc-13 branch. ++ * Update libgphobos symbols. ++ ++ -- Matthias Klose Wed, 19 Apr 2023 23:22:03 +0200 ++ ++gcc-13 (13-20230411-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ ++ -- Matthias Klose Tue, 11 Apr 2023 14:08:31 +0200 ++ ++gcc-13 (13-20230320-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Pass GM2_FOR_TARGET for cross builds (Helmut Grohne). Addresses: #1032161. ++ ++ -- Matthias Klose Mon, 20 Mar 2023 12:31:54 +0100 ++ ++gcc-13 (13-20230305-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * On x86, hwasan is only available for 64bit multilibs, don't generate ++ dependencies on any other hwasan multilib packages. ++ TODO: Package lib64hwasan for i386 and x32. ++ ++ -- Matthias Klose Sun, 05 Mar 2023 10:09:24 +0100 ++ ++gcc-13 (13-20230215-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Fix gdc cross builds. ++ ++ -- Matthias Klose Wed, 15 Feb 2023 11:02:04 +0100 ++ ++gcc-13 (13-20230210-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ ++ [Matthias Klose] ++ * Use the libexec subdir. ++ ++ [YunQiang Su] ++ * Update multiarch patches for mips r6. ++ * Update the update-patches target. ++ ++ -- Matthias Klose Fri, 10 Feb 2023 07:01:03 +0100 ++ ++gcc-13 (13-20230127-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Update cross-install patches. ++ * Refresh patches. ++ ++ -- Matthias Klose Fri, 27 Jan 2023 07:14:40 +0100 ++ ++gcc-13 (13-20230126-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Update newlib to 4.3.0. ++ ++ -- Matthias Klose Thu, 26 Jan 2023 10:01:37 +0100 ++ ++gcc-13 (13-20230114-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Bump standards version. ++ ++ -- Matthias Klose Sat, 14 Jan 2023 08:49:10 +0100 ++ ++gcc-13 (13-20230106-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Fix libstdc++ symbols file, not distinguishing versions for some ++ symbols. ++ * Ship hwasan on amd64. ++ * Bump libgm2 soversion. ++ * Refresh patches. ++ * Update libgomp, liblsan, libhwasan, libubsan and libstdc++ symbols files. ++ ++ -- Matthias Klose Fri, 06 Jan 2023 16:17:07 +0100 ++ ++gcc-13 (13-20221231-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Fix gccrs symlink. Closes: #1027099. ++ * Update multiarch patch for looongson. Addresses: #1027278. ++ ++ -- Matthias Klose Sat, 31 Dec 2022 12:38:04 +0100 ++ ++gcc-13 (13-20221226-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk (m2 and rs merged). ++ * Drop gdc build dependency on unsupported architectures. Closes: #1026201. ++ * Install versioned gm2 doc files. Closes: #1026245. ++ ++ -- Matthias Klose Mon, 26 Dec 2022 16:33:56 +0100 ++ ++gcc-13 (13-20221214-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Update newlib to 4.2.0. ++ * Refresh patches. ++ * Update symbols files. ++ * Bump libgo and libgphobos sonames. ++ * Bump standards version. ++ * Split out a gm2-13-doc package. ++ * Don't strip executables for test builds. ++ * Fix PR ada/107475, proposed patch. ++ * Add conflicts to packages built from the gcc-12 source. ++ * Add gccrs packaging bits. ++ * Build libatomic in the rtlibs stage (Helmut Grohne). See: #1009286. ++ * Add multiarch support for loongarch. ++ ++ -- Matthias Klose Wed, 14 Dec 2022 08:22:59 +0100 ++ ++gcc-12 (12.2.0-7) unstable; urgency=medium ++ ++ * Update to git 20221021 from the gcc-12 branch. ++ - Fix PR middle-end/100400, PR target/96072 (PPC), PR target/100645 (PPC). ++ * Fix the binary-arch only build. ++ ++ -- Matthias Klose Fri, 21 Oct 2022 10:19:56 +0200 ++ ++gcc-12 (12.2.0-6) unstable; urgency=medium ++ ++ * Update to git 20221019 from the gcc-12 branch. ++ - Fix PR tree-optimization/106934, PR tree-optimization/106922, ++ PR tree-optimization/106892, PR tree-optimization/105937, ++ PR target/107064 (x86), PR fortran/106817, PR fortran/105012, ++ PR fortran/100040, PR fortran/100029, PR fortran/106579, ++ PR middle-end/106548, PR libstdc++/106320, PR libstdc++/106695, ++ PR libstdc++/106607, PR libstdc++/106589, PR libstdc++/105678, ++ PR target/99685 (PPC), PR tree-optimization/107254, ++ PR tree-optimization/107212, PR tree-optimization/107160, ++ PR tree-optimization/107107, PR tree-optimization/106922, ++ PR tree-optimization/106922, PR target/107248 (SPARC), PR c++/106925. ++ * Fix libstdc++ build on the Hurd. Closes: #1021357. ++ * gobjc: drop obsolete sparc-only conflict (Helmut Grohne). Closes: #1020599. ++ * gobjc: remove unused binary-without-manpage lintian overrides (Helmut ++ Grohne). Closes: #1020600. ++ * Include the Modula-2 documentation into the gm2-12 package. ++ * Handle the "bookworm" release name instead of "sid". ++ * Backport two newlib patches for the nvptx target. ++ ++ -- Matthias Klose Wed, 19 Oct 2022 07:38:40 +0200 ++ ++gcc-12 (12.2.0-5) unstable; urgency=medium ++ ++ * Update libgcc symbols file for arc. ++ * Work around building libobjc on arc. ++ * Don't build Ada, D and Go on arc. ++ ++ -- Matthias Klose Mon, 03 Oct 2022 10:47:38 +0200 ++ ++gcc-12 (12.2.0-4) unstable; urgency=medium ++ ++ * Update to git 20221004 from the gcc-12 branch. ++ - Fix PR target/107061 (x86), PR middle-end/106982, ++ PR target/106491 (AArch64), PR target/104482 (PPC), ++ PR target/105485 (PPC), PR fortran/100103, PR fortran/100132, ++ PR fortran/107054, PR fortran/82868, PR fortran/106985, ++ PR fortran/106986. ++ * Add multiarch patch for arc-linux-gnu. Closes: #989453. ++ ++ -- Matthias Klose Sun, 02 Oct 2022 12:12:08 +0200 ++ ++gcc-12 (12.2.0-3) unstable; urgency=medium ++ ++ * Update to git 20220920 from the gcc-12 branch. ++ - Fix PR tree-optimization/106860, PR tree-optimization/106841, ++ PR tree-optimization/106809, PR c++/93259, PR c++/106893, PR c++/90451, ++ PR fortran/106857, PR fortran/100245, PR libstdc++/106320. ++ ++ -- Matthias Klose Tue, 20 Sep 2022 10:02:11 +0200 ++ ++gcc-12 (12.2.0-2) unstable; urgency=medium ++ ++ * Update to git 20220908 from the gcc-12 branch. ++ - Fix PR target/101322 (PPC), PR rtl-optimization/106187, ++ PR target/105463 (ARM), PR other/106782, PR other/106782, ++ PR target/106524 (AArch64), PR target/106017 (PPC), ++ PR target/106714 (x86), PR target/106721 (x86), PR target/106704 (x86), ++ PR rtl-optimization/106590, PR target/106459 (loongarch), ++ PR tree-optimization/106322, PR target/103353 (PPC), PR middle-end/106548, ++ PR c++/106759, PR fortran/100136, PR fortran/106579, PR fortran/106579, ++ PR fortran/103694, PR fortran/106566, PR libstdc++/106695, ++ PR libstdc++/106607, PR libstdc++/106589, PR libstdc++/105678. ++ ++ -- Matthias Klose Thu, 08 Sep 2022 15:52:13 +0200 ++ ++gcc-12 (12.2.0-1) unstable; urgency=medium ++ ++ * GCC 12.2.0 release. ++ * Strip the cc* executables again. Closes: #1015185. ++ * cpp-12: Suggest cpp-12-doc. Closes: #1016930. ++ * Refresh patches. ++ ++ -- Matthias Klose Mon, 22 Aug 2022 09:38:01 +0200 ++ ++gcc-12 (12.1.0-8) unstable; urgency=medium ++ ++ * Update to git 20220809 from the gcc-12 branch. ++ - Fix PR testsuite/106345, PR target/106091 (PPC), PR middle-end/106449, ++ PR debug/106261, PR middle-end/106144, PR tree-optimization/106189, ++ PR lto/106129, PR tree-optimization/106087, PR tree-optimization/106063, ++ PR tree-optimization/105665, PR tree-optimization/100810, ++ PR middle-end/106331, PR tree-optimization/106131, PR middle-end/106027, ++ PR tree-optimization/106112, PR tree-optimization/105971, ++ PR tree-optimization/105969, PR middle-end/105965, PR target/105459, ++ PR tree-optimization/105946, PR analyzer/106225, PR analyzer/106204, ++ PR analyzer/105285, PR preprocessor/97498, PR c++/106311, PR c++/106230, ++ PR c++/105912, PR c++/105842, PR c++/53164, PR c++/105848, ++ PR c++/105637, PR c++/100374, PR c++/105758, PR c++/96363, ++ PR fortran/103504, PR fortran/101330, PR libfortran/106079, ++ PR libstdc++/104443, PR libstdc++/106248, PR libstdc++/105995, ++ PR libstdc++/105957, PR libstdc++/105844, PR libstdc++/100823, ++ PR libstdc++/88881, PR libstdc++/105880, PR d/106555 (closes: #1016701). ++ * Update watch file. ++ ++ -- Matthias Klose Tue, 09 Aug 2022 21:22:04 +0200 ++ ++gcc-12 (12.1.0-7) unstable; urgency=medium ++ ++ * Remove the libphobos test forkgc2.d, hangs. See PR d/103944. ++ ++ -- Matthias Klose Mon, 18 Jul 2022 18:35:43 +0200 ++ ++gcc-12 (12.1.0-6) unstable; urgency=medium ++ ++ * Update to git 20220717 from the gcc-12 branch. ++ - Fix PR rtl-optimization/105041, PR tree-optimization/105860, ++ PR target/105930 (x86), PR tree-optimization/106114, ++ PR target/105991 (PPC), PR target/106122 (x86), PR c++/106102, ++ PR target/103722 (SH), PR bootstrap/105551, PR target/106097, ++ PR c++/105626, PR c++/106024, PR c++/105541, PR c++/105779, ++ PR c++/106024, PR d/106139, PR fortran/104313, PR fortran/103137, ++ PR fortran/103138, PR fortran/103693, PR fortran/105243, ++ PR fortran/106121, PR fortran/105954, PR fortran/105691, ++ PR fortran/105813. ++ * Apply a hack to build libgo on the Hurd. Closes: #1005297. ++ ++ -- Matthias Klose Sun, 17 Jul 2022 11:18:47 +0200 ++ ++gcc-12 (12.1.0-5) unstable; urgency=medium ++ ++ * Update to git 20220629 from the gcc-12 branch. ++ - Fix PR bootstrap/105551, PR rtl-optimization/106032, PR ipa/105600, ++ PR middle-end/106030, PR target/106096, PR tree-optimization/105736, ++ PR tree-optimization/105254, PR tree-optimization/105940, ++ PR tree-optimization/105940, PR target/105960 (x86), PR ipa/105739, ++ PR target/105209 (alpha), PR target/105970 (x86), PR middle-end/105998, ++ PR middle-end/105951, PR target/105981 (ARM), PR target/104871 (Darwin), ++ PR target/105599 (Darwin), PR target/105953 (x86), PR c++/105931, ++ PR c++/105925, PR c++/105885, PR c++/105964, PR c++/105908, ++ PR c++/106001, PR c++/105871, PR libgomp/106045. ++ ++ [ Matthias Klose ] ++ * Fix PR bootstrap/105551, taken from the trunk. ++ ++ [ Nicolas Boulenguez ] ++ * ada: move ada/debian_packaging.mk from the gcc-BV source package ++ back to gnat. ++ ++ -- Matthias Klose Wed, 29 Jun 2022 15:42:10 +0200 ++ ++gcc-12 (12.1.0-4) unstable; urgency=medium ++ ++ * Update to git 20210616 from the gcc-12 branch. ++ - Fix PR target/105953 (x86). ++ * Fix PR bootstrap/105551, taken from the trunk. ++ ++ -- Matthias Klose Thu, 16 Jun 2022 07:16:59 +0200 ++ ++gcc-12 (12.1.0-3) unstable; urgency=medium ++ ++ * Update to git 20220612 from the gcc-12 branch. ++ - Fix PR target/105879 (xtensa), PR target/105854 (x86), ++ PR tree-optimization/105786, PR tree-optimization/105726, ++ PR middle-end/105711, PR middle-end/105604, PR ipa/105639, ++ PR sanitizer/105729, PR sanitizer/105714, PR c/105635, PR target/101891, ++ PR other/105527, PR target/105556 (PPC), PR tree-optimization/103116, ++ PR tree-optimization/105618, PR rtl-optimization/105577, ++ PR tree-optimization/105562, PR rtl-optimization/105559, ++ PR middle-end/105537, PR tree-optimization/105431, ++ PR tree-optimization/105458, PR target/105162 (AArch64), ++ PR rtl-optimization/105455, PR c++/105756, PR c++/105852, PR c++/105761, ++ PR c++/105761, PR c++/105795, PR c++/105734, PR c++/105779, ++ PR c++/105491, PR c++/105652, PR c++/105655, PR c++/105623, ++ PR c++/102307, PR c++/105725, PR c++/105589, PR c++/105191, ++ PR c++/92385, PR c++/104470, PR c++/102651, PR c++/49387, ++ PR d/105544, PR fortran/105230, PR preprocessor/105732, ++ PR gcov-profile/105535, PR libgomp/105745, PR libstdc++/105671, ++ PR libstdc++/105681. ++ * Reenable the jit build on m68k. Closes: #1009026. ++ ++ -- Matthias Klose Sun, 12 Jun 2022 19:19:41 +0200 ++ ++gcc-12 (12.1.0-2) unstable; urgency=medium ++ ++ * Update to git 20220513 from the gcc-12 branch. ++ - Fix PR ipa/100413, PR tree-optimization/105528, PR target/105292 (SPARC), ++ PR c++/105476, PR libstdc++/105284, PR libstdc++/105284, ++ PR libstdc++/104731. ++ * Refresh the cross-fixes patch. ++ * Update NEWS files for GCC 12.1. ++ ++ -- Matthias Klose Fri, 13 May 2022 12:55:15 +0200 ++ ++gcc-12 (12.1.0-1) unstable; urgency=medium ++ ++ * GCC 12.1.0 release. ++ * Refresh patches. ++ ++ -- Matthias Klose Sun, 08 May 2022 15:44:36 +0200 ++ ++gcc-12 (12-20220428-1) unstable; urgency=medium ++ ++ * New upstream snapshot, taken from the gcc-12 branch. ++ ++ [ Matthias Klose ] ++ * Don't enable -fcf-protection with -m16. LP: #1940029. ++ * Update libgccjit and libgphobos symbols files. ++ ++ [ Nicolas Boulenguez ] ++ * ada/confirm_debian_bugs.py: trivial update. ++ ++ -- Matthias Klose Thu, 28 Apr 2022 20:10:12 +0200 ++ ++gcc-12 (12-20220319-1) unstable; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ - Import go 1.18.0. ++ * Disable the Ada ALI check before GCC 12 is released. ++ ++ -- Matthias Klose Sat, 19 Mar 2022 08:39:27 +0100 ++ ++gcc-12 (12-20220313-1) unstable; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Use again GCC 11 for the bootstrap, and GCC 12 on alpha and m68k. ++ * Fix PR target/104890, applying proposed patch. ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Mon, 14 Mar 2022 06:02:13 +0100 ++ ++gcc-12 (12-20220302-1) unstable; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Reenable Ada on m68k; build using gcc-10 for the Ada bootstrap. ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Wed, 02 Mar 2022 14:52:13 +0100 ++ ++gcc-12 (12-20220222-1) unstable; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Reenable Ada on alpha. See PR target/98724. ++ * Don't apply Ada patches when not building Ada. ++ * Update the alpha-ieee patch for GCC 12. ++ * Follow-up patch for PR go/104290 (Hurd) (Svante Signell). ++ * Disable gnat on x32 with glibc << 2.35. ++ ++ -- Matthias Klose Tue, 22 Feb 2022 12:15:48 +0100 ++ ++gcc-12 (12-20220214-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Bump libgo soname, golang-1.18 import. ++ ++ -- Matthias Klose Mon, 14 Feb 2022 04:01:08 +0100 ++ ++gcc-12 (12-20220206-2) experimental; urgency=medium ++ ++ [ Matthias Klose ] ++ * New upstream snapshot, taken from the trunk. ++ * Update cross-build patches. ++ ++ [ Aurelien Jarno ] ++ * For riscv64, change --with-arch to rv64gc (from rv64imafd). ++ ++ -- Matthias Klose Sun, 06 Feb 2022 13:20:19 +0100 ++ ++gcc-12 (12-20220126-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ ++ -- Matthias Klose Wed, 26 Jan 2022 11:49:18 +0100 ++ ++gcc-12 (12-20220119-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Disable D on ia64, m68k, sh4 and sparc64. ++ * Disable D on KFreeBSD and the Hurd. ++ * Revert the PR ada/79724 patch, conflicting with the local ada-gcc-name ++ patch. ++ * Apply proposed patch for PR ada/103538 for x32. ++ ++ -- Matthias Klose Wed, 19 Jan 2022 10:31:16 +0100 ++ ++gcc-12 (12-20220116-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Remove the gdc-driver-nophobos patch. ++ * Configure instead with --with-libphobos-druntime-only=yes. ++ ++ -- Matthias Klose Sun, 16 Jan 2022 16:43:31 +0100 ++ ++gcc-12 (12-20220106-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Update symbols file for libgphobos. ++ ++ -- Matthias Klose Thu, 06 Jan 2022 11:30:02 +0100 ++ ++gcc-12 (12-20211217-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Bump libgphobos soversion. ++ * Update libgccjit and libgphobos symbols files. ++ ++ -- Matthias Klose Fri, 17 Dec 2021 04:55:01 +0100 ++ ++gcc-12 (12-20211211-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Use gnat-11/gdc-11 as bootstrap compilers for recent releases. ++ ++ -- Matthias Klose Sat, 11 Dec 2021 13:49:46 +0100 ++ ++gcc-12 (12-20211206-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Add gdc as a build dependency for native builds. ++ * Update symbols files for libgcc-s, libgccjit, libgphobos. ++ ++ -- Matthias Klose Mon, 06 Dec 2021 11:03:14 +0100 ++ ++gcc-12 (12-20211127-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ ++ -- Matthias Klose Sat, 27 Nov 2021 08:51:55 +0100 ++ ++gcc-12 (12-20211126-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Lower severity of the gcc-N-base packages. Addresses: #997826. ++ * Fix gcc-12-locales build. Closes: #999764. ++ * Fix the gcc-12 cross builds (Helmut Grohne). Closes: #1000459. ++ * Configure --with-cpu=power9 on ppc64el on the Ubuntu development ++ release. ++ ++ -- Matthias Klose Fri, 26 Nov 2021 10:00:23 +0100 ++ ++gcc-12 (12-20211117-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Drop brig/libhsail packaging bits. ++ * Update breaks/replaces, update textdomain. Closes: #999764. ++ * Move libtsan_preinit.o into libgcc-12-dev. Closes: #999752. ++ * Bump standards version. ++ ++ -- Matthias Klose Wed, 17 Nov 2021 22:08:35 +0100 ++ ++gcc-12 (12-20211113-1) experimental; urgency=medium ++ ++ * New upstream snapshot, taken from the trunk. ++ * Configure with --enable-offload-defaulted. ++ ++ -- Matthias Klose Sat, 13 Nov 2021 15:13:11 +0100 ++ ++gcc-11 (11.2.0-10) unstable; urgency=medium ++ ++ * Update to git 20211021 from the gcc-11 branch. ++ - Fix PR rtl-optimization/102627, PR target/100340 (Darwin), ++ PR target/102588 (SPARC), PR debug/102441, PR libstdc++/101583, ++ PR libstdc++/102592, PR libstdc++/100187, PR libstdc++/100237, ++ PR libstdc++/100249, PR libstdc++/100287, PR libstdc++/100285, ++ PR libstdc++/100863, PR libstdc++/100863, PR libstdc++/65816, ++ PR libstdc++/102048, PR libstdc++/90787, PR libstdc++/101599, ++ PR libstdc++/101589, PR libstdc++/101483, PR libstdc++/100606, ++ PR libstdc++/101960, PR c++/102535, PR libstdc++/101960, ++ PR libstdc++/101870, PR libstdc++/101923, PR libstdc++/102425, ++ PR libstdc++/101761, PR libstdc++/99876, PR libstdc++/102074, ++ PR libstdc++/102270, PR libstdc++/102270, PR libstdc++/102280, ++ PR libstdc++/102667, PR target/102761 (x86), PR target/100316 (RISCV), ++ PR target/100208 (GCN), PR ada/100486, PR c++/102642, PR fortran/102745, ++ PR fortran/102716. ++ ++ [ Nicolas Boulenguez ] ++ * ada/check_ali_update: add tests, print changed sources with changed .ali ++ files, always report, interrupt when DEB_CHECK_ALI_UPDATE. ++ * ada/debian_packaging.mk: drop BUILDER_JOBS now redundant with ++ dpkg/buildopts.mk. ++ * ada/debian_packaging.mk: update comments. ++ * ada: avoid -L for local links with freshly built objects. ++ * ada/confirm_debian_bugs.py: remove bugs fixed in gnat-11. ++ * libgnat: strip unreproducible build flags from libgnat-dev .ali files. ++ ++ [ Matthias Klose ] ++ * Backport amdgcn changes from the trunk: ++ - Fix register issue for global_load assembler functions. ++ - amdgcn: Add -mxnack and -msram-ecc [PR 100208]. ++ - amdgcn: Fix attributes for LLVM-12 [PR 100208]. ++ - Support LLVM 13 assembler syntax. ++ ++ -- Matthias Klose Thu, 21 Oct 2021 10:17:22 +0200 ++ ++gcc-11 (11.2.0-9) unstable; urgency=medium ++ ++ * Update to git 20211010 from the gcc-11 branch. ++ - Fix PR debug/102441, PR c++/98216, PR c++/91292, PR debug/102373, ++ PR c++/64697, PR target/102498 (x86), PR tree-optimization/102400, ++ PR tree-optimization/102451, PR sanitizer/102515, PR c++/102640, ++ PR c++/99904, PR c++/102547, PR c++/102535, PR c++/95567, PR c++/102412, ++ PR c++/98486, PR c++/102163, PR c++/101344, PR c++/101803, ++ PR c++/101883, PR c++/102548, PR c++/102496, PR c++/102454, ++ PR d/102574, PR fortran/102458, PR fortran/102458, PR fortran/102520, ++ PR libgomp/96661. ++ ++ -- Matthias Klose Sun, 10 Oct 2021 18:52:10 +0200 ++ ++gcc-11 (11.2.0-8) unstable; urgency=medium ++ ++ * Update to git 20210924 from the gcc-11 branch. ++ - Fix PR target/102107 (PPC), PR target/102107 (PPC), PR fortran/102366, ++ PR fortran/102287, PR fortran/102311, PR target/102222 (S390), ++ PR tree-optimization/102400, PR tree-optimization/102451. ++ * ARM: pass architecture extensions to assembler if supported. Backported ++ from the trunk. ++ ++ -- Matthias Klose Fri, 24 Sep 2021 08:44:25 +0200 ++ ++gcc-11 (11.2.0-7) unstable; urgency=medium ++ ++ * Update to git 20210918 from the gcc-11 branch. ++ - Fix PR rtl-optimization/102306, PR target/101934 (AArch64), PR c++/88578, ++ PR c++/102295, PR target/97142 (PPC), PR ada/101970, PR c++/102305, ++ PR d/102185, PR fortran/85130, PR fortran/82314, PR fortran/98490, ++ PR fortran/101327. ++ * Fix libgcc-s1 symbols file for alpha. ++ * Don't build libjit on kfreebsd. See #994035. ++ ++ -- Matthias Klose Sun, 19 Sep 2021 10:08:56 +0200 ++ ++gcc-11 (11.2.0-5) unstable; urgency=medium ++ ++ * Update to git 20210909 from the gcc-11 branch. ++ - Fix PR c++/60318, PR target/102224 (x86), PR target/102115 (xtensa), ++ PR tree-optimization/102046, PR tree-optimization/101925, ++ PR middle-end/101824, PR target/102166 (x86), PR target/101849 (PPC), ++ PR c++/100495, PR fortran/100950, PR fortran/100950, PR fortran/102113. ++ * Configure again with --enable-cet, amd64 and x32 only. Closes: #993626. ++ ++ -- Matthias Klose Thu, 09 Sep 2021 13:48:13 +0200 ++ ++gcc-11 (11.2.0-4) unstable; urgency=medium ++ ++ * Update to git 20210902 from the gcc-11 branch. ++ - Fix PR target/101472 (x86), PR target/99744 (x86), PR target/101492 (x86), ++ PR target/101549 (x86), PR target/101471 (x86), PR target/102035 (ARM), ++ PR target/102035 (ARM), PR middle-end/101949, PR ipa/97565, ++ PR debug/101905, PR gcov-profile/89961, PR fortran/87737, ++ PR fortran/46691, PR fortran/99819, PR fortran/98411, PR libstdc++/101965, ++ PR libstdc++/100682, PR libstdc++/100285, PR libstdc++/100180, ++ PR libstdc++/100286, PR libstdc++/100351, PR libstdc++/100286, ++ PR libstdc++/100285, PR libstdc++/100180, PR c++/101592, ++ PR tree-optimization/102124, PR target/101472 (x86), ++ PR target/99744 (x86), PR target/101492 (x86), PR target/101549 (x86), ++ PR target/101471 (x86), PR target/102035 (ARM), PR target/102035 (ARM), ++ PR middle-end/101949, PR ipa/97565, PR debug/101905, ++ PR gcov-profile/89961, PR fortran/87737, PR fortran/46691, ++ PR fortran/99819, PR fortran/98411, PR libstdc++/101965, ++ PR libstdc++/100682, PR libstdc++/100285, PR libstdc++/100180, ++ PR libstdc++/100286, PR libstdc++/100351, PR libstdc++/100286, ++ PR libstdc++/100285, PR libstdc++/100180. ++ * Again, for armhf configure --with-arch=+fp, dropping the --with-fpu= ++ option; keep the old configure options for backports. ++ * Update libgcc-s1 symbols file for sh4. ++ * Remove trailing spaces in symbols files. ++ * Don't configure with --enable-cet on x86 for Debian (old hardware is more ++ valued than recent security features). Closes: #993162, #993172. ++ * Don't run the tests with the installed libstdc++ on slow buildds. ++ * Build again for mipsel and mips64el, too much hassle with separate sources. ++ * Disable the lto build on sparc64, memory issues on the buildd. ++ ++ -- Matthias Klose Thu, 02 Sep 2021 12:23:43 +0200 ++ ++gcc-11 (11.2.0-3) unstable; urgency=high ++ ++ * Update to git 20210823 from the gcc-11 branch. ++ - Fix PR target/101723 (ARM), PR tree-optimization/101373, ++ PR tree-optimization/101868, PR ipa/100600, PR ipa/101261, ++ PR ipa/101726, PR c/100150, PR fortran/99351, PR libstdc++/100139. ++ ++ -- Matthias Klose Mon, 23 Aug 2021 12:15:54 +0200 ++ ++gcc-11 (11.2.0-2) unstable; urgency=medium ++ ++ * Update to git 20210815 from the gcc-11 branch. ++ - Fix PR middle-end/101586, PR rtl-optimization/101562, PR d/101640, ++ PR d/101490, PR d/101441, PR d/101127, PR d/101619, PR d/96435, ++ PR d/101664, PR target/101531 (PPC), PR fortran/101536, ++ PR fortran/101514, PR fortran/101084, PR tree-optimization/101505, ++ PR target/100952 (PPC), PR target/94780 (MIPS), PR target/101132 (MIPS), ++ PR c/101512, PR sanitizer/101749, PR c++/101725, PR c++/100828, ++ PR fortran/101564, PR libstdc++/101866, PR libstdc++/101510, ++ PR libstdc++/101510, PR libstdc++/101056, PR libstdc++/101258, ++ PR gcov-profile/100788, PR middle-end/101624, PR c++/101759, ++ PR c++/101663, PR preprocessor/101638. ++ * Again, configure explicitly --with-fpu=vfpv3-d16 on armhf. ++ * Stop building the native compilers for mipsen targets from this source ++ package. See https://lists.debian.org/debian-gcc/2021/05/msg00011.html. ++ * Update binutils version requirements. ++ ++ -- Matthias Klose Sun, 15 Aug 2021 23:09:35 +0200 ++ ++gcc-11 (11.2.0-1) experimental; urgency=medium ++ ++ * GCC 11.2.0 release. ++ * Update gm2 from the gm2 gcc-11 branch. ++ * Refresh patches. ++ * Update libgfortran symbols file. ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Wed, 28 Jul 2021 15:36:39 +0200 ++ ++gcc-11 (11.1.0-4) experimental; urgency=medium ++ ++ * Update to git 20210714 from the gcc-11 branch. ++ - Fix PR middle-end/101291, PR tree-optimization/101394, PR ipa/101066, ++ PR middle-end/101423, PR tree-optimization/100778, PR target/101377, ++ PR tree-optimization/100778, PR tree-optimization/101229, ++ PR tree-optimization/101173, PR tree-optimization/101280, ++ PR middle-end/101156, PR tree-optimization/100923, ++ PR tree-optimization/101088, PR tree-optimization/101025, ++ PR tree-optimization/101158, PR tree-optimization/101151, ++ PR tree-optimization/101105, PR middle-end/100672, PR target/101175, ++ PR middle-end/101167, PR inline-asm/100785, PR target/100310 (x86), ++ PR target/100856 (ARM), PR target/101016 (ARM), PR middle-end/101062, ++ PR middle-end/101062, PR target/100777 (PPC), PR target/99842 (PPC), ++ PR middle-end/100876, PR c++/100876, PR middle-end/100732, ++ PR middle-end/100684, PR middle-end/100574, PR middle-end/100307, ++ PR middle-end/100250, PR target/100871 (S390), PR target/101046, ++ PR rtl-optimization/101008, PR debug/100852, PR target/100887, ++ PR middle-end/100898, PR target/100887 (x86), PR middle-end/101009, ++ PR tree-optimization/100981, PR tree-optimization/100934, PR ipa/100791, ++ PR analyzer/99212, PR analyzer/101082, PR analyzer/99212, ++ PR analyzer/100615, PR analyzer/100244, PR c++/100879, PR c/100783, ++ PR c/100619, PR inline-asm/100785, PR c/100902, PR c++/101181, ++ PR c++/101247, PR c++/101247, PR c++/101194, PR c++/98832, ++ PR c++/101182, PR c++/100918, PR c++/97420, PR c++/101098, PR c++/100838, ++ PR c++/86355, PR c++/101087, PR c++/101040, PR c++/97566, PR c++/100752, ++ PR c++/101106, PR c/100902, PR c++/101078, PR c++/101029, PR c++/100946, ++ PR d/101273, PR d/101282, PR d/100999, PR d/100967, PR fortran/100227, ++ PR fortran/100283, PR fortran/101123, PR fortran/95501, ++ PR fortran/95502, PR fortran/100965, PR c++/100796, PR preprocessor/96391, ++ PR target/101235 (PPC), PR target/99939 (ARM), PR fortran/93524, ++ PR middle-end/101167, PR libstdc++/91488, PR d/100999, ++ PR libstdc++/100387, PR libstdc++/100806, PR libstdc++/95833, ++ PR libstdc++/91488, PR libstdc++/100940, PR libstdc++/100940, ++ PR libstdc++/100894, PR libstdc++/101034, PR libstdc++/101055, ++ PR libstdc++/100475, PR libstdc++/100982, PR libstdc++/98842, ++ PR libstdc++/100824, PR libstdc++/100824, PR libstdc++/100824, ++ PR libstdc++/100577, PR libstdc++/100770, PR libstdc++/100690, ++ PR libstdc++/100631, PR libstdc++/100631, PR libstdc++/100639. ++ * Fix -fstack-protector on musl (Helmut Grohne). Closes: #989521. ++ * Drop gdb build dependency on mipsel and mips64el for now. ++ Addresses: #990842. ++ ++ -- Matthias Klose Wed, 14 Jul 2021 10:19:29 +0200 ++ ++gcc-11 (11.1.0-3) experimental; urgency=medium ++ ++ * Update to git 20210610 from the gcc-11 branch. ++ - Fix PR bootstrap/100731, PR c++/91859, PR middle-end/100576, ++ PR rtl-optimization/100590, PR c++/100580, PR rtl-optimization/100342, ++ PR target/94177 (PPC), PR target/100767 (ARM), PR target/99725 (ARM), ++ PR target/100626 (x86), PR tree-optimization/100519, PR ipa/100513, ++ PR middle-end/100509, PR tree-optimization/100492, PR target/99960 (ARM), ++ PR c++/100281, PR target/99977 (ARM), PR bootstrap/100552, ++ PR target/100419 (ARM), PR target/100563 (ARM), ++ PR tree-optimization/100566, PR middle-end/100508, PR middle-end/100471, ++ PR target/99988 (AArch64), PR c/100550, PR c++/91859, PR c++/100797, ++ PR c++/95719, PR c++/100666, PR c++/100502, PR c++/100489, ++ PR c++/100281, PR c++/100634, PR c++/100659, PR c++/100367, ++ PR c++/96299, PR c++/100261, PR c++/100372, PR c++/100644, ++ PR c++/100205, PR c++/93314, PR fortran/98411, PR fortran/100656, ++ PR fortran/100602, PR fortran/100551, PR fortran/100633, ++ PR preprocessor/100646, PR preprocessor/100392, PR middle-end/100471, ++ PR sanitizer/100379, PR libstdc++/100676, PR libstdc++/100833, ++ PR libstdc++/100768, PR libstdc++/99453, PR libstdc++/100479, ++ PR libstdc++/100361, PR libstdc++/100630, PR libstdc++/99006, ++ PR libstdc++/99453, PR target/100885 (x86), PR ipa/99122, ++ PR target/100333 (ARM), PR c/100920, PR c++/100065, PR c++/100963, ++ PR c++/91706, PR c++/100862, PR c++/100102, PR d/100964, PR d/100935, ++ PR d/100882, PR fortran/98301, PR fortran/99839, PR libstdc++/100889, ++ PR libstdc++/100900. ++ * gcc-snapshot: Remove compiler provides. Addresses: #921877. ++ * Update libasan6 symbols for riscv64 (Helmut Grohne). Closes: #989205. ++ ++ -- Matthias Klose Thu, 10 Jun 2021 10:05:34 +0200 ++ ++gcc-11 (11.1.0-2) experimental; urgency=medium ++ ++ * Update to git 20210508 from the gcc-11 branch. ++ - Fix PR target/100200 (AArch64), PR target/100200 (AArch64), ++ PR tree-optimization/100239, PR rtl-optimization/100254, PR debug/100255, ++ PR rtl-optimization/100148, PR c++/89565, PR c++/93383, PR c++/95291, ++ PR c++/99200, PR c++/99683, PR c++/100161, PR c++/96380, ++ PR fortran/100218, PR fortran/100154, PR target/98952 (PPC), ++ PR libstdc++/100290, PR rtl-optimization/100225, PR target/100402 (x86), ++ PR rtl-optimization/84878, PR target/100217 (S390), PR target/100232, ++ PR rtl-optimization/100263, PR rtl-optimization/100411, ++ PR tree-optimization/100253, PR tree-optimization/100278, PR ipa/100308, ++ PR tree-optimization/100414, PR tree-optimization/100329, ++ PR target/100375 (nvptx), PR rtl-optimization/100230, ++ PR target/100311 (ARM), PR target/100302 (AArch64), ++ PR target/100305 (AArch64), PR target/100270 (AArch64), ++ PR target/100236 (ARM), PR target/100182 (x86), PR c++/100362, ++ PR c++/100319, PR fortran/100274, PR c/100450, PR target/98952 (PPC), ++ PR libgomp/100352, PR libstdc++/100384, PR libstdc++/100259, ++ PR libstdc++/100298, PR libstdc++/100290. ++ * Don't revert the PR 85678 patch anymore for backports (defaulting ++ to -fcommon everywhere). ++ * Remove obsolete verbose-lto-linker patch. ++ * Remove obsolete libgomp-no-werror patch. ++ * Remove the obsolete Linaro build support and patches. ++ * Fix building the libhwasan0-dbg package. ++ * Remove some obsolete breaks, conflicts, replaces. ++ * Fix running the libstdc++-v3 tests against the installed libstdc++6, ++ when the libstdc++6 package is not built from this source. ++ * README.source: Document how to run a single test. ++ * Don't run some tests from the guality test suite on armhf. These fail ++ on every target, but seem to hang on the buildds occasionally on armhf. ++ * Don't apply the arm-multilib-soft patch when building without ++ armhf/armsf multilib packages. ++ * Lower the dejagnu timeout on armhf from 600 to 300. ++ * For armhf configure --with-arch=+fp, dropping the --with-fpu= option. ++ * Explicitly call autoconf2.69 where necessary. ++ * Remove packaging support for oldish backports. Last supported releases ++ are Debian 8 (jessie) and Ubuntu 12.04 LTS (precise). ++ * Fix building the gcn offload compiler without the nvptx offload compiler. ++ * README.snapshot: Update wrapper script. Addresses: #862176. ++ ++ -- Matthias Klose Sat, 08 May 2021 13:50:11 +0200 ++ ++gcc-11 (11.1.0-1) experimental; urgency=medium ++ ++ * GCC 11.1.0 release. ++ * Refresh patches. ++ * Update gm2 from the gm2 trunk. ++ * gm2: Ignore gm2version.o stage diff, needed at least on some ++ archtectures (m68k, riscv64) ++ * Only apply the gm2-texinfo patch for dfsg builds. ++ * Configure with --enable-checking=release. ++ * Disable usage stats for release builds. ++ * Update and re-apply the gcc-foffload-default patch. ++ * Update NEWS.html and gcc.css, remove fav.ico, and use the local gcc.css. ++ * html2text -ascii -style pretty debian/NEWS.html > debian/NEWS.gcc. ++ * Enable the address sanitizer for riscv64. ++ ++ -- Matthias Klose Tue, 27 Apr 2021 13:50:54 +0200 ++ ++gcc-11 (11-20210424-1) experimental; urgency=medium ++ ++ * GCC 11 release candidate 2, taken from the gcc-11 branch (20210424) ++ ++ -- Matthias Klose Sat, 24 Apr 2021 08:00:02 +0200 ++ ++gcc-11 (11-20210420-1) experimental; urgency=medium ++ ++ * GCC 11 release candidate 1, taken from the gcc-11 branch (20210420) ++ * Update gm2 from the gm2 trunk. ++ * Revert the fix for PR target/100067, breaking the ARM multilib build. ++ * Update watch file. ++ * Stop building sf/hf multilibs on upcoming Ubuntu releases. ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Tue, 20 Apr 2021 15:31:57 +0200 ++ ++gcc-11 (11-20210417-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210417) ++ * Use explicit autoconf version for bullseye. ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Sat, 17 Apr 2021 11:29:15 +0200 ++ ++gcc-11 (11-20210412-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210412) ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Sun, 11 Apr 2021 13:46:08 +0200 ++ ++gcc-11 (11-20210404-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210404) ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Sun, 04 Apr 2021 13:42:51 +0200 ++ ++gcc-11 (11-20210327-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210327) ++ - Fix bootstrap on s390x. ++ - Fix PR target/99422. Closes: #984870. ++ - Fix PR sanitizer/98920. Closes: #949192. ++ * Fix packaging of snapshot builds, really include the jit build in ++ the snapshot build. ++ ++ -- Matthias Klose Sat, 27 Mar 2021 13:19:03 +0100 ++ ++gcc-11 (11-20210319-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210319) ++ * Fix --as-needed specs for -fsanitize=* options for backports. ++ * Export DEB_CHECK_ALI_UPDATE=1 (currently commented out). This should be ++ checked after the gnat transition has been prepared in experimental, and ++ just before doing the gnat's defaults change in unstable. ++ * debian/ada/check_ali_update.sh: Fix syntax errors. ++ Always run the script. ++ * Disable building gnat on alpha, see PR ada/98724. ++ * Also build unstripped frontends on mipsel/mips64el. ++ * Update libgphobos symbols file. ++ * Don't remove files in debian/tmp-{nvptx,gcn} when building the binary ++ targets. The installed offload compilers are needed to run the tests. ++ * Allow to save some disk space for the build, by ++ - saving the files needed for the hppa64 and jit builds, and removing ++ the build directories. ++ - saving the results from the check runs, and removing files created ++ during the check runs. ++ * Fix installation of the jit header files. ++ ++ -- Matthias Klose Fri, 19 Mar 2021 09:57:02 +0100 ++ ++gcc-11 (11-20210310-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210310) ++ * Work around dwz issue on mips64el stripping go1. ++ * Replace @tie{} string with a space in the man pages. LP: #1405685. ++ * Don't run the memory usage stats on m68k. ++ ++ -- Matthias Klose Wed, 10 Mar 2021 11:46:55 +0100 ++ ++gcc-11 (11-20210306-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210306) ++ * Update libgphobos symbols file. ++ * Fix unstripped gcc-snapshot builds. ++ ++ -- Matthias Klose Sat, 06 Mar 2021 11:55:56 +0100 ++ ++gcc-11 (11-20210227-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210227) ++ * Build gnat/alpha again in snapshot and cross builds. ++ ++ -- Matthias Klose Sat, 27 Feb 2021 09:46:52 +0100 ++ ++gcc-11 (11-20210220-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210220) ++ * Apply proposed patch for PR ada/98996. ++ * Update libgphobos symbols file. ++ * Update usage-wrapper script. ++ ++ -- Matthias Klose Sat, 20 Feb 2021 17:21:38 +0100 ++ ++gcc-11 (11-20210207-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210207) ++ * Fix packaging logic to build libgphobos. ++ * Update libstdc++ symbols for ppc64 and ppc64el. ++ * Explicitly configure with --enable-s390-excess-float-precision on s390x ++ to match the behaviour of the default GCC (gcc-10). ++ * Update libgphobos symbols file. ++ * Don't build the gnat alpha cross compiler for now. PR ada/98724. ++ ++ -- Matthias Klose Sun, 07 Feb 2021 14:55:47 +0100 ++ ++gcc-11 (11-20210130-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210130) ++ - libgo 1.16 release candidate 1. ++ * Remove the work around for PR ada/98228, fixed. ++ * Disable profiled bootstrap on powerpc as a test ... ++ * Disable lto build on ia64 as a test ... ++ * Don't turn on DWARF 5 by default, where GCC 11 is not the default.. ++ * Require binutils 2.25.2 when defaulting to DWARF 5. ++ * Update libgphobos symbols file. ++ * Bump standards version. ++ ++ -- Matthias Klose Sat, 30 Jan 2021 13:00:42 +0100 ++ ++gcc-11 (11-20210123-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210123) ++ * Update gm2 from the gm2 trunk. ++ * Explicitly use autoconf2.69 where necessary. ++ * Use the same breaks relations for libgcc-s2 and libgcc-s4 as for ++ libgcc-s1. Addresses: #980770. ++ ++ -- Matthias Klose Sat, 23 Jan 2021 13:12:36 +0100 ++ ++gcc-11 (11-20210116-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210116) ++ * Fix --enable-link-serialization=1, and enable LTO builds on ppc64el again. ++ * Update libgphobos symbols file. ++ * gcc: Prefix LLINKER with /usr/bin/time -v. ++ * Don't build runtime libraries for the jit build. ++ * Apply proposed fix for PR go/98496 (Svante Signell). ++ * Work around PR ada/98228, not using lto for gnat1 on s390x. ++ * PR sanitizer/98699: Don't enable --as-needed with -fsanitize=* options. ++ * Use --push-state/--pop-state for gold everywhere. ++ * Fix parallel linking of cc1gm2. ++ * Allow to build with some memory usage statistics. ++ ++ -- Matthias Klose Sat, 16 Jan 2021 15:49:18 +0100 ++ ++gcc-11 (11-20210110-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210110) ++ * Build the gcn offload compiler based on amdgcn-tools (based on LLVM 9), ++ remove the conflict with gcc-10-offload-amdgcn. ++ * Limit lto links on sparc64. ++ ++ -- Matthias Klose Sun, 10 Jan 2021 13:01:43 +0100 ++ ++gcc-11 (11-20210109-2) experimental; urgency=medium ++ ++ * Support link serialization for m2. ++ * Fix -Wformat-diag warnings for power*-linux builds. ++ ++ -- Matthias Klose Sat, 09 Jan 2021 20:27:49 +0100 ++ ++gcc-11 (11-20210109-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210109) ++ * Provide timing and resource information for all builds. ++ * Build the offload compilers using newlib 4.1.0. ++ * gcc-11-source: Depend on time. ++ * Disable the lto build on s390x, PR ada/98228. ++ ++ -- Matthias Klose Sat, 09 Jan 2021 18:48:15 +0100 ++ ++gcc-11 (11-20210102-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20210102) ++ * Bump libgo soname. ++ * Fix libgo build failures. ++ ++ -- Matthias Klose Sat, 02 Jan 2021 15:59:18 +0100 ++ ++gcc-11 (11-20201228-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20201228) ++ * Build the gcn offload compiler based on amdgcn-tools (based on LLVM 9). ++ * Fix hppa64 snapshot builds. ++ * Fix cross installation of g++-mapper-server. ++ * Update libgcc-s1 symbols file for arm64. ++ ++ -- Matthias Klose Mon, 28 Dec 2020 20:02:27 +0100 ++ ++gcc-11 (11-20201222-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20201222) ++ * Fix installation of g++-mapper-server. ++ * Apply proposed patch for PR bootstrap/98324. enable LTO builds again. ++ * Disable LTO build on s390x, see PR 976846. ++ ++ -- Matthias Klose Tue, 22 Dec 2020 14:41:42 +0100 ++ ++gcc-11 (11-20201216-2) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20201216) ++ * Rely on the upstream GNU versioned symbols for libstdc++6. ++ * Bump phobos soname for GCC 11. ++ * Add an autopkg test for linking libphobos. ++ * Build gnat again, without building libgnat_util. ++ * Build the gcn offload compiler using LLVM 11, and work around the ++ broken as in LLVM 11. See also LLVM Bug 48201 for this issue and ++ https://reviews.llvm.org/D73999 for the patch causing the issue. ++ * Remove hsa offload packaging bits. ++ * For LTO builds, configure with --enable-link-serialization instead of ++ --enable-link-mutex. ++ * Package additional gnat files. ++ * Update the gm2 packaging. ++ * Add conflicts with binary packages built from gcc-10. ++ * Build libhwasan (AArch64 only). ++ * Don't strip the sanitizer libraries, these are only used for debugging. ++ LP: #1894166. ++ * Explicitly configure with --disable-cet when building for older releases. ++ * Don't run the libgphobos-link test on powerpc architectures. ++ * Install libstdc++6 gdb pretty printer files in /usr/share/gcc (unversioned). ++ * Don't mark the libgcc-sN cross packages with XB-Important/Protected: yes. ++ * Relax the libc-dev dependencies for kfreebsd. ++ * Limit checking when configuring with --enable-checking=extra,rtl. ++ * Apply proposed patch for PR bootstrap/95582. ++ * Enable profiled builds, LTO build for 64bit architectures. ++ * Add -doc conflicts with GCC 10. Closes: #977408. ++ * Don't install the lto-dump binary in the hppa64 package. Closes: #977461. ++ * Let the gcn offload compilers conflict, both shipping the linker tools, ++ which should be split out into a separate package. Addresses: #977461. ++ * Regenerate libgm2/configure. Closes: #977409. ++ * Install hwasan lib in libgcc-dev (arm64 only). ++ ++ -- Matthias Klose Wed, 16 Dec 2020 21:28:34 +0100 ++ ++gcc-10 (10.2.0-17) unstable; urgency=medium ++ ++ * Update to git 20201111 from the gcc-10 branch. ++ - Fix PR tree-optimization/97764, PR target/97685 (x86), ++ PR target/97360 (PPC), PR lto/97508, PR c++/97412, PR fortran/97652, ++ PR fortran/92793, PR fortran/92793, PR target/85486, PR libstdc++/96269, ++ PR libstdc++/97731, PR libstdc++/97362, PR libstdc++/92285. ++ ++ -- Matthias Klose Wed, 11 Nov 2020 17:50:04 +0100 ++ ++gcc-10 (10.2.0-16) unstable; urgency=medium ++ ++ * Update to git 20201029 from the gcc-10 branch. ++ - Fix PR rtl-optimization/97439, PR target/96759 (RISCV), ++ PR target/97506 (x86), PR target/97327 (ARM), PR target/96914 (ARM), ++ PR target/96914 (ARM), PR target/96914 (ARM), PR rtl-optimization/97386, ++ PR sanitizer/97294, PR target/97291 (ARM), PR ipa/96394, PR ipa/97404, ++ PR ipa/97295, PR target/97251 (ARM), PR target/97349 (AArch64), ++ PR tree-optimization/97357, PR tree-optimization/97255, PR c++/97197, ++ PR c++/97328, PR c++/97010, PR c++/97197, PR c++/96229, PR fortran/95979, ++ PR libstdc++/95322, PR libstdc++/97132, PR libstdc++/95788, ++ PR tree-optimization/97081, PR tree-optimization/97456, ++ PR c++/95132, PR c++/96241. ++ * Also enable the extra checking on amd64, arm64, ppc64el, s390x, and don't ++ strip the executables. This will be reverted within a few weeks, please ++ don't send bug reports about that. ++ * Mark libgcc-sN with XB-Important/Protected: yes. Addresses: #972936. ++ ++ -- Matthias Klose Thu, 29 Oct 2020 16:36:48 +0100 ++ ++gcc-10 (10.2.0-15) unstable; urgency=medium ++ ++ * Update to git 20201011 from the gcc-10 branch. ++ - Fix PR target/97302, PR rtl-optimization/97313, PR middle-end/95189, ++ PR middle-end/95886, PR target/97150 (AArch64), PR target/96313 (AArch64), ++ PR tree-optimization/97236, PR target/96456 (S390), PR gcov-profile/97193, ++ PR c++/88115, PR libstdc++/97273, PR c++/96994, PR c++/97195, ++ PR c++/97145, PR fortran/97272, PR bootstrap/97163, PR gcov-profile/96913. ++ * On armel, armhf, configure with --enable-checking=yes,extra,rtl, and don't ++ strip the executables for now. ++ ++ -- Matthias Klose Sun, 11 Oct 2020 12:40:50 +0200 ++ ++gcc-10 (10.2.0-14) experimental; urgency=medium ++ ++ * Update to git 20201002 from the gcc-10 branch. ++ - Fix PR gcov-profile/64636, PR tree-optimization/96979, ++ PR gcov-profile/97069, PR target/96795 (ARM), PR target/96827 (ARM), ++ PR bootstrap/97183, PR target/97184 (x86). ++ * Fix PR tree-optimization/97236, taken from the trunk. Stop reverting the ++ fixes for PR tree-optimization/97043, PR tree-optimization/96522. ++ Closes: #971027. ++ * Enable gnat on m68k again (Adrian Glaubitz). Closes: #971551. ++ ++ -- Matthias Klose Fri, 02 Oct 2020 14:12:39 +0200 ++ ++gcc-10 (10.2.0-13) unstable; urgency=medium ++ ++ * Update to git 20200930 from the gcc-10 branch. ++ - Fix PR target/97247 (x86), PR target/97231 (x86), PR middle-end/97054. ++ - Backport SVE ACLE and stack-protector patches (ARM, AArch64). ++ * Revert the fix for PR tree-optimization/96522. See #971027. ++ ++ -- Matthias Klose Wed, 30 Sep 2020 12:29:35 +0200 ++ ++gcc-10 (10.2.0-12) unstable; urgency=medium ++ ++ * Update to git 20200927 from the gcc-10 branch. ++ - Fix PR target/71233 (AArch64), PR middle-end/97073. ++ * Revert the fix for PR tree-optimization/97043. Addresses: #971027. ++ ++ -- Matthias Klose Tue, 29 Sep 2020 12:37:37 +0200 ++ ++gcc-10 (10.2.0-11) unstable; urgency=medium ++ ++ * Update to git 20200927 from the gcc-10 branch. ++ - Fix PR middle-end/95464, PR target/96683 (ARM), PR target/97032, ++ PR target/97166 (PPC), PR fortran/96041, PR fortran/93423, ++ PR fortran/93423, PR libstdc++/97167, PR libstdc++/96803, ++ PR libstdc++/96803, PR libstdc++/94681, PR libstdc++/94681, ++ PR libstdc++/97101, PR libstdc++/94160. ++ - libgo: don't put golang.org packages in zstdpkglist.go. Closes: #970604. ++ ++ [ Samuel Thibault ] ++ * Limit systemtap-sdt-dev build dependency to linux architectures. ++ Closes: #970614. ++ ++ -- Matthias Klose Sun, 27 Sep 2020 12:19:01 +0200 ++ ++gcc-10 (10.2.0-9) unstable; urgency=high ++ ++ * Update to git 20200918 from the gcc-10 branch. ++ - Fix PR preprocessor/96935, PR tree-optimization/97053, ++ PR target/97028 (x86), PR debug/96690, PR tree-optimization/96522, ++ PR tree-optimization/97043. ++ ++ -- Matthias Klose Fri, 18 Sep 2020 20:23:58 +0200 ++ ++gcc-10 (10.2.0-8) unstable; urgency=medium ++ ++ * Update to git 20200914 from the gcc-10 branch. ++ - Fix PR tree-optimization/96579, PR tree-optimization/96370, ++ PR tree-optimization/96514, PR middle-end/96369, PR lto/96385, ++ PR tree-optimization/96349, PR bootstrap/96203, PR lto/95604, ++ PR debug/93865, PR debug/94235, PR c++/96901, PR lto/94311, ++ PR debug/96729, PR c++/96901, PR c++/96862, PR fortran/96859. ++ * Fix libstdc++ symbols file for armel, no pretty formatting allowed ++ in symbols files. ++ ++ -- Matthias Klose Mon, 14 Sep 2020 11:30:32 +0200 ++ ++gcc-10 (10.2.0-7) unstable; urgency=medium ++ ++ * Update to git 20200910 from the gcc-10 branch. ++ - Fix PR c++/95164, PR target/85830 (PPC), PR tree-optimization/96820, ++ PR target/96808 (PPC), PR tree-optimization/96597, ++ PR tree-optimization/88240, PR tree-optimization/96854, ++ PR target/96551 (x86), PR d/96924, PR fortran/95398, PR fortran/94672, ++ PR libstdc++/92978, PR libstdc++/96851, PR target/96357 (AArch64), ++ PR fortran/95109, PR fortran/94690. ++ * Update libasan and libgfortran symbols files. ++ * Replace the libstdc++ symbols file on armel with one based on ++ symbol versions (versions different than for other architectures). ++ Closes: #954954. ++ ++ -- Matthias Klose Thu, 10 Sep 2020 17:24:36 +0200 ++ ++gcc-10 (10.2.0-6) unstable; urgency=medium ++ ++ * Update to git 20200831 from the gcc-10 branch. ++ - Fix PR target/96744 (x86), PR target/94538 (ARM), PR middle-end/87256, ++ PR tree-optimization/96722, PR tree-optimization/96758, ++ PR target/95450, PR tree-optimization/96535, PR c/96549, PR fortran/93553, ++ PR middle-end/96459, PR tree-optimization/96730, PR ipa/95320, ++ PR target/96682 (ARM), PR target/96506 (PPC), PR target/96536 (x86), ++ PR target/96562 (x86), PR target/93897 (x86), PR lto/95362, ++ PR lto/95548, PR c/96545, PR c++/96497, PR c++/95428, PR c++/96199, ++ PR c++/96106, PR c++/96164, PR d/96157, PR d/96250, PR d/96254, ++ PR d/96301, PR fortran/95882, PR fortran/96486, PR fortran/93553, ++ PR middle-end/96459, PR libstdc++/71960, PR libstdc++/96766, ++ PR libstdc++/96718, PR target/96493 (PPC), PR ipa/96482, PR ipa/96291, ++ PR target/96243 (x86), PR target/96530 (PPC), PR target/96446 (PPC), ++ PR c++/96106, PR c++/96164, PR fortran/96312, PR libstdc++/89760, ++ PR libstdc++/95749. ++ * Disable go on sh4. Closes: #969221. ++ * Update patch for CUDA and __float128. Closes: #968672. ++ ++ -- Matthias Klose Mon, 31 Aug 2020 12:27:30 +0200 ++ ++gcc-10 (10.2.0-5) unstable; urgency=medium ++ ++ * Update to git 20200808 from the gcc-10 branch. ++ - Fix PR target/96191 (ARM), PR target/96191 (AArch64), ++ PR tree-optimization/96483, PR middle-end/96426, PR debug/96354, ++ PR target/95435 (x86), PR tree-optimization/96058, PR middle-end/96335, ++ PR lto/45375, PR c/96377, PR c++/96082, PR c++/95591, PR c++/95599, ++ PR c++/95823, PR c++/95824, PR c++/95895, PR d/96140, ++ PR fortran/96319, PR fortran/95612, PR fortran/95585. ++ ++ -- Matthias Klose Sat, 08 Aug 2020 13:31:03 +0200 ++ ++gcc-10 (10.2.0-3) unstable; urgency=medium ++ ++ * Update to git 20200725 from the gcc-10 branch. ++ - Fix PR target/96190 (SPARC), PR target/96236 (PPC), PR target/96260, ++ PR fortran/95980, PR fortran/95980, PR fortran/96086, PR fortran/89574, ++ PR fortran/96220, PR fortran/96018. ++ * Re-enable gm2, disabled by accident in 10.2.0-1. ++ * Refresh gm2 patches. ++ * Apply proposed gdc patch (Iain Buclaw). Closes: #966026. ++ * Apply proposed patch for PR bootstrap/96203, add -fcf-protection=check. ++ ++ -- Matthias Klose Sat, 25 Jul 2020 14:52:31 +0200 ++ ++gcc-10 (10.2.0-1) unstable; urgency=medium ++ ++ * GCC 10.2.0 release. ++ - Fix PR target/95726 (AArch64), PR target/96174 (x86), PR middle-end/95114, ++ PR tree-optimization/96146, PR middle-end/96194, PR c++/95789, ++ PR c++/96104, PR c++/96179. ++ - Fix missing dependencies for selftests which occasionally causes ++ failed builds. Closes: #960913. ++ * Update gm2 from the gm2 gcc-10 branch. ++ * Update the patch for PR lto/95604, replacing the error with a warning. ++ * Build the GC enabled libobjc on arm64, mips and mipsel as well. ++ * libgo: Merge the 1.14.6 changes, taken from the trunk. ++ * Fix ASAN_INTERCEPT_VFORK related symbols. (Helmut Grohne). Closes: #965246. ++ ++ -- Matthias Klose Thu, 23 Jul 2020 12:15:54 +0200 ++ ++gcc-10 (10.1.0-6) unstable; urgency=medium ++ ++ * Update to git 20200714 from the gcc-10 branch. ++ - Fix PR lto/95604, PR target/94891 (AArch64), PR target/94791 (AArch64), ++ PR ipa/96130, PR middle-end/94600, PR middle-end/95270, PR c++/96063, ++ PR c++/96077. ++ * Also package the nvptx offload compiler on arm64. ++ ++ -- Matthias Klose Tue, 14 Jul 2020 12:07:51 +0200 ++ ++gcc-10 (10.1.0-5) unstable; urgency=medium ++ ++ * Update to git 20200713 from the gcc-10 branch. ++ - Fix PR bootstrap/94998, PR tree-optimization/94969, PR target/95018 (PPC), ++ PR target/95347 (PPC), PR target/95347 (PPC), PR target/95713, ++ PR target/94735 (ARM), PR target/94959 (ARM), PR c++/95505, PR c++/95508, ++ PR fortran/95707, PR fortran/95688, PR fortran/95687, PR fortran/95689, ++ PR fortran/95587, PR fortran/95088, PR lto/94848, PR c/95141, PR c++/95711, ++ PR c++/95736, PR c++/95519, PR c++/95518, PR c++/95813, PR c++/95477, ++ PR c++/95719, PR d/95250, PR fortran/95978, PR fortran/71706, ++ PR fortran/95743, PR fortran/95340, PR fortran/95880, PR fortran/95881, ++ PR fortran/95826, PR fortran/95828, PR fortran/95827, PR fortran/95812, ++ PR fortran/95708, PR target/95105 (AArch64), PR tree-optimization/96075, ++ PR ipa/96040, PR debug/95343, PR fortran/95709, PR fortran/93337, ++ PR fortran/95366, PR fortran/88379, PR fortran/9582 libstdc++/91807, ++ PR libstdc++/91153, PR target/93224, PR libstdc++/95282, PR libstdc++/94627, ++ PR tree-optimization/95857, PR target/95581 (PPC), PR target/96125 (PPC), ++ PR tree-optimization/96133, PR tree-optimization/95804, ++ PR tree-optimization/95638, PR target/95683 (RISCV), PR c++/96105, ++ PR c++/96052, PR c++/95976, PR libstdc++/95322, PR libstdc++/94936, ++ PR libstdc++/94087. ++ * distro-defaults.h: Don't define for offload compilers. ++ * Build the nvptx offload compiler on arm64. ++ * Update the patch for PR lto/95604. ++ ++ -- Matthias Klose Mon, 13 Jul 2020 13:12:42 +0200 ++ ++gcc-10 (10.1.0-4) unstable; urgency=medium ++ ++ * Update to git 20200616 from the gcc-10 branch. ++ - Fix PR ipa/95113, PR target/95525 (x86), PR target/95420 (ARM), ++ PR target/94591 (ARM), PR gcov-profile/95332, PR testsuite/95361, ++ PR target/95355 (x86), PR web/95380, PR c++/95346, PR c++/95562, ++ PR c++/95345, PR c++/95050, PR c++/94817, PR c++/94829, PR c++/95087, ++ PR c++/93310, PR c++/95158, PR c++/92103, PR c++/92633, PR c++/92838, ++ PR c++/95020, PR c++/95386, PR c++/92652, PR c++/93698, PR c++/94128, ++ PR c++/95241, PR c++/95181, PR c++/95371, PR c++/95319, PR c++/95222, ++ PR c++/90212, PR c++/90479, PR c++/91529, PR c++/93822, ++ PR libfortran/95390, PR libfortran/95104, PR libfortran/95104, ++ PR libfortran/95191, PR libgomp/92854, PR libgomp/92854, ++ PR libstdc++/95322, PR libstdc++/77691, PR lto/94848, PR middle-end/95551, ++ PR target/95528, PR c++/95197, PR middle-end/95108, PR debug/95080, ++ PR sanitizer/95634, PR sanitizer/94910, PR c/95580, PR c++/95328, ++ PR c++/95197, PR c++/95440, PR c++/93467, PR c++/95350, PR c++/95560, ++ PR c++/95066, PR c++/94937, PR c++/95344, PR c++/94955, PR c++/90915, ++ PR c++/90915, PR c++/95137, PR fortran/95544, PR fortran/93366, ++ PR fortran/95503, PR fortran/94109, PR fortran/95611, PR fortran/95091, ++ PR libstdc++/95578. ++ * Fix PR lto/95604, proposed patch. ++ * Reorganize the distro defaults patches. ++ ++ -- Matthias Klose Tue, 16 Jun 2020 13:09:42 +0200 ++ ++gcc-10 (10.1.0-3) unstable; urgency=medium ++ ++ * Update to git 20200525 from the gcc-10 branch. ++ - Fix PR target/95255 (x86), PR target/95258 (x86), PR lto/95190, ++ PR target/95169 (x86), PR target/95212 (x86), PR middle-end/94635, ++ PR middle-end/94940, PR d/94970, PR fortran/39695, PR libfortran/95119, ++ PR libstdc++/95289, PR libstdc++/93983. ++ * Configure --with-arch=i686 for the Hurd. Closes: #960929. ++ * Remove the last powerpcspe packaging bits, it's finally gone. ++ * Update watch file. ++ ++ -- Matthias Klose Mon, 25 May 2020 22:55:26 +0200 ++ ++gcc-10 (10.1.0-2) unstable; urgency=medium ++ ++ * Update to git 20200515 from the gcc-10 branch. ++ - Fix PR ipa/94947, PR c/95040, PR middle-end/94724, ++ PR target/94950 (RISCV), PR target/94942 (x86), PR c/94968, PR c/94842, ++ PR c++/95003, PR c++/94885, PR c++/94938, PR c++/94951, PR c++/94907, ++ PR fortran/93497, PR fortran/94672, PR fortran/59107, PR libstdc++/94906, ++ PR libstdc++/94933, PR libstdc++/92894. ++ ++ [ Matthias Klose ] ++ * Remove the unmaintained neon packaging bits. ++ * Add build dependency on unzip to fix libphobos test failures. ++ * libphobos: Fix issue 19861 - core.cpuid reports the wrong number of ++ threads. Closes: #960150. ++ * Build using GCC 10 on recent distro versions. ++ * Fix gnat tests to find the libgnat_utils shared library. Closes: #960270. ++ * Run the testsuite with the offload compilers installed into the temporary ++ install location. ++ * Don't require root for the temp installation of the offload compilers. ++ * Use LLVM 10 for the amdgcn assembler and linker tools. ++ * Don't override the libstdc++ test results when running the libstdc++ abi ++ check. ++ * Update debian/TODO, remove obsolete items, add some testsuite items. ++ * Override some lintian warnings for snapshot builds. ++ * Include jit test results into the summary and the gcc-test-results package. ++ * Fix some lintian warnings. ++ * Don't strip the target object files for the amdgcn offload build. ++ * Stop building the libgcc compat packages for bullseye/sid. ++ ++ [ Nicolas Boulenguez ] ++ * Enable gnat autopkg tests. ++ ++ -- Matthias Klose Fri, 15 May 2020 17:11:03 +0200 ++ ++gcc-10 (10.1.0-1) unstable; urgency=medium ++ ++ * GCC 10.1.0 release. ++ * lib*stdc++6: Depend on lib*gcc-sN instead of lib*gccN. ++ * Build libphobos on hppa-linux-gnu. ++ * Update NEWS files for GCC 10. ++ * Refresh patches. ++ ++ -- Matthias Klose Thu, 07 May 2020 13:44:26 +0200 ++ ++gcc-10 (10-20200502-1) unstable; urgency=medium ++ ++ * GCC 10.1 release candidate. ++ * GCC snapshot, taken from the gcc-10 branch (20200502, 0118d0397f9). ++ - Fix PR objc/94637, @selector() broken for selectors containing repeated ++ colons. Closes: #959127. ++ * Increase the testsuite timeout on riscv64. ++ * Fix sparc64 multilib cross build (Helmut Grohne). Closes: #958909. ++ * Fix GDC Issue 19367 - std.net.curl does not understand HTTP/2 status lines. ++ LP: #1876293. ++ * Update libgphobos symbols files. ++ ++ -- Matthias Klose Sat, 02 May 2020 14:09:59 +0200 ++ ++gcc-10 (10-20200425-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200425, cf3f7b309ffd). ++ - Fix PR middle-end/94647. Closes: #958062. ++ * Fix local patch for PR jit/87808. Closes: #954898. ++ * gcc-snapshot: Depend on nvptx-tools with the nvptx offload compiler. ++ * Provide symlinks for the offload target tools in /accel/. ++ * Don't include lib*gomp1 and libgcc4 in the control file, when not building ++ the common libraries. ++ * Build libphobos on powerpc*, libdruntime only. ++ ++ -- Matthias Klose Sat, 25 Apr 2020 18:07:48 +0200 ++ ++gcc-10 (10-20200418-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200418, c5bac7d127f2). ++ - Fix PR lto/94612, offloading support. ++ - Fix PR rtl-optimization/93974, ICE on ppc64el with -O3. ++ ++ [ Nicolas Boulenguez ] ++ * Remove ada-lib-info-file-prefix-map.diff (see #87972). ++ ++ [ Matthias Klose ] ++ * libgcc-sN: Don't add the libgcc-N-dev breaks for backports. ++ * Include the complete offload compilers in the gcc-snapshot builds. ++ ++ -- Matthias Klose Sat, 18 Apr 2020 11:56:38 +0200 ++ ++gcc-10 (10-20200411-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200411, f883c46b487). ++ * Fix gnat cross builds. ++ * Strip again the compiler executables. ++ ++ -- Matthias Klose Sun, 12 Apr 2020 15:12:15 +0200 ++ ++gcc-10 (10-20200410-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200410, 7478addd84a). ++ ++ [ Matthias Klose ] ++ * Update libgccjit and libgphobos symbols files. ++ * Remove the libgcc-sN provides from the last upload. ++ * Don't install the empty gcc_lib_dir in gcc-N-base. ++ * Configure with -enable-libphobos-checking=release. ++ ++ [ Nicolas Boulenguez ] ++ * Remove some dependencies older than oldoldstable. ++ * Build gnat. Remove obsolete no_install option for libgnat. ++ * ada-lib-info-file-source-date-epoch.diff: port fix from gcc-9. ++ * ada: install libgnat-BV.so without adding a .1 suffix. ++ * Rename libgnatvsn to libgnat_util (following upstream). ++ Make the compatibility project abstract instead of generating twice. ++ * ada-changes-in-autogen-output.diff: keep more upstream default values in ++ order to reduce the diff noise. ++ ++ -- Matthias Klose Fri, 10 Apr 2020 14:45:04 +0200 ++ ++gcc-10 (10-20200402-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200402, 86c92411320). ++ * Fix PR target/94254 (PPC), proposed patch. ++ * Update libstdc++6 symbols file for armel. Closes: #954954. ++ * libgcc-sN: Provide libgcc-sN with an epoch version to rebuild gcc-8. ++ Closes: #954826. ++ ++ -- Matthias Klose Thu, 02 Apr 2020 15:01:48 +0200 ++ ++gcc-10 (10-20200324-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200324, 906b3eb9df6). ++ * libgcc-N-dev: Include sanitizer headers again. Closes: #954751. ++ * gm2: Define lang_register_spec_functions for jit. Closes: #954438. ++ ++ -- Matthias Klose Tue, 24 Mar 2020 13:38:16 +0100 ++ ++gcc-10 (10-20200321-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200321, 497498c878d). ++ * Update gm2 from the gm2 trunk. ++ * Move limits.h and syslimits.h into /include, and remove ++ /include-fixed. ++ * Update libgphobos symbols file. ++ ++ -- Matthias Klose Sat, 21 Mar 2020 13:14:07 +0100 ++ ++gcc-10 (10-20200312-2) unstable; urgency=medium ++ ++ * Ship the include-fixed directory again, for a working #include . ++ ++ -- Matthias Klose Fri, 13 Mar 2020 09:42:15 +0100 ++ ++gcc-10 (10-20200312-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200312, daf2852b883). ++ * For all runtime libraries, generate dependencies on libgcc-sN instead ++ on libgccN. ++ * Use llvm 10 for the amdgcn offload compiler, when available. ++ * Update newlib to 3.3.0. ++ * Stop shipping the include-fixed directory. ++ * Build the snapshot package with the offload compilers included. ++ * Tighten dependency on libc6 for this upload. ++ ++ -- Matthias Klose Thu, 12 Mar 2020 21:41:07 +0100 ++ ++gcc-10 (10-20200304-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200304, 94f7d7ec6eb). ++ * Update the autopkg tests to run GCC 10. ++ ++ -- Matthias Klose Wed, 04 Mar 2020 16:38:16 +0100 ++ ++gcc-10 (10-20200222-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200222, e99b18cf710). ++ * Don't create doc directories for -dbg packages when not building those. ++ * Update libgphobos symbols file for amd64. ++ * Don't try to strip the target libs for the amdgcn offload compiler. ++ ++ -- Matthias Klose Sat, 22 Feb 2020 13:39:51 +0100 ++ ++gcc-10 (10-20200211-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200211, a6ee556c765). ++ ++ [ Matthias Klose ] ++ * Let the libgcc-sN multilib cross packages provide libgccN. ++ * libgcc-sN: Move library back to /lib from /usr/lib, and add ++ a replaces to libgccN. Closes: #950624. ++ * libgcc-sN: Add break on cryptsetup-initramfs. Closes: #950551. ++ ++ [ Aurelien Jarno ] ++ * debian/libgcc-s.symbols: add mipsn32el to the list of architectures ++ with GCC_3.3.4, GCC_4.4.0 and CC_4.5.0 symbols. ++ * debian/rules.conf: libgcc-s1 and corresponding multilib packages are ++ epochless. Adjust DEB_LIBGCC_VERSION accordingly. ++ ++ -- Matthias Klose Tue, 11 Feb 2020 07:20:23 +0100 ++ ++gcc-10 (10-20200204-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200204, 0303907ea5d). ++ * On architectures where libgcc_s.so is a symlink, replace the symlink with ++ a simple linker script. ++ * Add breaks on libgcc-N-dev packages on arm64, s390x and sparc64. ++ Closes: #950550, #950579. ++ ++ -- Matthias Klose Tue, 04 Feb 2020 15:52:16 +0100 ++ ++gcc-10 (10-20200202-1) unstable; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200202, 0303907ea5d). ++ ++ -- Matthias Klose Sun, 02 Feb 2020 11:43:57 +0100 ++ ++gcc-10 (10-20200129-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200129, 87c3fcfa6bb). ++ * Update gm2 from the gm2 trunk. ++ * Fix libgomp-plugin-amdgcn1 package description. ++ * Bump libgo soversion. ++ * Reset libgphobos version to 1. ++ * Apply proposed patch for PR bootstrap/93409. ++ * Fix building the amdgcn offload compiler with llvm 9. ++ * Bump standards version. ++ ++ -- Matthias Klose Wed, 29 Jan 2020 12:34:27 +0100 ++ ++gcc-10 (10-20200117-2) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200117, 507de5ee23e). ++ * Update gm2 from the gm2 trunk. ++ ++ [ Matthias Klose ] ++ * Update libgomp symbols files. ++ * Build-depend on libzstd-dev. ++ * Revert the fix for PR c/85678, not making -fno-common the default for ++ current releases and backports. ++ * Update libstdc++ symbols file. ++ * Install more AArch64 intrinsic headers. ++ * Prepare for git updates from a release branch. ++ * Allow retrying of a native build in case of unreproducible ICEs. ++ ++ [YunQiang Su] ++ * Fix buffer overflow in the gcc-search-prefixed-as-ld patch when ++ strlen(DEFAULT_REAL_TARGET_MACHINE) < multiarch_len. Addresses: #915194. ++ ++ -- Matthias Klose Fri, 17 Jan 2020 15:56:29 +0100 ++ ++gcc-10 (10-20200104-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20200104, r279880). ++ * Update newlib to newlib-3.2.0. ++ * Update gm2 from the gm2 trunk. ++ ++ -- Matthias Klose Sat, 04 Jan 2020 11:26:06 +0100 ++ ++gcc-10 (10-20191217-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20191217, r279456). ++ * Update newlib to a snapshot from trunk. ++ * Update gm2 from the gm2 trunk. ++ * Update symbols files. ++ * Build without gnat for a first build. ++ * Build an amdgcn offload compiler. ++ * Update debian/copyright for gm2, compiler is now GPL-3+, the runtime ++ libraries GPL-3+ plus GCC Runtime Library Exception, version 3.1. ++ * Fix libgo build on arm-linux-gnueabi*. ++ * Update debian/copyright for contrib/unicode. ++ * libgomp-plugin-nvptx1: Update cuda suggestions. Addresses: #946487. ++ * Fix buffer overflow in the gcc-search-prefixed-as-ld patch. ++ Addresses: #946792. ++ * Don't strip frontends for debugging purposes. ++ ++ -- Matthias Klose Tue, 17 Dec 2019 12:31:04 +0100 ++ ++gcc-9 (9.2.1-21) unstable; urgency=medium ++ ++ * Update to SVN 20191130 (r278870) from the gcc-9-branch. ++ - Fix PR fortran/92100, PR tree-optimization/92222, PR ada/92489, ++ PR fortran/92629. ++ * Stop building -dbg packages, keep building the libstc++6-9-dbg package ++ containing just the libstdc++ debug build. ++ ++ -- Matthias Klose Sat, 30 Nov 2019 09:17:04 +0100 ++ ++gcc-9 (9.2.1-20) unstable; urgency=medium ++ ++ * Update to SVN 20191126 (r278718) from the gcc-9-branch. ++ - Fix PR libstdc++/92267, PR tree-optimization/91355, PR other/92090, ++ PR middle-end/90796, PR middle-end/90840, PR target/90867 (x86), ++ PR c/90898, PR middle-end/91450, PR rtl-optimization/92430, ++ PR target/92389 (x86), PR tree-optimization/90930, PR target/87833 (x86), ++ PR c++/90767, PR c++/92504, PR fortran/92113, PR fortran/92321, ++ PR fortran/92470, PR fortran/92470, PR fortran/92569, PR fortran/92050, ++ PR ada/92362, PR ada/92575. ++ * Add a libgphobos symbols file. ++ * Enable LTO builds again. ++ ++ -- Matthias Klose Tue, 26 Nov 2019 08:16:37 +0100 ++ ++gcc-9 (9.2.1-19) unstable; urgency=medium ++ ++ * Update to SVN 20191109 (r278002) from the gcc-9-branch. ++ - Fix PR sanitizer/92154, PR c++/92384, PR middle-end/92231, PR c++/90947, ++ PR c++/90998, PR c++/92343, PR c++/90947, PR tree-optimization/85887, ++ PR c++/92015, PR middle-end/92231, PR preprocessor/92296. ++ * Fix once more the gnat armel cross build. ++ ++ -- Matthias Klose Sat, 09 Nov 2019 15:47:17 +0100 ++ ++gcc-9 (9.2.1-18) unstable; urgency=medium ++ ++ * Update to SVN 20191108 (r277978) from the gcc-9-branch. ++ - Fix PR target/91289 (PPC), PR fortran/92208, PR fortran/92277, ++ PR fortran/92208, PR fortran/92284, PR target/92095 (SPARC), ++ PR fortran/91253. ++ ++ [ Matthias Klose ] ++ * Update gm2 from the gcc_9_2_0_gm2 branch 20191107, more parallel ++ build issues and cross build fixes. ++ * Bump standards version. ++ * ada-libgnatvsn.diff: ++ - Regenerate with upstream automake 1.15.1 and autoconf 2.69. ++ ++ [ Nicolas Boulenguez ] ++ * Copy ada-lib-info-file-prefix-map.diff from gcc-8. ++ * ada-tools-move-ldflag.diff is obsolete with --as-needed as default. ++ * Enable all non-default linker checks for Ada. ++ ++ -- Matthias Klose Fri, 08 Nov 2019 17:51:22 +0100 ++ ++gcc-9 (9.2.1-17) unstable; urgency=medium ++ ++ * Update to SVN 20191102 (r277743) from the gcc-9-branch. ++ * Update gm2 from the gcc_9_2_0_gm2 branch 20191031, more parallel ++ build issues. ++ * ada-libgnatvsn.diff: ++ - Copy some of configure.ac's common stuff from libatomic/libgomp. ++ - Regenerate with automake 1.15.1 and autoconf 2.69. ++ ++ -- Matthias Klose Sun, 03 Nov 2019 10:37:13 +0100 ++ ++gcc-9 (9.2.1-16) unstable; urgency=medium ++ ++ * Update to SVN 20191030 (r277619) from the gcc-9-branch. ++ - Fix PR target/92225 (x86), PR rtl-optimization/92007, ++ PR target/70010 (PPC), PR target/65342 (PPC), PR target/67183, ++ PR fortran/91926, PR fortran/91863, PR fortran/86248, PR c++/92201. ++ * Use a proper configure check when linking with libatomic in libgnatvsn. ++ Closes: #943796. ++ * Enable gm2 on x32. ++ * Update gm2 from the gcc_9_2_0_gm2 branch 20191030, parallel build issues. ++ * Fix PR libstdc++/92267, taken from the trunk. ++ ++ -- Matthias Klose Wed, 30 Oct 2019 13:13:31 +0100 ++ ++gcc-9 (9.2.1-15) unstable; urgency=medium ++ ++ * Update to SVN 20191027 (r277486) from the gcc-9-branch. ++ - Fix PR c++/85254. ++ * Update gm2 from the gcc_9_2_0_gm2 branch 20191026. ++ * Link libgnatvsn against libatomic. ++ ++ -- Matthias Klose Sun, 27 Oct 2019 18:08:50 +0100 ++ ++gcc-9 (9.2.1-14) unstable; urgency=medium ++ ++ * Update to SVN 20191025 (r277460) from the gcc-9-branch. ++ - Fix PR libstdc++/90682, PR libstdc++/61761, PR libstdc++/89164, ++ PR libstdc++/92143, PR libstdc++/91456, PR libstdc++/92059, ++ PR libstdc++/91748, PR tree-optimization/91885, PR debug/91887, ++ PR tree-optimization/92131, PR c++/92062, PR fortran/92174, ++ PR target/88167 (ARM), PR middle-end/92153. ++ * Configure again with --enable-objc-gc=auto, somehow dropped in gcc-9. ++ Closes: #942049. ++ * Revert the libgnatvsn changes from 9.2.1-9. ++ ++ -- Matthias Klose Fri, 25 Oct 2019 19:31:48 +0200 ++ ++gcc-9 (9.2.1-12) unstable; urgency=medium ++ ++ * Update to SVN 20191022 (r277294) from the gcc-9-branch. ++ - Fix PR c++/91925, PR c++/88203, PR c/91401, PR tree-optimization/92056, ++ PR tree-optimization/91734, PR bootstrap/90543, PR middle-end/91920, ++ PR tree-optimization/91723, PR tree-optimization/91665, ++ PR middle-end/91001, PR middle-end/91105, PR middle-end/91106, ++ PR go/91617, PR middle-end/91623, PR lto/91572, ++ PR tree-optimization/91351. PR target/86040 (AVR), PR target/59888, ++ PR target/89400 (ARM), PR target/87243, PR c++/92106, PR c++/91974, ++ PR c++/88203, PR c/91401, PR fortran/69455, PR fortran/91586, ++ PR fortran/83113, PR fortran/89943. ++ ++ [Nicolas Boulenguez] ++ * Fix race condition in libgnatvsn/Makefile. ++ ++ [ Matthias Klose ] ++ * Configure for s390x Ubuntu focal --with-arch=z13 --with-mtune=z15. ++ ++ -- Matthias Klose Tue, 22 Oct 2019 21:35:13 +0200 ++ ++gcc-9 (9.2.1-11) unstable; urgency=medium ++ ++ [Nicolas Boulenguez] ++ * Fix diff index in libgnatvsn patch. Closes: #942442. ++ ++ -- Matthias Klose Thu, 17 Oct 2019 10:32:53 +0200 ++ ++gcc-9 (9.2.1-10) unstable; urgency=medium ++ ++ * Update to SVN 20191016 (r277058) from the gcc-9-branch. ++ - Fix PR lto/91968, PR tree-optimization/91812, PR debug/91772, ++ PR tree-optimization/91790, PR target/92022 (ALPHA), ++ PR target/88630 (SH), PR c++/91606, PR c++/91740, PR ada/91995, ++ PR fortran/91715, PR fortran/91649, PR fortran/91801. ++ ++ [Nicolas Boulenguez] ++ * Rewrite libgnatvsn support with autotools. Closes: #746689. ++ * Converge towards similar gnat_util library. ++ * Cherry-pick repinfo stuff for latest ASIS. ++ ++ [ Matthias Klose ] ++ * gm2: Fix a time_t cast, and enable gm2 on x32. Closes: #942059, ++ * Fix PR lto/91307, reproducible LTO builds, taken from the trunk. ++ ++ -- Matthias Klose Wed, 16 Oct 2019 12:29:50 +0200 ++ ++gcc-9 (9.2.1-9) unstable; urgency=medium ++ ++ * Update to SVN 20191008 (r276687) from the gcc-9-branch. ++ - Fix PR libstdc++/91748, PR rtl-optimization/89795, PR c++/91705, ++ PR target/86805 (SH), PR target/80672 (SH), PR rtl-optimization/88751, ++ PR target/91683 (riscv), PR target/91269 (SPARC), ++ PR target/91635 (riscv), PR c++/91923, PR fortran/91557, ++ PR fortran/91553, PR fortran/91566, PR fortran/91642, PR fortran/91588, ++ PR fortran/91727, PR fortran/91550, PR target/91275 (PPC), ++ PR target/91769 (MIPS), PR fortran/91716, PR target/88562 (SH), ++ PR driver/69471, PR fortran/84487, PR fortran/47054, PR fortran/91942, ++ PR fortran/91785, PR fortran/91864, PR fortran/91802, PR fortran/91714, ++ PR fortran/91641. ++ - Fix ICE on MIPS. Closes: #941263. ++ * Disable gm2 on hurd-i386, mc hangs there (Samuel Thibault). Closes: #940600. ++ * Apply proposed patch for PR target/92022. Addresses: #931815. ++ ++ [ Nicolas Boulenguez ] ++ * Update ada local patches. ++ ++ -- Matthias Klose Tue, 08 Oct 2019 10:21:22 +0200 ++ ++gcc-9 (9.2.1-8) unstable; urgency=medium ++ ++ * Update to SVN 20190909 (r275519) from the gcc-9-branch. ++ - Fix PR fortran/91496, PR fortran/91496, PR fortran/91660, ++ PR fortran/91589, PR target/87853 (x86), PR target/91704 (x86). ++ * libstdc++: Fix GCC_LINUX_FUTEX to work with C99 compilers, taken from ++ the trunk. ++ * Make LTO link pick up compile-time -g (proposed patch). ++ ++ -- Matthias Klose Mon, 09 Sep 2019 17:18:48 +0200 ++ ++gcc-9 (9.2.1-7) unstable; urgency=medium ++ ++ * Update to SVN 20190905 (r275396) from the gcc-9-branch. ++ - Fix PR libstdc++/91067, PR target/91481 (PPC), ++ PR tree-optimization/90278, PR tree-optimization/91568, ++ PR tree-optimization/90637, PR fortran/91565, PR fortran/91564, ++ PR fortran/91551, PR fortran/91587, PR pch/61250, PR c++/91155, ++ PR tree-optimization/91597, PR gcov-profile/91601, ++ PR target/91472 (SPARC), PR c++/91129, PR fortran/91552, ++ PR target/81800 (AArch64). ++ * Drop the gcc-alpha-bs-ignore patch, apparently not necessary anymore. ++ * For the omp.h header, use the configured OMP_NEST_LOCK_SIZE and ++ OMP_NEST_LOCK_ALIGN values for some non-multilib architectures. ++ Closes: #935750. ++ * Use Python3 to build the gm2 frontend. Closes: #936586. ++ * libgphobos76: Add breaks: dub (<< 1.16.0-1~). Addresses: #935275. ++ ++ -- Matthias Klose Thu, 05 Sep 2019 06:45:00 +0200 ++ ++gcc-9 (9.2.1-6) unstable; urgency=medium ++ ++ * Update to SVN 20190827 (r274974) from the gcc-9-branch. ++ - Fix PR ipa/91508, PR ipa/91438, PR ipa/91404, PR lto/91287, ++ PR target/91533 (x86), PR ipa/91508, PR ipa/91438, PR ipa/91404, ++ PR c++/91521. ++ * Backport LTO jobserver support (-flto=auto). ++ * any_archs: Remove mips and powerpcspe, add riscv64. ++ ++ -- Matthias Klose Wed, 28 Aug 2019 01:01:47 +0200 ++ ++gcc-9 (9.2.1-4) unstable; urgency=medium ++ ++ * Fix typo for gm2 enablement. ++ * Disable gm2 on powerpc, ppc64, sh4, kfreebsd-i386, kfreebsd-amd64. ++ See the build logs of 9.2.1-3 for the various issues. ++ ++ -- Matthias Klose Thu, 22 Aug 2019 12:12:07 +0200 ++ ++gcc-9 (9.2.1-3) unstable; urgency=medium ++ ++ * Update to SVN 20190821 (r274792) from the gcc-9-branch. ++ - Fix PR rtl-optimization/91347, PR target/91386 (AArch64). ++ ++ [ Aurelien Jarno ] ++ * Enable Ada on riscv64. ++ ++ [ Matthias Klose ] ++ * Build the gm2 packages except on powerpc and x32. ++ * Update gm2 cross build dependencies. ++ * Fix gm2 build with -j32. ++ * Configure with --enable-libpth-m2 for gm2 cross builds. ++ * Configure --without-target-system-zlib for gdc cross builds. ++ * Remove not needed libpth-dev dependency for gm2 packages. ++ * Ignore M2Version.o for gm2 bootstrap comparison. ++ * Update gm2 from the gcc_9_2_0_gm2 branch 20190820. ++ ++ -- Matthias Klose Wed, 21 Aug 2019 12:15:27 +0200 ++ ++gcc-9 (9.2.1-2) unstable; urgency=medium ++ ++ [ Matthias Klose ] ++ * Update to SVN 20190819 (r274667) from the gcc-9-branch. ++ - Fix PR c++/90947, PR c++/91436, PR fortran/87991, PR fortran/90563, ++ PR fortran/88072, PR fortran/90561, PR fortran/89647, PR fortran/87993, ++ PR tree-optimization/91109, PR tree-optimization/91109, ++ PR tree-optimization/91445, PR tree-optimization/91091, ++ PR c++/90393, PR c++/81429, PR c++/87519, PR c++/90473, PR c++/90884, ++ PR libsanitizer/87880, PR fortran/91485, PR fortran/91471, ++ PR fortran/78739, PR fortran/78719, PR fortran/82992. ++ * More gm2/libgm2 packaging fixes. ++ * Disable lto build on sparc64 (if porters would only test that before ++ making a request to enable it ...). ++ * Bootstrap using gnat-9 on development distributions. ++ ++ [ Aurelien Jarno ] ++ * Fix libstdc++6.symbols.riscv64. ++ ++ [ Nicolas Boulenguez ] ++ * ada: update packaging Makefile snippet for gcc-9. ++ ++ -- Matthias Klose Mon, 19 Aug 2019 13:01:37 +0200 ++ ++gcc-9 (9.2.1-1) unstable; urgency=medium ++ ++ * Update to SVN 20190813 (r274380) from the gcc-9-branch. ++ - Fix PR fortran/91422, PR lto/91375, PR driver/91130, PR driver/91130, ++ PR c++/91378, PR c++/90538, PR fortran/91424, PR fortran/91359, ++ PR fortran/42546, PR fortran/91414, PR libstdc++/90361. ++ * Minor updates to debian/copyright for GCC 9. ++ * Include a snapshot of the gm2 tarball. ++ * Add copyright information for gcc/gm2, gcc/testsuite/gm2 and libgm2. ++ ++ -- Matthias Klose Tue, 13 Aug 2019 15:43:49 +0200 ++ ++gcc-9 (9.2.0-1) unstable; urgency=medium ++ ++ * GCC 9.2.0 release. ++ ++ [ Matthias Klose ] ++ * Enable pgo/lto build on sparc64 (ok, when done on landau buildd). ++ * Add initial gm2 packaging bits. ++ * Bump standards version. ++ ++ [ James Clarke ] ++ * ada-kfreebsd.diff: Fix fatal unreferenced formal parameter warnings. ++ ++ [ Aurelien Jarno ] ++ * Add libstdc++6.symbols.riscv64. ++ * Update debian/libgcc.symbols for riscv64. ++ ++ -- Matthias Klose Tue, 13 Aug 2019 12:24:04 +0200 ++ ++gcc-9 (9.1.0-10) unstable; urgency=medium ++ ++ * Fix typo in libstdc++ symbols file. ++ ++ -- Matthias Klose Wed, 17 Jul 2019 21:56:07 +0200 ++ ++gcc-9 (9.1.0-9) unstable; urgency=medium ++ ++ * Update to SVN 20190717 (r273554) from the gcc-9-branch. ++ - Fix PR c++/91125, PR c/91149, PR driver/90684, PR middle-end/78884, ++ PR rtl-optimization/90756, PR tree-optimization/91063, PR ipa/91062, ++ PR ipa/90982, PR tree-optimization/90972, PR debug/90914, PR debug/90900, ++ PR lto/90369, PR rtl-optimization/91136, PR tree-optimization/91108, ++ PR fortran/91077. ++ ++ [ Matthias Klose ] ++ * Make the lto-verbose-linker patch more robust for hppa (Dave Anglin). ++ * Avoid building stuff which is not needed for architecture independent ++ packages. Addresses: #900554. ++ * lib32gphobos-dev, libn32gphobos-dev: Remove dependency on non-existing ++ libz-dev multilib packages. ++ * Update libgfortran symbols files. ++ * Update libstdc++ symbols files. ++ ++ [ Nicolas Boulenguez ] ++ * Ada: update confirm_debian_bugs.py. ++ * Ada: fully port 50b8286b from the gcc-8 branch to gcc-9. ++ ++ -- Matthias Klose Wed, 17 Jul 2019 21:53:24 +0200 ++ ++gcc-9 (9.1.0-8) unstable; urgency=medium ++ ++ * Update to SVN 20190707 (r273175) from the gcc-9-branch. ++ * Re-add a lost hunk to the add-kfreebsd patch (James Clarke). ++ * Dump config files on failed jit and nvptx builds. ++ * Disable the LTO builds on architectures where the buildds can't keep up. ++ ++ -- Matthias Klose Sun, 07 Jul 2019 12:10:25 +0200 ++ ++gcc-9 (9.1.0-7) experimental; urgency=medium ++ ++ * Update to SVN 20190704 (r273081) from the gcc-9-branch. ++ - Fix PR libstdc++/91067, PR tree-optimization/90892, PR middle-end/90899. ++ - Fix gnat build failure on kfreebsd-* (James Clarke). Closes: #922496. ++ * Add ppc64el as architecture for the nvptx offload packages. ++ * Increase the timeouts for the LTO link builds. ++ * Fix PR rtl-optimization/90756, taken from the trunk. Addresses: #930012. ++ ++ -- Matthias Klose Thu, 04 Jul 2019 22:44:41 +0200 ++ ++gcc-9 (9.1.0-6) experimental; urgency=medium ++ ++ * Update to SVN 20190703 (r273015) from the gcc-9-branch. ++ - Fix PR sanitizer/90954, PR c++/91024, PR target/90991 (x86), PR c/90760, ++ PR tree-optimization/90949, PR c++/90950, PR middle-end/64242, ++ PR c++/60223, PR c++/90490. ++ * Disable LTO builds for snapshot builds. ++ * Don't use --push-state/--pop-state options for old linkers. ++ * Fix explicit autoconf version for backport packages. ++ * Allow to build with the locales package instead of locales-all. ++ * Disable LTO and profiled builds for older binutils versions. ++ * Try to enable the LTO builds everywhere. ++ * Make the LTO link step a bit more verbose to avoid timeouts on ++ the buildds. ++ ++ -- Matthias Klose Wed, 03 Jul 2019 20:21:23 +0200 ++ ++gcc-9 (9.1.0-5) experimental; urgency=medium ++ ++ * Update to SVN 20190628 (r272781) from the gcc-9-branch. ++ - Fix PR libstdc++/85494, PR libstdc++/91012, R libstdc++/90920, ++ PR libstdc++/90281, PR libstdc++/88881, PR libstdc++/90770, ++ PR libstdc++/90252, PR ipa/90939, PR tree-optimization/90930, ++ PR tree-optimization/90930, PR tree-optimization/90316, ++ PR middle-end/64242, PR c++/90825, PR c++/90832, PR c++/90736, ++ PR fortran/90937, PR fortran/90290, PR fortran/90002, PR fortran/89344, ++ PR fortran/87907, PR fortran/86587, PR fortran/77632, PR fortran/69499, ++ PR fortran/69398, PR fortran/68544, PR fortran/90577, PR fortran/90578. ++ * Fix cross building gdc (Iain Buclaw). ++ * Apply proposed fix for PR libgcc/90714 (ia64 only). Addresses: #930119. ++ ++ -- Matthias Klose Fri, 28 Jun 2019 13:13:25 +0200 ++ ++gcc-9 (9.1.0-4) experimental; urgency=medium ++ ++ * Update to SVN 20190612 (r272183) from the gcc-9-branch. ++ - Fix PR target/90811 (nvidia), PR libgomp/90641, PR libgomp/90585, ++ PR c++/90598, PR libstdc++/90700, PR libstdc++/90686, PR libstdc++/90634, ++ PR c/90474, PR d/90778, PR target/90751 (PARISC), ++ PR tree-optimization/90450, PR tree-optimization/90402, ++ PR tree-optimization/90328, PR debug/90733, PR target/82920 (x86), ++ PR fortran/90329, PR fortran/90329, PR bootstrap/90543, ++ PR c++/90810, PR c++/90598, PR c++/90548, PR fortran/90744, ++ PR fortran/90329. ++ * Update the watch file. ++ ++ -- Matthias Klose Wed, 12 Jun 2019 17:56:59 +0200 ++ ++gcc-9 (9.1.0-3) experimental; urgency=medium ++ ++ * Update to SVN 20190526 (r271629) from the gcc-9-branch. ++ - Fix PR libgomp/90527, PR c++/90532, PR libstdc++/90299, ++ PR libstdc++/90454, PR debug/90197, PR pch/90326, PR c++/90484, ++ PR tree-optimization/90385, PR c++/90383, PR tree-optimization/90303, ++ PR tree-optimization/90316, PR tree-optimization/90316, ++ PR libstdc++/90220, PR libstdc++/90557, PR sanitizer/90570, ++ PR target/90547 (x86), PR libfortran/90038, PR fortran/90498, ++ PR libfortran/90038, PR libfortran/90038, PR fortran/54613, ++ PR fortran/54613, PR libstdc++/85965, PR target/90530 (PARISC), ++ PR c++/90572. ++ * Turn on -fstack-clash-protection and -fcf-protection in Ubuntu 19.10 on ++ supported architectures. ++ * Fix PR bootstrap/87338 on ia64 (James Clarke). Addresses: #927976. ++ * Enable LTO builds on 64bit architectures. ++ * Update libstdc++ symbols files for gcc-4-compatible builds. ++ * Build the nvptx offload compiler on ppc64el. ++ * Build the libgomp-hsa plugin. ++ ++ -- Matthias Klose Sun, 26 May 2019 17:59:59 +0200 ++ ++gcc-9 (9.1.0-2) experimental; urgency=medium ++ ++ * Update to SVN 20190514 (r271161) from the gcc-9-branch. ++ - Fix PR target/89424 (PPC), PR sanitizer/90312, PR c++/90265, ++ PR c++/90173, PR target/87835, PR libstdc++/81266, PR libstdc++/90397, ++ PR libstdc++/90239, PR tree-optimization/90416, PR gcov-profile/90380, ++ PR gcov-profile/90380, PR target/90357 (MIPS), PR target/89765 (PPC), ++ PR c++/78010, PR c++/90265, PR c++/90173, PR fortran/90093, ++ PR fortran/90352, PR fortran/90355, PR fortran/90351, PR fortran/90329, ++ PR target/90379, PR bootstrap/89864. ++ * Update the cross installation patch. ++ * Enable Go on sh4. ++ * Adjust some regex patterns used in the packaging for GCC 10. ++ * Drop the build dependency on binutils-multiarch (libgo-9-dev is now split ++ out into its own package). Closes: #804190. ++ * Ignore any distro default flags for the hppa64 cross build. ++ ++ -- Matthias Klose Tue, 14 May 2019 13:38:03 +0200 ++ ++gcc-9 (9.1.0-1) experimental; urgency=medium ++ ++ * GCC 9.1.0 release. ++ * Update to SVN 20190504 (r270874) from the gcc-9-branch. ++ - Fix PR tree-optimization/90316. ++ * Merge some hardening defaults patches into one patch set. ++ * Turn on -fasynchronous-unwind-tables by default on supported architectures. ++ * Refresh patches. ++ ++ -- Matthias Klose Sat, 04 May 2019 17:17:23 +0200 ++ ++gcc-9 (9-20190428-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the gcc-9 branch (20190428, r270630). ++ * Build the phobos and D runtime on s390x and riscv64. ++ ++ -- Matthias Klose Sun, 28 Apr 2019 09:15:08 +0200 ++ ++gcc-9 (9-20190420-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190420, r270466). ++ ++ -- Matthias Klose Sat, 20 Apr 2019 08:30:33 +0200 ++ ++gcc-9 (9-20190402-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190402, r270074). ++ * Mark gcc-9-source as M-A: foreign. ++ ++ -- Matthias Klose Tue, 02 Apr 2019 08:22:27 +0200 ++ ++gcc-9 (9-20190321-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190321, r269832). ++ * Split out lib*go-dev packages. ++ * Fix PR jit/87808: Don't rely on the gcc driver. Let libgccjit0 ++ depend on binutils and libgcc-dev. Addresses: #911668. ++ * Fix stripping the gcc-hppa64 package. ++ * Update libstdc++ and libgccjit symbols files. ++ ++ -- Matthias Klose Thu, 21 Mar 2019 12:39:47 +0100 ++ ++gcc-9 (9-20190311-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190311, r269597). ++ ++ -- Matthias Klose Mon, 11 Mar 2019 23:23:20 +0100 ++ ++gcc-9 (9-20190305-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190305, r269387). ++ ++ [ Aurelien Jarno ] ++ * Run the tests in parallel again on Debian/s390x, the libgo bug is ++ fixed. ++ ++ [ Matthias Klose ] ++ * Fix test dependencies for the Hurd and KFreeBSD. ++ ++ -- Matthias Klose Tue, 05 Mar 2019 10:51:09 +0100 ++ ++gcc-9 (9-20190223-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190223, r269152). ++ ++ -- Matthias Klose Sat, 23 Feb 2019 11:00:00 +0100 ++ ++gcc-9 (9-20190216-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190216, r268955). ++ * Fix libgo s390x biarch build. ++ * Run test suite on the Hurd and KFreeBSD. ++ * Fix linking libgphobos with the system zlib. ++ ++ -- Matthias Klose Sat, 16 Feb 2019 14:28:15 +0100 ++ ++gcc-9 (9-20190215-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190215, r268943). ++ * Build libphobos on all mips variants. ++ * Build-depend on locales-all instead of locales, don't generate locales ++ during the build, and attribute test dependencies with . ++ * Don't run the tests on Debian/s390x in parallel, memory constraints on ++ the buildds. ++ * gdc-9: Include again the libgphobos spec file. ++ ++ -- Matthias Klose Fri, 15 Feb 2019 19:13:42 +0100 ++ ++gcc-9 (9-20190208-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190208, r268704). ++ * Update the support to build without packages being built by the next GCC ++ version. ++ * Fix ISO_Fortran_binding.h installation for cross builds. ++ ++ -- Matthias Klose Fri, 08 Feb 2019 18:17:45 +0100 ++ ++gcc-9 (9-20190202-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190202, r268474). ++ ++ -- Matthias Klose Sat, 02 Feb 2019 12:19:53 +0100 ++ ++gcc-9 (9-20190125-2) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190125, r268260). ++ ++ [ Matthias Klose ] ++ * Turn on ld --as-needed by default on Debian development versions. ++ * Turn on profiled bootstrap on x86, AArch64, PPC64 and s390x ++ architectures for native builds. ++ * Relax the shlibs dependency for libgnat-8. Addresses: #920246. ++ ++ [ Nicolas Boulenguez ] ++ * Update the ada-kfreebsd patch. Closes: #919996. ++ ++ -- Matthias Klose Fri, 25 Jan 2019 11:58:44 +0100 ++ ++gcc-9 (9-20190120-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190120, r268102). ++ - Updates to Go 1.12 beta2. ++ * Build libphobos on hppa. ++ * Drop libgo patch for the Hurd. ++ * Refresh patches. ++ * Update newlib to newlib-3.1.0.20181231. ++ ++ -- Matthias Klose Sun, 20 Jan 2019 11:28:26 +0100 ++ ++gcc-9 (9-20190116-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190116, r267965). ++ * libgccjit-9-doc: Breaks libgccjit-8-doc. Closes: #918445. ++ * Update libstdc++6 symbols files. ++ * Override some libasan and gccgo lintian warnings. ++ * Build the Ada packages except for gnat-9-sjlj. ++ * Bump standards version. ++ ++ -- Matthias Klose Wed, 16 Jan 2019 09:42:19 +0100 ++ ++gcc-9 (9-20190103-1) experimental; urgency=medium ++ ++ * GCC snapshot, taken from the trunk (20190103). ++ ++ [ Matthias Klose ] ++ * Update packaging, patches and symbols files. ++ * Remove libmpx packaging, removed upstream. ++ * Update newlib to the newlib-3.0.0.20180831 snapshot. ++ * Disable building Ada for now. ++ * Build D and libphobos from the now integrated upstream sources. ++ * gcc-9-base: Break gnat (<< 7). Addresses: #911633. ++ * gdc: Dynamically link the phobos library. ++ * Adopt gcc-snapshot build for the current trunk. ++ * Don't apply gcc-as-needed patch for snapshot builds. ++ * Fix control file generation for gphobos n32 multilibs. ++ * Disable gnat build on alpha. See PR ada/88200. ++ * powerpcspe support removed upstream. Remove the powerpcspe packaging ++ references and powerpcspe patches. ++ * gcc-9-source: Depend on lsb-release. ++ * Disable broken selective scheduling on ia64 (Adrian Glaubitz). ++ See PR rtl-optimization/85412. Addresses: #916591. ++ * Fix perl shebang for the gnathtml binary. ++ * Lower priority of libgcc[124] and libstdc++6 packages. ++ * Stop building the fixincludes package, never used by lintian. ++ * Remove the libstdc++6 breaks for the stretch release. ++ * libgccjit-doc: Install image files. ++ * Don't provide -compiler names for cross compiler packages. ++ Addresses: #916376. Not a final solution. ++ * Disable the gnat build for now, ftbfs in the sjlj variant. ++ * Bump the libgo soname. ++ ++ [ Nicolas Boulenguez ] ++ * Update Ada patches. ++ ++ -- Matthias Klose Thu, 03 Jan 2019 13:35:00 +0100 ++ ++gcc-8 (8.2.0-8.1) UNRELEASED; urgency=medium ++ ++ * Update to SVN 20181020 (r265339) from the gcc-8-branch. ++ - Fix PR middle-end/87087, PR middle-end/87623, PR libstdc++/87641, ++ PR middle-end/87645. ++ * Update VCS attributes in the control file. ++ * Don't configure native builds with --with-sysroot. Apparently this cannot ++ be completely overridden with the command line option --sysroot. ++ ++ -- Matthias Klose Sat, 20 Oct 2018 09:25:48 +0200 ++ ++gcc-8 (8.2.0-8) unstable; urgency=medium ++ ++ * Update to SVN 20181017 (r265234) from the gcc-8-branch. ++ - Fix PR libstdc++/86751, PR libstdc++/78595, PR libstdc++/87061, ++ PR libstdc++/70966, PR libstdc++/77854, PR libstdc++/87538, ++ PR libgcc/85334, PR middle-end/63155, PR target/87511 (AArch64), ++ PR middle-end/87610, PR tree-optimization/87465, PR target/87550 (x86), ++ PR target/87414 (x86), PR tree-optimization/86844, PR target/86731 (PPC), ++ PR target/87370 (x86), PR target/87517 (x86), PR target/87522 (x86), ++ PR other/87353, PR gcov-profile/86109, PR target/82699 (x86), ++ PR target/87467 (x86), PR target/87033 (PPC), PR sanitizer/85774, ++ PR rtl-optimization/86882, PR gcov-profile/85871, PR c++/87582, ++ PR c++/84940, PR gcov-profile/86109, PR c++/85070, PR c++/86881, ++ PR fortran/83999, PR fortran/86372, PR fortran/86111, PR fortran/85395, ++ PR fortran/86830, PR fortran/85954. ++ ++ -- Matthias Klose Wed, 17 Oct 2018 09:45:31 +0200 ++ ++gcc-8 (8.2.0-7) unstable; urgency=medium ++ ++ * Update to SVN 20180917 (r264370) from the gcc-8-branch. ++ - Fix PR libstdc++/87278, PR target/85666 (mmix), PR middle-end/87188, ++ PR target/87224 (PPC), PR target/86989 (PPC), PR rtl-optimization/86771, ++ PR middle-end/87248, PR c++/87093, PR fortran/87284, PR fortran/87277. ++ ++ -- Matthias Klose Mon, 17 Sep 2018 17:46:50 +0200 ++ ++gcc-8 (8.2.0-6) unstable; urgency=medium ++ ++ * Update to SVN 20180908 (r264168) from the gcc-8-branch. ++ - Fix PR c++/87137, PR bootstrap/87225, PR target/87198 (x86), ++ PR middle-end/87138, PR tree-optimization/86835, PR c++/87185, ++ PR c++/87095, PR c++/86836, PR c++/86738, PR c++/86706, PR fortran/86116. ++ * Apply proposed patch for PR go/87260. ++ * Apply proposed patch for PR tree-optimization/87188. Closes: #907586. ++ * Fix PR target/86731 (PPC), taken from the trunk. Closes: #905868. ++ ++ -- Matthias Klose Sun, 09 Sep 2018 14:43:43 +0200 ++ ++gcc-8 (8.2.0-5) unstable; urgency=medium ++ ++ * Update to SVN 20180904 (r264075) from the gcc-8-branch. ++ - Fix PR sanitizer/86022, PR libstdc++/87116, PR other/86992, ++ PR tree-optimization/86914, PR middle-end/87099, ++ PR rtl-optimization/87065, PR target/86662, PR target/87014, ++ PR target/86640, PR gcov-profile/86817, PR tree-optimization/86871, ++ PR c++/86763, PR fortran/86837, PR libfortran/86704, ++ PR tree-optimization/85859, PR tree-optimization/87074, ++ PR tree-optimization/86927, PR middle-end/87024, PR middle-end/86505, ++ PR tree-optimization/86945, PR tree-optimization/86816, ++ PR lto/86456, PR c++/87155, PR c++/84707, PR c++/87122, ++ PR fortran/86328, PR fortran/86760. ++ * Remove ia64 boostrap work around (Jason Duerstock). Closes: #906675. ++ ++ -- Matthias Klose Tue, 04 Sep 2018 09:04:17 +0200 ++ ++gcc-8 (8.2.0-4) unstable; urgency=medium ++ ++ * Update to SVN 20180814 (r263527) from the gcc-8-branch. ++ - Fix PR libstdc++/86597, PR libstdc++/84535, PR libstdc++/60555, ++ PR libstdc++/86874, PR libstdc++/86861, PR target/86386 (x86), ++ PR c++/86728, PR c++/86767, PR fortran/86906. ++ ++ [ Nicolas Boulenguez ] ++ * gnat: set ld_library_path for tested gnat tools. ++ * In the gnat autopkg test, tell gnatmake to report progress on stdout. ++ * gnat: Improve the ada-gcc-name patch. ++ * Update ada/debian_packaging.mk. ++ ++ -- Matthias Klose Tue, 14 Aug 2018 11:45:55 +0200 ++ ++gcc-8 (8.2.0-3) unstable; urgency=medium ++ ++ * Update to SVN 20180803 (r263086) from the gcc-8-branch. ++ - Fix PR middle-end/86705, PR target/86820 (m68k). ++ * Build using ISL 0.20. ++ * Fix some autopkg tests (allow stderr, explicitly depend on libc-dev). ++ ++ -- Matthias Klose Fri, 03 Aug 2018 12:32:31 +0200 ++ ++gcc-8 (8.2.0-2) unstable; urgency=medium ++ ++ * Update to SVN 20180802 (r263045) from the gcc-8-branch. ++ - Fix PR middle-end/86542, PR middle-end/86539, PR middle-end/86660, ++ PR middle-end/86627, PR target/86511, PR sanitizer/86759, PR c/85704, ++ PR libstdc++/86734, PR bootstrap/86724, PR target/86651, PR c/86617, ++ PR c++/86190. ++ - Fix PR libstdc++/84654, PR libstdc++/85672. LP: #1783705. ++ * Update cross-build patches for GCC 8.2. ++ * Refresh patches. ++ * Add some basic autopkg tests for Ada, C, C++, Go, OpenMP and Fortran. ++ * Backport r262835 to fix a wrong-code generation on m68k (Adrian Glaubits). ++ ++ -- Matthias Klose Thu, 02 Aug 2018 05:59:26 +0200 ++ ++gcc-8 (8.2.0-1) unstable; urgency=medium ++ ++ * GCC 8.2.0 release. ++ * Update GDC to 20180726 from the gdc-8-stable branch.. ++ ++ -- Matthias Klose Thu, 26 Jul 2018 13:28:20 +0200 ++ ++gcc-8 (8.1.0-12) unstable; urgency=medium ++ ++ * GCC 8.2.0 release candidate. ++ * Update to SVN 20180719 (r262861) from the gcc-8-branch. ++ - Fix PR middle-end/85602, PR c++/86480. ++ ++ [ Nicolas Boulenguez ] ++ * ada-verbose patch: Make the ada build more verbose. ++ * Update the ada-gcc-name patch again. See #856274. Closes: #903694. ++ ++ [ Matthias Klose ] ++ * Rewrite debian/README.cross. ++ ++ -- Matthias Klose Thu, 19 Jul 2018 17:39:39 +0200 ++ ++gcc-8 (8.1.0-11) unstable; urgency=medium ++ ++ * Update to SVN 20180717 (r262818) from the gcc-8-branch. ++ - Fix PR c/86453, PR debug/86452, PR debug/86457, PR middle-end/85974, ++ PR middle-end/86076, PR tree-optimization/85935, ++ PR tree-optimization/86514, PR tree-optimization/86274, ++ PR target/84413 (x86), PR middle-end/86202, PR target/84829, ++ PR c++/3698, PR c++/86208, PR c++/86374, PR sanitizer/86406, ++ PR fortran/83184, PR fortran/86417, PR fortran/83183, ++ PR fortran/86325. ++ ++ [ Nicolas Boulenguez ] ++ * Update the ada-gcc-name patch, not appending the suffix twice. ++ Addresses: #856274. ++ ++ -- Matthias Klose Tue, 17 Jul 2018 14:09:13 +0200 ++ ++gcc-8 (8.1.0-10) unstable; urgency=medium ++ ++ * Update to SVN 20180712 (r262577) from the gcc-8-branch. ++ - Fix PR libstdc++/86272, PR libstdc++/86127, PR target/85904, ++ PR libstdc++/85098, PR libstdc++/85671, PR libstdc++/83982, ++ PR libstdc++/86292, PR libstdc++/86138, PR libstdc++/84087, ++ PR libstdc++/86398, PR hsa/86371, PR tree-optimization/86492, ++ PR c++/86400, PR target/86285 (PPC), PR debug/86064, ++ PR target/86222 (PPC), PR rtl-optimization/85645, ++ PR rtl-optimization/85645, PR target/86314 (x86), PR sanitizer/86406, ++ PR c++/86398, PR c++/86378, PR c++/86320, PR c++/80290, ++ PR fortran/82969, PR fortran/86242, PR fortran/82865. ++ * Enable decimal float support on kfreebsd-amd64. Closes: #897416. ++ ++ -- Matthias Klose Thu, 12 Jul 2018 10:07:17 +0200 ++ ++gcc-8 (8.1.0-9) unstable; urgency=medium ++ ++ * Update to SVN 20180626 (r262138) from the gcc-8-branch. ++ - Fix PR libstdc++/86138, PR libstdc++/82644, PR libgcc/86213, ++ PR c++/86210, PR c/86093, PR target/86197 (PPC), PR target/85358 (PPC), ++ PR tree-optimization/85989, PR target/85657 (PPC), PR target/85657 (PPC), ++ PR target/85994, PR rtl-optimization/86108, PR debug/86194, ++ PR tree-optimization/86231, PR c/82063, PR c++/86219, PR c++/86182, ++ PR c++/85634, PR c++/86200, PR c++/81060, PR fortran/83118, ++ PR libstdc++/86112, PR libstdc++/81092, PR fortran/82972, ++ PR fortran/83088, PR fortran/85851, PR c++/86291. ++ ++ [ Nicolas Boulenguez ] ++ * Remove Ludovic Brenta's work to let Ada build tools link with freshly ++ built libgnat.so, this is now handled by upstream testsuite. ++ ++ [ Iain Buclaw ] ++ * gdc: Explicitly set test action as compile in all dg tests. ++ ++ [ Matthias Klose ] ++ * Build using gnat-8. ++ ++ -- Matthias Klose Tue, 26 Jun 2018 10:45:36 +0200 ++ ++gcc-8 (8.1.0-8) unstable; urgency=medium ++ ++ * Update to SVN 20180617 (r261686) from the gcc-8-branch. ++ - Fix PR libstdc++/86169, PR middle-end/86095, PR middle-end/85878, ++ PR middle-end/86123, PR middle-end/86122, PR c++/86147, PR c++/82882, ++ PR fortran/85703, PR fortran/85702, PR fortran/85701. ++ * Fix applying the powerpcspe patches. ++ ++ -- Matthias Klose Sun, 17 Jun 2018 12:56:15 +0200 ++ ++gcc-8 (8.1.0-6) unstable; urgency=medium ++ ++ * Update to SVN 20180614 (r261597) from the gcc-8-branch. ++ - Fix PR libstdc++/86008, PR libstdc++/85930, PR libstdc++/85951, ++ PR target/85591 (x86), PR c++/85710, PR c++/80485, PR target/85755 (PPC), ++ PR target/85755 (PPC), PR target/81497 (ARM), PR target/85684 (x86), ++ PR target/63177 (PPC), PR tree-optimization/86038, ++ PR tree-optimization/85964, PR tree-optimization/85934, PR c++/86025, ++ PR tree-optimization/85863, PR c/85623, PR target/86003 (ARM), ++ PR tree-optimization/85712, PR target/85950 (x86), PR target/85984, ++ PR target/85829 (x86), PR c++/85792, PR c++/85963, PR c++/61806, ++ PR c++/85765, PR c++/85764, PR c++/85807, PR c++/85815, PR c++/86094, ++ PR c++/86060, PR c++/85847, PR c++/85976, PR c++/85731, PR c++/85739, ++ PR c++/85761, PR c++/85873, PR fortran/44491, PR fortran/85138, ++ PR fortran/85996, PR fortran/86051, PR fortran/86059, PR fortran/63514, ++ PR fortran/78278, PR fortran/38351, PR fortran/78571, PR fortran/85631, ++ PR fortran/86045, PR fortran/85641, PR fortran/85816, PR fortran/85975, ++ PR libgfortran/85840, PR target/85945, PR middle-end/86139, ++ PR other/77609, PR tree-optimization/86114, PR target/86048 (x86), ++ PR fortran/86110. ++ - libgo: update to Go 1.10.3 release. ++ ++ -- Matthias Klose Thu, 14 Jun 2018 16:57:14 +0200 ++ ++gcc-8 (8.1.0-5) unstable; urgency=medium ++ ++ * Update to SVN 20180531 (r260992) from the gcc-8-branch. ++ - Fix PR sanitizer/86012, PR c/85696, PR c++/85662, PR target/85756 (x86), ++ PR target/85683 (x86), PR c++/85952, PR c/85696, PR c++/85662. ++ - Fix libsanitizer build on sparc64. ++ * libgo: Make the vet tool work with gccgo (taken from the trunk). ++ ++ -- Matthias Klose Thu, 31 May 2018 15:18:52 +0200 ++ ++gcc-8 (8.1.0-4) unstable; urgency=medium ++ ++ * Update to SVN 20180529 (r260895) from the gcc-8-branch. ++ - Fix PR c++/85782, PR sanitizer/85835, PR libstdc++/85818, ++ PR libstdc++/85818, PR libstdc++/83891, PR libstdc++/84159, ++ PR libstdc++/67554, PR libstdc++/82966, PR bootstrap/85921, ++ PR sanitizer/85556, PR target/85900 (x86), PR target/85345 (x86), ++ PR c++/85912, PR target/85903 (x86), PR tree-optimization/85793, ++ PR middle-end/85874, PR tree-optimization/85822, PR middle-end/85643, ++ PR tree-optimization/85814, PR target/85698 (PPC), PR c++/85842, ++ PR c++/85864, PR c++/81420, PR c++/85866, PR c++/85782, PR fortran/85786, ++ PR fortran/85895, PR fortran/85780, PR fortran/85779, PR fortran/85543, ++ PR fortran/80657, PR fortran/49636, PR fortran/82275, PR fortran/82923, ++ PR fortran/66694, PR fortran/82617, PR fortran/85742, PR fortran/85542, ++ PR libgfortran/85906, PR libgfortran/85840. ++ ++ [ Nicolas Boulenguez ] ++ * Update ada/confirm_debian_bugs to gcc-8 and python3. ++ ++ [ Matthias Klose ] ++ * gnat-*: Don't search the target dirs when calling dh_shlibdeps. ++ * Stop shipping unstripped binaries with the final release. Closes: #894014. ++ ++ -- Matthias Klose Tue, 29 May 2018 14:34:37 +0200 ++ ++gcc-8 (8.1.0-3) unstable; urgency=medium ++ ++ * Update to SVN 20180512 (r260194) from the gcc-8-branch. ++ - Fix PR ipa/85655, PR target/85733 (ARM), PR target/85606 (ARM), ++ PR fortran/70870, PR fortran/85521, PR fortran/85687, PR fortran/68846, ++ PR fortran/70864. ++ * Fix name of the g++ multiarch include directory. Closes: #898323. ++ * Fix PR sanitizer/85556, attribute no_sanitize does not accept multiple ++ options; taken from the trunk. Closes: #891489. ++ ++ -- Matthias Klose Sat, 12 May 2018 10:36:05 -0400 ++ ++gcc-8 (8.1.0-2) unstable; urgency=medium ++ ++ * Update to SVN 20180510 (r260147) from the gcc-8-branch. ++ - Fix PR go/85630, PR target/85519 (nvptx), PR libstdc++/85642, ++ PR libstdc++/84769, PR libstdc++/85632, PR libstdc++/80506, ++ PR target/85512 (AArch64), PR c++/85305, PR ada/85635, PR ada/85540, ++ PR rtl-optimization/85638, PR middle-end/85588, PR middle-end/85588, ++ PR tree-optimization/85615, PR middle-end/85567, PR target/85658 (ARM), ++ PR tree-optimization/85597, PR middle-end/85627, PR c++/85659, ++ PR c++/85706, PR c++/85695, PR c++/85646, PR c++/85618, PR fortran/85507. ++ * Don't configure with --with-as and --with-ld, but search the triplet ++ prefixed as and ld in the same places as as/ld. Closes: #896057, #897896. ++ * Enable decimal float support on kfreebsd-amd64. Closes: #897416. ++ ++ -- Matthias Klose Thu, 10 May 2018 20:43:42 -0400 ++ ++gcc-8 (8.1.0-1) unstable; urgency=medium ++ ++ * GCC 8.1.0 release. ++ * Stop providing the 8.x.y symlinks in gcc_lib_dir and incluce/c++. ++ * Configure powerpcspe with --enable-obsolete, will be gone with GCC 9. ++ * Build libmpx libraries when not building the common libs. ++ * Update NEWS files for GCC 8.1. ++ ++ -- Matthias Klose Wed, 02 May 2018 11:43:46 +0200 ++ ++gcc-8 (8-20180425-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180425 (r259628). ++ ++ [ Matthias Klose ] ++ * Update nvptx-newlib to 20180424. ++ * Use the binutils in the build chroot if present. ++ * Don't use dwz for GCC backports. ++ * Install the movdirintrin.h header file. ++ ++ [ Aurelien Jarno ] ++ * Enable logwatch on riscv64. ++ ++ -- Matthias Klose Wed, 25 Apr 2018 06:56:58 +0200 ++ ++gcc-8 (8-20180414-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180414 (r259383). ++ ++ [ Matthias Klose ] ++ * Update GDC to 20180410. ++ * Don't install i586 symlinks anymore for i386 builds in sid. ++ * Fix zlib-dev dependencies for the libphobos cross multilib packages. ++ * Fix dependency generation for libatomic and libquadmath cross packages. ++ * Use triplet-prefixed as and ld (Helmut Grohne). Closes: #895251. ++ * Link libasan, liblsan, libubsan always with --no-as-needed. LP: #1762683. ++ * Use --push-state --as-needed and --pop-state instead of --as-needed and ++ --no-as-needed for linking libgcc. ++ * Update the gcc-foffload-default patch. LP: #1721355. ++ ++ [ Svante Signell ] ++ * Reintroduce libgo patches for hurd-i386. Closes: #894080. ++ ++ -- Matthias Klose Sat, 14 Apr 2018 07:10:01 +0200 ++ ++gcc-8 (8-20180402-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180402 (r259004). ++ * Build a native compiler with a cross directory layout using the ++ FORCE_CROSS_LAYOUT environment variable. ++ ++ -- Matthias Klose Mon, 02 Apr 2018 10:09:27 +0200 ++ ++gcc-8 (8-20180331-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180331 (r258989). ++ - Fix PR/libstdc++/85040, std::less fails when operator< is ++ overloaded. Closes: #893517. ++ - Fix PR/target 84148, CET shouldn't be enabled in 32-bit run-time ++ libraries by default. Closes: #890092. ++ ++ [ Samuel Thibault ] ++ * Fix disabling go on hurd-i386 for now. ++ ++ [ Matthias Klose ] ++ * gdc: Link with the shared libphobos library by default. ++ * Fix control file generation for nolang=biarch builds (Helmut Grohne). ++ Closes: #891289. ++ * Simplify architecture to gnu-type mapping (Helmut Grohne). Closes: #893493. ++ ++ -- Matthias Klose Sat, 31 Mar 2018 15:14:44 +0800 ++ ++gcc-8 (8-20180321-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180321 (r258712). ++ - Fix PR sanitizer/84761. Addresses: #892096. ++ * Update GDC to 20180320. ++ * Reenable building gdc. ++ ++ -- Matthias Klose Wed, 21 Mar 2018 19:47:27 +0800 ++ ++gcc-8 (8-20180319-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180319 (r258631). ++ ++ [ Aurelien Jarno ] ++ * Default to PIE on riscv64. ++ * Temporarily do not build-depend on gdb on riscv64. ++ ++ -- Matthias Klose Mon, 19 Mar 2018 02:18:29 +0800 ++ ++gcc-8 (8-20180312-2) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180312 (r258445). ++ * Update GDC to 20180311. ++ ++ [ Matthias Klose ] ++ * Fix typo in libasan and lib32asan symbols files for s390x. ++ ++ [ Aurelien Jarno ] ++ * Disable gnat on riscv64. ++ * Backport RISC-V libffi support from upstream. ++ ++ -- Matthias Klose Mon, 12 Mar 2018 12:33:10 +0100 ++ ++gcc-8 (8-20180310-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180310 (r258410). ++ * Build libasan and libubsan packages on s390x. ++ * Update libasan symbols files for s390x. ++ ++ -- Matthias Klose Sat, 10 Mar 2018 10:54:02 +0700 ++ ++gcc-8 (8-20180308-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180308 (r258348). ++ * Update GDC to 20180304. ++ ++ [ Matthias Klose ] ++ * Fix cross builds building without "common" libraries. ++ * Fix cross-building libgnat on armel, when not building the common libraries. ++ * Remove the go patches for the Hurd. Unmaintained. ++ * Update libcc1 symbols file. ++ * Install more intrinsic header files. ++ ++ [ Aurelien Jarno ] ++ * Configure s390x build with --with-arch=z196 on Debian. ++ * Drop libgo-s390x-default-isa.diff patch. ++ * Disable multilib on riscv64. ++ * Update gcc-as-needed.diff, gcc-hash-style-both.diff and ++ gcc-hash-style-gnu.diff for riscv64. ++ * Update gcc-multiarch.diff for riscv64. ++ ++ [ Karsten Merker ] ++ * Force the riscv64 ISA to rv64imafdc and ABI to lp64d. ++ ++ -- Matthias Klose Thu, 08 Mar 2018 14:17:37 +0700 ++ ++gcc-8 (8-20180218-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180208 (r257477). ++ * Update GDC to 20180211. ++ * Store basename only in gfortran .mod files. Addresses: #889133. ++ * Disable go on the hurd, patches are out of date. ++ * Configure with --disable-libquadmath-support when not explicitly enabled. ++ * For armel multilib builds, explicitly set architecture and cpu for the ++ hard-float multilib. ++ ++ -- Matthias Klose Sun, 18 Feb 2018 16:11:11 +0700 ++ ++gcc-8 (8-20180207-2) unstable; urgency=medium ++ ++ * Revert the fix for PR target/84145. ++ * Override patch-file-present-but-not-mentioned-in-series lintian warning. ++ ++ -- Matthias Klose Wed, 07 Feb 2018 13:09:23 +0100 ++ ++gcc-8 (8-20180207-1) unstable; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180207 (r257435). ++ * Update GDC to 20180204. ++ * Refresh patches. ++ * Disable go on m68k again. Closes: #886103. ++ * Ignore bootstrap comparison failures in gcc/d on alpha. Addresses: #888951. ++ * Include amo.h header for Power architectures. ++ * Include arm_cmse.h header for ARM32 architectures. ++ * Update tsan symbols file arm64. ++ ++ -- Matthias Klose Wed, 07 Feb 2018 01:34:14 +0100 ++ ++gcc-8 (8-20180130-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180130 (r257194). ++ * Update GDC to 20180130. ++ ++ -- Matthias Klose Tue, 30 Jan 2018 18:49:51 +0100 ++ ++gcc-8 (8-20180123-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180123 (r257004). ++ * Update GDC to 20180123. ++ * Install the msa.h header for mips targets (YunQiang Su). Addresses: #887066. ++ * Fix mipsen r6 biarch configs (YunQiang Su). Closes: #886976. ++ ++ -- Matthias Klose Tue, 23 Jan 2018 23:10:51 +0100 ++ ++gcc-8 (8-20180110-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20180110 (r256425). ++ - Go 1.10 beta1 merged, bumping libgo soname. ++ * Update GDC to 20180108. ++ * debian/rules2: Fix typo for N32 conditions (YunQiang Su). Closes: #886459. ++ * More libffi mips r6 updates (YunQiang Su). Addresses: #886201. ++ * Default to PIE on the hurd (Samuel Thibault). Addresses: #885056. ++ * Use internal libunwind for ia64 cross-builds. Addresses: #885931. ++ * Strip -z,defs from linker options for internal libunwind (James Clarke). ++ Addresses: #885937. ++ * Fix rtlibs stage build with debhelper 10.9.1 (Helmut Grohne). ++ Closes: #879054. ++ ++ -- Matthias Klose Wed, 10 Jan 2018 12:23:12 +0100 ++ ++gcc-8 (8-20171229-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171229. ++ * Update GDC to 20171227. ++ * Build the nvptx offload compiler again. ++ ++ -- Matthias Klose Fri, 29 Dec 2017 22:16:04 +0100 ++ ++gcc-8 (8-20171223-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171223. ++ * Update GDC to 20171223. ++ * Don't build the nvptx offload compiler for now, see PR target/83524. ++ ++ -- Matthias Klose Sat, 23 Dec 2017 13:08:14 +0100 ++ ++gcc-8 (8-20171215-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171215. ++ * Update GDC to 20171213. ++ * Move the .gox files into the gccgo packages. Addresses: #883136. ++ * libffi: mips/n32.S: disable .set mips4 on mips r6 (YunQiang Su). ++ * Fix shlibs search path for mips64 cross targets. Addresses: #883988. ++ * Set the armel port baseline to armv5te. Closes: #882174. ++ ++ -- Matthias Klose Fri, 15 Dec 2017 18:30:46 +0100 ++ ++gcc-8 (8-20171209-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171209. ++ * Add more header files for builtins. Closes: #883423. ++ * Re-enable gccgo on m68k. Addresses: #883794. ++ ++ -- Matthias Klose Sat, 09 Dec 2017 21:23:08 +0100 ++ ++gcc-8 (8-20171128-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171128. ++ ++ [ Matthias Klose ] ++ * Don't revert the fix for PR target/55947, fixed for GCC 8. ++ * Update libgfortran symbol versioning. ++ ++ [ Nicolas Boulenguez ] ++ * Fix the gnat bootstrap. ++ ++ -- Matthias Klose Tue, 28 Nov 2017 07:40:23 +0100 ++ ++gcc-8 (8-20171122-1) experimental; urgency=medium ++ ++ [ Matthias Klose ] ++ * GCC 8 snapshot, taken from the trunk 20171122. ++ * Update GDC to 20171118. ++ * Port libgo to the Hurd (Svante Signell). ++ * Add support for a plethora of mips r6 packages (YunQiang Su). ++ * Remove the libcilkrts packaging bits. ++ * Remove libgphobos symbols files. ++ ++ [ Svante Signell ] ++ * Do not enable go on GNU/kFreeBSD. ++ ++ -- Matthias Klose Wed, 22 Nov 2017 14:02:35 +0100 ++ ++gcc-8 (8-20171108-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171108. ++ * Update GDC to 20171106. Closes: #880548. ++ * libgcc-dev: Install the liblsan_preinit.o file. ++ * Compress debug symbols for compiler binaries with dwz. ++ ++ -- Matthias Klose Wed, 08 Nov 2017 20:00:30 +0100 ++ ++gcc-8 (8-20171102-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171102. ++ * Bump libunwind (build-)dependency for ia64. Addresses: #879959. ++ * Drop the autogen build dependency. ++ * Install the gfniintrin.h header file. ++ * libgcc and libstdc++ symbols files updates for mipsn32. ++ * Remove the gcc-mips64-stack-spilling patch, applied upstream. ++ * Update libasan symbols files. ++ ++ -- Matthias Klose Thu, 02 Nov 2017 01:43:34 +0100 ++ ++gcc-8 (8-20171031-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171031. ++ * Install cetintrin.h header. Closes: #879740. ++ * Update gnat patches (YunQiang Su). Closes: #879985. ++ * Build libphobos runtime library on x86 architectures again. ++ * Fix typo in libx32stdc++6-8-dbg conflicts. Closes: #879883. ++ ++ -- Matthias Klose Tue, 31 Oct 2017 02:22:07 +0100 ++ ++gcc-8 (8-20171023-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171023. ++ * Mask __float128 from CUDA compilers. LP: #1717257. ++ * Update the gdc build support. ++ * Don't use quadmath on powerpc and ppc64. ++ * Bump asan and ubsan sonames. ++ * Adjust sanitizer symbols for the libsanitizer upstream merge. ++ * Install the gcov.h header file. ++ * Do the extra/optional dance ... ++ * Override hardening-no-pie lintian warnings for compiler executables. ++ ++ -- Matthias Klose Mon, 23 Oct 2017 10:57:54 +0200 ++ ++gcc-8 (8-20171016-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot, taken from the trunk 20171016. ++ * Update nvptx-newlib to 20171010. ++ * Fix lsan/tsan symbols files for arm64 and ppc64el. ++ * Add missing conflicts with GCC 7 packages. Closes: #877441. ++ * Fix builds without hppa64 cross compiler and new debhelper. See: #877589. ++ * Fix build dependency on realpath. ++ * Build the nvptx offload compiler again. ++ * Update symbols files. ++ * Fix build dependency on realpath. ++ * Set QUILT_PATCH_OPTS='-E' for applying patches. ++ ++ -- Matthias Klose Mon, 16 Oct 2017 14:56:04 +0200 ++ ++gcc-8 (8-20170923-1) experimental; urgency=medium ++ ++ * GCC 8 snapshot. ++ * Disable Ada and D for a first build. ++ ++ -- Matthias Klose Tue, 26 Sep 2017 23:44:57 +0200 ++ ++gcc-7 (7.2.0-7) unstable; urgency=medium ++ ++ * Update to SVN 20170923 (r253114) from the gcc-7-branch. ++ - Fix PR libstdc++/79162, PR libstdc++/79162, PR libstdc++/82262, ++ PR libstdc++/82254, PR target/81996 (PPC), PR target/71951 (AArch64), ++ PR sanitizer/81929. ++ * Fix PR go/82284, taken from the trunk. Closes: #876353. ++ ++ -- Matthias Klose Sat, 23 Sep 2017 11:31:21 +0200 ++ ++gcc-7 (7.2.0-6) unstable; urgency=medium ++ ++ * Update to SVN 20170920 (r253002) from the gcc-7-branch. ++ - Fix PR target/82112 (PPC), PR c++/81355, PR tree-optimization/82084, ++ PR tree-optimization/82108, PR target/81325 (PPC), PR c++/81236, ++ PR c++/80767, PR c++/82030, PR c++/80935, PR c++/81671, PR c++/81525, ++ PR c++/81314, PR libgfortran/78387. ++ * Fix fortran cross compiler build with debhelper 10.9. Closes: #876246. ++ * Strip the compiler binaries again. Closes: #872672. ++ * Bump binutils dependency to 2.29.1 for sid/buster. ++ ++ -- Matthias Klose Wed, 20 Sep 2017 11:13:31 +0200 ++ ++gcc-7 (7.2.0-5) unstable; urgency=medium ++ ++ * Update to SVN 20170915 (r252791) from the gcc-7-branch. ++ - Fix PR c/81687, PR c/45784, PR c++/81852, PR target/82181 (xtensa), ++ PR target/80695 (PPC), PR target/81988 (SPARC), PR middle-end/81768, ++ PR sanitizer/81923, PR target/81621, PR driver/81650, ++ PR middle-end/81052, PR tree-optimization/81987, PR bootstrap/81926, ++ PR libstdc++/79162, PR libstdc++/81468, PR libstdc++/81835, ++ PR libstdc++/70483, PR libstdc++/70483, PR target/81833 (PPC), ++ PR other/39851, PR ipa/81128, PR inline-asm/82001, PR c++/81355, ++ PR tree-opt/81696. ++ * Enable libgo tests and rebuilds with make -C (Svante Signell). ++ Closes: #873929. ++ * Fix PR sanitizer/77631, support separate debug info in libbacktrace. ++ * Update the Linaro support to the 7-2017.09 snapshot. ++ ++ -- Matthias Klose Fri, 15 Sep 2017 12:15:21 +0200 ++ ++gcc-7 (7.2.0-4) unstable; urgency=medium ++ ++ * Update to SVN 20170906 (r251753) from the gcc-7-branch. ++ - Fix PR c++/82039, PR libstdc++/81912, PR libstdc++/81891, ++ PR libstdc++/81599, PR libstdc++/81338, PR tree-optimization/81503, ++ PR ada/79542, PR ada/62235, PR fortran/81770. ++ * Fix PR target/81833 (PPC), taken from the trunk. Closes: #871565. ++ ++ -- Matthias Klose Wed, 06 Sep 2017 10:38:05 +0200 ++ ++gcc-7 (7.2.0-3) unstable; urgency=high ++ ++ * Update to SVN 20170901 (r251583) from the gcc-7-branch. ++ - Fix PR target/81504 (PPC), PR c++/82040. ++ * Apply proposed patch for PR target/81803 (James Cowgill), conditionally ++ for mips* targets. Closes: #871514. ++ * Bump standards version. ++ ++ -- Matthias Klose Sat, 02 Sep 2017 13:55:18 +0200 ++ ++gcc-7 (7.2.0-2) unstable; urgency=medium ++ ++ * Update to SVN 20170830 (r251446) from the gcc-7-branch. ++ - Fix PR target/72804 (PPC), PR target/80210 (PPC), PR target/81910 (AVR), ++ PR target/79883 (AVR), PR fortran/81296, PR fortran/80164, ++ PR target/81593 (PPC), PR target/81170 (PPC), PR target/81295 (PPC), ++ PR tree-optimization/81977, PR debug/81993 (closes: #873609), ++ PR middle-end/81088, PR middle-end/81065, PR sanitizer/80932, ++ PR middle-end/81884, PR tree-optimization/81181, ++ PR tree-optimization/81723, PR target/81921 (x86), PR c++/81607. ++ * Update the Linaro support to the 7-2017.08 snapshot. ++ * Restore configuring with --with-mode=thumb on armhf. Closes: #873584. ++ * Default to PIE on powerpc again, now that PR target/81170 and ++ PR target/81295 are fixed. Closes: #856224. ++ ++ -- Matthias Klose Wed, 30 Aug 2017 11:47:42 +0200 ++ ++gcc-7 (7.2.0-1) unstable; urgency=medium ++ ++ * GCC 7.2.0 release. ++ * Update libgcc1 symbols file for s390x. ++ * Apply proposed patch for PR driver/81829. Closes: #853537. ++ ++ -- Matthias Klose Fri, 18 Aug 2017 18:34:45 +0200 ++ ++gcc-7 (7.1.0-13) unstable; urgency=medium ++ ++ * GCC 7.2 release candidate 2. ++ * Don't build the gc enabled libobjc for cross compilers. Closes: #870895. ++ * Configure cross-build-native builds with --program-prefix (Adrian ++ Glaubitz). Closes: #871034. ++ * Update build dependencies for powerpcspe. Closes: #868186. ++ * Fix PR tree-optimization/81723, taken from the trunk. Closes: #853345. ++ ++ -- Matthias Klose Tue, 08 Aug 2017 11:12:56 -0400 ++ ++gcc-7 (7.1.0-12) unstable; urgency=medium ++ ++ * GCC 7.2 release candidate 1. ++ * Update to SVN 20170803 (r250853) from the gcc-7-branch. ++ ++ -- Matthias Klose Thu, 03 Aug 2017 09:20:48 -0400 ++ ++gcc-7 (7.1.0-11) unstable; urgency=medium ++ ++ * Update to SVN 20170731 (r250749) from the gcc-7-branch. ++ ++ [ Matthias Klose ] ++ * Update sanitizer symbols for ppc64 and sparc64. ++ ++ [ Nicolas Boulenguez ] ++ * Only build gnatvsn as a native library. ++ ++ -- Matthias Klose Mon, 24 Jul 2017 13:41:34 +0200 ++ ++gcc-7 (7.1.0-10) unstable; urgency=medium ++ ++ * Update to SVN 20170722 (r250453) from the gcc-7-branch. ++ ++ [ Nicolas Boulenguez ] ++ * libgnatvsn: embed xutil rident for version 2017 of asis package. ++ ++ [ Matthias Klose ] ++ * Fix gnat cross build on m68k (Adrian Glaubitz). Closes: #862927. ++ * Enable gnat cross build on m68k. Closes: #868365. ++ * Update the Linaro support to the 7-2017.07 snapshot. ++ * Stop ignoring symbol mismatches for runtime libraries. ++ ++ [ Aurelien Jarno ] ++ * libgo-s390x-default-isa.diff: do not build libgo with -march=z196, ++ use the default ISA instead. ++ ++ -- Matthias Klose Sat, 22 Jul 2017 15:06:36 +0200 ++ ++gcc-7 (7.1.0-9) unstable; urgency=medium ++ ++ * Update to SVN 20170705 (r250006) from the gcc-7-branch. ++ ++ [ Matthias Klose ] ++ * gcc-linaro-revert-r49596.diff: fix build for the linaro branch. ++ * Don't configure powerpc with --enable-default-pie, fails to build. ++ See #856224, PR target/81295. ++ ++ [ Nicolas Boulenguez ] ++ * ada-gcc-name.diff: unpatch gnatchop. Addresses: #856274. ++ * Link libgnat with libatomic on armel. Closes: #861734. ++ * libgnat-dev: use multiarch paths in project and to install .ali files. ++ * Build Ada on armel, kfreebsd-*, hurd-i386; #86173[457] are closed. ++ ++ -- Matthias Klose Wed, 05 Jul 2017 19:21:55 +0200 ++ ++gcc-7 (7.1.0-8) unstable; urgency=medium ++ ++ * Update to SVN 20170629 (r249793) from the gcc-7-branch. ++ ++ [ Matthias Klose ] ++ * Move the liblto_plugin from the cpp to the gcc package. ++ * libstdc++6: Add more Breaks to smoothen upgrades from jessie to stretch. ++ Addresses: #863845, #863745. ++ * Don't provide libobjc_gc symlinks for the libobjc multilib packages. ++ * Configure with --enable-default-pie on ppc64 (Adrian Glaubitz) and ++ powerpc (Mathieu Malaterre). Addresses: #856224. ++ ++ [ Nicolas Boulenguez ] ++ * Update ada/confirm_debian_bugs.py for gcc-7. ++ * Drop ada-driver-check.diff, the problem is unreproducible. ++ * Stop symlinking gcc-7-7 -> gcc-7. See #856274 and #814977. ++ * gnatmake: compile once even with SOURCE_DATE_EPOCH. Closes: #866029. ++ ++ -- Matthias Klose Thu, 29 Jun 2017 17:36:03 +0200 ++ ++gcc-7 (7.1.0-7) unstable; urgency=medium ++ ++ * Update to SVN 20170618 (r249347) from the gcc-7-branch. ++ ++ [ Matthias Klose ] ++ * Don't build libada with -O3 (ftbfs on ppc64el). ++ * Update sanitizer symbol files (Helmut Grohne). Closes: #864835. ++ ++ [ Aurelien Jarno ] ++ * Remove proposed patch for PR65618, the issue has been fixed upstream ++ another way. ++ ++ [ Nicolas Boulenguez ] ++ * Ada: link system.ads to system-freebsd.ads on hurd and *freebsd ++ system-freebsd-x86.ads does not exist anymore. Closes: #861735, #861737. ++ * Ada: prevent parallel gnatmake invokations for gnattools. Closes: #857831. ++ * Drop generated and obsolete debian/source.lintian-overrides. ++ * Drop debian/relink, never executed and redundant with ada patches. ++ * Ada: Drop dpkg-buildflags usage in patches. Closes: #863289. ++ * ada: Drop references to obsolete termio-h.diff. Closes: #845159. ++ * ada-749574.diff: replace work-around with fix and forward it. ++ * ada-kfreebsd.diff: reduce a lot thanks to Ada2012 syntax. ++ * ada-link-lib.diff: remove dubious parts. ++ ++ -- Matthias Klose Sun, 18 Jun 2017 15:31:39 +0200 ++ ++gcc-7 (7.1.0-6) experimental; urgency=medium ++ ++ * Update to SVN 20170522 (r248347) from the gcc-7-branch. ++ - Fix PR libstdc++/80796, PR libstdc++/80478, PR libstdc++/80761, ++ PR target/80799 (x86), PR ada/80784, PR fortran/78659, PR fortran/80752, ++ PR libgfortran/80727. ++ ++ [ Matthias Klose ] ++ * Re-add unwind support on kfreebsd-amd64 (James Clarke). ++ * Work around #814977 (gnat calling gcc-7-7) by providing a gcc-7-7 ++ symlink. ++ * Fix gnat build dependencies on x32. ++ * Build gnat on mips64 and powerpcspe. ++ * Update the Linaro support to the 7-2017.05 snapshot. ++ * Fix libmpx dependency generation for cross builds. ++ * Build again gnat cross compilers on 32bit archs targeting 64bit targets. ++ ++ [ Nicolas Boulenguez ] ++ * Remove ada-gnattools-noparallel patch, apparently fixed. Closes: #857831. ++ * Reduce diff with upstream in ada-gnattools-cross patch. ++ * debian/rules2: Simplify build flags transmission. ++ * Append build flags from dpkg during Ada target builds. ++ ++ -- Matthias Klose Mon, 22 May 2017 12:43:09 -0700 ++ ++gcc-7 (7.1.0-5) experimental; urgency=medium ++ ++ * Update to SVN 20170514 (r248033) from the gcc-7-branch. ++ * Disable offload compilers for snapshot builds. ++ * Build libgo when not building common libs. ++ * Fix building libgfortran and libgphobos when building without common libs. ++ * Build gnat on x32. ++ ++ -- Matthias Klose Sun, 14 May 2017 08:50:34 -0700 ++ ++gcc-7 (7.1.0-4) experimental; urgency=medium ++ ++ * Update to SVN 20170505 (r247630) from the gcc-7-branch. ++ * Add sh3 support to gcc-multiarch patch. Closes: #861760. ++ * Remove libquadmath/gdtoa license from debian/copyright (files removed). ++ * Fix gdc build on sh4 (sh5 support was removed upstream). ++ * Disable gnat on KFreeBSD (see #861737) and the Hurd (see #861735) for now. ++ * Disable running the testsuite on KFreeBSD and the Hurd, hanging on ++ the buildds. ++ ++ -- Matthias Klose Fri, 05 May 2017 11:27:27 +0200 ++ ++gcc-7 (7.1.0-3) experimental; urgency=medium ++ ++ * Update to SVN 20170503 (r247549) from the gcc-7-branch. ++ * Fix gdc build on sparc. ++ * Update the gdc-cross-install-location patch for GCC 7. ++ * Bump libgphobos soname. ++ * dpkg-buildflags stopped fiddling around with spec files; remove ++ the code removing and warning about dpkg's specs. ++ * Don't build the native gnat on armel. See issue #861734. ++ ++ -- Matthias Klose Wed, 03 May 2017 16:51:15 +0200 ++ ++gcc-7 (7.1.0-2) experimental; urgency=medium ++ ++ * Update the disable-gdc-tests patch for GCC 7.1. ++ ++ -- Matthias Klose Tue, 02 May 2017 18:35:14 +0200 ++ ++gcc-7 (7.1.0-1) experimental; urgency=medium ++ ++ * GCC 7.1.0 release. ++ * Update NEWS.html and NEWS.gcc. ++ * Update gdc to the gdc-7 branch 20170502. ++ * Add multiarch bits for non-glibc architectures (musl, uclibc) (Helmut ++ Grohne). Closes: #861588. ++ * Fix dependency on gcc-base package for rtlibs stage build (Helmut Grohne). ++ Closes: #859938. ++ ++ -- Matthias Klose Tue, 02 May 2017 18:07:07 +0200 ++ ++gcc-7 (7-20170407-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170407. ++ * Install gcov-dump and gcov-tool manual pages. ++ ++ -- Matthias Klose Fri, 07 Apr 2017 13:16:00 +0200 ++ ++gcc-7 (7-20170316-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170316. ++ * Install the gcov-dump utility. ++ * Allow to use lld with -fuse-ld=ld.lld. ++ * Build gnattools sequentially (fails with parallel build). See #857831. ++ * Add profile to the autogen build dependency. ++ * Re-add the generated Makefile.in changes to the gdc-libphobos-build patch. ++ ++ -- Matthias Klose Thu, 16 Mar 2017 12:34:18 +0100 ++ ++gcc-7 (7-20170314-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170314. ++ ++ [ Matthias Klose ] ++ * Bump binutils version requirement to 2.28. ++ * Fix libcc1.so symlink for cross compilers. Addresses: #856875. ++ * Fix base package name for rtlibs stage build (Helmut Grohne). ++ Closes: #857074. ++ * Update the cross-install-location patch (Helmut Grohne). Closes: #855565. ++ * Fix symlinks to man pages in the hppa64 package. Addresses: #857583. ++ * Don't ship the gnatgcc manpage symlink when building GFDL packages. ++ Addresses: #857384. ++ * Allow bootstrapping with libc headers installed in multiarch location. ++ (Helmut Grohne). Closes: #857535 ++ * gccbrig: Depend on hsail-tools. ++ ++ [ Nicolas Boulenguez ] ++ * Create the libgnatsvn packages again. Closes: #857606. ++ * Replace libgnat-BV.overrides with a fixed command. ++ * Install gnatvsn.gpr project into /u/s/gpr instead of ++ /u/s/ada/adainclude. Debian is migrating to GPRbuild's upstream layout. ++ * Avoid hardcoding the version in the ada-gcc-name patch. ++ * Reorganize Ada patches. See #857606 for details. ++ ++ -- Matthias Klose Tue, 14 Mar 2017 10:42:24 +0100 ++ ++gcc-7 (7-20170302-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170302. ++ ++ [ Matthias Klose ] ++ * Update gdc to trunk 20170227. ++ * Update libcc1 symbols file. ++ * Bump binutils version requirement. ++ * Allow to disable brig in DEB_BUILD_OPTIONS. Closes: #856452. ++ * Build the nvptx offload compilers. ++ * Add the newlib copyright, used for the gcc-7-offload-nvptx package. ++ * Install the libcp1plugin. ++ * Fix the installation directory of the ada-sjlj includes and libraries. ++ ++ [ Nicolas Boulenguez ] ++ * Use SOURCE_DATE_EPOCH for reproducible ALI timestamps. Closes: #856042. ++ * Remove obsolete references to libgnatprj, but keep existing ++ references to libgnatvsn as it will be restored. Closes: #844367. ++ * Drop obsolete and unapplied ada-default-project-path.diff. ++ ++ -- Matthias Klose Thu, 02 Mar 2017 10:12:34 +0100 ++ ++gcc-7 (7-20170226-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170226. ++ ++ -- Matthias Klose Sun, 26 Feb 2017 17:00:48 +0100 ++ ++gcc-7 (7-20170221-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170221. ++ * Update gdc to trunk 20170221. ++ ++ [ Matthias Klose ] ++ * Fix some hppa64 related build issues. Addresses: #853023. ++ * Allow setting offload targets by OFFLOAD_TARGET_DEFAULT. ++ * Again, disable go on m68k. Closes: #853906. ++ * Configure with --enable-default-pie on sparc and sparc64 (James Clarke). ++ Addresses: #854090. ++ * Configure with --enable-default-pie on kfreebsd-* (Steven Chamberlain). ++ * Build gccbrig and the libhsail-rt library for i386. ++ * Configure staged builds with --disable-libmpx and --disable-libhsail-rt. ++ * Fix target architecture for sparc non-multilib builds (Adrian Glaubitz). ++ Addresses: #855197. ++ * Bump binutils version requirement. ++ ++ [ Aurelien Jarno ] ++ * Disable lxc1/sxc1 instruction on mips and mipsel. ++ * Disable madd4 instructions on mipsel, mips64el and mipsn32el. ++ ++ -- Matthias Klose Tue, 21 Feb 2017 14:54:12 +0100 ++ ++gcc-7 (7-20170129-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170129. ++ * Fix removing the RUNPATH from the asan, tsan, ubsan, cilkrts, gfortran ++ and gphobos runtime libraries. ++ * Let the gnatgcc symlinks point to the versioned names. Addresses: #839209. ++ * Build the BRIG frontend on amd64. ++ * Install new intrinsics headers. Closes: #852551. ++ * libgo version bumped to 11. ++ * Package gccbrig and the libhsail-rt library. ++ ++ -- Matthias Klose Sun, 29 Jan 2017 13:51:35 +0100 ++ ++gcc-7 (7-20170121-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170121. ++ * Configure --with-gcc-major-version-only, drop the gcc-base-version, ++ gccgo-version and gdc-base-version patches. ++ * Adjust the g++-multiarch-incdir patch for reverted upstream patch, ++ causing bootstrap regression (PR 78880). Closes: #852104. ++ ++ -- Matthias Klose Sat, 21 Jan 2017 21:57:22 +0100 ++ ++gcc-7 (7-20170118-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20170118. ++ * Always configure sparc builds --with-cpu-32=ultrasparc (James Clarke). ++ * Enable gccgo on m68k (John Paul Adrian Glaubitz). Addresses: #850749. ++ * Install the unprefixed man pages for gcc-ar, -nm and ranlib. ++ Closes: #851698. ++ ++ -- Matthias Klose Wed, 18 Jan 2017 22:41:11 +0100 ++ ++gcc-7 (7-20161230-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20161230. ++ * Update gdc to trunk 20161229. Closes: #844704. ++ * Build the cilk runtime on armel, armhf, sparc and sparc64. ++ * Use --push-state/--pop-state for gold as well when linking libtsan. ++ * In GCC ICE dumps, prefix each line with the PID of the driver. ++ * Apply proposed patch for PR target/78748. ++ * Apply proposed patch for PR libstdc++/64735. ++ * Don't mark libphobos multilib packages as M-A: same. ++ * Configure libphobos builds with --with-target-system-zlib. ++ * Ignore dpkg's pie specs when pie is not enabled. Addresses: #848129. ++ * Drop m68k specific ada patches. Closes: #846872. ++ ++ -- Matthias Klose Fri, 30 Dec 2016 05:19:15 +0100 ++ ++gcc-7 (7-20161201-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20161201. ++ ++ * Install missing vecintrin.h header on s390x. ++ * Install missing avx512 intrinsics headers on x86*. Closes: #846075. ++ ++ -- Matthias Klose Thu, 01 Dec 2016 14:38:26 +0100 ++ ++gcc-7 (7-20161125-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20161125. ++ ++ [ Matthias Klose ] ++ * Update libgphobos symbol files. ++ * libphobos: Fix ARM32 multilib detection for system zlib. ++ * Update libgphobos symbols files for ARM32 targets. ++ * Build the GC enabled libobjc using the system libgc when available ++ * Mark libgphobos symbols changing with the file location (sic!) as optional. ++ * Add pkg-config to the build dependencies. ++ * Drop the work around for PR libstdc++/65913. ++ * gdc: Link with the shared libgphobos runtime by default. ++ * Fix PR middle-end/78501, proposed patch. ++ * Fix dependency generation for libgphobos multilib builds. ++ * Drop the ada-revert-pr63225 patch, only needed for libgnatvsn. ++ * Always apply the ada patches. ++ ++ [ YunQiang Su ] ++ * Update gnat patches for GCC 7, stop building libgnatvsn and libgnatprj. ++ Addresses: #844367. ++ ++ -- Matthias Klose Fri, 25 Nov 2016 12:41:07 +0100 ++ ++gcc-7 (7-20161116-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20161116. ++ * Build shared phobos runtime libraries (not yet enabled by default). ++ * Add symbols for libobjc_gc library. ++ ++ -- Matthias Klose Wed, 16 Nov 2016 19:16:39 +0100 ++ ++gcc-7 (7-20161115-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20161115. ++ * More symbol files updates. ++ * Update gdc to the trunk 20161113. ++ * Update conflicts with GCC 6 packages. Closes: #844296. ++ ++ -- Matthias Klose Tue, 15 Nov 2016 13:02:02 +0100 ++ ++gcc-7 (7-20161112-1) experimental; urgency=medium ++ ++ * GCC 7 snapshot build, taken from the trunk 20161112. ++ * Remove gij/gcj packages, removed upstream. ++ * Don't build gdc and gnat for now. ++ ++ -- Matthias Klose Sat, 12 Nov 2016 11:17:17 +0100 ++ ++gcc-6 (6.2.0-13) unstable; urgency=medium ++ ++ * Update to SVN 20161109 (r241998, 6.2.1) from the gcc-6-branch. ++ - Fix PR c/71115, PR target/78229 (closes: #843379), ++ PR tree-optimization/77768, PR c++/78039 (closes: #841316), ++ PR libgcc/78064, PR driver/78206. ++ * Fix using the gcc-6-source package (Stephen Kitt). Closes: #843476. ++ * Fix PR target/77822 (AArch64), taken from the trunk. Closes: #839249. ++ * Fix PR target/77822 (s390x), proposed patch. ++ * Update libiberty to the trunk 20161108. Addresses security issues: ++ CVE-2016-6131, CVE-2016-4493, CVE-2016-4492, CVE-2016-4490, ++ CVE-2016-4489, CVE-2016-4488, CVE-2016-4487, CVE-2016-2226. ++ ++ -- Matthias Klose Wed, 09 Nov 2016 20:42:53 +0100 ++ ++gcc-6 (6.2.0-11) unstable; urgency=medium ++ ++ * Update to SVN 20161103 (r241817, 6.2.1) from the gcc-6-branch. ++ - Fix PR debug/77773, PR middle-end/72747, PR tree-optimization/78047, ++ PR tree-optimization/77879, PR tree-optimization/77839, ++ PR tree-optimization/77745, PR tree-optimization/77648, ++ PR target/78166 (PA), PR rtl-optimization/78038, PR middle-end/78128, ++ PR middle-end/71002, PR fortran/69544, PR fortran/78178, ++ PR fortran/71902, PR fortran/67219, PR fortran/71891, PR lto/78129, ++ PR libgfortran/78123. ++ * Fix symlinks for gcj manual pages. Closes: #842407. ++ * Fix ICE in tree_to_shwi, Linaro issue #2575. ++ ++ -- Matthias Klose Thu, 03 Nov 2016 14:10:24 +0100 ++ ++gcc-6 (6.2.0-10) unstable; urgency=medium ++ ++ * Update to SVN 20161027 (r241619, 6.2.1) from the gcc-6-branch. ++ - Fix PR libstdc++/77288, PR libstdc++/77727, PR libstdc++/78052, ++ PR tree-optimization/77550, PR tree-optimization/77916, ++ PR fortran/71895, PR fortran/77763, PR fortran/61420, PR fortran/78013, ++ PR fortran/78021, PR fortran/72832, PR fortran/78092, PR fortran/78108, ++ PR target/78057 (x86), PR target/78037 (x86). ++ * Include go-relocation-test-gcc620-sparc64.obj.uue to fix libgo's ++ debug/elf TestDWARFRelocations test case (James Clarke). ++ * Reapply fix for PR c++/71912, apply proposed fix for PR c++/78039. ++ Closes: #841292. ++ * Don't install alternatives for go and gofmt. The preferred way to do that ++ is to install the golang-any package. ++ * For Debian builds, don't enable bind now by default when linking with pie ++ by default. ++ ++ -- Matthias Klose Thu, 27 Oct 2016 15:27:07 +0200 ++ ++gcc-6 (6.2.0-9) unstable; urgency=medium ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Thu, 20 Oct 2016 10:46:44 +0200 ++ ++gcc-6 (6.2.0-8) unstable; urgency=medium ++ ++ * Update to SVN 20161019 (r241346, 6.2.1) from the gcc-6-branch. ++ - Fix PR libstdc++/77990, PR target/77991 (x86). ++ * Install arm_fp16.h header on arm* architectures for Linaro builds. ++ * Backport upstream revisions from trunk (James Clarke). Closes: #840574. ++ - r240457 (add getrandom for MIPS/SPARC) ++ - r241051 (fix getrandom on sparc64 and clone on sparc*) ++ - r241072 (make rawClone no_split_stack) ++ - r241084 (don't use pt_regs; unnecessary, and seemingly not defined by ++ the included headers on arm64) ++ - r241171 (sparc64 relocations, e1fc2925 in go master, now also in ++ gofrontend/gccgo) ++ * Revert fix for PR c++/71912, causing PR c++/78039. Addresses: #841292. ++ ++ -- Matthias Klose Wed, 19 Oct 2016 08:57:23 +0200 ++ ++gcc-6 (6.2.0-7) unstable; urgency=medium ++ ++ * Update to SVN 20161018 (r241301, 6.2.1) from the gcc-6-branch. ++ - Fix PR libstdc++/77987, PR libstdc++/77322, PR libstdc++/72820, ++ PR libstdc++/77994, PR tree-optimization/77937, PR c++/71912, ++ PR tree-optimization/77937, PR tree-optimization/77943, ++ PR bootstrap/77995, PR fortran/77978, PR fortran/77915, PR fortran/77942. ++ ++ [ Matthias Klose ] ++ * Backport Mips go closure support, taken from libffi. Closes: #839132. ++ * Configure with --enable-default-pie and pass -z now when pie is enabled; ++ on amd64 arm64 armel armhf i386 mips mipsel mips64el ppc64el s390x. ++ Closes: #835148. ++ * Update the Linaro support to the 6-2016.10 snapshot. ++ ++ [ Aurelien Jarno ] ++ * Enable logwatch on mips64el. ++ ++ -- Matthias Klose Tue, 18 Oct 2016 13:53:00 +0200 ++ ++gcc-6 (6.2.0-6) unstable; urgency=medium ++ ++ * Update to SVN 20161010 (r240906, 6.2.1) from the gcc-6-branch. ++ - Fix PR libstdc++/68323, PR libstdc++/77794, PR libstdc++/77795, ++ PR libstdc++/77801, PR libgcc/77519, PR target/77756 (x86), ++ PR target/77670 (PPC), PR rtl-optimization/71709, PR c++/77804, ++ PR fortran/41922, PR fortran/60774, PR fortran/61318, PR fortran/68566, ++ PR fortran/69514, PR fortran/69867, PR fortran/69962, PR fortran/70006, ++ PR fortran/71067, PR fortran/71730, PR fortran/71799, PR fortran/71859, ++ PR fortran/71862, PR fortran/77260, PR fortran/77351, PR fortran/77372, ++ PR fortran/77380, PR fortran/77391, PR fortran/77420, PR fortran/77429, ++ PR fortran/77460, PR fortran/77506, PR fortran/77507, PR fortran/77612, ++ PR fortran/77694, PR libgfortran/77707, PR libstdc++/70101, ++ PR libstdc++/77864, PR libstdc++/70564, PR target/77874 (x86), ++ PR target/77759 (sparc), PR fortran/77406, PR fortran/58991, ++ PR fortran/58992. ++ * Really fix gij installation on hppa. Closes: #838111. ++ * Install alternatives for go and gofmt. Closes: #840190. ++ ++ -- Matthias Klose Mon, 10 Oct 2016 05:20:07 +0200 ++ ++gcc-6 (6.2.0-5) unstable; urgency=medium ++ ++ * Update to SVN 20160927 (r240553, 6.2.1) from the gcc-6-branch. ++ - Fix PR sanitizer/77396, PR libstdc++/77645, PR libstdc++/77645, ++ PR target/77326 (AVR), PR target/77349 (PPC), PR middle-end/77594, ++ PR sanitizer/68260, PR fortran/77516, PR target/69255 (x86), ++ PR c++/77553, PR c++/77539, PR fortran/77500, PR c/77450, ++ PR middle-end/77436, PR tree-optimization/77514, PR middle-end/77544, ++ PR tree-optimization/77514, PR middle-end/77605, PR middle-end/77679, ++ PR tree-optimization/77621, PR target/77621 (x86), PR c++/71979. ++ * Fix gij installation on hppa. Closes: #838111. ++ * Fix PR rtl-optimization/71709, taken from the trunk. LP: #1628207. ++ * Apply workaround for PR libstdc++/77686. Addresses: #838438. ++ ++ -- Matthias Klose Wed, 28 Sep 2016 15:53:28 +0200 ++ ++gcc-6 (6.2.0-4) unstable; urgency=medium ++ ++ * Update to SVN 20160914 (r240133, 6.2.1) from the gcc-6-branch. ++ - Fix PR rtl-optimization/77452, PR c++/77427. ++ * gcj: Depend on the ecj1 standalone binary. ++ * Configure native builds using --with-program-prefix. ++ * Fix ICE in gdc symbol mangling (Iain Buclaw). LP: #1620681. ++ * Backport from libffi trunk (Stefan Bühler): ++ - Always check for PaX MPROTECT on linux, make EMUTRAMP experimental. ++ - dlmmap_locked always needs locking as it always modifies execsize. ++ ++ -- Matthias Klose Thu, 15 Sep 2016 19:22:35 +0200 ++ ++gcc-6 (6.2.0-3) unstable; urgency=medium ++ ++ * Update to SVN 20160901 (r239944, 6.2.1) from the gcc-6-branch. ++ - Fix PR fortran/71014, PR libstdc++/77395, PR tree-optimization/72866, ++ PR debug/77363, PR middle-end/77377, PR middle-end/77259, ++ PR target/71910 (cygwin), PR target/77281 (ARM), ++ PR tree-optimization/71077, PR tree-optimization/68542, PR fortran/77352, ++ PR fortran/77374, PR fortran/71014, PR fortran/69281. ++ * Fix setting the stage1 C++ compiler. ++ * gdc: Always link with -ldl when linking with -lgphobos. ++ Closes: #835255, #835757. ++ * Fix building D code with external C++ references. ++ ++ -- Matthias Klose Sun, 04 Sep 2016 12:38:47 +0200 ++ ++gcc-6 (6.2.0-2) unstable; urgency=medium ++ ++ * Update to SVN 20160830 (r239868, 6.2.1) from the gcc-6-branch. ++ - Fix PR libstdc++/77334, PR tree-optimization/76783, ++ PR tree-optimization/72851, PR target/72867 (x86), PR middle-end/71700, ++ PR target/77403 (x86), PR target/77270 (x86), PR target/77270 (x86), ++ PR lto/70955, PR target/72863 (PPC), PR tree-optimization/76490, ++ PR fortran/77358. ++ * Call default_file_start from s390_asm_file_start, taken from the trunk. ++ * Update multiarch patches for mips* r6 (YunQiang Su). ++ * Fix install location of D header files for cross builds (YunQiang Su). ++ Closes: #835847. ++ * Fix PR c++/77379, taken from the trunk. ++ * Update the Linaro support to the 6-2016.08 snapshot. ++ ++ -- Matthias Klose Wed, 31 Aug 2016 12:28:38 +0200 ++ ++gcc-6 (6.2.0-1) unstable; urgency=medium ++ ++ * GCC 6.2 release. ++ * Update gdc to the gdc-6 branch 20160822. ++ ++ -- Matthias Klose Mon, 22 Aug 2016 14:15:21 +0200 ++ ++gcc-6 (6.1.1-12) unstable; urgency=medium ++ ++ * GCC 6.2 release candidate 1. ++ * Update to SVN 20160815 (r239482, 6.1.1) from the gcc-6-branch. ++ Fix PR target/71869 (PPC), PR target/72805 (x86), PR target/70677 (AVR), ++ PR c++/72415, PR sanitizer/71042, PR libstdc++/71964, PR libstdc++/70940, ++ PR c/67410, PR c/72816, PR driver/72765, PR debug/71906, ++ PR tree-optimization/73434, PR tree-optimization/72824, PR target/76342, ++ PR target/72843, PR c/71512, PR tree-optimization/71083, PR target/72819, ++ PR target/72853, PR tree-optimization/72824, PR ipa/71981, PR ipa/68273, ++ PR tree-optimization/71881, PR target/72802, PR target/72802, ++ PR rtl-optimization/71976, PR c++/71972, PR c++/72868, PR c++/73456, ++ PR c++/72800, PR c++/68724, PR debug/71906, PR fortran/71936, ++ PR fortran/72698, PR fortran/70524, PR fortran/71795, PR libgfortran/71123, ++ PR libgfortran/73142. ++ ++ [ Matthias Klose ] ++ * Fix running the libjava testsuite. ++ * Revert fix for PR target/55947, causing PR libstdc++/72813. LP: #1610220. ++ * Update the Linaro support to the 6-2016.07 snapshot. ++ ++ [ Aurelien Jarno ] ++ * Replace proposed fix for PR ipa/68273 by the corresponding patch taken ++ from trunk. ++ ++ -- Matthias Klose Mon, 15 Aug 2016 17:51:10 +0200 ++ ++gcc-6 (6.1.1-11) unstable; urgency=medium ++ ++ * Update to SVN 20160802 (r238981, 6.1.1) from the gcc-6-branch. ++ - Fix PR target/72767 (AVR), PR target/71151 (AVR), PR c/7652, ++ PR target/71216 (PPC), PR target/72103 (PPC), PR c++/72457, PR c++/71576, ++ PR c++/71833, PR fortran/71883. ++ ++ [ Nicolas Boulenguez ] ++ * debian/ada/confirm_debian_bugs.py: Update for GCC 6. Closes: #832799. ++ ++ [ Matthias Klose ] ++ * Backport AArch64 Vulcan cost models (Dann Frazier). LP: #1603587. ++ ++ -- Matthias Klose Wed, 03 Aug 2016 21:53:37 +0200 ++ ++gcc-6 (6.1.1-10) unstable; urgency=medium ++ ++ * Update to SVN 20160724 (r238695, 6.1.1) from the gcc-6-branch. ++ - Fix PR libstdc++/71856, PR libstdc++/71320, PR c++/71214, ++ PR sanitizer/71953, PR fortran/71688, PR rtl-optimization/71916, ++ PR debug/71855, PR middle-end/71874, PR target/71493 (PPC), ++ PR rtl-optimization/71634, PR target/71733 (PPC), PR ipa/71624, ++ PR target/71805 (PPC), PR target/70098 (PPC), PR target/71763 (PPC), ++ PR middle-end/71758, PR tree-optimization/71823, PR middle-end/71606, ++ PR tree-optimization/71518, PR target/71806 (PPC), PR target/71720 (PPC), ++ PR middle-end/64516, PR tree-optimization/71264, PR middle-end/71423, ++ PR tree-optimization/71521, PR tree-optimization/71452, PR target/50739, ++ PR tree-optimization/71522, PR c++/55922, PR c++/63151, PR c++/70709, ++ PR c++/70778, PR c++/71738, PR c++/71350, PR c++/71748, PR c++/52746, ++ PR c++/69223, PR c++/71630, PR c++/71913, PR c++/71728, PR c++/71941, ++ PR c++/70822, PR c++/70106, PR c++/67565, PR c++/67579, PR c++/71843, ++ PR c++/70781, PR c++/71896, PR c++/71092, PR c++/71117, PR c++/71495, ++ PR c++/71511, PR c++/71513, PR c++/71604, PR c++/54430, PR c++/71711, ++ PR c++/71814, PR c++/71718, PR c++/70824, PR c++/71909, PR c++/71835, ++ PR c++/71828, PR c++/71822, PR c++/71871, PR c++/70869, PR c++/71054, ++ PR fortran/71807, PR fortran/70842, PR fortran/71764, PR fortran/71623, ++ PR fortran/71783. ++ ++ [ Matthias Klose ] ++ * Build-depend on gnat-6 instead of gnat-5 on development distros. ++ ++ [ Aurelien Jarno ] ++ * Replace libjava-mips64el-proposed.diff by the corresponding patch ++ taken from trunk. ++ ++ -- Matthias Klose Sun, 24 Jul 2016 19:42:10 +0200 ++ ++gcc-6 (6.1.1-9) unstable; urgency=medium ++ ++ * Update to SVN 20160705 (r237999, 6.1.1) from the gcc-6-branch. ++ - Fix PR fortran/71717, PR libstdc++/71313, PR c/71685, PR c++/71739, ++ PR target/71670 (PPC), PR middle-end/71626, PR target/71559 (x86), ++ PR target/71656 (PPC), PR target/71698 (PPC), PR driver/71651, ++ PR fortran/71687, PR fortran/71704, PR fortran/71705. ++ * Mark cross compilers as M-A: foreign. Addresses: #827136. ++ * On sparc64, configure with --with-cpu-32=ultrasparc, drop the ++ sparc-force-cpu patch. Closes: #809509. ++ ++ -- Matthias Klose Tue, 05 Jul 2016 11:19:50 +0200 ++ ++gcc-6 (6.1.1-8) unstable; urgency=medium ++ ++ * Update to SVN 20160630 (r237878, 6.1.1) from the gcc-6-branch. ++ - Fix PR tree-optimization/71647, PR target/30417 (AVR), ++ PR target/71103 (AVR), PR tree-optimization/71588, PR middle-end/71581, ++ PR c++/71528, PR fortran/70673, PR middle-end/71693. ++ ++ [ Aurelien Jarno ] ++ * Apply proposed patch from Matthew Fortune to fix libjava on mips64el. ++ ++ [ Matthias Klose ] ++ * Add AArch64 Vulcan cpu support (Dann Frazier). LP: #1594452. ++ * gfortran: Suggest libcoarrays-dev. Closes: #827995. ++ * cpp: Breaks libmagics++-dev (<< 2.28.0-4). Closes: #825278. ++ * Optimize for mips32r2 for o32 (YunQiang Su). Closes: #827801. ++ ++ -- Matthias Klose Thu, 30 Jun 2016 14:12:55 +0200 ++ ++gcc-6 (6.1.1-7) unstable; urgency=medium ++ ++ * Update to SVN 20160620 (r237590, 6.1.1) from the gcc-6-branch. ++ - Fix PR middle-end/71373, PR c/71381, PR libstdc++/71545, PR c/68657, ++ PR sanitizer/71498, PR middle-end/71529, PR target/71103 (AVR), ++ PR target/71554 (x86), PR middle-end/71494, PR c++/71448, ++ PR tree-optimization/71405, PR tree-optimization/71505, ++ PR target/71379 (s390), PR target/71186 (PPC), PR target/70915 (PPC), ++ PR c++/70572, PR c++/71516, PR c/71381. ++ * Fix libgnatprj build to avoid undefined symbols (YunQiang Su). ++ Closes: #826503. ++ * Add build support for tilegx (Helmut Grohne). Closes: #827578. ++ * Drop support for loongson 2f (YunQiang Su). Closes: #827554. ++ ++ -- Matthias Klose Mon, 20 Jun 2016 13:41:44 +0200 ++ ++gcc-6 (6.1.1-6) unstable; urgency=medium ++ ++ * Update to SVN 20160609 (r237267, 6.1.1) from the gcc-6-branch. ++ - Fix PR target/71389 (x86), PR tree-optimization/71259, ++ PR target/70830 (ARM), PR target/67310 (x86), PR c++/71442, ++ PR c++/70847, PR c++/71330, PR c++/71393, PR fortran/69659. ++ * gdc: Fix linking the runtime library. Addresses: #826645. ++ * Fix building libgnatprj on powerpc, and on PIE enabled builds (YunQiang Su). ++ Closes: #826365. ++ ++ -- Matthias Klose Thu, 09 Jun 2016 18:19:42 +0200 ++ ++gcc-6 (6.1.1-5) unstable; urgency=medium ++ ++ * Update to SVN 20160603 (r237075, 6.1.1) from the gcc-6-branch. ++ - Fix PR libstdc++/70762, PR libstdc++/69703, PR libstdc++/69703, ++ PR libstdc++/71038, PR libstdc++/71036, PR libstdc++/71037, ++ PR libstdc++/71005, PR libstdc++/71004, PR libstdc++/70609, PR c/71171, ++ PR middle-end/71279, PR c++/71147, PR c++/71257, ++ PR tree-optimization/70884, PR c++/71210, PR tree-optimization/71031, ++ PR c++/69872, PR c++/71257, PR c++/70344, PR c++/71184, PR fortran/66461, ++ PR fortran/71204, PR libffi/65567, PR c++/71349, PR target/71201, ++ PR middle-end/71371, PR debug/71057, PR target/71056 (ARM32), ++ PR tree-optimization/69068, PR middle-end/71002, PR bootstrap/71071, ++ PR c++/71372, PR c++/70972, PR c++/71166, PR c++/71227, PR c++/60095, ++ PR c++/69515, PR c++/69009, PR c++/71173, PR c++/70522, PR c++/70584, ++ PR c++/70735, PR c++/71306, PR c++/71349, PR c++/71105, PR c++/71147, ++ PR ada/71358, PR ada/71317, PR fortran/71156, PR middle-end/71387. ++ * Fix cross building libgnatprj on i386 targeting 64bit archs (YunQiang Su). ++ Closes: #823126. ++ * Detect hard float for non-linux or non-glibc arm-*-*eabihf builds (Helmut ++ Grohne). Closes: #823894. ++ * Update embedded timestamp setting patch, backported from the trunk. ++ * gccgo: Combine combine gccgo's ld() and ldShared() methods ++ in cmd/go (Michael Hudson-Doyle). LP: #1586872. ++ ++ -- Matthias Klose Fri, 03 Jun 2016 18:58:40 +0200 ++ ++gcc-6 (6.1.1-4) unstable; urgency=medium ++ ++ * Update to SVN 20160519 (r236478, 6.1.1) from the gcc-6-branch. ++ - Fix PR sanitizer/71160, PR c++/70498, PR target/71161 (x86), ++ PR fortran/70856, PR c++/71100, PR target/71145 (alpha), PR c++/70466, ++ PR target/70860 (nvptx), PR target/70809 (AArch64), PR hsa/70857, ++ PR driver/68463, PR target/70947 (PPC), PR ipa/70760, PR middle-end/70931, ++ PR middle-end/70941, PR tree-optimization/71006, PR target/70830 (ARM), ++ PR fortran/69603, PR fortran/71047, PR fortran/56226, PR ipa/70646. ++ * libgnat{prj,svn}-dev: Don't recommend gnat when building cross compiler ++ packages. ++ ++ -- Matthias Klose Thu, 19 May 2016 18:40:49 +0200 ++ ++gcc-6 (6.1.1-3) unstable; urgency=medium ++ ++ * Update to SVN 20160511 (r236071, 6.1.1) from the gcc-6-branch. ++ - Fix PR libstdc++/71049, PR middle-end/70877, PR tree-optimization/70876, ++ PR target/70963, PR tree-optimization/70916, PR debug/70935. ++ * Enable gdc for sh4. ++ ++ -- Matthias Klose Wed, 11 May 2016 22:35:33 +0200 ++ ++gcc-6 (6.1.1-2) unstable; urgency=medium ++ ++ * Update to SVN 20160510 (r236071, 6.1.1) from the gcc-6-branch. ++ - Fix PR tree-optimization/70956, PR sanitizer/70875, PR sanitizer/70342, ++ PR ada/70969, PR ada/70900. ++ ++ [ Matthias Klose ] ++ * Call dh_makeshlibs with the --noscripts option when building a ++ cross compiler. ++ * Fix building cross gnat libs when not building the common libs. ++ * Fix building cross mips* multilibs when not building the common libs. ++ * Re-enable gnat build on some architectures for snapshot builds. ++ * Don't build gnat cross compilers on 32bit archs targeting 64bit targets. ++ Addresses: #823126. ++ * Avoid empty architecture lists in build dependencies. Closes: #823280. ++ * Tighten debhelper build dependency for cross build dependencies. ++ * Allow build dependencies for musl configurations (Helmut Grohne). ++ Closes: #823769. ++ * Fix dependency resolution for libraries not built anymore from ++ this source package. ++ ++ [ Samuel Thibault ] ++ * patches/ada-hurd.diff: Fix Get_Page_Size type. ++ ++ -- Matthias Klose Tue, 10 May 2016 13:34:49 +0200 ++ ++gcc-6 (6.1.1-1) unstable; urgency=medium ++ ++ * GCC 6.1.0 release. ++ - Fix PR bootstrap/70704, PR tree-optimization/70780, PR libgfortran/70684, ++ PR middle-end/70626, PR java/70839, PR target/70858, PR ada/70759, ++ PR ada/70786, PR c++/70540, PR middle-end/70626. ++ * Update to SVN 20160430 (r235678, 6.1.1) from the gcc-6-branch. ++ - Fix PR middle-end/70680, PR target/70750 (x86), PR ipa/70785, ++ PR sanitizer/70712, PR target/70728 (x86). ++ - Don't encode the minor version in the gcj abi version. ++ ++ [ Aurelien Jarno ] ++ * Apply proposed patch for PR target/68273 (Wrong code on mips/mipsel due to ++ (invalid?) peeking at alignments in function_arg) on mips and mipsel. ++ ++ [ Matthias Klose ] ++ * Always configure with --enable-targets=powerpcle-linux on ppc64el. ++ * Stop building libcc1 and libgccjit0, when not building common libs. ++ * Rename libgccjit-5-dbg to libgccjit0-dbg. ++ * Fix libjava testsuite with dejagnu 1.6, taken from the trunk. ++ * Allow embedded timestamps by C/C++ macros to be set externally (Eduard ++ Sanou). ++ * Add missing libstdc++ symbol to symbols file. ++ * libstdc++-doc: Ignore warnings about formulas and long identifiers in ++ man pages. ++ * Default the 32bit x86 architectures to i686, keep i585 symlinks. ++ See https://lists.debian.org/debian-devel/2015/09/msg00589.html ++ * Build-depend on debhelper (>= 9) and dpkg-dev (>= 1.17.14). ++ * Update gdc to the gdc-6 branch 20160430. ++ ++ -- Matthias Klose Sat, 30 Apr 2016 13:31:12 +0200 ++ ++gcc-6 (6.0.1-2) unstable; urgency=medium ++ ++ * GCC 6.1 release candidate 2. ++ - Fix PR c++/68206, PR c++/70522, PR middle-end/70747, PR target/64971, ++ PR c++/66543, PR tree-optimization/70725, PR tree-optimization/70726, ++ PR target/70674 (s390x), PR tree-optimization/70724, PR c++/70690, ++ PR c++/70505, PR target/70711 (ARM32), PR c++/70685, ++ PR target/70662 (x86). ++ * Update gdc to the trunk 20160423. ++ ++ -- Matthias Klose Sat, 23 Apr 2016 17:56:52 +0200 ++ ++gcc-6 (6.0.1-1) experimental; urgency=medium ++ ++ * GCC 6.1 release candidate 1. ++ ++ [ Michael Hudson-Doyle ] ++ * cmd/go: deduplicate gccgo afiles by package path, not *Package. ++ LP: #1566552. ++ ++ -- Matthias Klose Fri, 15 Apr 2016 18:32:25 +0200 ++ ++gcc-6 (6-20160405-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160405. ++ ++ -- Matthias Klose Tue, 05 Apr 2016 16:39:49 +0200 ++ ++gcc-6 (6-20160319-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160319. ++ * Stop providing alternative for /usr/bin/go. (Michael Hudson-Doyle). ++ LP: #1555856. ++ * Disable gnat on powerpcspe. Closes: #816051. ++ ++ -- Matthias Klose Sat, 19 Mar 2016 11:54:57 +0100 ++ ++gcc-6 (6-20160312-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160312. ++ * Update gdc to the trunk 20160306. ++ * Remove powerpcspe specific patch, integrated upstream. Addresses: #816048. ++ * When configured to link with --as-needed by default, always link the ++ sanitizer libraries with --no-as-needed. ++ ++ -- Matthias Klose Sat, 12 Mar 2016 10:21:28 +0100 ++ ++gcc-6 (6-20160228-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160228. ++ ++ [ Matthias Klose ] ++ * libgo: Port syscall.SetsockoptUcred from golang (Michael Vogt). ++ ++ [ Svante Signell ] ++ * patches/ada-hurd.diff: Update. ++ ++ -- Matthias Klose Sun, 28 Feb 2016 13:28:41 +0100 ++ ++gcc-6 (6-20160225-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160225. ++ * Update gdc to the trunk 20160224. ++ * Install missing architecture specific plugin header files. ++ * Fix PR target/69885, bootstrap error on m68k. ++ ++ -- Matthias Klose Thu, 25 Feb 2016 02:00:57 +0100 ++ ++gcc-6 (6-20160220-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160220. ++ - Fix PR tree-optimization/68021. Closes: #812245. ++ - Fix PR ipa/69241. Closes: #812060. ++ - Fix PR libstdc++/56158. Closes: #789369. ++ * Update symbols files. ++ * libgccjit-6-doc: Really conflict with libgccjit-5-doc. Closes: #814527. ++ * Update conflict for gnat cross build packages. Closes: #810809. ++ * Disable the m68k gnat build, currently fails. See: #814221. ++ * Fix running the acats tests (Svante Signell): Addresses part of #814978. ++ ++ -- Matthias Klose Sat, 20 Feb 2016 16:58:47 +0100 ++ ++gcc-6 (6-20160205-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160205. ++ - Fix PR tree-optimization/69320. Closes: #811921. ++ - Fix PR c++/68782. Closes: #812287. ++ - Fix PR tree-optimization/69328. Closes: #812247. ++ - Fix PR target/69421. Closes: #812246. ++ - Fix PR c++/69379. Closes: #812068. ++ - Fix PR lto/69393. Closes: #812062. ++ - Fix PR tree-optimization/69166. Closes: #812061. ++ * Update gdc to the trunk 20160205. ++ - Fix data corruption bug when passing around longdoubles. ++ Closes: #812080. ++ * Add more conflicts to GCC 5's debug and doc packages. Closes: #813081. ++ * Fix dependency generation for armel/armhf multilib cross targets. ++ * Fix libc dependency generation for multilib cross targets. ++ * Build libitm on alpha, s390x, sh4, sparc64. ++ ++ -- Matthias Klose Fri, 05 Feb 2016 18:08:37 +0100 ++ ++gcc-6 (6-20160122-1) experimental; urgency=medium ++ ++ * Fix gnat build failure on KFreeBSD (Steven Chamberlain). Closes: #811372. ++ * Fix dependencies on target libraries which are not built anymore ++ from this source. ++ * Bump libmpx soname. Closes: #812084. ++ * Apply proposed patch for PR target/69129. Closes: #810081. ++ * Apply proposed patch for PR go/66904, pass linker flags from ++ "#cgo pkg-config:" directives (Michael Hudson). ++ * Configure with --enable-fix-cortex-a53-843419 on AArch64. ++ ++ -- Matthias Klose Fri, 22 Jan 2016 13:33:19 +0100 ++ ++gcc-6 (6-20160117-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160117. ++ * Update gdc to the trunk 20160115. ++ * Update libgnatvsn/libgnatprj conflicts. Closes: #810809. ++ * Fix gnat build failures on the Hurd and KFreeBSD (Svante Signell). ++ Closes: #811063. ++ * Build libstdc++-6-doc with a fixed doxygen. Closes: #810717. ++ ++ -- Matthias Klose Sun, 17 Jan 2016 12:14:39 +0100 ++ ++gcc-6 (6-20160109-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160109. ++ * Install new header file pkuintrin.h. Closes: #809807. ++ * Fix libcc1-0 dependency for cross compilers. ++ ++ -- Matthias Klose Sat, 09 Jan 2016 11:49:50 +0100 ++ ++gcc-6 (6-20160103-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160101. ++ ++ -- Matthias Klose Sun, 03 Jan 2016 12:47:13 +0100 ++ ++gcc-6 (6-20160101-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20160101. ++ * Build native gnat on sh4. Addresses: #809498. ++ ++ -- Matthias Klose Fri, 01 Jan 2016 21:18:38 +0100 ++ ++gcc-6 (6-20151220-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20151220. ++ * Update libstdc++-dbg conflicts. Closes: #807885. ++ * Set target tools and build dependencies for cross builds. ++ * Relax gcj-6-{jre,jre-headless,jdk} dependencies on libgcj16. ++ * Fix cross build issues. ++ ++ -- Matthias Klose Sun, 20 Dec 2015 13:46:12 +0100 ++ ++gcc-6 (6-20151213-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20151213. ++ * Update the ada-kfreebsd and ada-m68k patches. ++ * Fix cross-building without having the common cross libraries installed. ++ * Allow unstripped, non-optimized debug builds with setting DEB_BUILD_OPTIONS ++ including gccdebug. ++ * Remove obsolete libgccmath packaging support. ++ * Define SONAME macros whether the libraries are built or not. ++ ++ -- Matthias Klose Sun, 13 Dec 2015 16:04:56 +0100 ++ ++gcc-6 (6-20151211-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from the trunk 20151211. ++ * Update gnat and gdc patches, re-enable gnat and gdc. ++ ++ -- Matthias Klose Fri, 11 Dec 2015 12:35:03 +0100 ++ ++gcc-6 (6-20151210-1) experimental; urgency=medium ++ ++ * GCC 6 snapshot build, taken from 20151210. ++ ++ -- Matthias Klose Thu, 10 Dec 2015 22:09:13 +0100 ++ ++gcc-5 (5.3.1-3) unstable; urgency=medium ++ ++ * Update to SVN 20151207 (r231361, 5.3.1) from the gcc-5-branch. ++ * Remove upstreamed chunks from the ada-kfreebsd patch. ++ ++ -- Matthias Klose Tue, 08 Dec 2015 02:10:51 +0100 ++ ++gcc-5 (5.3.1-2) unstable; urgency=medium ++ ++ * Update to SVN 20151206 (r231339, 5.3.1) from the gcc-5-branch. ++ * Re-enable building gdc/libphobos, fixing the profiled build. ++ * Fix PR sanitizer/67899, build failure on sparc/sparc64. ++ ++ -- Matthias Klose Sun, 06 Dec 2015 19:15:46 +0100 ++ ++gcc-5 (5.3.1-1) unstable; urgency=medium ++ ++ * Update to SVN 20151205 (r231314, 5.3.1) from the gcc-5-branch. ++ ++ -- Matthias Klose Sat, 05 Dec 2015 20:45:53 +0100 ++ ++gcc-5 (5.3.0-3) unstable; urgency=medium ++ ++ * Update libgcc symbols file. ++ * Restore libgcc.symbols.aebi. ++ * Disabled profiled bootstraps for backports. ++ ++ -- Matthias Klose Sat, 05 Dec 2015 07:50:48 +0100 ++ ++gcc-5 (5.3.0-1) experimental; urgency=medium ++ ++ * GCC 5.3 release. ++ - Fix PR libstdc++/65142 (CVE-2015-5276). ++ * Update gdc to the gcc-5 branch 20151130. ++ * Enable the profiled bootstrap on amd64, arm64, armel armhf, i386, powerpc, ++ ppc64, ppc64el, s390x, x32 (excluding builds from the Linaro branch). ++ * Move test summary into the gcc-test-results package. ++ * Simplify libatomic, libcilkrts, libgcc, libgfortran, libgomp, libitm, ++ libmpx, libquadmath symbols files using versioned symbol references. ++ Closes: #806784. ++ * Only build the hppa64 cross compiler when either building the native compiler, ++ or when cross building the native compiler. Closes: #806479. ++ * Configure staged build with --enable-linker-build-id. ++ ++ -- Matthias Klose Fri, 04 Dec 2015 12:01:04 +0100 ++ ++gcc-5 (5.2.1-27) unstable; urgency=medium ++ ++ * Update to SVN 20151129 (r231053, 5.2.1) from the gcc-5-branch. ++ * Don't strip cc1plus when shipping with unstripped frontends. ++ * Relax libgnatvsn5-dev-*-cross and libgnatprj5-dev-*-cross dependencies ++ on gnat-5-*-linux-gnu. ++ * Fix setting the explicit libc dependency for cross builds. ++ * Don't build m4-nofpu multilibs on sh4, install the default multilib ++ into the standard location. ++ * Stop building gnat on mips64, see https://gcc.gnu.org/PR65337 (#806370). ++ * Update the patch for PR go/67508 and re-enable Go on sparc and sparc64. ++ * Fix gnat sparc/sparc64 architecture detection. ++ * Update libgcc and libstdc++ symbols files. ++ * Don't ship the gcov tools in the gcc-hppa64-linux-gnu package. ++ * Run the autoconf generation in parallel. ++ * Add --enable-default-pie option to GCC configure, taken from the trunk. ++ * Enable gnat for m68k cross builds. ++ * Link gnat tools, gnat libs and libgccjit with the defaults LDFLAGS. ++ * Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds. ++ * Ship an empty debian/rules.parameters in the gcc-5-source package. ++ ++ -- Matthias Klose Sun, 29 Nov 2015 23:48:58 +0100 ++ ++gcc-5 (5.2.1-26) unstable; urgency=medium ++ ++ * Update to SVN 20151125 (r230897, 5.2.1) from the gcc-5-branch. ++ * Fix the rtlibs stage build. Closes: #806186. ++ * Fix packaging the cross libphobos package. ++ * Build the hppa64 cross compiler on x86 architectures. ++ * gcc-5-hppa64-linux-gnu: Stop providing unversioned tools using ++ alternatives. Build a gcc-hppa64-linux-gnu package instead. ++ * Split out a gcc-5-test-results package from g++-5, allowing a post ++ build analysis, and reducing the size of the g++-5 package. ++ ++ -- Matthias Klose Wed, 25 Nov 2015 20:33:08 +0100 ++ ++gcc-5 (5.2.1-25) unstable; urgency=medium ++ ++ * Update to SVN 20151123 (r230734, 5.2.1) from the gcc-5-branch. ++ * Fix libgcc4-dbg dependency on libgcc4. Closes: #805839. ++ * Fix building epoch prefixed cross packages. ++ ++ -- Matthias Klose Mon, 23 Nov 2015 05:48:00 +0100 ++ ++gcc-5 (5.2.1-24) unstable; urgency=medium ++ ++ * Update to SVN 20151121 (r230703, 5.2.1) from the gcc-5-branch. ++ * Fix PR libstdc++/56158, taken from the trunk. Closes: #804521. LP: #1514309. ++ * Don't try to build a gnat cross compiler when there is no gnat compiler ++ for the build architecture. ++ * Update gnat build dependencies for backports. ++ * Parallelize building documentation and parallelize the packaging step. ++ * Update the Linaro support to the 5-2015.11 snapshot. ++ ++ -- Matthias Klose Sat, 21 Nov 2015 11:22:16 +0100 ++ ++gcc-5 (5.2.1-23) unstable; urgency=medium ++ ++ * Update to SVN 20151028 (r229478, 5.2.1) from the gcc-5-branch. ++ ++ [ Matthias Klose ] ++ * Update the Linaro support to the 5-2015.10 snapshot. ++ * gcj: On ppc64el, use the same jvm archdir name as for openjdk (ppc64le). ++ * gcj: Fix priority of java alternatives. Closes: #803055. ++ * gnat-5: Reintroduce the unversioned gnatgcc name. Closes: #802838. ++ ++ [ Aurelien Jarno ] ++ * Replace proposed patch for PR rtl-optimization/67736 by the one ++ committed on trunk. ++ ++ -- Matthias Klose Wed, 28 Oct 2015 10:36:54 +0100 ++ ++gcc-5 (5.2.1-22) unstable; urgency=medium ++ ++ * Update to SVN 20151010 (r228681, 5.2.1) from the gcc-5-branch. ++ - Fix PR libstdc++/65913, PR libstdc++/67173, PR libstdc++/67747, ++ PR c/67730, PR middle-end/67563, PR lto/67699, PR tree-optimization/67821, ++ PR debug/58315. ++ ++ [ Matthias Klose ] ++ * Restore the work around for PR libstdc++/65913, still needed at least ++ for powerpc. ++ * Rename gcc-5-hppa64 to gcc-5-hppa64-linux-gnu, update (build) dependency ++ on binutils. Closes: #800563. ++ * Adjust setting DH_COMPAT for dh_movefiles with updated debhelper supporting ++ globbing of arguments. Closes: #800250. ++ * Build-depend on gnat-5 instead of gnat-4.9. ++ ++ [ Aurelien Jarno ] ++ * Do not Use --with-mips-plt on mips and mipsel. Closes: #799811. ++ ++ -- Matthias Klose Sat, 10 Oct 2015 22:17:09 +0200 ++ ++gcc-5 (5.2.1-21) unstable; urgency=medium ++ ++ * Update to SVN 20151003 (r228449, 5.2.1) from the gcc-5-branch. ++ * Fix building gnat. Closes: #800781. ++ ++ -- Matthias Klose Sat, 03 Oct 2015 17:28:45 +0200 ++ ++gcc-5 (5.2.1-20) unstable; urgency=medium ++ ++ * Update to SVN 20151002 (r228373, 5.2.1) from the gcc-5-branch. ++ * Fix packaging the ada cross library packages. ++ ++ -- Matthias Klose Fri, 02 Oct 2015 10:24:38 +0200 ++ ++gcc-5 (5.2.1-19) unstable; urgency=medium ++ ++ * Update to SVN 20150930 (r228302, 5.2.1) from the gcc-5-branch. ++ - Fix PR ipa/66424. Closes: #800318. ++ ++ [ Matthias Klose ] ++ * Update the Linaro support to the 5-2015.09 snapshot. ++ * Fix PR libstdc++/67707, taken from the trunk. LP: #1499564. ++ * Ship libgcj.spec in gcj-5 instead of gcj-5-jdk. Closes: #800010. ++ * gcj-5: Suggest gcj-5-jdk. ++ * Fix base dependency for ada cross library packages. ++ * Add ${shlibs:Depends} for libgnatvsn and libgnatprj. ++ * Link lrealpath.o into libgnatprj. Closes: #800045. ++ * libgnat{svn,prj}-dev: For cross builds, move adainclude and adalib files ++ into the gcc libdir. ++ * Default to POWER8 on ppc64el. ++ * armv8: Fix slt lda missing conditional code (taken from the trunk). ++ * Fix lintian pre-depends-directly-on-multiarch-support warnings. ++ ++ [ Aurelien Jarno ] ++ * Apply proposed patch for PR rtl-optimization/67736 when building for ++ mips64 or mips64el. Closes: #800321. ++ ++ -- Matthias Klose Wed, 30 Sep 2015 20:36:50 +0200 ++ ++gcc-5 (5.2.1-18) unstable; urgency=medium ++ ++ * Update to SVN 20150922 (r228023, 5.2.1) from the gcc-5-branch. ++ ++ [ Matthias Klose ] ++ * gcc-5-plugin-dev: Depend on libmpc-dev. Closes: #798997. ++ * Fix PR libstdc++/65913, taken from the trunk. Closes: #797577. ++ ++ [ YunQiang Su ] ++ * Build again the gnat-5-sjlj package. Closes: #798782. ++ * Fix gnat cross builds, and cross building gnat. ++ ++ -- Matthias Klose Tue, 22 Sep 2015 23:15:17 +0200 ++ ++gcc-5 (5.2.1-17) unstable; urgency=medium ++ ++ * Update to SVN 20150911 (r227671, 5.2.1) from the gcc-5-branch. ++ - Fix PR c++/67369, ICE on valid code. LP: #1489173. ++ ++ [ Matthias Klose ] ++ * Build-depend on linux-libc-dev [m68k] for gcc and gcc-snapshot builds. ++ Closes: #796906. ++ * Don't ignore anymore bootstrap comparison failures on sh4. Closes: #796939. ++ * Fix stage1 cross build for KFreeBSD. Closes: #796901. ++ * libgo: Fix PR go/67508, rewrite lfstack packing/unpacking to look more ++ like that in Go (Michael Hudson). LP: #1472650. ++ * Fix PR target/67143 (AArch64), ICE on valid code. LP: #1481333. ++ ++ [ Aurelien Jarno ] ++ * Use --with-mips-plt on mips*. ++ * Build for R2 ISA on mips, mips64 and mips64el. ++ * Optimize for R2 ISA on mipsel. ++ * Only apply mips-fix-loongson2f-nop on mipsel. ++ ++ [ YunQiang Su ] ++ * Fix running the acats tests. Closes: #798531. ++ ++ -- Matthias Klose Fri, 11 Sep 2015 03:17:20 +0200 ++ ++gcc-5 (5.2.1-16) unstable; urgency=medium ++ ++ * Update to SVN 20150903 (r227431, 5.2.1) from the gcc-5-branch. ++ - Backport the filesystem TS library. ++ * libstdc++-dev: Install libstdc++fs.a. ++ * Again, configure with --enable-targets=powerpcle-linux on ppc64el. ++ * Apply proposed patch for PR target/67211 (ppc64el). ++ * libgo-dev: Install libgolibbegin.a. ++ * Apply proposed patch for PR target/67280 (ARM). LP: #1482320. ++ ++ -- Matthias Klose Thu, 03 Sep 2015 12:16:15 +0200 ++ ++gcc-5 (5.2.1-15) unstable; urgency=medium ++ ++ * Update to SVN 20150808 (r226731, 5.2.1) from the gcc-5-branch. ++ * Adjust libstdc++-breaks: Break libantlr-dev instead of antlr; ++ adjust libreoffice version (closes: #794203), drop xxsd break (see ++ #793289), remove cython breaks (closes: #794511), add breaks for ++ packages built using cython (chemps2, fiona, guiqwt, htseq, imposm, ++ pysph, pytaglib, python-scipy, python-sfml, rasterio). ++ * Ignore missing libstdc++ symbols on sparc64 (work around #792204). ++ ++ -- Matthias Klose Sat, 08 Aug 2015 11:18:24 +0200 ++ ++gcc-5 (5.2.1-14) unstable; urgency=high ++ ++ * Fix libstdc++6 breaks. ++ ++ -- Matthias Klose Fri, 31 Jul 2015 04:12:08 +0200 ++ ++gcc-5 (5.2.1-13) unstable; urgency=high ++ ++ * Upload to unstable (https://wiki.debian.org/GCC5). See also ++ https://lists.debian.org/debian-devel-announce/2015/07/msg00000.html ++ * Update to SVN 20150730 (r226411, 5.2.1) from the gcc-5-branch. ++ - Fix PR libstdc++/67015. Closes: #793784. ++ * Fix version macros in the plugin-header.h header. Closes: #793478. ++ * libstdc++6: Add breaks for issues tagged with gcc-pr66145. ++ * Add libcpprest2.4 to libstdc++6 breaks. Closes: #784655. ++ * Fix PR c++/66857, taken from the trunk. ++ * Ignore differences in gcc/real.o in the bootstrap build for ++ sh*-*linux-gnu targets. According to PR 67002, "A rare indeterminacy ++ of the register choice. Both codes are valid. It seems very hard to ++ find where has this indeterminacy come from". Suggested by Adrian ++ Glaubitz. ++ ++ -- Matthias Klose Thu, 30 Jul 2015 21:51:25 +0200 ++ ++gcc-5 (5.2.1-12) experimental; urgency=medium ++ ++ * Update to SVN 20150723 (r226105, 5.2.1) from the gcc-5-branch. ++ * Fix PR libstdc++/66145, std::ios_base::failure objects thrown from ++ libstdc++.so using the gcc4-compatible ABI. ++ Just build src/c++11/functexcept.cc using the new ABI. It will break ++ code, which will be handled in the archive by adding Breaks for the ++ affected packages. Third party code using such code will need a rebuild. ++ * Remove the work around to build with -O1 on sh4. ++ ++ -- Matthias Klose Thu, 23 Jul 2015 14:18:44 +0200 ++ ++gcc-5 (5.2.1-11) experimental; urgency=medium ++ ++ * Configure without --disable-libstdcxx-dual-abi. ++ * Configure with --with-default-libstdcxx-abi=c++11. ++ ++ -- Matthias Klose Fri, 17 Jul 2015 08:13:08 +0200 ++ ++gcc-5 (5.2.1-1) experimental; urgency=medium ++ ++ * GCC 5.2 release. ++ * Update to SVN 20150716 (r225880, 5.2.1) from the gcc-5-branch. ++ * Require version 5.2 for the libstdc++6 cxx symbols. ++ * Ignore missing libstdc++ symbols on sparc64 (work around #792204). ++ * Go escape analysis: analyze multiple result type assertions (taken ++ from the trunk). ++ ++ -- Matthias Klose Thu, 16 Jul 2015 15:35:44 +0200 ++ ++gcc-5 (5.1.1-14) unstable; urgency=medium ++ ++ * Update to SVN 20150711 (r225710, 5.1.1) from the gcc-5-branch. ++ ++ -- Matthias Klose Sat, 11 Jul 2015 11:57:19 +0200 ++ ++gcc-5 (5.1.1-13) unstable; urgency=medium ++ ++ * Update to SVN 20150706 (r225471, 5.1.1) from the gcc-5-branch. ++ * Update libasan symbol files. ++ * Configure --with-fp-32=xx on all mips targets, setting MIPS O32 default ++ to FPXX (YunQiang Su). Closes: #789612. ++ * Update libgccjit symbol file. ++ * Add x32 symbols files for libgcc1 and libstdc++6. ++ * libgccjit0: Add breaks for python-gccjit and python3-gccjit. ++ ++ -- Matthias Klose Mon, 06 Jul 2015 19:55:08 +0200 ++ ++gcc-5 (5.1.1-12) unstable; urgency=medium ++ ++ * Update to SVN 20150622 (r224724, 5.1.1) from the gcc-5-branch. ++ * Update symbols files for mips64 libatomic and libstdc++ (YunQiang Su). ++ Closes: #788990. ++ * Fix "empty-binary-package" lintian warnings. ++ ++ -- Matthias Klose Mon, 22 Jun 2015 14:37:49 +0200 ++ ++gcc-5 (5.1.1-11) unstable; urgency=medium ++ ++ * Update to SVN 20150616 (r224519, 5.1.1) from the gcc-5-branch. ++ * gccgo: escape: Analyze binary expressions (taken from the trunk). ++ * Explicitly build with -Wl,--no-relax on alpha again. ++ * Build with -O1 on sh4 (try to work around PR target/66358). ++ ++ -- Matthias Klose Tue, 16 Jun 2015 16:11:59 +0200 ++ ++gcc-5 (5.1.1-10) unstable; urgency=medium ++ ++ * Update to SVN 20150613 (r224454, 5.1.1) from the gcc-5-branch. ++ * Make removal of byte-compiled libstdc++ pretty printer files more ++ robust. Closes: #787630. ++ * Fix mips 32bit (o32) multilib builds (YunQiang Su). ++ * Build target libraries with -Wl,-z,relro. ++ * Build libstdc++6 when building the common libraries. ++ * Fix a bunch of lintian warnings. ++ ++ -- Matthias Klose Sat, 13 Jun 2015 12:59:17 +0200 ++ ++gcc-5 (5.1.1-9) unstable; urgency=medium ++ ++ * Update to SVN 20150602 (r224029, 5.1.1) from the gcc-5-branch. ++ * Remove byte-compiled libstdc++ pretty printer files on upgrade. ++ Closes: #785939. ++ * Fix dangling libgccjit.so symlink. ++ * Fix base dependency for rtlibs stage builds. ++ * Fix build failure of the hppa64 cross compiler, introduced by the ++ gnat cross patches. Closes: #786692. ++ * Update README.source (Michael Vogt). ++ * libgo: syscall.Sendfile(): Apply proposed patch for PR go/66378. ++ (Michael Vogt). LP: #1460530. ++ * Set CC and CXX matching the same GCC version for the stage1 build. ++ * Work around PR go/66368, build libgo with -fno-stack-protector. ++ LP: #1454183. ++ ++ -- Matthias Klose Wed, 03 Jun 2015 00:49:41 +0200 ++ ++gcc-5 (5.1.1-8) unstable; urgency=medium ++ ++ * Update to SVN 20150528 (r223816, 5.1.1) from the gcc-5-branch. ++ * Set the priorities of the *-dev-*-cross packages to extra. ++ * Prepare to change the base dependency for *-cross packages. ++ * Fix dependencies for stage1 and stage2 builds. ++ * Relax dependencies on binary indep *-dev-*-cross packages. ++ * Disable building gdc on sh4 (bootstrap comparison failure). ++ ++ -- Matthias Klose Thu, 28 May 2015 15:51:00 +0200 ++ ++gcc-5 (5.1.1-7) unstable; urgency=medium ++ ++ * Update to SVN 20150522 (r223579, 5.1.1) from the gcc-5-branch. ++ * Add description for the ada-gnattools-cross patch (YunQiang Su). ++ * Provide a rtlibs stage to build a subset of target library packages. ++ * Make symbols file symlinking for cross builds more robust. ++ * Prefer gnatgcc-5 over gnatgcc when building native packages. ++ * Various fixes to build a gnat cross compiler: ++ - Fix dependencies of packages. ++ - Fix building libgnatprj and libgnatvsn (still needed to figure ++ out if these are target or host libraries). ++ * Fix building cross compilers with dpkg 1.18. ++ ++ -- Matthias Klose Fri, 22 May 2015 18:20:01 +0200 ++ ++gcc-5 (5.1.1-6) unstable; urgency=medium ++ ++ * Update to SVN 20150519 (r223346, 5.1.1) from the gcc-5-branch. ++ * Don't build gdc-multilib on armel. ++ * Remove old CFLAGS/LDFLAGS settings to build gdc. ++ * Remove reference to .ico file in NEWS.html. ++ * Fix gcc's dependency on libcc1-0 for native builds. ++ * Fix stripping the rpath when cross-building cross compilers. ++ * Remove work arounds to build 64bit multilibs on 32bit targets, ++ now properly fixed upstream. ++ * Partially apply patches to build a gnat cross compiler (submitted ++ by YunQiang Su). ++ - gnatmake: Call the versioned gnatbind and gnatlink commands. ++ Closes: #782257. ++ - Allow libgnatprj and libgnatvsn to cross build. Addresses: #783372. ++ - New patch ada-gnattools-cross.diff (no documentation). ++ * Backport patch for gccgo: ++ - gccgo: If unary & does not escape, the var does not escape. ++ * Apply the backported patches for the go escape analysis. Need to ++ be enabled with -fgo-optimize-alloc (this option may go away again). ++ * Re-enable running the tests. ++ ++ -- Matthias Klose Tue, 19 May 2015 10:33:40 +0200 ++ ++gcc-5 (5.1.1-5) unstable; urgency=medium ++ ++ * Update to SVN 20150507 (r222873, 5.1.1) from the gcc-5-branch. ++ * Fix 32bit libstdc++ symbols files for kfreebsd-amd64. ++ * libx32phobos-dev: Don't depend on libx32z-dev, when not available. ++ * Fix gotools configury. ++ * Configure with ++ --disable-libstdcxx-dual-abi --with-default-libstdcxx-abi=c++98 ++ While libstdc++ provides a dual ABI to support both the c++98 and c++11 ++ ABI, there is no committment on compatibility of the old experimental ++ c++11 ABI from GCC 4.9 and the stable c++11 ABI in GCC 5. ++ Closes: #784655. ++ ++ -- Matthias Klose Fri, 08 May 2015 18:48:49 +0200 ++ ++gcc-5 (5.1.1-4) unstable; urgency=medium ++ ++ * Update to SVN 20150503 (r222751, 5.1.1) from the gcc-5-branch. ++ - Fix build failure on alpha. ++ * Fix applying the cross-biarch patch for stage1 builds. ++ * Fix libstdc++ symbols files for kfreebsd-amd64. ++ * Remove libn32phobos-5-dev from the control file. ++ * Really disable gnat on x32. ++ ++ -- Matthias Klose Sat, 02 May 2015 19:18:57 +0200 ++ ++gcc-5 (5.1.1-3) unstable; urgency=high ++ ++ * Update to SVN 20150430 (r222660, 5.1.1) from the gcc-5-branch. ++ * Fix libstdc++ symbols files for kfreebsd-i386. ++ * PR libstdc++/62258, fix for std::uncaught_exception, taken from the trunk. ++ LP: #1439451. ++ * Backport patches for gccgo (not yet applied): ++ - Consider multi-result calls in escape analysis. ++ - Propagate escape info from closures to enclosed variables. ++ - Analyze function values and conversions. ++ - Use backend interface for stack allocation. ++ * More libstdc++ symbols updates for the Hurd and KFreeBSD. ++ * config-ml.in: Add D support. ++ * Update cross-biarch.diff to support D and Go. ++ * Apply the cross-biarch patch for every cross build. ++ ++ -- Matthias Klose Thu, 30 Apr 2015 15:42:05 +0200 ++ ++gcc-5 (5.1.1-2) unstable; urgency=medium ++ ++ * Update to SVN 20150428 (r222550, 5.1.1) from the gcc-5-branch. ++ * Fix the gnat build dependency. ++ * Don't build go and gofmt for cross compilers. ++ ++ -- Matthias Klose Tue, 28 Apr 2015 23:57:14 +0200 ++ ++gcc-5 (5.1.1-1) unstable; urgency=medium ++ ++ * GCC 5.1.0 release. ++ * Update to SVN 20150424 (r222416, 5.1.1) from the gcc-5-branch. ++ * Update NEWS files. ++ * Apply the ada-bootstrap-compare patch for snapshot builds as well. ++ * Update libasan, libgomp and libstdc++ symbols files. ++ * Don't ignore errors in dh_makeshlibs and dh_shlibdeps anymore, symbols ++ files should be uptodate now. ++ * Split out the sjlj build related things from the ada-acats patch into ++ a new ada-acats-sjlj patch. ++ * Don't build libx32phobos-5-dev when not building x32 multilibs. ++ * Fix standard C++ include directory for cross builds. Closes: #783241. ++ * Ignore bootstrap comparison failure on ia64. Filed upstream as ++ PR middle-end/65874. ++ * gccgo: Add (don't yet apply) a patch to implement escape analysis (taken ++ from the trunk). Turned off by default, enable with -fgo-optimize-alloc. ++ ++ -- Matthias Klose Fri, 24 Apr 2015 18:42:39 +0200 ++ ++gcc-5 (5.1~rc1-1) experimental; urgency=medium ++ ++ * GCC 5.1 release candidate 1. ++ * Update to SVN 20150414 (r222066) from the gcc-5-branch. ++ * Update GDC to the gcc-5 branch, 20140414. ++ * Don't build libobjc, when not building the common libraries. ++ * Don't run the gccjit tests on KFreeBSD. Works around #782444:. ++ * Fix not building libs built by the next GCC version. ++ ++ -- Matthias Klose Tue, 14 Apr 2015 02:03:53 +0200 ++ ++gcc-5 (5-20150410-1) experimental; urgency=medium ++ ++ * Update to SVN 20150410 ++ ++ [ Matthias Klose ] ++ * Fix /usr/include/c++/5.0.0 symlink. ++ * Re-enable building the D frontend. Closes: #782254. ++ * gccgo: Install libnetgo. ++ ++ [ Samuel Thibault ] ++ * Fix ada builds on the Hurd and KFreeBSD. Closes: #781424. ++ ++ -- Matthias Klose Sat, 11 Apr 2015 02:24:08 +0200 ++ ++gcc-5 (5-20150404-1) experimental; urgency=medium ++ ++ * Update to SVN 20150404. ++ * Don't explicitly configure --with-gxx-include-dir and an absolute path, ++ so the toolchain remains relocatible. Instead, canonicalize the include ++ path names at runtime. ++ * Don't link libgnatprj using --no-allow-shlib-undefined on older releases. ++ * Don't build libmpx on older releases. ++ * Remove the work around to build libgccjit on arm64. ++ * Fix the libgccjit build using the just built compiler. ++ * Don't break other gcc, gcj, gnat -base packages for backports, only ++ needed for dist-upgrades. ++ * Don't add -gtoggle to STAGE3_CFLAGS (disabling the bootstrap comparison). ++ Instead, ignore the one differing file (gcc/ada/a-except.o) for now. ++ See #781457, PR ada/65618. ++ * Update libasan, libtsan, libgfortran and libstdc++ symbols files. ++ * Add symbols files for libmpx, libgccjit and libcc1. ++ ++ -- Matthias Klose Sat, 04 Apr 2015 21:53:45 +0200 ++ ++gcc-5 (5-20150329-1) experimental; urgency=medium ++ ++ * Update to SVN 20150329. ++ * Fix building the gnat-5-doc package. ++ * Fix gnat build dependencies. ++ * Fix installation of the gnat upstream ChangeLog. Closes: #781451. ++ * Restore the bootstrap-debug.mk patch to the ada-mips patch ++ for debugging purposes. See #781457. ++ ++ -- Matthias Klose Sun, 29 Mar 2015 18:53:29 +0200 ++ ++gcc-5 (5-20150327-1) experimental; urgency=medium ++ ++ * Update to SVN 20150327. ++ * Update libcc1 build support. ++ * Fix syntax in libstdc++ symbols file. Closes: #780991. ++ * Fix PR go/65417: Add support for PPC32 relocs to debug/elf. LP: #1431388. ++ * Fix PR go/65462: Fix go get dependencies. LP: #1432497. ++ * Limit the omp.h multilib fix to Linux. Closes: #778440. ++ * For ICEs, dump the preprocessed source file to stderr when in a ++ distro build environment. ++ * Remove the bootstrap-debug.mk patch from the ada-mips patch. ++ * gnat related work (partly based on #780640): ++ - Update patches for GCC 5. ++ - Build the gnat packages from the gcc-5 source package. ++ - Don't build a gnat-base package from the gcc-5 source. ++ - Stop building the gnat-5-sjlj package for now, patch needs an update. ++ - Fix the packaging when not building the gnat-5-sjlj package. ++ - Don't apply the ada-symbolic-tracebacks, patch needs an update. ++ - Fix the libgnatprj build, build with -DIN_GCC. ++ * Replace cloog/ppl build bits with isl build bits. ++ ++ -- Matthias Klose Fri, 27 Mar 2015 21:05:16 +0100 ++ ++gcc-5 (5-20150321-1) experimental; urgency=medium ++ ++ * Update to SVN 20150321. ++ * Move the libcc1plugin from the gcc-5-plugin-dev package into the ++ gcc-5 package. ++ ++ -- Matthias Klose Sat, 21 Mar 2015 15:01:15 +0100 ++ ++gcc-5 (5-20150316-1) experimental; urgency=medium ++ ++ * Update to SVN 20150316. ++ - Fix bootstrap failures on armel, armhh and arm64. ++ * Configure with --enable-checking=yes (instead of =release). ++ ++ -- Matthias Klose Tue, 17 Mar 2015 00:30:27 +0100 ++ ++gcc-5 (5-20150314-1) experimental; urgency=medium ++ ++ * Update to SVN 20150314. ++ - libgo: Add arm64 to the pointer size map (Michael Hudson). ++ - libgo: Add ppc to the pointer size map. ++ - PR go/65404, enable cgo on arm64 and powerpc. LP: #1431032. ++ - Fix PR/tree-optimization 65418. Closes: #778163. ++ - Fix PR c++/65370. Closes: #778073. ++ * Enable libmpx builds on amd64 and i386. ++ * Update the gcc-multiarch patch for mips64 (YunQiang Su). ++ Closes: #776402, #780271. ++ * Remove pr52306 and pr52714 patches, applied upstream. Closes: #780468. ++ ++ -- Matthias Klose Sat, 14 Mar 2015 14:48:19 +0100 ++ ++gcc-5 (5-20150307-1) experimental; urgency=medium ++ ++ * Update to SVN 20150307. ++ - Update gccgo to Go 1.4.2. ++ * Enable libsanitizer for AArch64 and POWERPC LE (asan, ubsan). ++ * Remove the support to build empty libsanitizer packages on powerpc ++ and ppc64; libsanitizer should be stable on these architectures. ++ * Fix libcc1.so symlink. Closes: #779341. ++ * Revert the fix for PR65150 on armel and armhf to restore bootstrap. ++ * Don't strip the libgo library, or some things won't work as documented, ++ like runtime.Callers. Still keep the -dbg packages and check if some ++ debug information can be stripped. ++ * gccgo-5: Install alternatives for go and gofmt. ++ ++ -- Matthias Klose Sat, 07 Mar 2015 12:20:59 +0100 ++ ++gcc-5 (5-20150226-1) experimental; urgency=medium ++ ++ * Update to SVN 20150226. ++ - Fix PR c/65040 (closes: #778514), PR tree-optimization/65053 ++ (closes: #778070, #778071), PR c++/64898 (closes: #778472). ++ * Allow not to strip the compiler executables to be able to print backtraces ++ for ICEs. ++ * Fix gnat build on mips64el (James Cowgill). Addresses: #779191. ++ * Fix the hppa64 cross build (John David Anglin). Closes: #778658. ++ * Fix libstdc++ pretty printers for Python3. Closes: #778436. ++ ++ -- Matthias Klose Thu, 26 Feb 2015 08:18:23 +0100 ++ ++gcc-5 (5-20150205-1) experimental; urgency=medium ++ ++ * Update to SVN 20150205. ++ * Update GDC for GCC 5. ++ * Build GDC multilib packages. ++ * Update cross-install-location.diff for gcc-5. Closes: #776100. ++ * Configure --with-default-libstdcxx-abi=c++11 for development, ++ --with-default-libstdcxx-abi=c++98 for backports. ++ * Apply proposed patch for PR target/64893 (AArch64), build using ++ 4.9 on AArch64 for now. ++ * Don't disable bootstrap mode for the jit build on arm64, gets ++ miscompiled. ++ * Allow one to build using gettext built with a newer GCC. ++ ++ -- Matthias Klose Thu, 05 Feb 2015 18:31:17 +0100 ++ ++gcc-5 (5-20150127-1) experimental; urgency=medium ++ ++ * Update to SVN 20150127. ++ * More symbol file updates. ++ * Fix libbacktrace and libsanitizer multilib builds. ++ * Fix libssp builds on 64bit architectures. ++ * Update hardening testsuite patches for GCC 5. ++ ++ -- Matthias Klose Tue, 27 Jan 2015 14:10:30 +0100 ++ ++gcc-5 (5-20150121-1) experimental; urgency=medium ++ ++ * GCC 5 (SVN trunk 20150121). ++ * Build new binary packages libcc1-0, libgccjit0, libgccjit-5-dev, ++ libgccjit-5-dbg, libgccjit-5-doc. ++ * Update symbols files (still incomplete). ++ ++ -- Matthias Klose Wed, 21 Jan 2015 21:02:05 +0100 ++ ++gcc-4.9 (4.9.2-10) UNRELEASED; urgency=medium ++ ++ * Update to SVN 20150120 (r219885) from the gcc-4_9-branch. ++ - Fix PR libstdc++/64476, PR libstdc++/60966, PR libstdc++/64239, ++ PR libstdc++/64649, PR libstdc++/64584, PR libstdc++/64585, ++ PR libstdc++/64646, ++ PR middle-end/63704 (ice on valid), PR target/64513 (x86), ++ PR rtl-optimization/64286 (wrong code), PR tree-optimization/64563 (ice), ++ PR middle-end/64391 (ice on valid), PR c++/54442 (ice on valid), ++ PR target/64358 (rs6000, wrong code), PR target/63424 (AArch64, ice on ++ valid), PR target/64479 (SH), PR rtl-optimization/64536, PR target/64505 ++ (rs6000), PR target/61413 (ARM, wrong code), PR target/64507 (SH), ++ PR target/64409 (x32, ice on valid), PR c++/64487 (ice on valid), ++ PR c++/64352, PR c++/64251 (rejects valid), PR c++/64297 (ice on valid), ++ PR c++/64029 (ice on valid), PR c++/63657 (diagnostic), PR c++/38958 ++ (diagnostic), PR c++/63658 (rejects valid), PR ada/64492 (build), ++ PR fortran/64528 (ice on valid), PR fortran/63733 (wrong code), ++ PR fortran/56867 (wrong code), PR fortran/64244 (ice on valid). ++ * Update the Linaro support to the 4.9-2015.01 release. ++ ++ -- Matthias Klose Tue, 20 Jan 2015 12:45:13 +0100 ++ ++gcc-4.9 (4.9.2-10) unstable; urgency=medium ++ ++ * Really add x32 multilib packages for i386 cross builds to the control file. ++ Closes: #773265. ++ * Use the final binutils 2.25 release. ++ * Tighten the gcc-4.9 dependency on libgcc-4.9-dev (YunQiang Su). ++ ++ -- Matthias Klose Thu, 25 Dec 2014 18:10:51 +0100 ++ ++gcc-4.9 (4.9.2-9) unstable; urgency=medium ++ ++ * Update to SVN 20141220 (r218987) from the gcc-4_9-branch. ++ - Fix PR libstdc++/64302, PR libstdc++/64303, PR c++/60955, ++ PR rtl-optimization/64010 (wrong code), PR sanitizer/64265 (wrong code). ++ * Add x32 multilib packages for i386 cross builds to the control file. ++ Closes: #773265. ++ * Fix mips64el multilib cross builds. Closes: #772665. ++ * libphobos-4.x-dev: Stop providing libphobos-dev, now a real package. ++ ++ -- Matthias Klose Sat, 20 Dec 2014 07:47:15 +0100 ++ ++gcc-4.9 (4.9.2-8) unstable; urgency=medium ++ ++ * Update to SVN 20141214 (r218721) from the gcc-4_9-branch. ++ - Fix PR tree-optimization/62021 (ice), PR middle-end/64225 (missed ++ optimization), PR libstdc++/64239, PR rtl-optimization/64037 (wrong ++ code), PR target/64200 (x86, ice), PR tree-optimization/64269 (ice). ++ * Don't build libphobos multilibs, there is no gdc-multilib build. ++ * Really disable the sanitizer libs on powerpc, ppc64 and ppc64el. ++ * Paste config.log files to stdout in case of build errors. ++ ++ -- Matthias Klose Sun, 14 Dec 2014 18:43:49 +0100 ++ ++gcc-4.9 (4.9.2-7) unstable; urgency=medium ++ ++ * Update to SVN 20141210 (r218575) from the gcc-4_9-branch. ++ - Fix PR libstdc++/64203, PR target/55351 (SH), PR tree-optimization/61686, ++ PR bootstrap/64213. ++ - libgcc hppa backports. ++ * Fix cross builds with dpkg-architecture unconditionally exporting ++ target variables. For now specify the target architecture ++ in debian/target. This still needs to work with older dpkg versions, ++ so don't "simplify" the packaging. Closes: #768167. ++ ++ -- Matthias Klose Wed, 10 Dec 2014 13:32:42 +0100 ++ ++gcc-4.9 (4.9.2-6) unstable; urgency=medium ++ ++ * Update to SVN 20141209 (r218510) from the gcc-4_9-branch. ++ - Fix PR libstdc++/63840, PR libstdc++/61947, PR libstdc++/64140, ++ PR target/50751 (SH), PR target/64108 (x86, ice), ++ PR rtl-optimization/64037 (wrong-code), PR c++/56493 (performance), ++ PR c/59708, PR ipa/64153, PR target/64167) (wrong code, ++ closes: #771974), PR target/59593 (ARM, wrong code), ++ PR middle-end/63762 (ARM. wrong code), PR target/63661 (x86, ++ wrong code), PR target/64113 (alpha, wrong code), PR c++/64191. ++ - Allow one to build with ISL 0.14. ++ ++ -- Matthias Klose Tue, 09 Dec 2014 11:00:08 +0100 ++ ++gcc-4.9 (4.9.2-5) unstable; urgency=medium ++ ++ * Update to SVN 20141202 (r218271) from the gcc-4_9-branch. ++ - Fix PR middle-end/64111 (ice), PR ipa/63551 (wrong code). ++ PR libstdc++/64102 (closes: #770843), PR target/64115 (powerpc). ++ * Move libphobos2.a into the gcc_lib_dir. Closes: #771647. ++ * Fix typo in last powerpcspe patch. Closes: #771654. ++ ++ -- Matthias Klose Tue, 02 Dec 2014 17:42:07 +0100 ++ ++gcc-4.9 (4.9.2-4) unstable; urgency=medium ++ ++ * Update to SVN 20141128 (r218142) from the gcc-4_9-branch. ++ -PR PR target/56846 (ARM), PR libstdc++/63497, ++ PR middle-end/63738 (wrong code), PR tree-optimization/62238 (ice), ++ PR tree-optimization/61927 (wrong code), ++ PR tree-optimization/63605 (wrong code), PR middle-end/63665 (wrong code), ++ PR fortran/63938 (OpenMP), PR middle-end/64067 (ice), ++ PR tree-optimization/63915 (wrong code), PR sanitizer/63913 (ice valid), ++ PR rtl-optimization/63659 (wrong code). ++ * Don't let stage1 multilib builds depend on the multilib libc-dev. ++ Closes: #771243. ++ * Fix an exception problem on powerpcspe (Roland Stigge). Closes: #771324. ++ * Remove unsupported with_deps_on_target_arch_pkgs configurations. ++ Closes: #760770, #766924, #770413. ++ ++ -- Matthias Klose Fri, 28 Nov 2014 15:26:23 +0100 ++ ++gcc-4.9 (4.9.2-3) unstable; urgency=medium ++ ++ * Update to SVN 20141125 (r218048) from the gcc-4_9-branch. ++ - PR target/53976 (SH), PR target/63783 (SH), PR target/51244 (SH), ++ PR target/60111 (SH), PR target/63673 (ppc), ++ PR tree-optimization/61750 (ice), PR target/63947 (x86, wrong code), ++ PR tree-optimization/62167 (wrong code), PR c++/63849 (ice), ++ PR ada/47500. ++ ++ [ Aurelien Jarno ] ++ * Always configure sh4-linux with --with-multilib-list=m4,m4-nofpu, ++ even with multilib disabled, as it doesn't produce additional ++ libraries. ++ ++ [ Matthias Klose ] ++ * gcc-4.9-base: Add Breaks: gcc-4.7-base (<< 4.7.3). Closes: #770025. ++ ++ -- Matthias Klose Tue, 25 Nov 2014 17:04:19 +0100 ++ ++gcc-4.9 (4.9.2-2) unstable; urgency=medium ++ ++ * Update to SVN 20141117 (r217768) from the gcc-4_9-branch. ++ - Fix PR rtl-optimization/63475, PR rtl-optimization/63483 (gfortran ++ aliasing fixes for alpha), PR target/63538 (x86), PR ipa/63838 (wrong ++ code), PR target/61535 (sparc), PR c++/63265 (diagnostic), PR ada/42978. ++ * Fix PR c/61553 (ice on illegal code), backported from the trunk. ++ Closes: #767668. ++ * Disable building the sanitizer libs on powerpc and ppc64. Not yet ++ completely ported, and causing kernel crashes running the tests. ++ * Update the Linaro support to the 4.9-2014.11 release. ++ ++ -- Matthias Klose Tue, 18 Nov 2014 00:34:01 +0100 ++ ++gcc-4.9 (4.9.2-1) unstable; urgency=medium ++ ++ * GCC 4.9.2 release. ++ * Update GDC from the 4.9 branch. ++ ++ [ Matthias Klose ] ++ * Allow one to build the gcc-base package only. ++ ++ [Ludovic Brenta] ++ Merge from gnat-4.9 (4.9.1-4) unstable; urgency=low. ++ * debian/patches/ada-libgnatvsn.diff: compile the version.o of ++ libgnatvsn.{a,so} with -DBASEVER=$(FULLVER) to align it with the ++ change made in gcc-base-version.diff, which is compiled into gcc and ++ gnat1. Fixes: #759038. ++ * debian/patches/ada-revert-pr63225.diff: new; preserve the aliversion ++ compatibility of libgnatvsn4.9-dev with -3. ++ ++ Merge from gnat-4.9 (4.9.1-3) unstable; urgency=low ++ Merge from gnat-4.9 (4.9.1-2) unstable; urgency=low ++ ++ [Svante Signell] ++ * debian/patches/ada-hurd.diff: update and bring up to par with ++ ada-kfreebsd.diff. ++ ++ [Ludovic Brenta] ++ * Rebuild with newer dpkg. Fixes: #761248. ++ ++ Merge from gnat-4.9 (4.9.1-1) unstable; urgency=low ++ ++ * New upstream release. Build-depend on gcc-4.9-source (>= 4.9.1). ++ Fixes: #755490. ++ * debian/rules.d/binary-ada.mk: install the test-summary file in package ++ gnat-4.9 instead of gnat-4.9-base. test-summary is actually ++ architecture-dependent. This change reflects what happens in gcc-4.9 ++ and gcc-4.9-base as well. Fixes: #749869. ++ ++ Merge from gnat-4.9 (4.9.0-2) unstable; urgency=low ++ ++ * Lintian warnings: ++ * debian/control.m4 (gnat-4.9-base): Multi-Arch: same. ++ * debian/patches/ada-749574.diff: new. Fixes: #749574. ++ ++ -- Matthias Klose Tue, 04 Nov 2014 02:58:33 +0100 ++ ++gcc-4.9 (4.9.1-19) unstable; urgency=medium ++ ++ * GCC 4.9.2 release candidate. ++ * Update to SVN 20141023 (r216594) from the gcc-4_9-branch. ++ * Install sanitizer header files. ++ * Apply patch for PR 60655, taken from the trunk. ++ * Fix typo in the libstdc++ HTML docs. Closes: #766498. ++ * Use doxygen's copy of jquery.js for the libstdc++ docs. Closes: #766499. ++ * Force self-contained cross builds. ++ * Don't build functionally non-equivalent cross compilers. ++ * Update the Linaro support to the 4.9-2014.10-1 release. ++ ++ -- Matthias Klose Fri, 24 Oct 2014 14:20:00 +0200 ++ ++gcc-4.9 (4.9.1-18) unstable; urgency=medium ++ ++ * Update to SVN 20141018 (r216426) from the gcc-4_9-branch. ++ ++ [ Matthias Klose ] ++ * Update libstdc++ symbols file for powerpcspe (Roland Stigge). ++ Closes: #765078. ++ ++ -- Matthias Klose Sat, 18 Oct 2014 16:28:09 +0200 ++ ++gcc-4.9 (4.9.1-17) unstable; urgency=medium ++ ++ * Update to SVN 20141015 (r216240) from the gcc-4_9-branch. ++ - Fix PR c++/63405 (ice) Closes: #761549. ++ - Fix PR ipa/61144 (wrong code). Closes: #748681. ++ ++ -- Matthias Klose Wed, 15 Oct 2014 10:29:23 +0200 ++ ++gcc-4.9 (4.9.1-16) unstable; urgency=medium ++ ++ * Update to SVN 20140930 (r215717) from the gcc-4_9-branch. ++ * Don't suggest libvtv and binutils-gold. Closes: #761612. ++ ++ -- Matthias Klose Tue, 30 Sep 2014 11:37:48 +0200 ++ ++gcc-4.9 (4.9.1-15) unstable; urgency=medium ++ ++ * Update to SVN 20140919 (r215401) from the gcc-4_9-branch. ++ ++ [ Matthias Klose ] ++ * Extend the fix for PR target/63190 (AArch64). Closes: #758964. ++ * Apply proposed fix for Linaro #331, LP: #1353729 (AArch64). ++ ++ [ Aurelien Jarno ] ++ * Default to mips64 ISA on mips64el, with tuning for mips64r2. ++ ++ -- Matthias Klose Fri, 19 Sep 2014 20:17:27 +0200 ++ ++gcc-4.9 (4.9.1-14) unstable; urgency=medium ++ ++ * Update to SVN 20140912 (r215228) from the gcc-4_9-branch. ++ * Update the Linaro support to the 4.9-2014.09 release. ++ * Fix installation of the libstdc++ documentation. Closes: #760872. ++ ++ -- Matthias Klose Fri, 12 Sep 2014 19:15:23 +0200 ++ ++gcc-4.9 (4.9.1-13) unstable; urgency=medium ++ ++ * Update to SVN 20140908 (r215008) from the gcc-4_9-branch. ++ * Enable cgo on AArch64 (Michael Hudson). LP: #1361940. ++ * Update the Linaro support from the Linaro/4.9 branch. ++ * Fix PR target/63190 (AArch64), taken from the trunk. Closes: #758964. ++ ++ -- Matthias Klose Mon, 08 Sep 2014 09:56:50 +0200 ++ ++gcc-4.9 (4.9.1-12) unstable; urgency=medium ++ ++ [ Samuel Thibault ] ++ * boehm-gc: use anonymous mmap instead of brk also on hurd-*. ++ Closes: #753791. ++ ++ -- Matthias Klose Sun, 31 Aug 2014 18:40:46 +0200 ++ ++gcc-4.9 (4.9.1-11) unstable; urgency=medium ++ ++ * Update to SVN 20140830 (r214759) from the gcc-4_9-branch. ++ * Update cross installation patches for the branch. ++ * Use the base version (4.9) when accessing files in gcc_lib_dir. ++ ++ -- Matthias Klose Sat, 30 Aug 2014 22:05:47 +0200 ++ ++gcc-4.9 (4.9.1-10) unstable; urgency=medium ++ ++ * Update to SVN 20140830 (r214751) from the gcc-4_9-branch. ++ * Fix jni symlinks in /usr/lib/jvm. Closes: #759558. ++ * Update the Linaro support from the Linaro/4.9 branch. ++ - Fixes Aarch64 cross build on i386. ++ ++ -- Matthias Klose Sat, 30 Aug 2014 04:47:19 +0200 ++ ++gcc-4.9 (4.9.1-9) unstable; urgency=medium ++ ++ * Update to SVN 20140824 (r214405) from the gcc-4_9-branch. ++ * Fix -dumpversion output to print the full version number. ++ Addresses: #759038. LP: #1360404. ++ Use the GCC base version for the D include dir name. ++ ++ -- Matthias Klose Sun, 24 Aug 2014 10:09:28 +0200 ++ ++gcc-4.9 (4.9.1-8) unstable; urgency=medium ++ ++ * Update to SVN 20140820 (r214215) from the gcc-4_9-branch. ++ * Fix PR middle-end/61294, -Wmemset-transposed-args, taken from the trunk. ++ LP: #1352836. ++ * Update the Linaro support to 4.9-2014.08. ++ * Fix PR tree-optimization/59586, graphite segfault, taken from the trunk. ++ LP: #1227789. ++ * Fix multilib castrated cross builds on mips64el (YunQiang Su, Helmut ++ Grohne). Closes: #758408. ++ * Apply Proposed patch for PR target/62040 (AArch64). LP: #1351227. ++ Closes: #757738. ++ ++ -- Matthias Klose Wed, 20 Aug 2014 11:36:40 +0200 ++ ++gcc-4.9 (4.9.1-7) unstable; urgency=medium ++ ++ * Build-depend on dpkg-dev (>= 1.17.11). ++ ++ -- Matthias Klose Thu, 14 Aug 2014 22:12:29 +0200 ++ ++gcc-4.9 (4.9.1-6) unstable; urgency=medium ++ ++ * Update to SVN 20140813 (r213955) from the gcc-4_9-branch. ++ * Really fix the GFDL build on AArch64. Closes: #757153. ++ * Disable Ada for snapshot builds on kfreebsd-i386, kfreebsd-amd64. ++ Local patch needs an update and upstreaming. ++ * Apply the local ada-mips patch for snapshot builds too. ++ * Disable Ada for snapshot builds on mips, mipsel. Bootstrap comparision ++ failure. Local patch needs upstreaming. ++ * Disable Ada for snapshot builds on hurd-i386, build dependencies are ++ not installable. ++ * Don't build the sanitizer libs for sparc snapshot builds. ++ * Proposed backport for PR libstdc++/61841. Closes: #749290. ++ ++ -- Matthias Klose Thu, 14 Aug 2014 17:53:43 +0200 ++ ++gcc-4.9 (4.9.1-5) unstable; urgency=medium ++ ++ * Update to SVN 20140808 (r213759) from the gcc-4_9-branch. ++ - Fix PR tree-optimization/61964. LP: #1347147. ++ * Fix libphobos cross build. ++ ++ -- Matthias Klose Fri, 08 Aug 2014 17:28:55 +0200 ++ ++gcc-4.9 (4.9.1-4) unstable; urgency=high ++ ++ * Update to SVN 20140731 (r213317) from the gcc-4_9-branch. ++ - CVE-2014-5044, fix integer overflows in array allocation in libgfortran. ++ Closes: #756325. ++ * Build libphobos on armel and armhf. Closes: #755390. ++ * Fix java.security symlink. Closes: #756484. ++ ++ -- Matthias Klose Thu, 31 Jul 2014 10:15:27 +0200 ++ ++gcc-4.9 (4.9.1-3) unstable; urgency=medium ++ ++ * Update to SVN 20140727 (r213100) from the gcc-4_9-branch. ++ * Fix the GFDL build on AArch64. ++ * Fix PR libobjc/61920, libobjc link failure on powerpc*. Closes: #756096. ++ ++ -- Matthias Klose Sun, 27 Jul 2014 15:25:24 +0200 ++ ++gcc-4.9 (4.9.1-2) unstable; urgency=medium ++ ++ * Update to SVN 20140724 (r213031) from the gcc-4_9-branch. ++ ++ * Fix installing test logs and summaries. ++ * Warn about ppc ELFv2 ABI issues, which will change in GCC 4.10. ++ * Don't gzip the xz compressed testsuite logs and summaries. ++ * Build libphobos on armel and armhf. Closes: #755390. ++ * Update the Linaro support to the 4.9-2014.07 release. ++ ++ -- Matthias Klose Thu, 24 Jul 2014 23:59:49 +0200 ++ ++gcc-4.9 (4.9.1-1) unstable; urgency=medium ++ ++ * GCC 4.9.1 release. ++ * Update GDC form the 4.9 branch (20140712). ++ ++ -- Matthias Klose Wed, 16 Jul 2014 17:15:14 +0200 ++ ++gcc-4.9 (4.9.0-11) unstable; urgency=medium ++ ++ * GCC 4.9.1 release candidate 1. ++ * Update to SVN 20140712 (r212479) from the gcc-4_9-branch. ++ - Fix PR middle-end/61725. Closes: #754548. ++ ++ * Add libstdc++ symbols files for mips64 and mips64el (Yunqiang Su). ++ Closes: #745372. ++ * Set java_cpu to ppc64 on ppc64el. ++ * Build AArch64 from the Linaro 4.9-2014.06 release. ++ * Re-enable running the testsuite on KFreeBSD and the Hurd. ++ * Re-enable running the libstdc++ testsuite on arm*, mips* and hppa. ++ ++ -- Matthias Klose Sat, 12 Jul 2014 13:10:46 +0200 ++ ++gcc-4.9 (4.9.0-10) unstable; urgency=medium ++ ++ * Update to SVN 20140704 (r212295) from the gcc-4_9-branch. ++ ++ * Explicitly set cpu_32 to ultrasparc for sparc64 builds. ++ * Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. ++ * Ignore missing libstdc++ symbols on armel and hppa. The future and ++ exception_ptr implementation is incomplete. For more information see ++ https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html. ++ ++ -- Matthias Klose Fri, 04 Jul 2014 15:55:09 +0200 ++ ++gcc-4.9 (4.9.0-9) unstable; urgency=medium ++ ++ * Update to SVN 20140701 (r212192) from the gcc-4_9-branch. ++ * Update libstdc++ symbols files for ARM. ++ * Configure --with-cpu-32=ultrasparc on sparc64. ++ ++ -- Matthias Klose Tue, 01 Jul 2014 10:47:11 +0200 ++ ++gcc-4.9 (4.9.0-8) unstable; urgency=medium ++ ++ * Update to SVN 20140624 (r211959) from the gcc-4_9-branch. ++ ++ * Don't ignore dpkg-shlibdeps errors for libstdc++6, left over from initial ++ 4.9 uploads. ++ * Update libgcc1 symbols for sh4. Closes: #751919. ++ * Stop building the libvtv packages. Not usable unless the build is ++ configured with --enable-vtable-verify, which comes with a performance ++ penalty just for the stubs in libstdc++. ++ * Update libstdc++ and libvtv symbols files for builds configured with ++ --enable-vtable-verify. ++ * Remove version requirement for dependency on make. Closes: #751891. ++ * Fix removal of python byte-code files in libstdc++6. Closes: #751435. ++ * Fix a segfault in the driver from calling free on non-malloc'd area. ++ * Drop versioned build dependency on gdb, and apply the pretty printer ++ patch for libstdc++ based on the release. ++ * Add support to build with isl-0.13. ++ ++ -- Matthias Klose Wed, 25 Jun 2014 20:08:09 +0200 ++ ++gcc-4.9 (4.9.0-7) unstable; urgency=medium ++ ++ * Update to SVN 20140616 (r211699) from the gcc-4_9-branch. ++ ++ [ Matthias Klose ] ++ * Fix patch application for powerpcspe (Helmit Grohne). Closes: #751001. ++ + Update context for powerpc_remove_many. ++ + Drop gcc-powerpcspe-ldbl-fix applied upstream. ++ ++ [ Aurelien Jarno ] ++ * Fix PR c++/61336, taken from the trunk. ++ ++ -- Matthias Klose Mon, 16 Jun 2014 10:59:16 +0200 ++ ++gcc-4.9 (4.9.0-6) unstable; urgency=medium ++ ++ * Update to SVN 20140608 (r211353) from the gcc-4_9-branch. ++ * Fix -Wno-format when -Wformat-security is the default (Steve Beattie). ++ LP: #1317305. ++ * Don't install the libstdc++ pretty printer file into the debug directory, ++ but into the gdb auto-load directory. ++ * Fix the removal of the libstdc++6 package, removing byte-compiled pretty ++ printer files and pycache directories. ++ * Fix PR c++/61046, taken from the trunk. LP: #1313102. ++ * Fix installation of gcc-{ar,nm,ranlib} man pages for snapshot builds. ++ Closes: #745906. ++ * Update patches for snapshot builds. ++ ++ -- Matthias Klose Sun, 08 Jun 2014 11:57:07 +0200 ++ ++gcc-4.9 (4.9.0-5) unstable; urgency=medium ++ ++ * Update to SVN 20140527 (r210956) from the gcc-4_9-branch. ++ * Limit systemtap-sdt-dev build dependency to enumerated linux architectures. ++ * Build libitm on AArch64, patch taken from the trunk. ++ * Update the testsuite to allow more testcases to pass with hardening options ++ turned on (Steve Beattie). LP: #1317307. ++ * Revert the fix for PR rtl-optimization/60969, causing bootstrap failure ++ on ppc64el. ++ * Fix PR other/61257, check for working sys/sdt.h. ++ * Drop the libstdc++-arm-wno-abi patch, not needed anymore in 4.9. ++ ++ -- Matthias Klose Tue, 27 May 2014 08:58:07 +0200 ++ ++gcc-4.9 (4.9.0-4) unstable; urgency=medium ++ ++ * Update to SVN 20140518 (r210592) from the gcc-4_9-branch. ++ * Update the local ada-libgnatprj patch for AArch64. Addresses: #748233. ++ * Update the libstdc++v-python3 patch. Closes: #748317, #738341, 747903. ++ * Build-depend on systemtap-sdt-dev, on every architecure, doesn't seem to hurt ++ on architectures where it is not supported. Closes: #748315. ++ * Update the gcc-default-format-security patch (Steve Beattie). LP: #1317305. ++ * Apply the proposed patch for PR c/57653. Closes: #734345. ++ ++ -- Matthias Klose Sun, 18 May 2014 23:29:43 +0200 ++ ++gcc-4.9 (4.9.0-3) unstable; urgency=medium ++ ++ * Update to SVN 20140512 (r210323) from the gcc-4_9-branch. ++ ++ [ Matthias Klose ] ++ * Update build dependencies for ada enabled snapshot builds. ++ * Fix PR tree-optimization/60902, taken from the trunk. Closes: #746944. ++ * Ensure that the common libs (built from the next GCC version) are ++ available when building without common libs. ++ * Fix java.security symlink in libgcj15. Addresses: #746786. ++ * Move the libstdc++ gdb pretty printers into libstdc++6, install the ++ -gdb.py files into /usr/share/gdb/auto-load. ++ * Set the 'Multi-Arch: same' attribute for packages, cross built with ++ with_deps_on_target_arch_pkgs=yes (Helmit Grohne). Closes: #716795. ++ * Build the gcc-X.Y-base package with with_deps_on_target_arch_pkgs=yes ++ (Helmit Grohne). Addresses: #744782. ++ * Apply the proposed patches for PR driver/61106, PR driver/61126. ++ Closes: #747345. ++ ++ [ Aurelien Jarno ] ++ * Fix libasan1 symbols file for sparc and sparc64. ++ ++ -- Matthias Klose Tue, 13 May 2014 02:15:27 +0200 ++ ++gcc-4.9 (4.9.0-2) unstable; urgency=medium ++ ++ * Update to SVN 20140503 (r210033) from the gcc-4_9-branch. ++ - Fix PR go/60931, garbage collector issue with non 4kB system page size. ++ LP: #1304754. ++ ++ [Matthias Klose] ++ * Fix libgcc-dev dependency on gcc, when not building libgcc. ++ * Fix gnat for snapshot builds on ppc64el. ++ * Update the libsanitizer build fix for sparc. ++ * Install only versioned gcc-ar gcc-nm gcc-ranlib binaries for the hppa64 ++ cross compiler. Install hppa64 alternatives. Addresses: #745967. ++ * Fix the as and ld symlinks for the hppa64 cross compiler. ++ * Add the gnat backport for AArch64. ++ * Update gnat patches not to use tabs and too long lines. ++ * libgnatvsn: Use CC and CXX passed from the toplevel makefile, drop gnat ++ build dependency on g++. Addresses: #746688. ++ ++ Merge from gnat-4.9 (4.9.0-1) unstable; urgency=low: ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-hurd.diff: refresh for new upstream version that ++ restores POSIX compliance in System.OS_Interface.timespec. ++ * debian/patches/ada-kfreebsd.diff: make System.OS_Interface.To_Timespec ++ consistent with s-osinte-posix.adb. ++ [Nicolas Boulenguez] ++ * rules.conf (Build-Depends): mention gnat before gnat-x.y so that ++ buildds can bootstrap 4.9 in unstable. Fixes: #744724. ++ ++ -- Matthias Klose Sat, 03 May 2014 14:00:41 +0200 ++ ++gcc-4.9 (4.9.0-1) unstable; urgency=medium ++ ++ * GCC 4.9.0 release. ++ * Update to SVN 20140423 (r209695) from the gcc-4_9-branch. ++ ++ [Matthias Klose] ++ * Fix PR target/59758 (sparc), libsanitizer build failure (proposed patch). ++ * Update gold architectures. ++ * Update NEWS files. ++ * Remove more mudflap left overs. Closes: #742606. ++ * Add new libraries src/libvtv and src/libcilkrts to ++ cross-ma-install-location.diff (Helmur Grohne). Closes: #745267. ++ * Let lib*gcc-dev depend on the corresponding libtsan packages. ++ * Build the liblsan packages (amd64 only). ++ * Install the libcilkrts spec file. ++ * Build the D frontend and libphobos from the gdc trunk. ++ ++ Merge from gnat-4.9 (4.9-20140411-1) unstable; urgency=medium ++ ++ [Nicolas Boulenguez] ++ * Revert g4.9-base to Architecture: all. Fixes: #743833. ++ * g4.9 Breaks/Replaces -base 4.6.4-2 and 4.9-20140330-1. Fixes: #743376. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-symbolic-tracebacks.diff: refresh. ++ ++ Merge from gnat-4.9 (4.9-20140406-1) experimental; urgency=low ++ ++ * debian/patches/ada-arm.diff: new. Improve support for ZCX on this ++ architecture. ++ * debian/patches/rules.patch: apply architecture- and Ada-specific ++ patches before Debian-specific patches. ++ * debian/patches/ada-link-lib.diff, ++ debian/patches/ada-libgnatvsn.diff, ++ debian/patches/ada-libgnatprj.diff: refresh for the new upstream ++ sources. ++ ++ Merge from gnat-4.9 (4.9-20140330-3) experimental; urgency=low ++ ++ [Nicolas Boulenguez] ++ * Install debian_packaging.mk to gnat-x.y, not -base. Fixes: #743375. ++ * rules.conf (Build-Depends): gnatgcc symlink provided by gnat-4.9 | ++ gnat-4.6 (>= 4.6.4-2) | gnat (>= 4.1 and << 4.6.1). ++ ++ Merge from gnat-4.9 (4.9-20140330-2) experimental; urgency=medium ++ ++ * Uploading to unstable was a mistake. Upload to experimental. ++ ++ Merge from gnat-4.9 (4.9-20140330-1) unstable; urgency=medium ++ ++ [Nicolas Boulenguez] ++ * patches/ada-ppc64.diff: replace undefined variable arch with ++ target_cpu; this overrides the patch proposed by Ulrich Weigand as ++ it is more correct; approved by Ludovic Brenta. Fixes: #742590. ++ * control.m4: Break/Replace: dh-ada-library 5.9. Fixes: #743219. ++ ++ Merge from gnat-4.9 (4.9-20140322-1) experimental; urgency=low ++ ++ [Nicolas Boulenguez] ++ * debian/control.m4: ++ (Suggests): suggest the correct version of ada-reference-manual. ++ (Vcs-Svn): specify the publicly accessible repository. ++ * Receive debian_packaging.mk from dh-ada-library (not library specific). ++ * Receive gnatgcc symlink from gnat (useful outside default compiler). ++ * debian/source/local-options: new. ++ ++ [Ludovic Brenta] ++ * debian/control.m4: conflict with gnat-4.7, gnat-4.8. ++ * debian/patches/ada-default-project-path.diff: when passed options such ++ as -m32 or -march, do not look for the RTS in ++ /usr/share/ada/adainclude but in ++ /usr/lib/gcc/$target_triplet/$version/{,rts-}$arch. Still look ++ for project files in /usr/share/ada/adainclude. ++ * debian/rules.d/binary-ada.mk, debian/rules.defs, debian/rules.patch: ++ Switch to ZCX by default on arm, armel, armhf; built SJLJ as the ++ package gnat-4.9-sjlj like on all other architectures. This is made ++ possible by the new upstream version. ++ * debian/patches/ada-hurd.diff (s-osinte-gnu.ads): change the type of ++ timespec.tv_nsec from long to time_t, for compatibility with ++ s-osinte-posix.adb, even though this violates POSIX. Better solution ++ to come from upstream. Fixes: #740286. ++ ++ -- Matthias Klose Wed, 23 Apr 2014 13:35:43 +0200 ++ ++gcc-4.9 (4.9-20140411-2) unstable; urgency=medium ++ ++ * Disable running the testsuite on kfreebsd, hangs the buildds. ++ * Stop building the sanitizer libs on sparc, fails to build. No reaction ++ from the Debian port maintainers and upstream. See PR sanitize/59758. ++ ++ -- Matthias Klose Sat, 12 Apr 2014 15:42:34 +0200 ++ ++gcc-4.9 (4.9-20140411-1) unstable; urgency=medium ++ ++ * GCC 4.9.0 release candidate 1. ++ * Configure for i586-linux-gnu on i386. ++ ++ -- Matthias Klose Fri, 11 Apr 2014 19:57:07 +0200 ++ ++gcc-4.9 (4.9-20140406-1) experimental; urgency=medium ++ ++ [Matthias Klose] ++ * Include include and include-fixed header files into the stage1 ++ gcc-4.9 package. ++ * Explicitly configure with --disable-multilib on sparc64 when no ++ multilibs are requested (Helmut Grohne). Addresses: #743342. ++ * Drop mudflap from cross-install-location.diff since mudflap was removed ++ from gcc 4.9. Closes: #742606 ++ * Build gnat in ppc64el snapshot builds. ++ * Apply the ada-ppc64 patch for snapshot builds as well. ++ * Fix PR target/60609 (ARM), proposed patch (Charles Baylis). LP: #1295653. ++ * Include the gnu triplet prefixed gcov and gcc-{ar,nm,ranlib} binaries. ++ * Add replaces when upgrading from a standalone gccgo build. ++ ++ [Yunqiang Su] ++ * Lower default optimization for mips64/n32 to mips3/mips64(32). ++ Closes: #742617. ++ ++ -- Matthias Klose Sun, 06 Apr 2014 02:24:16 +0200 ++ ++gcc-4.9 (4.9-20140330-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot 20140330. ++ ++ [Matthias Klose] ++ * Update symbols files. ++ * debian/patches/ada-ppc64.diff: Fix for ppc64el (Ulrich Weigand). ++ * Fix cross building targeting x32 (Helmut Grohne). Addresses: #742539. ++ ++ [Ludovic Brenta] ++ * debian/control.m4 (Build-Depends), debian/rules.conf: remove ++ AUTOGEN_BUILD_DEP and hardcode autogen. It is called by ++ fixincludes/genfixes during bootstrap and also when building gnat-*, ++ not just when running checks on gcc-*. ++ ++ -- Matthias Klose Sun, 30 Mar 2014 09:46:29 +0100 ++ ++gcc-4.9 (4.9-20140322-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot 20140322. ++ - Fixes build error on the Hurd. Closes: #740153. ++ ++ [Matthias Klose] ++ * Re-apply lost patch for config.gcc for mips64el. Closes: #741543. ++ ++ Merge from gnat-4.9 (4.9-20140218-3) UNRELEASED; urgency=low ++ ++ [Nicolas Boulenguez] ++ * debian/control.m4: suggest the correct version of ++ ada-reference-manual. ++ ++ [Ludovic Brenta] ++ * debian/control.m4: conflict with gnat-4.7, gnat-4.8. ++ ++ Merge from gnat-4.9 (4.9-20140218-2) experimental; urgency=low ++ ++ * debian/patches/ada-hurd.diff (Makefile.in): match *86-pc-gnu but ++ not *86-linux-gnu, the target tripled used by GNU/Linux. ++ ++ Merge from gnat-4.9 (4.9-20140218-1) experimental; urgency=low ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-symbolic-tracebacks.diff: refresh and fix compiler ++ warnings. ++ * debian/patches/ada-link-lib.diff (.../ada/gcc-interface/Make-lang.in): ++ do not try to install the gnattools, this is the job of ++ gnattools/Makefile.in. ++ * debian/patches/ada-ajlj.diff: specify EH_MECHANISM to sub-makes even ++ when making install-gnatlib. ++ ++ [Xavier Grave] ++ * debian/patches/ada-kfreebsd.diff: refresh. ++ * debian/rules.patch: re-enable the above. ++ ++ -- Matthias Klose Sat, 22 Mar 2014 14:19:43 +0100 ++ ++gcc-4.9 (4.9-20140303-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot 20140303. ++ ++ -- Matthias Klose Tue, 04 Mar 2014 02:13:20 +0100 ++ ++gcc-4.9 (4.9-20140218-1) experimental; urgency=medium ++ ++ * Fix gij wrapper script on hppa. Closes: #739224. ++ ++ -- Matthias Klose Tue, 18 Feb 2014 23:59:31 +0100 ++ ++gcc-4.9 (4.9-20140205-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot 20140205. ++ * Install the libsanitizer spec file. ++ * Fix building standalone gccgo, including the libgcc packages. ++ * On AArch64, use "generic" target, if no other default. ++ ++ -- Matthias Klose Wed, 05 Feb 2014 12:53:52 +0100 ++ ++gcc-4.9 (4.9-20140122-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot 20140122. ++ * Update libstdc++ -dbg and -doc conflicts. ++ * Link libstdc++ tests requiring libpthread symbols with --no-as-needed. ++ * armhf: Fix ffi_call_VFP with no VFP arguments (Will Newton). ++ * Apply proposed patch for PR target/59799, allow passing arrays in ++ registers on AArch64 (Michael Hudson). ++ ++ -- Matthias Klose Wed, 22 Jan 2014 21:28:56 +0100 ++ ++gcc-4.9 (4.9-20140116-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot 20140116. ++ * Fix PR target/59588 (AArch64), backport proposed patch. LP: #1263576. ++ * Fix call frame information in ffi_closure_SYSV on AArch64. ++ ++ -- Matthias Klose Fri, 17 Jan 2014 00:31:19 +0100 ++ ++gcc-4.9 (4.9-20140111-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot 20140111. ++ * Update libstdc++ -dbg and -doc conflicts. Closes: #734913. ++ * Disable libcilkrts on KFreeBSD and the Hurd. See #734973. ++ ++ -- Matthias Klose Sat, 11 Jan 2014 13:11:16 +0100 ++ ++gcc-4.9 (4.9-20140110-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot 20140110. ++ ++ -- Matthias Klose Fri, 10 Jan 2014 18:03:07 +0100 ++ ++gcc-4.9 (4.9-20140109-1) experimental; urgency=medium ++ ++ * Package GCC 4.9 snapshot. ++ ++ -- Matthias Klose Thu, 09 Jan 2014 18:57:46 +0100 ++ ++gcc-4.8 (4.8.2-11) unstable; urgency=low ++ ++ * Update to SVN 20131230 (r206241) from the gcc-4_8-branch. ++ * Don't build x32 multilibs for wheezy backports. ++ * Set the goarch to arm64 for aarch64-linux-gnu. ++ * Fix statically linked gccgo binaries on AArch64 (Michael Hudson). ++ LP: #1261604. ++ * Merge accumulated Ada changes from gnat-4.8. ++ * Update gnat build dependencies when not built from a separate source. ++ * Default to -mieee on alpha again (Michael Cree). Closes: #733291. ++ * Prepare gnat package for cross builds. ++ ++ -- Matthias Klose Mon, 30 Dec 2013 08:52:29 +0100 ++ ++gcc-4.8 (4.8.2-10) unstable; urgency=low ++ ++ * Update to SVN 20131213 (r205948) from the gcc-4_8-branch. ++ * Add missing commit in libjava for gcc-linaro. ++ ++ -- Matthias Klose Fri, 13 Dec 2013 01:01:47 +0100 ++ ++gcc-4.8 (4.8.2-9) unstable; urgency=low ++ ++ * Update to SVN 20131212 (r205924) from the gcc-4_8-branch. ++ ++ [ Matthias Klose ] ++ * Fix libitm symbols files for ppc64. ++ * Update libatomic symbol file for arm64 and ppc64. ++ * libgcj-dev: Drop dependencies on gcj-jre-lib and gcj-jdk. ++ * Fix permissions of some override files. ++ * Let cross compilers conflict with gcc-multilib (providing ++ /usr/include/asm for the non-default multilib). ++ * Configure --with-long-double-128 on powerpcspe (Roland Stigge). ++ Closes: #731941. ++ * Update the Linaro support to the 4.8-2013.12 release. ++ * Update the ibm branch to 20131212. ++ ++ [ Aurelien Jarno ] ++ * patches/note-gnu-stack.diff: restore and rebase lost parts. ++ ++ -- Matthias Klose Thu, 12 Dec 2013 12:34:55 +0100 ++ ++gcc-4.8 (4.8.2-8) unstable; urgency=medium ++ ++ * Update to SVN 20131203 (r205647) from the gcc-4_8-branch. ++ * Fix PR libgcc/57363, taken from the trunk. ++ ++ -- Matthias Klose Wed, 04 Dec 2013 01:21:10 +0100 ++ ++gcc-4.8 (4.8.2-7) unstable; urgency=low ++ ++ * Update to SVN 20131129 (r205535) from the gcc-4_8-branch. ++ * Introduce aarch64 goarch. ++ * libgo: Backport fix for calling a function or method that takes or returns ++ an empty struct via reflection. ++ * go frontend: Backport fix for the generated hash functions of types that ++ are aliases for structures containing unexported fields. ++ * Skip Go testcase on AArch64 which hangs on the buildds. ++ * Fix freetype includes in libjava/classpath. ++ ++ -- Matthias Klose Fri, 29 Nov 2013 18:19:12 +0100 ++ ++gcc-4.8 (4.8.2-6) unstable; urgency=low ++ ++ * Update to SVN 20131128 (r205478) from the gcc-4_8-branch. ++ ++ [ Matthias Klose ] ++ * gcc-4.8-base: Breaks gcc-4.4-base (<< 4.4.7). Closes: #729963. ++ * Update the gcc-as-needed patch for mips*. Closes: #722067. ++ * Use dpkg-vendor information for distribution specific settings. ++ Closes: #697805. ++ * Check for the sys/auxv.h header file. ++ * On AArch64, make the frame grow downwards, taken from the trunk. ++ Enable ssp on AArch64. ++ * Pass -fuse-ld=gold to gccgo on targets supporting split-stack. ++ ++ [ Aurelien Jarno ] ++ * Update README.Debian for s390 and s390x. ++ ++ [ Thorsten Glaser ] ++ * m68k-ada.diff: Add gcc-4.8.0-m68k-ada-pr48835-2.patch and ++ gcc-4.8.0-m68k-ada-pr51483.patch by Mikael Pettersson, to ++ fix more CC0-specific and m68k/Ada-specific problems. ++ * m68k-picflag.diff: New, backport from trunk, by Andreas Schwab, ++ to avoid relocation errors when linking big shared objects. ++ * pr58369.diff: New, backport from trunk, by Jeffrey A. Law, ++ to fix ICE while building boost 1.54 on m68k. ++ * pr52306.diff: Disables -fauto-inc-dec by default on m68k to ++ work around ICE when building C++ code (e.g. Qt-related). ++ ++ -- Matthias Klose Thu, 28 Nov 2013 10:29:09 +0100 ++ ++gcc-4.8 (4.8.2-5) unstable; urgency=low ++ ++ * Update to SVN 20131115 (r204839) from the gcc-4_8-branch. ++ * Update the Linaro support to the 4.8-2013.11 release. ++ * Add missing replaces in libgcj14. Closes: #729022. ++ ++ -- Matthias Klose Sat, 16 Nov 2013 20:15:09 +0100 ++ ++gcc-4.8 (4.8.2-4) unstable; urgency=low ++ ++ * Really fix disabling the gdc tests. ++ ++ -- Matthias Klose Wed, 13 Nov 2013 00:44:35 +0100 ++ ++gcc-4.8 (4.8.2-3) unstable; urgency=low ++ ++ * Update to SVN 20131112 (r204704) from the gcc-4_8-branch. ++ * Don't ship java.security in both libgcj14 and gcj-4.8-headless. ++ Closes: #729022. ++ * Disable gdc tests on architectures without libphobos port. ++ ++ -- Matthias Klose Tue, 12 Nov 2013 18:08:44 +0100 ++ ++gcc-4.8 (4.8.2-2) unstable; urgency=low ++ ++ * Update to SVN 20131107 (r204496) from the gcc-4_8-branch. ++ * Build ObjC, Obj-C++ and Go for AArch64. ++ * Fix some gcj symlinks. Closes: #726792, #728403. ++ * Stop building libmudflap (removed in GCC 4.9). ++ ++ -- Matthias Klose Thu, 07 Nov 2013 01:40:15 +0100 ++ ++gcc-4.8 (4.8.2-1) unstable; urgency=low ++ ++ * GCC 4.8.2 release. ++ ++ * Update to SVN 20131017 (r203751) from the gcc-4_8-branch. ++ * Update the Linaro support to the 4.8-2013.10 release. ++ * Fix PR c++/57850, option -fdump-translation-unit not working. ++ * Don't run the testsuite on aarch64. ++ * Fix PR target/58578, wrong-code regression on ARM. LP: #1232017. ++ * [ARM] Fix bug in add patterns due to commutativity modifier, ++ backport from trunk. LP: #1234060. ++ * Build libatomic on AArch64. ++ * Fix dependency generation for the cross gcc-4.8 package. ++ * Make the libstdc++ pretty printers compatible with Python3, if ++ gdb is built with Python3 support. ++ * Fix loading of libstdc++ pretty printers. Closes: #701935. ++ * Don't let gcc-snapshot build-depend on gnat on AArch64. ++ ++ -- Matthias Klose Thu, 17 Oct 2013 14:37:55 +0200 ++ ++gcc-4.8 (4.8.1-10) unstable; urgency=low ++ ++ * Update to SVN 20130904 (r202243) from the gcc-4_8-branch. ++ ++ [ Matthias Klose ] ++ * Don't rely on the most recent Debian release name for configuration ++ of the package. Addresses: #720263. Closes: #711824. ++ * Fix a cross build issue without DEB_* env vars set (Eleanor Chen). ++ Closes: #718614. ++ * Add packaging support for mips64(el) and mipsn32(el) including multilib ++ configurations (YunQiang Su). Addresses: #708143. ++ * Fix gcc dependencies for stage1 builds (YunQiang Su). Closes: #710240. ++ * Fix boehm-gc test failures with a linker defaulting to ++ --no-copy-dt-needed-entries. ++ * Fix libstdc++ and libjava test failures with a linker defaulting ++ to --as-needed. ++ * Mark the libjava/sourcelocation test as expected to fail on amd64 cpus. ++ * Fix some gcc and g++ test failures for a compiler with hardening ++ defaults enabled. ++ * Fix gcc-default-format-security.diff for GCC 4.8. ++ * Run the testsuite again on armel and armhf. ++ * Disable running the testsuite on mips. Fails on the buildds, preventing ++ migration to testing for three months. No feedback from the mips porters. ++ ++ [ Thorsten Glaser ] ++ * Merge several old m68k-specific patches from gcc-4.6 package: ++ - libffi-m68k: Rebased against gcc-4.8 and libffi 3.0.13-4. ++ - m68k-revert-pr45144: Needed for Ada. ++ - pr52714: Revert optimisation that breaks CC0 arch. ++ * Fix PR49847 (Mikael Pettersson). Closes: #711558. ++ * Use -fno-auto-inc-dec for PR52306 (Mikael Pettersson). ++ ++ -- Matthias Klose Wed, 04 Sep 2013 21:30:07 +0200 ++ ++gcc-4.8 (4.8.1-9) unstable; urgency=low ++ ++ * Update to SVN 20130815 (r201764) from the gcc-4_8-branch. ++ * Enable gomp on AArch64. ++ * Update the Linaro support to the 4.8-2013.08 release. ++ ++ -- Matthias Klose Thu, 15 Aug 2013 10:47:38 +0200 ++ ++gcc-4.8 (4.8.1-8) unstable; urgency=low ++ ++ * Fix PR rtl-optimization/57878, taken from the 4.8 branch. ++ * Fix PR target/57909 (ARM), Linaro only. ++ ++ -- Matthias Klose Mon, 22 Jul 2013 13:03:57 +0200 ++ ++gcc-4.8 (4.8.1-7) unstable; urgency=low ++ ++ * Update to SVN 20130717 (r200995) from the gcc-4_8-branch. ++ - Go 1.1.1 updates. ++ * Define CPP_SPEC for aarch64. ++ * Don't include in libgcc/libgcc2.c, taken from the trunk. ++ Closes: #696267. ++ * boehm-gc: use mmap instead of brk also on kfreebsd-* (Petr Salinger). ++ Closes: #717024. ++ ++ -- Matthias Klose Thu, 18 Jul 2013 02:02:13 +0200 ++ ++gcc-4.8 (4.8.1-6) unstable; urgency=low ++ ++ * Update to SVN 20130709 (r200810) from the gcc-4_8-branch. ++ ++ [ Aurelien Jarno ] ++ * Add 32-bit biarch packages on sparc64. ++ ++ [ Matthias Klose ] ++ * Fix multiarch include path for aarch64. ++ * Update the Linaro support to the 4.8-2013.07 release. ++ * Revert the proposed fix for PR target/57637 (ARM only). ++ * Let gfortran-4.8 provide gfortran-mod-10. Addresses #714730. ++ ++ [ Iain Buclaw ] ++ * Avoid compiler warnings redefining D builtin macros. ++ ++ -- Matthias Klose Tue, 09 Jul 2013 16:18:16 +0200 ++ ++gcc-4.8 (4.8.1-5) unstable; urgency=low ++ ++ * Update to SVN 20130629 (r200565) from the gcc-4_8-branch. ++ ++ [ Aurelien Jarno ] ++ * Don't pass --with-mips-plt on mips/mipsel. ++ ++ [ Matthias Klose ] ++ * Fix documentation builds with texinfo-5.1. ++ * Update the ARM libsanitizer backport from the 4.8 Linaro branch. ++ * libphobos-4.8-dev provides libphobos-dev (Peter de Wachter). ++ * The gdc cross compiler doesn't depend on libphobos-4.8-dev. ++ * Work around libgo build failure on ia64. PR 57689. #714090. ++ * Apply proposed fix for PR target/57637 (ARM only). ++ ++ -- Matthias Klose Sat, 29 Jun 2013 14:59:45 +0200 ++ ++gcc-4.8 (4.8.1-4) unstable; urgency=low ++ ++ * Update to SVN 20130619 (r200219) from the gcc-4_8-branch. ++ - Bump the libgo soname (change in type layout for functions that take ++ function arguments). ++ - Fix finding the liblto_plugin.so without x permissions set (see ++ PR driver/57651). Closes: #712704. ++ * Update maintainer list. ++ * Fall back to the binutils version of the binutils build dependency ++ if the binutils version used for the build cannot be determined. ++ * For ARM multilib builds, use libsf/libhf system directories to lookup ++ files for the non-default multilib (for now, only for the cross compilers). ++ * Split out a gcj-4.8 package, allow to build a gcj cross compiler. ++ * Allow one to cross build gcj. ++ * Don't include object.di in the D cross compiler, but depend on gdc instead. ++ * Allow one to cross build gdc. ++ * Pass --hash-style=gnu instead of --hash-style=both to the linker. ++ ++ -- Matthias Klose Wed, 19 Jun 2013 23:48:02 +0200 ++ ++gcc-4.8 (4.8.1-3) unstable; urgency=low ++ ++ * Update to SVN 20130612 (r200018) from the gcc-4_8-branch. ++ ++ [ Matthias Klose ] ++ * Prepare gdc for cross builds, and multiarch installation. ++ * Prepare gnat to build out of the gcc-4.8 source package, not ++ building the gnat-4.8-base package anymore. ++ * Don't build a gcj cross compiler by default (not yet tested). ++ * Disable D on s390 (doesn't terminate the D testsuite). ++ * Build libphobos on x32. ++ * Fix build with DEB_BUILD_OPTIONS="nolang=d". ++ * Disable D for arm64. ++ * Update the Linaro support to the 4.8-2013.06 release. ++ * Fix cross building a native compiler. ++ * Work around dh_shlibdeps not working on target libraries (see #698881). ++ * Add build dependency on kfreebsd-kernel-headers (>= 0.84) [kfreebsd-any]. ++ * Add handling for unwind inside signal trampoline for kfreebsd (Petr ++ Salinger). Closes: #712016. ++ * Let gcc depend on the binutils upstream version it was built with. ++ Addresses #710142. ++ * Force a build using binutils 2.23.52 in unstable. ++ ++ [ Iain Buclaw ] ++ * Update gdc to 20130610. ++ * Build libphobos on kFreeBSD. ++ ++ -- Matthias Klose Wed, 12 Jun 2013 16:47:25 +0200 ++ ++gcc-4.8 (4.8.1-2) unstable; urgency=low ++ ++ * Update to SVN 20130604 (r199596) from the gcc-4_8-branch. ++ * Force arm mode for libjava on armhf. ++ * Fix gdc build failure on kFreeBSD and the Hurd. ++ ++ -- Matthias Klose Tue, 04 Jun 2013 17:28:06 +0200 ++ ++gcc-4.8 (4.8.1-1) unstable; urgency=low ++ ++ * GCC 4.8.1 release. ++ Support for C++11 ref-qualifiers has been added to GCC 4.8.1, making G++ ++ the first C++ compiler to implement all the major language features of ++ the C++11 standard. ++ * Update to SVN 20130603 (r199596) from the gcc-4_8-branch. ++ * Build java packages from this source package. Works aroud ftp-master's ++ overly strict interpretation of the Built-Using attribute. ++ * Build D and libphobos packages from this source package. ++ * Disable the non-default multilib test runs for libjava and gnat. ++ ++ -- Matthias Klose Mon, 03 Jun 2013 09:28:11 +0200 ++ ++gcc-4.8 (4.8.0-9) unstable; urgency=low ++ ++ * Update to SVN 20130529 (r199410) from the gcc-4_8-branch. ++ * Drop build dependency on automake, not used anymore. ++ * Build with binutils from unstable (the 4.8.0-8 package was accidentally ++ built with binutils from experimental). Closes: #710142. ++ * Explicity configure with --disable-lib{atomic,quadmath,sanitizer} when ++ not building these libraries. Closes: #710224. ++ ++ -- Matthias Klose Wed, 29 May 2013 16:59:50 +0200 ++ ++gcc-4.8 (4.8.0-8) unstable; urgency=medium ++ ++ * Update to SVN 20130527 (r199350) from the gcc-4_8-branch (4.8.1 rc2). ++ - Fix PR tree-optimization/57230 (closes: #707118). ++ ++ * Remove gdc-doc.diff. ++ * libgo: Overwrite the setcontext_clobbers_tls check on mips*, fails ++ on some buildds. ++ * Update the Linaro support to the 4.8-2013.05 release. ++ * Use the %I spec when building the object file for the gcj main function. ++ * Fix PR c++/57211, don't warn about unused parameters of defaulted ++ functions. Taken from the trunk. Closes: #705066. ++ * Update symbols files for powerpcspe (Roland Stigge). Closes: #709383. ++ * Build zh_TW.UTF-8 locale to fix libstdc++ test failures. ++ * Keep prev-* symlinks to fix plugin.exp test failures. ++ ++ -- Matthias Klose Mon, 27 May 2013 15:43:08 +0200 ++ ++gcc-4.8 (4.8.0-7) unstable; urgency=medium ++ ++ * Update to SVN 20130512 (r198804) from the gcc-4_8-branch. ++ ++ [ Matthias Klose ] ++ * Revert the r195826 patch, backported for the 4.8 branch. ++ * Tighten build dependency on libmpc-dev to ensure using libmpc3. ++ * Re-add build dependency on locales. ++ * Enable multilib build for gdc. ++ * Add build-deps on libn32gcc1 and lib64gcc1 on mips/mipsel. ++ * Fix libgcc-dbg dependencies on hppa and m68k. Closes: #707745. ++ * Install host specific libstdc++ headers into the host include dir. ++ Closes: #707753. ++ * Enable Go for sparc64. ++ * Fix host specific c++ include dir on kfreebsd-amd64. Closes: #707957. ++ ++ [ Thorsten Glaser ] ++ * Regenerate m68k patches. Closes: #707766. ++ ++ [ Aurelien Jarno ] ++ * Fix libgcc1 symbols file for sparc64. ++ ++ -- Matthias Klose Sun, 12 May 2013 19:26:50 +0200 ++ ++gcc-4.8 (4.8.0-6) unstable; urgency=low ++ ++ * Update to SVN 20130507 (r198699) from the gcc-4_8-branch. ++ ++ [ Samuel Thibault ] ++ * Backport r195826 to fix gdb build on hurd-i386. ++ ++ [ Matthias Klose ] ++ * Drop build dependency on locales for this upload. ++ ++ -- Matthias Klose Wed, 08 May 2013 01:17:15 +0200 ++ ++gcc-4.8 (4.8.0-5) unstable; urgency=low ++ ++ * Update to SVN 20130506 (r198641) from the gcc-4_8-branch. ++ ++ [ Matthias Klose ] ++ * Stop building the spu cross compilers on powerpc and ppc64. ++ * Merge back changes from gnat-4.8 4.8.0-1~exp2. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-libgnatprj.diff: do not include indepsw.o in the ++ library, it is used only in the gnattools. ++ ++ -- Matthias Klose Mon, 06 May 2013 21:49:44 +0200 ++ ++gcc-4.8 (4.8.0-4) experimental; urgency=low ++ ++ * Update to SVN 20130421 (r198115) from the gcc-4_8-branch. ++ * Ignore the return value for dh_shlibdeps for builds on precise/ARM. ++ * Use target specific names for libstdc++ baseline files. LP: #1168267. ++ * Update gcc-d-lang.diff for GDC port. ++ * Don't use extended libstdc++-doc build dependencies for older releases. ++ * In gnatlink, pass the options and libraries after objects to the ++ linker to avoid link failures with --as-needed. Addresses: #680292. ++ * Build gcj for aarch64-linux-gnu. ++ * Update the Linaro support to the 4.8-2013.04 release. ++ * Fix gdc build on architectures not providing libphobos. ++ ++ -- Matthias Klose Mon, 22 Apr 2013 01:36:19 +0200 ++ ++gcc-4.8 (4.8.0-3) experimental; urgency=low ++ ++ * Update to SVN 20130411 (r197813) from the gcc-4_8-branch. ++ ++ [ Iain Buclaw ] ++ * Port GDC to GCC 4.8.0 release. ++ ++ -- Matthias Klose Thu, 11 Apr 2013 19:18:24 +0200 ++ ++gcc-4.8 (4.8.0-2) experimental; urgency=low ++ ++ * Update to SVN 20130328 (r197185) from the gcc-4_8-branch. ++ * Update NEWS files. ++ * Apply proposed patch for PR c++/55951. Closes: #703945. ++ * Configure with --disable-libatomic for hppa64. Closes: #704020. ++ ++ -- Matthias Klose Thu, 28 Mar 2013 06:10:29 +0100 ++ ++gcc-4.8 (4.8.0-1) experimental; urgency=low ++ ++ * GCC 4.8.0 release. ++ * Fix build failure on powerpcspe (Roland Stigge). Closes: #703074. ++ ++ -- Matthias Klose Fri, 22 Mar 2013 07:47:12 -0700 ++ ++gcc-4.8 (4.8-20130318-1) experimental; urgency=low ++ ++ * GCC snapshot 20130318, taken from the trunk. ++ - Fix the build failures on ARM. ++ * Install the libasan_preinit.o files. Closes: #703229. ++ ++ -- Matthias Klose Mon, 18 Mar 2013 16:18:25 -0700 ++ ++gcc-4.8 (4.8-20130315-1) experimental; urgency=low ++ ++ * GCC snapshot 20130315, taken from the trunk. ++ ++ -- Matthias Klose Fri, 15 Mar 2013 18:51:15 -0700 ++ ++gcc-4.8 (4.8-20130308-1) experimental; urgency=low ++ ++ * GCC snapshot 20130308, taken from the trunk. ++ ++ -- Matthias Klose Fri, 08 Mar 2013 12:08:12 +0800 ++ ++gcc-4.8 (4.8-20130222-1) experimental; urgency=low ++ ++ * GCC snapshot 20130222, taken from the trunk. ++ * Update libasan symbols files. ++ ++ -- Matthias Klose Sat, 23 Feb 2013 04:47:15 +0100 ++ ++gcc-4.8 (4.8-20130217-1) experimental; urgency=low ++ ++ * GCC snapshot 20130217, taken from the trunk. ++ ++ * Update libasan symbols files. ++ * On alpha, link with --no-relax. Update libgcc1 symbols files (Michael ++ Cree). Closes: #699220. ++ ++ -- Matthias Klose Mon, 18 Feb 2013 03:12:31 +0100 ++ ++gcc-4.8 (4.8-20130209-1) experimental; urgency=low ++ ++ * GCC snapshot 20130209, taken from the trunk. ++ ++ [ Matthias Klose ] ++ * Add a Build-Using attribute for each binary package, which can be ++ built from the gcc-4.7-source package (patch derived from a proposal by ++ Ansgar Burchardt). ++ - Use it for cross-compiler packages. ++ - Not yet used when building gcj, gdc or gnat using the gcc-source package. ++ These packages don't require an exact version of the gcc-source package, ++ but just a versions which is specified by the build dependencies. ++ * Fix dh_shlibdeps calls for the libgo packages. ++ * libstdc-doc: Depend on libjs-jquery. ++ * Update libstdc++ symbols files. ++ * Downgrade the priority of the non-default multilib libasan packages. ++ ++ [ Thibaut Girka ] ++ * Fix dh_shlibdeps and dh_gencontrol cross-build mangling for ++ libgfortran-dev packages. ++ ++ -- Matthias Klose Sat, 09 Feb 2013 17:00:06 +0100 ++ ++gcc-4.8 (4.8-20130127-1) experimental; urgency=low ++ ++ * GCC snapshot 20130127, taken from the trunk. ++ ++ [ Matthias Klose ] ++ * Fix MULTILIB_OS_DIRNAME for the default multilib on x32. ++ ++ [ Thibaut Girka ] ++ * Fix installation path for libatomic and libsanitizer when building a ++ cross-compiler with with_deps_on_target_arch_pkgs. ++ * Fix regexp used to list patched autotools files. ++ ++ -- Matthias Klose Sun, 27 Jan 2013 21:02:34 +0100 ++ ++gcc-4.8 (4.8-20130113-1) experimental; urgency=low ++ ++ * GCC snapshot 20130113, taken from the trunk. ++ * Always configure --with-system-zlib. ++ * Search library dependencies in the build-sysroot too. ++ * Don't complain about missing .substvars files when trying to mangle ++ these files. ++ * Add ARM multilib packages to the control file for staged cross builds. ++ * Fix ARM multilib shlibs dependency generation for cross builds. ++ * Don't call dh_shlibdeps for staged cross builds. These packages ++ are never shipped, and the information is irrelevant. ++ * Build the libasan and libtsan packages before libstdc++. ++ * Bump build dependencies on isl and cloog. ++ * Don't ship libiberty.a in gcc-4.8-hppa64. Closes: #659556. ++ ++ -- Matthias Klose Sun, 13 Jan 2013 16:42:33 +0100 ++ ++gcc-4.8 (4.8-20130105-1) experimental; urgency=low ++ ++ * GCC snapshot 20130105, taken from the trunk. ++ * Keep the debug link for libstdc++6. Closes: #696854. ++ * Update libgfortran symbols file for the trunk. ++ * Fix libstdc++ symbols files for sparc 128bit symbols. ++ * Update libgcc and libstdc++ symbols files for s390. ++ * Keep the rt.jar symlink in the gcj-jre-headless package. ++ * Explicitly search multiarch and multilib system directories when ++ calling dh_shlibdeps. ++ * Let gjdoc accept -source 1.5|1.6|1.7. Addresses: #678945. ++ * Fix build configured with --enable-java-maintainer-mode. ++ * Don't ship .md5 files in the libstdc++-doc package. ++ ++ -- Matthias Klose Sat, 05 Jan 2013 13:47:51 +0100 ++ ++gcc-4.8 (4.8-20130102-1) experimental; urgency=low ++ ++ * GCC snapshot 20130102, taken from the trunk. ++ ++ [ Matthias Klose ] ++ * Resolve libgo dependencies with the built runtime libraries. ++ * Fix g++-4.8-multilib dependencies. ++ ++ [ Thibaut Girka ] ++ * Prepare for optional dependencies on the packages built on the ++ target architecture. ++ * When using the above, ++ - use the same settings for gcc_lib_dir, sysroot, header and C++ header ++ locations as for the native build. ++ - install libraries into the multiarch directories. ++ - use cpp-4.x- instead of gcc-4.x-base to collect doc files. ++ ++ -- Matthias Klose Wed, 02 Jan 2013 14:51:59 +0100 ++ ++gcc-4.8 (4.8-20121218-1) experimental; urgency=low ++ ++ * GCC snapshot 20121217, taken from the trunk. ++ * Fix dependency generation for asan and atomic multilibs. ++ * Fix libobjc-dbg dependencies on libgcc-dbg packages. ++ * Fix MULTIARCH_DIRNAME definition for powerpcspe (Roland Stigge). ++ Closes: #695661. ++ * Move .jar symlinks from the -jre-lib into the -jre-headless package. ++ ++ -- Matthias Klose Tue, 18 Dec 2012 16:44:42 +0100 ++ ++gcc-4.8 (4.8-20121217-1) experimental; urgency=low ++ ++ * GCC snapshot 20121217, taken from the trunk. ++ * Fix package builds with the common libraries provided by a newer ++ gcc-X.Y package. ++ * Drop build-dependency on libelf. ++ * Drop the g++-multilib build dependency, use the built compiler to ++ check which multilib variants can be run. Provide an asm symlink for ++ the build. ++ * Stop configuring cross compilers --with-headers --with-libs. ++ * Always call dh_shlibdeps with -l, pointing to the correct dependency ++ packages. ++ * Fix cross build stage1 package installation, only including the target ++ files in the gcc package. ++ * Explicitly configure with --enable-multiarch when doing builds ++ supporting the multiarch layout. ++ * Only configure --with-sysroot, --with-build-sysroot when values are set. ++ * Revert: For stage1 builds, include gcc_lib_dir files in the gcc package. ++ * Allow multilib enabled stage1 and stage2 cross builds. ++ * Don't check glibc version to configure --with-long-double-128. ++ * Don't auto-detect multilib osdirnames. ++ * Don't set a LD_LIBRARY_PATH when calling dh_shlibdeps in cross builds. ++ * Allow building a gcj cross compiler. ++ * Pretend that wheezy has x32 support (sid is now known as wheezy :-/). ++ ++ -- Matthias Klose Mon, 17 Dec 2012 18:37:14 +0100 ++ ++gcc-4.8 (4.8-20121211-1) experimental; urgency=low ++ ++ * GCC snapshot 20121211, taken from the trunk. ++ * Fix build failure on multilib configurations. ++ ++ -- Matthias Klose Tue, 11 Dec 2012 08:04:30 +0100 ++ ++gcc-4.8 (4.8-20121210-1) experimental; urgency=low ++ ++ * GCC snapshot 20121210, taken from the trunk. ++ * For cross builds, don't use the multiarch location for the C++ headers. ++ * For cross builds, fix multilib inter package dependencies. ++ * For cross builds, fix libc6 dependencies for non-default multilib packages. ++ * Build libasan packages on powerpc, ppc64. ++ * Only run the libgo testsuite for flags configured in RUNTESTFLAGS. ++ * Remove the cross-includes patch, not needed anymore with --with-sysroot=/. ++ * For cross builds, install into /usr/lib/gcc-cross to avoid file conflicts ++ with the native compiler for the target architecture. ++ * For cross builds, don't add /usr/local/include to the standard include ++ path, however /usr/local/include/ is still on the path. ++ * For cross builds, provide symbols files based on the symbols files for ++ the native build. Not picked up by dh_makeshlibs yet. ++ * Drop the g++-multilib build dependency, use the built compiler to ++ check which multilib variants can be run. ++ * Fix spu cross build on powerpc/ppc64. ++ * Make libgcj packages Multi-Arch: same, append the Debian architecture ++ name to the gcj java home. ++ * Don't encode versioned build dependencies on binutils and dpkg-dev in ++ the control file (makes the package cross-buildable). ++ * Only include gengtype for native builds. Needs upstream changes. ++ See #645018. ++ * Fix cross build failure with --enable-libstdcxx-debug. ++ * Only install libbacktrace if it is built. ++ * When cross building the native compiler, configure --with-sysroot=/ ++ and without --without-isl. ++ ++ -- Matthias Klose Mon, 10 Dec 2012 14:40:14 +0100 ++ ++gcc-4.8 (4.8-20121128-1) experimental; urgency=low ++ ++ [ Matthias Klose ] ++ * Update patches for GCC 4.8. ++ * Update debian/copyright for libatomic, libbacktrace, libsanitizer. ++ * Remove the soversion from the libstdc++*-dev packages. ++ * Build libatomic and libasan packages. ++ * Install the static libbacktrace library and header files. ++ * Update build-indep dependencies for building the libstdc++ docs. ++ * Fix build failure in libatomic with x32 multilibs, handle -mx32 like -m64. ++ * Apply proposed fix for PR fortran/55395, supposed to fix the build ++ failure on armhf and powerpc. ++ * For hardened builds, disable gcc-default-format-security for now, causing ++ build failure building the target libstdc++ library. ++ * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. ++ * Fix gnat build failure on kfreebsd. ++ * Rename the gccgo info to gccgo-4.8 on installation. ++ * Install the libitm documentation (if built). ++ * Rename the gccgo info to gccgo-4.8 on installation, install into gccgo-4.8. ++ * Include libquadmath documentation in the gcc-4.8-doc package. ++ * Build libtsan packages. ++ * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. ++ * For stage1 builds, include gcc_lib_dir files in the gcc package. ++ * Point to gcc's README.Bugs when building gcj packages. Addresses: #623987. ++ ++ [ Thibaut Girka ] ++ * Fix libstdc++ multiarch include path for cross builds. ++ ++ -- Matthias Klose Sun, 28 Nov 2012 12:55:27 +0100 ++ ++gcc-4.7 (4.7.2-12) experimental; urgency=low ++ ++ * Update to SVN 20121127 (r193840) from the gcc-4_7-branch. ++ - Fix PR middle-end/55331 (ice on valid), PR tree-optimization/54976 (ice ++ on valid), PR tree-optimization/54894 (ice on valid), ++ PR middle-end/54735 (ice on valid), PR c++/55446 (wrong code), ++ PR fortran/55314 (rejects valid). ++ ++ [ Matthias Klose ] ++ * Fix x32 multiarch name (x86_64-linux-gnux32). ++ * gcc-4.7-base: Add break to gcc-4.4-base (<< 4.4.7). Closes: #690172. ++ * Add weak __aeabi symbols to the libgcc1 ARM symbol files. Closes: #677139. ++ * For stage1 builds, include gcc_lib_dir files in the gcc package. ++ ++ [ Thibaut Girka ] ++ * Fix libstdc++ multiarch include path for cross builds. ++ ++ -- Matthias Klose Tue, 27 Nov 2012 11:02:10 +0100 ++ ++gcc-4.7 (4.7.2-11) experimental; urgency=low ++ ++ * Update to SVN 20121124 (r193776) from the gcc-4_7-branch. ++ - Fix PR libgomp/55411, PR libstdc++/55413, PR middle-end/55142, ++ PR fortran/55352. ++ ++ * Update build-indep dependencies for building the libstdc++ docs. ++ * Drop the gcc-no-add-needed patch, depend on binutils 2.22 instead. ++ * Pass --hash-style=gnu instead of --hash-style=both. ++ * Link using --hash-style=gnu on arm64 by default. ++ * Split multiarch patches into local and upstreamed parts. ++ * Fix PR54974: Thumb literal pools don't handle PC rounding (Matthew ++ Gretton-Dann). LP: #1049614, #1065509. ++ * Rename the gccgo info to gccgo-4.7 on installation, install into gccgo-4.7. ++ * Include libquadmath documentation in the gcc-4.7-doc package. ++ * Don't pretend to understand .d files, no D frontend available for 4.7. ++ * Fix the multiarch c++ include path for multilib'd targets. LP: #1082344. ++ * Make explicit --{en,dis}able-multiarch options effecitive (Thorsten Glaser). ++ ++ -- Matthias Klose Sat, 24 Nov 2012 03:57:00 +0100 ++ ++gcc-4.7 (4.7.2-10) experimental; urgency=low ++ ++ * Update to SVN 20121118 (r193598) from the gcc-4_7-branch. ++ - Fix PR target/54892 (ARM, LP: #1065122), PR rtl-optimization/54870, ++ PR rtl-optimization/53701, PR target/53975 (ia64), ++ PR tree-optimization/54902 (LP: #1065559), PR middle-end/54945, ++ PR target/55019 (ARM), PR c++/54984, PR target/55175, ++ PR tree-optimization/53708, PR tree-optimization/54985, ++ PR libstdc++/55169, PR libstdc++/55047, PR libstdc++/55123, ++ PR libstdc++/54075, PR libstdc++/28811, PR libstdc++/54482, ++ PR libstdc++/55028, PR libstdc++/55215, PR middle-end/55219, ++ PR tree-optimization/54986, PR target/55204, PR debug/54828, ++ PR tree-optimization/54877, PR c++/54988, PR other/52438, ++ PR fortran/54917, PR libstdc++/55320, PR libstdc++/53841. ++ ++ [ Matthias Klose ] ++ * Update the Linaro support to the 4.7-2012.11 release. ++ * Define MULTIARCH_DIRNAME for arm64 (Wookey). ++ * Let the lib*objc-dev packages depend on the lib*gcc-dev packages. ++ * Let the libstdc++-dev package depend on the libgcc-dev package. ++ * Drop the dependency of the libstdc++-dev package on g++, make ++ libstdc++-dev and libstdc++-pic Multi-Arch: same. Closes: #678623. ++ * Install override files before calling dh_fixperms. ++ * Backport the libffi arm64 port. ++ * Build libx32gcc-dev, libx32objc-dev and libx32gfortran-dev packages. ++ * Allow conditional building of the x32 multilibs. ++ * Fix libmudflap build failure for x32 multilibs. ++ * Fix dependency on glibc for triarch builds. ++ * Add build-{arch,indep} targets. ++ * Fix libquadmath x32 multilib builds on kernels which don't support x32. ++ * Fix location of x32 specific C++ header files. ++ * Turn on -D_FORTIFY_SOURCE=2 by default for C, C++, ObjC, ObjC++, ++ only if the optimization level is > 0. ++ * Keep the host alias when building multilib libraries which need to ++ be cross-built on some architectures/buildds. ++ * Update arm64 from the aarch64 branch 20121105. ++ * Fix PR other/54411, libiberty: objalloc_alloc integer overflows ++ (CVE-2012-3509). ++ * Use /usr/include//c++/4.x as the include directory ++ for host dependent c++ header files. ++ * Add alternative libelf-dev build dependency. Closes: #690952. ++ * Always build the aarch64-linux-gnu target from the Linaro branch. ++ * Add __gnu_* symbols to the libgcc1 symbols file for armel and armhf. ++ * For powerpcspe prevent floating point register handling when there ++ are none available (Roland Stigge). Closes: #693328. ++ * Don't apply hurd-pthread.diff for trunk builds, integrated ++ upstream (Samuel Thibault). Addresses: #692538. ++ * Again, suggest graphite runtime dependencies. ++ * Clean up libstdc++ man pages. Closes: #692445. ++ ++ [ Thibaut Girka ] ++ * Split out lib*gcc-dev packages. ++ * Split out lib*objc-dev packages. ++ * Split out lib*gfortran-dev packages. ++ ++ [ Daniel Schepler ] ++ * Add support for x32. Closes: #667005. ++ * New patch hjl-x32-gcc-4_7-branch.diff to incorporate changes from ++ that branch, including --with-abi=mx32 option. ++ * Split out lib*stdc++-dev packages. ++ ++ [ Marcin Juszkiewicz ] ++ * lib*-dev packages for cross builds are not Multi-Arch: same. LP: #1070694. ++ * Remove conflicts for armhf/armel cross packages. ++ ++ -- Matthias Klose Sun, 18 Nov 2012 17:54:15 +0100 ++ ++gcc-4.7 (4.7.2-4) unstable; urgency=low ++ ++ * Fix PR c++/54858 (ice on valid), taken from the branch. ++ * Build again Go on armel and armhf. ++ ++ -- Matthias Klose Tue, 09 Oct 2012 12:00:59 +0200 ++ ++gcc-4.7 (4.7.2-3) unstable; urgency=low ++ ++ * Revert the fix PR c/33763, and just disable the sorry message, ++ taken from the branch. Closes: #678589. LP: #1062343. ++ * Update libgo to 1.0.3. ++ * Go fixes: ++ - Fix a, b, c := b, a, 1 when a and b already exist. ++ - Fix some type reflection strings. ++ - Fix parse of (<- chan <- chan <- int)(x). ++ - Fix handling of omitted expression in switch. ++ - Better error for switch on non-comparable type. ++ * Fix PR debug/53135 (ice on valid), PR target/54703 (x86, wrong code), ++ PR c++/54777 (c++11, rejects valid), taken from the 4.7 branch. ++ * gcc-4.7-base: ensure smooth upgrades from squeeze by adding ++ Breaks: gcj-4.4-base (<< 4.4.6-9~), gnat-4.4-base (<< 4.4.6-3~) ++ as in gcc-4.4-base (multiarch patches re-worked in 4.6.1-8/4.4.6-9). ++ Fixes some squeeze->wheezy upgrade paths where apt chooses to hold back ++ gcc-4.4-base and keep gcj-4.4-base installed instead of upgrading ++ gcc-4.4-base and removing the obsolete gcj-4.4-base (Andreas Beckmann). ++ Closes: #677582. ++ * Add arm64 support, partly based on Wookey's patches (only applied for ++ arm64). Disabled for arm64 are ssp, gomp, mudflap, boehm-gc, Ada, ObjC, ++ Obj-C++ and Java). ++ ++ -- Matthias Klose Fri, 05 Oct 2012 20:00:30 +0200 ++ ++gcc-4.7 (4.7.2-2) unstable; urgency=low ++ ++ * Fix PR tree-optimization/54563 (ice on valid), PR target/54564 (fma builtin ++ fix), PR c/54552 (ice on valid), PR lto/54312 (memory hog), PR c/54103 (ice ++ on valid), PR middle-end/54638 (memory corruption), taken from the 4.7 ++ branch. ++ * Go fixes, taken from the 4.7 branch. ++ * On ARM, don't warn anymore that 4.4 has changed the `va_list' mangling, ++ taken from the trunk. ++ * Mention the NEWS changes for all uploads. Closes: #688278. ++ ++ -- Matthias Klose Fri, 21 Sep 2012 11:58:10 +0200 ++ ++gcc-4.7 (4.7.2-1) unstable; urgency=low ++ ++ * GCC 4.7.2 release. ++ * Issues addressed after the release candidate: ++ - PR c++/53661 (wrong warning), LTO backport from trunk, documentation fix. ++ * Update NEWS files. ++ ++ -- Matthias Klose Thu, 20 Sep 2012 12:19:07 +0200 ++ ++gcc-4.7 (4.7.1-9) unstable; urgency=low ++ ++ * GCC 4.7.2 release candidate 1. ++ * Update to SVN 20120914 (r191306) from the gcc-4_7-branch. ++ - Fix PR libstdc++/54388, PR libstdc++/54172, PR libstdc++/54172, ++ PR debug/54534, PR target/54536 (AVR), PR middle-end/54515 (ice on valid), ++ PR c++/54506 (rejects valid), PR c++/54341 (ice on valid), ++ PR c++/54253 (ice on valid), PR c/54559 (closes: #687496), ++ PR gcov-profile/54487, PR c++/53839, PR c++/54511, PR c++/53836, ++ PR fortran/54556. ++ * Update the Linaro support to the 4.7-2012.09 release. ++ - Adds support for the NEON vext instruction when shuffling. ++ - Backports improvements to scheduling transfers between VFP and core ++ registers. ++ - Backports support for the UBFX instruction on certain bit extract idioms. ++ ++ -- Matthias Klose Fri, 14 Sep 2012 19:12:47 +0200 ++ ++gcc-4.7 (4.7.1-8) unstable; urgency=low ++ ++ * Update to SVN 20120908 (r191092) from the gcc-4_7-branch. ++ - Fix PR libstdc++/54376, PR libstdc++/54297, PR libstdc++/54351, ++ PR libstdc++/54297, PR target/54461 (AVR), PR target/54476 (AVR), ++ PR target/54220 (AVR), PR fortran/54208 (rejects valid), ++ PR middle-end/53667 (wrong code), PR target/54252 (ARM, wrong code), ++ PR rtl-optimization/54455 (ice on valid), PR driver/54335 (docs), ++ PR tree-optimization/54498 (wrong code), PR target/45070 (wrong code), ++ PR tree-optimization/54494 (wrong code), PR target/54436 (x86), ++ PR c/54428 (ice on valid), PR c/54363 (ice on valid, closes: #684635), ++ PR rtl-optimization/54369 (mips, sparc, wrong code), PR middle-end/54146, ++ PR target/46254 (ice on valid), PR rtl-optimization/54088 (ice on valid), ++ PR target/54212 (ARM, wrong code), PR c++/54197 (wrong code), ++ PR lto/53572, PR tree-optimization/53922 (wrong code). ++ - Go fixes. ++ ++ [ Nobuhiro Iwamatsu ] ++ * Remove sh4-enable-ieee.diff, -mieee enabled by default. Closes: #685975. ++ ++ [ Matthias Klose ] ++ * Fix PR c++/54341, PR c++/54253, taken from the trunk. Closes: #685430. ++ * Update libitm package description. Closes: #686802. ++ ++ -- Matthias Klose Fri, 07 Sep 2012 22:16:55 +0200 ++ ++gcc-4.7 (4.7.1-7) unstable; urgency=low ++ ++ * Update to SVN 20120814 (r190380) from the gcc-4_7-branch. ++ - Fix PR libstdc++/54036, PR target/53961 (x86), PR libstdc++/54185, ++ PR rtl-optimization/53942, PR rtl-optimization/54157. ++ ++ [ Thibaut Girka ] ++ * Fix cross compilers for 64bit architectures when using ++ DEB_CROSS_NO_BIARCH. ++ * Fix glibc dependency for multiarch enabled builds for architectures ++ with a different libc-dev package name. ++ ++ [ Aurelien Jarno ] ++ * powerpc64: Fix non-multilib builds. ++ ++ [ Matthias Klose ] ++ * Fix syntax error generating the control file for cross builds. ++ Closes: #682104. ++ * spu build: Move static libraries to version specific directories. ++ Closes: #680022. ++ * Don't run the libstdc++ tests on mipsel, times out on the buildds. ++ * Update the Linaro support to the 4.7-2012.08 release. ++ ++ -- Matthias Klose Tue, 14 Aug 2012 13:58:03 +0200 ++ ++gcc-4.7 (4.7.1-6) unstable; urgency=low ++ ++ * Update to SVN 20120731 (r190015) from the gcc-4_7-branch. ++ - Fix PR libstdc++/54075, PR libstdc++/53270, PR libstdc++/53978, ++ PR target/33135 (SH), PR target/53877 (x86), PR rtl-optimization/52250, ++ PR middle-end/54017, PR target/54029, PR target/53961 (x86), ++ PR target/53110 (x86), PR rtl-optimization/53908, PR c++/54038, ++ PR c++/54026, PR c++/53995, PR c++/53989, PR c++/53549 (closes: #680931), ++ PR c++/53953. ++ ++ -- Matthias Klose Tue, 31 Jul 2012 20:00:56 +0200 ++ ++gcc-4.7 (4.7.1-5) unstable; urgency=high ++ ++ * Update to SVN 20120713 (r189464) from the gcc-4_7-branch. ++ - Fix PR libstdc++/53657, PR c++/53733 (DR 1402), PR target/53811, ++ PR target/53853. ++ ++ -- Matthias Klose Fri, 13 Jul 2012 16:59:59 +0200 ++ ++gcc-4.7 (4.7.1-4) unstable; urgency=medium ++ ++ * Update to SVN 20120709 (r189388) from the gcc-4_7-branch. ++ - Fix PR libstdc++/53872, PR libstdc++/53830, PR bootstrap/52947, ++ PR middle-end/52786, PR middle-end/50708, PR tree-optimization/53693, ++ PR middle-end/52621, PR middle-end/53433, PR fortran/53732, ++ PR libstdc++/53578, PR c++/53882 (closes: #680521), PR c++/53826. ++ * Update the Linaro support to the 4.7-2012.07 release. ++ * Fix build on pre-multiarch releases (based on a patch from Chip Salzenberg). ++ Closes: #680590. ++ ++ -- Matthias Klose Mon, 09 Jul 2012 18:58:47 +0200 ++ ++gcc-4.7 (4.7.1-3) unstable; urgency=low ++ ++ * Update to SVN 20120703 (r189219) from the gcc-4_7-branch. ++ - Fix PR preprocessor/37215, PR middle-end/38474, PR target/53595 (AVR), ++ PR middle-end/53790, PR debug/53682, PR target/53759 (x86), ++ PR c++/53816, PR c++/53821, PR c++/51214, PR c++/53498, PR c++/53305, ++ PR c++/52988 (wrong code), PR c++/53202 (wrong code), PR c++/53594. ++ - The change for PR libstdc++/49561 was reverted. The std::list size is ++ now the same again in c++98 and c++11 mode. ++ * Revert the local std::list work around. ++ * Build using isl instead of ppl for snapshot builds. ++ ++ -- Matthias Klose Tue, 03 Jul 2012 15:07:14 +0200 ++ ++gcc-4.7 (4.7.1-2) unstable; urgency=medium ++ ++ * Update to SVN 20120623 (r188906) from the gcc-4_7-branch. ++ - Fix PR rtl-optimization/53700 (closes: #677678), PR target/52908, ++ PR libstdc++/53270, PR libstdc++/53678, PR gcov-profile/53744, ++ PR c++/52637, PR middle-end/53470, PR c++/53651, PR c++/53137, ++ PR c++/53599, PR fortran/53691, PR fortran/53685, PR ada/53592. ++ * Update NEWS files for 4.7.1. ++ * Bump gcc/FULL-VERSION to 4.7.1. ++ * Update the Linaro support to the 4.7-2012.06 release. ++ * Restore std::list ABI compatibility in c++11 mode. The upstream behaviour ++ can be enabled defining __CXX0X_STD_LIST_ABI_INCOMPAT__. This work around ++ will be replaced with an upstream solution. ++ * Fix PR debug/53682, taken from the trunk. Closes: #677606. ++ * Use $(with_gccbase) and $(with_gccxbase) to determine whether to enable it ++ in the control file (Thibaut Girka). ++ * When building a cross-compiler, runtime libraries for the target ++ architecture may be cross-built. Tell debhelper/dpkg-dev those packages ++ are indeed for a foreign architecture (Thibaut Girka). ++ ++ -- Matthias Klose Sat, 23 Jun 2012 11:58:35 +0200 ++ ++gcc-4.7 (4.7.1-1) unstable; urgency=low ++ ++ * GCC 4.7.1 release. ++ ++ -- Matthias Klose Fri, 15 Jun 2012 00:38:27 +0200 ++ ++gcc-4.7 (4.7.0-13) unstable; urgency=low ++ ++ * Update to SVN 20120612 (r188457) from the gcc-4_7-branch. ++ - Fix PR c++/53602 (LP: #1007616). ++ ++ * Document the changed ssp-buffer-size default in Ubuntu 10.10 and ++ later (Kees Cook). LP: #990141. ++ * Fix PR c++/26155, ICE after error with namespace alias. LP: #321883. ++ * Fix PR c++/53599 (reverting the fix for PR c++/53137). ++ Closes: #676729. LP: #1010896. ++ * Fix manual page names for cross builds (Thibaut Girka). Closes: #675516. ++ * Remove dpkg-cross build dependency for cross builds (Thibaut Girka). ++ Closes: #675511. ++ ++ -- Matthias Klose Tue, 12 Jun 2012 15:47:57 +0200 ++ ++gcc-4.7 (4.7.0-12) unstable; urgency=low ++ ++ * Update to SVN 20120606 (r188261) from the gcc-4_7-branch (release ++ candidate 1 or 4.7.1). ++ - Fix PR libstdc++/52007, PR c++/53524, PR target/53559, ++ PR middle-end/47530, PR middle-end/53471, PR middle-end/52979, ++ PR target/46261, PR tree-optimization/53550, PR middle-end/52080, ++ PR middle-end/52097, PR middle-end/48124, PR middle-end/53501, ++ PR target/52667, PR target/52642, PR middle-end/48493, PR c++/53524, ++ PR c++/52973, PR c++/52725, PR c++/53137, PR c++/53484, PR c++/53500, ++ PR c++/52905, PR fortran/53521. ++ - Go and libgo updates. ++ * Include README.Debian in README.Debian.. ++ * Fix PR c/33763, proposed patch from the issue. Closes: #672411. ++ * Fix build failure in libgo with hardening defaults. ++ ++ -- Matthias Klose Wed, 06 Jun 2012 13:22:27 +0200 ++ ++gcc-4.7 (4.7.0-11) unstable; urgency=low ++ ++ * Update to SVN 20120530 (r188035) from the gcc-4_7-branch. ++ - Fix PR c++/53356, PR c++/53491, PR c++/53503, PR c++/53220, ++ PR middle-end/53501, PR rtl-optimization/53519, ++ PR tree-optimization/53516, PR tree-optimization/53438, ++ PR target/52999, PR middle-end/53008. ++ ++ [ Matthias Klose ] ++ * Build-depend on netbase when building Go. Closes: #674306. ++ ++ [ Marcin Juszkiewicz ] ++ * Use the multiarch default for staged builds. ++ ++ -- Matthias Klose Thu, 31 May 2012 08:25:08 +0800 ++ ++gcc-4.7 (4.7.0-10) unstable; urgency=low ++ ++ * Update to SVN 20120528 (r187927) from the gcc-4_7-branch. ++ - Fix PR rtl-optimization/52528, PR lto/52178, PR target/53435, ++ PR ada/52362, PR target/53385, PR middle-end/53460, ++ PR tree-optimization/53465, PR target/53448, PR tree-optimization/53408, ++ PR ada/52362, PR fortran/53389. ++ * Fix warning building libiberty/md5.c. PR other/53285. Closes: #674830. ++ ++ -- Matthias Klose Mon, 28 May 2012 11:30:36 +0800 ++ ++gcc-4.7 (4.7.0-9) unstable; urgency=low ++ ++ * Update to SVN 20120522 (r187756) from the gcc-4_7-branch. ++ - Fix PR bootstrap/53183, PR tree-optimization/53436, ++ PR tree-optimization/53366, PR tree-optimization/53409, ++ PR tree-optimization/53410, PR c/53418, PR target/53416, ++ PR middle-end/52584, PR debug/52727, PR tree-optimization/53364, ++ PR target/53358, PR rtl-optimization/52804, PR target/46098, ++ PR target/53256, PR c++/53209, PR c++/53301, PR ada/52494, ++ PR fortran/53310 ++ * Update the Linaro support to the 4.7-2012.05 release. ++ ++ -- Matthias Klose Tue, 22 May 2012 13:01:33 +0800 ++ ++gcc-4.7 (4.7.0-8) unstable; urgency=low ++ ++ * Update to SVN 20120509 (r187339) from the gcc-4_7-branch. ++ - Fix PR libstdc++/53193, PR target/53272, PR tree-optimization/53239, ++ PR tree-optimization/53195, PR target/52999, PR target/53228, ++ PR tree-optimization/52633, PR tree-optimization/52870, PR target/48496, ++ PR target/53199, PR target/52684, PR lto/52605, PR plugins/53126, ++ PR debug/53174, PR target/53187, PR tree-optimization/53144, ++ PR c++/53186, PR fortran/53255, PR fortran/53111, PR fortran/52864. ++ - Fix plugin check in gcc-{ar,nm,ranlib}-4.7. ++ * Install man pages for gcc-{ar,nm,ranlib}-4.7. ++ ++ -- Matthias Klose Mon, 07 May 2012 21:56:42 +0200 ++ ++gcc-4.7 (4.7.0-7) unstable; urgency=low ++ ++ * Update to SVN 20120502 (r187039) from the gcc-4_7-branch. ++ - Fix PR libstdc++/53115, PR tree-optimization/53163, ++ PR rtl-optimization/53160, PR middle-end/53136, PR fortran/53148. ++ - libgo fix for mips. ++ * Fix setting MULTILIB_DEFAULTS for ARM multilib builds. ++ * Build Go on mips. ++ * Revert: Don't build multilib gnat on armel and armhf. ++ * Fix multiarch patch for alpha (Michael Cree). Closes: #670571. ++ * Fix Go multilib packaging issue for mips and mipsel. ++ ++ -- Matthias Klose Wed, 02 May 2012 12:42:01 +0200 ++ ++gcc-4.7 (4.7.0-6) unstable; urgency=low ++ ++ * Update to SVN 20120430 (r186964) from the gcc-4_7-branch. ++ - Fix PR target/53138. ++ * Build Go on ARM. ++ * Treat wheezy the same as sid in more places (Peter Green). ++ Addresses: #670821. ++ ++ -- Matthias Klose Mon, 30 Apr 2012 13:06:21 +0200 ++ ++gcc-4.7 (4.7.0-5) unstable; urgency=medium ++ ++ * Update to SVN 20120428 (r186932) from the gcc-4_7-branch. ++ - Fix PR c/52880, PR target/53065, PR tree-optimization/53085, ++ PR c/51527, PR target/53120. ++ ++ [ Matthias Klose ] ++ * Don't build multilib gnat on armel and armhf. ++ * Don't try to run the libstdc++ testsuite if the C++ frontend isn't built. ++ * Install the unwind-arm-common.h header file. ++ * Fix ARM biarch package builds. ++ ++ [ Aurelien Jarno ] ++ * Reenable parallel builds on GNU/kFreeBSD. ++ * Fix libgcc building on MIPS N32/64. Closes: #669858. ++ * Add libn32gcc1 and lib64gcc1 symbols files on mips and mipsel. ++ ++ -- Matthias Klose Sat, 28 Apr 2012 11:59:36 +0200 ++ ++gcc-4.7 (4.7.0-4) unstable; urgency=low ++ ++ * Update to SVN 20120424 (r186746) from the gcc-4_7-branch. ++ - Fix PR libstdc++/52924, PR libstdc++/52591, PR middle-end/52894, ++ PR testsuite/53046, PR libstdc++/53067, PR libstdc++/53027, ++ PR libstdc++/52839, PR bootstrap/52840, PR libstdc++/52689, ++ PR libstdc++/52699, PR libstdc++/52822, PR libstdc++/52942, ++ PR middle-end/53084, PR middle-end/52999, PR c/53060, ++ PR tree-optimizations/52891, PR target/53033, PR target/53020, ++ PR target/52932, PR middle-end/52939, PR tree-optimization/52969, ++ PR c/52862, PR target/52775, PR tree-optimization/52943, PR c++/53003, ++ PR c++/38543, PR c++/50830, PR c++/50303, PR c++/52292, PR c++/52380, ++ PR c++/52465, PR c++/52824, PR c++/52906. ++ ++ [ Matthias Klose ] ++ * Update the Linaro support to the 4.7-2012.04 release. ++ * Set the ARM hard-float linker path according to the consensus: ++ http://lists.linaro.org/pipermail/cross-distro/2012-April/000261.html ++ * Reenable the spu build on ppc64. Closes: #668272. ++ * Update and reenable the gcc-cloog-dl patch. ++ ++ [ Samuel Thibault ] ++ * ada-s-osinte-gnu.adb.diff, ada-s-osinte-gnu.ads.diff, ++ ada-s-taprop-gnu.adb.diff, gcc_ada_gcc-interface_Makefile.in.diff: ++ Add ada support for GNU/Hurd, thanks Svante Signell for the patches ++ and bootstrap! (Closes: #668426). ++ ++ -- Matthias Klose Tue, 24 Apr 2012 08:44:15 +0200 ++ ++gcc-4.7 (4.7.0-3) unstable; urgency=low ++ ++ * Update to SVN 20120409 (r186249) from the gcc-4_7-branch. ++ - Fix PR libitm/52854, PR libstdc++/52476, PR target/52717, ++ PR tree-optimization/52406, PR c++/52596, PR c++/52796, ++ PR fortran/52893, PR fortran/52668. ++ ++ [ Matthias Klose ] ++ * Re-add missing dependency on libgcc in gcc-multilib. Closes: #667519. ++ * Add support for GNU locales for GNU/Hurd (Svante Signell). ++ Closes: #667662. ++ * Reenable the spu build on ppc64. Closes: #664617. ++ * Apply proposed patch for PR52894, stage1 bootstrap failure on hppa ++ (John David Anglin). Closes: #667969. ++ ++ [ Nobuhiro Iwamatsu ] ++ * Fix cross build targeting sh4. Closes: #663028. ++ * Enable -mieee by default on sh4. Closes: #665328. ++ ++ -- Matthias Klose Mon, 09 Apr 2012 22:24:14 +0200 ++ ++gcc-4.7 (4.7.0-2) unstable; urgency=low ++ ++ * Update to SVN 20120403 (r186107) from the gcc-4_7-branch. ++ - Fix PR middle-end/52547, PR libstdc++/52540, PR libstdc++/52433, ++ PR target/52507, PR target/52505, PR target/52461, PR target/52508, ++ PR c/52682, PR target/52610, PR middle-end/52640, PR target/50310, ++ PR target/48596, PR target/48806, PR middle-end/52547, R target/52496, ++ PR rtl-optimization/52543, PR target/52461, PR target/52488, ++ PR target/52499, PR target/52148, PR target/52496, PR target/52484, ++ PR target/52506, PR target/52505, PR target/52461, PR other/52545, ++ PR c/52577, PR c++/52487, PR c++/52671, PR c++/52582, PR c++/52521, ++ PR fortran/52452, PR target/52737, PR target/52698, PR middle-end/52693, ++ PR middle-end/52691, PR middle-end/52750, PR target/52692, ++ PR middle-end/51893, PR target/52737, PR target/52736, PR middle-end/52720, ++ PR c++/52672, PR c++/52718, PR c++/52685, PR c++/52759, PR c++/52743, ++ PR c++/52746, PR libstdc++/52799, PR libgfortran/52758, ++ PR middle-end/52580, PR middle-end/52493, PR tree-optimization/52678, ++ PR tree-optimization/52701, PR tree-optimization/52754, ++ PR tree-optimization/52835. ++ ++ [ Matthias Klose ] ++ * Update NEWS files for 4.7. ++ * Include -print-multiarch option in gcc --help output. Closes: #656998. ++ * Don't build Go on MIPS. ++ * Update alpha-ieee.diff for 4.7. ++ * Update gcc-multiarch.diff for sh4 (untested). Closes: #665935. ++ * Update gcc-multiarch.diff for hppa (untested). Closes: #666162. ++ * Re-add build dependency on doxygen. ++ ++ [ Samuel Thibault ] ++ * debian/patches/ada-bug564232.diff: Enable on hurd too. ++ * debian/patches/ada-libgnatprj.diff: Add hurd configuration. ++ ++ -- Matthias Klose Tue, 03 Apr 2012 16:30:58 +0200 ++ ++gcc-4.7 (4.7.0-1) unstable; urgency=low ++ ++ * GCC 4.7.0 release. ++ ++ -- Matthias Klose Fri, 23 Mar 2012 05:44:37 +0100 ++ ++gcc-4.7 (4.7.0~rc2-1) experimental; urgency=low ++ ++ * GCC-4.7 release candidate 2 (r185376). ++ * libgo: Work around parse error of struct timex_ on ARM. ++ * Update libstdc++6 symbols files. ++ * Allow building Go from a separate source package. ++ * Don't configure with --enable-gnu-unique-object on kfreebsd and hurd. ++ * Include -print-multiarch option in gcc --help output. Closes: #656998. ++ * Disable Go on mips* (PR go/52586). ++ ++ -- Matthias Klose Wed, 14 Mar 2012 15:49:39 +0100 ++ ++gcc-4.7 (4.7.0~rc1-2) experimental; urgency=low ++ ++ * Update to SVN 20120310 (r185183) from the gcc-4_6-branch. ++ * Always configure with --enable-gnu-unique-object. LP: #949805. ++ * Enable Go for ARM on releases with working getcontext/setcontext. ++ ++ -- Matthias Klose Sat, 10 Mar 2012 23:29:45 +0100 ++ ++gcc-4.7 (4.7.0~rc1-1) experimental; urgency=low ++ ++ * GCC-4.7 release candidate 1 (r184777). ++ ++ [ Marcin Juszkiewicz ] ++ * Fix ARM sf/hf multilib dpkg-shlibdeps dependency generation. ++ ++ [ Matthias Klose ] ++ * PR go/52218, don't build Go on ARM, getcontext/setcontext exists, ++ but return ENOSYS. ++ * Fix multiarch build on ia64. ++ * Fix path calculation for the libstdc++ -gdb.py file when installed into ++ multiarch locations. Closes: #661385. LP: #908163. ++ * Disable Go on sparc (libgo getcontext/setcontext check failing). ++ ++ [ Thorsten Glaser ] ++ * Apply patch from Alan Hourihane to fix err_bad_abi testcase on m68k. ++ ++ [ Jonathan Nieder ] ++ * libstdc++6: Depends on libc (>= 2.11) for STB_GNU_UNIQUE support ++ (Eugene V. Lyubimkin). Closes: #584572. ++ * libstdc++6, libobjc2, libgfortran3, libmudflap0, libgomp1: Breaks ++ pre-multiarch gcc. Closes: #651550. ++ * libstdc++6: Lower priority from required to important. Closes: #661118. ++ ++ [Samuel Thibault] ++ * Remove local patch, integrated upstream. Closes: ##661859. ++ ++ -- Matthias Klose Fri, 02 Mar 2012 18:42:56 +0100 ++ ++gcc-4.7 (4.7-20120210-1) experimental; urgency=low ++ ++ * GCC-4.7 snapshot build, taken from the trunk 20120210 (r184114). ++ * kbsd-gnu.diff: Remove, integrated upstream. ++ * Strip whitespace from with_libssp definition. Closes: #653255. ++ * Remove soft-float symbols from 64bit powerpc libgcc1 symbols files. ++ * Fix control file generation for cross packages. LP: #913734. ++ ++ -- Matthias Klose Fri, 10 Feb 2012 21:38:12 +0100 ++ ++gcc-4.7 (4.7-20120205-1) experimental; urgency=low ++ ++ * GCC-4.7 snapshot build, taken from the trunk 20120205 (r183903). ++ * Enable Go on arm*, ia64, mips*, powerpc, s390*, sparc*. ++ * libgo: Fix ioctl macro extracton. ++ * Fix PR middle-end/52074, ICE in libgo on powerpc. ++ * Revert: * Install static libc++{98,11} libraries. ++ * Don't strip a `/' sysroot from the C++ include directories. ++ Closes: #658442. ++ ++ -- Matthias Klose Sun, 05 Feb 2012 09:16:03 +0100 ++ ++gcc-4.7 (4.7-20120129-1) experimental; urgency=low ++ ++ * GCC-4.7 snapshot build, taken from the trunk 20120129 (r183674). ++ * Configure --with-sysroot for wheezy and sid. ++ * Install static libc++{98,11} libraries. ++ * Install libstdc++ gdb.py file into /usr/lib/debug. ++ * Just copy libstdc++convenience.a for the libstdc++_pic installation. ++ * Remove trailing dir separator from system root. ++ ++ -- Matthias Klose Sun, 29 Jan 2012 08:19:27 +0100 ++ ++gcc-4.7 (4.7-20120121-1) experimental; urgency=low ++ ++ * GCC-4.7 snapshot build, taken from the trunk 20120121 (r183370). ++ ++ [ Matthias Klose ] ++ * Fix C++ include paths when configured --with-system-root. ++ ++ [ Marcin Juszkiewicz ] ++ * Fix control file generation for ARM multiarch cross builds. ++ ++ -- Matthias Klose Sat, 21 Jan 2012 20:24:29 +0100 ++ ++gcc-4.7 (4.7-20120107-1) experimental; urgency=low ++ ++ * GCC-4.7 snapshot build, taken from the trunk 20120107 (r182981). ++ ++ * On armel/armhf, allow g*-multilib installation using the runtime ++ libraries of the corresponding multiarch architecture. ++ * Fix location of .jinfo files. Addresses: #654579. ++ * Replace Fortran 95 with Fortran in package descriptions. ++ ++ -- Matthias Klose Sat, 07 Jan 2012 21:24:56 +0100 ++ ++gcc-4.7 (4.7-20111231-1) experimental; urgency=low ++ ++ * GCC-4.7 snapshot build, taken from the trunk 20111231 (r182754). ++ ++ [ Aurelien Jarno ] ++ * Re-enable parallel builds on kfreebsd-i386, as the problem from bug ++ #637236 only affects kfreebsd-amd64. ++ ++ [ Matthias Klose ] ++ * Fix generating libphobos dependency for gdc. Addresses: #653078. ++ * Link libmudflapth.so with -lpthread. ++ ++ -- Matthias Klose Sat, 31 Dec 2011 09:42:13 +0100 ++ ++gcc-4.7 (4.7-20111222-1) experimental; urgency=low ++ ++ * Update to SVN 20111222 (r182617) from the trunk. ++ ++ [Matthias Klose] ++ * Remove obsolete ARM patch. ++ * Install loongson.h header. ++ * Update libgcc and libstdc++ symbols files. ++ ++ [Samuel Thibault] ++ * Update hurd patch for 4.7, fixing build failure. Closes: #652693. ++ ++ [Robert Millan] ++ * Update kbsd-gnu.diff for the trunk. ++ ++ -- Matthias Klose Thu, 22 Dec 2011 10:52:01 +0100 ++ ++gcc-4.7 (4.7-20111217-2) experimental; urgency=low ++ ++ * Don't provide 4.6.x symlinks. ++ * Disable multilib for armhf. ++ * Fix spu installation. ++ ++ -- Matthias Klose Sun, 18 Dec 2011 17:22:10 +0100 ++ ++gcc-4.7 (4.7-20111217-1) experimental; urgency=low ++ ++ * GCC-4.7 snapshot build. ++ - Including the GFDL documentation; will stay in experimental ++ until the 4.7.0 release sometime next year. ++ * Update patches for the trunk. ++ * Update symbols files. ++ * Build libitm packages. ++ ++ -- Matthias Klose Sat, 17 Dec 2011 23:19:46 +0100 ++ ++gcc-4.6 (4.6.2-9) unstable; urgency=medium ++ ++ * Update to SVN 20111217 (r182430) from the gcc-4_6-branch. ++ - Fix PR c++/51331. ++ * Fix build dependencies for armel/armhf. ++ ++ -- Matthias Klose Sat, 17 Dec 2011 10:40:26 +0100 ++ ++gcc-4.6 (4.6.2-8) unstable; urgency=low ++ ++ * Update to SVN 20111216 (r182407) from the gcc-4_6-branch. ++ - Fix PR tree-optimization/51485, PR tree-optimization/50569, PR c++/51248, ++ PR c++/51406, PR c++/51161, PR rtl-optimization/49720, PR fortran/50923, ++ PR fortran/51338, PR fortran/51550, PR fortran/47545, PR fortran/49050, ++ PR fortran/51075. ++ ++ [ Matthias Klose ] ++ * gdc-4.6: Provide -{gdc,gdmd}-4.6 symlinks. ++ ++ [Ludovic Brenta] ++ Merge from gnat-4.6 (4.6.2-2) unstable; urgency=low ++ [Євгеній Мещеряков] ++ * debian/patches/pr47818.diff: new. Fixes: #614402. ++ * debian/rules.patch: apply it. ++ ++ Merge from gnat-4.6 (4.6.2-1) unstable; urgency=low ++ [Ludovic Brenta] ++ * Suggest ada-reference-manual-{html,info,pdf,text} instead of just ++ ada-reference-manual which no longer exists. ++ * Do not suggest gnat-gdb, superseded by gdb. ++ * Downgrade libgnat{vsn,prj}4.6-dev to priority extra; they conflict ++ with their 4.4 counterparts and priority optional packages may not ++ conflict with one another, per Policy 2.5. ++ ++ -- Matthias Klose Fri, 16 Dec 2011 16:59:30 +0100 ++ ++gcc-4.6 (4.6.2-7) unstable; urgency=medium ++ ++ * Update to SVN 20111210 (r182189) from the gcc-4_6-branch. ++ - Fix PR rtl-optimization/51469, PR tree-optimization/51466, ++ PR tree-optimization/50078, PR target/51408, PR fortran/51310, ++ PR fortran/51448. ++ ++ -- Matthias Klose Sat, 10 Dec 2011 20:12:33 +0100 ++ ++gcc-4.6 (4.6.2-6) unstable; urgency=low ++ ++ * Update to SVN 20111208 (r182120) from the gcc-4_6-branch. ++ - Fix PR c++/51265, PR bootstrap/50888, PR target/51393 (ix86), ++ PR target/51002 (AVR), PR target/51345 (AVR), PR debug/48190, ++ PR fortran/50684, PR fortran/51218, PR target/50906 (closes: #650318), ++ PR tree-optimization/51315 (closes: #635126), PR tree-optimization/50622, ++ PR fortran/51435, PR debug/51410, PR c/51339, PR rtl-optimization/48721, ++ PR middle-end/51323 (LP: #897583), PR middle-end/50074, ++ PR middle-end/50074. ++ ++ [ Matthias Klose ] ++ * Run the libstdc++ testsuite on all architectures again. Closes: #622699. ++ * Apply proposed patch for PR target/50906 (powerpcspe only). Closes: #650318. ++ * Fix PR target/49030 (ARM), taken from Linaro. Closes: #633479. ++ * Fix PR target/50193 (ARM), taken from Linaro. Closes: #642127. ++ * Install the libstdc++.so-gdb.py file. LP: #883269. ++ * Fix PR c++/50114, backport from trunk. LP: #827806. ++ * Merge changes to allow gcc-snapshot cross builds, taken from Linaro. ++ * Update the Linaro support to the 4.6 branch. ++ ++ [ Marcin Juszkiewicz ] ++ * Fix issues with gcc-snapshot cross builds. ++ * Allow building Linaro binary packages in a single package. ++ * Apply hardening patches for cross builds when enabled for native builds. ++ ++ -- Matthias Klose Thu, 08 Dec 2011 17:14:35 +0100 ++ ++gcc-4.6 (4.6.2-5) unstable; urgency=low ++ ++ * Update to SVN 20111121 (r181596) from the gcc-4_6-branch. ++ - Fix PR c++/50870, PR c++/50608, PR target/47997, PR target/48108, ++ PR target/45233, PR middle-end/51077, PR target/30282, PR c++/50608, ++ PR target/50979, PR target/4810, PR rtl-optimization/51187, ++ PR target/50493, PR target/49992, PR target/49641, PR c++/51150, ++ PR target/50678, PR libstdc++/51142, PR libstdc++/51133. ++ ++ [ Matthias Klose ] ++ * Use the default gcc as stage1 compiler for all architectures. ++ ++ [ Marcin Juszkiewicz ] ++ * debian/control.m4: Use BASEDEP in more places. ++ * Work around debhelper not calling the correct strip for cross builds. ++ * Drop dpkg-cross build dependency for cross builds. ++ ++ -- Matthias Klose Mon, 21 Nov 2011 22:26:49 +0100 ++ ++gcc-4.6 (4.6.2-4) unstable; urgency=low ++ ++ * Update to SVN 20111103 (r180830) from the gcc-4_6-branch. ++ - Fix PR target/50691, PR c++/50901, PR target/50945, ++ PR rtl-optimization/47918, PR libstdc++/50880. ++ ++ * Configure the armel build by explicitly passing --with-arch=armv4t ++ --with-float=soft. ++ * libffi: Simplify PowerPC assembly and avoid CPU-specific string ++ instructions (Kyle Moffett). ++ * Fix MULTIARCH_DIRNAME on powerpcspe (Kyle Moffett). Closes: #647324. ++ ++ -- Matthias Klose Thu, 03 Nov 2011 12:03:41 -0400 ++ ++gcc-4.6 (4.6.2-3) unstable; urgency=low ++ ++ * disable parallel builds on kfreebsd-* even if DEB_BUILD_OPTIONS ++ enables them (continued investigation for #637236). ++ ++ -- Ludovic Brenta Sat, 29 Oct 2011 00:42:46 +0200 ++ ++gcc-4.6 (4.6.2-2) unstable; urgency=low ++ ++ * Update to SVN 20111028 (r180603) from the gcc-4_6-branch. ++ - Fix PR target/50875. ++ ++ * Fix gcj, gdc and gnat builds, broken by the stage1 cross-compiler ++ package dependency fixes. ++ * Update the Linaro support to the 4.6 branch. ++ * Fix gcc-4.6-hppa64 installation. Closes: #646805. ++ * For ARM hard float, set the dynamic linker to ++ /lib/arm-linux-gnueabihf/ld-linux.so.3. ++ * Don't use parallel builds on kfreebsd. ++ ++ -- Matthias Klose Fri, 28 Oct 2011 16:36:55 +0200 ++ ++gcc-4.6 (4.6.2-1) unstable; urgency=low ++ ++ * GCC 4.6.2 release. ++ ++ * Fix libgcc installation into /usr/lib/gcc//4.6. Closes: #645021. ++ * Fix stage1 cross-compiler package dependencies (Kyle Moffett). ++ Closes: #644439. ++ ++ -- Matthias Klose Wed, 26 Oct 2011 13:10:44 +0200 ++ ++gcc-4.6 (4.6.1-16) unstable; urgency=medium ++ ++ * Update to SVN 20111019 (r180208) from the gcc-4_6-branch. ++ - Fix PR target/49967 (ia64), PR tree-optimization/50189, PR fortran/50273, ++ PR tree-optimization/50700, PR c/50565 (closes: #642144), ++ PR target/49965 (sparc), PR middle-end/49801, PR c++/49216, ++ PR c++/49855, PR c++/49896, PR c++/44473, PR c++/50611, PR fortran/50659, ++ PR tree-optimization/50723, PR tree-optimization/50712, PR obj-c++/48275, ++ PR c++/50618, PR fortran/47023, PR fortran/50570, PR fortran/50718, ++ PR libobjc/49883, PR libobjc/50002, PR target/50350, PR middle-end/50386, ++ PR middle-end/50326, PR target/50737, PR c++/50787, PR c++/50531, ++ PR fortran/50016, PR target/50737. ++ ++ [ Matthias Klose ] ++ * Fix libjava installation into /usr/lib/gcc//4.6. ++ * Fix powerpc and ppc64 libffi builds (Kyle Moffett). ++ * Apply proposed patch for PR target/50350. Closes: #642313. ++ * Re-apply the fix for PR tree-optimization/49911 on ia64. ++ * Apply proposed patch for PR target/50106 (ARM). ++ ++ [Xavier Grave] ++ * debian/patches/address-clauses-timed-entry-calls.diff: new; backport ++ bug fix about address clauses and timed entry calls. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-kfreebsd-gnu.diff: new; provide dummy ++ implementations of some optional POSIX Threads functions missing in ++ GNU/kFreeBSD. Closes: #642128. ++ ++ -- Matthias Klose Thu, 20 Oct 2011 00:24:13 +0200 ++ ++gcc-4.6 (4.6.1-15) unstable; urgency=low ++ ++ * Update to SVN 20111010 (r179753) from the gcc-4_6-branch. ++ - Fix PR target/50652. ++ * Update the Linaro support to the 4.6-2011.10-1 release. ++ * Fix gcc-spu installation. ++ * Restore symlink for subminor GCC version. Closes: #644849. ++ ++ -- Matthias Klose Mon, 10 Oct 2011 17:10:40 +0200 ++ ++gcc-4.6 (4.6.1-14) unstable; urgency=low ++ ++ * Update to SVN 20111008 (r179710) from the gcc-4_6-branch. ++ - Fix PR inline-asm/50571, PR c++/46105, PR c++/50508, PR libstdc++/50529, ++ PR libstdc++/49559, PR c++/40831, PR fortran/48706, PR target/49049, ++ PR tree-optimization/49279, PR fortran/50585, PR fortran/50625, ++ PR libstdc++/48698. ++ ++ [ Matthias Klose ] ++ * Configure and build to install into /usr/lib/gcc//4.6. ++ Closes: #643891. ++ * libgcc1: Versioned break to gcc-4.3. ++ * Fix gcc-multiarch for i386-linux-gnu with disabled multilibs. ++ * libffi: Fix PowerPC soft-floating-point support (Kyle Moffett). ++ ++ [ Marcin Juszkiewicz ] ++ * Enable gcc-snapshot cross builds. ++ ++ [ Iain Buclaw ] ++ * Port gdc to GCC-4.6. ++ ++ [ Aurelien Jarno ] ++ * Backport fix for PR target/49696 from the trunk (Closes: #633443). ++ ++ -- Matthias Klose Sat, 08 Oct 2011 14:40:49 +0200 ++ ++gcc-4.6 (4.6.1-13) unstable; urgency=low ++ ++ * Update to SVN 20110926 (r179207) from the gcc-4_6-branch. ++ - Fix PR tree-optimization/50472, PR tree-optimization/50413, ++ PR tree-optimization/50412, PR c++/20039, PR c++/42844, ++ PR libstdc++/50510, PR libstdc++/50509. ++ * Revert the fix for PR tree-optimization/49911, bootstrap error on ia64. ++ * libffi: Define FFI_MMAP_EXEC_WRIT on kfreebsd-* (Petr Salinger). ++ ++ -- Matthias Klose Mon, 26 Sep 2011 19:59:55 +0200 ++ ++gcc-4.6 (4.6.1-12) unstable; urgency=low ++ ++ * Update to SVN 20110924 (r179140) from the gcc-4_6-branch. ++ - Fix PR target/50464, PR target/50341, PR middle-end/49886, ++ PR target/50091, PR c++/50491, PR c++/50442 (Closes: #642176). ++ ++ -- Matthias Klose Sat, 24 Sep 2011 10:39:32 +0200 ++ ++gcc-4.6 (4.6.1-11) unstable; urgency=low ++ ++ * Update to SVN 20110917 (r178926) from the gcc-4_6-branch. ++ - Fix PR c++/50424, PR c++/48320, PR fortran/49479. ++ ++ [ Matthias Klose ] ++ * Update the Linaro support to the 4.6-2011.09-1 release. ++ ++ [ Aurelien Jarno ] ++ * gcc.c (for_each_path): Allocate memory for multiarch suffix. ++ ++ -- Matthias Klose Sat, 17 Sep 2011 10:53:36 +0200 ++ ++gcc-4.6 (4.6.1-10) unstable; urgency=medium ++ ++ * Update to SVN 20110910 (r178746) from the gcc-4_6-branch. ++ - Fix PR middle-end/50266, PR tree-optimization/49911, ++ PR tree-optimization/49518, PR tree-optimization/49628, ++ PR tree-optimization/49628, PR target/50310, PR target/50289, ++ PR c++/50255, PR c++/50309, PR c++/49267, PR libffi/49594. ++ - Revert fix for PR middle-end/49886, causing PR middle-end/50295. ++ ++ -- Matthias Klose Sat, 10 Sep 2011 03:38:48 +0200 ++ ++gcc-4.6 (4.6.1-9) unstable; urgency=low ++ ++ * Update to SVN 20110903 (r178501) from the gcc-4_6-branch. ++ - Fix PR target/50090, PR middle-end/50116, PR target/50202, PR c/50179, ++ PR c++/50157, PR fortran/50163, PR libfortran/50192, ++ PR middle-end/49886, PR tree-optimization/50178, PR c++/50207, ++ PR c++/50089, PR c++/50220, PR c++/50234, PR c++/50224, ++ PR libstdc++/50268. ++ ++ [ Matthias Klose ] ++ * Fix gcc --print-multilib-osdir for non-biarch architectures. ++ * Fix multiarch for non-biarch builds. Closes: #635860. ++ * Move the lto plugin to the cpp packge. Closes: #639531. ++ ++ [ Thorsten Glaser ] ++ * [m68k] Disable multilib. Closes: #639303. ++ ++ -- Matthias Klose Sat, 03 Sep 2011 20:11:50 +0200 ++ ++gcc-4.6 (4.6.1-8) unstable; urgency=low ++ ++ * Update to SVN 20110824 (r178027) from the gcc-4_6-branch. ++ Fix PR fortran/49792, PR tree-optimization/48739, PR target/50092, ++ PR c++/50086, PR c++/50054, PR fortran/50050, PR fortran/50130, ++ PR fortran/50129, PR fortran/49792, PR fortran/50109, PR c++/50024, ++ PR c++/46862. ++ ++ * Properly disable multilib builds for selected libraries on armel and armhf. ++ * Update and re-enable the gcc-ice patch. ++ * Update and re-enable the gcc-cloog-dl patch. ++ * Fix [ARM] PR target/50090: aliases in libgcc.a with default visibility, ++ taken from the trunk. ++ * Re-work the multiarch patches. ++ * Break older gcj-4.6 and gnat-4.6 versions, changed gcc_lib_dir. ++ * Omit the target alias from the go libdir. ++ * Linaro updates from the 4.6-2011.07-stable branch. ++ * Revert: ++ - libjava: Build with the system libffi PIC library. ++ * For native builds, gcc -print-file-name now resolve . and .., ++ and removes the subminor version number. ++ ++ -- Matthias Klose Wed, 24 Aug 2011 10:22:42 +0200 ++ ++gcc-4.6 (4.6.1-7) unstable; urgency=low ++ ++ * Update to SVN 20110816 (r177780) from the gcc-4_6-branch. ++ - Fix PR middle-end/49923. ++ ++ [ Matthias Klose ] ++ * gcc-4.6-multilib: Depend on biarch quadmath library. Closes: #637174. ++ * Don't hard-code build dependency on gcc-multilib. ++ * Build-depends on python when building java. ++ * Fix thinko in java::lang::Class::finalize (taken from the trunk). ++ * Add support for ARM 64bit sync intrinsics (David Gilbert). Only ++ enable for armv7 or better. ++ * libjava: Build with the system libffi PIC library. ++ * Disable gnat multilib builds on armel and armhf. ++ ++ Merge from gnat-4.6 (4.6.1-4) unstable; urgency=low ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-symbolic-tracebacks.diff ++ (src/gcc/ada/gcc-interface/Makefile.in): pass -iquote instead of -I- ++ to gnatgcc; fixes FTBFS on i386 and closes: #637418. ++ ++ Merge from gnat-4.6 (4.6.1-3) unstable; urgency=low ++ ++ [Євгеній Мещеряков] ++ * debian/patches/ada-mips.diff: do not use the alternate stack on mips, ++ as on mipsel. Closes: #566234. ++ ++ [Ludovic Brenta] ++ * debian/patches/pr49940.diff: new; copy the definition of function ++ lwp_self from s-osinte-freebsd.ads to s-osinte-kfreebsd-gnu.ads. ++ Closes: #636291. ++ * debian/patches/pr49944.diff: new. Closes: #636692. ++ * debian/patches/pr49819.diff: drop, merged upstream. ++ ++ -- Matthias Klose Tue, 16 Aug 2011 13:11:25 +0200 ++ ++gcc-4.6 (4.6.1-6) unstable; urgency=low ++ ++ * Update to SVN 20110807 (r177547) from the gcc-4_6-branch. ++ - Fix PR rtl-optimization/49799, PR debug/49871, PR target/47364, ++ PR target/49866, PR tree-optimization/49671, PR target/39386, ++ PR ada/4981, PR fortran/45586, PR fortran/49791, PR middle-end/49897, ++ PR middle-end/49898, PR target/49920, PR target/47908 (closes: #635919), ++ PR c++/43886, PR c++/49593, PR c++/49803, PR c++/49924, PR c++/49260, ++ PR fortran/49885, PR fortran/48876, PR libstdc++/49925, PR target/50001, ++ PR tree-optimization/49948, PR c++/48993, PR c++/49921, PR c++/49669, ++ PR c++/49988, PR fortran/49112. ++ ++ [ Aurelien Jarno ] ++ * Update patches/kbsd-gnu.diff for recent changes. Closes: #635195. ++ * Add s390x support. ++ ++ [ Marcin Juszkiewicz ] ++ * Fixes for multilib cross builds. LP: #816852, #819147. ++ ++ [ Matthias Klose ] ++ * Fix libgo installation for cross builds. ++ * Only apply arm-multilib when building for multilib. ++ ++ -- Matthias Klose Sun, 07 Aug 2011 18:20:00 +0200 ++ ++gcc-4.6 (4.6.1-5) unstable; urgency=low ++ ++ * Update to SVN 20110723 (r176672) from the gcc-4_6-branch. ++ - Fix PR target/49541, PR tree-optimization/49768, PR middle-end/49675, ++ PR target/49746, PR middle-end/49732, PR tree-optimization/49725, ++ PR target/49723, PR target/49541, PR tree-opt/49309, PR c++/49785, ++ PR ada/48711, PR ada/46350, PR fortran/49648, PR testsuite/49753, ++ PR tree-optimization/49309, PR tree-optimization/45819, PR target/49600, ++ PR fortran/49708, PR libstdc++/49293. ++ * Update the Linaro support to the 4.6-2011.07-0 release. ++ - Fix PR target/49335. LP: #791327. ++ * Update gcc-multiarch: ++ - Add -print-multiarch option. ++ - Fix library path for non-default multilib(s). ++ - Handle `.' in MULTILIB_DIRNAMES. ++ * Add support to build multilib on armel and armhf, only enable it for ++ Ubuntu/oneiric. LP: #810360. ++ * cpp-4.6: Add empty multiarch directories for the non-default multilibs, ++ needed for relative lookups from startfile_prefixes. ++ * Fix PR c++/49756, backport from trunk. LP: #721378. ++ * libgcc1: Add breaks to gcc-4.1 and gcc-4.3. Closes: #634821. ++ * Configure for DEB_TARGET_MULTIARCH defaults. ++ ++ -- Matthias Klose Sat, 23 Jul 2011 08:15:50 +0200 ++ ++gcc-4.6 (4.6.1-4) unstable; urgency=low ++ ++ * Update to SVN 20110714 (r176280) from the gcc-4_6-branch. ++ - Fix PR tree-optimization/49094, PR target/39633, PR c++/49672, ++ PR fortran/49698, PR fortran/49690, PR fortran/49562, PR libfortran/49296, ++ PR target/49487, PR tree-optimization/49651, PR ada/48711. ++ ++ [ Matthias Klose ] ++ * Build Go on alpha for gcc-snapshot builds. ++ * For multicore ARM, clear both caches, not just the dcache (proposed ++ patch by Andrew Haley). ++ * Fix for PR rtl-optimization/{48830,48808,48792}, taken from the trunk. ++ LP: #807573. ++ * Fix PR tree-optimization/49169, optimisations strip the Thumb/ARM mode bit ++ off function pointers (Richard Sandiford). LP: #721531. ++ ++ [ Marcin Juszkiewicz ] ++ * Define DEB_TARGET_MULTIARCH macro. ++ * debian/rules2: Macro and configuration consolidation. ++ ++ -- Matthias Klose Thu, 14 Jul 2011 19:38:49 +0200 ++ ++gcc-4.6 (4.6.1-3) unstable; urgency=medium ++ ++ * Update to SVN 20110709 (r176108) from the gcc-4_6-branch. ++ - Fix PR target/49335, PR tree-optimization/49618, PR c++/49598, ++ PR fortran/49479, PR target/49621, PR target/46779, PR target/49660, ++ PR c/49644, PR debug/49522, PR debug/49522, PR middle-end/49640, ++ PR c++/48157, PR c/49644, PR fortran/48926. ++ - Apparently fixes a boost issue. Closes: #632938. ++ * Apply proposed patch for PR fortran/49690. Closes: #631204. ++ ++ * README.Debian: New section 'Former and/or inactive maintainers'. ++ ++ -- Matthias Klose Sun, 10 Jul 2011 00:04:34 +0200 ++ ++gcc-4.6 (4.6.1-2) unstable; urgency=medium ++ ++ * Update to SVN 20110705 (r175840) from the gcc-4_6-branch. ++ - Fix PR target/47997, PR c++/49528, PR c++/49440, PR c++/49418, ++ PR target/44643, PR tree-optimization/49615, PR tree-optimization/49572, ++ PR target/34734, PR tree-optimization/49539, PR tree-optimizations/49516, ++ PR target/49089, PR rtl-optimization/49014, PR target/48273, ++ PR fortran/49466, PR libfortran/49296, PR libffi/46660, PR debug/49262, ++ PR rtl-optimization/49472, PR rtl-optimization/49619, PR fortran/49623, ++ PR fortran/49540. ++ ++ [Ludovic Brenta, Євгеній Мещеряков, Xavier Grave] ++ * Adjust patches to GCC 4.6. ++ * Remove patches merged upstream: ++ - debian/patches/ada-arm-eabi.diff ++ - debian/patches/ada-bug589164.diff ++ - debian/patches/ada-bug601133.diff ++ - debian/patches/ada-gnatvsn.diff ++ - debian/patches/ada-mips.diff ++ - debian/patches/ada-polyorb-dsa.diff ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-acats.diff: set LD_LIBRARY_PATH, ADA_INCLUDE_PATH ++ and ADA_OBJECTS_PATH so that the GNAT testsuite runs. ++ * debian/patches/adalibgnat{vsn,prj}.diff, ++ debian/rules.d/binary-ada.mk: install libgnat{vsn,prj}.so.* in the correct ++ multiarch directory. ++ * debian/control.m4, debian/rules.d/binary-ada.mk: move the SJLJ version ++ of the Ada run-time library to a new package, gnat-4.6-sjlj. ++ * debian/control.m4 (libgnatvsn4.6, libgnatvsn4.6-dbg, libgnatprj4.6, ++ libgnatprj4.6-dbg): pre-depend on multiarch-support and add ++ Multi-Arch: same. ++ ++ [Nicolas Boulenguez] ++ * debian/rules.d/binary-ada.mk: add gnathtml to the package gnat-4.6. ++ * debian/gnat.1: remove the version number of GCC. Mention gnathtml. ++ ++ [ Matthias Klose ] ++ * Do not install the spu and hppa64 cross compilers into the multiarch path. ++ * Update the Linaro support to 20110704. ++ ++ [ Thorsten Glaser ] ++ * Apply changes from src:gcc-4.4 for m68k support. Closes: #632380. ++ - debian/rules.defs: Remove m68k from locale_no_cpus. ++ - debian/patches/gcc-multiarch.diff: Add m68k multiarch_mappings. ++ - debian/patches/pr43804.diff: Fix backported from SVN. ++ - debian/rules.patch: Add pr43804. ++ ++ -- Matthias Klose Tue, 05 Jul 2011 10:45:56 +0200 ++ ++gcc-4.6 (4.6.1-1) unstable; urgency=low ++ ++ * GCC 4.6.1 release. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-gnatvsn.diff, ++ debian/patches/ada-polyorb-dsa.diff: remove backports, no longer ++ needed. ++ ++ [ Matthias Klose ] ++ * Fix plugin header installation. Closes: #631082. ++ * Stop passing -Wno-error=unused-but-set-parameter and ++ -Wno-error=unused-but-set-variable if -Werror is present. ++ This was a temporary workaround introduced in 4.6.0~rc1-2. Closes: #615157. ++ * gcc-4.6-spu: Install the lto plugin. Closes: #631772. ++ ++ -- Matthias Klose Mon, 27 Jun 2011 13:54:04 +0200 ++ ++gcc-4.6 (4.6.0-14) unstable; urgency=low ++ ++ * Update to SVN 20110616 (r175102) from the gcc-4_6-branch. ++ - Fix PR debug/48459, PR fortran/49103, PR rtl-optimization/49390, ++ PR c++/49117, PR c++/49369, PR c++/49290, PR target/44618, ++ PR tree-optimization/49419 (closes: #630567). ++ * Update the Linaro support to the 4.6-2011.06-0 release. ++ ++ -- Matthias Klose Thu, 16 Jun 2011 16:10:33 +0200 ++ ++gcc-4.6 (4.6.0-13) unstable; urgency=low ++ ++ * Update to SVN 20110611 (r174958) from the gcc-4_6-branch. ++ * Extend multiarch support for mips/mipsel. ++ * Fix control files for gcj multiarch builds. ++ * Update libstdc++ symbols files. ++ ++ -- Matthias Klose Sat, 11 Jun 2011 20:49:42 +0200 ++ ++gcc-4.6 (4.6.0-12) unstable; urgency=medium ++ ++ * Update to SVN 20110608 (r174800) from the gcc-4_6-branch. ++ - PR target/49186, PR rtl-optimization/49235, PR tree-optimization/48702, ++ PR tree-optimization/49243, PR c++/49134, PR target/49238, ++ PR gcov-profile/49299, PR c++/48780, PR c++/49298, PR fortran/49268. ++ * Fix c++ biarch header installation on i386. LP: #793411. ++ * Enable multiarch. ++ * Add multiarch attributes for gnat and libgnat packages. ++ * Add multiarch attributes for libgcj* packages. ++ * Adjust build dependency on multiarch glibc. ++ ++ -- Matthias Klose Wed, 08 Jun 2011 11:26:52 +0200 ++ ++gcc-4.6 (4.6.0-11) unstable; urgency=low ++ ++ * Update to SVN 20110604 (r174637) from the gcc-4_6-branch. ++ - Fix PR c++/49165, PR tree-optimization/49218, PR target/45263, ++ PR target/43700, PR target/43995, PR tree-optimization/49217, ++ PR c++/49223, PR c++/47049, PR c++/47277, PR c++/48284, PR c++/48657, ++ PR c++/49176, PR fortran/48955, PR tree-optimization/49038, ++ PR tree-optimization/49093, PR middle-end/48985, PR middle-end/48953, ++ PR c++/49276, PR fortran/49265, PR fortran/45786. ++ * Configure the hppa64 and spu cross builds with --enable-plugin. ++ ++ -- Matthias Klose Sat, 04 Jun 2011 16:12:27 +0200 ++ ++gcc-4.6 (4.6.0-10) unstable; urgency=high ++ ++ * Update to SVN 20110526 (r174290) from the gcc-4_6-branch. ++ - Fix PR target/44643, PR c++/49165, PR tree-optimization/49161, ++ PR target/49128, PR tree-optimization/44897, PR target/49133, ++ PR c++/44994, PR c++/49156, PR c++/45401, PR c++/44311, PR c++/44311, ++ PR c++/45698, PR c++/46145, PR c++/46245, PR c++/46696, PR c++/47184, ++ PR c++/48935, PR c++/45418, PR c++/45080, PR c++/48292, PR c++/49136, ++ PR c++/49042, PR c++/48884, PR c++/49105, PR c++/47263, PR c++/47336, ++ PR c++/47544, PR c++/48617, PR c++/48424, PR libstdc++/49141, ++ PR libobjc/48177. ++ * Proposed fix for PR tree-optimization/48702, PR tree-optimization/49144. ++ Closes: #627795. ++ * Proposed fix for PR fortran/PR48955. ++ * Add some conditionals to build the package on older releases. ++ ++ -- Matthias Klose Thu, 26 May 2011 16:00:49 +0200 ++ ++gcc-4.6 (4.6.0-9) unstable; urgency=low ++ ++ * Update to SVN 20110524 (r174102) from the gcc-4_6-branch. ++ - Fix PR lto/49123, PR debug/49032, PR c/49120, PR middle-end/48973, ++ PR target/49104, PR middle-end/49029, PR c++/48647, PR c++/48945, ++ PR c++/48780, PR c++/49066, PR libstdc++/49058, PR target/49104. ++ * Use gcc-4.4 as the bootstrap compiler for kfreebsd to work around ++ a bootstrap issue. ++ ++ -- Matthias Klose Tue, 24 May 2011 09:41:35 +0200 ++ ++gcc-4.6 (4.6.0-8) unstable; urgency=low ++ ++ * Update to SVN 20110521 (r173994) from the gcc-4_6-branch. ++ - Fix PR target/48986, PR preprocessor/48677, PR tree-optimization/48975, ++ PR tree-optimization/48822, PR debug/48967, PR debug/48159, ++ PR target/48857, PR target/48495, PR tree-optimization/48837, ++ PR tree-optimization/48611, PR tree-optimization/48794, PR c++/48859, ++ PR c++/48574, PR fortran/48889, PR target/49002, PR lto/48207, ++ PR tree-optimization/49039, PR tree-optimization/49018, PR lto/48703, ++ PR tree-optimization/48172, PR tree-optimization/48172, PR c++/48873, ++ PR tree-optimization/49000, PR c++/48869, PR c++/49043, PR c++/49082, ++ PR c++/48948, PR c++/48745, PR c++/48736, PR bootstrap/49086, ++ PR tree-optimization/49079, PR tree-optimization/49073. ++ * Update the Linaro support to the 4.6-2011.05-0 release. ++ * pr45979.diff: Update to the version from the trunk. ++ ++ -- Matthias Klose Sat, 21 May 2011 12:19:10 +0200 ++ ++gcc-4.6 (4.6.0-7) unstable; urgency=low ++ ++ * Update to SVN 20110507 (r173528) from the gcc-4_6-branch. ++ - Fix PR middle-end/48597, PR c++/48656, PR fortran/48112, ++ PR fortran/48279, PR fortran/48788, PR tree-optimization/48809, ++ PR target/48262, PR fortran/48462, PR fortran/48746, ++ PR fortran/48810, PR fortran/48800, PR libstdc++/48760, ++ PR libgfortran/48030, PR preprocessor/48192, PR lto/48846, ++ PR target/48723, PR fortran/48894, PR target/48900, PR target/48252, ++ PR c++/40975, PR target/48252, PR target/48774, PR c++/48838, ++ PR c++/48749, PR ada/48844, PR fortran/48720, PR libstdc++/48750, ++ PR c++/48909, PR c++/48911, PR c++/48446, PR c++/48089. ++ ++ * Fix issue with volatile bitfields vs. inline asm memory constraints, ++ taken from the trunk, apply for ARM only. Addresses: #625825. ++ ++ -- Matthias Klose Sat, 07 May 2011 14:54:51 +0200 ++ ++gcc-4.6 (4.6.0-6) unstable; urgency=low ++ ++ * Update to SVN 20110428 (r173059) from the gcc-4_6-branch. ++ - Fix PR c/48685 (closes: #623161), PR tree-optimization/48717, PR c/48716, ++ PR c/48742, PR debug/48768, PR tree-optimization/48734, ++ PR tree-optimization/48731, PR other/48748, PR c++/42687, PR c++/48726, ++ PR c++/48707, PR fortran/48588, PR libstdc++/48521, PR c++/48046, ++ PR preprocessor/48740. ++ * Update the ibm/gcc-4_6-branch to 20110428. ++ * Use gcc-4.6 as bootstrap compiler on kfreebsd-*. ++ ++ -- Matthias Klose Thu, 28 Apr 2011 10:33:52 +0200 ++ ++gcc-4.6 (4.6.0-5) unstable; urgency=low ++ ++ * Update to SVN 20110421 (r172845) from the gcc-4_6-branch. ++ - Fix PR target/48288, PR tree-optimization/48611, PR lto/48148, ++ PR lto/48492, PR fortran/47976, PR c++/48594, PR c++/48657, ++ PR c++/46304, PR target/48708, PR middle-end/48695. ++ ++ * Update the Linaro support to the 4.6-2011.04-0 release. ++ ++ -- Matthias Klose Thu, 21 Apr 2011 22:50:25 +0200 ++ ++gcc-4.6 (4.6.0-4) unstable; urgency=medium ++ ++ * Update to SVN 20110419 (r172584) from the gcc-4_6-branch. ++ - Fix PR target/48678, PR middle-end/48661, PR tree-optimization/48616, ++ PR lto/48538, PR c++/48537, PR c++/48632, PR testsuite/48675, ++ PR libstdc++/48635, PR libfortran/47571. ++ ++ [ Aurelien Jarno ] ++ * Enable SSP on mips/mipsel. ++ ++ [ Matthias Klose ] ++ * (Build-)depend on binutils 2.21.51. ++ ++ -- Matthias Klose Tue, 19 Apr 2011 23:45:16 +0200 ++ ++gcc-4.6 (4.6.0-3) unstable; urgency=high ++ ++ * Update to SVN 20110416 (r172584) from the gcc-4_6-branch. ++ - Fix PR rtl-optimization/48143, PR target/48142, PR target/48349, ++ PR debug/48253, PR fortran/48291, PR target/16292, PR c++/48280, ++ PR c++/48212, PR c++/48369, PR c++/48281, PR c++/48265, PR lto/48246, ++ PR libstdc++/48398, PR bootstrap/48431, PR tree-optimization/48377, ++ PR debug/48343, PR rtl-optimization/48144, PR debug/48466, PR c/48517, ++ PR middle-end/48335, PR c++/48450, PR target/47829, PR c++/48534, ++ PR c++/48523, PR libstdc++/48566, PR libstdc++/48541, PR target/48366, ++ PR libstdc++/48465, PR middle-end/48591, PR target/48605, ++ PR middle-end/48591, PR target/48090, PR tree-optimization/48195, ++ PR rtl-optimization/48549, PR c++/48594, PR c++/48570, PR c++/48574, ++ PR fortran/48360, PR fortran/48456, PR libstdc++/48631, ++ PR libstdc++/48635, PR libstdc++/48476. ++ ++ [ Matthias Klose ] ++ * libjava-jnipath.diff: Add /usr/lib//jni as jnipath too. ++ * Add mudflap support for varargs (patch taken from the trunk). ++ * gcc-4.6-plugin-dev: Install gtype.state. ++ * Bootstrap with gcc-4.4 -g -O2 on armel. ++ * Fix linker plugin configuration. Closes: #620661. ++ * Update the Linaro support for GCC-4.6. ++ * gcc-snapshot builds: ++ - Fix build with multiarch changes. ++ - Use gcc-snapshot as the bootstrap compiler on armel. ++ - Re-enable building java in the gcc-snapshot package. ++ * Build supporting multiarch on wheezy/sid. ++ * Adjust (build)-dependency to new libgmp-dev name. ++ ++ [ Marcin Juszkiewicz ] ++ * Configure stage1 cross builds with --disable-libquadmath. ++ ++ -- Matthias Klose Sat, 16 Apr 2011 17:02:30 +0200 ++ ++gcc-4.6 (4.6.0-2) unstable; urgency=low ++ ++ * Update to SVN 20110329 (r171700) from the gcc-4_6-branch. ++ - Fix PR bootstrap/48135, PR target/47553, PR middle-end/48269, ++ PR tree-optimization/48228, PR middle-end/48134, PR middle-end/48031, ++ PR other/48179, PR other/48221, PR other/48234, PR target/48237, ++ PR debug/48204, PR c/42544, PR c/48197, PR rtl-optimization/48141, ++ PR rtl-optimization/48141, PR c++/48166, PR c++/48296, PR c++/48289, ++ PR c++/47999, PR c++/48313, Core 1232, Core 1148, PR c++/47504, ++ PR c++/47570, PR preprocessor/48248, PR c++/48319. ++ ++ [ Matthias Klose ] ++ * Update NEWS files. ++ * Configure the hppa64 cross build with --disable-libquadmath. ++ * Don't build armhf from the Linaro branch. ++ * Don't try to build Go on sh4. ++ ++ [ Marcin Juszkiewicz ] ++ * Fixes issues with staged cross builds. LP: #741855, #741853. ++ * Fix libdir setting for multiarch enabled cross builds. LP: #741846. ++ * Drop alternatives for cross builds. LP: #676454. ++ ++ -- Matthias Klose Tue, 29 Mar 2011 23:22:07 +0200 ++ ++gcc-4.6 (4.6.0-1) unstable; urgency=low ++ ++ * GCC 4.6.0 release. ++ ++ * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618865. ++ * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, ++ taken from the trunk. ++ * Fix PR target/47487 ICE building libgo, taken from the trunk. ++ * Merge multiarch changes from the gcc-4.5 package. ++ * Apply proposed patch to reduce the overhead of dwarf2 location tracking. ++ Addresses: #618748. ++ ++ -- Matthias Klose Sat, 26 Mar 2011 03:03:21 +0100 ++ ++gcc-4.6 (4.6.0~rc1-3) experimental; urgency=low ++ ++ * GCC 4.6.0 release candidate 2. ++ ++ -- Matthias Klose Tue, 22 Mar 2011 22:11:42 +0100 ++ ++gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low ++ ++ [ Loic Minier ] ++ * Rework config/vxworks-dummy.h installation snippet to test ++ DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% ++ sh% sparc%) as to also install this header on other ports targetting the ++ relevant upstream CPUs such as armhf. Add a comment pointing at the ++ upstream bug. ++ * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches ++ arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals ++ armel. Add a comment pointing at the Debian bug and indicating that this ++ is only useful for older dpkg-dev versions. ++ * debian/rules.def: fix "armel" entry to "arm" in list of ++ DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. ++ * debian/rules2: drop commented out GCC #42509 workaround as this was fixed ++ upstream in 4.4+. ++ * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for ++ arm as ths is what the Debian arm, armel and armhf port use. ++ * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid ++ duplication, as a comment called out for. ++ * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding ++ whether to enable profiledbootstrap. ++ * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. ++ * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. ++ * Patched a couple of comments mentioning armel to also mention armhf. ++ * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported ++ from a patch sent on the upstream mailing-list. ++ ++ [ Matthias Klose ] ++ * Update libstdc++ symbols files. ++ * Update libgfortran symbols files. ++ ++ -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 ++ ++gcc-4.6 (4.6.0~rc1-2) experimental; urgency=low ++ ++ * Update to SVN 20110320 (r171192) from the gcc-4_6-branch. ++ ++ [ Matthias Klose ] ++ * Update gcc-default-ssp* patches for the release candidate. ++ * Pass -Wno-error=unused-but-set-parameter if -Werror is present (temporary ++ for rebuild tests). ++ * Always configure --with-plugin-ld, always install liblto_plugin.so. ++ ++ [ Marcin Juszkiewicz ] ++ * Add conflicts with -4.5-*dev packages. Closes: #618450. ++ ++ [ Petr Salinger] ++ * Disable lock-2.c test on kfreebsd-*. Closes: #618988. ++ * Re-enable parallel builds on kfreebsd. ++ * Package lto_plugin for kfreebsd-* and Hurd. ++ ++ -- Matthias Klose Sun, 20 Mar 2011 13:53:48 +0100 ++ ++gcc-4.6 (4.6.0~rc1-1) experimental; urgency=low ++ ++ * Build from the GCC 4.6.0 release candidate tarball. ++ ++ [ Matthias Klose ] ++ * Disable Go on powerpc. Closes: #615827. ++ * Fix lintian errors for the -plugin-dev package. ++ * Update kbsd-gnu.diff (Petr Salinger). Closes: #615826. ++ * Disable parallel builds on kfreebsd (Petr Salinger). ++ * Update gmp (build) dependencies. ++ * Update GFDL compliant builds. Closes: #609161. ++ * For GFDL compliant builds, build a dummy s-tm-texi without access ++ to the texinfo sources. ++ ++ [ Aurelien Jarno ] ++ * Import symbol files for kfreebsd-amd64, kfreebsd-i386, sh4 and ++ sparc64 from gcc-4.5. ++ ++ -- Matthias Klose Mon, 14 Mar 2011 19:01:08 +0100 ++ ++gcc-4.6 (4.6-20110227-1) experimental; urgency=low ++ ++ [ Matthias Klose ] ++ * Update libquadmath symbols file. ++ * gcc-4.6-plugin-dev: Install gengtype. ++ ++ [ Sebastian Andrzej Siewior ] ++ * Remove -many on powerpcspe (__SPE__). ++ * Remove classic FPU opcodes from libgcc if target has no support for them ++ (powerpcspe). ++ ++ -- Matthias Klose Sun, 27 Feb 2011 22:33:45 +0100 ++ ++gcc-4.6 (4.6-20110216-1) experimental; urgency=low ++ ++ * GCC snapshot, taken from the trunk. ++ * Pass --no-add-needed by default to the linker. See ++ http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols ++ in indirect dependent shared libraries" for more information. ++ ++ -- Matthias Klose Wed, 16 Feb 2011 23:55:32 +0100 ++ ++gcc-4.6 (4.6-20110125-1) experimental; urgency=low ++ ++ * debian/copyright: Add unicode copyright for ++ libjava/classpath/resource/gnu/java/locale/* files. Addresses: #609161. ++ ++ -- Matthias Klose Wed, 26 Jan 2011 03:42:10 +0100 ++ ++gcc-4.6 (4.6-20110123-1) experimental; urgency=low ++ ++ * GCC snapshot, taken from the trunk. ++ * Don't run the libstdc++ testsuite on mipsel, times out on the buildd. ++ ++ [ Marcin Juszkiewicz ] ++ * Fix biarch/triarch cross builds. ++ - dpkg-shlibdeps failed to find libraries for 64 or n32 builds ++ - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. ++ ++ -- Matthias Klose Sun, 23 Jan 2011 12:14:49 +0100 ++ ++gcc-4.6 (4.6-20110116-1) experimental; urgency=low ++ ++ * GCC snapshot, taken from the trunk. ++ * Update patches for the trunk. ++ * Pass -Wno-error=unused-but-set-variable if -Werror is present (temporary ++ for rebuild tests). ++ * Work around PR libffi/47248, force a read only eh frame section. ++ ++ -- Matthias Klose Sun, 16 Jan 2011 23:28:28 +0100 ++ ++gcc-4.6 (4.6-20110105-1) experimental; urgency=low ++ ++ [ Matthias Klose ] ++ * Rename and update libobjc symbols files. ++ * Update cloog/ppl build dependencies. ++ * Adjust libstdc++ configure and paths for stylesheets and dtds. ++ * Update copyright for libquadmath, libgo, gcc/go/gofrontend. ++ * Enable Go for more architectures. ++ * DP: libgo: Fix GOARCH for i386 biarch, add GOARCH for powerpc ++ ++ [ Kees Cook ] ++ * Update hardening patches for GCC-4.6. LP: #696990. ++ ++ -- Matthias Klose Wed, 05 Jan 2011 22:29:57 +0100 ++ ++gcc-4.6 (4.6-20101220-1) maverick; urgency=low ++ ++ * GCC snapshot, taken from the trunk. ++ ++ -- Matthias Klose Tue, 21 Dec 2010 00:16:19 +0100 ++ ++gcc-4.5 (4.5.2-7) unstable; urgency=low ++ ++ * Update to SVN 20110323 (r171351) from the gcc-4_5-branch. ++ - Fix PR c++/47125, PR fortran/47348, PR libstdc++/48114, ++ PR libfortran/48066, PR target/48171, PR target/47862. ++ PR preprocessor/48192. ++ ++ [ Steve Langasek ] ++ * Make dpkg-dev versioned build-dependency conditional on whether we want ++ to build for multiarch. ++ * Add a new patch, gcc-multiarch+biarch.diff, used only when building for ++ multiarch to set our multilib paths to the correct relative directories. ++ * debian/rules.defs: support turning on multiarch build by architecture; ++ but don't enable this yet, we still need to wait for dpkg-dev. ++ * When DEB_HOST_MULTIARCH is available (i.e., with the next dpkg upload), ++ use it as our multiarch path. ++ * debian/rules.d/binary-java.mk: jvm-exports path is /usr/lib/jvm-exports, ++ not $(libdir)/jvm-exports. ++ * OTOH, libgcj_bc *is* in $(libdir). ++ * the spu build is not a multiarch build; look in the correct ++ non-multiarch directory. ++ * debian/rules2: pass --libdir also for stageX builds, needed in order to ++ successfully build for multiarch. ++ * debian/rules2: $(usr_lib) for a cross-build should not include the ++ multiarch dir as part of the path. ++ * debian/patches/gcc-multiarch+biarch.diff: restore the original intent of ++ the patch, namely, that the multilib dir for the default variant is ++ always equal to libdir (the multiarch dir), and we walk up the tree ++ to find lib for the secondary variant. ++ * debian/patches/gcc-multiarch+biarch32.diff: apply the same multilib ++ directory rewriting for biarch paths with multiarch as we do without; ++ still needed in the near term. ++ * Put our list of patches in README.Debian.$(DEB_TARGET_ARCH) instead of ++ in README.Debian, so that the individual files are architecture-neutral ++ and play nicely with multiarch. LP: #737846. ++ * Add a comment at the bottom of README.Debian with a pointer to the new ++ file listing the patches. ++ ++ [ Loic Minier ] ++ * Rework config/vxworks-dummy.h installation snippet to test ++ DEB_TARGET_GNU_CPU against patterns close to the upstream ones (arm% mips% ++ sh% sparc%) as to also install this header on other ports targetting the ++ relevant upstream CPUs such as armhf. Add a comment pointing at the ++ upstream bug. ++ * Update __aeabi symbol handling to test whether DEB_TARGET_GNU_TYPE matches ++ arm-linux-gnueabi% instead of testing whether DEB_TARGET_ARCH equals ++ armel. Add a comment pointing at the Debian bug and indicating that this ++ is only useful for older dpkg-dev versions. ++ * debian/rules.def: fix "armel" entry to "arm" in list of ++ DEB_TARGET_ARCH_CPUs for Debian experimental GCC 4.5/4.6 libraries. ++ * debian/rules2: drop commented out GCC #42509 workaround as this was fixed ++ upstream in 4.4+. ++ * Change bogus DEB_TARGET_GNU_CPU test on armel and armhf to just test for ++ arm as ths is what the Debian arm, armel and armhf port use. ++ * Rework snippet setting armv7 on Debian armhf / Ubuntu to avoid ++ duplication, as a comment called out for. ++ * Use "arm" instead of armel/armhf in DEB_TARGET_GNU_CPU test when deciding ++ whether to enable profiledbootstrap. ++ * Set DEJAGNU_TIMEOUT=600 on Ubuntu armhf as well. ++ * Fix a couple more uses of armel or armhf against DEB_TARGET_GNU_CPU. ++ * Patched a couple of comments mentioning armel to also mention armhf. ++ * Add patch armhf-triplet-backport, support for arm-linux-*eabi* backported ++ from a patch sent on the upstream mailing-list. ++ ++ [ Matthias Klose ] ++ * Fix PR target/48226, Allow Iterator::vector vector on powerpc with VSX, ++ taken from the trunk. ++ * Fix PR preprocessor/48192, make conditional macros not defined for ++ #ifdef, proposed patch. ++ * Build the gold LTO plugin for ppc64 (Hiroyuki Yamamoto). Closes: #618864. ++ * Fix issue with volatile bitfields, default to -fstrict-volatile-bitfields ++ again on armel for Linaro builds. LP: #675347. ++ ++ -- Matthias Klose Wed, 23 Mar 2011 15:44:01 +0100 ++ ++gcc-4.5 (4.5.2-6) unstable; urgency=low ++ ++ * Update to SVN 20110312 (r170895) from the gcc-4_5-branch. ++ - Fix PR tree-optimization/45967, PR tree-optimization/47278, ++ PR target/47862, PR c++/44629, PR c++/45651, PR c++/47289, PR c++/47705, ++ PR c++/47488, PR libgfortran/47778, PR c++/48029. ++ ++ [ Steve Langasek ] ++ * Make sure our libs Pre-Depend on 'multiarch-support' when building for ++ multiarch. ++ * debian/patches/gcc-multiarch*, debian/rules.patch: use i386 in the ++ multiarch path for amd64 / kfreebsd-amd64, not i486 or i686. This lets ++ us use a common set of paths on both Debian and Ubuntu, regardless of ++ the target default optimization level. ++ * debian/rules.conf: when building for multiarch, we need to be sure we ++ are building against a libc-dev that supports the corresponding paths. ++ (the referenced version number for this needs to be bumped once this is ++ officially in the archive.) ++ ++ [ Matthias Klose ] ++ * Don't run the libmudflap testsuite on hppa; times out on the buildd. ++ * Don't run the libstdc++ testsuite on mipsel; times out on the buildd. ++ * Post Linaro 4.5-2011.03-0 release changes (up to 20110313). ++ * Undefine LINK_EH_SPEC before redefining it to turn off warnings on ++ powerpc. ++ * Update gmp (build) dependencies. ++ ++ [ Aurelien Jarno ] ++ * Add symbol files on kfreebsd-i386. ++ * Add symbol files on kfreebsd-amd64. ++ * Add symbol files on sparc64. ++ * Add symbol files on sh4. ++ ++ -- Matthias Klose Sun, 13 Mar 2011 17:30:48 +0100 ++ ++gcc-4.5 (4.5.2-5) unstable; urgency=low ++ ++ * Update to SVN 20110305 (r170696) from the gcc-4_5-branch. ++ - Fix PR target/43810, PR fortran/47886, PR tree-optimization/47615, ++ PR middle-end/47639, PR tree-optimization/47890, PR libfortran/47830, ++ PR tree-optimization/46723, PR target/45261, PR target/45808, ++ PR c++/46159, PR c++/47904, PR fortran/47886, PR libstdc++/47433, ++ PR target/42240, PR fortran/47878, PR libfortran/47694. ++ * Update the Linaro support to the 4.5-2011.03-0 release. ++ - Fix LP: #705689, LP: #695302, LP: #710652, LP: #710623, LP: #721021, ++ LP: #721021, LP: #709453. ++ ++ -- Matthias Klose Sun, 06 Mar 2011 02:58:01 +0100 ++ ++gcc-4.5 (4.5.2-4) unstable; urgency=low ++ ++ * Update to SVN 20110222 (r170382) from the gcc-4_5-branch. ++ - Fix PR target/43653, PR fortran/47775, PR target/47840, ++ PR libfortran/47830. ++ ++ [ Matthias Klose ] ++ * Don't apply a patch twice. ++ * Build libgcc_s with -fno-stack-protector, when not building from the ++ Linaro branch. ++ * Backport proposed fix for PR tree-optimization/46723 from the trunk. ++ ++ [ Steve Langasek ] ++ * debian/control.m4: add missing Multi-Arch: same for libgcc4; make sure ++ Multi-Arch: same doesn't get set for libmudflap when building an ++ Architecture: all cross-compiler package. ++ * debian/rules2: use $libdir for libiberty.a. ++ * debian/patches/gcc-multiarch-*.diff: make sure we're using the same ++ set_multiarch_path definition for all variants. ++ ++ [ Sebastian Andrzej Siewior ] ++ * PR target/44364 ++ * Remove -many on powerpcspe (__SPE__) ++ * Remove classic FPU opcodes from libgcc if target has no support for them ++ (powerpcspe) ++ ++ -- Matthias Klose Wed, 23 Feb 2011 00:35:54 +0100 ++ ++gcc-4.5 (4.5.2-3) experimental; urgency=low ++ ++ * Update to SVN 20110215 (r170181) from the gcc-4_5-branch. ++ - Fix PR rtl-optimization/44469, PR tree-optimization/47411, ++ PR bootstrap/44699, PR target/44392, PR fortran/47331, PR fortran/47448, ++ PR pch/14940, PR rtl-optimization/47166, PR target/47272, PR target/47580, ++ PR tree-optimization/47541, PR target/44606, PR boehm-gc/34544, ++ PR fortran/47569, PR libstdc++/47709, PR libstdc++/46914, PR libffi/46661. ++ * Update the Linaro support to the 4.5 2011.02-0 release. ++ * Pass --no-add-needed by default to the linker. See ++ http://wiki.debian.org/ToolChain/DSOLinking, section "Not resolving symbols ++ in indirect dependent shared libraries" for more information. ++ ++ -- Matthias Klose Wed, 16 Feb 2011 15:29:26 +0100 ++ ++gcc-4.5 (4.5.2-2) experimental; urgency=low ++ ++ * Update to SVN 20110123 (r169142) from the gcc-4_5-branch. ++ - Fix PR target/46915, PR target/46729, PR libgcj/46774, PR target/47038, ++ PR target/46685, PR target/45447, PR tree-optimization/46758, ++ PR tree-optimization/45552, PR tree-optimization/43023, ++ PR middle-end/46734, PR fortran/45338, PR preprocessor/39213, ++ PR target/43309, PR fortran/46874, PR tree-optimization/47286, ++ PR tree-optimization/44592, PR target/47201, PR c/47150, PR target/46880, ++ PR middle-end/45852, PR tree-optimization/43655, PR debug/46893, ++ PR rtl-optimization/46804, PR rtl-optimization/46865, PR target/41082, ++ PR tree-optimization/46864, PR fortran/45777, PR tree-optimization/47365, ++ PR tree-optimization/47167, PR target/47318, PR target/46655, ++ PR fortran/47394, PR libstdc++/47354. ++ ++ [ Matthias Klose ] ++ * Update the Linaro support to the 4.5 2011.01-1 release. ++ * Don't build packages now built from the gcc-4.6 package for architectures ++ with a sucessful gcc-4.6 build. ++ ++ [ Kees Cook ] ++ * debian/patches/gcc-default-ssp.patch: do not ignore -fstack-protector-all ++ (LP: #691722). ++ ++ [ Marcin Juszkiewicz ] ++ * Fix biarch/triarch cross builds. ++ - dpkg-shlibdeps failed to find libraries for 64 or n32 builds ++ - LD_LIBRARY_PATH for dpkg-shlibdeps lacked host dirs. ++ ++ -- Matthias Klose Sun, 23 Jan 2011 11:54:52 +0100 ++ ++gcc-4.5 (4.5.2-1) experimental; urgency=low ++ ++ * GCC 4.5.2 release. ++ ++ -- Matthias Klose Sat, 18 Dec 2010 14:14:38 +0100 ++ ++gcc-4.5 (4.5.1-12) experimental; urgency=low ++ ++ * Update to SVN 20101129 (r167272) from the gcc-4_5-branch. ++ - Fix PR fortran/45742, PR tree-optimization/46498, PR target/45807, ++ PR target/44266, PR rtl-optimization/46315, PR tree-optimization/44545, ++ PR tree-optimization/46491, PR rtl-optimization/46571, PR target/31100, ++ PR c/46547, PR fortran/46638, PR tree-optimization/46675, PR debug/46258, ++ PR ada/40777. ++ ++ [ Matthias Klose ] ++ * Use lib instead of lib64 as the 64bit system dir on biarch ++ architectures defaulting to 64bit. Closes: #603597. ++ * Fix powerpc and s390 builds when biarch is disabled. ++ * Backport PR bootstrap/44768, miscompilation of dpkg on ARM ++ with -O2 (Chung-Lin Tang). LP: #674146. ++ * Update libgcc2 symbols file. Closes: #602099. ++ ++ [ Marcin Juszkiewicz ] ++ * Do not depend on target mpfr and zlib -dev packages for cross builds. ++ LP: #676027. ++ ++ [ Konstantinos Margaritis ] ++ * Add support for new target architecture `armhf'. Closes: #603948. ++ ++ -- Matthias Klose Mon, 22 Nov 2010 08:12:08 +0100 ++ ++gcc-4.5 (4.5.1-11) experimental; urgency=low ++ ++ * Update to SVN 20101114 (r166728) from the gcc-4_5-branch. ++ - Fix PR fortran/45742. ++ * Don't hardcode debian/patches when referencing patches. Closes: #600502. ++ ++ -- Matthias Klose Sun, 14 Nov 2010 08:36:27 +0100 ++ ++gcc-4.5 (4.5.1-10) experimental; urgency=low ++ ++ * Update to SVN 20101112 (r166653) from the gcc-4_5-branch. ++ - Fix PR rtl-optimization/44691, PR tree-optimization/46355, ++ PR tree-optimization/46177, PR c/44772, PR tree-optimization/46099, ++ PR middle-end/43690, PR tree-optimization/46165, PR middle-end/46419, ++ PR tree-optimization/46107, PR tree-optimization/45314, PR debug/45939, ++ PR rtl-optimization/46237, PR middle-end/44569, PR middle-end/44569, ++ PR tree-optimization/45902, PR target/46153, PR rtl-optimization/46226, ++ PR tree-optimization/46167, PR target/46098, PR target/45946, ++ PR fortran/42169, PR middle-end/46019, PR c/45969, PR c++/45894, ++ PR c++/46160, PR c++/45983, PR fortran/46152, PR fortran/46140, ++ PR libstdc++/45999, PR libgfortran/46373, PR libgfortran/46010, ++ PR fortran/46007, PR c++/46024. ++ * Update the Linaro support to the 4.5 2010.11 release. ++ * Update gcc-4.5 source dependencies. Closes: #600503. ++ * ARM: Fix Thumb-1 reload ICE with nested functions (Julian Brown), ++ taken from the trunk. ++ * Fix earlyclobbers on some arm.md DImode shifts (may miscompile "x >> 1"), ++ taken from the trunk. Closes: #600888. ++ ++ -- Matthias Klose Fri, 12 Nov 2010 18:34:47 +0100 ++ ++gcc-4.5 (4.5.1-9) experimental; urgency=low ++ ++ * Update to SVN 20101014 (r165474) from the gcc-4_5-branch. ++ - Fix PR target/45820, PR tree-optimization/45854, PR target/45843, ++ PR target/43764, PR rtl-optimization/43358, PR bootstrap/44621, ++ PR libffi/45677, PR middle-end/45869, PR middle-end/45569, ++ PR tree-optimization/45752, PR fortran/45748, PR libstdc++/45403, ++ PR libstdc++/45924, PR libfortran/45710, PR bootstrap/44455, ++ PR java/43839, PR debug/45656, PR debug/44832, PR libstdc++/45711, ++ PR tree-optimization/45982. ++ ++ [ Matthias Klose ] ++ * Update the Linaro support to the 4.5 2010.10 release. ++ * Just try to build java on mips/mipsel (was disabled in 4.5.0-9, when ++ java was built from the same source package). Addresses: #599976. ++ * Remove the gpc packaging support. ++ * Fix libmudflap.so symlink. Addresses: #600161. ++ * Fix pch test failures with heap randomization on armel (PR pch/45979). ++ ++ [ Kees Cook ] ++ * Don't enable -fstack-protector with -ffreestanding. ++ ++ -- Matthias Klose Thu, 14 Oct 2010 19:17:41 +0200 ++ ++gcc-4.5 (4.5.1-8) experimental; urgency=low ++ ++ * Update to SVN 20100925 (r164618) from the gcc-4_5-branch. ++ - Fix PR middle-end/44763, PR java/44095, PR target/35664, ++ PR rtl-optimization/41085, PR rtl-optimization/45051, ++ PR target/45694, PR middle-end/45678, PR middle-end/45678, ++ PR middle-end/45704, PR rtl-optimization/45728, PR libfortran/45532, ++ PR rtl-optimization/45695, PR rtl-optimization/42775, PR target/45726, ++ PR tree-optimization/45623, PR tree-optimization/45709, PR debug/43628, ++ PR tree-optimization/45709, PR rtl-optimization/45593, PR fortran/45081, ++ * Find 32bit system libraries on sparc64, s390x. ++ * Remove README.Debian from the source package to avoid confusion for ++ readers of the packaging. ++ * Don't include info files and man pages in hppa64 and spu builds. ++ Closes: #597435. ++ * Apply proposed patch for PR mudflap/24619 (instrumentation of dlopen) ++ (Brian M. Carlson) Closes: #507514. ++ ++ -- Matthias Klose Sat, 25 Sep 2010 14:11:39 +0200 ++ ++gcc-4.5 (4.5.1-7) experimental; urgency=low ++ ++ * Update to SVN 20100914 (r164279) from the gcc-4_5-branch. ++ - Fix PR target/40959, PR middle-end/45567, PR debug/45660, ++ PR rtl-optimization/41087, PR rtl-optimization/44919, PR target/36502, ++ PR target/42313, PR target/44651. ++ * Add support to build from the Linaro 4.5 2010.09 release. ++ * gcc-4.5-plugin-dev: Install config/arm/arm-cores.def. ++ * Remove non-existing URL's in README.c++ (Osamu Aoki). Closes: #596406. ++ * Don't provide c++abi2-dev for g++ cross builds. ++ * Don't pass -mimplicit-it=thumb if -mthumb to as on ARM, rejected upstream. ++ ++ -- Matthias Klose Tue, 14 Sep 2010 12:52:34 +0200 ++ ++gcc-4.5 (4.5.1-6) experimental; urgency=low ++ ++ * Update to SVN 20100909 (r164132) from the gcc-4_5-branch. ++ - Fix PR middle-end/45312, PR bootstrap/43847, PR middle-end/44554, ++ PR middle-end/40386, PR other/45443, PR c++/45200, PR c++/45293, ++ PR c++/45558, PR fortran/45595, PR fortran/45530, PR fortran/45489, ++ PR fortran/45019, PR libstdc++/45398. ++ ++ [ Matthias Klose ] ++ * Tighten binutils dependencies to 2.20.1-14. ++ ++ [ Marcin Juszkiewicz ] ++ * Fix the gcc-4.5-plugin-dev package name for cross builds. LP: #631474. ++ * Build the gcc-4.5-plugin-dev for stage1 cross builds. ++ * Fix priorities and sections for some cross packages. ++ ++ [ Al Viro ] ++ * Fix installation of libgcc_s.so as a linker script for biarch builds. ++ ++ [ Kees Cook ] ++ * Push glibc stack traces into stderr when building the package. ++ * debian/patches/gcc-default-ssp.patch: Lower ssp-buffer-size to 4. ++ ++ -- Matthias Klose Fri, 10 Sep 2010 21:25:37 +0200 ++ ++gcc-4.5 (4.5.1-5) experimental; urgency=low ++ ++ * Always add dependencies on multilib library packages in *-multilib ++ packages. ++ * Fix installation of libgcc_s.so on architectures when libgcc_s.so is ++ a linker script, not a symlink (Steve Langasek). Closes: #595474. ++ * Remove the lib32gcc1 preinst script. Closes: #595495. ++ ++ -- Matthias Klose Sat, 04 Sep 2010 12:41:40 +0200 ++ ++gcc-4.5 (4.5.1-4) experimental; urgency=low ++ ++ * Update to SVN 20100903 (r163833) from the gcc-4_5-branch. ++ - Fix PR target/45070, PR middle-end/45458, PR rtl-optimization/45353, ++ PR middle-end/45423, PR c/45079, PR tree-optimization/45393, ++ PR c++/44991, PR middle-end/45484, PR debug/45500, PR lto/45496. ++ ++ [ Matthias Klose ] ++ * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package ++ on armel, mipsel and sparc64 too. ++ * Cleanup packaging files in gcc-source package. ++ * [ARM] Provide __builtin_expect() hints in linux-atomic.c (backport). ++ ++ [ Al Viro ] ++ * Fix builds with disabled biarch library packages. ++ * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch ++ to using them in rules.d/*; as the result, most of the explicit pathnames ++ in there are gone _and_ we get uniformity across different flavours. ++ * New variables {usr_lib,gcc_lib_dir,libgcc_dir}{,32,64,n32}, and switch ++ to using them in rules.d/*; as the result, most of the explicit pathnames ++ in there are gone _and_ we get uniformity across different flavours. ++ * Merge bi-/tri-arch stuff in binary-gcc.mk. ++ * Merge rules for libgcc biarch variants. ++ * Merge rules for libstdc++ biarch variants. Fix n32 variant of ++ libstdc++-dbg removing _pic.a from the wrong place. ++ * Merge libgfortran rules. ++ * Merge rules for cxx-multi and objc-multi packages. ++ * Enable gcc-hppa64 in cross-gcc-to-hppa build. ++ ++ [ Marcin Juszkiewicz ] ++ * Create libgcc1 and gcc-*-base packages for stage2 cross builds. ++ LP: #628855. ++ ++ -- Matthias Klose Fri, 03 Sep 2010 18:09:40 +0200 ++ ++gcc-4.5 (4.5.1-3) experimental; urgency=low ++ ++ * Update to SVN 20100829 (r163627) from the gcc-4_5-branch. ++ - Fix PR target/45327, PR middle-end/45292, PR fortran/45344, ++ PR target/41484, PR rtl-optimization/44858, PR rtl-optimization/45400, ++ PR tree-optimization/45260, PR c++/45315. ++ ++ [ Matthias Klose ] ++ * Don't run the libstdc++ testsuite on armel on the buildds. ++ * Integrate and extend bi/tri-arch cross builds patches. ++ * Fix dependencies for mips* triarch library packages depend on *both* lib64* ++ and libn32* packages. Closes: #594540. ++ * Tighten binutils dependencies to 2.20.1-13. ++ * Update LAST_UPDATED file when applying upstream updates. ++ ++ [ Al Viro ] ++ * Bi/tri-arch cross builds patches. ++ * Fix installation paths in bi/tri-arch libobjc and libmudflap packages. ++ * Merge rules for all flavours of libgomp, libmudflap, libobjc. ++ * Crossbuild fix for lib32gomp (use $(PFL)/lib32 instead of $(lib32)). ++ * gcc-4.5: libgcc_s.so.1 symlink creation on cross-builds. ++ * Enable gcc-multilib for cross-builds and fix what needs fixing. ++ * Enable g++-multilib for cross-builds, fix pathnames. ++ * Enable gobjc/gobjc++ multilib for cross-builds, fixes. ++ * Enable gfortran multilib for cross-builds, fix paths. ++ * Multilib dependency fixes for cross-builds. ++ ++ -- Matthias Klose Sun, 29 Aug 2010 18:24:37 +0200 ++ ++gcc-4.5 (4.5.1-2) experimental; urgency=low ++ ++ * Update to SVN 20100818 (r163323) from the gcc-4_5-branch. ++ - Fix PR target/41089, PR tree-optimization/44914, PR c++/45112, ++ PR fortran/44929, PR middle-end/45262, PR debug/45259, PR debug/45055, ++ PR target/44805, PR middle-end/45034, PR tree-optimization/45109, ++ PR target/44942, PR fortran/31588, PR fortran/43954, PR fortran/44660, ++ PR fortran/42051, PR fortran/44064, PR fortran/45151, PR libstdc++/44963, ++ PR tree-optimization/45241, PR middle-end/44632 (closes: #585925), ++ PR libstdc++/45283, PR target/45296. ++ ++ [ Matthias Klose ] ++ * Allow overwriting of the PF macro used in the build from the environment ++ (Jim Heck). Closes: #588381. ++ * Fix libc-dbg build dependency for java enabled builds. Addresses: #591424. ++ * gcj: Align data in .rodata.jutf8.* sections, patch taken from the trunk. ++ * Configure with --enable-checking+release. LP: #612822. ++ * Add the complete packaging to the -source package. LP: #608650. ++ * Drop the gcc-ix86-asm-generic32.diff patch. ++ * Tighten (build-) dependency on cloog-ppl (>= 0.15.9-2). ++ * Apply proposed patch for PR middle-end/45292. ++ * Re-enable running the libstdc++ testsuite on armel and ia64 on the buildds. ++ ++ [ Steve Langasek ] ++ * s,/lib/,/$(libdir)/, throughout debian/rules*; a no-op in the current ++ case, but required for us to find the libraries when building for ++ multiarch ++ * Don't append multiarch paths to any multilib paths except for the default; ++ our biarch (multilib) builds need to remain independent of multiarch in ++ the near term, so we want to make sure we can find /usr/lib32 without ++ /usr/lib/i486-linux-gnu being available. ++ * debian/control.m4, debian/rules.conf: conditionally set packages to be ++ Multi-Arch: yes when MULTIARCH is defined. ++ ++ [ Marcin Juszkiewicz ] ++ * Allow building intermediate stages for cross builds. LP: #603497. ++ ++ -- Matthias Klose Wed, 18 Aug 2010 07:00:12 +0200 ++ ++gcc-4.5 (4.5.1-1) experimental; urgency=low ++ ++ * GCC-4.5.1 release. ++ * Update to SVN 20100731 (r162781) from the gcc-4_5-branch. ++ - Fix PR tree-optimization/45052, PR target/43698. ++ * Apply proposed fixes for PR c++/45112, PR c/45079. ++ * Install config/vxworks-dummy.h in the gcc-4.5-plugin-dev package ++ on armel, mips, mipsel, sh4, sparc, sparc64. Closes: #590054. ++ * Link executables statically when `static' is passed in DEB_BUILD_OPTIONS ++ (Jim Heck). Closes: #590102. ++ * Stop building java packages from the gcc-4.5 source package. ++ ++ -- Matthias Klose Sat, 31 Jul 2010 16:30:20 +0200 ++ ++gcc-4.5 (4.5.0-10) experimental; urgency=low ++ ++ * Update to SVN 20100725 (r162508) from the gcc-4_5-branch. ++ - Fix PR tree-optimization/45047, PR c++/43016, PR c++/45008. ++ * Disable building gcj/libjava on mips/mipsel (fails to link libgcj). ++ * Update libstdc++6 symbols files. ++ ++ -- Matthias Klose Sun, 25 Jul 2010 16:39:11 +0200 ++ ++gcc-4.5 (4.5.0-9) experimental; urgency=low ++ ++ * Update to SVN 20100723 (r162448) from the gcc-4_5-branch (post ++ GCC-4.5.1 release candidate 1). ++ - Fix PR debug/45015, PR target/44942, PR tree-optimization/44900, ++ PR tree-optimization/44977, PR c++/44996, PR fortran/44929, ++ PR fortran/30668, PR fortran/31346, PR fortran/34260, ++ PR fortran/40011. ++ ++ [ Marcin Juszkiewicz ] ++ * Fix dependencies on cross library packages. ++ * Copy all debian/rules* files to the -source package. ++ ++ [ Matthias Klose ] ++ * Fix versioned build dependency on gcc-4.x-source package for cross builds. ++ LP: #609060. ++ * Set Vcs attributes in control file. ++ ++ -- Matthias Klose Fri, 23 Jul 2010 13:08:07 +0200 ++ ++gcc-4.5 (4.5.0-8) experimental; urgency=low ++ ++ * Update to SVN 20100718 (r161892) from the gcc-4_5-branch. ++ - Fixes: PR target/44531, PR bootstrap/44820, PR target/44597, ++ PR target/44705, PR middle-end/44777, PR debug/44694, PR c++/44039, ++ PR tree-optimization/43801, PR target/44575, PR debug/44104, ++ PR middle-end/44671, PR middle-end/44686, PR tree-optimization/44357, ++ PR debug/44694, PR middle-end/43866, PR debug/42278, PR c++/44059, ++ PR tree-optimization/43905, PR middle-end/44133, PR tree-optimize/44063, ++ PR tree-optimization/44683, PR rtl-optimization/43332, PR debug/44610, ++ PR middle-end/44684, PR tree-optimization/44393, PR middle-end/44674, ++ PR c++/44628, PR c++/44587, PR fortran/44582, PR fortran/43841, ++ PR fortran/43843, PR libstdc++/44708, PR tree-optimization/44886, ++ PR target/43888, PR tree-optimization/44284, PR middle-end/44828, ++ PR middle-end/41355, PR c++/44703, PR ada/43731, PR fortran/44773, ++ PR fortran/44847. ++ ++ [ Marcin Juszkiewicz ] ++ * debian/rules2: Merge rules.d includes. ++ * Properly -name -dbg packages for cross builds. ++ * Various cross build fixes. ++ * Build libmudflap packages for cross builds. ++ * Fix generation of maintainer scripts for cross packages. ++ * Build a gcc-base package for cross builds. ++ ++ [ Kees Cook ] ++ * Fix additional libstdc++ testsuite failures for hardening defaults. ++ ++ [ Samuel Thibault ] ++ * Update hurd patch for 4.5, fixing build failure. Closes: #584819. ++ ++ [ Matthias Klose ] ++ * gcc-arm-implicit-it.diff: Only pass -mimplicit-it=thumb when in ++ thumb mode (Andrew Stubbs). ++ ++ -- Matthias Klose Sun, 18 Jul 2010 10:53:51 +0200 ++ ++gcc-4.5 (4.5.0-7) experimental; urgency=low ++ ++ * Update to SVN 20100625 (r161383) from the gcc-4_5-branch. ++ - Fixes: PR bootstrap/44426, PR target/44546, PR target/44261, ++ PR target/43740, PR libstdc++/44630 (closes: #577458), ++ PR c++/44627 (LP: #503668), PR target/39690, PR target/44615, ++ PR fortran/44556, PR c/44555. ++ - Update libstdc++'s pretty printer for python2.6. Closes: #585202. ++ ++ [ Matthias Klose ] ++ * Fix libstdc++ symbols files for powerpc and sparc. ++ * Add maintainer scripts for cross packages. ++ ++ [ Samuel Thibault ] ++ * Update hurd patch for 4.5, fixing build failure. Closes: #584454, ++ #584819. ++ ++ [ Marcin Juszkiewicz ] ++ * Merge the rules.d/binary-*-cross.mk files into rules.d/binary-*.mk. ++ ++ -- Matthias Klose Fri, 25 Jun 2010 15:57:38 +0200 ++ ++gcc-4.5 (4.5.0-6) experimental; urgency=low ++ ++ [ Matthias Klose ] ++ ++ * Update to SVN 20100617 (r161901) from the gcc-4_5-branch. Fixes: ++ PR target/44169, PR bootstrap/43170, PR objc/35996, PR objc++/32052, ++ PR objc++/23716, PR lto/44464, PR rtl-optimization/42461, PR fortran/44536, ++ PR tree-optimization/44258, PR tree-optimization/44423, PR target/44534, ++ PR bootstrap/44426, PR tree-optimization/44508, PR tree-optimization/44507, ++ PR lto/42776, PR target/44481, PR debug/41371, PR bootstrap/37304, ++ PR target/44067, PR debug/41371, PR debug/41371, PR target/44075, ++ PR c++/44366, PR c++/44401, PR fortran/44347, PR fortran/44430, ++ PR lto/42776, PR libstdc++/44487, PR other/43838, PR libgcj/44216. ++ * debian/patches/cross-fixes.diff: Update for 4.5 (Marcin Juszkiewicz). ++ * debian/patches/libstdc++-pic.diff: Fix installation for cross builds. ++ * Fix PR bootstrap/43847, --enable-plugin for cross builds. ++ * Export long double versions of "C" math library for arm-linux-gnueabi, ++ m68k-linux-gnu (ColdFire), mips*-linux-gnu (o32 ABI), sh*-linux-gnu ++ (not 32 bit). Merge the libstdc++-*-ldbl-compat.diff patches. ++ * Merge binary-libgcc.mk packaging changes into binary-libgcc-cross.mk ++ (Loic Minier). ++ * Update libgcc and libstdc++ symbols files. ++ ++ [ Aurelien Jarno ] ++ ++ * libstdc++-mips-ldbl-compat.diff: On MIPS provide the long double ++ versions of "C" math functions in libstdc++ as we need to keep the ++ ABI. Closes: #584610. ++ ++ -- Matthias Klose Thu, 17 Jun 2010 14:56:14 +0200 ++ ++gcc-4.5 (4.5.0-5) experimental; urgency=low ++ ++ * Update to SVN 20100602 (r160097) from the gcc-4_5-branch. Fixes: ++ PR target/44338, PR middle-end/44337, PR tree-optimization/44182, ++ PR target/44161, PR c++/44358, PR fortran/44360, PR lto/44385. ++ * Fix PR target/44261, taken from the trunk. Closes: #582787. ++ * Fix passing the expanded -iplugindir option. ++ * Disable broken profiled bootstrap on alpha. ++ * On ix86, pass -mtune=generic32 in 32bit mode to the assembler, when ++ configured for i586-linux-gnu or i686-linux-gnu. ++ ++ -- Matthias Klose Thu, 03 Jun 2010 00:44:37 +0200 ++ ++gcc-4.5 (4.5.0-4) experimental; urgency=low ++ ++ * Update to SVN 20100527 (r160047) from the gcc-4_5-branch. Fixes: ++ PR rtl-optimization/44164, PR middle-end/44069, PR target/44199, ++ PR lto/44196, PR target/43733, PR target/44245, PR target/43869, ++ PR debug/44223, PR tree-optimization/44038, PR tree-optimization/43949, ++ PR debug/44205, PR debug/44178, PR bootstrap/43870, PR target/44202, ++ PR target/44074, PR lto/43455, PR lto/42653, PR lto/42425, PR lto/43080, ++ PR lto/43946, PR c++/43382, PR c++/41510, PR c++/44193, PR c++/44157, ++ PR c++/44158, PR lto/44256, PR libstdc++/44190, PR lto/44312, ++ PR target/43636, PR target/43726, PR c++/43555PR libstdc++/40497. ++ ++ [ Matthias Klose ] ++ ++ * Enable multilibs again on powerpcspe. Closes: #579780. ++ * Fix setting CC for REVERSE_CROSS build (host == target,host != build). ++ Closes: #579779. ++ * Fix setting biarch_cpu macro. ++ * Don't bother with un-normalized paths in .la files, just remove them. ++ * debian/locale-gen: Update locales needed for the libstdc++-v3 testsuite. ++ * If libstdc++6 is built from newer gcc-4.x source, run the libstdc++-v3 ++ testsuite against the installed lib too. ++ * Configure with --enable-secureplt on powerpcspe. ++ ++ [ Aurelien Jarno ] ++ ++ * Fix $(distrelease) on non-official archives. Fix powerpcspe, sh4 and ++ sparc64 builds. ++ ++ -- Matthias Klose Sun, 30 May 2010 12:52:02 +0200 ++ ++gcc-4.5 (4.5.0-3) experimental; urgency=low ++ ++ * Update to SVN 20100519 (r159556) from the gcc-4_5-branch. Fixes: ++ PR c++/43704, PR fortran/43339, PR middle-end/43337, PR target/43635, ++ PR tree-optimization/43783, PR tree-optimization/43796, PR middle-end/43570, ++ PR libgomp/43706, PR libgomp/43569, PR middle-end/43835, PR c/43893, ++ PR tree-optimization/43572, PR tree-optimization/43845, PR libgcj/40860, ++ PR target/43744, PR debug/43370, PR c++/43880, PR middle-end/43671, ++ PR debug/43972, PR target/43921, PR c++/38064, PR c++/43953, ++ PR fortran/43985, PR fortran/43592, PR fortran/40539, PR c++/43787, ++ PR middle-end/44085, PR middle-end/44071, PR middle-end/43812, ++ PR debug/44028, PR rtl-optimization/44012, PR target/44046, ++ PR documentation/44016, PR fortran/44036, PR fortran/40728, ++ PR libstdc++/44014, PR lto/44184, PR bootstrap/42347, PR middle-end/44102, ++ PR c++/44127, PR debug/44136, PR target/44088, PR tree-optimization/44124, ++ PR fortran/43591, PR fortran/44135, PR libstdc++/43259. ++ ++ [ Matthias Klose ] ++ * Revert gcj-arm-no-merge-exidx-entries patch, fixed by PR libgcj/40860. ++ * Don't run the libstdc++-v3 testsuite on the ia64 buildds. Timeouts. ++ * Backport two libjava fixes from the trunk to run josm with gcj. ++ * Ubuntu only: ++ - Pass --hash-style=gnu instead of --hash-style=both to the linker. ++ * Preliminary architecture port for powerpcspe (Kyle Moffett). ++ Closes: #579780. ++ * Update configury to be able to target i686 instead of i486 on i386. ++ ++ [ Aurelien Jarno] ++ * Don't link with --hash-style=both on mips/mipsel as GNU hash is not ++ compatible with the MIPS ABI. ++ * Default to -mplt on mips(el), -march=mips2 and -mtune=mips32 on 32-bit ++ mips(el), -march=mips3 and -mtune=mips64 on 64-bit mips(el). ++ ++ -- Matthias Klose Wed, 19 May 2010 09:48:20 +0200 ++ ++gcc-4.5 (4.5.0-2) experimental; urgency=low ++ ++ * Update to SVN 20100419 from the gcc-4_5-branch. ++ - Fix PR tree-optimization/43627, c++/43641, PR c++/43621, PR c++/43611, ++ PR fortran/31538, PR fortran/30073, PR target/43662, ++ PR tree-optimization/43572, PR tree-optimization/43771. ++ * Install the linker plugin. ++ * Search the linker plugin as a readable, not an executable file. ++ * Link with --hash-style=both on mips/mipsel. ++ * On mips, pass -mfix-loongson2f-nop to as, if -mno-fix-loongson2f-nop ++ is not passed. ++ * Sequel to PR40521, fix -g to generate .eh_frame on ARM. ++ * On ARM, let gcj pass --no-merge-exidx-entries to the linker. ++ * Build-depend/depend on binutils snapshot. ++ * Update NEWS.html and NEWS.gcc. ++ ++ -- Matthias Klose Mon, 19 Apr 2010 15:22:55 +0200 ++ ++gcc-4.5 (4.5.0-1) experimental; urgency=low ++ ++ * GCC 4.5.0 release. ++ * Always apply biarch patches. ++ * Build the lto-linker plugin again. Closes: #575448. ++ * Run the libstdc++v3 testsuite on armel again. ++ * Fix --enable-libstdcxx-time documentation, show configure result. ++ * On linux targets always pass --no-add-needed to the linker. ++ * Update the patch to search for plugins in a default plugin directory. ++ * Fix java installations in snapshot builds. ++ * Configure --with-plugin-ld=ld.gold. ++ * Linker selection: ld is used by default, to use the gold linker, ++ pass -fuse-linker-plugin (no other side effects if -flto/-fwhopr ++ is not passed). To force ld.bfd or ld.gold, pass -B/usr/lib/compat-ld ++ for ld.bfd or /usr/lib/gold-ld for ld.gold. ++ * Don't apply the gold-and-ld patch for now. ++ * Stop building the documentation for dfsg compliant builds. Closes: #571759. ++ ++ -- Matthias Klose Wed, 14 Apr 2010 13:29:20 +0200 ++ ++gcc-4.5 (4.5-20100404-1) experimental; urgency=low ++ ++ * Update to SVN 20100404 from the trunk. ++ * Fix build failures building cross compilers configure --with-ld. ++ * lib32gcc1: Set priority to `extra'. ++ * Apply proposed patch to search for plugins in a default plugin directory. ++ * In snapshot builds, use for javac/ecj1 the jvm provided by the package. ++ * libstdc++-arm-ldbl-compat.diff: On ARM provide the long double versions ++ of "C" math functions in libstdc++; these are dropped when built ++ against glibc-2.11. ++ ++ -- Matthias Klose Sun, 04 Apr 2010 15:51:25 +0200 ++ ++gcc-4.5 (4.5-20100321-1) experimental; urgency=low ++ ++ * Update to SVN 20100321 from the trunk. ++ * gcj-4.5-jre-headless: Stop providing java-virtual-machine. ++ * gcj-4.5-plugin-dev: Don't suggest mudflap packages. ++ * Apply proposed patch to enable both gold and ld in a single toolchain. ++ New option -fuse-ld=ld.bfd, -fuse-ld=gold. ++ ++ -- Matthias Klose Sun, 21 Mar 2010 11:45:48 +0100 ++ ++gcc-4.5 (4.5-20100227-1) experimental; urgency=low ++ ++ * Update to SVN 20100227 from the trunk. ++ * Don't run the libstdc++-v3 testsuite on arm*-*-linux-gnueabi, when ++ defaulting to thumb mode (Timeouts on the Ubuntu buildd). ++ ++ -- Matthias Klose Sat, 27 Feb 2010 08:29:55 +0100 ++ ++gcc-4.5 (4.5-20100222-1) experimental; urgency=low ++ ++ * Update to SVN 20100222 from the trunk. ++ - Install additional header files needed by plugins. Closes: #562881. ++ * gcc-4.5-plugin-dev: Should depend on libgmp3-dev. Closes: #566366. ++ * Update libstdc++6 symbols files. ++ ++ -- Matthias Klose Tue, 23 Feb 2010 02:16:22 +0100 ++ ++gcc-4.5 (4.5-20100216-0ubuntu1~ppa1) lucid; urgency=low ++ ++ * Update to SVN 20100216 from the trunk. ++ * Don't call dh_makeshlibs with -V for shared libraries with ++ symbol files. ++ * Don't run the libstdc++-v3 testsuite in thumb mode on armel ++ to work around buildd timeout (see PR target/42509). ++ ++ -- Matthias Klose Wed, 17 Feb 2010 02:06:02 +0100 ++ ++gcc-4.5 (4.5-20100204-1) experimental; urgency=low ++ ++ * Update to SVN 20100204 from the trunk. ++ ++ -- Matthias Klose Thu, 04 Feb 2010 19:44:19 +0100 ++ ++gcc-4.5 (4.5-20100202-1) experimental; urgency=low ++ ++ * Update to SVN 20100202 from the trunk. ++ - gcc-stack_chk_fail-check.diff: Remove, applied upstream. ++ * Update libstdc++6 symbol files. ++ * Build gnat in snapshot builds on arm. ++ * Configure with --enable-checking=yes for snapshot builds, and for ++ 4.5 builds before the release. ++ * Temporary workaround: On arm-linux-gnueabi run the libstdc++v3 testsuite ++ with -Wno-abi. ++ * When building the hppa64 cross compiler, add $(builddir)/gcc to ++ LD_LIBRARY_PATH to find the just built libgcc6. Closes: #565862. ++ * On sh4-linux, use sh as java architecture name instead of sh4. ++ * On armel, build gnat-4.5 using gcc-snapshot. ++ * Revert the bump of the libgcc soversion on hppa (6 -> 4). ++ ++ -- Matthias Klose Tue, 02 Feb 2010 19:35:25 +0100 ++ ++gcc-4.5 (4.5-20100107-1) experimental; urgency=low ++ ++ [ Matthias Klose ] ++ * Update to SVN 20100107 from the trunk. ++ * Revert the workaround for the alpha build (PR bootstrap/42511 is fixed). ++ * testsuite-hardening-format.diff: Add a fix for the libstdc++ testsuite. ++ * Build-depend again on autogen. ++ * Work around PR lto/41569 (installation bug when configured with ++ --enabled-gold). ++ * On armel run the testsuite both in arm and thumb mode, when the ++ distribution is supporthing tumb processors. ++ * Work around PR target/42509 (armel), not setting BOOT_CFLAGS, but ++ applying libcpp-arm-workaround.diff. ++ ++ [ Nobuhiro Iwamatsu ] ++ * Update gcc-multiarch patch for sh4. ++ ++ -- Matthias Klose Thu, 07 Jan 2010 16:34:57 +0100 ++ ++gcc-4.5 (4.5-20100106-0ubuntu1) lucid; urgency=low ++ ++ * Update to SVN 20100106 from the trunk. ++ * gcj-4.5-jdk: Include /usr/lib/jvm-exports. ++ * Rename libgcc symbols file for hppa. ++ * On alpha and armel, set BOOT_CFLAGS to -g -O1 to work around bootstrap ++ failures (see PR target/42509 (armel) and PR bootstrap/42511 (alpha)). ++ * Base the source build-dependency on the package version instead of the ++ gcc version. ++ ++ -- Matthias Klose Wed, 06 Jan 2010 14:17:29 +0100 ++ ++gcc-4.5 (4.5-20100103-1) experimental; urgency=low ++ ++ * Update to SVN 20100103 from the trunk. ++ ++ [ Samuel Thibault ] ++ * Update hurd patch for 4.5. Closes: #562802. ++ ++ [ Aurelien Jarno ] ++ * Remove patches/kbsd-gnu-ada.diff (merged upstream). ++ ++ [ Matthias Klose ] ++ * libgcj11: Move .so symlinks into gcj-4.5-jdk. Addresses: #563280. ++ * gcc-snapshot: On sparc64, use gcc-snapshot as bootstrap compiler. ++ * Don't use expect-tcl8.3 on hppa anymore. ++ * Merge gnat-4.4 changes back from 4.4.2-5. ++ * Bump libgcc soversion on hppa (4 -> 6). ++ * Default to v9a (ultrasparc) on sparc*-linux. ++ ++ -- Matthias Klose Sun, 03 Jan 2010 17:25:27 +0100 ++ ++gcc-4.5 (4.5-20091226-1) experimental; urgency=low ++ ++ * Update to SVN 20091226 from the trunk. ++ * Fix powerpc spu installation. ++ * Enable multiarch for sh4. ++ * Fix libffi multilib test runs. ++ * Configure the hppa -> hppa64 cross compiler --with-system-zlib. ++ * gcc-4.5-hppa64: Don't ship info dir file. ++ * lib32stdc++6{,-dbg}: Add dependency on 32bit glibc. ++ ++ -- Matthias Klose Sat, 26 Dec 2009 15:38:23 +0100 ++ ++gcc-4.5 (4.5-20091223-1) experimental; urgency=low ++ ++ * Update to SVN 20091223 from the trunk. ++ ++ [ Matthias Klose ] ++ * Update hardening patches for 4.5. ++ * Don't call install-info directly, depend on dpkg | install-info instead. ++ * Add conflicts with packages built from GCC 4.4 sources. ++ * On ARM, pass --hash-style=both to ld. ++ * Update libgfortran3 symbols file. ++ * Update libstdc++6 symbols file. ++ ++ [ Arthur Loiret ] ++ * debian/rules.conf (gen_no_archs): Handle multiple arm ports. ++ ++ -- Matthias Klose Wed, 23 Dec 2009 18:02:24 +0100 ++ ++gcc-4.5 (4.5-20091220-1) experimental; urgency=low ++ ++ * Update to SVN 20091220 from the trunk. ++ - Remove patches applied upstream: arm-boehm-gc-locks.diff, ++ arm-gcc-gcse.diff, deb-protoize.diff, gcc-arm-thumb2-sched.diff, ++ gcc-atom-doc.diff, gcc-atom.diff, gcc-build-id.diff, ++ gcc-unwind-debug-hook.diff, gcj-use-atomic-builtins-doc.diff, ++ gcj-use-atomic-builtins.diff, libjava-atomic-builtins-eabi.diff, ++ libjava-nobiarch-check-snap.diff, lp432222.diff, pr25509-doc.diff, ++ pr25509.diff, pr39429.diff, pr40133.diff, pr40134.diff, rev146451.diff, ++ s390-biarch-snap.diff, sh4-scheduling.diff, sh4_atomic_update.diff. ++ - Update patches: gcc-multiarch.diff, gcc-textdomain.diff, ++ libjava-nobiarch-check.diff, libjava-subdir.diff, libstdc++-doclink.diff, ++ libstdc++-man-3cxx.diff, libstdc++-pic.diff, note-gnu-stack.diff, ++ rename-info-files.diff, s390-biarch.diff. ++ * Stop building the protoize package, removed from the GCC 4.5 sources. ++ * gcc-4.5: Install lto1, lto-wrapper, and new header files for intrinsics. ++ * libstdc++6-4.5-dbg: Install the python files for use with gdb. ++ * Build java packages from the gcc-4.5 source package. ++ ++ -- Matthias Klose Sun, 20 Dec 2009 10:56:56 +0100 ++ ++gcc-4.4 (4.4.2-6) unstable; urgency=low ++ ++ * Update to SVN 20091220 from the gcc-4_4-branch (r155367). ++ Fix PR c++/42387, PR c++/41183. ++ ++ [ Matthias Klose ] ++ * Apply svn-doc-updates.diff for non DFSG builds. ++ * gcc-snapshot: ++ - Remove patches integrated upstream: pr40133.diff. Closes: #561550. ++ ++ [ Nobuhiro Iwamatsu ] ++ * Backport linux atomic ops changes for sh4 from the trunk. Closes: #561550. ++ * Backport from trunk: [SH] Not run scheduling before reload as default. ++ Closes: #561429. ++ ++ [ Arthur Loiret ] ++ * Apply spu patches independently of the hardening patches; fix build ++ failure on powerpc. ++ ++ -- Matthias Klose Sun, 20 Dec 2009 10:20:19 +0100 ++ ++gcc-4.4 (4.4.2-5) unstable; urgency=low ++ ++ * Update to SVN 20091212 from the gcc-4_4-branch (r155122). ++ Revert the fix for PR libstdc++/42261, fix PR fortran/42268, ++ PR target/42263, PR target/42263, PR target/41196, PR target/41939, ++ PR rtl-optimization/41574. ++ ++ [ Matthias Klose ] ++ * Regenerate svn-updates.diff. ++ * Disable biarch testsuite runs for libffi (broken and unused). ++ * Support xz compression of source tarballs. ++ * Fix typo in PR libstdc++/40133 to do the link tests. ++ * gcc-snapshot: ++ - Remove patches integrated upstream: pr40134-snap.diff. ++ - Update s390-biarch.diff for trunk. ++ ++ [ Aurelien Jarno ] ++ * Add sparc64 support: disable multilib and install the libraries ++ in /lib. ++ ++ -- Matthias Klose Sun, 13 Dec 2009 10:28:19 +0100 ++ ++gcc-4.4 (4.4.2-4) unstable; urgency=low ++ ++ * Update to SVN 20091210 from the gcc-4_4-branch (r155122), Fixes: ++ PR target/42165, PR target/42113, PR libgfortran/42090, ++ PR middle-end/42049, PR c++/42234, PR fortran/41278, PR libstdc++/42261, ++ PR libstdc++/42273 PR java/41991. ++ ++ [ Matthias Klose ] ++ * gcc-arm-thumb2-sched.diff: Don't restrict reloads to LO_REGS for Thumb-2. ++ * PR target/40134: Don't redefine LIB_SPEC on hppa. ++ * PR target/42263, fix wrong code bugs in SMP support on ARM, backport from ++ the trunk. ++ * Pass -mimplicit-it=thumb to as by default on ARM, when configured ++ --with-mode=thumb. ++ * Fix boehm-gc build on ARM --with-mode=thumb. ++ * ARM: Don't copy uncopyable instructions in gcse.c (backport from trunk). ++ * Build the spu cross compiler for powerpc from the cell-4_4-branch. ++ * gcj: add option -fuse-atomic-builtins (backport from the trunk). ++ ++ [ Arthur Loiret ] ++ * Make svn update interdiffs more readable. ++ ++ -- Matthias Klose Thu, 10 Dec 2009 04:29:36 +0100 ++ ++gcc-4.4 (4.4.2-3) unstable; urgency=low ++ ++ * Update to SVN 20091118 from the gcc-4_4-branch (r154294). ++ Fix PR PR c++/9381, PR c++/21008, PR c++/35067, PR c++/36912, PR c++/37037, ++ PR c++/37093, PR c++/38699, PR c++/39786, c++/36959, PR c++/41754, ++ PR c++/41876, PR c++/41967, PR c++/41972, PR c++/41994, PR c++/42059, ++ PR c++/42061, ++ PR fortran/41772, PR fortran/41850, PR fortran/41909, ++ PR middle-end/40946, PR middle-end/41317, R tree-optimization/41643, ++ PR target/41900, PR rtl-optimization/41917, PR middle-end/41963, ++ PR middle-end/42029. ++ * Snapshot builds: ++ - Patch updates. ++ - Configure with --disable-browser-plugin. ++ * Configure with --disable-libstdcxx-pch on hppa. ++ * Backport armel patches form the trunk: ++ - Fix PR objc/41848 - workaround ObjC and -fsection-anchors. ++ - Enable scheduling for Thumb-2, including the fix for PR target/42031. ++ - Fix PR target/41939, EABI violation in accessing values below the stack. ++ ++ -- Matthias Klose Wed, 18 Nov 2009 08:37:18 -0600 ++ ++gcc-4.4 (4.4.2-2) unstable; urgency=low ++ ++ * Update to SVN 20091031 from the gcc-4_4-branch (r153603). ++ - Fix PR debug/40521, PR target/40913, PR middle-end/22072, ++ PR target/41665, PR c++/38798, PR c++/40092, PR c++/37875, ++ PR c++/37204, PR fortran/41755, PR libstdc++/40654, PR libstdc++/40826, ++ PR target/41702, PR c/41842, PR target/41762, PR c++/40808, ++ PR fortran/41777, PR libstdc++/40852. ++ * Snapshot builds: ++ - Configure with --enable-plugin, disable the gcjwebplugin by a patch. ++ Addresses: #551200. ++ - Proposed patch for PR lto/41652, compile lto-plugin with ++ -D_FILE_OFFSET_BITS=64 ++ - Allow disabling the ada build via DEB_BUILD_OPTIONS nolang=ada. ++ * Fixes for reverse cross builds. ++ * On sparc default to v9 in 32bit mode. ++ * Fix __stack_chk_fail check for cross builds configured --with-headers. ++ * Apply some fixes for uClibc cross builds (Jonas Meyer, Hector Oron). ++ ++ -- Matthias Klose Sat, 31 Oct 2009 14:16:03 +0100 ++ ++gcc-4.4 (4.4.2-1) unstable; urgency=low ++ ++ * GCC 4.4.2 release. ++ - Fixes PR target/26515, PR target/41680, PR rtl-optimization/41646, ++ PR c++/39863, PR c++/41038. ++ * Fix setting timeout for testsuite runs. ++ * gcj-4.4/gcc-snapshot: Drop build-dependency on libgconf2-dev, disabled ++ by default. ++ * gcj-4.4: Run the libffi testsuite as well. ++ * Add explicit build dependency on zlib1g-dev. ++ * Fix cross builds, add support for gomp and gfortran (only tested for ++ non-biarch targets). ++ * (Build-)depend on binutils-2.20. ++ * Fix up omp.h for multilibs (taken from Fedora). ++ ++ -- Matthias Klose Sun, 18 Oct 2009 02:31:32 +0200 ++ ++gcc-4.4 (4.4.1-6) unstable; urgency=low ++ ++ * Snapshot builds: ++ - Add build dependency on libelfg0-dev (>= 0.8.12). ++ - Add build dependency on binutils-gold where available. ++ - Suggest binutils-gold; not perfect, it is required when using ++ -use-linker-plugin. ++ - Work around installation failure in the lto-plugin (PR lto/41569). ++ - Install java home symlinks in /usr/lib/jvm. ++ - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. ++ * PR debug/40521: ++ - Apply patch for PR debug/40521, taken from the trunk. ++ - Revert the dwarf2cfi_asm workaround, obsoleted by PR debug/40521. ++ - Depend on binutils (>= 2.19.91.20091005). ++ * Update to SVN 20091005 from the gcc-4_4-branch (r152450). ++ - Fixes PR fortran/41479. ++ * In the test summary, add more information about package versions ++ used for the build. ++ ++ -- Matthias Klose Wed, 07 Oct 2009 02:12:56 +0200 ++ ++gcc-4.4 (4.4.1-5) unstable; urgency=medium ++ ++ * Update to SVN 20091003 from the gcc-4_4-branch (r152174). ++ - Fixes PR target/22093, PR c/39779, PR libffi/40242, PR target/40473, ++ PR debug/40521, PR c/41049, PR debug/41065, PR ada/41100, ++ PR tree-optimization/41101, PR libgfortran/41328, PR libffi/41443, ++ PR fortran/41515. ++ * Updates for snapshot builds: ++ - Fix build dependency on automake for snapshot builds. ++ - Update patches pr40134-snap and libjava-nobiarch-check-snap. ++ * Fix lintian errors in libstdc++ packages and lintian warnings in the ++ source package. ++ * Add debian/README.source. ++ * Don't apply PR libstdc++/39491 for the trunk anymore. ++ * Install java home symlinks for snapshot builds in /usr/lib/jvm, ++ including javac. Depend on ecj. Addresses #536102. ++ * Fix build failure on armel with -mfloat-abi=softfp. ++ * Don't pessimize the code for newer armv6 and armv7 processors. ++ * libjava: Use atomic builtins For Linux ARM/EABI, backported from the ++ trunk. ++ * Proposed patch to fix wrong-code on powerpc (Alan Modra). LP: #432222. ++ * Link against -ldl instead of -lcloog -lppl. Exit with an error when using ++ the Graphite loop transformation infrastructure without having the ++ libcloog-ppl0 package installed (patch taken from Fedora). Packages ++ using these optimizations should build-depend on libcloog-ppl0. ++ gcc-4.4: Suggest the cloog runtime libraries. ++ * Install a hook _Unwind_DebugHook, called during unwinding. Intended as ++ a hook for a debugger to intercept exceptions. CFA is the CFA of the ++ target frame. HANDLER is the PC to which control will be transferred ++ (patch taken from Fedora). ++ ++ -- Matthias Klose Sat, 03 Oct 2009 13:33:05 +0100 ++ ++gcc-4.4 (4.4.1-4) unstable; urgency=low ++ ++ * Update to SVN 20090911 from the gcc-4_4-branch (r151649). ++ - Fixes PR target/34412, PR middle-end/41094, PR target/40718, ++ PR fortran/41062, PR libstdc++/41005, PR target/41184, ++ PR bootstrap/41180, PR c++/41127, PR fortran/41258, ++ PR rtl-optimization/40861, PR target/41315, PR fortran/39876. ++ ++ [ Matthias Klose ] ++ * Avoid underscores in doc-base document id's to workaround a ++ dh_installdocs bug. ++ * Update file names for the Ada user's guide. ++ * Set Homepage attribute for packages. ++ * Update the patch for gnat on armel. ++ * gcj-4.4-jdk: Depend on libantlr-java. Addresses: #546062. ++ * Backport patch for PR tree-optimization/41101 from the trunk. ++ Closes: #541816. ++ * Update libstdc++6.symbols for symbols introduced with the fix ++ for PR libstdc++/41005. ++ * Apply proposed patches for PR libstdc++/40133 and PR target/40134. ++ Add symbols exception propagation support in libstdc++ on armel ++ to the libstdc++6 symbols. ++ ++ [ Ludovic Brenta] ++ Merge from gnat-4.4 (4.4.1-3) unstable; urgency=low ++ * debian/rules.defs, debian/rules.d/binary-ada.mk, debian/rules.patch: ++ better support for architectures that support only one exception ++ handling mechanism (SJLJ or ZCX). ++ ++ -- Matthias Klose Sat, 12 Sep 2009 03:18:17 +0200 ++ ++gcc-4.4 (4.4.1-3) unstable; urgency=low ++ ++ * Update to SVN 20090822 from the gcc-4_4-branch (r151011). ++ - Fixes PR tree-optimization/41016, PR tree-optimization/41011, ++ PR tree-optimization/41008, PR tree-optimization/40991, ++ PR tree-optimization/40964, PR target/8603 (closes: #161432), ++ PR target/41019, PR target/41015, PR target/40957, PR target/40934, ++ PR rtl-optimization/41033, PR middle-end/41047, PR middle-end/41006, ++ PR fortran/41070, PR fortran/40995, PR fortran/40847, PR debug/40990, ++ PR debug/37801, PR c/41046, PR c/40948, PR c/40866, PR bootstrap/41018, ++ PR middle-end/41123,PR target/40971, PR c++/41131, PR fortran/41102, ++ PR libfortran/40962. ++ ++ [ Arthur Loiret ] ++ * Only use -fno-stack-protector when known to the stage1 compiler. ++ ++ [ Aurelien Jarno ] ++ * lib32* packages: remove the Pre-Depends: libc6-i386 (>= 2.9-18) and ++ upgrade the Conflicts: libc6-i386 from (<< 2.9-18) to (<< 2.9-22). ++ Closes: #537466. ++ * kbsd-gnu-ada.dpatch: add support for kfreebsd-amd64. ++ ++ [ Matthias Klose ] ++ * Build gnat on armel, the gnat-4.4 build still failing, gcc-snapshot ++ builds good enough to build itself. ++ * Merge enough of the gnat-4.4 changes back to allow a combined build ++ from the gcc-4.4 source. ++ * Build libgnatprj for armel. ++ * On armel build just one version of the ada run-time library. ++ * Update auto* build dependencies for snapshot builds. ++ * Apply proposed patch for PR target/40718. ++ ++ -- Matthias Klose Sun, 23 Aug 2009 11:50:38 +0200 ++ ++gcc-4.4 (4.4.1-2) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Update to SVN 20090808 from the gcc-4_4-branch (r150577). ++ - Fixes PR target/40832, PR rtl-optimization/40710, ++ PR tree-optimization/40321, PR build/40010, PR fortran/40727, ++ PR build/40010, PR rtl-optimization/40924, PR c/39902, ++ PR middle-end/40943, PR target/40577, PR c++/39987, PR debug/39706, ++ PR c++/40948, PR c++/40749, PR fortran/40851, PR fortran/40878, ++ PR target/40906. ++ * Bump GCC version required in dependencies to 4.4.1. ++ * Enable Ada for snapshot builds on all archs with a gnat package ++ available in the archive. ++ * Build-depend on binutils 2.19.51.20090805, needed at least for armel. ++ ++ [ Aurelien Jarno ] ++ * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. ++ ++ -- Matthias Klose Sat, 08 Aug 2009 10:17:39 +0200 ++ ++gcc-4.4 (4.4.1-1) unstable; urgency=low ++ ++ * GCC 4.4.1 release. ++ - Fixes PR target/39943, PR tree-optimization/40792, PR c++/40780, ++ PR middle-end/40747, PR libstdc++/40691, PR libfortran/40714, ++ PR tree-optimization/40813 (ICE in OpenJDK build on sparc). ++ * Apply proposed patch for PR target/39429, an ARM wrong-code error. ++ * Fix a typo in the arm back-end (proposed patch). ++ * Build-depend on libmpc-dev for snapshot builds. ++ * Fix build failure in cross builds (Hector Oron). Closes: #522597. ++ * Run the testsuite as part of the build target, not the install target. ++ ++ -- Matthias Klose Wed, 22 Jul 2009 13:24:39 +0200 ++ ++gcc-4.4 (4.4.0-11) unstable; urgency=medium ++ ++ [ Matthias Klose ] ++ * Update to SVN 20090715 from the gcc-4_4-branch (r149690). ++ - Corresponds to the 4.4.1 release candidate. ++ - Fixes PR target/38900, PR debug/40666, PR middle-end/40669, ++ PR middle-end/40328, PR target/40587, PR middle-end/40585, ++ PR c++/40566, PR tree-optimization/40542, PR c/39902, ++ PR tree-optimization/40579, PR tree-optimization/40550, PR c++/40684, ++ PR c++/35828, PR c++/37816, PR c++/40639, PR c++/40633, PR c++/40619, ++ PR c++/40595, PR fortran/40440, PR fortran/40551, PR fortran/40638, ++ PR fortran/40443, PR libstdc++/40600, PR rtl-optimization/40667, PR c++/40740, ++ PR c++/36628, PR c++/37206, PR c++/40689, PR c++/40502, PR middle-end/40747. ++ * Backport of PR c/25509, new option -Wno-unused-result. LP: #305176. ++ * gcc-4.4: Depend on libgomp1, even if not building the libgomp1 package. ++ * Add proposed patches for PR libstdc++/40133, PR target/40134; don't apply ++ yet. ++ ++ [Emilio Pozuelo Monfort] ++ * Backport build-id support, configure with --enable-linker-build-id. ++ ++ -- Matthias Klose Tue, 14 Jul 2009 16:09:33 -0400 ++ ++gcc-4.4 (4.4.0-10) unstable; urgency=low ++ ++ [ Arthur Loiret ] ++ * debian/rules.patch: Record the auto* calls to run them once only. ++ ++ [ Matthias Klose ] ++ * Update to SVN 20090627 from the gcc-4_4-branch (r149023). ++ - Fixes PR other/40024. ++ * Fix typo, adding blacklisted symbols to the libgcc1 symbols file on armel. ++ * On mips/mipsel use -O2 in STAGE1_CFLAGS until binutils is updated. ++ ++ -- Matthias Klose Sun, 28 Jun 2009 10:13:08 +0200 ++ ++gcc-4.4 (4.4.0-9) unstable; urgency=high ++ ++ * Update to SVN 20090624 from the gcc-4_4-branch (r148821). ++ - Fix PR objc/28050 (LP: #362217), PR libstdc++/40297, PR c++/40342. ++ * Continue the well planned lib32 transition on amd64, adding pre-dependencies ++ on libc6-i386 (>= 2.9-18) on Debian. Closes: #533767. ++ * Enable SSP on arm and armel, run the testsuite with -fstack-protector. ++ LP: #375189. ++ * Fix spu fortran build in gcc-snapshot builds. ++ * Add missing symbols for 64bit libgfortran library. ++ * Update libstdc++ symbol files for sparc 64bit, adding symbols ++ for exception propagation support. ++ * Explicitely add __aeabi symbols to the libgcc1 symbols file on armel. ++ Closes: #533843. ++ ++ -- Matthias Klose Wed, 24 Jun 2009 23:46:02 +0200 ++ ++gcc-4.4 (4.4.0-8) unstable; urgency=medium ++ ++ * Let all 32bit libs conflict with libc6-i386 (<< 2.9-17). Closes: #533767. ++ * Update to SVN 20090620 from the gcc-4_4-branch (r148747). ++ - Fixes PR fortran/39800, PR fortran/40402. ++ * Work around tar bug on kfreebsd unpacking java class file updates (#533356). ++ ++ -- Matthias Klose Sat, 20 Jun 2009 15:15:22 +0200 ++ ++gcc-4.4 (4.4.0-7) unstable; urgency=medium ++ ++ * Update to SVN 20090618 from the gcc-4_4-branch (r148685). ++ - Fixes PR middle-end/40446, PR middle-end/40389, PR middle-end/40460, ++ PR fortran/40168, PR target/40470. ++ * On amd64, install 32bit libraries into /lib32 and /usr/lib32. ++ * lib32gcc1, lib32gomp1, lib32stdc++6: Conflict with libc6-i386 (= 2.9-15), ++ libc6-i386 (= 2.9-16). ++ * Handle serialver alternative in -jdk install scripts, not in -jre-headless. ++ ++ -- Matthias Klose Fri, 19 Jun 2009 01:36:00 +0200 ++ ++gcc-4.4 (4.4.0-6) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Update to SVN 20090612 from the gcc-4_4-branch (r148433). ++ - Fixes PR c++/38064, PR c++/40139, PR target/40017, PR target/40266, ++ PR bootstrap/40027, PR tree-optimization/40087, PR target/39856, ++ PR rtl-optimization/40105, PR target/39942, PR middle-end/40204, ++ PR debug/40109, PR tree-optimization/39999, PR libfortran/37754, ++ PR fortran/22423, PR libfortran/39667, PR libfortran/39782, ++ PR libfortran/38668, PR libfortran/39665, PR libfortran/39702, ++ PR libfortran/39709, PR libfortran/39665i, PR libgfortran/39664, ++ PR fortran/38654, PR libfortran/37754, PR libfortran/37754, ++ PR libfortran/25561, PR libfortran/37754, PR middle-end/40291, ++ PR target/40017, PR middle-end/40340, PR c++/40308, PR c++/40311, ++ PR c++/40306, PR c++/40307, PR c++/40370, PR c++/40372, PR c++/40373, ++ PR c++/40381, PR fortran/40019, PR fortran/39893. ++ * gcj-4.4-jdk: Depend on libecj-java-gcj instead of libecj-java. ++ * Let gjdoc --version use the Configuration class instead of ++ version.properties (Alexander Sack). LP: #385682. ++ * Preserve libgcc_s.so linker scripts. Closes: #532263. ++ ++ [Ludovic Brenta] ++ * debian/patches/ppc64-ada.dpatch, ++ debian/patches/ada-mips.dpatch, ++ debian/patches/ada-mipsel.dpatch: remove, merged upstream. ++ * debian/patches/*ada*.dpatch: ++ - rename to *.diff; ++ - remove the dpatch prologue shell script ++ - refresh with quilt -p ab and without time stamps ++ - adjust to GCC 4.4 ++ * debian/patches/ada-library-project-files-soname.diff, ++ debian/patches/ada-polyorb-dsa.diff, ++ debian/patches/pr39856.diff: new. ++ * debian/rules.patch: adjust accordingly. ++ * debian/rules.defs: re-enable Ada. ++ * debian/rules2: do a lean bootstrap when building Ada. ++ * debian/rules.d/binary-ada.mk: do not build gnatbl or gprmake anymore, ++ removed upstream. ++ ++ -- Matthias Klose Fri, 12 Jun 2009 18:34:13 +0200 ++ ++gcc-4.4 (4.4.0-5) unstable; urgency=medium ++ ++ * Update to SVN 20090517 from the gcc-4_4-branch (r147630). ++ - Fixes PR tree-optimization/40062, PR middle-end/39986, ++ PR middle-end/40057, PR fortran/39879, PR libstdc++/40038, ++ PR middle-end/40035, PR target/37179, PR middle-end/39666, ++ PR tree-optimization/40074, PR fortran/40018, PR fortran/38863, ++ PR middle-end/40147, PR fortran/40018, PR target/40153. ++ ++ [ Matthias Klose ] ++ * Update libstdc++ symbols files. ++ * Update libgcc, libobjc, libstdc++ symbols files for armel. ++ * Fix version symlink in gcc_lib_dir. Closes: #527837. ++ * Fix symlinks for javac and header files in /usr/lib/jvm. ++ Closes: #528084. ++ * Don't build the stage1 compiler with -O with recent binutils (trunk). ++ * Revert doing link tests to check for the atomic builtins, disabling ++ exception propagation support in libstdc++ on armel. See PR40133, PR40134. ++ * On mips/mipsel don't run the java testsuite with -mabi=64. ++ * Default to armv4 for the gcc-snapshot package as well. Closes: #523936. ++ * Mention GCC trunk in the gcc-snapshot package description. Closes: #526309. ++ * Remove unneed '..' elements from symlinks in JAVA_HOME. ++ * Fix some lintian warnings for gcc-snapshot. ++ ++ [ Arthur Loiret ] ++ * Add missing dir separator to multiarch path. Closes: #527537. ++ ++ -- Matthias Klose Sun, 17 May 2009 11:15:52 +0200 ++ ++gcc-4.4 (4.4.0-4) unstable; urgency=medium ++ ++ * Update to SVN 20090506 from the gcc-4_4-branch (r147161). ++ - Fixes PR rtl-optimization/39914, PR testsuite/39776, ++ PR tree-optimization/40022, PR libstdc++/39909. ++ ++ [ Matthias Klose ] ++ * gcc-4.4-source: Don't depend on gcc-4.4-base, depend on quilt ++ and patchutils. ++ * On armel, link the shared libstdc++ with both -lgcc_s and -lgcc. ++ * Update libgcc and libstdc++ symbol files for mips and mipsel. ++ * Update libstdc++ symbol files for armel and hppa, adding symbols ++ for exception propagation support. ++ * Add ARM EABI symbols to libstdc++ symbol files for armel. ++ * Add libobjc symbols file for armel. ++ * Fix PR libstdc++/40038, missing ceill/tanhl symbols in libstdc++. ++ ++ [ Aurelien Jarno ] ++ * Fix libc name for biarch packages on kfreebsd-amd64. ++ ++ -- Matthias Klose Wed, 06 May 2009 15:10:36 +0200 ++ ++gcc-4.4 (4.4.0-3) unstable; urgency=low ++ ++ * libstdc++-doc: Install the man pages again. ++ * Fix build configuration for the GC enabled ObjC runtime library. ++ * Fix thinko in autotools_files, resulting in autoconf not run in ++ some cases. ++ * Do link tests to check for the atomic builtins, enables exception ++ propagation support in libstdc++ on armel and hppa. ++ ++ -- Matthias Klose Sun, 03 May 2009 23:38:56 +0200 ++ ++gcc-4.4 (4.4.0-2) unstable; urgency=low ++ ++ [ Samuel Thibault ] ++ * Enable java build on the hurd. ++ ++ [ Matthias Klose ] ++ * libobjc2.symbols.armel: Remove, use the default one. ++ * Address PR libstdc++/39491, removing __signbitl from the libstdc++6 ++ symbols file on hppa. ++ * libstdc++6.symbols.armel: Fix error introduced with copy from the ++ arm symbols file. ++ * libstdc++6.symbols.*: Don't assume exception propagation support ++ enabled for all architectures (although it should on armel, hppa, ++ sparc). ++ * Disable the build of the ObjC garbage collection library on mips*, ++ working around a build failure. ++ ++ -- Matthias Klose Sat, 02 May 2009 14:22:35 +0200 ++ ++gcc-4.4 (4.4.0-1) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Update to SVN 20090429 from the gcc-4_4-branch (r146989). ++ * Configure java enabled builds with --enable-java-home. ++ * Integrate the bits previously found in java-gcj-compat. ++ * Rename the packages using the naming schema used for OpenJDK: ++ gcj-X.Y-{jre-headless,jre,jre-lib,jdk,source}. The packages ++ {gij,gcj,gappletviewer}-X.Y and libgcjN-{jar,source} are gone. ++ * Build the libgcj documentation with the just built gjdoc. ++ * Don't use profiled bootstrap when building the gcj source. ++ * Apply proposed patch for PR target/39856. ++ * Fix some lintian warnings. ++ * Don't include debug symbols for libstdc++.so.6, if the library is ++ built by a newer GCC version. ++ * Adjust hrefs to point to the local libstdc++ documentation. LP: #365414. ++ * Update libgcc, libgfortran, libobjc, libstdc++ symbol files. ++ * gcc-4.4: Include libssp_nonshared.a. ++ * For ix86, set the java architecture directory to i386. ++ ++ [ Samuel Thibault ] ++ * Update Hurd changes. ++ * Configure with --enable-clocale=gnu on hurd-i386. ++ * debian/patches/hurd-pthread.diff: Reapply. ++ ++ -- Matthias Klose Thu, 30 Apr 2009 00:30:20 +0200 ++ ++gcc-4.4 (4.4.0-1~exp2) experimental; urgency=low ++ ++ * Update to SVN 20090423 from the gcc-4_4-branch. ++ ++ [ Aurelien Jarno ] ++ * kbsd-gnu.diff: remove parts merged upstream. ++ ++ [ Matthias Klose ] ++ * Remove conflicts/replaces for *-spu packages. ++ * Configure the spu cross compiler without --with-sysroot and ++ --enable-multiarch. ++ * Fix and reenable the gfortran-spu build. ++ * Work around build failures with missing libstdc++ baseline files. ++ * Install gjdoc man page. ++ * Fix java configuration with --enable-java-home and include symlinks ++ for JAVA_HOME in /usr/lib/jvm. ++ * Apply proposed fix for PR middle-end/39794. ++ * Install libstdc++ man pages with suffix .3cxx instead of .3. ++ Closes: #525244. ++ * lib*stdc++6-{dbg,doc}: Add conflicts to the corresponding 4.3 packages. ++ ++ -- Matthias Klose Thu, 23 Apr 2009 18:11:49 +0200 ++ ++gcc-4.4 (4.4.0-1~exp1) experimental; urgency=low ++ ++ * Final GCC 4.4.0 release. ++ ++ * Don't build the Fortran SPU cross compiler, currently broken. ++ * spu cross build: Build without spucache and spumea64. ++ * Configure --with-arch-32=i486 on amd64, i386, and kfreebsd-{amd64,i386}, ++ --with-arch-32=i586 on hurd-i386, --with-cpu=atom on lpia. ++ * Build using profiled bootstrap. ++ * Remove the gcc-4.4-base.postinst. Addresses: #524708. ++ * Update debian/copyright: Include runtime library exception, remove ++ D and Phobas license. ++ * Apply proposed patch for PR libstdc++/39491, missing symbol in libstdc++ ++ on hppa. ++ * Remove unsused soft-fp functions in the 64bit libgcc on powerpc (PR39828). ++ * Update NEWS files for 4.4. ++ * Build again libgfortran for the non-default multilib configuration. ++ * Restore missing chunks in note-gnu-stack.diff, lost during the conversion ++ to quilt. ++ ++ -- Matthias Klose Wed, 22 Apr 2009 00:53:16 +0200 ++ ++gcc-4.4 (4.4-20090418-1) experimental; urgency=low ++ ++ * Update to SVN 20090418 from the gcc-4_4-branch. ++ ++ [ Arthur Loiret ] ++ * Update patches: ++ - boehm-gc-nocheck, cross-include, libjava-rpath, link-libs: ++ Rebase on trunk. ++ - gcc-m68k-pch, libjava-debuginfo, libjava-loading-constraints: ++ Remove, merged in trunk. ++ - cell-branch, cell-branch-doc: Remove, there is no upstream cell 4.4 ++ branch yet. ++ - gdc-fix-build-kbsd-gnu, svn-gdc-updates, gpc-4.1, gpc-gcc-4.x, ++ gpc-names: Remove, gpc and gdc are not ported to GCC 4.4 yet. ++ - svn-class-updates, svn-doc-updates, svn-updates: Make empty. ++ - Refresh all others, and convert them all to quilt. ++ ++ * Build system improvements: ++ - Partial rewrite/refactor of rules files. ++ - Switch patch system to quilt. ++ - Autogenerate debian/copyright. ++ - Use the autoconf2.59 package. ++ ++ * multilib/multiarch support improvements: Closes: #369064, #484589. ++ - mips-triarch.diff: Replace with a newer version (approved upstream). ++ - s390-biarch.diff: Ditto. ++ - debian/rules2: Configure with --enable-targets=all on mips-linux, ++ mipsel-linux and s390-linux. ++ - gcc-multiarch.diff: New, add multiarch include directories and ++ libraries path to the system paths. ++ - debian/rules2: Configure with --enable-multiarch. Configure spu build ++ with --with-multiarch-defaults=spu-elf. ++ - multiarch-include.diff: Remove. ++ - debian/multiarch.inc: Ditto. ++ ++ * cross-compilers changes: ++ - Never build a separated -base package, don't symlink any doc dir. ++ - Build gobjc again. ++ ++ * Run the 64-bit tests with -mabi=64 instead of -m64 on mips/mipsel to ++ hopefully fix the massive failure. ++ * Always set $(distribution) to "Debian" on mips/mipsel, workarounds FTBFS ++ on those archs due to a kernel bug triggered by lsb_release call. ++ Adresses: #524416. ++ * debian/rules.patch: Only apply the ada-nobiarch-check patch when ada is ++ enabled. Remove gpc and gdc patches. ++ * debian/rules.unpack (install_autotools_stamp): Remove. ++ * debian/rules.defs (configure_dependencies): Remove autotools dependency. ++ * debian/rules.conf: Add a copyright-file target. ++ * debian/control.m4: Build-Depends on autoconf2.59 and patchutils. ++ Make gcc-4.4-source Depends on autoconf2.59. ++ Add myself to Uploaders. ++ * debian/rules.d/binary-source.mk: Don't build and install an embedded ++ copy or autoconf2.59 in gcc-4.4-source. ++ * debian/copyright.in: New. ++ ++ [ Matthias Klose ] ++ * Build gcj on hppa. ++ * Add support to build vfp optimized runtime libraries on armel. ++ * gcc-4.4-spu: Depend on newlib-spu. ++ * Fix sections of -dbg and java packages. ++ * gcc-default-ssp.dpatch: Set the default as well, when calling the ++ preprocessor. LP: #346126. ++ * Build-depend on quilt. ++ * Keep the copyright file in the archive. ++ * Remove conflict of the gcc-X.Y-source packages. ++ * Update removal of gfdl doc files for 4.4. ++ * Don't re-run the autotools (introduced with the switch to quilt). ++ * On arm and armel, install the arm_neon.h header. LP: #360819. ++ * When hardening options are turned on by default, patch the testsuite ++ to handle the hardening defaults (Kees Cook). ++ * Only run the patch target once. Avoids multiple autotool runs, but ++ doesn't reflect changes in the series file anymore. ++ * libgcj-doc: Fix documentation title. ++ * Fix gcj source build with recent build changes. ++ * Don't check for libraries in DEB_BUILD_OPTIONS/nolang. ++ * gappletviewer: Include missing binary. ++ ++ [ Aurelien Jarno ] ++ * Remove: patches/kbsd-gnu-ada.dpatch (merged upstream). ++ * kbsd-gnu.diff: add fix for stuff broken by upstream. ++ ++ -- Matthias Klose Mon, 20 Apr 2009 01:34:26 +0200 ++ ++gcc-4.4 (4.4-20090317-1) experimental; urgency=low ++ ++ * Initial upload of GCC-4.4, based on trunk 20090317 (r144904). ++ ++ [Matthias Klose] ++ * Branch from the gcc-4.3 packaging. ++ * Remove *-trunk patches, update remaining patches for the trunk. ++ * Remove patches integrated upstream: libobjc-gc-link, libjava-file-support, ++ libjava-realloc-leak, libjava-armel-ldflags, libstdc++-symbols-hppa, ++ gcc-m68k-pch, libjava-extra-cflags, libjava-javah-bridge-tgts, ++ hppa-atomic-builtins, armel-atomic-builtins, libssp-gnu, libobjc-armel, ++ gfortran-armel-updates, sparc-biarch, libjava-xulrunner-1.9. ++ * Update patches for 4.4, mostly using the patches converted for quilt by ++ Arthur Loiret. ++ * debian/patches/libjava-soname.dpatch: Remove, unmodifed upstream library. ++ * debian/patches/gcc-driver-extra-langs.dpatch: Search Ada files in subdir. ++ * debian/rules.unpack, debian/rules.d/binary-source.mk: Update for included ++ autoconf tarball. ++ * debian/rules.d/binary-{gcc,java}.mk: Install new header files. ++ * debian/libgfortran3.symbols.common: Remove symbol not generated by ++ gfortran (__iso_c_binding_c_f_procpointer@GFORTRAN_1.0), PR38871. ++ * debian/rules.conf: Update for 4.4. ++ * Fix build dependencies and configure options for 4.4, which were applied ++ for snapshot builds only. ++ ++ [Arthur Loiret] ++ * Update patches from debian/patches: ++ - Remove backported fixes: ++ PR ada: pr10768.dpatch, pr15808.dpatch, pr15915.dpatch, pr16086.dpatch, ++ pr16087.dpatch, pr16098.dpatch, pr17985.dpatch, pr18680.dpatch, ++ pr22255.dpatch, pr22387.dpatch, pr28305.dpatch, pr28733.dpatch, ++ pr29015.dpatch, pr30740.dpatch, pr30827.dpatch pr33688.dpatch, ++ pr34466.dpatch, pr35050.dpatch, pr35792.dpatch. ++ PR target: pr27880.dpatch, pr28102.dpatch, pr30961.dpatch, ++ pr35965.dpatch, pr37661.dpatch. ++ PR libgcj: pr24170.dpatch, pr35020.dpatch. ++ PR gcov-profile: pr38292.dpatch. ++ PR other: pr28322.dpatch. ++ * debian/rules.patch: Update. ++ * debian/symbols/libgomp1.symbols.common: Add new symbols from OpenMP 3.0. ++ ++ -- Matthias Klose Tue, 17 Mar 2009 02:28:01 +0100 ++ ++gcc-4.3 (4.3.3-5) unstable; urgency=low ++ ++ Merge from gnat-4.3 (4.3.3-1): ++ ++ [Petr Salinger] ++ * debian/patches/ada-libgnatprj.dpatch: enable support for GNU/kFreeBSD. ++ Fixes: #512277. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-acats.dpatch: attempt to fix ACATS tests (not entirely ++ successful yet). ++ * New upstream version. Fixes: #514565. ++ ++ [Matthias Klose] ++ * Update to SVN 20090301 from the gcc-4_3-branch. ++ - Fix PR c/35446, PR c++/38950, PR fortran/38852, PR fortran/39006, ++ PR c++/39225 (closes: #516727), PR c++/38950, PR target/38056, ++ PR target/39228, PR middle-end/36578, PR inline-asm/39058, ++ PR middle-end/37861. ++ * Don't provide the 4.3.2 symlink in gcc_lib_dir anymore. ++ * Require binutils-2.19.1. ++ ++ -- Matthias Klose Sun, 01 Mar 2009 14:18:09 +0100 ++ ++gcc-4.3 (4.3.3-4) unstable; urgency=low ++ ++ * Fix Fix PR gcov-profile/38292 (wrong profile information), taken ++ from the trunk. ++ * Update to SVN 20090215 from the gcc-4_3-branch. ++ Fix PR c/35435, PR tree-optimization/39100, PR rtl-optimization/39076, ++ PR c/35433, PR tree-optimization/39041, PR target/38988, ++ PR middle-end/38969, PR c++/36897, PR c++/39054, PR c/39035, PR c/35434, ++ PR c/36432, PR target/38991, PR c/39084, PR target/39118. ++ * Reapply the fix for PR middle-end/38615. ++ * Include autoconf-2.59 sources into the source package, and install as ++ part of the gcc-4.3-source package. ++ * Explicitely use autoconf-1.9. ++ * Disable building the gcjwebplugin. ++ * Don't configure with --enable-cld on amd64 and i386. ++ ++ -- Matthias Klose Sun, 15 Feb 2009 23:40:09 +0100 ++ ++gcc-4.3 (4.3.3-3) unstable; urgency=medium ++ ++ * Revert fix for PR middle-end/38615. Closes: #513420. ++ ++ -- Matthias Klose Thu, 29 Jan 2009 07:05:15 +0100 ++ ++gcc-4.3 (4.3.3-2) unstable; urgency=low ++ ++ * Update to SVN 20090127 from the gcc-4_3-branch. ++ - Fix PR tree-optimization/38359. Closes: #492505. ++ - Fix PR tree-optimization/38932 (ice-on-valid-code), PR target/38931 ++ (ice-on-valid-code), PR rtl-optimization/38879 (wrong-code), ++ PR c++/23287 (rejects-valid), PR fortran/38907 (ice-on-valid-code), ++ PR fortran/38859 (wrong-code), PR fortran/38657 (rejects-valid), ++ PR fortran/38672 (ice-on-valid-code). ++ * Fix PR middle-end/38969, taken from the trunk. Closes: #513007. ++ ++ -- Matthias Klose Tue, 27 Jan 2009 23:42:45 +0100 ++ ++gcc-4.3 (4.3.3-1) unstable; urgency=low ++ ++ * GCC-4.3.3 release (no changes compared to the 4.3.2-4 upload). ++ * Fix PR middle-end/38615 (wrong code, taken from the trunk). ++ ++ -- Matthias Klose Sat, 24 Jan 2009 14:43:09 +0100 ++ ++gcc-4.3 (4.3.2-4) unstable; urgency=medium ++ ++ * Update to SVN 20090119 from the gcc-4_3-branch. ++ - Fix PR tree-optimization/36765 (wrong code). ++ * Remove patch for PR 34571, applied upstream (fix build failure on alpha). ++ * Apply proposed patch for PR middle-end/38902 (wrong code). ++ ++ -- Matthias Klose Tue, 20 Jan 2009 00:22:41 +0100 ++ ++gcc-4.3 (4.3.2-3) unstable; urgency=low ++ ++ * Update to SVN 20090117 from the gcc-4_3-branch (4.3.3 release candidate). ++ - Fix PR target/34571, PR debug/7055, PR tree-optimization/37194, ++ PR tree-optimization/38529, PR fortran/38763, PR fortran/38765, ++ PR fortran/38669, PR fortran/38487, PR fortran/35681, PR fortran/38657, ++ PR c++/36019, PR c++/31488, PR c++/37646, PR c++/36334, PR c++/38357, ++ PR c++/31260, PR c++/38877, PR libstdc++/36801, PR libgcj/38396. ++ - debian/patches/libgcj-bc.dpatch: Remove, applied upstream. ++ * Fix PR middle-end/38616 (wrong code with -fstack-protector). ++ * Update backport for PR28322 (Gunther Nikl). ++ ++ -- Matthias Klose Sat, 17 Jan 2009 21:09:35 +0100 ++ ++gcc-4.3 (4.3.2-2) unstable; urgency=low ++ ++ * Update to SVN 20090110 from the gcc-4_3-branch. ++ - Fix PR target/36654, PR tree-optimization/38752, PR fortran/38675, ++ PR fortran/37469, PR libstdc++/38000. ++ ++ -- Matthias Klose Sat, 10 Jan 2009 18:32:34 +0100 ++ ++gcc-4.3 (4.3.2-2~exp5) experimental; urgency=low ++ ++ * Adjust build-dependencies for cross builds. Closes: #499998. ++ * Update to SVN 20081231 from the gcc-4_3-branch. ++ - Fix PR middle-end/38565, PR target/38062, PR bootstrap/38383, ++ PR target/38402, PR testsuite/35677, PR tree-optimization/38478, ++ PR target/38054, PR middle-end/29056, PR testsuite/28870, ++ PR target/38254. ++ - Fix PR libstdc++/37144, PR c++/37582, PR libstdc++/38080. ++ - Fix PR fortran/38602, PR fortran/38602, PR fortran/38487, ++ PR fortran/38113, PR fortran/35983, PR fortran/35937, PR testsuite/36889. ++ * Update the spu cross compiler from the cell-gcc-4_3-branch 20081217. ++ * debian/patches/libobjc-armel.dpatch: Don't define EH_USES. ++ * Apply the Atomic builtins patch for PARISC. ++ ++ -- Matthias Klose Thu, 18 Dec 2008 00:34:46 +0100 ++ ++gcc-4.3 (4.3.2-2~exp4) experimental; urgency=low ++ ++ * Update to SVN 20081130 from the gcc-4_3-branch. ++ - Fix PR bootstrap/33304, PR middle-end/37807, PR middle-end/37809, ++ PR rtl-optimization/37489, PR target/35574, PR c/37924, ++ PR tree-optimization/37879, PR middle-end/37858, PR middle-end/37870, ++ PR target/38016, PR target/37939, PR rtl-optimization/37769, ++ PR target/37909, PR fortran/37597, PR fortran/35820, PR fortran/37445, ++ PR fortran/PR35769, PR fortran/37903, PR fortran/37749. ++ - Fix PR target/37640, PR tree-optimization/37868, PR bootstrap/33100, ++ PR other/38214, PR c++/37142, PR c++/35405, PR c++/37563, PR c++/38030, ++ PR c++/37932, PR c++/38007. ++ - Fix PR fortran/37836, PR fortran/38171, PR fortran/35681, ++ PR fortran/37792, PR fortran/37926, PR fortran/38033, PR fortran/36526. ++ - Fix PR target/38287. Closes: #506713. ++ * Atomic builtins using kernel helpers for PARISC and ARM Linux/EABI, taken ++ from the trunk. ++ ++ -- Matthias Klose Mon, 01 Dec 2008 01:29:51 +0100 ++ ++gcc-4.3 (4.3.2-2~exp3) experimental; urgency=low ++ ++ * Update to SVN 20081117 from the gcc-4_3-branch. ++ * Add build dependencies on spu packages for snapshot builds. ++ * Add build dependency on libantlr-java for snapshot builds. ++ * Disable fortran on spu for snapshot builds. ++ * Add dependency on binutils-{hppa64,spu} for snapshot builds. ++ ++ -- Matthias Klose Mon, 17 Nov 2008 21:57:51 +0100 ++ ++gcc-4.3 (4.3.2-2~exp2) experimental; urgency=low ++ ++ * Update to SVN 20081023 from the gcc-4_3-branch. ++ - General regression fixes: PR rtl-optimization/37882 (wrong code), ++ - Fortran regression fixes: PR fortran/37787, PR fortran/37723. ++ * Use gij-4.3 for builds in java maintainer mode. ++ * Don't run the testsuite with -fstack-protector for snapshot builds. ++ * Update the spu cross compiler from the cell-gcc-4_3-branch 20081023. ++ Don't disable multilibs, install additional components in the gcc-4.3-spu ++ package. ++ * Enable building the spu cross compiler for powerpc and ppc64 snapshot ++ builds. ++ * Apply proposed patch for PR tree-optimization/37868 (wrong code). ++ * Apply proposed patch to parallelize make check. ++ * For biarch builds, disable the gnat testsuite for the non-default ++ architecture (no biarch support in gnat yet). ++ ++ -- Matthias Klose Thu, 23 Oct 2008 22:06:38 +0200 ++ ++gcc-4.3 (4.3.2-2~exp1) experimental; urgency=low ++ ++ * Update to SVN 20081017 from the gcc-4_3-branch. ++ - General regression fixes: PR rtl-optimization/37408 (wrong code), ++ PR tree-optimization/36630, PR tree-optimization/37102 (wrong code), ++ PR c/35437 (ice on invalid code), PR middle-end/37731 (wrong code), ++ PR target/37603 (wrong code, hppa), PR tree-optimization/35737 (ice on ++ valid code), PR middle-end/36575 (wrong code), PR c/37645 (ice on valid ++ code), PR tree-optimization/37539 (compile time hog), PR middle-end/37236 ++ (ice on invalid code), PR tree-optimization/36343 (wrong code), ++ PR rtl-optimization/37544 (wrong code), PR target/35620 (ice on valid ++ code), PR target/35713 (ice on valid code, wrong code), PR c/35712 (wrong ++ code), PR target/37466 (wrong code, AVR). ++ - C++ regression fixes: PR c++/37389 (LP: #252301), PR c++/37555 (ice on ++ invalid code). ++ - Fortran regression fixes: PR fortran/37199, PR fortran/36214, ++ PR fortran/35770, PR fortran/36454, PR fortran/36374, PR fortran/37274, ++ PR fortran/37583, PR fortran/36700, PR fortran/35945, PR fortran/37626, ++ PR fortran/37504, PR fortran/37580, PR fortran/37706, PR fortran/35680, ++ PR fortran/37794. ++ * Remove obsolete patches: ada-driver.dpatch, pr33148.dpatch. ++ * Fix naming of bridge targets in gjavah (wrong header generation). ++ * Fix PR target/37661, SPARC64 int-to-TFmode conversions. ++ * Include the complete test summaries in a binary package, to allow ++ regression checking from the previous build. ++ * Tighten inter-package dependencies to (>= 4.3.2-1). ++ * Drop the 4.3.1 symlink in gcc_lib_dir, add a 4.3.3 symlink to 4.3. ++ ++ -- Matthias Klose Fri, 17 Oct 2008 23:26:50 +0200 ++ ++gcc-4.3 (4.3.2-1) unstable; urgency=medium ++ ++ [Matthias Klose] ++ * Final gcc-4.3.2 release (regression fixes). ++ - Remove the generated install docs from the tarball (GFDL licensed). ++ - C++ regression fixes: PR debug/37156. ++ - general regression fixes: PR debug/37156, PR target/37101. ++ - Java regression fixes: PR libgcj/8995. ++ * Update to SVN 20080905 from the gcc-4_3-branch. ++ - C++ regression fixes: PR c++/36741 (wrong diagnostic), ++ - general regression fixes: PR target/37184 (ice on valid code), ++ PR target/37191 (ice on valid code), PR target/37197 (ice on valid code), ++ PR middle-end/36817 (ice on valid code), PR middle-end/36548 (wrong code), ++ PR middle-end/37125 (wrong code), PR c/37261 (wrong diagnostic), ++ PR target/37168 (ice on valid code), PR middle-end/36449 (wrong code), ++ PR middle-end/37248 (missed optimization), PR target/36332 (wrong code). ++ - Fortran regression fixes: PR fortran/37193 (rejects valid code). ++ * Move symlinks in gcc_lib_dir from cpp-4.3 to gcc-4.3-base. Closes: #497369. ++ * Don't build-depend on autogen on architectures where it is not installable ++ (needed for the fixincludes testsuite only); don't build-depend on it for ++ source packages not running the fixincludes testsuite. ++ ++ [Ludovic Brenta] ++ * Add sdefault.ads to libgnatprj4.3-dev. Fixes: #492866. ++ * turn gnatvsn.gpr and gnatprj.gpr into proper library project files. ++ * Unconditionally build-depend on gnat when building gnat-4.3. ++ Fixes: #487564. ++ * (debian/rules.d/binary-ada.mk): Add a symlink libgnat.so to ++ /usr/lib/libgnat-4.3.so in the adalib directory. Fixes: #493814. ++ * (debian/patches/ada-sjlj.dpatch): remove dangling symlinks from all ++ adalib directories. ++ * debian/patches/ada-alpha.dpatch: remove, applied upstream. ++ ++ [Samuel Tardieu, Ludovic Brenta] ++ * debian/patches/pr16086.dpatch: new; backport from GCC 4.4. ++ Closes: #248172. ++ * debian/patches/pr35792.dpatch: new; backport from GCC 4.4. ++ * debian/patches/pr15808.dpatch (fixes: #246392), ++ debian/patches/pr30827.dpatch: new; backport from the trunk. ++ ++ -- Matthias Klose Fri, 05 Sep 2008 22:52:58 +0200 ++ ++gcc-4.3 (4.3.1-9) unstable; urgency=low ++ ++ * Update to SVN 20080814 from the gcc-4_3-branch. ++ - C++/libstdc++ regression fixes: PR c++/36688, PR c++/37016, PR c++/36999, ++ PR c++/36405, PR c++/36767, PR c++/36852. ++ - general regression fixes: PR target/36613, PR rtl-optimization/36998, ++ PR middle-end/37042, PR middle-end/35432, PR target/35659, ++ PR middle-end/37026, PR middle-end/36691, PR tree-optimization/36991, ++ PR rtl-optimization/35542, PR bootstrap/35752, PR rtl-optimization/36419, ++ PR debug/36278, PR preprocessor/36649, PR rtl-optimization/36929, ++ PR tree-optimization/36830, PR c/35746, PR middle-end/37014, ++ PR middle-end/37103. ++ - Fortran regression fixes: PR fortran/36132. ++ - Java regression fixes: PR libgcj/31890. ++ - Fixes PR middle-end/37090. Closes: #494815. ++ ++ -- Matthias Klose Thu, 14 Aug 2008 18:02:52 +0000 ++ ++gcc-4.3 (4.3.1-8) unstable; urgency=low ++ ++ * Undo Revert PR tree-optimization/36262 on i386 (PR 36917 is invalid). ++ ++ -- Matthias Klose Fri, 25 Jul 2008 21:47:52 +0200 ++ ++gcc-4.3 (4.3.1-7) unstable; urgency=low ++ ++ * Update to SVN 20080722 from the gcc-4_3-branch. ++ - Fix PR middle-end/36811, infinite loop building with -O3. ++ - C++/libstdc++ regression fixes: PR c++/36407, PR c++/34963, ++ PR libstdc++/36832, PR libstdc++/36552, PR libstdc++/36729. ++ - Fortran regression fixes: PR fortran/36366, PR fortran/36824. ++ - general regression fixes: PR middle-end/36877, PR target/36780, ++ PR target/36827, PR rtl-optimization/35281, PR rtl-optimization/36753, ++ PR target/36827, PR target/36784, PR target/36782, PR middle-end/36369, ++ PR target/36780, PR target/35492, PR middle-end/36811, ++ PR rtl-optimization/36419, PR target/35802, PR target/36736, ++ PR target/34780. ++ * Revert PR tree-optimization/36262 on i386, causing miscompilation of ++ OpenJDK hotspot. ++ * gij/gcj: Don't remove alternatives on upgrade. Addresses: #479950. ++ ++ -- Matthias Klose Tue, 22 Jul 2008 23:55:54 +0200 ++ ++gcc-4.3 (4.3.1-6) unstable; urgency=low ++ ++ * Start the logwatch script on alpha as well to avoid timeouts in ++ the testsuite. ++ ++ -- Matthias Klose Mon, 07 Jul 2008 11:31:58 +0200 ++ ++gcc-4.3 (4.3.1-5) unstable; urgency=low ++ ++ * Update to SVN 20080705 from the gcc-4_3-branch. ++ - Fix PR target/36634, wrong-code on powerpc with -msecure-plt. ++ * Fix PR target/35965, PIC + -fstack-protector on arm/armel. Closes: #469517. ++ * Don't run the libjava testsuite with -mabi=n32. ++ * Update patch for PR other/28322, that unknown -Wno-* options do not ++ cause errors, but warnings instead. ++ * On m68k, add -fgnu89-inline when in gnu99 mode (requested by Michael ++ Casadeval for the m68k port). Closes: #489234. ++ ++ -- Matthias Klose Sun, 06 Jul 2008 01:39:30 +0200 ++ ++gcc-4.3 (4.3.1-4) unstable; urgency=low ++ ++ * Revert: debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. ++ * Remove obsolete multiarch-lib patch. ++ ++ -- Matthias Klose Mon, 30 Jun 2008 23:05:17 +0200 ++ ++gcc-4.3 (4.3.1-3) unstable; urgency=medium ++ ++ [Arthur Loiret] ++ * debian/rules2: ++ - configure sh4-linux with --with-multilib-list=m4,m4-nofpu ++ and --with-cpu=sh4. ++ - configure sparc-linux with --enable-targets=all on snapshot builds ++ (change already in 4.3.1-1). ++ * debian/rules.patch: Don't apply sh4-multilib.dpatch. ++ ++ [Matthias Klose] ++ * Update to SVN 20080628 from the gcc-4_3-branch. ++ - Fix PR target/36533, wrong-code with incorrectly assumed aligned_operand. ++ Closes: #487115. ++ * debian/rules.defs: Remove hurd-i386 from ssp_no_archs (Samuel Thibault). ++ Closes: #483613. ++ * Do not create a /usr/lib/gcc//4.3.0 symlink. ++ * debian/patches/gcc-multilib64dir.dpatch: Remove obsolete patch. ++ * libjava/classpath: Set and use EXTRA_CFLAGS (taken from the trunk). ++ ++ -- Matthias Klose Sat, 28 Jun 2008 16:00:38 +0200 ++ ++gcc-4.3 (4.3.1-2) unstable; urgency=low ++ ++ * Update to SVN 20080610 from the gcc-4_3-branch. ++ - config.gcc: Fix quoting for in the enable_cld test. ++ * Use GNU locales on hurd-i386 (Samuel Thibault). Closes: #485395. ++ * libstdc++-doc: Fix URL's for locally installed docs. Closes: #485133. ++ * libjava: On armel apply kludge to fix unwinder infinitely looping 'til ++ it runs out of memory. ++ * Adjust dependencies to require GCC 4.3.1. ++ ++ -- Matthias Klose Wed, 11 Jun 2008 00:35:38 +0200 ++ ++gcc-4.3 (4.3.1-1) unstable; urgency=high ++ ++ [Samuel Tardieu, Ludovic Brenta] ++ * debian/patches/pr16087.dpatch: new. Fixes: #248173. ++ * Correct the patches from the previous upload. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-acats.dpatch: really run the just-built gnat, not the ++ bootstrap gnat. ++ * debian/rules2: when running the Ada test suite, do not run the multilib ++ tests as gnat does not support multilib yet. ++ * Run the ACATS testsuite again (patch it so it correctly finds gnatmake). ++ ++ [Thiemo Seufer] ++ * debian/patches/ada-libgnatprj.dpatch, ++ debian/patches/ada-mips{,el}.dpatch: complete support for mips and mipsel. ++ Fixes: #482433. ++ ++ [Matthias Klose] ++ * GCC-4.3.1 release. ++ * Do not include standard system paths in libgcj pkgconfig file. ++ * Suggest the correct libmudflap0-dbg package. ++ * Fix PR libjava/35020, taken from the trunk. ++ * Apply proposed patch for PR tree-optimization/36343. ++ * On hurd-i386 with -fstack-protector do not link with libssp_nonshared ++ (Samuel Thibault). Closes: #483613. ++ * Apply proposed patch for PR tree-optimization/34244. ++ * Remove debian-revision in symbols files. ++ * Fix installation of all biarch -multilib packages which are not triarch. ++ * Fix some lintian warnings. ++ * Include library symlinks in gobjc and gfortran multilib packages, when ++ not building the library packages. ++ * Fix sections in doc-base files. ++ * Don't apply the sparc-biarch patch when building the gcc-snapshot package. ++ * libjava: Add @file support for gjavah & gjar. ++ * Apply patch for PR rtl-optimization/36111, taken from the trunk. ++ ++ * Closing reports reported against gcc-4.0 and fixed in gcc-4.3: ++ - General ++ + Fix PR optimization/3511, inlined strlen() could be smarter. ++ Close: #86251. ++ - C ++ + Fix PR c/9072, Split of -Wconversion in two different flags. ++ Closes: #128950, #226952. ++ - C++/libstdc++ ++ + PR libstdc++/24660, implement versioning weak symbols in libstdc++. ++ Closes: #328421. ++ - Architecture specific: ++ - mips ++ + PR target/26560, unable to find a register to spill in class ++ 'FP_REGS'. Closes: #354439. ++ - sparc ++ + Fix PR rtl-optimization/23454, ICE in invert_exp_1. Closes: #340951. ++ * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: ++ - General ++ + PR tree-optimization/30132, ICE in find_lattice_value. Closes: #400484. ++ + PR other/29534, ICE in "gcc -O -ftrapv" with decreasing array index. ++ Closes: #405065. ++ + Incorrect SSE2 code generation for vector initialization. ++ Closes: #406442. ++ + Fix segfault in cc1 due to infinite loop in error() when using -ftrapv. ++ Closes: #458072. ++ + Fix regression in code size with -Os compared to GCC-3.3. ++ Closes: #348298. ++ - C++ ++ + Fix initialization of global variables with non-constant initializer. ++ Closes: #446067. ++ + Fix ICE building muse. Closes: #429385. ++ * Closing reports reported against gcc-4.1 and fixed in gcc-4.3: ++ - C++ ++ + PR c++/28705, ICE: in type_dependent_expression_p. Closes: #406324. ++ + PR c++/7302, -Wnon-virtual-dtor should't complain of protected dtor. ++ Closes: #356316. ++ + PR c++/28316, PR c++/24791, PR c++/20133, ICE in instantiate_decl. ++ Closes: #327346, #355909. ++ - Fortran ++ + PR fortran/31639, ICE in gfc_conv_constant. Closes: #401496. ++ - Java ++ + Fix ICE using gcj with --coverage. Closes: #416326. ++ + PR libgcj/29869, LogManager class loading failure. Closes: #399251 ++ + PR swing/29547 setText (String) of JButton does not work ++ with HTML code. Closes: #392791. ++ + PR libgcj/29178, CharsetEncoder.canEncode() gives different results ++ than Sun version. Closes: #388596. ++ + PR java/8923, ICE when modifying a variable decleared "final static". ++ Closes: #351512. ++ + PR java/22507, segfault building Apache Cocoon. Closes: #318534. ++ + PR java/2499, class members should be inherited from implemented ++ interfaces. Closes: #225434. ++ + PR java/10581, ICE compiling freenet. Closes: #186922. ++ + PR libgcj/28340, gij ignores -Djava.security.manager. Closes: #421098. ++ + PR java/32846, build failure on GNU/Hurd. Closes: #408888. ++ + PR java/29194, fails to import package from project. Closes: #369873. ++ + PR libgcj/31700, -X options not recognised by JNI_CreateJavaVM. ++ Closes: #426742. ++ + java.util.Calendar.setTimeZone fails to set ZONE_OFFSET. ++ Closes: #433636. ++ - Architecture specific: ++ - alpha ++ + C++, fix segfault in constructor with -Os. Closes: #438436. ++ - hppa ++ + PR target/30131, ICE in propagate_one_insn. Closes: #397341. ++ - m32r ++ + PR target/28508, assembler error (operand out of range). ++ Closes: #417542. ++ - m68k ++ + PR target/34688, ICE in output_operand. Closes: #459429. ++ * Closing reports reported against gcc-4.2 and fixed in gcc-4.3: ++ - General ++ + PR tree-optimization/33826, wrong code generation for infinitely ++ recursive functions. Closes: #445536. ++ - C++ ++ + PR c++/24791, ICE on invalid instantiation of template's static member. ++ Closes: #446698. ++ ++ [Aurelien Jarno] ++ * Really apply arm-funroll-loops.dpatch on arm and armel. Closes: #476460. ++ ++ -- Matthias Klose Sat, 07 Jun 2008 23:16:21 +0200 ++ ++gcc-4.3 (4.3.0-5) unstable; urgency=medium ++ ++ * Update to SVN 20080523 from the gcc-4_3-branch. ++ - Remove gcc-i386-emit-cld patch. ++ - On Debian amd64 and i386 configure with --enable-cld. ++ * Fix PR tree-optimization/36129, ICE with -fprofile-use. ++ * Add spu build dependencies independent of the architecture. ++ * Move arm -funroll-loops fix to arm-funroll-loops from ++ gfortran-armel-updates. Apply it on both arm and armel. ++ Closes: #476460. ++ * Use iceape-dev as a build dependency for Java enabled builds. ++ * Build the sru cross compiler from a separate source dir without applying ++ the hardening patches. ++ ++ -- Matthias Klose Fri, 23 May 2008 10:12:02 +0200 ++ ++gcc-4.3 (4.3.0-4) unstable; urgency=low ++ ++ [ Aurelien Jarno ] ++ * Fix gnat-4.3 build on mips/mipsel. ++ * Update libgcc1 symbols for hurd-i386. ++ ++ [ Arthur Loiret ] ++ * Make gcc-4.3-spu Recommends newlib-spu. Closes: #476088 ++ * Build depend on spu build dependencies only when building ++ as gcc-4.x source package. ++ * Disable spu for snapshot builds. ++ * Support sh4 targets: ++ - sh4-multilib.dpatch: Add, fix multilib (m4/m4-nofpu) for sh4-linux ++ - multiarch-include.dpatch: Don't apply on sh4. ++ ++ [ Matthias Klose ] ++ * Stop building libffi packages. ++ * Update to SVN 20080501 from the gcc-4_3-branch. ++ - Fix PR target/35662, wrong gfortran code on mips/mipsel. Closes: #476427. ++ - Fixes mplayer build on powerpc. Closes: #475153. ++ * Stop building gij/gcj on alpha, arm and hppa. Closes: #459560. ++ * libstdc++6-4.3-doc: Fix file location in doc-base file. Closes: #476253. ++ * debian/patches/template.dpatch: Remove the `exit 0' line. ++ * Fix alternative names for amd64 cross builds. Addresses: #466422. ++ * debian/copyright: Update to GPLv3, remove the text of the GFDL ++ and reference the copy in common-licenses. ++ * Generate the locale data for the testsuite, if the locales package ++ is installed (not a dependency on all archs). ++ * Update libgcc2 symbols for m68k, libstdc++6 symbols for arm, m68k, mips ++ and mipsel. ++ * Do not include a symbols file for libobjc_gc.so. ++ * Add four more symbols to libgcj_bc, patch taken from the trunk. ++ * Adjust names of manual pages in the spu build on powerpc. ++ * ARM EABI (armel) updates (Andrew Jenner, Julian Brown): ++ - Add Objective-C support. ++ - Fortran support patches. ++ - Fix ICE in gfortran.dg/vector_subscript_1.f90 for -Os -mthumb reload. ++ * Build ObjC and Obj-C++ packages on armel. ++ * Reenable running the testsuite on m68k. ++ ++ [Samuel Tardieu, Ludovic Brenta] ++ * debian/patches/gnalasup_to_lapack.dpatch: new. ++ * debian/patches/pr34466.dpatch, ++ debian/patches/pr22255.dpatch, ++ debian/patches/pr33688.dpatch, ++ debian/patches/pr10768.dpatch, ++ debian/patches/pr28305.dpatch, ++ debian/patches/pr17985.dpatch (#278685) ++ debian/patches/pr15915.dpatch, ++ debian/patches/pr16098.dpatch, ++ debian/patches/pr18680.dpatch, ++ debian/patches/pr28733.dpatch, ++ debian/patches/pr22387.dpatch, ++ debian/patches/pr29015.dpatch: new; backport Ada bug fixes from GCC 4.4. ++ * debian/patches/rules.patch: apply them. ++ * debian/patches/pr35050.dpatch: update. ++ ++ [Andreas Jochens] ++ * debian/patches/ppc64-ada.dpatch: update, adding support for ppc64. ++ (#476868). ++ ++ [Ludovic Brenta] ++ * Apply ppc64-ada.dpatch whenever we build libgnat, not just on ppc64. ++ * debian/patches/pr28322.dpatch: never pass -Wno-overlength-strings to ++ the bootstrap compiler, as the patch breaks the detection of whether ++ the bootstrap compiler supports this option or not. ++ Fixes: #471192. Works around #471767. ++ * Merge Aurélien Jarno's mips patch. Fixes: #472854. ++ ++ [ Samuel Tardieu ] ++ * debian/patches/pr30740.dpatch: new Ada bug fix. ++ * debian/patches/pr35050.dpatch: new Ada bug fix. ++ ++ [ Xavier Grave ] ++ * debian/patches/ada-mips{,el}.dpatch: new; split mips/mipsel support ++ into new patches, out of ada-sjlj.dpatch. ++ * debian/rules.d/binary-ada.mk: fix the version number of libgnarl-4.3.a. ++ ++ [Roman Zippel] ++ * PR target/25343, fix gcc.dg/pch/pch for m68k. ++ ++ -- Matthias Klose Thu, 01 May 2008 21:08:09 +0200 ++ ++gcc-4.3 (4.3.0-3) unstable; urgency=medium ++ ++ [ Matthias Klose ] ++ * Update to SVN 20080401 from the gcc-4_3-branch. ++ - Fix PR middle-end/35705 (hppa only). ++ * Update libstdc++6 symbols for hurd-i386. Closes: #472334. ++ * Update symbol files for libgomp (ppc64). ++ * Only apply the gcc-i386-emit-cld patch on amd64 and i386 architectures. ++ * Update libstdc++ baseline symbols for hppa. ++ * Install powerpc specific header files new in 4.3. ++ * gcc-4.3-hppa64: Don't include the install tools in the package. ++ ++ [ Aurelien Jarno ] ++ * Fix gobjc-4.3-multilib dependencies. Closes: #473455. ++ * Fix gnat-4.3 build on mips/mipsel. ++ * patches/ada-alpha.dpatch: new patch to fix gnat-4.3 build on alpha. ++ Closes: #472852. ++ * patches/config-ml.dpatch: also check for n32 multidir. ++ ++ [ Arthur Loiret ] ++ * Build-Depends on binutils (>= 2.18.1~cvs20080103-2) on mips and mipsel, ++ required for triarch. ++ * libstdc++-pic.dpatch: Update, don't fail anymore if shared lib is disabled. ++ ++ [ Andreas Jochens ] ++ * Fix build failures on ppc64. Closes: #472917. ++ - gcc-multilib64dir.dpatch: Remove "msoft-float" and "nof" from MULTILIB ++ variables. ++ - Removed ppc64-biarch.dpatch. ++ - Add debian/lib32gfortan3.symbols.ppc64. ++ ++ [ Arthur Loiret, Matthias Klose ] ++ * Build compilers for spu-elf target on powerpc and ppc64. ++ - Add gcc-4.3-spu, g++-4.3-spu and gfortran-4.3-spu packages. ++ - Partly based on the work in Ubuntu on the spu toolchain. ++ ++ -- Matthias Klose Tue, 01 Apr 2008 23:29:21 +0000 ++ ++gcc-4.3 (4.3.0-2) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20080321 from the gcc-4_3-branch. ++ - Remove some broken code that attempts to enforce linker ++ constraints. Closes: #432541. ++ * Temporary fix, will be removed once a fixed kernel is available ++ in testing: Emit cld instruction when stringops are used (i386). ++ Do not expose the -mcld option until added upstream. Closes: #469567. ++ * Update NEWS files. ++ * libjava: Don't leak upon failed realloc (taken from the trunk). ++ * debian/rules2: The build is not yet prepared to take variables from ++ the environment; unexport and unset those. ++ ++ [Arthur Loiret/Aurelien Jarno] ++ * MIPS tri-arch support: ++ - mips-triarch.dpatch: new patch to default to o32 and follow the ++ glibc convention for n32 & 64 bit names. ++ - Rename $(biarch) and related vars into $(biarch64). ++ - Fix biarchsubdir to allow triarch. ++ - Add biarchn32 support. ++ - Add mips and mipsel to biarch64 and biarchn32 archs. ++ - Update binary rules for biarchn32 and libn32 targets. ++ - Fix multilib deps for triarch. ++ - control.m4: Add libn32 packages. ++ ++ -- Matthias Klose Sat, 22 Mar 2008 00:06:33 +0100 ++ ++gcc-4.3 (4.3.0-1) unstable; urgency=low ++ ++ [Matthias Klose] ++ * GCC-4.3.0, final release. ++ * Update to SVN 20080309 from the gcc-4_3-branch. ++ * Build from a modified tarball, without GFDL documentation with ++ invariant sections and cover texts. ++ * debian/rules.unpack: Avoid make warnings. ++ * debian/rules.d/binary-cpp.mk: Add 4.3.0 symlink in gcclibdir. ++ * Stop building treelang (removed upstream). ++ * gcj-4.3: Hardcode libgcj-bc dependency, don't run dh_shlibdeps on ecj1. ++ ++ [Aurelien Jarno] ++ * Update libssp-gnu.dpatch and reenable it. ++ ++ -- Matthias Klose Sun, 09 Mar 2008 15:18:08 +0100 ++ ++gcc-4.3 (4.3.0~rc2-1) unstable; urgency=medium ++ ++ * Update to SVN 20080301 from the gcc-4_3-branch. ++ * Include the biarch libobjc_gc library in the packages. ++ * Link libobjc_gc with libgcjgc_convenience.la. ++ * Add new symbols to libstdc++6 symbol files, remove the symbols for ++ support (reverted upstream for the 4.3 branch). ++ * Disable running the testsuite on m68k. ++ * Update PR other/28322, ignore only unknown -W* options. ++ ++ -- Matthias Klose Sat, 01 Mar 2008 15:09:16 +0100 ++ ++gcc-4.3 (4.3-20080227-1) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20080227 from the gcc-4_3-branch. ++ * Fix PR other/28322, GCC new warnings and compatibility. ++ Addresses: #367657. ++ ++ [Hector Oron] ++ * Fix cross-compile builds. Closes: #467471. ++ ++ -- Matthias Klose Thu, 28 Feb 2008 00:30:38 +0100 ++ ++gcc-4.3 (4.3-20080219-1) unstable; urgency=medium ++ ++ [Matthias Klose] ++ * Update to SVN 20080219 from the gcc-4_3-branch. ++ * Apply proposed patch for PR target/34571 (alpha). ++ * libgcj9-dev: Don't claim that the package contains the static ++ libraries. ++ * libjava-xulrunner1.9.dpatch: Add configure check for xulrunner-1.9. ++ Name the alternative xulrunner-1.9-javaplugin.so. ++ * libgcj-doc: Don't include the examples; these cannot be built ++ with the existing Makefile anyway. Addresses: #449608. ++ * Manpages for gc-analyze and grmic are GFDL. Don't include these when ++ building DFSG compliant packages. ++ * Fix build failure building amd64 cross-target libstdc++ packages ++ (Tim Bagot). Addresses: #464365. ++ * Fix typos in rename-info-files patch (Richard Guenther). ++ * Fix PR libgcj/24170. ++ ++ [Aurelien Jarno] ++ * kbsd-gnu-ada.dpatch: new patch to fix build on GNU/kFreeBSD. ++ ++ [Ludovic Brenta] ++ * debian/rules.defs: Temporarily disable the testsuite when building gnat. ++ * debian/patches/libffi-configure.dpatch: run autoconf in the top-level ++ directory, where we've changed configure.ac; not in src/gcc. ++ * debian/patches/ada-sjlj.dpatch: do not run autoconf since we don't ++ change configure.ac. ++ * debian/control.m4 (gnat-4.3-doc): conflict with gnat-4.[12]-doc. ++ Closes: #464801. ++ ++ -- Matthias Klose Tue, 19 Feb 2008 23:20:45 +0000 ++ ++gcc-4.3 (4.3-20080202-1) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Update to SVN 20080202 from the trunk. ++ - Fix PR c/35017, pedwarns about valid code. Closes: #450506. ++ - Fix PR target/35045, wrong code generation with -O3 on i386. ++ Closes: #463478. ++ * gcj-4.3: On armel depend on g++-4.3. ++ * Re-enable build of libobjc_gc, using the internal version of boehm-gc. ++ Closes: #212248. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-default-project-path.dpatch, ++ debian/patches/ada-gcc-name.dpatch, ++ debian/patches/ada-symbolic-tracebacks.dpatch, ++ debian/patches/ada-link-lib.dpatch, ++ debian/patches/ada-libgnatvsn.dpatch, ++ debian/patches/ada-libgnatprj.dpatch, ++ debian/patches/ada-sjlj.dpatch: adjust to GCC 4.3. ++ * debian/README.gnat, debian/TODO, ++ debian/rules.d/binary-ada.mk: merge from gnat-4.2. ++ * debian/README.maintainers: add instructions for patching GCC. ++ * debian/patches/ada-driver.dpatch: remove, no longer used. ++ * debian/patches/libffi-configure.dpatch: do not patch the top-level ++ configure anymore; instead, rerun autoconf. This allows removing the ++ patch cleanly. ++ * debian/rules2: use gnatgcc as the bootstrap compiler, not gcc-4.2. ++ ++ -- Matthias Klose Sat, 02 Feb 2008 19:58:48 +0100 ++ ++gcc-4.3 (4.3-20080127-1) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Update to SVN 20080126 from the trunk. ++ * Tighten build dependency on doxygen. ++ * Update libstdc++ patches to current svn. ++ * gij-4.3: Provide java*-runtime-headless instead of java*-runtime. ++ ++ [ Aurelien Jarno] ++ * debian/multiarch.inc: change mipsel64 into mips64el. ++ ++ -- Matthias Klose Sun, 27 Jan 2008 01:33:35 +0100 ++ ++gcc-4.3 (4.3-20080116-1) unstable; urgency=medium ++ ++ * Update to SVN 20080116 from the trunk. ++ * Update debian/watch. ++ * Build libgomp documentation without building libgomp. Addresses: #460660. ++ * Handle lzma compressed tarballs. ++ * Fix dependency generation for the gcc-snapshot package: Addresses: #454667. ++ * Restore lost chunk in libjava-subdir.dpatch. ++ ++ -- Matthias Klose Wed, 16 Jan 2008 20:33:50 +0100 ++ ++gcc-4.3 (4.3-20080112-1) unstable; urgency=low ++ ++ * Update to SVN 20080112 from the trunk. ++ * Tighten build-dependency on dpkg-dev (closes: #458894). ++ * Update symbol definitions for alpha. ++ * Build-depend on libmpfr-dev for all source packages. ++ ++ -- Matthias Klose Sun, 13 Jan 2008 00:40:28 +0100 ++ ++gcc-4.3 (4.3-20080104-1) unstable; urgency=low ++ ++ * Update to SVN 20080104 from the trunk. ++ * Update symbol definitions for alpha, hppa, ia64, mips, mipsel, powerpc, ++ s390, sparc. ++ ++ -- Matthias Klose Fri, 04 Jan 2008 07:34:15 +0100 ++ ++gcc-4.3 (4.3-20080102-1) unstable; urgency=low ++ ++ [ Matthias Klose ] ++ * Update to SVN 20080102 from the trunk. ++ - Fix 64bit biarch builds (addresses: #447443). ++ * debian/rules.d/binary-java.mk: Reorder packaging to get shlibs ++ dependencies right. ++ * Use lib instead of lib64 as multilibdir on amd64 and ppc64. ++ * Build the java plugin always using libxul-dev. ++ * Add libgcj_bc to the libgcj9-0 shlibs file. ++ * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, ++ lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, ++ lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2, libgfortran3, ++ lib32gfortran3, lib64gfortran3. ++ Adjust build dependencies on dpkg-dev and debhelper. ++ * Do not build the java packages from the gcc-4.3 source package. ++ ++ [ Aurelien Jarno ] ++ * Disable amd64-biarch patch on kfreebsd-amd64. ++ ++ -- Matthias Klose Wed, 02 Jan 2008 23:48:14 +0100 ++ ++gcc-4.3 (4.3-20071124-1) experimental; urgency=low ++ ++ [ Matthias Klose ] ++ * Update to SVN 20071124 from the trunk. ++ * Fix dependencies of lib*gcc1-dbg packages. ++ * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. ++ * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. ++ * Don't run the testsuite on hppa when expect-tcl8.3 is not available. ++ * Fix libgcc1-dbg doc directory symlink. Closes: #447969. ++ ++ [ Aurelien Jarno ] ++ * Update kbsd-gnu patch. ++ * Remove kbsd-gnu-ada patch (merged upstream). ++ ++ -- Matthias Klose Sat, 24 Nov 2007 13:14:29 +0100 ++ ++gcc-4.3 (4.3-20070930-1) experimental; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20070929 from the trunk. ++ * Update debian patches to the current trunk. ++ * Regenerate the control file. ++ * On powerpc-linux-gnu and i486-linux-gnu cross-compile the 64bit ++ multilib libraries to allow a sucessful build on 32bit kernels ++ (our buildds). Although we won't get 64bit test results this way ... ++ * Remove the build dependency on expect-tcl8.3. ++ * Fix MULTILIB_OSDIRNAMES for cross builds targeted for amd64 and ppc64. ++ * When -fstack-protector is the default (Ubuntu), do not enable ++ -fstack-protector when -nostdlib is specified. LP: #77865. ++ * Always set STAGE1_CFLAGS to -g -O2, only pass other settings ++ when configuring when required. ++ * Configure --with-bugurl, adjust the bug reporting instructions. ++ * gcc-4.3: Install new cpuid.h header. ++ * Fix installation of the s390 libstdc++ biarch headers. ++ * Install new bmmintrin.h, mmintrin-common.h headers. ++ * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, ++ libgfortran. ++ * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. ++ ++ [Riku Voipio] ++ * Configure armeabi with --disable-sjlj-exceptions. ++ * armel testsuite takes ages, adjust build accordingly. ++ ++ -- Matthias Klose Sun, 30 Sep 2007 12:06:02 +0200 ++ ++gcc-4.3 (4.3-20070902-1) experimental; urgency=low ++ ++ * Upload to experimental. ++ ++ -- Matthias Klose Sun, 2 Sep 2007 20:51:16 +0200 ++ ++gcc-4.3 (4.3-20070902-0ubuntu1) gutsy; urgency=low ++ ++ * Update to SVN 20070902 from the trunk. ++ * Fix the build logic for the Ubuntu i386 buildd; we can't build biarch. ++ * Only remove libgcj9's classmap db if no other libgcj9* library is ++ installed. ++ * A lot more updates for 4.3 packaging. ++ ++ -- Matthias Klose Sat, 01 Sep 2007 21:01:43 +0200 ++ ++gcc-4.3 (4.3-20070901-0ubuntu1) gutsy; urgency=low ++ ++ * Update to SVN 20070901 from the trunk. ++ * First gcc-4.3 package build. ++ - Update patches for the *-linux-gnu builds. ++ - Update build files for 4.3. ++ * Add proposed patch for PR middle-end/33029. ++ * gcj-4.3: Install gc-analyze. ++ ++ -- Matthias Klose Sat, 1 Sep 2007 20:52:16 +0200 ++ ++gcc-4.2 (4.2.2-7) unstable; urgency=low ++ ++ * Update to SVN 20080114 from the ubuntu/gcc-4_2-branch. ++ - Fix PR middle-end/34762. LP: #182412. ++ * Update debian/watch. Closes: #459259. Addresses: #459391, #459392. ++ * Build libgomp documentation without building libgomp. Closes: #460660. ++ * Restore gomp development files. Closes: #460736. ++ ++ -- Matthias Klose Mon, 14 Jan 2008 23:20:04 +0100 ++ ++gcc-4.2 (4.2.2-6) unstable; urgency=low ++ ++ * Update to SVN 20080113 from the ubuntu/gcc-4_2-branch. ++ * Adjust build-dependency on debhelper, dpkg-dev. ++ * Fix gnat-4.2 build failure (addresses: #456867). ++ * Do not build packages built from the gcc-4.3 source. ++ ++ -- Matthias Klose Sun, 13 Jan 2008 13:48:49 +0100 ++ ++gcc-4.2 (4.2.2-5) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20080102 from the ubuntu/gcc-4_2-branch. ++ - Fix PR middle-end/32889, ICE in delete_output_reload. ++ Closes: #444873, #445336, #451047. ++ - Fix PR target/34215, ICE in assign_386_stack_local. ++ Closes: #446714, #452451. ++ - Fix PR target/33848, reference to non-existent label at -O1 on ++ mips/mipsel. Closes: #441633. ++ * debian/rules.d/binary-java.mk: dpkg-shlibsdeps can't handle the dangling ++ symlink to libgcj_bc.so.1. Remove it temporarily. ++ * Add libgcj_bc to the libgcj8-1 shlibs file. ++ * Fix build failures for gnat-4.2, gpc-4.2, gdc-4.2 introduced by recent ++ gdc changes. ++ * Add symbol files for libgcc1, lib32gcc1, lib64gcc1, libstdc++6, ++ lib32stdc++6, lib64stdc++6, libgomp1, lib32gomp1, lib64gomp1, libffi4, ++ lib32ffi4, lib64ffi4, libobjc2, lib32objc2, lib64objc2. Adjust build ++ dependencies on dpkg-dev and debhelper. ++ Adjust build-dependency on dpkg-dev. ++ ++ [Arthur Loiret] ++ * Fix gdc-4.2 build failure. ++ * Update gdc to upstream SVN 20071124. ++ - d-bi-attrs: Support attributes on declarations in other modules. ++ - d-codegen.cc (IRState::attributes): Support constant declarations as ++ string arguments. ++ * Enable libphobos: ++ - gdc-4.2.dpatch: Fix ICEs. ++ - gdc-4.2-build.dpatch: Update, make it cleaner. ++ * Install libphobos in the private gcc lib dir. ++ * gdc-4.2.dpatch: Update from gdc-4.1.dpatch. ++ - gcc/tree-sra.c: Do not use SRA on structs with aliased fields created ++ for anonymous unions. ++ - gcc/predict.c: Add null-pointer check. ++ * debian/rules.defs: Disable phobos on hurd-i386. ++ - gdc-hurd-proc_maps.dpatch: Remove. ++ ++ -- Matthias Klose Wed, 02 Jan 2008 15:49:30 +0100 ++ ++gcc-4.2 (4.2.2-4) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20071123 from the ubuntu/gcc-4_2-branch. ++ - Fix PR middle-end/34130, wrong code with some __builtin_abs expressions. ++ Closes: #452108. ++ * Don't run the testsuite on hppa when expect-tcl8.3 is not available. ++ * Fix libgcc1-dbg doc directory symlink. Closes: #447969. ++ * Use gcc-multilib as build-dependency instead of gcc-4.1-mulitlib. ++ * Support for fast-math on hurd-i386 (Michael Banck). Closes: #451520. ++ * Fix again profiling support on the Hurd (Thomas Schwinge). Closes: #434937. ++ ++ [Arthur Loiret] ++ * Merge gdc-4.1 patches and build infrastructure: ++ - gdc-4.2.dpatch: Add, setup gcc-4.2.x for D. ++ - gdc-4.2-build.dpatch: Add, update gdc builtins and driver objs. ++ - gdc-driver-zlib.dpatch: Add, use up-to-date system zlib. ++ - gdc-driver-defaultlib.dpatch: Add, add -defaultlib/-debuglib switches. ++ - gdc-driver-nophobos.dpatch: Add, disable libphobos when unsupported. ++ - gdc-libphobos-build.dpatch: Add, enable libphobos build when supported. ++ - gdc-fix-build.dpatch: Add, fix build on non-biarched 64bits targets. ++ - gdc-libphobos-std-format.dpatch: Add, replace assert when formating a ++ struct on non-x86_64 archs by a FormatError. ++ - gdc-arm-unwind_ptr.dpatch: Add, fix build on arm. ++ - gdc-mips-gcc-config.dpatch: Add, fix build on mips. ++ - gdc-hurd-proc_maps.dpatch: Add, fix build on hurd. ++ ++ -- Matthias Klose Sat, 24 Nov 2007 12:01:06 +0100 ++ ++gcc-4.2 (4.2.2-3) unstable; urgency=low ++ ++ * Update to SVN 20071014 from the ubuntu/gcc-4_2-branch. ++ - Fix build failure in libjava on mips/mipsel. ++ * Make 4.2.2-2 a requirement for frontends built from separate sources. ++ Addresses: #446596. ++ ++ -- Matthias Klose Sun, 14 Oct 2007 14:13:00 +0200 ++ ++gcc-4.2 (4.2.2-2) unstable; urgency=low ++ ++ * Update to SVN 20071011 from the ubuntu/gcc-4_2-branch. ++ - Fix PR middle-end/33448, ICE in create_tmp_var. Closes: #439687. ++ - Remove debian/patches/pr31899.dpatch, applied upstream. ++ - Remove debian/patches/pr33381.dpatch, applied upstream. ++ * gij-hppa: Call gij-4.2, not gij-4.1. Addresses: #446282. ++ ++ -- Matthias Klose Thu, 11 Oct 2007 23:41:52 +0200 ++ ++gcc-4.2 (4.2.2-1) unstable; urgency=low ++ ++ * Update to SVN 20071008 from the ubuntu/gcc-4_2-branch, corresponding ++ to the GCC-4.2.2 release. ++ * Fix dependencies of lib*gcc1-dbg packages. Closes: #445190. ++ * Remove libjava-armeabi patch integrated upstream. ++ * gcjwebplugin: Fix path of the gcj subdirectory. LP: #149792. ++ * Apply proposed patch for PR debug/31899. Closes: #445268. ++ ++ * Add niagara2 optimization support (David Miller). ++ ++ -- Matthias Klose Mon, 08 Oct 2007 21:12:41 +0200 ++ ++gcc-4.2 (4.2.1-6) unstable; urgency=high ++ ++ [Matthias Klose] ++ * Update to SVN 20070929 from the ubuntu/gcc-4_2-branch. ++ - Fix PR middle-end/33382, ICE (closes: #441481). ++ - Fix PR tree-optimization/28544 (4.2.1, closes: #380482). ++ - Fix PR libffi/28313, port to mips64 (closes: #358235). ++ * Fix PR tree-optimization/33099, PR tree-optimization/33381, ++ wrong code generation with VRP/SCEV. Closes: #440545, #443576. ++ * Update Hurd fixes (Samuel Thibault). ++ * When -fstack-protector is the default (Ubuntu), do not enable ++ -fstack-protector when -nostdlib is specified. LP: #77865. ++ * Add -g to BOOT_CFLAGS, set STAGE1_CFLAGS to -g -O, only pass ++ other settings when required. ++ * Fix installation of the s390 libstdc++ biarch headers. ++ * Allow the powerpc build on a 32bit machine (without running the ++ biarch testsuite). ++ * Build -dbg packages for libgcc, libgomp, libmudflap, libffi, libobjc, ++ libgfortran. ++ * Drop the build dependency on expect-tcl8.3 (the hppa testsuite seems ++ to complete sucessfully with the expect package). ++ * Downgrade libmudflap-dev recommendation to a suggestion. Closes: #443929. ++ ++ * Closing reports reported against gcc-4.1 and fixed in gcc-4.2: ++ - General ++ + PR rtl-optimization/21299, error in invalid asm statement. ++ Closes: #380121. ++ - C++ ++ + PR libstdc++/19664, libstdc++ headers have pop/push of the visibility ++ around the declarations (closes: #307207, #324290, #423547). ++ + PR c++/21581, functions in anonymous namespaces default to "hidden" ++ visibility (closes: #278310). ++ + PR c++/4882, specialization of inner template using outer template ++ argument (closes: #269513). ++ + PR c++/6634, wrong parsing of "long long double" (closes: #247112). ++ + PR c++/10891, code using dynamic_cast causes segfaults when -fno-rtti ++ is used (closes: #188943). ++ + PR libstdc++/14991, stream::attach(int fd) porting entry out-of-date. ++ Closes: #178561. ++ + PR libstdc++/31638, string usage leads to warning with -Wcast-align. ++ Closes: #382153. ++ + Fix memory hog seen with g++-4.1. Closes: #411234. ++ - Fortran ++ + PR fortran/29228, ICE in gfc_trans_deferred_array (closes: #387222). ++ + PR fortran/24285, allow dollars everywhere in format (closes: #324600). ++ + PR libfortran/28354, 0.99999 printed as 0. instead of 1. by ++ format(f3.0). Closes: #397671. ++ + Fix ICE in gfc_get_extern_function_decl (closes: #396292). ++ - Architecture specific: ++ - i386 ++ + Fix error with -m64 (unable to find a register to spill in class ++ 'DIREG'). Closes: #430049. ++ - mips ++ + Fix ICE in tsubst (closes: #422303). ++ - s390 ++ + Fix ICE (segmentation fault) building dcmtk (closes: #435736). ++ ++ [Roman Zippel] ++ * Update the m68k patches. ++ ++ [Riku Voipio] ++ * Configure armeabi with --disable-sjlj-exceptions. ++ * armel testsuite takes ages, adjust build accordingly. ++ ++ [Ludovic Brenta and Xavier Grave] ++ * Add a version of the Ada run-time library using the setjump/longjump ++ exception handling mechanism (static library only). Use with ++ gnatmake --RTS=sjlj. Particularly useful for distributed (Annex E) ++ programs. ++ * Restore building libgnatvsn-dev and libgnatprj-dev. ++ ++ -- Matthias Klose Sat, 29 Sep 2007 11:19:40 +0200 ++ ++gcc-4.2 (4.2.1-5) unstable; urgency=low ++ ++ * Update to SVN 20070825 from the ubuntu/gcc-4_2-branch. ++ - Fix PR debug/32610, LP: #121911. ++ * Apply proposed patches: ++ - Improve debug info for packed arrays with constant bounds ++ (PR fortran/22244). ++ - Fix ICE in rtl_for_decl_init on const vector initializers ++ (PR debug/32914). ++ - Fix (neg (lt X 0)) optimization (PR rtl-optimization/33148). ++ - Fix libgcc.a(tramp.o) on ppc32. ++ - Fix redundant reg/mem stores/moves (PR target/30961). ++ * Update the -fdirectives-only backport. ++ * gappletviewer-4.2: Include the gcjwebplugin binary. LP: #131114. ++ * Update gpc patches and build support (not yet enabled). ++ * Fix gcc-snapshot hppa64 install target. ++ * Set the priority of the source package to optional. ++ * Remove .la files from the biarch libstdc++ debug packages, ++ conflict with the 3.4 package. Closes: #440490. ++ ++ [Arthur Loiret] ++ * Add build support for GDC. ++ ++ -- Matthias Klose Mon, 27 Aug 2007 01:39:32 +0200 ++ ++gcc-4.2 (4.2.1-4) unstable; urgency=medium ++ ++ * gcc-4.2: Include missing std*.h header files. ++ ++ -- Matthias Klose Tue, 14 Aug 2007 11:14:35 +0200 ++ ++gcc-4.2 (4.2.1-3) unstable; urgency=low ++ ++ * Update to SVN 20070812 from the ubuntu/gcc-4_2-branch. ++ * debian/rules.defs: Fix typo, run the checks in biarch mode too. ++ * libgcj8-awt: Loosen dependency on gcj-4.2-base. ++ * Build only needed multilib libraries when building as gcj or gnat. ++ * Always build biarch libgomp in biarch builds. ++ * debian/rules2: Adjust testsuite logs files for logwatch.sh. ++ * Include header files from $/gcc_lib_dir)/include-fixed. ++ * Backport from trunk: -fdirectives-only (when preprocessing, handle ++ directives, but do not expand macros). ++ * Report an ICE to apport (if apport is available and the environment ++ variable GCC_NOAPPORT is not set) ++ * Fix gcj build failure on the Hurd (Samuel Thibault). Closes: #437470. ++ ++ -- Matthias Klose Sun, 12 Aug 2007 21:11:00 +0200 ++ ++gcc-4.2 (4.2.1-2) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20070804 from the ubuntu/gcc-4_2-branch (20070804): ++ - Merge gcc-4_2-branch SVN 20070804. ++ - Imported classpath CVS 20070727. ++ - Bump the libgcj soname, add conflict with java-gcj-compat (<< 1.0.76-4). ++ - Remove patches integrated in the branches: pr32862. ++ - Update patches: libjava-subdir, libjava-jar. ++ - Add regenerated class files: svn-class-updates. ++ ++ * Fix profiling support on the Hurd (Michael Casadeval). Closes: #434937. ++ * Fix build on kfreebsd-amd64 (Aurelien Jarno). Closes: #435053. ++ * Period of grace is over, run the testsuite on m68k-linux again. ++ * Update infrastructure for the gcc-source package (Bastian Blank). ++ * Update profiling on the Hurd (Samuel Thibault, Michael Casadevall). ++ Closes: #433539. ++ * debian/rules2: Allow DEB_BUILD_OPTIONS=parallel= to overwrite NJOBS. ++ * Allow lang=, nolang= in DEB_BUILD_OPTIONS; deprecating ++ WITHOUT_LANG, and WITHOUT_CHECK. ++ * debian/rules.defs, debian/rules.conf: Cache some often used macros. ++ ++ * Preliminary work: Enable Java for ARM EABI (Andrew Haley), build ++ libffi for armel. ++ * gcj: Don't build the browser plugin in gcc-snapshot builds to get ++ rid of the xulrunner dependency. ++ * gcjwebplugin: Register for more browsers (package currently not built). ++ * gij/boehm-gc: Use sysconf as fallback, if reading /proc/stat fails. ++ Closes: #422469. ++ * libjava: Avoid dependency on MAXHOSTNAMELEN (Samuel Thibault). ++ * gcj: On arm and armel, use the ecj1 binary built from the ecj package. ++ * gcj: Don't require javac without java maintainer mode, remove build ++ dependencies on gcj and ecj, add build dependency on libecj-java. ++ ++ -- Matthias Klose Sun, 05 Aug 2007 15:56:07 +0200 ++ ++gcc-4.2 (4.2.1-1) unstable; urgency=medium ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-symbolic-tracebacks.c: remove all trace of ++ the function convert_addresses from adaint.c. Fixes FTBFS on alpha, ++ s390 and possibly other platforms. Closes: #433633. ++ * debian/control.m4: list myself as uploader if the source package name ++ is gnat. Relax build-dependency on gnat-4.2-source. ++ * debian/control.m4, debian/rules.conf: Build-depend on libmpfr-dev only ++ if building Fortran. ++ ++ [Matthias Klose] ++ * debian/rules.conf: Fix breakage of Fortran build dependencies introduced ++ by merge of the Ada bits. ++ * Don't include the gccbug binary anymore in the gcc package; upstream bug ++ reports should be reported to the upstream bug tracker at ++ http://gcc.gnu.org/bugzilla. ++ * Don't build and test libjava for the biarch architecture. ++ * Install gappletviewer man page. Addresses: #423094. ++ * debian/patches/m68k-java.dpatch: Readd. ++ * gjar: support @ arguments. ++ * Update to SVN 20070726 from the ubuntu/gcc-4_2-branch. ++ - Fix mips/mipsel builds. ++ * libmudflap0: Fix update leaving an empty doc dir. Closes: #428306. ++ * arm/armel doesn't have ssp support. Closes: #433172. ++ * Update kbsd-gnu-ada patch (Aurelien Jarno): Addresses: #434754. ++ * gcj-4.2: Build depend on gcj-4.2 to build the classpath examples files ++ for the binary-indep target. ++ * Fix PR java/32862, bugs in EnumMap implementation. Addresses: #423160. ++ ++ [Arthur Loiret] ++ * Fix cross builds targeting x86_64. Closes: LP: #121834. ++ ++ -- Matthias Klose Thu, 26 Jul 2007 21:46:03 +0200 ++ ++gcc-4.2 (4.2.1-0) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20070719 from the ubuntu/gcc-4_2-branch, corresponding ++ to the GCC-4.2.1 release. ++ - debian/patches/arm-gij.dpatch: Remove. Closes: #433714. ++ * Apply proposed patch for PR tree-optimization/32723. ++ * Tighten build dependency on libmpfr-dev. ++ * On ia64, apply proposed patch for PR target/27880. Closes: #433719. ++ ++ [Hector Oron] ++ * Fix cross and reverse-cross builds. Closes: #432356. ++ ++ -- Matthias Klose Thu, 19 Jul 2007 17:59:37 +0200 ++ ++gnat-4.2 (4.2-20070712-1) unstable; urgency=low ++ ++ * debian/rules.d/binary-ada.mk, debian/control.m4: ++ disable building libgnatvsn-dev and libgnatprj-dev, as they conflict ++ with packages from gnat-4.1. Will reenable them for the transition to ++ gnat-4.2. ++ * Upload as gnat-4.2. Closes: #432525. ++ ++ -- Ludovic Brenta Sat, 14 Jul 2007 15:12:34 +0200 ++ ++gcc-4.2 (4.2-20070712-1) unstable; urgency=high ++ ++ [Matthias Klose] ++ * Update to SVN 20070712 from the ubuntu/gcc-4_2-branch. ++ - 4.2.1 RC2, built from SVN. ++ - same as gcc-4_2-branch, plus backport of gcc/java, boehm-gc, libffi, ++ libjava, zlib from the trunk. ++ - debian/patches/arm-libffi.dpatch: Remove. ++ - Fixes ICE in update_equiv_regs. Closes: #432604. ++ * debian/control.m4: Restore build dependency on dejagnu. ++ * debian/patches/arm-gij.dpatch: Update. ++ * i386-biarch.dpatch: Update for the backport for PR target/31868. ++ Closes: #432599. ++ ++ -- Matthias Klose Fri, 13 Jul 2007 08:07:51 +0200 ++ ++gcc-4.2 (4.2-20070707-1) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20070707 from the ubuntu/gcc-4_2-branch. ++ - debian/patches/libjava-soname.dpatch: Remove. ++ - debian/patches/disable-configure-run-check.dpatch: Update. ++ * Only suggest multilib packages on multilib architectures. ++ * Point ICE messages to the 4.2 docdir. ++ * Explicitely use fastjar to build gcj-4.1. Addresses: #416001. ++ * Configure with --enable-libgcj on m32r (Kazuhiro Inaoka). ++ * Include the hppa64 cross compiler on hppa snapshot builds. ++ * debian/patches/arm-libffi.dpatch: Update. ++ * libgcj-doc: Include the generated documentation. ++ * Fix building the libjava/classpath examples. ++ * Support reverse cross builds (Neil Williams). Closes: #431086. ++ ++ -- Matthias Klose Sat, 07 Jul 2007 10:59:26 +0200 ++ ++gcc-4.2 (4.2-20070627-1) unstable; urgency=high ++ ++ [Matthias Klose] ++ * Update to SVN gcc-4_2-branch/20070626. ++ * Update to SVN trunk/20070626 (gcc/java, libjava, libffi, boehm-gc). ++ * On mips*-linux, always imply -lpthread for -pthread (Thiemo Seufer). ++ Addresses: #428741. ++ * Fix libstdc++ cross builds (Arthur Loiret). Closes: #430395. ++ * README.Debian: Point to debian-toolchain for general toolchain topics. ++ * Use the generated locales for the libstdc++ build to fix the setting ++ of the gnu locale model. Closes: #428926, #429660. ++ * For ix86 lpia targets, configure --with-tune=i586. ++ * Make build dependency on gcc-4.1-multilib architecture specific. ++ * Do not ignore bootstrap comparision failure on ia64. ++ ++ [Ludovic Brenta] ++ * ada-link-lib.dpatch: update to apply cleanly on GCC 4.2. ++ * ada-libgnat{vsn,prj}.dpatch: adjust to GCC 4.2. Reenable in rules.patch. ++ * rules.conf: do not build libgomp as part of gnat-4.2. ++ * rules.conf, control.m4: build-depend on libz-dev, lib32z-dev or ++ lib64-dev only when building Java. ++ * rules2, rules.defs: $(with_mudflap): remove, use $(with_libmudflap) only. ++ * config.m4, binary-ada.mk: tighten dependencies; no Ada package depends ++ on gcc-4.2-base anymore. ++ * TODO: rewrite. ++ * README.gnat: include in gnat-4.2-base. Remove outdated information. ++ * README.maintainers: new. Include in gnat-4.2-base. ++ ++ [Hector Oron] ++ * Merge DEB_CROSS_INDEPENDENT with DEB_CROSS. ++ * Disables libssp0 for arm and armel targets when cross compiling. ++ * Updates README.cross. ++ * Fixes linker mapping problem on binary-libstdcxx-cross.mk. Closes: #430688. ++ ++ -- Matthias Klose Wed, 27 Jun 2007 21:54:08 +0200 ++ ++gcc-4.2 (4.2-20070609-1) unstable; urgency=low ++ ++ * Update to SVN gcc-4_2-branch/20070609. ++ - Remove patches integrated upstream: pr30052, hppa-caller-save-pic-tls. ++ * Update to SVN trunk/20070609 (gcc/java, libjava, libffi, boehm-gc). ++ - Remove patches integrated upstream: libjava-qt-peer, ++ classpath-config-guess. ++ * Do not build with --enable-java-maintainer-mode. ++ * debian/rules.patch: Comment out m68k-peephole, requires m68k-split_shift. ++ * Add target to apply patches up to a specific patch (Wouter Verhelst). ++ Closes: #424855. ++ * libstdc++6-4.2-*: Add conflicts with 4.1 packages. Closes: #419511. ++ * Apply proposed fix for PR target/28102. Closes: #426905. ++ * Fix build failure for cross compiler builds (Jiri Palecek). Closes: #393897. ++ * Update build macros for kfreebsd-amd64. Closes: #424693. ++ ++ -- Matthias Klose Sat, 9 Jun 2007 06:54:13 +0200 ++ ++gcc-4.2 (4.2-20070528-1) unstable; urgency=low ++ ++ * Update to SVN gcc-4_2-branch/20070528. ++ * Add backport for PR middle-end/20218. ++ * Add proposed PTA solver backport, PR tree-optimization/30052. ++ * Add backport for PR target/31868. ++ * Reenable the testsuite for arm, mips, mipsel. ++ ++ -- Matthias Klose Mon, 28 May 2007 09:03:04 +0200 ++ ++gcc-4.2 (4.2-20070525-1) unstable; urgency=low ++ ++ * Update to SVN gcc-4_2-branch/20070525. ++ * Update to SVN trunk/20070520 (gcc/java, libjava, libffi, boehm-gc). ++ * Do not explicitely configure for __cxa_atexit. ++ * libstdc++6-4.2-doc: Conflict with libstdc++6-4.1-doc. Closes: #424896. ++ * Update m68k patches: ++ - Remove patches applied upstream: m68k-jumptable, m68k-gc, ++ - Reenable patches: m68k-save_pic, m68k-dwarf, m68k-limit_reload, ++ m68k-prevent-qipush, m68k-peephole, m68k-return, m68k-sig-unwind, ++ m68k-align-code m68k-align-stack, m68k-symbolic-operand, ++ m68k-bitfield-offset. ++ - Update: m68k-return, m68k-secondary-addr-reload, m68k-notice-move ++ m68k-secondary-addr-reload, m68k-notice-move. ++ - TODO: m68k-split_shift, m68k-dwarf3, m68k-fpcompare. ++ * Update the kfreebsd and arm patches (Aurelien Jarno). Closes: #425011. ++ * Temporarily disable the testsuite on slow architectures to get the ++ package built soon. ++ ++ -- Matthias Klose Fri, 25 May 2007 07:14:36 +0200 ++ ++gcc-4.2 (4.2-20070516-1) unstable; urgency=low ++ ++ * Update to SVN gcc-4_2-branch/20070516. ++ * Update to SVN trunk/20070516 (gcc/java, libjava, libffi, boehm-gc). ++ * Merge changes from gcc-4.1_4.1.2-7. ++ * Update NEWS files. ++ ++ -- Matthias Klose Wed, 16 May 2007 02:33:57 +0200 ++ ++gcc-4.2 (4.2-20070502-1) unstable; urgency=low ++ ++ * Update to SVN gcc-4_2-branch/20070502. ++ - Remove pr11953 patch, integrated upstream. ++ * Update to SVN trunk/20070502 (gcc/java, libjava, libffi, boehm-gc). ++ * Adjust tetex/tex-live build dependency. ++ * Fix gobjc-4.2's, gobjc++-4.2's dependency on libobjc2. ++ * Tighten (build) dependency on binutils. Addresses: #421197. ++ * gfortran-4.2: Depend on libgfortran2, provide the libgfortran.so ++ symlink. Adresses: #421362. ++ * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. ++ * (Build-) depend on glibc (>= 2.5) for all architectures. ++ * Remove libssp packages from the control file. ++ ++ -- Matthias Klose Wed, 2 May 2007 18:46:57 +0200 ++ ++gcc-4.2 (4.2-20070405-1) experimental; urgency=low ++ ++ * Update to SVN gcc-4_2-branch/20070405. ++ * Update to SVN trunk/20070405 (gcc/java, libjava, libffi, boehm-gc). ++ * gcc-4.2-hppa64: Don't depend on libc6-dev. ++ * Robustify setting of make's -j flag. Closes: #410919. ++ * gcc-snapshot: Use the install_snap_stamp target for installation. ++ ++ -- Matthias Klose Thu, 5 Apr 2007 23:56:35 +0200 ++ ++gcc-4.2 (4.2-20070307-1) experimental; urgency=low ++ ++ * Update to SVN gcc-4_2-branch/20070307. ++ * Update to SVN trunk/20070307 (gcc/java, libjava, libffi, boehm-gc). ++ * Build gnat from separate sources. ++ * Merge changes from gcc-4.1-4.1.2-1. ++ * Install into /usr/lib/gcc//4.2, to ease upgrades ++ between subminor versions. ++ * Configure --with-gxx-include-dir=/usr/include/c++/4.2 ++ ++ -- Matthias Klose Thu, 8 Mar 2007 02:52:00 +0100 ++ ++gcc-4.2 (4.2-20070210-1) experimental; urgency=low ++ ++ * Merge Java backport from Ubuntu: ++ - Update to SVN gcc-4_2-branch/20070210. ++ - Update to SVN trunk/20070210 (gcc/java, libjava). ++ - Backout trunk specific gcc/java changes. ++ - Build-depend on gcj-4.1 and ecj-bootstrap. ++ - gcj-4.2: Depend on ecj-bootstrap, recommend ecj-bootstrap-gcj. ++ - Merge libgcj8-awt-gtk back into libgcj8-awt; the Qt peers ++ are disabled by upstream again. ++ - Generate manual pages for the classpath tools from the classpath ++ documentation. ++ - Adopt packaging for the merged libjava. ++ - Update patches for the merged libjava: libjava-lib32-properties, ++ i386-biarch, reporting, libjava-soname, libjava-subdir, ++ libjava-lib32subdir. ++ - Remove obsolete patches: libjava-plugin-binary, libjava-ia32fix, ++ libstdc++-docfixes. ++ ++ * Set priority of development packages to optional. ++ * debian/libgcjGCJ.postrm: Don't fail on purge when directories ++ don't exist anymore. Closes: #406017. ++ * debian/patches/gcc-textdomain.dpatch: Update for 4.2. ++ * Generate and install libgomp docs into gcc-4.2-doc. ++ ++ -- Matthias Klose Sat, 10 Feb 2007 16:53:11 +0100 ++ ++gcc-4.2 (4.2-20070105-1) experimental; urgency=low ++ ++ * Update to SVN 20070105. ++ * Add tetex-extra to Build-Depend-Indep (libstd++ doxygen docs), ++ fix doxygen build (libstdc++-docfixes.dpatch). ++ * Enable parallel build by default on SMP machines. ++ ++ -- Matthias Klose Fri, 5 Jan 2007 22:42:18 +0100 ++ ++gcc-4.2 (4.2-20061217-1) experimental; urgency=low ++ ++ * Update to SVN 20061217. ++ * Merge changes from gcc-4.1_4.1.1-16 to gcc-4.1_4.1.1-21. ++ * Update patches to the current branch. ++ * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. ++ * Link using --hash-style=gnu (alpha, amd64, ia64, i386, powerpc, ppc64, ++ s390, sparc). ++ ++ -- Matthias Klose Sun, 17 Dec 2006 15:54:54 +0100 ++ ++gcc-4.2 (4.2-20061003-1) experimental; urgency=low ++ ++ * libgcj.postinst: Remove /var/lib/gcj-4.2 on package removal. ++ * Don't install backup files in the doc directory, only one gcc-4.1 ++ upgrade was broken. Closes: #389366. ++ * Merge gcc-biarch-generic.dpatch into i386-biarch.dpatch. ++ * Update link-libs.dpatch. ++ * Merge libgfortran2-dev into gfortran-4.2. ++ ++ -- Matthias Klose Tue, 3 Oct 2006 16:26:38 +0000 ++ ++gcc-4.2 (4.2-20060923-1) experimental; urgency=low ++ ++ * Update to SVN 20060923. ++ * Remove patches applied upstream: kbsd-gnu-java, kbsd-gnu. ++ ++ -- Matthias Klose Sat, 23 Sep 2006 15:11:36 +0200 ++ ++gcc-4.2 (4.2-20060905-1) experimental; urgency=low ++ ++ * Update to SVN 20060905. ++ * Merge changes from gcc-4.1 (4.1.1-10 - 4.1.1-12). ++ * Move gomp development files into gcc and gfortran. ++ * Build-depend on binutils (>= 2.17). ++ ++ -- Matthias Klose Tue, 5 Sep 2006 03:33:00 +0200 ++ ++gcc-4.2 (4.2-20060818-1) experimental; urgency=low ++ ++ * Update to SVN 20060818. ++ - libjava-libgcjbc.dpatch: Remove, applied upstream. ++ * Merge changes from the Ubuntu gcj-4.2 package: ++ - libjava-soname.dpatch: Remove, applied upstream. ++ - libjava-native-libdir.dpatch: update. ++ - libffi-without-libgcj.dpatch: Remove, new libffi-configure to ++ enable --disable-libffi. ++ - Changes required for the classpath-0.92 update: ++ - New packages gappletviewer-4.2, gcjwebplugin-4.2. ++ - gij-4.2: Add keytool alternative. ++ - gcj-4.2: Add jarsigner alternative. ++ - libgcj8-dev: Remove conflicts with older libgcjX-dev packages. ++ - lib32gcj8: Populate the /usr/lib32/gcj-4.2 directory. ++ - libjava-library-path.dpatch: ++ - When running the i386 binaries on amd64, look in ++ /usr/lib32/gcj-x.y and /usr/lib32/jni instead. ++ - Add /usr/lib/jni to java.library.path. Adresses: #364820. ++ - Add more debugging symbols to libgcj8-dbg. Adresses: #383705. ++ - Fix and renable the biarch build for sparc. ++ * Disable gnat for alpha, fails to build. ++ * Configure without --enable-objc-gc, fails to build. ++ ++ -- Matthias Klose Sat, 19 Aug 2006 18:25:50 +0200 ++ ++gcc-4.2 (4.2-20060709-1) experimental; urgency=low ++ ++ * Test build, SVN trunk 20060709. ++ * Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). ++ * Rename libmudflap0-dev to libmudflap0-4.2-dev. ++ * Ignore compiler warnings when checking whether compiler driver understands ++ Ada fails. ++ * Merge changes from the gcc-4.1 package. ++ ++ -- Matthias Klose Sun, 9 Jul 2006 14:28:03 +0200 ++ ++gcc-4.2 (4.2-20060617-1) experimental; urgency=low ++ ++ * Test build, SVN trunk 20060617. ++ ++ [Matthias Klose] ++ * Configure using --enable-objc-gc, using the internal boehm-gc. ++ * Build-depend on bison (>= 1:2.3). ++ * Build the QT based awt peer library, not yet the same functionality ++ as the GTK based peer library. ++ * Update libjava-* patches. ++ ++ [Ludovic Brenta] ++ * Do not provide the symbolic link /usr/bin/gnatgcc; this will now ++ be provided by package gnat from the source package gcc-defaults. ++ * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), ++ not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) ++ which depends on gnat-4.1. ++ ++ [Bastian Blank] ++ * Make it possible to overwrite arch per DEB_TARGET_ARCH and ++ DEB_TARGET_GNU_TYPE. ++ * Disable biarch only on request for cross builds. ++ * Use correct source directory for tarballs. ++ * Produce correct multiarch.inc for source builds. ++ ++ -- Matthias Klose Sat, 17 Jun 2006 19:02:01 +0200 ++ ++gcc-4.2 (4.2-20060606-1) experimental; urgency=low ++ ++ * Test build, SVN trunk 20060606. ++ * Remove obsolete patches, update patches for 4.2. ++ * Update the biarch-include patches to work with mips-triarch. ++ * Disable Ada, not yet updated. ++ * New packages: libgomp*. ++ * Remove fastjar, not included upstream anymore. ++ ++ -- Matthias Klose Tue, 6 Jun 2006 10:52:28 +0200 ++ ++gcc-4.1 (4.1.2-12) unstable; urgency=high ++ ++ * i386-biarch.dpatch: Update for the backport for PR target/31868. ++ Closes: #427185. ++ * m68k-libffi2.dpatch: Update. Closes: #425399. ++ ++ -- Matthias Klose Mon, 4 Jun 2007 23:53:23 +0200 ++ ++gcc-4.1 (4.1.2-11) unstable; urgency=low ++ ++ * Update to SVN 20070601. ++ * Build the libmudflap0-dev package again. ++ * Don't build libffi, when the packages are not built. ++ ++ -- Matthias Klose Fri, 1 Jun 2007 23:55:22 +0200 ++ ++gcc-4.1 (4.1.2-10) unstable; urgency=low ++ ++ * Regenerate the control file. ++ ++ -- Matthias Klose Wed, 30 May 2007 00:29:29 +0200 ++ ++gcc-4.1 (4.1.2-9) unstable; urgency=low ++ ++ * Update to SVN 20070528. ++ * Don't build packages now built from the gcc-4.2 source (arm, m68k, ++ mips, mipsel). ++ * Add backport for PR middle-end/20218. ++ * Add backport for PR target/31868. ++ ++ -- Matthias Klose Tue, 29 May 2007 00:01:12 +0200 ++ ++gcc-4.1 (4.1.2-8) unstable; urgency=low ++ ++ * Update to SVN 20070518. ++ * Don't build packages now built from the gcc-4.2 source. ++ ++ [ Aurelian Jarno ] ++ * Update libffi patch for ARM. Closes: #425011. ++ * arm-pr30486, arm-pr28516, arm-unbreak-eabi-armv4t: New. ++ * Disable FFI, Java, ObjC for armel. ++ ++ -- Matthias Klose Sun, 20 May 2007 10:31:24 +0200 ++ ++gcc-4.1 (4.1.2-7) unstable; urgency=low ++ ++ * Update to SVN 20070514. ++ * Link using --hash-style=both on supported architectures. Addresses: #421790. ++ * On hppa, build ecjx as a native binary. ++ * note-gnu-stack.dpatch: Fix ARM comment marker (Daniel Jacobowitz). ++ Closes: #422978. ++ * Add build dependency on libxul-dev for *-freebsd. Closes: #422995. ++ * Update config.guess/config.sub and build gcjwebplugin on GNU/kFreeBSD ++ (Aurelian Jarno). Closes: #422995. ++ * Disable ssp on hurd-i386. Closes: #423757. ++ ++ -- Matthias Klose Mon, 14 May 2007 08:40:08 +0200 ++ ++gcc-4.1 (4.1.2-6) unstable; urgency=low ++ ++ * Update libjava from the gcc-4.1 Fedora branch 20070504. ++ * gfortran-4.1: Fix the target of the libgfortran.so symlink. ++ Closes: #421362. ++ * Build-depend on gcc-multilib [amd64 i386 powerpc ppc64 s390 sparc]. ++ * Readd build dependency on binutils on arm. ++ * (Build-) depend on glibc (>= 2.5) for all architectures. ++ * Remove libssp packages from the control file. ++ * Fix wrong code generation on hppa when TLS variables are used. ++ Closes: #422421. ++ ++ -- Matthias Klose Sun, 6 May 2007 10:00:23 +0200 ++ ++gcc-4.1 (4.1.2-5) unstable; urgency=low ++ ++ * Update to SVN 20070429. ++ * Update libjava from the gcc-4.1 Fedora branch 20070428. ++ * Update m68k patches: ++ - Remove pr25514, pr27736, applied upstream. ++ - Update m68k-java. ++ * Link using --hash-style=gnu/both. ++ * Tighten (build) dependency on binutils. Closes: #421197. ++ * gij-4.1: Add a conflict with java-gcj-compat (<< 1.0.69). ++ * gfortran-4.1: Depend on libgfortran1, provide the libgfortran.so ++ symlink. Closes: #421362. ++ * gcc-4.1, gcc-4.1-multilib: Fix compatibility symlinks. Closes: #421382. ++ * Temporarily remove build dependency on locales on arm, hppa, m68k, mipsel. ++ * Temporarily remove build dependency on binutils on arm. ++ * Fix FTBFS on GNU/kFreeBSD (Aurelian Jarno). Closes: #421423. ++ * gij-4.1 postinst: Create /var/lib/gcj-4.1. Closes: #421526. ++ ++ -- Matthias Klose Mon, 30 Apr 2007 08:13:32 +0200 ++ ++gcc-4.1 (4.1.2-4) unstable; urgency=medium ++ ++ * Update to SVN 20070423. ++ - Remove pr11953, applied upstream. ++ - Fix ld version detection in libstdc++v3. ++ * Update libjava from the gcc-4.1 Fedora branch 20070423. ++ * Merge libgfortran1-dev into gfortran-4.1. ++ * Add multilib packages for gcc, g++, gobjc, gobjc++, gfortran. ++ * Don't link using --hash-style=gnu/both; loosen dependency on binutils. ++ * Don't revert the patch to fix PR c++/27227. ++ ++ -- Matthias Klose Mon, 23 Apr 2007 23:13:14 +0200 ++ ++gcc-4.1 (4.1.2-3) experimental; urgency=low ++ ++ * Update to SVN 20070405. ++ * Update libjava from the gcc-4.1 Fedora branch 20070405. ++ * Robustify setting of make's -j flag. Closes: #414316. ++ * Only build the libssp packages, when building the common libraries. ++ * gcc-4.1-hppa64: Don't depend on libc6-dev. ++ ++ -- Matthias Klose Fri, 6 Apr 2007 00:28:29 +0200 ++ ++gcc-4.1 (4.1.2-2) experimental; urgency=low ++ ++ * Update to SVN 20070306. ++ * Update libjava from the gcc-4.1 Fedora branch 20070306. ++ ++ [Matthias Klose] ++ * Don't install gij-wrapper anymore, directly register gij as a java ++ alternative. ++ * Don't install gcjh-wrapper anymore. ++ * Don't use exact versioned dependencies on gcj-base for libgcj and ++ libgcj-awt. ++ * Fix glibc build dependency for alpha. ++ * Support -ffast-math on hurd-i386 (Samuel Thibault). Closes: #413342. ++ * Update kfreebsd-amd64 patches (Aurelien Jarno). Closes: #406015. ++ * gij: Consistently use $(dbexecdir) to reference the gcj sub dir. ++ * Install into /usr/lib/gcc//4.1, to ease upgrades ++ between minor versions. ++ Add compatibility symlinks in /4.1.2 to build gnat-4.1 ++ and gcj-4.1 from separate sources. ++ ++ -- Matthias Klose Wed, 7 Mar 2007 03:51:47 +0100 ++ ++gcc-4.1 (4.1.2-1) experimental; urgency=low ++ ++ [Matthias Klose] ++ * Update to gcc-4.1.2. ++ * Update libjava backport patches, split out boehm-gc-backport patch. ++ * Enable the cpu-default-generic patch (i386, amd64), backport from 4.2. ++ * Correct mfctl instruction syntax (hppa), backport from the trunk. ++ * Backport PR java/9861 (name mangling updates). ++ * gcc.c (main): Call expandargv (backport from 4.2). ++ * Apply gcc dwarf2 unwinding patches from the trunk. ++ * Apply backport for PR 20208 on amd64 i386 powerpc ppc64 sparc s390. ++ * Apply patches from the 4.1 branch for PR rtl-optimization/28772, ++ PR middle-end/30313, PR middle-end/30473, PR c++/30536, PR debug/30189, ++ PR fortran/30478, PR rtl-optimization/30787, PR tree-optimization/30823, ++ PR rtl-optimization/28173, PR ada/30684, bug in pointer dependency test, ++ PR rtl-optimization/30931, PR fortran/25392, PR fortran/30400, ++ PR libgfortran/30910, PR libgfortran/30918, PR fortran/29441, ++ PR target/30634. ++ * Update NEWS files. ++ * Include a backport of the ecj+generics java updates as ++ gcj-ecj-20070215.tar.bz2. Install it into the gcc-4.1-source package. ++ * Do not build fastjar anymore from this source. ++ * debian/control.m4: Move expect-tcl8.3 before dejagnu. ++ * Work around firefox/icewhatever dropping plugin dependencies on xpcom. ++ * Refactor naming of libgcj packages in the build files. ++ * Make libstdc++-doc's build dependencies depending on the source package. ++ * Do not build packages on architectures, which are already built by gcc-4.2. ++ ++ * Merge the gcj generics backport from Ubuntu: ++ ++ - Merge the Java bits (eclipse based compiler, 1.5 compatibility, ++ classpath generics) from the gcc-4.1 Fedora branch. ++ - Drop all previous patches from the classpath-0.93 merge, keep ++ the boehm-gc backport (splitted out as a separate patch). ++ - Add a gcj-ecj-generics.tar.bz2 tarball, containing gcc/java, libjava, ++ config/unwind_ipinfo.m4, taken from the Fedora branch. ++ - Drop the libjava-hppa, libjava-plugin-binary, pr29362, pr29805 patches ++ integrated in the backport. ++ - Update patches for the merge: reporting, libjava-subdir, i386-biarch, ++ classpath-tooldoc, pr26885 ++ - Add libjava-dropped, libjava-install; dropped chunks from the merge. ++ - Add pr9861-nojava mangling changes, non-java parts for PR 9861. ++ - Add gcc-expandv, expand `@' parameters on the commandline; backport ++ from the trunk. ++ - Disable the m68k-gc patch, needs update for the merge. ++ - Configure --with-java-home set for 1.5.0. ++ - Configure with --enable-java-maintainer-mode to build the header ++ and class files on the fly. ++ - Add build dependency on ecj-bootstrap, configure --with-ecj-jar. ++ - Build an empty libgcj-doc package; gjdoc currently cannot handle ++ generics. ++ - Apply gcc dwarf2 unwinding patches from the trunk, allowing the Events ++ testcase to pass. ++ - Tighten dependencies on shared libraries. ++ - Use /usr/lib/gcj-4-1-71 as private gcj subdir. ++ - Bump the libgcj soversion to 71, rename the libgcj7-0 package ++ to libgcj7-1, rename the libgcj7-awt package to libgcj7-1-awt. ++ - gij-4.1: Add and provide alternatives for gorbd, grmid, gserialver. ++ - gcj-4.1: Remove gcjh, gcjh-wrapper, gjnih. ++ - gcj-4.1: Add and provide alternatives for jar, javah, native2ascii, ++ tnameserv. ++ - gcj-4.1: Add dependency on ecj-bootstrap, recommend fastjar, ++ ecj-bootstrap-gcj. ++ - Add build dependency on ecj-bootstrap version providing the GCCMain ++ class. ++ - libgcj7-1: Recommend libgcj7-1-awt. ++ - Add build dependency on libmagic-dev. ++ - Build-depend on gcj-4.1; build our own ecj1 and gjdoc before ++ starting the build. ++ - Make ecj1 available when running the testsuite. ++ - Fix build failure on sparc-linux. ++ - Fix gjavah compatibility problems (PR cp-tools/3070[67]). ++ - Fixed driver issue source files (PR driver/30714). ++ - Add (rudimentary) manual pages for classpath tools. ++ ++ [Kevin Brown] ++ * debian/control.m4, debian/rules.d/binary-ada.mk: provide new packages ++ containing debugging symbols for Ada libraries: libgnat-4.1-dbg, ++ libgnatprj4.1-dbg, and libgnatvsn4.1-dbg. Adresses: #401385. ++ ++ -- Matthias Klose Sat, 3 Mar 2007 23:12:08 +0100 ++ ++gcc-4.1 (4.1.1ds2-30) experimental; urgency=low ++ ++ * Update to SVN 20070106. ++ * Do not revert the fixes for PR 25878, PR 29138, PR 29408. ++ * Don't build the packages built by gcc-4.2 source. ++ * debian/patches/note-gnu-stack.dpatch: Add .note.GNU-stack sections ++ for gcc's crt files, libffi and boehm-gc. Taken from FC. Closes: #382741. ++ * Merge from Ubuntu: ++ - Backport g++ visibility patches from the FC gcc-4_1-branch. ++ - Update the long-double patches; require glibc-2.4 as a build dependency ++ on alpha, powerpc, sparc, s390. Bump the shlibs dependencies to ++ require 4.1.1-21. ++ - On powerpc-linux configure using --enable-secureplt. Closes: #382748. ++ - When using the cpu-default-generic patch, build for generic x86-64 ++ on amd64 and i386 biarch. ++ - Link using --hash-style=both (alpha, amd64, ia64, i386, powerpc, ppc64, ++ s390, sparc). ++ * gij-4.1: Recommends libgcj7-awt instead of suggesting it. Closes: #394917. ++ * Split the gcc-long-double patch into a code and doc part. ++ * Set priority of development packages to optional. ++ * Add support for kfreebsd-amd64 (Aurelian Jarno). Closes: #406015. ++ ++ -- Matthias Klose Sat, 6 Jan 2007 10:35:42 +0100 ++ ++gcc-4.1 (4.1.1ds2-22) unstable; urgency=high ++ ++ * Enable -pthread for GNU/Hurd (Michael Banck). Closes: #400031. ++ * Update the m68k-fpcompare patch (Roman Zippel). Closes: #401585. ++ ++ -- Matthias Klose Sun, 10 Dec 2006 12:35:06 +0100 ++ ++gcc-4.1 (4.1.1ds2-20) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20061115. ++ - Fix PR tree-optimization/27891, ICE in tree_split_edge. ++ Closes: #370248, #391657, #394630. ++ - Fix PR tree-optimization/9814, duplicate of PR tree-optimization/29797. ++ Closes: #181096. ++ * Apply the libjava/net backport from the redhat/gcc-4_1-branch. ++ * Apply proposed patch for PR java/29805. ++ ++ [Roman Zippel] ++ * Build the ObjC and ObjC++ compilers in cross builds. ++ * debian/patches/m68k-symbolic-operand.dpatch: Better recognize ++ symbolic operands in addresses. ++ * debian/patches/m68k-bitfield-offset.dpatch: Only use constant offset ++ for register bitfields (combine expects shifts, but does a rotate). ++ * debian/patches/m68k-bitfield-offset.dpatch: Update and apply. ++ ++ [Daniel Jacobowitz] ++ * Don't try to use _Unwind_Backtrace on SJLJ targets. ++ See bug #387875, #388505, GCC PR 29206. ++ ++ -- Matthias Klose Wed, 15 Nov 2006 08:59:53 -0800 ++ ++gcc-4.1 (4.1.1ds2-19) unstable; urgency=low ++ ++ * Fix typo in arm-pragma-pack.dpatch. ++ ++ -- Matthias Klose Sat, 28 Oct 2006 11:04:00 +0200 ++ ++gcc-4.1 (4.1.1ds2-18) unstable; urgency=medium ++ ++ [Matthias Klose] ++ * Update to SVN 20061028. ++ * Fix #pragma pack on ARM (Paul Brook). Closes: #394703. ++ * Revert PR c++/29138, PR c++/29408. Closes: #392559. ++ * Revert PR c++/25878. Addresses: #387989. ++ * fastjar: Provide jar. Closes: #395397. ++ ++ [Ludovic Brenta] ++ * debian/control.m4 (libgnatprj-dev): depend on libgnatvsn-dev. ++ debian/gnatprj.gpr: with gnatvsn.gpr. Closes: #395000. ++ ++ -- Matthias Klose Thu, 26 Oct 2006 23:51:10 +0200 ++ ++gcc-4.1 (4.1.1ds2-17) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20061020. ++ - Fix PR debug/26881, ICE in dwarf2out_finish. Closes: #377613. ++ - Fix PR PR c++/29408, parse error for valid code. Closes: #392327, #393010. ++ - Fix PR c++/29435, segfault with sizeof and templates. Closes: #393071. ++ - Fix PR target/29338, segfault with -finline-limit on arm. Closes: 390620. ++ - Fix 3.4/4.0 backwards compatibility problem in libstdc++. ++ * Fix PR classpath/29362, taken from the redhat/gcc-4_1-branch. ++ * Remove the INSTALL directory from the source tarball. Closes: #392974. ++ * Disable building the static libgcj; non-functional, and cutting ++ down build times. ++ * libgcj7-0: Tighten dependency on libgcj-common. ++ * libgcj7-dev: Install .pc file as libgcj-4.1.pc. ++ * README.cross: Updated (Hector Oron). Addresses: #380251. ++ * config-ml.dpatch: Use *-linux-gnu as *_GNU_TYPE. Closes: #394034. ++ ++ [Nikita V. Youshchenko] ++ * Fix typo in the cross build scripts. Closes: #391445. ++ ++ [Falk Hueffner] ++ * alpha-no-ev4-directive.dpatch: Fix kernel build failure. ++ ++ [Roman Zippel] ++ * debian/patches/m68k-align-code.dpatch: Use "move.l %a4,%a4" to advance ++ within code. ++ * debian/patches/m68k-align-stack.dpatch: Try to keep the stack word aligned. ++ * debian/patches/m68k-dwarf3.dpatch: Emit correct dwarf info for cfa offset ++ and register with -fomit-frame-pointer. ++ * debian/patches/m68k-fpcompare.dpatch: Bring fp compare early to its ++ desired form to relieve reload. Closes: #390879. ++ * debian/patches/m68k-prevent-swap.dpatch: Don't swap operands ++ during reloads. ++ * debian/patches/m68k-reg-inc.dpatch: Reinsert REG_INC notes after splitting ++ an instruction. ++ * debian/patches/m68k-secondary-addr-reload.dpatch: Add secondary reloads ++ to allow reload to get byte values into addr regs. Closes: #385327. ++ * debian/patches/m68k-symbolic-operand.dpatch: Better recognize symbolic ++ operands in addresses. ++ * debian/patches/m68k-limit_reload.dpatch: Remove, superseded by ++ m68k-secondary-addr-reload.dpatch. ++ * debian/patches/m68k-notice-move.dpatch: Apply, was checked in in -16. ++ * debian/patches/m68k-autoinc.dpatch: Updated, don't attempt to increment ++ the register, if it's used multiple times in the instruction . ++ ++ -- Matthias Klose Sat, 21 Oct 2006 00:25:05 +0200 ++ ++gcc-4.1 (4.1.1ds1-16) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20061008. ++ - Fix PR c++/29226, ICE in make_decl_rtl. Closes: #388263. ++ * libgcj7-0: Fix package removal. Closes: #390874. ++ * Configure with --disable-libssp on architectures that don't ++ support it (alpha, hppa, ia64, m68k, mips, mipsel). ++ * On hppa, remove build-dependency on dash. ++ * gij/gcj: Do not install slave links for the non DFSG manpages. ++ Closes: #390425, #390532. ++ * libgcj-common: rebuild-gcj-db: Don't do anything, if no classmap ++ files are found. Closes: #390966. ++ * Fix PR libstdc++/11953, extended for all linux architectures. ++ Closes: #391268. ++ * libffi4-dev: Conflict with libffi. Closes: #387561. ++ * Backport PR target/27880 to the gcc-4_1-branch. Patch by Steve Ellcey. ++ Closes: #390693. ++ * On ia64, don't use _Unwind_GetIPInfo in libjava and libstdc++. ++ * Add a README.ssp with minimal documentation about stack smashing ++ protection. Closes: #366094. ++ * Do not build libgcj-common from the gcc-4.1/gcj-4.1 sources anymore. ++ ++ [Roman Zippel] ++ * debian/patches/m68k-notice-move.dpatch: Don't set cc_status ++ for fp move without fp register. ++ ++ -- Matthias Klose Sun, 8 Oct 2006 02:21:49 +0200 ++ ++gcc-4.1 (4.1.1ds1-15) unstable; urgency=medium ++ ++ * Update to SVN 20060927. ++ - Fix PR debug/29132, exception handling on mips. Closes: #389468, #390042. ++ - Fix typo in gcc documentation. Closes: #386180. ++ - Fix PR target/29230, wrong code generation on arm. Closes: #385505. ++ * libgcj-common: Ignore exit value of gcj-dbtool in rebuild-gcj-db on ++ arm, m68k, hppa. Adresses: #388505. ++ * libgcj-common: Replaces java-gcj-compat-dev and java-gcj-compat. ++ Closes: #389539. ++ * libgcj-common: /usr/share/gcj/debian_defaults: Define gcj_native_archs. ++ * Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-27; ++ remove libjava-str2double.dpatch, pr28661.dpatch. ++ * Disable ssp on hppa, not supported. ++ * i386-biarch.dpatch: Avoid warnings about macro redefinitions. ++ ++ -- Matthias Klose Fri, 29 Sep 2006 22:32:41 +0200 ++ ++gcc-4.1 (4.1.1ds1-14) unstable; urgency=medium ++ ++ [Matthias Klose] ++ * Update to SVN 20060920. ++ - Fix PR c++/26957. Closes: #373257, #386910. ++ - Fix PR rtl-optimization/28243. Closes: #378325. ++ * Remove patch for PR rtl-optimization/28634, applied upstream. ++ * Fix FTBFS on GNU/kFreeBSD (fallout from the backport of classpath-0.92). ++ (Petr Salinger). Closes: #385974. ++ * Merge from Ubuntu: ++ - Do not encode the subminor version in the jar files. ++ - Fix typo for the versioned gcj subdirectory in lib32gcj-0. ++ - When running the i386 binaries on amd64, adjust the properties ++ java.home, gnu.classpath.home.url, sun.boot.class.path, ++ gnu.gcj.precompiled.db.path. ++ - Configure the 32bit build on amd64 ++ --with-java-home=/usr/lib32/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre. ++ - Configure --with-long-double-128 for glibc-2.4 on alpha, powerpc, ppc64, ++ s390, s390x, sparc, sparc64. ++ - Update the java backport from the redhat/gcc-4_1-branch upto 2006-09-20. ++ - Fix PR java/29013, invalid byte code generation. Closes: #386926. ++ - debian/patches/gcc-pfrs-2.dpatch: Apply a fix for a regression in the ++ backport of PR 28946 from the trunk (H.J. Lu). ++ * Backport PR classpath/28661 from the trunk. ++ * Don't ship the .la files for the java modules. Closes: #386228. ++ * gcj-4.1: Remove dangling symlink. Closes: #386430. ++ * gij: Suggest java-gcj-compat, gcj: Suggest java-gcj-compat-dev. ++ Closes: #361942. ++ * Fix infinite loop in string-to-double conversion on 64bit targets. ++ Closes: #348792. ++ * gij-4.1: Ignore exit value of gcj-dbtool in postinst. Adresses: #388505. ++ * libgcj-common: Move rebuild-gcj-db from java-gcj-compat into libgcj-common. ++ * On hppa, install a wrapper around gij-4.1 to ignore unaligned memory ++ accesses. Works around buildd configurations enabling this check by ++ default. Addresses: #364819. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-libgnatprj.dpatch: Build mlib-tgt-linux.adb instead of ++ mlib-tgt.adb. Closes: #387826. ++ * debian/patches/ada-pr15802.dpatch: Backport from the trunk. ++ Closes: #246384. ++ * debian/control.m4 (gnat-4.1): do not provide gnat (supplied by ++ gcc-defaults instead); conflict with gnat-4.2 which will soon be in ++ unstable. ++ ++ [Roman Zippel] ++ * debian/patches/m68k-dwarf2.dpatch: Recognize stack adjustments also ++ in the src of an instruction. ++ * debian/patches/m68k-jumptable.dpatch: Don't force byte offset when ++ accessing the jumptable, gas can generate the correct offset size instead. ++ * debian/patches/m68k-peephole.dpatch: Convert some text peepholes to rtl ++ peepholes, so the correct DWARF2 information can be generated for stack ++ manipulations (Keep a few peepholes temporarily disabled). ++ * debian/patches/m68k-peephole-note.dpatch: Don't choke on notes while ++ reinserting REG_EH_REGION notes. ++ * debian/patches/m68k-return.dpatch: Don't use single return if fp register ++ have to be restored. Closes: #386864. ++ * debian/patches/m68k-sig-unwind.dpatch: Add support for unwinding over ++ signal frames. ++ * Fix PR rtl-optimization/27736, backport from the trunk. ++ * Add java support for m68k. Closes: #312830, #340874, #381022. ++ ++ -- Matthias Klose Sun, 24 Sep 2006 19:36:31 +0200 ++ ++gcc-4.1 (4.1.1ds1-13) unstable; urgency=medium ++ ++ * Update to SVN 20060901; remove patches applied upstream: ++ - PR target/24367. ++ - PR c++/26670. ++ * Apply proposed patch for PR fortran/28908. ++ * Fix biarch symlinks in lib64stdc++ for cross builds. ++ * Fix biarch symlinks in lib32objc on amd64. ++ ++ -- Matthias Klose Fri, 1 Sep 2006 00:04:05 +0200 ++ ++gcc-4.1 (4.1.1ds1-12) unstable; urgency=medium ++ ++ [Matthias Klose] ++ * Update to SVN 20060830. ++ * Add backport of PR other/26208, bump libgcc1 shlibs dependency. ++ * Add backport of PR c++/26670. Closes: #356548. ++ * Apply proposed patch for PR target/24367 (s390). ++ * Add /usr/lib/jni to the libjava dlsearch path. Closes: #364820. ++ * Build without GFDL licensed docs. Closes: #384036. ++ - debian/patches/{svn-doc-updates,pr25524-doc,pr26885-doc}.dpatch: ++ Split out -doc specific patches. ++ - debian/*.texi, debian/porting.html: Add dummy documentation. ++ - debian/rules.unpack, debian/rules.patch: Update for non-gfdl build. ++ - fastjar.texi: Directly define the gcctabopt and gccoptlist macros. ++ ++ * Merge from Ubuntu: ++ - Backport the classpath-0.92, libjava, gcc/java merge from the ++ redhat/gcc-4_1-branch branch. ++ - Apply the proposed patch for PR libgcj/28698. ++ - Change the libgcj/libgij sonames. Rename libgcj7 to libgcj7-0. ++ - Do not remove the rpath from libjvm.so and libjawt.so. Some ++ configure scripts rely on being able to link that libraries ++ directly. ++ - When running the i386 binaries on amd64, look in ++ /usr/lib32/gcj-x.y and /usr/lib32/jni instead. ++ - Add /usr/lib/jni to java.library.path. Closes: #364820. ++ - Add debugging symbols for more binary packages to libgcj7-dbg. ++ Closes: #383705. ++ - libgcj7-dev: Remove conflicts with older libgcjX-dev packages. ++ - Do not build the libgcj-bc and lib32gcj-bc packages anymore from ++ the gcj-4.1 source. ++ ++ [Roman Zippel] ++ * debian/patches/m68k-limit_reload.dpatch: Correctly limit reload class. ++ Closes: #375522. ++ * debian/patches/m68k-split_shift.dpatch: Use correct predicates for long long ++ shifts and use more splits. Closes: #381572. ++ * debian/patches/m68k-prevent-qipush.dpatch: Prevent combine from creating ++ a byte push on the stack (invalid on m68k). Closes: #385021. ++ * debian/patches/m68k-autoinc.dpatch: Recognize a few more autoinc possibilities. ++ * debian/patches/pr25514.dpatch: Backport from the trunk. ++ * debian/patches/m68k-gc.dpatch: Change STACKBOTTOM to LINUX_STACKBOTTOM ++ so it works with 2.6 kernels. ++ * Other m68k bug reports fixed in 4.1.1-11 and 4.1.1-12: ++ Closes: #378599, #345574, #344041, #323426, #340293. ++ * Build the stage1 compiler using -g -O2; saves a few hours build time ++ and apparently is working at the moment. ++ ++ -- Matthias Klose Tue, 29 Aug 2006 21:37:28 +0200 ++ ++gcc-4.1 (4.1.1-11) unstable; urgency=low ++ ++ * The "Our priority are our users, remove the documentation!" release. ++ ++ [Matthias Klose] ++ * Fix build failure building the hppa->hppa64 cross compiler. ++ * Update to SVN 20060814. ++ - Fix directory traversal vulnerability in fastjar. Closes: #368397. ++ CVE-2006-3619. ++ - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. ++ Closes: #321215. ++ - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. ++ Closes: #356569. ++ * Remove patch for PR rtl-optimization/28075, applied upstream. ++ * Apply proposed patch for PR rtl-optimization/28634, rounding problem with ++ -fdelayed-branch on hppa/mips. Closes: #381710. ++ * Fixed at least in 4.1.1-10: boost::date_time build failure. ++ Closes: #382352. ++ * Build-depend on make (>= 3.81), add make (>= 3.81) as dependency to ++ gcc-4.1-source. Closes: #381117. ++ * Backport of libffi from the trunk; needed for the java backport in ++ experimental. ++ * libffi4-dev: Install the libffi_convenience library as libffi_pic.a. ++ * When building a package without the GFDL'd documentation, don't create ++ the alternative's slave links for manual pages for the java tools. ++ * Do not build the -doc packages and derived manual pages licensed under ++ the GFDL with invariant sections or cover texts. ++ * Only build the libssp package, if the target libc doesn't provide ++ ssp support. ++ * Run the complete testsuite, when building a standalone gcj package. ++ ++ [Roman Zippel] ++ * debian/patches/m68k-fjump.dpatch: ++ Always use as fjcc pseudo op, we rely heavily on as to generate the ++ right size for the jump instructions. Closes: #359281. ++ * debian/patches/m68k-gc.dpatch: ++ The thread suspend handler has to save all registers. ++ Reenable MPROTECT_VDB, it should work, otherwise it's probably a kernel bug. ++ * debian/patches/m68k-save_pic.dpatch: ++ Correctly save the pic register, when not done by reload(). ++ (fixes _Unwind_RaiseException and thus exception handling). ++ * debian/patches/m68k-libffi.dpatch: Add support for closures. ++ * debian/patches/m68k-bitfield.dpatch: Avoid propagation of mem expression ++ past a zero_extract lvalue. ++ * debian/patches/m68k-dwarf.dpatch: Correct the dwarf frame information, ++ but preserve compatibility. ++ ++ [Christian Aichinger] ++ * Fix building a cross compiler targeted for ia64. Closes: #382627. ++ ++ -- Matthias Klose Tue, 15 Aug 2006 00:41:00 +0200 ++ ++gcc-4.1 (4.1.1-10) unstable; urgency=low ++ ++ * Update to SVN 20060729. ++ - Fix PR c++/28225, segfault in type_dependent_expression_p. ++ Closes: #376148. ++ * Apply proposed patch for PR rtl-optimization/28075. ++ Closes: #373820. ++ * Apply proposed backport and proposed patch for PR rtl-optimization/28221. ++ Closes: #376084. ++ * libgcj7-jar: Loosen dependency on gcj-4.1-base. ++ * Add ssp header files to the private gcc includedir. ++ * Do not build the Ada packages from the gcc-4.1 source, introducing ++ a new gnat-4.1 source package. ++ * Build libgnat on alpha and s390 as well. ++ * Do not build the gnat-4.1-doc package (GFDL with invariant sections or ++ cover texts). ++ * Remove references to the stl-manual package. Closes: #378698. ++ ++ -- Matthias Klose Sat, 29 Jul 2006 22:08:59 +0200 ++ ++gcc-4.1 (4.1.1-9) unstable; urgency=low ++ ++ * Update to SVN 20060715. ++ - Fix PR c++/28016, do not emit uninstantiated static data members. ++ Closes: #373895, #376871. ++ * Revert the patch to fix PR c++/27227. Closes: #378321. ++ * multiarch-include.dpatch: Renamed from biarch-include.dpatch; ++ apply for all architectures. ++ * Do not build the java compiler in gcc-4.1 package, just include the ++ options and specs in the gcc driver. ++ * Remove gnat-4.0 as an alternative build dependency. ++ * Add a patch to enable -fstack-protector by default for C, C++, ObjC, ObjC++. ++ The patch is disabled by default. ++ ++ -- Matthias Klose Sat, 15 Jul 2006 17:07:29 +0200 ++ ++gcc-4.1 (4.1.1-8) unstable; urgency=medium ++ ++ * Update to SVN 20060708. ++ - Fix typo in gcov documentation. Closes: #375140. ++ - Fix typo in gccint documentation. Closes: #376412. ++ - [alpha], Fix -fvisibility-inlines-hidden segfaults on reference to ++ static method. PR target/27082. Closes: #369642. ++ ++ * Fix ppc64 architecture string in debian/multiarch.inc. Closes: #374535. ++ * Fix conflict, replace and provide libssp0-dev for cross compilers. ++ Closes: #377012. ++ * Ignore compiler warnings when checking whether compiler driver understands ++ Ada fails. Closes: #376660. ++ * Backport fix for PR libmudflap/26864 from the trunk. Closes: #26864. ++ * README.C++: Remove non-existing URL. Closes: #347601. ++ * gij-4.1: Provide java2-runtime. Closes: #360906. ++ ++ * Closed reports reported against gcc-3.0 and fixed in gcc-4.1: ++ - C++ ++ + PR libstdc++/13943, call of overloaded `llabs(int)' is ambiguous. ++ Closes: #228645. ++ - Java ++ + Fixed segmentation fault on compiling bad program. Closes: #165635 ++ * Closed reports reported against gcc-3.3 and fixed in gcc-4.1: ++ - Stack protector available. Closes: #213994, #233208. ++ - Better documentation of -finline-limit option. Closes: #296047. ++ * Closed reports reported against gcc-3.4 and fixed in gcc-4.1: ++ - General ++ + Fixed [unit-at-a-time] Using -O2 cannot detect missing return ++ statement in a function. Closes: #276843. ++ - C++ ++ + PR13943, call of overloaded `llabs(int)' is ambiguous. Closes: #228645. ++ + PR c++/21280, #pragma interface, templates, and "inline function used ++ but never defined". Closes: #364412. ++ - Architecture specific: ++ - m68k ++ + Segfault building glibc. Closes: #353618. ++ + ICE when trying to build boost. Closes: #321486. ++ * Closed reports reported against gcc-4.0 and fixed in gcc-4.1: ++ - General ++ + Handling of #pragma GCC visibility for builtin functions. ++ Closes: #330279. ++ + gettext interpretation the two conditional strings as one. ++ Closes: #227193. ++ + ICE due to if-conversion. Closes: #335078. ++ + Fix unaligned accesses with __attribute__(packed) and memcpy. ++ Closes: #355297. ++ + Fix ICE in expand_expr_real_1, at expr.c. Closes: #369817. ++ - Ada ++ + Link error not finding -laddr2line. Closes: #322849. ++ + ICE on invalid code. Closes: #333564. ++ - C++ ++ + libstdc++: bad thousand separator with fr_FR.UTF-8. Closes: #351786. ++ + The Compiler uses less memory than 4.0. Closes: #336225. ++ + Fix "fails to compare reverse map iterators". Closes: #362840. ++ + Fix "fail to generate code for base destructor defined inline with ++ pragma interface". Closes: #356435. ++ + Fix ICE in cp_expr_size, at cp/cp-objcp-common.c. Closes: #317455. ++ + Fix wrong warning: control may reach end of non-void function. ++ Closes: #319309. ++ + Fix bogus warning "statement has no effect" with template and ++ statement-expression. Closes: #336915. ++ + Fixed segfault on syntax error. Closes: #349087. ++ + Fix ICE with __builtin_constant_p in template argument. ++ Closes: #353366. ++ + Implement DR280 (fixing "no operator!= for const_reverse_iterator"). ++ Closes: #244894. ++ - Fortran ++ + Fix wrong behaviour in unformatted writing. Closes: #369547. ++ - Java ++ + Fixed segfault on -fdump-tree-all-all. Closes: #344265. ++ + Fixed ant code completion in eclipse generating a nullpointer ++ exception. Closes: #337510. ++ + Fixed abort in gnu_java_awt_peer_gtk_GtkImage.c. Closes: #343112. ++ + Fixed assertion failure in gij with rhdb-explain. Closes: #335650. ++ + Fixed assertion failure when calling JTabbedPane.addTab(null, ...). ++ Closes: #314704. ++ + Fixed error when displaying empty window with bound larger than the ++ displayed content. Closes: #324502. ++ + Fixed: Exception in JComboBox.removeAllItems(). Closes: #314706. ++ + Fixed assertian error in gnu_java_awt_peer_gtk_GtkImage.c. ++ Closes: #333733. ++ - libmudflap ++ + PR libmudflap/23170, libmudflap should not use functions marked ++ obsolescent by POSIX/SUS. Closes: #320398. ++ - Architecture specific: ++ - m68k ++ + FTBFS building tin. Closes: #323016. ++ + ICE with -g -fomit-frame-pointer. Closes: #331150. ++ + ICE in instantiate_virtual_regs_lossage. Closes: #333536. ++ + Wrong code generation with loop unrolling. Closes: #342121. ++ + ICEs while building gst-ffmpeg. Closes: #343692. ++ - mips ++ + Fix gjdoc build failure. Closes: #344986. ++ + Fix link failure for static libs and object files when xgot ++ needs to be used. Closes: #274942. ++ * gnat bug reports fixed since gnat-3.15p: ++ - GNAT miscounts UTF8 characters in string with -gnaty. Closes: #66175. ++ - Bug box from "with Text_IO" when compiling optimized. Closes: #243795. ++ - Nonconforming parameter lists not detected. Closes: #243796. ++ - Illegal use clause not detected. Closes: #243797. ++ - Compiler enters infinite loop on illegal program with tagged records. ++ Closes: #243799. ++ - Compiler crashes on illegal program (missing discriminant, unconstrained ++ parent). Closes: #243800. ++ - Bug box at sinfo.adb:1215 on illegal program. Closes: #243801. ++ - Bug box at sinfo.adb:1651 on illegal program. Closes: #243802. ++ - Illegal program not detected (entry families). Closes: #243803. ++ - Illegal program not detected, RM 10.1.1(14). Closes: #243807. ++ - Bug box at exp_ch9.adb:7254 on illegal code. Closes: #243812. ++ - Illegal program not detected, RM 4.1.4(14). Closes: #243816. ++ - Bug box in Gigi, code=116, on legal program. Closes: #244225. ++ - Illegal program not detected, 12.7(10) (generic parameter is visible, ++ shouldn't be). Closes: #244483. ++ - Illegal program not detected, ambiguous aggregate. Closes: #244496. ++ - Bug box at sem_ch3.adb:8003. Closes: #244940. ++ - Bug box in Gigi, code=103, on illegal program. Closes: #244945. ++ - Legal program rejected, overloaded procedures. Closes: #246188. ++ - Bug box in Gigi, code=999, on legal program. Closes: #246388. ++ - Illegal program not detected, RM 10.1.6(3). Closes: #246389. ++ - Illegal program not detected, RM 3.10.2(24). Closes: #247014. ++ - Illegal program not detected, RM 3.9(17). Closes: #247015. ++ - Legal program rejected. Closes: #247016. ++ - Legal program rejected. Closes: #247021. ++ - Illegal program not detected, RM 4.7(3). Closes: #247022. ++ - Illegal program not detected, RM 3.10.2(27). Closes: #247562. ++ - Legal program rejected, "limited type has no stream attributes". ++ Closes: #247563. ++ - Wrong output from legal program. Closes: #247565. ++ - Compiler enters infinite loop on illegal program. Closes: #247567. ++ - Illegal program not detected, RM 8.6(31). Closes: #247568. ++ - Legal program rejected, visible declaration not seen. Closes: #247572. ++ - Illegal program not detected, RM 8.2(9). Closes: #247573. ++ - Wrong output from legal program, dereferencing access all T'Class. ++ Closes: #248171. ++ - Compiler crashes on illegal program, RM 5.2(6). Closes: #248174. ++ - Cannot find generic package body, RM 1.1.3(4). Closes: #248677. ++ - Illegal program not detected, RM 3.4.1(5). Closes: #248679. ++ - Compiler ignores legal override of abstract subprogram. Closes: #248686. ++ - Bug box, Assert_Failure at sinfo.adb:2365 on illegal program. ++ Closes: #251266. ++ - Ada.Numerics.Generic_Elementary_Functions.Log erroneout with -gnatN. ++ Closes: #263498. ++ - Bug box, Assert_Failure at atree.adb:2906 or Gigi abort, code=102 ++ with -gnat -gnatc. Closes: #267788. ++ - Bug box in Gigi, code=116, 'Unrestricted_Access of a protected ++ subprogram. Closes: #269775. ++ - Stack overflow on illegal program, AI-306. Closes: #276225. ++ - Illegal program not detected, RM B.1(24). Closes: #276226. ++ - Wrong code generated with -O -fPIC. Closes: #306833. ++ - Obsolete: bashism's in debian/rules file. Closes: #370681. ++ - Supports more debian architectures. Closes: #171477. ++ ++ -- Matthias Klose Sat, 8 Jul 2006 16:24:47 +0200 ++ ++gcc-4.1 (4.1.1-7) unstable; urgency=low ++ ++ * Prefer gnat-4.1 over gnat-4.0 as a build dependency. ++ * libssp0: Set priority to standard. ++ ++ -- Matthias Klose Sun, 2 Jul 2006 10:22:50 +0000 ++ ++gcc-4.1 (4.1.1-6) unstable; urgency=low ++ ++ [Ludovic Brenta] ++ * Do not provide the symbolic link /usr/bin/gnatgcc; this will now ++ be provided by package gnat from the source package gcc-defaults. ++ * debian/control.m4, debian/control (gnat): conflict with gnat (<< 4.1), ++ not all versions of gnat, since gcc-defaults will now provide gnat (= 4.1) ++ which depends on gnat-4.1. ++ ++ [Matthias Klose] ++ * libjava: Change the default for enable_hash_synchronization_default ++ on PA-RISC. Tighten the libgcj7 shlibs version on hppa. ++ * Update to SVN 20060630. ++ * Apply proposed patch for PR 26991. ++ * Don't use the version for the libstdc++ shlibs dependency for the libgcj ++ shlibs dependency. ++ * Merge from Ubuntu edgy: ++ - Fix %g7 usage in TLS, add patch sparc-g7.dpatch, fixes glibc-2.4 build ++ failure on sparc (Fabio M. Di Nitto). ++ - Merge libssp0-dev into gcc-4.1 (-fstack-protector is a common option). ++ - Run the testsuite with -fstack-protector as well. ++ ++ [Bastian Blank] ++ * Make it possible to overwrite arch per DEB_TARGET_ARCH and DEB_TARGET_GNU_TYPE. ++ * Disable biarch only on request for cross builds. ++ * Use correct source directory for tarballs. ++ * Produce correct multiarch.inc for source builds. ++ ++ -- Matthias Klose Sat, 1 Jul 2006 01:49:55 +0200 ++ ++gcc-4.1 (4.1.1-5) unstable; urgency=low ++ ++ * Fix build error running with dpkg-buildpackage -rsudo. ++ ++ -- Matthias Klose Wed, 14 Jun 2006 01:54:13 +0200 ++ ++gcc-4.1 (4.1.1-4) unstable; urgency=low ++ ++ * Really do not backout the fix for PR c++/26068. ++ Closes: #372152, #372559. ++ * Update fastjar version string to 4.1. ++ * Disable pascal again. ++ ++ -- Matthias Klose Mon, 12 Jun 2006 20:29:57 +0200 ++ ++gcc-4.1 (4.1.1-3) unstable; urgency=low ++ ++ * Update to SVN 20060608, do not revert the fix for PR c++/26068. ++ Closes: #372152, #372559. ++ * Fix build failures for Pascal, enable Pascal on all architectures. ++ * Fix another build failure on GNU/kFreeBSD (Aurelien Jarno). ++ Closes: #370661. ++ * Fix build fauilure in gcc/p with parallel make. ++ * Remove cross-configure patch (Kazuhiro Inaoka). Closes: #370649. ++ * Only build the gcc-4.1-source package, when building from the gcc-4.1 ++ source. ++ * Fix upgrade problem from standalone gcj-4.1. ++ * Fix build error using bison-2.2, build-depend on bison (>= 2.3). ++ Closes: #372605. ++ * Backport PR libstdc++/25524 from the trunk, update the biarch-include ++ patch. mips triarch support can be added more easily. ++ ++ -- Matthias Klose Mon, 12 Jun 2006 00:23:45 +0200 ++ ++gcc-4.1 (4.1.1-2) unstable; urgency=low ++ ++ * Update to SVN 20060604. ++ - Fix PR c++/26757, C++ front-end producing two DECLs with the same UID. ++ Closes: #356569. ++ - Fix PR target/27158, ICE in extract_insn with -maltivec. ++ Closes: #362307. ++ * Revert PR c++/26068 to work around PR c++/27884 (Martin Michlmayr). ++ Closes: #370308. ++ * Mention Ada in copyright, update copyright file (Ludovic Brenta). ++ Closes: #366744. ++ * Fix kbsd-gnu-java.dpatch (Petr Salinger). Closes: #370320. ++ * Don't include version control files in gcc-4.1-source. ++ ++ -- Matthias Klose Sun, 4 Jun 2006 19:13:37 +0000 ++ ++gcc-4.1 (4.1.1-1) unstable; urgency=low ++ ++ [Matthias Klose] ++ * Update to SVN 20060601. ++ * Reenable the gpc build. ++ * PR libgcj/26483, libffi patch for IA-64 denorms, taken from trunk. ++ * Disable Ada for m32r targets. Closes: #367595. ++ * lib32gfortran1: Do not create empty directory /usr/lib32. Closes: #367999. ++ * gcc-4.1: Add a conflict to the gcj-4.1 version with a different ++ gcc_libdir. ++ * Build gij/gcj for GNU/k*BSD. Closes: #367166. ++ * Update hurd-changes patch (Michael Banck). Closes: #369690. ++ * debian/copyright: Add exception for the gpc runtime library. ++ * Update gpc/gpc-doc package descriptions. ++ ++ [Ludovic Brenta] ++ * patches/ada-libgnatprj.dpatch: add prj-pars.ad[bs] and sfn_scan.ad[bs] ++ to libgnatprj; remove them from gnatmake. ++ ++ -- Matthias Klose Thu, 1 Jun 2006 20:35:54 +0200 ++ ++gcc-4.1 (4.1.0-4) unstable; urgency=low ++ ++ [Ludovic Brenta] ++ * Fix a stupid bug whereby fname.ad{b,s} would be included in both ++ libgnatvsn-dev and libgnatprj-dev, preventing use of gnatprj.gpr. ++ Closes: #366733. ++ ++ -- Matthias Klose Thu, 11 May 2006 04:34:50 +0200 ++ ++gcc-4.1 (4.1.0-3) unstable; urgency=low ++ ++ * Update to SVN 20060507. ++ * debian/rules.d/binary-java.mk: Use $(lib32) everywhere. Closes: #365388. ++ * Always configure hppa64-linux-gnu with ++ --includedir=/usr/hppa64-linux-gnu/include. ++ * Make libgnatvsn4.1 and libgnatprj4.1 priority optional. Closes: #365900. ++ * Call autoconf2.13 explicitely in the Ada patches, build-depend on ++ autoconf2.13. Closes: #365780. ++ * Fix libgnatprj-dev and libgnatvsn-dev dependencies on their shared ++ libraries. ++ * Deduce softfloat and vfp (ARM) configure options (Pjotr Kourzanov). ++ * Update proposed patch for PR26885 (May 2 version). ++ * Build the libxxstdc++-dbg packages, when not building the library pacakges. ++ * Do not include the _pic library in the libxxstdc++-dbg packages. ++ ++ -- Matthias Klose Sun, 7 May 2006 15:29:53 +0200 ++ ++gcc-4.1 (4.1.0-2) unstable; urgency=medium ++ ++ * Update to SVN 20060428. ++ * Apply proposed patches for PR26885. ++ ++ * Keep libffi doc files in its own directory. Closes: #360466. ++ * Update ppc64 patches for 4.1 (Andreas Jochens). Closes: #360498. ++ * Fix PR tree-optimization/26763, wrong-code, taken from the 4.1 branch. ++ Closes: #356896. CVE-2006-1902. ++ * hppa-cbranch, hppa-cbranch2 patches: Fix for PR target/26743, ++ PR target/11254, PR target/10274, backport from trunk (Randolph Chung). ++ * Let libgccN provide -dcv1 when cross-compiling (Pjotr Kourzanov). ++ Closes: #363289. ++ * (Build-)depend on glibc-2.3.6-7. Closes: #360895, #361904. ++ * Fix a pedantic report about a package description. Add a hint that ++ we do not like bug reports with locales other than "C". Closes: #361409. ++ * Enable the libjava interpreter on mips/mipsel. ++ * gcc-4.1-source: Depend on gcc-4.1-base. ++ * gnat-4.1: Fix permissions of .ali files. ++ * Build lib32gcj7 on amd64. ++ * debian/patches/ada-gnatvsn.dpatch: New. Apply proposed fix for ++ PR27194. ++ ++ [Ludovic Brenta] ++ * debian/patches/ada-default-project-path.dpatch: new. Change the ++ default search path for project files to the one specified ++ by the Debian Policy for Ada: /usr/share/ada/adainclude. ++ * debian/patches/ada-symbolic-tracebacks.dpatch: new. Enable support for ++ symbolic tracebacks in exceptions. ++ * debian/patches/ada-missing-lib.dpatch: remove, superseded by the above. ++ * debian/patches/ada-link-lib.dpatch: changed. ++ - Instead of building libada as a target library only, build it as ++ both a host and, if different, target library. ++ - Build the GNAT tools in their top-level directory; do not use ++ recursive makefiles. ++ - Link the GNAT tools dynamically against libgnat. ++ - Apply proposed fix for PR27300. ++ - Rerun autoconf (Matthias Klose). ++ * debian/patches/ada-libgnatvsn.dpatch: new. ++ - Introduce a new shared library named libgnatvsn, containing ++ common components of GNAT under the GNAT-Modified GPL, for ++ use in GNAT tools, ASIS, GLADE and GPS. ++ - Link the gnat tools against this new library. ++ - Rerun autoconf (Matthias Klose). ++ * debian/patches/ada-libgnatprj.dpatch: new. ++ - Introduce a new shared library named libgnatprj, containing the ++ GNAT Project Manager, i.e. the parts of GNAT that parses project ++ files (*.gpr). Licensed under pure GPL; for use in GLADE and GPS. ++ - Link the gnat tools against this new library. ++ - Rerun autoconf (Matthias Klose). ++ * debian/patches/ada-acats.dpatch: new. ++ - When running the ACATS, look for the gnat tools in their new ++ directory (build/gnattools), and for the shared libraries in ++ build/gcc/ada/rts, build/libgnatvsn and build/libgnatprj. ++ * debian/gnatvsn.gpr, debian/gnatprj.gpr: new. ++ * debian/rules.d/binary-ada.mk, debian/control.m4: new binary packages: ++ libgnatvsn-dev, libgnatvsn4.1, libgnatprj-dev, libgnatprj4.1. Place ++ the *.gpr files in their respective -dev packages. ++ ++ -- Matthias Klose Sat, 29 Apr 2006 00:32:09 +0200 ++ ++gcc-4.1 (4.1.0-1) unstable; urgency=low ++ ++ * libstdc++CXX-BV-dev.preinst: Remove (handling of c++ include dir for 4.0). ++ * libgcj-common: Move removal of docdir from preinst into postinst. ++ * libgcj7: Move removal of docdir from preinst into postinst. ++ * Drop alternative build dependency on gnat-3.4, not built anymore. ++ * Fix PR libgcj/26103, wrong exception thrown (4.1 branch). ++ * debian/patches/libjava-stacktrace.dpatch: Add support to print file names ++ and line numbers in stacktraces. ++ * Add debugging symbols for libgcjawt and lib-gnu-java-awt-peer-gtk ++ in the libgcj7-dbg and lib32gcj7-dbg packages. ++ * Remove dependency of the libgcj-dbg packages on the libgcj-dev packages, ++ add recommendations on binutils and libgcj-dev. Mention the requirement ++ of binutils for the stacktraces. ++ * Fix upgrade from version 4.0.2-9, loosing the Debian changelog. ++ Closes: #355439. ++ * gij/gcj: Install one alternative for each command, do not use slave ++ links for rmiregistry, javah, rmic. Ubuntu #26781. Closes: #342557. ++ * Fix for PR tree-optimization/26587, taken from the 4.1 branch. ++ * Fix PR libstdc++/26526 (link failure when _GLIBCXX_DEBUG is defined). ++ * Configure with --enable-clocale=gnu, even if not building C++ packages. ++ * Remove runtime path from biarch libraries as well. ++ * PR middle-end/26557 (ice-on-vaild-code, regression), taken from ++ the gcc-4_1-branch. Closes: #349083. ++ * PR tree-optimization/26672 (ice-on-vaild-code, regression), taken from ++ the gcc-4_1-branch. Closes: #356231. ++ * PR middle-end/26004 (rejects-vaild-code, regression), taken from ++ the gcc-4_1-branch. ++ * When building as standalone gcj, build libgcc4 (hppa only) and fastjar. ++ * Configure --with-cpu=v8 on sparc. ++ * debian/patches/libjava-hppa.dpatch: pa/pa32-linux.h ++ (CRT_CALL_STATIC_FUNCTION): Define when CRTSTUFFS_O is defined. ++ (John David Anglin). Closes: #353346. ++ * Point to the 4.1 version of README.Bugs (closes: #356230). ++ * Disable the libmudflap testsuite on alpha (getting killed). ++ ++ -- Matthias Klose Sat, 18 Mar 2006 23:00:39 +0100 ++ ++gcc-4.1 (4.1.0-0) experimental; urgency=low ++ ++ * GCC 4.1.0 final release. ++ * Build the packages for the Java language from a separate source. ++ * Update NEWS.html, NEWS.gcc. ++ * libgcj-doc: Auto generated API documentation for libgcj7, classpath ++ example programs. ++ * Add gjdoc to Build-Depends-Indep. ++ * On amd64, build-depend on libc6-dev-i386 instead of ia32-libs-dev. ++ * Internal ssp headers now installed in the gcc libdir. ++ * Do not build gcj-4.1-base when building the gcc-4.1 packages. ++ * When building as gcj-4.1, use the tarball from the gcc-4.1-source ++ package. ++ ++ [Ludovic Brenta] ++ * Allow one to enable and disable NLS and bootstrapping from the environment. ++ - Adding "nls" to WITHOUT_LANG disables NLS support. ++ - If WITH_BOOTSTRAP is set, debian/rules2 calls configure ++ --enable-bootstrap=$(WITH_BOOTSTRAP) and just "make". If ++ WITH_BOOTSTRAP is unset, it calls configure without a bootstrapping ++ option and calls "make profiledbootstrap" or "make bootstrap-lean" ++ depending on the target CPU. ++ Currently overwritten to default to "bootstrap". ++ ++ -- Matthias Klose Thu, 2 Mar 2006 00:03:45 +0100 ++ ++gcc-4.1 (4.1ds9-0exp9) experimental; urgency=low ++ ++ * Update to GCC 4.1.0 release candidate 1 (gcc-4.1.0-20060219 tarball). ++ * Update gcc-version patch for gcc-4.1. ++ * libgccN, libstdc++N*: Fix upgrade of /usr/share/doc symlinks. ++ * libjava awt & swing update, taken from trunk 2006-02-16. ++ * libgcj7-dev: Suggest libgcj-doc, built from a separate source package. ++ * Shorten build-dependency line (work around buildd problems ++ on arm* and mips*). ++ * New patch gcc-ice-hack (saving the preprocessed source on an ICE), ++ taken from Fedora. ++ ++ -- Matthias Klose Mon, 20 Feb 2006 10:07:23 +0100 ++ ++gcc-4.1 (4.1ds8-0exp8) experimental; urgency=low ++ ++ * Update to SVN 20060212, taken from the 4.1 release branch. ++ * libgccN: Fix upgrade of /usr/share/doc/libgccN symlink. ++ ++ -- Matthias Klose Sun, 12 Feb 2006 19:48:31 +0000 ++ ++gcc-4.1 (4.1ds7-0exp7) experimental; urgency=low ++ ++ * Update to SVN 20060127, taken from the 4.1 release branch. ++ - On hppa, bump the libgcc soversion to 4. ++ * Add an option not to depend on the system -base package for cross compiler ++ (Ian Wienand). Closes: #347484. ++ * Remove workaround increasing the stack size limit for some architectures, ++ not needed anymore on ia64. ++ * On amd64, build-depend on libc6-dev-i386, depend on libc6-i386, where ++ available. ++ * libstdc++6: Properly upgrade the doc directory. Closes: #346171. ++ * libstdc++6: Add a conflict to scim (<< 1.4.2-1). Closes: #343313. ++ * Set default 32bit ix86 architecture to i486. ++ ++ -- Matthias Klose Fri, 27 Jan 2006 22:23:22 +0100 ++ ++gcc-4.1 (4.1ds6-0ubuntu6) experimental; urgency=low ++ ++ * Update to SVN 20060107, taken from the 4.1 release branch. ++ - Remove fix for PR ada/22533, fixed by patch for PR c++/23171. ++ * Remove binary packages from the control file, which aren't built ++ yet on any architecture. ++ * gcc-hppa64: Use /usr/hppa64-linux-gnu/include as location for the glibc ++ headers, tighten glibc (build-)dependency. ++ * libffi [arm]: Add support for closures, libjava [arm]: enable the gij ++ interpreter (Phil Blundell). Addresses: #337263. ++ * For the gcj standalone build, include cc1 into the gcj-4.1 package, ++ needed for linking java programs compiled to native code. ++ ++ -- Matthias Klose Sat, 7 Jan 2006 03:36:33 +0100 ++ ++gcc-4.1 (4.1ds4-0exp4) experimental; urgency=low ++ ++ * Update to SVN 20051210, taken from the 4.1 release branch. ++ * Prepare to build the java packages from it's own source (merged ++ from Ubuntu). ++ - Build the java packages from the gcc-4.1 source, as long as packages ++ are prepared for experimental. ++ - When built as gcj, run only the libjava testsuite, don't build the ++ libstdc++ debug packages, don't package the gcc source. ++ - Loosen package dependencies, when java packages are built from ++ separate sources. ++ - Fix gcj hppa build, when java packages are built from separate sources. ++ - gij-4.1: Install test-summary, when doing separate builds. ++ - Allow java packages be installed independent from other packages built ++ from the source package. ++ - Rename libgcj7-common to libgcj7-jar. ++ - Introduce a gcj-4.1-base package to completely separate the two and not ++ duplicate the changelog in each gcj/gij package. ++ * Java related changes: ++ - libjava-xml-transform: Update from classpath trunk, needed for ++ eclipse (Michael Koch), applied upstream. ++ - Fix java wrapper scripts to point to 4.1 (closes: #341710). ++ - Reenable java on mips and mipsel. ++ - Fix libgcj6 dependency. Ubuntu #19935. ++ - Add libxt-dev as a java build dependency. autoconf explicitely checks ++ for X11/Intrinsic.h. ++ * Ada related changes: ++ - Apply proposed fix for PR ada/22533, reenable ada on alpha, powerpc, ++ mips, mipsel and s390. ++ - Add Ada support for GNU/kFreeBSD (Aurelien Jarno). Closes: #341356. ++ - Remove ada bootstrap workaround for alpha. ++ * Build a separate gcc-4.1-source package (Bastian Blank). Closes: #333922. ++ * Remove obsolete patch: libstdc++-automake. ++ * Remove patch integrated upstream: libffi-mips. ++ * Fix the installation of the hppa64 compiler in snapshot builds. ++ * Rename libgfortran0* to libgfortran1* (upstream soversion change). ++ * Add a dependency on libc-dev for all compilers / -dev packages except ++ gcc (which can be used for kernel builds without libc-dev). ++ * libffi4-dev: Fix package description. ++ * On amd64, install 32bit libraries into /emul/ia32-linux/usr/lib. ++ Addresses: #341147. ++ * Fix installation of biarch libstdc++ headers on amd64. ++ * Configure --with-tune=i686 on ix86 architectures (on Ubuntu with ++ -mtune=pentium4). Remove the cpu-default-* patches. ++ * debian/control.m4: Fix libxxgcc package names. ++ * Update the build infrastructure to build cross compilers ++ (Nikita V. Youshchenko). ++ * Tighten binutils (build-)dependency. Closes: #342484. ++ * Symlink more doc directories. ++ * debian/control.m4: Explicitely set Architecture for biarch packages. ++ ++ -- Matthias Klose Sat, 10 Dec 2005 16:56:45 +0100 ++ ++gcc-4.1 (4.1ds1-0ubuntu1) UNRELEASED; urgency=low ++ ++ * Build Java packages only. ++ * Update to SVN 20051121, taken from the 4.1 release branch. ++ - Remove libjava-saxdriver-fix patch, applied upstream. ++ - Remove ada-gnat-version patch, applied upstream. ++ * Fix FTBFS in biarch builds on 32bit kernels. ++ * Update libstdc++-doc doc-base file (closes: #339046). ++ * Remove obsolete patch: gcc-alpha-ada_fix. ++ * Fix installation of biarch libstdc++ headers (Ubuntu #19655). ++ * Fix sparc and s390 biarch patches to build the 64bit libffi. ++ * Work around biarch build failure in libjava/classpath/native/jni/midi-alsa. ++ * Install spe.h header on powerpc. ++ * Add libasound build dependencies. ++ * libgcj: Fix installation of libgjsmalsa library. ++ * Remove patches not used anymore: libjava-no-rpath, i386-config-ml-nomf, ++ libobjc, multiarch-include, disable-biarch-check-mf, gpc-profiled, ++ gpc-no-gpidump, libgpc-shared, acats-expect. ++ * Fix references to manuals in gnat(1). Ubuntu #19772. ++ * Remove build dependency on xlibs-dev, add libxtst-dev. ++ * Do not configure with --disable-werror. ++ * Merge *-config-ml patches into one config-ml patch, configure the biarch ++ libs in debian/rules.defs. ++ * debian/gcj-wrapper: Accept -Xss. ++ * Do not build biarch java on Debian (missing biarch libasound). ++ * Do not build the java packages from this source package, avoiding ++ dependencies on X. ++ ++ -- Matthias Klose Mon, 21 Nov 2005 20:29:43 +0100 ++ ++gcc-4.1 (4.1ds0-0exp0) experimental; urgency=low ++ ++ * Configure libstdc++ using the default allocator. ++ * Update to 20051112, taken from the svn trunk. ++ ++ -- Matthias Klose Sat, 12 Nov 2005 23:47:01 +0100 ++ ++gcc-4.1 (4.1ds0-0ubuntu0) breezy; urgency=low ++ ++ * UNRELEASED ++ * First snapshot of gcc-4.1 (CVS 20051019). ++ - adds SSP support (closes: #213994, #233208). ++ * Remove patches applied upstream/not needed anymore. ++ * Update patches for 4.1: link-libs, gcc-textdomain, libjava-dlsearch-path, ++ rename-info-files, reporting, classmap-path, i386-biarch, sparc-biarch, ++ libjava-biarch-awt, ada-gcc-name. ++ * Disable patches: ++ - 323016, m68k, necessary for 4.1? ++ * debian/copyright: Update for 4.1. ++ * debian/control, debian/control.m4, debian/rules.defs, debian/rules.conf: ++ Update for 4.1, add support for Obj-C++ and SSP. ++ * Fix generation of Ada docs in info format. ++ * Set Ada library version to 4.1. ++ * Drop gnat-3.3 as an alternative build dependency. ++ * Use fortran instead of f95 for the build files. ++ * Update build support for awt peer libs. ++ * Add packaging support for SSP library. ++ * Add packaging support for Obj-C++. ++ * Run the testsuite for -march=i686 on i386 and amd64 as well. ++ * Fix generation of Pascal docs in html format. ++ * Update config-ml patches to build libssp biarch. ++ * Disable libssp for hppa64 build. ++ * libgcj7-dev: Install jni_md.h. ++ * Disable gnat for powerpc, currently fails to build. ++ * Add biarch runtime lib packages for ssp, mudflap, ffi. ++ * Do not explicitely configure with --enable-java-gc=boehm, which is the ++ default. ++ * libjava-saxdriver-fix: Fix a problem in the Aelfred2 SAX parser. ++ * libstdc++6-4.0-dev: Depend on the libc-dev package. Ubuntu #18885. ++ * Build-depend on expect-tcl8.3 on all architectures. ++ * Build-depend on lib32z1-dev on amd64 and ppc64, drop build dependency on ++ amd64-libs. ++ * Disable ada on alpha mips mipsel powerpc s390, currently broken. ++ ++ -- Matthias Klose Wed, 19 Oct 2005 11:02:31 +0200 ++ ++gcc-4.0 (4.0.2-3) unstable; urgency=low ++ ++ * Update to CVS 20051015, taken from the gcc-4_0-branch. ++ - gcc man page fixes (closes: #327254, #330099). ++ - PR java/19870, PR java/20338, PR java/21844, PR java/21540: ++ Remove Debian patches. ++ - Applied libjava-echo-fix patch. ++ - Fix PR target/24284, ICE (Segmentation fault) on sparc-linux. ++ Closes: #329840. ++ - Fix PR c++/23797, ICE on typename outside template. Closes: #325545. ++ - Fix PR c++/22551, ICE in tree_low_cst. Closes: #318932. ++ * libstdc++6: Tighten libstdc++ shlibs version to 4.0.2-3 (new symbol). ++ * Update generated Ada files. ++ * Fix logic to disable mudflap and Obj-C++ via the environment. ++ * Remove f77 build bits. ++ * gij-4.0: Remove /var/lib/gcj-4.0/classmap.db on purge (closes: #330800). ++ * Let gcj-4.0 depend on libgcj6-dev, instead of recommending it. This is ++ not necessary for byte-code compilations, but for compilations to native ++ code. For compilations to byte-code, use a better compiler like ecj ++ for now (found in the ecj-bootstrap package). ++ * Disable biarch setup in cross compilers (Josh Triplett). Closes: #333952. ++ * Fix with_libnof logic for cross-compilations (Josh Triplett). ++ Closes: #333951. ++ * Depend on binutils (>= 2.16.1cvs20050902-1) on the alpha architecture. ++ Closes: #333954. ++ * On i386, build-depend on libc6-dev-amd64. Closes: #329108. ++ * (Build-)depend on glibc 2.3.5-5. ++ ++ -- Matthias Klose Sun, 2 Oct 2005 14:25:54 +0200 ++ ++gcc-4.0 (4.0.2-2) unstable; urgency=low ++ ++ * Update to CVS 20051001, taken from the gcc-4_0-branch. Includes the ++ changes between 4.0.2 RC3 and the final 4.0.2 release, missing from ++ the upstream tarball. Remove patches applied upstream (gcc-c-decl, ++ pr23182, pr23043, pr23367, pr23891, pr21418, pr24018). ++ * On ix86 architectures run the testsuite for -march=i686 as well. ++ * Build libffi on the Hurd (closes: #328705). ++ * Add big-endian arm (armeb) support (Lennert Buytenhek). Closes: #330730. ++ * Update libjava xml to classpath CVS HEAD 20050930 (Michael Koch). ++ * Reapply patch to make -mieee the default on alpha-linux. Closes: #330826. ++ * Add workaround not to make libmudflap _start/_end not small data on ++ mips/mipsel, taken from CVS HEAD. ++ * Don't build the nof libraries on powerpc. ++ * Number crunching time on m68k, reenable gfortran on m68k-linux-gnu. ++ ++ -- Matthias Klose Sat, 1 Oct 2005 15:42:10 +0200 ++ ++gcc-4.0 (4.0.2-1) unstable; urgency=low ++ ++ * GCC 4.0.2 release. ++ * lib64stdc++6: Set priority to optional. ++ * Fix bug in StreamSerializer, seen with eclipse-3.1 (Ubuntu 12744). ++ Backport from CVS HEAD, Michael Koch. ++ * Apply java patches, proposed for the 4.0 branch: PR java/24018, ++ PR libgcj/23182, PR java/19870, PR java/21844, PR libgcj/23367, ++ PR java/20338. ++ * Update the expect/pty test to actually call expect directly, rather ++ than test for the existence of PTYs, since a working expect is what ++ we really care about, not random device files (Adam Conrad). ++ Closes: #329715. ++ * Add build dependencies on lib64z1-dev. ++ * gcc-c-decl.dpatch: Fix C global decl handling regression in 4.0.2 from ++ 4.0.1 ++ ++ -- Matthias Klose Thu, 29 Sep 2005 19:50:08 +0200 ++ ++gcc-4.0 (4.0.1-9) unstable; urgency=low ++ ++ * Update to CVS 20050922, taken from the gcc-4_0-branch (4.0.2 RC3). ++ * Apply patches: ++ - Fix PR java/21418: Order of source files matters when compiling, ++ backported from mainline. ++ - Fix for PR 23043, backported form mainline. ++ - Proposed patch for #323016 (m68k only). Patch by Roman Zippel. ++ * libstdc++6: Tighten libstdc++ shlibs version to 4.0.1-9 (new symbol). ++ * Fail the build early, if the system doesn't have any pty devices ++ created in /dev. Needed for running the testsuite. ++ * Update hurd changes again (closes: #328973). ++ ++ -- Matthias Klose Thu, 22 Sep 2005 07:28:18 +0200 ++ ++gcc-4.0 (4.0.1-8) unstable; urgency=medium ++ ++ * Update to CVS 20050917, taken from the gcc-4_0-branch. ++ - Fix FTBFS for boost, introduced in 4.0.1-7 (closes: #328684). ++ * Fix PR java/23891, eclipse bootstrap. ++ * Set priority of gcc-4.0-hppa64 package to standard. ++ * Bump standards version to 3.6.2. ++ * Fix java wrapper script, mishandles command line options with arguments. ++ Patch from Olly Betts. Closes: #296456. ++ * Bump epoch of the lib32gcc1 package to the same epoch as for the the ++ libgcc1 and lib64gcc1 packages. ++ * Fix some lintian warnings. ++ * Build libffi on the Hurd (closes: #328705). ++ * For biarch builds, disable the testsuite for the non-default architecture ++ for runtime libraries, which are not built by default (libjava). ++ * Add gsfonts-x11 to Build-Depends-Indep to avoid warnings from doxygen. ++ * Install Ada .ali files read-only. ++ ++ -- Matthias Klose Sat, 17 Sep 2005 10:35:23 +0200 ++ ++gcc-4.0 (4.0.1-7) unstable; urgency=low ++ ++ * Update to CVS 20050913, taken from the gcc-4_0-branch. ++ - Fix PR c++/19004, ICE in uses_template_parms (closes: #284777). ++ - Fix PR rtl-optimization/23454, ICE in invert_exp_1 on sparc. ++ Closes: #321215. ++ - Fix PR libstdc++/23417, make bits/stl_{list,tree}.h -Weffc++ clean. ++ Closes: ##322170. ++ * Install 'altivec.h' on ppc64 (closes: #323945). ++ * Install locale data with the versioned package name (closes: #321591). ++ * Fix fastjar build without building libjava. ++ * On hppa, don't build using gcc-3.3 when ada is disabled. ++ * On m68k, don't build the stage1 compiler using -O. ++ ++ * Ludovic Brenta ++ - Allow the choice whether or not to build with NLS. ++ - Fix a typo whereby libffi was always enabled on i386. ++ ++ -- Matthias Klose Tue, 13 Sep 2005 23:23:11 +0200 ++ ++gcc-4.0 (4.0.1-6) unstable; urgency=low ++ ++ * Update to CVS 20050821, taken from the gcc-4_0-branch. ++ - debian/patches/pr21562.dpatch: Removed, applied upstream. ++ - debian/patches/libjava-awt-name.dpatch: Updated. ++ - debian/patches/classpath-20050618.dpatch: Updated. ++ * Use all available CPU's for the check target, unless USE_NJOBS == no. ++ * debian/patches/biarch-include.dpatch: Include ++ /usr/local/include/-linux-gnu before including /usr/local/include. ++ * Fix biarch system include directories for the non-default architecture. ++ * Prefer gnat-4.0 over gnat-3.4 over gnat-3.3 as a build-dependency. ++ ++ -- Matthias Klose Thu, 18 Aug 2005 18:36:23 +0200 ++ ++gcc-4.0 (4.0.1-5) unstable; urgency=low ++ ++ * Update to CVS 20050816, taken from the gcc-4_0-branch. ++ - Fix PR middle-end/23369, wrong code generation for funcptr comparison ++ on hppa. Closes: #321785. ++ - Fix PR fortran/23368 ICE with NAG routines (closes: #322912). ++ * Build-depend on libcairo2-dev (they say, that's the final package name ...) ++ * libgcj: Search /usr/lib/gcj-4.0 for dlopened libraries, place a copy ++ of the .la files in the libgcj6 package into this directory. ++ Closes: #322576. ++ * Tighten the dependencies between the compiler packages to the same ++ version and release. Use some substitution variables for control file ++ generation. ++ * Remove build dependencies for gpc. ++ * Don't use '/emul/ia32-linux' on ppc64 (closes: #322890). ++ * Synchronize with Ubuntu. ++ ++ -- Matthias Klose Tue, 16 Aug 2005 22:45:47 +0200 ++ ++gcc-4.0 (4.0.1-4ubuntu1) breezy; urgency=low ++ ++ * Jeff Bailey ++ ++ Enable i386 biarch using biarch glibc (not yet enabled for unstable). ++ - debian/rules.d/binary-libgcc.mk: Make i386 lib64gcc1 depend on ++ libc6-amd64 ++ - debian/control.m4: Suggest libc6-amd64 rather than amd64-libs. ++ - debian/rules.conf: Build-Dep on libc6-dev-amd64 [i386] ++ Build-Dep on binutils >= 2.16.1-2ubuntu3 ++ - debian/rules2: Enable biarch build in Ubuntu. ++ ++ * Matthias Klose ++ ++ - Add shlibs file and dependency information for the lib32gcc1 package. ++ - debian/patches/gcc-textdomain.dpatch: Update (closes: #321591). ++ - Set priority of gcc-4.0-base and libstdc++6 packages to `required'. ++ Closes: #321016. ++ - libffi-hppa.dpatch: Remove, applied upstream. ++ ++ -- Matthias Klose Mon, 8 Aug 2005 19:39:02 +0200 ++ ++gcc-4.0 (4.0.1-4) unstable; urgency=low ++ ++ * Enable the biarch compiler for powerpc (closes: #268023). ++ * Update to CVS 20050806, taken from the gcc-4_0-branch. ++ * Build depend on libcairo0.6.0-dev (closes: #321540). ++ * Fix Ada build on the hurd (closes: #321350). ++ * Update libffi for mips (Thiemo Seufer). Closes: #321100. ++ * Fix segfault on 64bit archs in the AWT Gtk peer library (Dan Frazier). ++ Closes: #320915. ++ * Add libXXgcc1 build dependencies for biarch builds. ++ ++ -- Matthias Klose Sun, 7 Aug 2005 07:01:59 +0000 ++ ++gcc-4.0 (4.0.1-3) unstable; urgency=medium ++ ++ * Update to CVS 20050725, taken from the gcc-4_0-branch. ++ - Fix ICE with -O and -mno-ieee-fp/-ffast-math (closes: #319087). ++ * Synchronize with Ubuntu. ++ * Fix applying hurd specific patches for the hurd build (closes: #318443). ++ * Do not build-depend on libmpfr-dev on architectures, where fortran ++ is not built. ++ * Apply biarch include patch on ppc64 as well (closes: #318603). ++ * Correct libstdc++-dev package description (closes: #319082). ++ * debian/rules.defs: Replace DEB_TARGET_GNU_CPU with DEB_TARGET_ARCH_CPU. ++ * gcc-4.0-hppa64: Rename hppa64-linux-gcc to hppa64-linux-gnu-gcc. ++ Closes: #319818. ++ ++ -- Matthias Klose Mon, 25 Jul 2005 10:43:06 +0200 ++ ++gcc-4.0 (4.0.1-2ubuntu3) breezy; urgency=low ++ ++ * Update to CVS 20050720, taken from the gcc-4_0-branch. ++ - Fix PR22278, volatile issues, seen when building xorg. ++ * Build against new libcairo1-dev (0.5.2). ++ ++ -- Matthias Klose Wed, 20 Jul 2005 12:29:50 +0200 ++ ++gcc-4.0 (4.0.1-2ubuntu2) breezy; urgency=low ++ ++ * Acknowledge that i386 biarch builds still need to be fixed for glibc-2.3.5. ++ ++ -- Matthias Klose Tue, 19 Jul 2005 08:29:30 +0000 ++ ++gcc-4.0 (4.0.1-2ubuntu1) breezy; urgency=low ++ ++ * Synchronize with Debian. ++ * Update to CVS 20050718, taken from the gcc-4_0-branch. ++ - Fix PR c++/22132 (closes: #318488), upcasting a const class pointer ++ to struct the class derives from generates wrong code. ++ * Build biarch runtime libraries for Fortran and ObjC. ++ * Apply proposed patch for PR22309 (crash with mt_allocator if libstdc++ ++ is dlclosed). Closes: #293466. ++ ++ -- Matthias Klose Mon, 18 Jul 2005 17:10:18 +0200 ++ ++gcc-4.0 (4.0.1-2) unstable; urgency=low ++ ++ * Don't apply the patch to make -mieee the default on alpha-linux-gnu. ++ Causes the bootstrap to fail on alpha-linux-gnu. ++ ++ -- Matthias Klose Tue, 12 Jul 2005 00:14:12 +0200 ++ ++gcc-4.0 (4.0.1-1) unstable; urgency=high ++ ++ * GCC 4.0.1 final release. See /usr/share/doc/gcc-4.0/NEWS.{gcc,html}. ++ * Build fastjar on mips/mipsel, fix fastjar build without building java. ++ * Disable the comparision check on unstable/ia64. adaint.o differs, ++ currently cannot be reproduced with glibc-2.3.5 and binutils-2.16.1. ++ * libffi/hppa: Fix handling of 3 and 5-7 byte struct returns. ++ * amd64: Fix libgcc symlinks to point to /usr/lib32, instead of /lib32. ++ * On powerpc, don't build with -j >1, apparently doesn't succeeds ++ on the Debian buildd. ++ * Apply revised patch to make -mieee the default on alpha-linux, ++ and add -mieee-disable switch to turn the default off (Tyson Whitehead). ++ * Disable multiarch-includes; redo biarch-includes to include the paths ++ for the non-default biarch, when called with -m32/-m64. ++ * Move new java headers from libstdc++-dev to libgcj-dev, add replaces ++ line. ++ * Update classpath patch to work with cairo-0.5.1. Patch provided by ++ Michael Koch. ++ * Further classpath updates for gnu.xml and javax.swing.text.html. ++ Patch provided by Michael Koch. ++ * Require binutils (>= 2.16.1) as a build dependency and a dependency. ++ * On i386, require amd64-libs-dev (>= 1.2). ++ * Update debian/NEWS.{html,gcc}. ++ ++ * Closing bug reports reported against older gcc versions (some of them ++ still present in Debian, but not anymore as the default compiler). ++ Usually, forwarded bug reports are linked to ++ http://gcc.gnu.org/PR ++ The upstream bug number usually can be found in the Debian reports. ++ ++ * Closed reports reported against gcc-3.3 and fixed in gcc-3.4: ++ - General: ++ + PR rtl-optimization/2960: Duplicate loop conditions even with -Os ++ Closes: #94701. ++ + PR optimization/3995: i386 optimisation: joining tests. ++ Closes: #105309. ++ + PR rtl-optimization/11635: Unnecessary store onto stack, more ++ curefully expand union cast (closes: #202016). ++ + PR target/7618: vararg disallowed in virtual function. Closes: #205404. ++ + Large array problem on 64 bit platforms (closes: #209152). ++ + Mark more strings as translatable (closes: #227129). ++ + PR gcc/14711: ICE when compiling a huge source file Closes: #234711. ++ + Better code generation for if(!p) return NULL;return p; ++ Closes: #242318. ++ + PR rtl-optimization/16152: Perl ftbfs on {ia64,arm,m68k}-linux. ++ Closes: #255801. ++ + ICE (segfault) while compiling Linux 2.6.9 (closes: #277206). ++ + Link error building memtest (closes: #281445). ++ - Ada: ++ + PR ada/12450: Constraint error for valid input (closes: #210844). ++ + PR ada/13620: miscompilation of array initializer with ++ -O3 -fprofile-arcs. Closes: #226244. ++ - C: ++ + PR c/6897: Code produced with -fPIC reserves EBX, but compiles ++ bad __asm__ anyway (closes: #73065). ++ + PR c/9209: On i386, gcc-3.0 allows $ in indentifiers but not the asm. ++ Closes: #121282. ++ + PR c/11943: Accepts invalid declaration "int x[2, 3];" in C99 mode. ++ Closes: #177303. ++ + PR c/11942: restrict keyword broken in C99 mode. Closes: #187091. ++ + PR other/11370: -Wunreachable-code gives false complaints. ++ Closes: #196600. ++ + PR c/11369: Too relaxed checking with -Wstrict-prototypes. ++ Closes: #197504. ++ + PR c/11445: False positive warning with -Wunreachable-code. ++ Closes: #200140. ++ + PR c/11459: -stdc=c90 -pedantic warns about C90's non long-long ++ support when in C99 mode. Closes: #200392. ++ + PR c/456: Handling of constant expressions. Closes: #225935. ++ + ICE on invalid #define with -traditional (closes: #242916). ++ + No warning when initializing a variable with itself, new option ++ -Winit-self (closes: #293957). ++ - C++: ++ + C++ parse error (closes: #42946). ++ + PR libstdc++/9073: Replacement for __STL_ASSERTIONS (libstdc++v3 ++ debug mode). Closes: #128993. ++ + Parse errors in nested constructor calls (closes: #138561). ++ + PR optimization/1823: -ftrapv aborts with pointer difference due to ++ division optimization. Closes: #169862. ++ + ICE on invalid code (closes: #176101). ++ + PR c++/10199: ICE handling method parametrized by template. ++ Closes: #185604. ++ + High memory usage building packages OpenOffice.org and MythTV. ++ Closes: #194345, #194513. ++ + Improved documentation of std::lower_bound (closes: #196380). ++ + ICE in regenerate_decl_from_template (closes: #197674). ++ + PR c++/11444: Function fails to propagate up class tree ++ (template-related). Closes: #198042. ++ + ICE when using namespaced typedef of primitive type as struct. ++ Closes: #198261. ++ + Bug using streambuf / iostream to read from a named pipe. ++ Closes: #216105. ++ + PR c++/11437: ICE in lookup_name_real (closes: #200011). ++ + Add large file support (LFS) in libstdc++ (closes: #220000). ++ + PR c++/13621: ICE compiling a statement expression returning type ++ string (closes: #224413). ++ + g++ doesn't find inherited inner class after template instantiation. ++ Closes: #227518. ++ + PR libstdc++/13928: Add whatis info in man pages generated by doxygen. ++ Closes: #229642. ++ + Missing symbol _M_setstate in libstdc++ (closes: #232709). ++ + Unable to parse declaration of inline constructor explicit ++ specialization (closes: #234709). ++ + ICE (segfault) on invalid C++ code (closes: #246031). ++ + ICE in lookup_tempate_function (closes: #262441). ++ + Undefined symbols in libstdc++, when using specials char_traits. ++ Closes: #266110. ++ + PR libstdc++/16011: Outputting numbers with ostream in the locale fr_BE ++ causes infinite recursion (closes: #270795). ++ + ICE in tree_low_cst (closes: #276291). ++ + ICE in in expand_call (closes: #283503). ++ + typeof operator is misparsed in a template function (closes: #288555). ++ + ICE in tree_low_cs (closes: #291374). ++ + Improve uninformative error messages (closes: #292961, #293076). ++ + ICE on array initialization (closes: #294560). ++ + Failure to build xine-lib with -finline-functions (closes: #306854). ++ - Java: ++ + Fix error finding files in subdirectories (closes: #195480). ++ + Implement java.text.CollationElementIterator lacks getOffset(). ++ Closes: #259789. ++ - Treelang: ++ + Pointer truncation on 64bit architectures (closes: #308367). ++ - Architecture specific: ++ - alpha ++ + PR debug/10695: ICE on alpha while building agistudio. ++ Closes: #192568. ++ + ICE when building fceu (closes: #228018, #252764). ++ - amd64 ++ + Miscompilation of Objective-C code (closes: #250174). ++ + g++ hangs compiling k3d on amd64 (closes: #285364). ++ - arm ++ + PR target/19008: gcc -O3 -fPIC produces wrong code via auto inlining. ++ Closes: #285238. ++ - i386 ++ + PR target/4106: i386 -fPIC asm ebx clobber no error. ++ Closes: #153472. ++ + PR target/10984: x86/sse2 ICEs on vector intrinsics. Closes: #166940. ++ + Wrong code generation on at least ix86 (closes: #275655). ++ - m68k ++ + PR target/9201: ICE compiling octave-2.1 (closes: #175478). ++ + ICE in verify_initial_elim_offsets (closes: #204407, #257012). ++ + g77 generates invalid assembly code (closes: #225621). ++ + ICE in verify_local_live_at_start (closes #245584). ++ - powerpc ++ + PR optimization/12828: -floop-optimize is unstable on PowerPC (float ++ to int conversion problem). Closes: #218219. ++ + PR target/13619: ICE building altivec code in ffmpeg. ++ Closes: #226148. ++ + PR target/20046: Miscompilation of bind 9.3.0. Closes: #292958. ++ - sparc ++ + ICE (segfault) while building atlas3 on sparc32 (closes: #249108). ++ + Wrong optimization on sparc32 when building linux kernel. ++ Closes: #254626. ++ ++ * Closed reports reported against gcc-3.3 or gcc-3.4 and fixed in gcc-4.0: ++ - General: ++ + PR rtl-optimization/6901: Optimizer improvement (removing unused ++ local variables). Closes: #67206. ++ + PR middle-end/179: Failure to detect use of unitialized variable ++ with -O -Wall. Closes: #117765. ++ + ICE building glibc's nptl on amd64 (closes: #260710, #307993). ++ + PR middle-end/17827: ICE in make_decl_rtl. Closes: #270854. ++ + PR middle-end/21709: ICE on compile-time complex NaN. Closes: #305344. ++ - Ada: ++ + PR ada/10889: Convention Fortran matrices mishandled in generics. ++ Closes: #192135. ++ + PR ada/13897: Implement tasking on powerpc. Closes: #225346. ++ - C: ++ + PR c/13072: Bogus warning with VLA in switch. Closes: #218803. ++ + PR c/13519: typeof(nonconst+const) is const. Closes: #208981. ++ + PR c/12867: Incorrect warning message (void format, should be void* ++ format). Closes: #217360. ++ + PR c/16066: PR 16066] i386 loop strength reduction bug. ++ Closes: #254659. ++ - C++: ++ + PR c++/13518: -Wnon-virtual-dtor doesn't always work. Closes: #212260. ++ + PR translation/16025: ICE with unsupported locale(closes: #242158). ++ + PR c++/15125: -Wformat doesn't warn for different types in fprintf. ++ Closes: #243507. ++ + PR c++/15214: Warn only if the dtor is non-private or the class has ++ friends. (closes: #246639). ++ + PR libstdc++/17218: Unknown subjects in generated libstdc++ manpages. ++ Closes: #262934. ++ + PR libstdc++/17223: Missing .so references in generated libstdc++ ++ manpages. Closes: #262956. ++ + libstdc++-doc: Improve man pages (closes: #280910). ++ + PR c++/19006: ICE in tree_low_cst. Closes: #285692. ++ + g++ does not check arguments to fprintf. Closes: #281847. ++ - Java: ++ + PR java/7304: gcj ICE (closes: #152501). ++ + PR libgcj/7305: Installation of headers not directly in /usr/include. ++ Closes: #195483. ++ + PR libgcj/11941: libgcj timezone handling (closes: #203212). ++ + PR java/14709: gcj fails to wait for its child processes on exec(). ++ Closes: #238432. ++ + PR libgcj/21703: gcj hangs when rapidly calling String.intern(). ++ Closes: #275547. ++ + SocketChannel.get(ByteBuffer) returns 0 at EOF. Closes: #281602. ++ + PR java/19711: gcj segfaults instead of reporting the ambiguous ++ expression. Closes: #286715. ++ + Static libgcj contains repeated archive members (closes: #298263). ++ - Architecture specific: ++ - alpha ++ + Unaligned accesses with ?-operator (closes: #301983). ++ - arm ++ + Compilation error of glibc-2.3.4 on arm (closes: #298508). ++ - m68k ++ + ICE in add_insn_before (closes: #248432). ++ - mips ++ + Fix o32 ABI breakage in gcc 3.3/3.4 (closes: #270620). ++ - powerpc ++ + ICE in extract_insn (closes: #311128). ++ ++ * Closing bug reports as wontfix: ++ - g++ defines _GNU_SOURCE when using the libstdc++ header files. ++ Behaviour did change since 3.0. Closes: #126703, #164872. ++ ++ -- Matthias Klose Sat, 9 Jul 2005 17:10:54 +0000 ++ ++gcc-4.0 (4.0.0ds2-12) unstable; urgency=high ++ ++ * Update to CVS 20050701, taken from the gcc-4_0-branch. ++ * Apply proposed patch for MMAP configure fix; aka PR 19877. Backport ++ from mainline. ++ * Disable Fortran on m68k. Currently FTBFS. ++ * Split multiarch-include/lib patches. Update multiarch-include patch. ++ * Fix FTBFS of the hppa64-linux cross compiler. Don't add the ++ multiarch include dirs when cross compiling. ++ * Configure --with-java-home, as used by java-gcj-compat. ++ Closes: #315646. ++ * Make libgcj-dbg packages priority extra. ++ * Set the path of classmap.db to /var/lib/gcj-@gcc_version@. ++ * On m68k, do not create the default classmap.db in the gcj postinst. ++ See #312830. ++ * On amd64, install the 32bit libraries into /emul/ia32-linux/usr/lib. ++ Restore the /usr/lib32 symlink. ++ * On amd64, don't reference lib64, but instead lib (lib64 is a symlink ++ to lib). Closes: #293050. ++ * Remove references to build directories from the .la files. ++ * Make cpp-X.Y conflict with earlier versions of gcc-X.Y, g++-X.Y, gobjc-X.Y, ++ gcj-X.Y, gfortran-X.Y, gnat-X.Y, treelang-X.Y, if a path component in ++ the gcc library path changes (i.e. version or target alias). ++ * Disable Ada for sh3 sh3eb sh4 sh4eb. ++ * For gcj-4.0, add a conflict to libgcj4-dev and libgcj5-dev. ++ Closes: #316499. ++ ++ -- Matthias Klose Sat, 2 Jul 2005 11:04:35 +0200 ++ ++gcc-4.0 (4.0.0ds1-11) unstable; urgency=low ++ ++ * debian/rules.defs: Disable Ada for alpha. ++ * debian/rules.conf: Fix typo in type-handling replacement code. ++ * Don't ship an empty libgcj6-dbg package. ++ ++ -- Matthias Klose Thu, 23 Jun 2005 09:03:21 +0200 ++ ++gcc-4.0 (4.0.0ds1-10) unstable; urgency=medium ++ ++ * debian/patches/libstdc++-api-compat.dpatch: Apply proposed patch ++ to fix libstdc++ 3.4.5/4.0 compatibility. ++ * type-handling output became insane. Don't use it anymore. ++ * Drop the reference to the stl-manual package (closes: #314983). ++ * Disable java on GNU/kFreeBSD targets, requested by Robert Millan. ++ Closes: #315140. ++ * Terminate the acats-killer process, even if the build is aborted ++ by the user (closes: #314405). ++ * debian/rules.defs: Define DEB_TARGET_ARCH_{OS,CPU}. ++ * Start converting the use of DEB_*_GNU_* to DEB_*_ARCH_* in the build ++ files. ++ * Do not configure with --enable-gtk-cairo. Needs newer gtk. Drop ++ build dependency on libcairo-dev. ++ * Fix setting of the system header directory for the hurd (Michael Banck). ++ Closes: #315386. ++ * Fix FTBFS on hurd-i386: MAXPATHLEN issue (Michael Banck). Closes: #315384. ++ ++ -- Matthias Klose Wed, 22 Jun 2005 19:45:50 +0200 ++ ++gcc-4.0 (4.0.0ds1-9ubuntu2) breezy; urgency=low ++ ++ * Fix version number in libgcj shlibs file. ++ ++ -- Matthias Klose Sun, 19 Jun 2005 10:34:02 +0200 ++ ++gcc-4.0 (4.0.0ds1-9ubuntu1) breezy; urgency=low ++ ++ * Update to 4.0.1, release candidate 2. ++ * libstdc++ shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. ++ * Rename libawt to libgcjawt to avoid conflicts with other ++ libawt implementations (backport from HEAD). ++ * Update classpath awt, swing and xml parser for HTML support in swing. ++ Taken from classpath CVS HEAD 2005-06-18. Patch provided by Michael Koch. ++ * Remove the libgcj-buffer-strategy path, part of the classpath update. ++ * libgcj shlibs file: Require 4.0.0ds1-9ubuntu1 as minimum version. ++ * Require cairo-0.5 as build dependency. ++ * gij-4.0: Provide java1-runtime. ++ * gij-4.0: Provide an rmiregistry alternative (using grmiregistry-4.0). ++ * gcj-4.0: Provide an rmic alternative (using grmic-4.0). ++ * libgcj6-dev conflicts with libgcj5-dev, libgcj4-dev, not libgcj6. ++ Closes: #312741. ++ * libmudflap-entry-point.dpatch: Correct name of entry point on mips/mipsel. ++ * Apply proposed patch for PR 18421 and PR 18719 (m68k only). ++ * Apply proposed path for PR 21562. ++ * Add build dependency on dpkg (>= 1.13.7). ++ * On linux systems, configure for -linux-gnu. ++ * Configure the hppa64 cross compiler to target hppa64-linux-gnu. ++ * (Build-)depend on binutils-2.16.1. ++ * libstdc{32,64}++6-4.0-dbg: Depend on libstdc++6-4.0-dev. ++ * gnat-4.0: only depend on libgnat, when a shared libgnat is built. ++ * gfortran-4.0: Depend on libgmp3c2 | libgmp3. ++ * On hppa, explicitely use gcc-3.3 as a build dependency in the case ++ that Ada is disabled. ++ * libmudflap: Always build the library for the non-default biarch ++ architecture, or else the test results show link failures. ++ ++ -- Matthias Klose Sat, 18 Jun 2005 00:42:55 +0000 ++ ++gcc-4.0 (4.0.0-9) unstable; urgency=low ++ ++ * Upload to unstable. ++ ++ -- Matthias Klose Wed, 25 May 2005 19:02:20 +0200 ++ ++gcc-4.0 (4.0.0-8ubuntu3) breezy; urgency=low ++ ++ * debian/control: Regenerate. ++ ++ -- Matthias Klose Sat, 4 Jun 2005 10:56:27 +0200 ++ ++gcc-4.0 (4.0.0-8ubuntu2) breezy; urgency=low ++ ++ * Fix powerpc-config-ml patch. ++ ++ -- Matthias Klose Fri, 3 Jun 2005 15:47:52 +0200 ++ ++gcc-4.0 (4.0.0-8ubuntu1) breezy; urgency=low ++ ++ * powerpc biarch support: ++ - Enable powerpc biarch support, build lib64gcc1 on powerpc. ++ - Add patch to disable libstdc++'s configure checking, if it can't run ++ 64bit binaries on 32bit kernels (Sven Luther). ++ - Apply the same patch to the other runtime librararies as well. ++ - Run the testsuite with -m64, if we can execute 64bit binaries. ++ - Add libc6-dev-ppc64 as build dependency for powerpc. ++ * 32bit gcj libs for amd64. ++ * debian/logwatch.sh: Don't remove logwatch pid file on exit (suggested ++ by Ryan Murray). ++ * Update to CVS 20050603, taken from the gcc-4_0-branch. ++ * g++-4.0 provides c++abi2-dev. ++ * Loosen dependencies on packages of architecture `all' to not break ++ binary only uploads. ++ * Build libgfortran for biarch as well, else the testsuite will fail. ++ ++ -- Matthias Klose Fri, 3 Jun 2005 13:38:19 +0200 ++ ++gcc-4.0 (4.0.0-8) experimental; urgency=low ++ ++ * Synchronize with Ubuntu. ++ ++ -- Matthias Klose Mon, 23 May 2005 01:56:28 +0000 ++ ++gcc-4.0 (4.0.0-7ubuntu7) breezy; urgency=low ++ ++ * Fix build failures for builds with disabled testsuite. ++ * Adjust debian/rules conditionals to work with all dpkg versions. ++ * Build separate lib32stdc6-4.0-dbg/lib64stdc6-4.0-dbg packages. ++ * Add the debugging symbols of the optimzed libstdc++ build in the ++ lib*stdc++6-dbg packages as well. ++ * Build a libgcj6-dbg package. ++ * Update to CVS 20050522, taken from the gcc-4_0-branch. ++ * Add Ada support for the ppc64 architecture (Andreas Jochens): ++ * debian/patches/ppc64-ada.dpatch ++ - Add gcc/ada/system-linux-ppc64.ads, which has been copied from ++ gcc/ada/system-linux-ppc.ads and changed to use 'Word_Size' 64 ++ instead of 32. ++ - gcc/ada/Makefile.in: Use gcc/ada/system-linux-ppc64.ads on powerpc64. ++ * debian/rules.patch ++ - Use ppc64-ada patch on ppc64. ++ * debian/rules.d/binary-ada.mk ++ Place the symlinks libgnat.so, libgnat-4.0.so, libgnarl.so, ++ libgnarl-4.0.so in '/usr/lib' instead of '/adalib'. ++ Closes: #308948. ++ * Add libc6-dev-i386 as an alternative build dependency for amd64. ++ Closes: #305690. ++ ++ -- Matthias Klose Sun, 22 May 2005 22:14:20 +0200 ++ ++gcc-4.0 (4.0.0-7ubuntu6) breezy; urgency=low ++ ++ * Don't trust dpkg-architecture (1.13.4), it "hurds" ... ++ ++ -- Matthias Klose Wed, 18 May 2005 11:36:38 +0200 ++ ++gcc-4.0 (4.0.0-7ubuntu5) breezy; urgency=low ++ ++ * libgcj6-dev: Don't provide libgcj-dev. ++ ++ -- Matthias Klose Wed, 18 May 2005 00:30:32 +0000 ++ ++gcc-4.0 (4.0.0-7ubuntu4) breezy; urgency=low ++ ++ * Update to CVS 20050517, taken from the gcc-4_0-branch. ++ * Apply proposed patch for PR21293. ++ ++ -- Matthias Klose Tue, 17 May 2005 23:05:40 +0000 ++ ++gcc-4.0 (4.0.0-7ubuntu2) breezy; urgency=low ++ ++ * Update to CVS 20050515, taken from the gcc-4_0-branch. ++ ++ -- Matthias Klose Sun, 15 May 2005 23:48:00 +0200 ++ ++gcc-4.0 (4.0.0-7ubuntu1) breezy; urgency=low ++ ++ * Synchronize with Debian. ++ ++ -- Matthias Klose Mon, 9 May 2005 19:35:29 +0200 ++ ++gcc-4.0 (4.0.0-7) experimental; urgency=low ++ ++ * Update to CVS 20050509, taken from the gcc-4_0-branch. ++ * Remove the note from the fastjar package description, stating, that ++ fastjar is incomplete compared to the "standard" jar utility. ++ * Fix typo in build depends. dpkg-checkbuilddeps doesn't like a comma ++ inside []. ++ * Tighten shlibs dependencies to require the current version. ++ ++ -- Matthias Klose Mon, 9 May 2005 19:02:03 +0200 ++ ++gcc-4.0 (4.0.0-6) experimental; urgency=low ++ ++ * Update to CVS 20050508, taken from the gcc-4_0-branch. ++ ++ -- Matthias Klose Sun, 8 May 2005 14:08:28 +0200 ++ ++gcc-4.0 (4.0.0-5ubuntu1) breezy; urgency=low ++ ++ * Temporarily disable the i386 biarch build. Remove the amd64-libs-dev ++ build dependency, add (build-)conflict (<= 1.1ubuntu1). ++ ++ -- Matthias Klose Sat, 7 May 2005 16:56:21 +0200 ++ ++gcc-4.0 (4.0.0-5) breezy; urgency=low ++ ++ * gnat-3.3 and gnat-4.0 are alternative build dependencies (closes: #308002). ++ * Update to CVS 20050507, taken from the gcc-4_0-branch. ++ * gcj-4.0: Install gjnih. ++ * Add libgcj buffer strategy framework (Thomas Fitzsimmons), needed for OOo2. ++ Backport from 4.1. ++ * Fix all lintian errors and most of the warnings. ++ ++ -- Matthias Klose Sat, 7 May 2005 12:26:15 +0200 ++ ++gcc-4.0 (4.0.0-4) breezy; urgency=low ++ ++ * Still prefer gnat-3.3 over gnat-4.0 as a build dependency. ++ ++ -- Matthias Klose Fri, 6 May 2005 22:30:43 +0200 ++ ++gcc-4.0 (4.0.0-3) breezy; urgency=low ++ ++ * Update to CVS 20050506, taken from the gcc-4_0-branch. ++ * Update priority of java alternatives to 40. ++ * Move gcj-dbtool to gij package, move the default classmap.db to ++ /var/lib/gcj-4.0/classmap.db. Create it in the postinst. ++ * Fix gcc-4.0-hppa64 postinst (closes: #307762). ++ * Fix gcc-4.0-hppa64, gij-4.0 and gcj-4.0 postinst, to not ignore errors ++ from update-alternatives. ++ * Fix gcc-4.0-hppa64, fastjar, gij-4.0 and gcj-4.0 prerm, ++ to not ignore errors from update-alternatives. ++ ++ -- Matthias Klose Fri, 6 May 2005 17:50:58 +0200 ++ ++gcc-4.0 (4.0.0-2) experimental; urgency=low ++ ++ * GCC 4.0.0 release. ++ * Update to CVS 20050503, taken from the gcc-4_0-branch. ++ * Add gnat-4.0 as an alternative build dependency (closes: #305690). ++ ++ -- Matthias Klose Tue, 3 May 2005 15:41:26 +0200 ++ ++gcc-4.0 (4.0.0-1) experimental; urgency=low ++ ++ * GCC 4.0.0 release. ++ ++ -- Matthias Klose Sun, 24 Apr 2005 11:28:42 +0200 ++ ++gcc-4.0 (4.0ds11-0pre11) breezy; urgency=low ++ ++ * CVS 20050413, taken from the gcc-4_0-branch. ++ * Add proposed patches for PR20126, PR20490, PR20929. ++ ++ -- Matthias Klose Wed, 13 Apr 2005 09:43:00 +0200 ++ ++gcc-4.0 (4.0ds10-0pre10) experimental; urgency=low ++ ++ * gcc-4.0.0-20050410 release candidate 1, built from the prerelease tarball. ++ - C++ fix for "optimizer breaks function inlining". Closes: #302989. ++ * Append the GCC version to the fastjar/grepjar version string. ++ * Use short file names in the libstdc++ docs (closes: #301140). ++ * Fix libstdc++-dbg dependencies (closes: #303866). ++ ++ -- Matthias Klose Mon, 11 Apr 2005 13:16:01 +0200 ++ ++gcc-4.0 (4.0ds9-0pre9) experimental; urgency=low ++ ++ * CVS 20050326, taken from the gcc-4_0-branch. ++ * Reenable Ada on ia64. ++ * Build libgnat on hppa, sparc, s390 again. ++ * ppc64 support (Andreas Jochens): ++ * debian/control.m4 ++ - Add libc6-dev-powerpc [ppc64] to the Build-Depends. ++ - Change the Description for lib32gcc1: s/ia32/32 bit Version/ ++ * debian/rules.defs ++ - Define 'biarch_ia32' for ppc64 to use the same 32 bit multilib ++ facilities as amd64. ++ * debian/rules.d/binary-gcc.mk ++ - Correct an error in the 'files_gcc' definition for biarch_ia32 ++ (replace '64' by '32'). ++ * debian/rules2 ++ - Do not use '--disable-multilib' on powerpc64-linux. ++ Use '--disable-nof --disable-softfloat' instead. ++ * debian/rules.d/binary-libstdcxx.mk ++ - Put the 32 bit libstdc++ files in '/usr/lib32'. ++ * debian/rules.patch ++ - Apply 'ppc64-biarch' patch on ppc64. ++ * debian/patches/ppc64-biarch.dpatch ++ - MULTILIB_OSDIRNAMES: Use /lib for native 64 bit libraries and ++ /lib32 for 32 bit libraries. ++ - Add multilib handling to src/config-ml.in (taken from ++ amd64-biarch.dpatch). ++ * Rename biarch_ia32 to biarch32, as suggsted by Andreas. ++ * Use /bin/dash on hppa. ++ * Reenable the build of the hppa64 compiler. ++ * Enable parallel builds by defaults (set environment variale USE_NJOBS=no ++ or USE_NJOBS= to modify the default, which is to use the ++ number of available processors). ++ ++ -- Matthias Klose Sat, 26 Mar 2005 19:07:30 +0100 ++ ++gcc-4.0 (4.0ds8-0pre8) experimental; urgency=low ++ ++ * CVS 20050322, taken from the gcc-4_0-branch. ++ - Add proposed fix for PR19406. ++ * Configure --with-gtk-cairo only if version 0.3.0 is found. ++ * Split out gcc-4.0-locales package. Better chance of getting ++ bug reports in english language. ++ ++ -- Matthias Klose Tue, 22 Mar 2005 14:20:24 +0100 ++ ++gcc-4.0 (4.0ds7-0pre7) experimental; urgency=low ++ ++ * CVS 20050304, taken from the gcc-4_0-branch. ++ * Build the treelang compiler. ++ ++ -- Matthias Klose Fri, 4 Mar 2005 21:29:56 +0100 ++ ++gcc-4.0 (4.0ds6-0pre6ubuntu6) hoary; urgency=low ++ ++ * Fix lib32gcc1 symlink on amd64. Ubuntu #7099. ++ ++ -- Matthias Klose Thu, 3 Mar 2005 00:17:26 +0100 ++ ++gcc-4.0 (4.0ds6-0pre6ubuntu5) hoary; urgency=low ++ ++ * Add patch from PR20160, avoid creating archives with components ++ that have duplicate basenames. ++ ++ -- Matthias Klose Wed, 2 Mar 2005 14:22:04 +0100 ++ ++gcc-4.0 (4.0ds6-0pre6ubuntu4) hoary; urgency=low ++ ++ * CVS 20050301, taken from the gcc-4_0-branch. ++ Test builds on i386, amd64, powerpc, ia64, check libgcc_s.so.1. ++ * Add fastjar-4.0 binary and manpage. Some java packages append it ++ for all java related tools. ++ * Add libgcj6-src package for source code availability in IDE's. ++ * On hppa, disable the build of the hppa64 cross compiler, disable ++ java, disable running the testsuite (request by Lamont). ++ * On amd64, lib32gcc1 replaces ia32-libs.openoffice.org (<< 1ubuntu3). ++ * Build-Depend on libcairo1-dev, configure with --enable-gtk-cairo. ++ Work around libtool problems install libjawt. ++ Install jawt header files in libgcj6-dev. ++ * Add workaround for PR debug/19769. ++ ++ -- Matthias Klose Tue, 1 Mar 2005 11:26:19 +0100 ++ ++gcc-4.0 (4.0ds5-0pre6ubuntu3) hoary; urgency=low ++ ++ * Drop libgmp3-dev (<< 4.1.4-3) as an alterntative build dependency. ++ ++ -- Matthias Klose Thu, 10 Feb 2005 15:16:27 +0100 ++ ++gcc-4.0 (4.0ds5-0pre6ubuntu2) hoary; urgency=low ++ ++ * Disable Ada for powerpc. ++ ++ -- Matthias Klose Wed, 9 Feb 2005 16:47:07 +0100 ++ ++gcc-4.0 (4.0ds5-0pre6ubuntu1) hoary; urgency=low ++ ++ * Avoid build dependency on type-handling. ++ * Install 32bit libs on amd64 in /lib32 and /usr/lib32. ++ ++ -- Matthias Klose Wed, 9 Feb 2005 08:27:21 +0100 ++ ++gcc-4.0 (4.0ds5-0pre6) experimental; urgency=low ++ ++ * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050208. ++ * Build-depend on graphviz (moved to main), remove the pregenerated ++ libstdc++ docs from the diff. ++ * Fix PR19162, libobjc build failure on arm-linux (closes: #291497). ++ ++ -- Matthias Klose Tue, 8 Feb 2005 11:47:31 +0000 ++ ++gcc-4.0 (4.0ds4-0pre5) experimental; urgency=low ++ ++ * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050125. ++ * Call the 4.0 gcx versions in the java wrappers (closes: #291075). ++ * Correctly install libgij (closes: #291077). ++ * libgcj6-dev: Add conflicts to other libgcj-dev packages (closes: #290950). ++ ++ -- Matthias Klose Mon, 24 Jan 2005 23:59:54 +0100 ++ ++gcc-4.0 (4.0ds3-0pre4) experimental; urgency=low ++ ++ * gcc-4.0 snapshot, taken from the HEAD branch CVS 20050115. ++ * Update cross build patches (Nikita V. Youshchenko). ++ * Enable Ada on i386, amd64, mips, mipsel, powerpc, sparc, s390. ++ Doesn't yet bootstrap on alpha, hppa, ia64. ++ ++ -- Matthias Klose Sat, 15 Jan 2005 18:44:03 +0100 ++ ++gcc-4.0 (4.0ds2-0pre3) experimental; urgency=low ++ ++ * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041224. ++ ++ -- Matthias Klose Wed, 22 Dec 2004 00:31:44 +0100 ++ ++gcc-4.0 (4.0ds1-0pre2) experimental; urgency=low ++ ++ * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041205. ++ * Lot's of merges and updates from the gcc-3.4 packages. ++ ++ -- Matthias Klose Sat, 04 Dec 2004 12:14:51 +0100 ++ ++gcc-4.0 (4.0ds0-0pre1) experimental; urgency=low ++ ++ * gcc-4.0 snapshot, taken from the HEAD branch CVS 20041114. ++ - Addresses many issues with the libstdc++ man pages (closes: #278549). ++ * Disable Ada on hppa, ia64, mips, mipsel, powerpc, s390 and sparc, at least ++ these are known to be broken at the time of the snapshot. ++ * Minor kbsd.gnu build fixes (Robert Millan). Closes: #273004. ++ * For amd64, add missing libstdc++ files to 'libstdc++6-dev' package. ++ (Andreas Jochens). Fixes: #274362. ++ * Update libffi-mips patch (closes: #274096). ++ * Updated i386-biarch patch. Don't build 64bit libstdc++, ICE. ++ * Update sparc biarch patch. ++ * Fix symlinks for gfortran manpage (closes: #278548). ++ * Update cross build patches (Nikita V. Youshchenko). ++ * Update Ada patches (Ludovic Brenta). ++ ++ -- Matthias Klose Sat, 13 Nov 2004 10:38:25 +0100 ++ ++gcc-4.0 (4.0-0pre0) experimental; urgency=low ++ ++ * gcc-4.0 snapshot, taken from the HEAD branch CVS 20040912. ++ ++ * Matthias Klose ++ ++ - Integrate accumulated packaging patches from gcc-3.4. ++ - Rename libstdc++6-* packages to libstdc++6-4-* (closes: #261693). ++ - libffi4-dev: conflict with libffi3-dev (closes: #265939). ++ ++ * Robert Millan ++ ++ * control.m4: ++ - s/locale_no_archs !hurd-i386/locale_no_archs/g ++ (This is now handled in rules.defs. [1]) ++ - s/procps [check_no_archs]/procps [linux_gnu_archs]/g [2] ++ - Add type-handling to build-deps. [3] ++ * rules.conf: ++ - Don't require (>= $(libc_ver)) for libc0.1-dev. [4] ++ - Generate *_no_archs variables with type-handling and use them for ++ for m4's -D parameters. [3] ++ * rules.defs: ++ - use filter instead of findstring [1]. ++ - s/netbsd-elf-gnu/netbsdelf-gnu/g [5]. ++ - enable java for kfreebsd-gnu [6] ++ - enable ffi for kfreebsd-gnu and knetbsd-gnu [6] ++ - enable libgc for kfreebsd-gnu [6] ++ - enable checks for kfreebsd-gnu and knetbsd-gnu [7] ++ - enable locales for kfreebsd-gnu and gnu [1] [8]. ++ * Closes: #264025. ++ ++ -- Matthias Klose Sun, 12 Sep 2004 12:52:56 +0200 ++ ++gcc-3.5 (3.5ds1-0pre1) experimental; urgency=low ++ ++ * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040724. ++ * Install locale data with versioned package name (closes: #260497). ++ * Fix libgnat symlinks. ++ ++ -- Matthias Klose Sat, 24 Jul 2004 21:26:23 +0200 ++ ++gcc-3.5 (3.5-0pre0) experimental; urgency=low ++ ++ * gcc-3.5 snapshot, taken from the HEAD branch CVS 20040718. ++ ++ -- Matthias Klose Sun, 18 Jul 2004 12:26:00 +0200 ++ ++gcc-3.4 (3.4.1-1) experimental; urgency=low ++ ++ * gcc-3.4.1 final release. ++ - configured wth --enable-libstdcxx-allocator=mt. ++ * Fixes for generating cross compiler packages (Jeff Bailey). ++ ++ -- Matthias Klose Fri, 2 Jul 2004 22:49:05 +0200 ++ ++gcc-3.4 (3.4.0-4) experimental; urgency=low ++ ++ * gcc-3.4.1 release candidate 1. ++ * Add logic to build biarch compiler on powerpc (disabled, needs lib64c). ++ * Don't build the libg2c0 package on mipsel-linux (no clear answer on ++ debian-mips, if the libg2c0's built by gcc-3.3 and gcc-3.4 are compatible ++ (post-sarge issue). ++ * Don't use gcc-2.95 as bootstrap compiler on m68k anymore. ++ ++ -- Matthias Klose Sat, 26 Jun 2004 22:40:20 +0200 ++ ++gcc-3.4 (3.4.0-3) experimental; urgency=low ++ ++ * Update to gcc-3.4 CVS 20040613. ++ * On sparc, set the the build target to sparc64-linux, build with ++ switch defaulting to code generation for v7. To generate code for ++ sparc64, use the -m64 switch. ++ * Add missing doc-base files to -doc packages. ++ * Add portability patches and kbsd-gnu patch (Robert Millan). ++ Closes: #251293, #251294. ++ * Apply fixes for cross build (Nikita V. Youshchenko). ++ * Do not include the precompiled libstdc++ header files into the -dev ++ package (still experimental). Closes: #251707. ++ * Reflect renaming of Ada user's guide. ++ * Move AWT peer libraries for libgcj into it's own package (fixes: #247791). ++ ++ -- Matthias Klose Mon, 14 Jun 2004 00:03:18 +0200 ++ ++gcc-3.4 (3.4.0-2) experimental; urgency=low ++ ++ * Update to gcc-3.4 CVS 20040516. ++ * Do not provide the /usr/hppa64-linux/include in the gcc-hppa64 package, ++ migrated to libc6-dev. Adjust dependencies. ++ * Integrate gpc test results into the GCC test summary. ++ * gnatchop calls gcc-3.4 (closes: #245438). ++ * debian/locale-gen.sh: Update for recent libstdc+++ testsuite. ++ * debian/copyright: Add libstdc++-v3's exception clause. ++ * Add libffi update for mips (Thiemo Seufer). ++ * Reference Debian specific bug reporting instructions. ++ * Update README.Bugs. ++ * Fix FTBFS for libstdc++-doc. ++ * Update libjava patch for hppa (Randolph Chung). ++ * Fix installation of ffitarget.h header file. ++ * On amd64-linux, configure --without-multilib, disable Ada. ++ ++ -- Matthias Klose Sun, 16 May 2004 07:53:39 +0200 ++ ++gcc-3.4 (3.4.0-1) experimental; urgency=low ++ ++ * gcc-3.4.0 final release. ++ ++ * Why experimental? ++ - Do not interfer with packages currently built from gcc-3.3 sources, ++ i.e. libgcc1, libobjc1, libffi2, libffi2-dev, libg2c0. ++ - Biarch sparc compiler doesn't built yet. ++ - Use of configure flags affecting binary ABI's not yet determined. ++ - Several ABI bugs have been fixed. Unfortunately, these changes will break ++ binary compatibility with earlier releases on several architectures: ++ alpha, mips, sparc, ++ - hppa and m68k changed sjlj based exception handling to dwarf2 based ++ exception handling. ++ ++ See NEWS.html or http://gcc.gnu.org/gcc-3.4/changes.html for more ++ specific information. ++ ++ -- Matthias Klose Tue, 20 Apr 2004 20:54:56 +0200 ++ ++gcc-3.4 (3.4ds3-0pre4) experimental; urgency=low ++ ++ * Update to gcc-3.4 CVS 20040403. ++ * Add gpc tarball, gpc patches for 3.4 (Waldek Hebisch). ++ * Reenable sparc-biarch patches (closes: #239856). ++ * Build the shared libgnat library, needed to fix FTBFS for some ++ Ada library packages (Ludovic Brenta). ++ Currently enabled for hppa, i386, ia64. ++ ++ -- Matthias Klose Sat, 3 Apr 2004 08:47:55 +0200 ++ ++gcc-3.4 (3.4ds1-0pre2) experimental; urgency=low ++ ++ * Update to gcc-3.4 CVS 20040320. ++ * For libstdc++6-doc, add a conflict to libstdc++5-3.3-doc (closes: #236560). ++ * For libstdc++6-dbg, add a conflict to libstdc++5-3.3-dbg (closes: #236798). ++ * Reenable s390-biarch patches. ++ * Update the cross compiler build files (Nikita V. Youshchenko). ++ ++ -- Matthias Klose Sat, 20 Mar 2004 09:15:10 +0100 ++ ++gcc-3.4 (3.4ds0-0pre1) experimental; urgency=low ++ ++ * Start gcc-3.4 packaging, get rid of the epoch for most of the ++ packages. ++ ++ -- Matthias Klose Sun, 22 Feb 2004 16:00:03 +0100 ++ ++gcc-3.3 (1:3.3.3ds6-6) unstable; urgency=medium ++ ++ * Update to gcc-3_3-branch CVS 20040401. ++ - Fixed ICE in emit_move_insn_1 on legal code (closed: #223215). ++ - Fix PR 14755, miscompilation of loops with bitfield counter. ++ Closes: #241255. ++ - Fix PR 16040, crash in function initializing const data with ++ reinterpret_cast-ed pointer-to-member function crashes (closes: #238621). ++ - Remove patches integrated upstream. ++ * Reenable build of gpidump on powerpc and s390. ++ ++ -- Matthias Klose Thu, 1 Apr 2004 23:51:54 +0200 ++ ++gcc-3.3 (1:3.3.3ds6-5) unstable; urgency=medium ++ ++ * Update to gcc-3_3-branch CVS 20040321. ++ - Fix PR target/13889 (ICE on valid code on m68k). ++ * Fix FTFBS on s390. Do not build gpc's gpidump on s390. ++ * Reenable gpc on arm. ++ ++ -- Matthias Klose Mon, 22 Mar 2004 07:37:26 +0100 ++ ++gcc-3.3 (1:3.3.3ds6-4) unstable; urgency=low ++ ++ * Update to gcc-3_3-branch CVS 20040320. ++ - Revert patch for PR14640 (with this, at least mozilla-firefox was ++ miscompiled on x86 (closes: #238621). ++ * Update the gpc tarball (there were two releases with the same name ...). ++ * Reenable gpc on alpha and ia64. ++ ++ -- Matthias Klose Sat, 20 Mar 2004 07:39:24 +0100 ++ ++gcc-3.3 (1:3.3.3ds5-3) unstable; urgency=low ++ ++ * Update to gcc-3_3-branch CVS 20040314. ++ - Fixes miscompilation with -O -funroll-loops on powerpc (closes: #229567). ++ - Fix ICE in dwarf-2 on code using altivec (closes: #203835). ++ * Update hurd-changes patch. ++ * Add libgcj4-dev as a recommendation for gcj (closes: #236547). ++ * debian/copyright: Added exemption to static linking of libgcc. ++ ++ * Phil Blundell: ++ - debian/patches/arm-ldm.dpatch, debian/patches/arm-gotoff.dpatch: Update. ++ ++ -- Matthias Klose Sun, 14 Mar 2004 09:56:06 +0100 ++ ++gcc-3.3 (1:3.3.3ds5-2) unstable; urgency=low ++ ++ * Update to gcc-3_3-branch CVS 20040306. ++ - Fixes bootstrap comparision error on ia64. ++ - Allows ghc build with gcc-3.3. ++ - On amd64, don't imply 3DNow! for -m64 by default. ++ - Some arm specific changes ++ - Fix C++/13944: exception in constructor of a class to be thrown is not ++ caught. Closes: #228099. ++ * Enable the build of gcc-3.3-hppa64 on hppa. ++ Add symlinks for as and ld to point to hppa64-linux-{as,ld}. ++ * gcj-3.3 depends on g++-3.3, recommends gij-3.3. gij-3.3 suggests gcj-3.3. ++ * Fix libgc2c-pic compatibility links (closes: #234333). ++ The link will be removed for gcc-3.4. ++ * g77-3.3: Conflict with other g77-x.y packages. ++ * Tighten shlibs dependencies to latest released versions. ++ ++ * Phil Blundell: ++ - debian/patches/arm-233633.dpatch: New Fixes problems with half-word ++ loads on ARMv3 architecture. (Closes: #233633) ++ - debian/patches/arm-ldm.dpatch: New. Avoids inefficient epilogue for ++ leaf functions in PIC code on ARM. ++ ++ -- Matthias Klose Sat, 6 Mar 2004 10:57:14 +0100 ++ ++gcc-3.3 (1:3.3.3ds5-1) unstable; urgency=medium ++ ++ * gcc-3.3.3 final release. ++ See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. ++ ++ -- Matthias Klose Mon, 16 Feb 2004 08:59:52 +0100 ++ ++gcc-3.3 (1:3.3.3ds4-0pre4) unstable; urgency=low ++ ++ * Update to gcc-3.3.3 CVS 20040214 (2nd gcc-3.3.3 prerelease). ++ * Fix title of libstdc++'s html main index (closes: #196381). ++ * Move libg2c libraray files out of the gcc specific libdir to /usr/lib. ++ For g77-3.3 add conflicts to other g77 packages. Closes: #224848. ++ * Update the stack protector patch to 3.3-7, but don't apply it by default. ++ Closes: #230338. ++ * On arm, use arm6 as the cpu default (backport from mainline, PR12527). ++ * Add libffi and libjava support for hppa (Randolph Chung). Closes: #232615. ++ ++ -- Matthias Klose Sat, 14 Feb 2004 09:26:15 +0100 ++ ++gcc-3.3 (1:3.3.3ds3-0pre3) unstable; urgency=low ++ ++ * Update to gcc-3.3.3 CVS 20040125. ++ - Fixed PR11350, undefined labels with -Os -fPIC (closes: #195911). ++ - Fixed PR11793, ICE in extract_insn, at recog.c (closes: #203835). ++ - Fixed PR13544, removed backport for PR12862. ++ - Integrated backport for PR12441. ++ * Fixed since 3.3: java: not implemented interface methods of abstract ++ classes not found (closes: #225438). ++ * Disable pascal on arm architecture (currently broken). ++ * Update the build files to build a cross compiler (Nikita V. Youshchenko). ++ See debian/README.cross in the source package. ++ * Apply revised patch to make -mieee the default on alpha-linux, ++ and add -mieee-disable switch to turn the default off (closes: #212912). ++ (Tyson Whitehead) ++ ++ -- Matthias Klose Sun, 25 Jan 2004 17:41:04 +0100 ++ ++gcc-3.3 (1:3.3.3ds2-0pre2) unstable; urgency=medium ++ ++ * Update to gcc-3.3.3 CVS 20040110. ++ - Fixes compilation not terminating at -O1 on hppa (closes: #207516). ++ * Add backport to fix PR12441 (closes: #224576). ++ * Revert backport to 3.3 branch to fix PR12862, which introduced another ++ regression (PR13544). Closes: #225663. ++ * Tighten dependency of gnat-3.3 on gcc-3.3 (closes: #226273). ++ * Disable treelang build for cross compiler build. ++ * Disable pascal on alpha and ia64 architectures (currently broken). ++ ++ -- Matthias Klose Sat, 10 Jan 2004 12:33:59 +0100 ++ ++gcc-3.3 (1:3.3.3ds1-0pre1) unstable; urgency=low ++ ++ * Update to gcc-3.3.3 CVS 20031229. ++ - Fixes bootstrap error on ia64-linux. ++ - Fix -pthread on mips{,el}-linux (closes: #224875). ++ - Fix -Wformat for C++ (closes: #217075). ++ * Backport from mainline: Preserve inline-ness when redeclaring ++ a function template (closes: #195264). ++ * Add missing intrinsics headers on ix86 (closes: #224593). ++ * Fix location of libg2c libdir in libg2c.la file (closes: #224848). ++ ++ -- Matthias Klose Mon, 29 Dec 2003 10:36:29 +0100 ++ ++gcc-3.3 (1:3.3.3ds0-0pre0.1) unstable; urgency=high ++ ++ * NMU ++ * Fixed mips(el) spec file for -pthread: (Closes: #224875) ++ * [debian/patches/mips-pthread.dpatch] New. ++ * [debian/rules.patch] Added it to debian_patches. ++ ++ -- J.H.M. Dassen (Ray) Sat, 27 Dec 2003 15:51:47 +0100 ++ ++gcc-3.3 (1:3.3.3ds0-0pre0) unstable; urgency=low ++ ++ * Update to gcc-3.3.3 CVS 20031206. ++ - Fixes ICE in verify_local_live_at_start (hppa). Closes: #201550. ++ - Fixes miscompilation of linux-2.6/sound/core/oss/rate.c. ++ Closes: #219949. ++ * Add missing unwind.h to gcc package (closes: #220846). ++ * Regenerate control file to fix build dependencies for m68k. ++ * More gpc only patches to fix test failures on m68k. ++ * Reenable gpc for the Hurd (closes: #189851). ++ ++ -- Matthias Klose Sat, 6 Dec 2003 10:29:07 +0100 ++ ++gcc-3.3 (1:3.3.2ds5-4) unstable; urgency=low ++ ++ * Update libffi-dev package description (closes: #219508). ++ * For gij and libgcj fix dependency on the libstdc++ package, if ++ the latter isn't installed during the build. ++ * Apply patch to emit .note.GNU-stack section on linux arches ++ which by default need executable stack. ++ * Prefer gnat-3.3 over gnat-3.2 as a build dependency. ++ * Update the pascal tarball (different version released with the ++ same name). ++ * Add pascal patches to address various gpc testsuite failures. ++ On alpha and ia64, build gpc from the 20030830 version. Reenable ++ the build on m68k. ++ Remove the 20030507 gpc version from the tarball. ++ * Apply patch to build the shared ada libs and link the ada tools ++ against the shared libs. Not enabled by default, because gnat ++ and gnatlib are rebuilt during install. (Ludovic Brenta) ++ ++ -- Matthias Klose Sun, 9 Nov 2003 22:34:33 +0100 ++ ++gcc-3.3 (1:3.3.2ds4-3) unstable; urgency=low ++ ++ * Fix rules to omit inclusion of gnatpsta in mips(el) gnat package. ++ ++ -- Matthias Klose Sun, 2 Nov 2003 14:29:59 +0100 ++ ++gcc-3.3 (1:3.3.2ds4-2) unstable; urgency=medium ++ ++ * s390-ifcvt patch added. Fixes gcl miscompilation (closes: #217240). ++ (Gerhard Tonn) ++ * Fix an infinite loop in g++ compiling lufs, regression from 3.3.1. ++ * Fix a wrong code generation bug on alpha. ++ (Falk Hueffner) ++ * Update NEWS files. ++ * Add Falk Hueffner to the Debian GCC maintainers. ++ * Enable ada on mips and mipsel, but don't build the gnatpsta tool. ++ ++ -- Matthias Klose Wed, 29 Oct 2003 00:12:37 +0100 ++ ++gcc-3.3 (1:3.3.2ds4-1) unstable; urgency=medium ++ ++ * Update to gcc-3.3.2. ++ * Update NEWS files. ++ * Miscompilation in the pari package at -O3 fixed (closes: #198172). ++ * On alpha-linux, revert -mieee as the default (Falk Hueffner). ++ Reopens: #212912. ++ * Add ia64-unwind patch (Jeff Bailey). ++ * Closed reports reported against gcc-2.96 (ia64), fixed at least in gcc-3.3: ++ - ICE in verify_local_live_at_start, at flow.c:2733 (closes: #135404). ++ - Compilation failure of stlport (closes: #135224). ++ - Infinite loop compiling cssc's pfile.cc with -O2 (closes: #115390). ++ - Added missing some string::compare() members (closes: #141199). ++ - header declares std::pow (closes: #161853). ++ - does have at() method (closes: #59776). ++ - Fixed error in stl_deque.h (closes: #69530). ++ - Fixed problem with bastring (closes: #75759, #96539). ++ - bad_alloc and std:: namespace problem (closes: #75120). ++ - Excessive warnings from headers with -Weffc++ (closes: #76827). ++ ++ -- Matthias Klose Fri, 17 Oct 2003 08:07:01 +0200 ++ ++gcc-3.3 (1:3.3.2ds3-0pre5) unstable; urgency=low ++ ++ * Update to gcc-3.3.2 CVS 20031005. ++ - Fixes cpp inserting a spurious newline (closes: #210478, #210482). ++ - Fixes generation of unrecognizable insn compiling kernel source ++ on alpha (closes: #202762). ++ - Fixes ICE in add_abstract_origin_attribute (closes: #212406). ++ - Fixes forward declaration in libstdc++ (closes: #209386). ++ - Fixes ICE in in extract_insn, at recog.c on alpha (closes: #207564). ++ * Make libgcj-common architecture all (closes: #211909). ++ * Build depend on: flex-old | flex (<< 2.5.31). ++ * Fix spec linking libraries with -pthread on powerpc (closes: #211054). ++ * debian/patches/arm-gotoff.dpatch: fix two kinds of PIC lossage. ++ (Phil Blundell) ++ * debian/patches/arm-common.dpatch: fix excessive alignment of common ++ blocks causing binutils testsuite failures. ++ (Phil Blundell) ++ * Update priorities in debian/control to match the archive. ++ (Ryan Murray) ++ * s390-nonlocal-goto patch added. Fixes some pascal testcase failures. ++ (Gerhard Tonn) ++ * On alpha-linux, make -mieee default and add -mieee-disable switch ++ to turn default off (closes: #212912). ++ (Tyson Whitehead) ++ * Add gpc upstream patch for memory corruption fix. ++ ++ -- Matthias Klose Sun, 5 Oct 2003 19:53:49 +0200 ++ ++gcc-3.3 (1:3.3.2ds2-0pre4) unstable; urgency=low ++ ++ * Add gcc-unsharing_lhs patch (closes: #210848) ++ ++ -- Ryan Murray Fri, 19 Sep 2003 22:51:19 -0600 ++ ++gcc-3.3 (1:3.3.2ds2-0pre3) unstable; urgency=low ++ ++ * Update to gcc-3.3.2 CVS 20030908. ++ * PR11716 (Michael Eager, Dan Jacobowitz): ++ Make GCC think that the maximum length of a short branch is ++ 64K instead of 128K. It's a big hammer, but it works. ++ Closes: #207915. ++ * Downgrade gpc to 20030507 on alpha and ia64 (closes: #208717). ++ ++ -- Matthias Klose Mon, 8 Sep 2003 21:49:52 +0200 ++ ++gcc-3.3 (1:3.3.2ds1-0pre2) unstable; urgency=low ++ ++ * Update to gcc-3.3.2 CVS 20030831. ++ - Fix java NullPointerException detection with 2.6 kernels. ++ Closes: #206377. ++ - Fix bug in C++ typedef handling (closes: #205402). ++ - Fix -Wunreachable-code giving false complaints (closes: #196600). ++ * Update to gpc-20030830. ++ * Don't include /usr/share/java/repository into the class path according ++ to the new version of th Debian Java policy (closes: #205643). ++ * Build-Depend/Depend on libgc-dev. ++ ++ -- Matthias Klose Sun, 31 Aug 2003 08:56:53 +0200 ++ ++gcc-3.3 (1:3.3.2ds0-0pre1) unstable; urgency=low ++ ++ * Remove the build dependency on locales for now. ++ ++ -- Matthias Klose Fri, 15 Aug 2003 07:48:18 +0200 ++ ++gcc-3.3 (1:3.3.2ds0-0pre0) unstable; urgency=medium ++ ++ * Update to gcc-3.3.2 CVS 20030812. ++ - Fixes generation of wrong code for XDM-AUTHORIZATION-1 key generation ++ and/or validation. Closes: #196090. ++ * Update NEWS files. ++ * Change ix86 default CPU type for code generation: ++ - i386-linux -> i486-linux ++ - i386-gnu -> i586-gnu ++ - i386-freebsd-gnu -> i486-freebsd-gnu ++ Use -march=i386 to target i386 CPUs. ++ ++ -- Matthias Klose Tue, 12 Aug 2003 10:31:28 +0200 ++ ++gcc-3.3 (1:3.3.1ds3-1) unstable; urgency=low ++ ++ * gcc-3.3.1 (taken from CVS 20030805). ++ - C++: Fix declaration conflicts (closes: #203351). ++ - Fix ICE on ia64 (closes: #203840). ++ ++ -- Matthias Klose Tue, 5 Aug 2003 20:38:02 +0200 ++ ++gcc-3.3 (1:3.3.1ds2-0rc2) unstable; urgency=low ++ ++ * Update to gcc-3.3.1 CVS 20030728. ++ - Fix ICE in extract_insn, at recog.c:2148 on m68k. ++ Closes: #177840, #180375, #190818. ++ - Fix ICE while building libquicktime on alpha (closes: #192576). ++ - Fix failure to deal with using and private inheritance (closes: #202696). ++ * On sparc, /usr/lib was added to the library search path. Fix it. ++ * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: ++ - Fix error building the gcl package on arm (closes: #199835). ++ ++ -- Matthias Klose Mon, 28 Jul 2003 20:39:07 +0200 ++ ++gcc-3.3 (1:3.3.1ds1-0rc1) unstable; urgency=low ++ ++ * Update to gcc-3.3.1 CVS 20030722 (3.3.1 release candidate 1). ++ - Fix ICE in copy_to_mode_reg on 64-bit targets (closes: #189365). ++ - Remove documentation about multi-line strings (closes: #194391). ++ - Correctly document -falign-* parameters (closes: #198269). ++ - out-of-class specialization of a private nested template class. ++ Closes: #193830. ++ - Tighten shlibs dependency due to new symbols in libgcc. ++ * README.Debian for libg2c0, describing the need for g77-x.y when ++ working with the g2c header and library (closes: #189059). ++ * Call make with -j, if USE_NJOBS is set and non-empty ++ in the environment. ++ * Add another two m68k patches, partly replacing the workarounds provided ++ by Roman Zippel. ++ * Add the stack protector patch, but don't apply it by default. Edit ++ debian/rules.patch to apply it (closes: #171699, #189494). ++ * Remove wrong symlinks from gnat package (closes: #201882). ++ * Closed reports reported against gcc-2.95 and fixed in newer versions: ++ - SMP kernel compilation on alpha (closes: #134197, #146883). ++ - ICE on arm while building imagemagick (closes: #173475). ++ * Closed reports reported against gcc-3.2.x and fixed in gcc-3.3: ++ - Miscompilation of octave2.1 on hppa (closes: #192296, #193804). ++ ++ -- Matthias Klose Sun, 13 Jul 2003 10:26:30 +0200 ++ ++gcc-3.3 (1:3.3.1ds0-0pre0) unstable; urgency=medium ++ ++ * Update to gcc-3.3.1 CVS 20030626. ++ - Fix ICE on arm compiling xfree86 (closes: #195424). ++ - Fix ICE on arm compiling fftw (closes: #186185). ++ - Fix ICE on arm in change_address_1, affecting a few packages. ++ Closes: #197099. ++ - Fix ICE in merge_assigned_reloads building Linux 2.4.2x sched.c. ++ Closes: #195237. ++ - Do not warn about failing to inline functions declared in system headers. ++ Closes: #193049. ++ - Fix ICE on mips{,el} in propagate_one_insn (closes: #194330, #196091). ++ - Fix ICE on m68k in reg_overlap_mentioned_p (closes: #194749). ++ - Build crtbeginT.o on m68k (closes: #197613). ++ * Fix g++ man page symlink (closes: #196271). ++ * mips/mipsel: Depend on binutils (>= 2.14.90.0.4). Closes: #196744. ++ * Disable treelang on powerpc (again). Closes: #196915. ++ * Pass -encoding in gcj-wrapper. ++ ++ -- Matthias Klose Fri, 27 Jun 2003 00:14:43 +0200 ++ ++gcc-3.3 (1:3.3ds9-3) unstable; urgency=low ++ ++ * Closing more reports, fixed in 3.2/3.3: ++ - ICE building texmacs on m68k (closes: #177433). ++ - libstdc++: doesn't define trunc(...) (closes: #105285). ++ - libstdc++: setw is ignored for strings output (closes: #52382, #76645). ++ * Add build support to omit the manual pages and info docs from the ++ packages, disabled by default. Wait for a Debian statement, which can ++ be cited. Adresses: #193787. ++ * Reenable the m68k-const patch, don't run the g77 testsuite on m68k. ++ Addresses ICEs (#177840, #190818). ++ * Update arm-xscale patch. ++ * libstdc++: use __attribute__(__unknown__), instead of (unknown). ++ Closes: #195796. ++ * Build-Depend on glibc (>= 2.3.1) to prevent incorrect builds on woody. ++ Request from Adrian Bunk. ++ * Add treelang-update patch (Tim Josling), reenable treelang on powerpc. ++ * Add -{cpp,gcc,g++,gcj,g77} symlinks (addresses: #189466). ++ * Make sure not to build using binutils-2.14.90.0.[12]. ++ ++ -- Matthias Klose Mon, 2 Jun 2003 22:35:45 +0200 ++ ++gcc-3.3 (1:3.3ds9-2) unstable; urgency=medium ++ ++ * Correct autoconf-related snafu in newly added ARM patches (Phil Blundell). ++ * Correct libgcc1 dependency (closes: #193689). ++ * Work around ldd/dpkg-shlibs failure on s390x. ++ ++ -- Matthias Klose Sun, 18 May 2003 09:40:15 +0200 ++ ++gcc-3.3 (1:3.3ds9-1) unstable; urgency=low ++ ++ * gcc-3.3 final release. ++ See /usr/share/doc/gcc-3.3/NEWS.{gcc,html}. ++ * First merge of i386/x86-64 biarch support (Arnd Bergmann). ++ Disabled by default. Closes: #190066. ++ * New gpc-20030507 version. ++ * Upstream gpc update to fix netbsd build failure (closes: #191407). ++ * Add arm-xscale.dpatch, arm-10730.dpatch, arm-tune.dpatch, copied ++ from gcc-3.2 (Phil Blundell). ++ * Closing bug reports reported against older gcc versions (some of them ++ still present in Debian, but not anymore as the default compiler). ++ Usually, forwarded bug reports are linked to ++ http://gcc.gnu.org/PR ++ The upstream bug number usually can be found in the Debian reports. ++ ++ * Closed reports reported against gcc-3.1.x, gcc-3.2.x and fixed in gcc-3.3: ++ - General: ++ + GCC accepts multi-line strings without \ or " " &c (closes: #2910). ++ + -print-file-name sometimes fails (closes: #161615). ++ + ICE: reporting routines re-entered (closes: #179597, #180937). ++ + Misplaced paragraph in gcc documentation (closes: #179363). ++ + Error: suffix or operands invalid for `div' (closes: #150558). ++ + builtin memcmp() could be optimised (closes: #85535). ++ - Ada: ++ + Preelaborate, exceptions, and -gnatN (closes: #181679). ++ - C: ++ + Duplicate loop conditions even with -Os (closes: #94701). ++ + ICE (signal 11) (closes: #65686). ++ - C++: ++ + C++ error on virtual function which uses ... (closes: #165829). ++ + ICE when warning about cleanup nastiness in switch statements ++ (closes: #184108). ++ + Fails to compile virtual inheritance with variable number of ++ argument method (closes: #151357). ++ + xmmintrin.h broken for c++ (closes: #168310). ++ + Stack corruption with variable-length automatic arrays and virtual ++ destructors (closes: #188527). ++ + ICE on illegal code (closes: #184862). ++ + _attribute__((unused)) is ignored in C++ (closes: #45440). ++ + g++ handles &(void *)foo bizzarely (closes: #79225). ++ + ICE (with wrong code, though) (closes: #81122). ++ - Java: ++ + Broken zip file handling (closes: #180567). ++ - ObjC: ++ + @protocol forward definitions do not work (closes: #80468). ++ - Architecture specific: ++ - alpha ++ + va_start is off by one (closes: #186139). ++ + ICE while building kseg/ddd (closes: #184753). ++ + g++ -O2 optimization error (closes: #70743). ++ - arm ++ + ICE with -O2 in change_address_1 (closes: #180750). ++ + gcc optimization error with -O2, affecting bison (closes: #185903). ++ - hppa ++ + ICE in insn_default_length (closes: #186447). ++ - ia64 ++ + gcc-3.2 fails w/ optimization (closes: #178830). ++ - i386 ++ + unnecessary generation of instruction cwtl (closes: #95318). ++ + {athlon} ICE building mplayer (closes: #184800). ++ + {pentium4} ICE while compiling mozilla with -march=pentium4 ++ (closes: #187910). ++ + i386 optimisation: joining tests (closes: #105309). ++ - m68k ++ + ICE in instantiate_virtual_regs_1 (closes: #180493). ++ + gcc optimizer bug on m68k (closes: #64832). ++ - powerpc ++ + ICE in extract_insn, at recog.c:2175 building php3 (closes: #186299). ++ + ICE with -O -Wunreachable-code (closes: #189702). ++ - s390 ++ + Operand out of range at assembly time when using -O2 ++ (closes: #178596). ++ - sparc ++ + gcc-3.2 regression (wrong code) (closes: #176387). ++ + ICE in mem_loc_descriptor when optimizing (closes: #178909). ++ + ICE in gen_reg_rtx when optimizing (closes: #178965). ++ + Optimisation leads to unaligned access in memcpy (closes: #136659). ++ ++ * Closed reports reported against gcc-3.0 and fixed in gcc-3.2.x: ++ - General: ++ + Use mkstemp instead of mktemp (closed: #127802). ++ - Preprocessor: ++ + Fix redundant error message from cpp (closed: #100722). ++ - C: ++ + Optimization issue on ix86 (pointless moving) (closed: #97904). ++ + Miscompilation of allegro on ix86 (closed: #105741). ++ + Fix generation of ..ng references for static aliases (alpha-linux). ++ (closed: #108036). ++ + ICE compiling pari on hppa (closed: #111613). ++ + ICE on ia64 in instantiate_virtual_regs_1 (closed: #121668). ++ + ICE in c-typeck.c (closed: #123687). ++ + ICE in gen_subprogram_die on alpha (closed: #127890). ++ + SEGV in initialization of flexible char array member (closed: #131399). ++ + ICE on arm compiling lapack (closed: #135967). ++ + ICE in incomplete_type_error (closed: #140606). ++ + Fix -Wswitch (also part of -Wall) (closed: #140995). ++ + Wrong code in mke2fs on hppa (closed: #150232). ++ + sin(a) * sin(b) gives wrong result (closed: #164135). ++ - C++: ++ + Error in std library headers on arm (closed: #107633). ++ + ICE nr. 19970302 (closed: #119635). ++ + std::wcout does not perform encoding conversions (closed: #128026). ++ + SEGV, when compiling iostream.h with -fPIC (closed: #134315). ++ + Fixed segmentation fault in included code for (closed: #137017). ++ + Fix with exception handling and -O (closed: #144232). ++ + Fix octave-2.1 build failure on ia64 (closed: #144584). ++ + nonstandard overloads in num_get facet (closed: #155900). ++ + ICE in expand_end_loop with -O (closed: #158371). ++ - Fortran: ++ + Fix blas build failure on arm (closed: #137959). ++ - Java: ++ + Interface members are public by default (closed: #94974). ++ + Strange message with -fno-bounds-check in combination with -W. ++ (closed: #102353). ++ + Crash in FileWriter using IOException (closed: #116128). ++ + Fix ObjectInputStream.readObject() calling constructors. ++ (closed: #121636). ++ + gij: better error reporting on `class not found' (closed: #125649). ++ + Lockup during .java->.class compilation (closed: #141899). ++ + Compile breaks using temporary inner class instance (closed: #141900). ++ + Default constructor for inner class causes broken bytecode. ++ (closed: #141902). ++ + gij-3.2 linked against libgcc1 (closed: #165180). ++ + gij-wrapper understands -classpath parameter (closed: #146634). ++ + gij-3.2 doesn't ignore -jar when run as "java" (closed: #167673). ++ - ObjC: ++ + ICE on alpha (closed: #172353). ++ ++ * Closed reports reported against gcc-2.95 and fixed in newer versions: ++ - General: ++ + Undocumented option -pthread (closes: #165110). ++ + stdbool.h broken (closes: #167439). ++ + regparm/profiling breakage (closes: #20695). ++ + another gcc optimization error (closes: #51456). ++ + ICE in `output_fix_trunc' (closes: #55967). ++ + Fix "Unable to generate reloads for" (closes: #58219, #131890). ++ + gcc -c -MD x/y.c -o x/y.o leaves y.d in cwd (closes: #59232). ++ + Compiler error with -O2 (closes: #67631). ++ + ICE (unrecognizable insn) compiling php4 (closes: #83550, #84969). ++ + Another ICE (closes: #90666). ++ + man versus info inconsistency (-W and -Wall) (closes: #93708). ++ + ICE on invalid extended asm (closes: #136630). ++ + ICE in `emit_no_conflict_block' compiling perl (closes: #154599). ++ + ICE in `gen_tagged_type_instantiation_die'(closes: #166766). ++ + ICE on __builtin_memset(s, 0, -1) (closes: #170994). ++ + -Q option to gcc appears twice in the documentation (closes: #137382). ++ + New options for specifying targets:- -MQ and -MT (closes: #27878). ++ + Configure using --enable-nls (closes: #51651). ++ + gcc -dumpspecs undocumented (closes: #65406). ++ - Preprocessor: ++ + cpp fails to parse macros with varargs correctly(closes: #154767). ++ + __VA_ARGS__ stringification crashes preprocessor if __VA_ARGS__ is ++ empty (closes: #152709). ++ + gcc doesn't handle empty args in macro function if there is only ++ one arg(closes: #156450). ++ - C: ++ + Uncaught floating point exception causes ICE (closes: #33786). ++ + gcc -fpack-struct doesn't pack structs (closes: #64628). ++ + ICE in kernel (matroxfb) code (closes: #151196). ++ + gcc doesn't warn about unreachable code (closes: #158704). ++ + Fix docs for __builtin_return_address(closes: #165992). ++ + C99 symbols in limits.h not defined (closes: #168346). ++ + %zd printf spec generates warning, even in c9x mode (closes: #94891). ++ + Update GCC attribute syntax (closes: #12253, #43119). ++ - C++ & libstdc++-v3: ++ + template and virtual inheritance bug (closes: #152315). ++ + g++ has some troubles with nested templates (closes: #21255). ++ + vtable thunks implementation is broken (closes: #34876, #35477). ++ + ICE for templated friend (closes: #42662). ++ + ICE compiling mnemonic (closes: #42989). ++ + Deprecated: result naming doesn't work for functions defined in a ++ class (closes: #43170). ++ + volatile undefined ... (closes: #50529). ++ + ICE concerning templates (closes: #53698). ++ + Program compiled -O3 -malign-double segfaults in ofstream::~ofstream ++ (closes: #56867). ++ + __attribute__ ((constructor)) doesn't work with C++ (closes: #61806). ++ + Another ICE (closes: #65687). ++ + ICE in `const_hash' (closes: #72933). ++ + ICE on illegal code (closes: #83221). ++ + Wrong code with -O2 (closes: #83363). ++ + ICE on template class (closes: #85934). ++ + No warning for missing return in non-void member func (closes: #88260). ++ + Not a bug/fixed in libgcc1: libgcc.a symbols end up exported by ++ shared libraries (closes: #118670). ++ + ICE using nested templates (closes: #118781). ++ + Another ICE with templates (closes: #127489). ++ + More ICEs (closes: #140427, #141797). ++ + ICE when template declared after use(closes: #148603). ++ + template function default arguments are not handled (closes: #157292). ++ + Warning when including stl.h (closes: #162074). ++ + g++ -pedantic-errors -D_GNU_SOURCE cannot #include ++ (closes: #151671). ++ + c++ error message improvement suggestion (closes: #46181). ++ + Compilation error in stl_alloc.h with -fhonor-std (closes: #59005). ++ + libstdc++ has no method at() in stl_= (closes: #68963). ++ - Fortran: ++ + g77 crash (closes: #130415). ++ - ObjC: ++ + ICE: program cc1obj got fatal signal 11 (closes: #62309). ++ + Interface to garbage collector is undocumented. (closes: #68987). ++ - Architecture specific: ++ - alpha ++ + Can't compile with define gnu_source with stdio and curses ++ (closes: #97603). ++ + Header conflicts on alpha (closes: #134558). ++ + lapack-dev: cannot link on alpha (closes: #144602). ++ + ICE `fixup_var_refs_1' (closes: #43001). ++ + Mutt segv on viewing list of attachments (closes: #47981). ++ + ICE building open-amulet (closes: #48530). ++ + ICE compiling hatman (closes: #55291). ++ + dead code removal in switch() broken (closes: #142844). ++ - arm ++ + Miscompilation using -fPIC on arm (closes: #90363). ++ + infinite loop with -O on arm (closes: #151675). ++ - i386 ++ + ICE when using -mno-ieee-fp and -march=i686 (closes: #87540). ++ - m68k ++ + Optimization (-O2) broken on m68k (closes: #146006). ++ - mips ++ + g++ exception catching does not work... (closes: #105569). ++ + update-menus gets Bus Error (closes: #120333). ++ - mipsel ++ + aspell: triggers ICE on mipsel (closes: #128367). ++ - powerpc ++ + -O2 produces wrong code (gnuchess example) (closes: #131454). ++ - sparc ++ + Misleading documentation for -malign-{jump,loop,function}s ++ (closes: #114029). ++ + Sparc GCC issue with -mcpu=ultrasparc (closes: #172956). ++ + flightgear: build failure on sparc (closes: #88694). ++ ++ -- Matthias Klose Fri, 16 May 2003 07:13:57 +0200 ++ ++gcc-3.3 (1:3.3ds8-0pre9) unstable; urgency=high ++ ++ * gcc-3.3 second prerelease. ++ - Fixing exception handling on s390 (urgency high). ++ * Reenabled gpc build (I had it disabled ...). Closes: #192347. ++ ++ -- Matthias Klose Fri, 9 May 2003 07:32:14 +0200 ++ ++gcc-3.3 (1:3.3ds8-0pre8) unstable; urgency=low ++ ++ * gcc-3.3 prerelease. ++ - Fixes gcj ICE (closes: #189545). ++ * For libstdc++ use the i486 atomicity implementation, introduced with ++ 0pre6, left out in 0pre7 (closes: #191684). ++ * Add README.Debian for treelang (closes: #190812). ++ * Apply NetBSD changes (Joel Baker). Closes: #191551. ++ * New symbols in libgcc1, tighten the shlibs dependency. ++ * Disable testsuite run on mips/mipsel because of an outdated libc-dev ++ package. ++ * Do not build libffi with debug information, although configuring ++ with --enable-debug. ++ ++ -- Matthias Klose Tue, 6 May 2003 06:53:49 +0200 ++ ++gcc-3.3 (1:3.3ds7-0pre7) unstable; urgency=low ++ ++ * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030429). ++ * Revert upstream libstdc++ change (closes: #191145, #191147, #191148, ++ #191149, #149159, #149151, and other reports). ++ Sorry for not detecting this before the upload, seems to be ++ broken on i386 "only". ++ * hurd-i386: Use /usr/include, not /include. ++ * Disable gpc on hurd-i386 (closes: #189851). ++ * Disable building the debug version of libstdc++ on powerpc-linux ++ (fixes about 200 java test cases). ++ * Install libstdc++v3 man pages (closes: #127263). ++ ++ -- Matthias Klose Tue, 29 Apr 2003 23:28:44 +0200 ++ ++gcc-3.3 (1:3.3ds6-0pre6) unstable; urgency=high ++ ++ * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030426). ++ * libstdc++-doc: Fix index.html link (closes: #189424). ++ * Revert back to the i486 atomicity implementation, that was used ++ for gcc-3.2 as well. Reopens: #184446, #185662. Closes: #189983. ++ For this reason, tighten the libstdc++5 shlibs dependency. See ++ http://lists.debian.org/debian-devel/2003/debian-devel-200304/msg01895.html ++ Don't build the ix86 specfic libstdc++ libs anymore. ++ ++ -- Matthias Klose Sun, 27 Apr 2003 19:47:54 +0200 ++ ++gcc-3.3 (1:3.3ds5-0pre5) unstable; urgency=low ++ ++ * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030415). ++ * Disable treelang on powerpc. ++ * Disable gpc on m68k. ++ * Install locale data. Conflict with gcc-3.2 (<= 1:3.2.3-0pre8). ++ * Fix generated bits/atomicity.h (closes: #189183). ++ * Tighten libgcc1 shlibs dependency (new symbol _Unwind_Backtrace). ++ ++ -- Matthias Klose Wed, 16 Apr 2003 00:37:05 +0200 ++ ++gcc-3.3 (1:3.3ds4-0pre4) unstable; urgency=low ++ ++ * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030412). ++ * Avoid sparc64 dependencies for libgcc1 on sparc (Clint Adams). ++ * Make the default sparc 32bit target v8 instead of v7. This mainly ++ enables hardmul, which should speed up v8 and v9 systems by a large ++ margin (Ben Collins). ++ * Tighten binutils dependency for sparc. ++ * On i386, build libstdc++ optimized for i486 and above. The library ++ in /usr/lib is built for i386. Closes: #184446, #185662. ++ * Add gpc build (from gcc-snapshot package). ++ * debian/control: Include all packages, that _can_ be built from ++ this source package (except the cross packages). ++ * Add m68k patches: m68k-const, m68k-subreg, m68k-loop. ++ * Run the 3.3 testsuite a second time with the installed gcc-3.2 ++ to check for regressions (promised, only this time, and for the ++ final release ;). Add build dependencies (gobjc-3.2, g77-3.2, g++-3.2). ++ ++ -- Matthias Klose Sat, 12 Apr 2003 10:11:11 +0200 ++ ++gcc-3.3 (1:3.3ds3-0pre3) unstable; urgency=low ++ ++ * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030331). ++ * Reenable java on arm. ++ * Build-Depend on binutils-2.13.90.0.18-1.3 on m68k. Fixes all ++ bprob/gcov testsuite failures. ++ * Enable C++ build on arm. ++ * Enable the sparc64 build. ++ ++ -- Matthias Klose Mon, 31 Mar 2003 23:24:54 +0200 ++ ++gcc-3.3 (1:3.3ds2-0pre2) unstable; urgency=low ++ ++ * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030317). ++ * Disable building the gcc-3.3-nof package. ++ * Disable Ada on mips and mipsel. ++ * Remove the workaround to build Ada on powerpc. ++ * Add GNU Free documentation license to copyright file. ++ * Update the sparc64 build patches (Clint Adams). Not yet enabled. ++ * Disable C++ on arm (Not yet tested). ++ * Add fix for ICE on powerpc (see: #184684). ++ ++ -- Matthias Klose Sun, 16 Mar 2003 21:40:57 +0100 ++ ++gcc-3.3 (1:3.3ds1-0pre1) unstable; urgency=low ++ ++ * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030310). ++ * Add gccbug manpage. ++ * Don't build libgnat package (no shared library). ++ * Configure with --enable-sjlj-exceptions on hppa and m68k for ++ binary compatibility with libstdc++ built with gcc-3.2. ++ * Disable Java on arm-linux (never seen it sucessfully bootstrap). ++ * Install non-conflicting baseline README. ++ * multilib *.so and *.a moved to /usr/lib/gcc-lib/... , so that several ++ compiler versions can be installed concurrently. ++ * Remove libstdc++-incdir patch applied upstream. ++ * libstdc++ 64 bit development files now handled in -dev target. ++ (Gerhard Tonn) ++ * Drop build dependencies for gpc (tetex-bin, help2man, libncurses5-dev). ++ * Add libstdc++5-3.3-dev confict to libstdc++5-dev (<= 1:3.2.3-0pre3). ++ * Enable builds on m68k (all but C++ for the moment). gcc-3.3 bootstraps, ++ while gcc-3.2 doesn't. ++ ++ -- Matthias Klose Mon, 10 Mar 2003 23:41:00 +0100 ++ ++gcc-3.3 (1:3.3ds0-0pre0) unstable; urgency=low ++ ++ * First gcc-3.3 package, built for s390 only. All other architectures ++ build the gcc-3.3-base package only. ++ To build the package on other architectures, edit debian/rules.defs ++ (macro no_dummy_archs). ++ * gcc-3.3 prerelease taken from the gcc-3_3-branch (CVS 20030301). ++ * Don't include the gcc locale files (would conflict with 3.2). ++ * Remove libffi-install-fix patch. ++ * Fix netbsd-i386 patches. ++ * Change priority of libstdc++5 and gcc-3.2-base to important. ++ * Install gcjh-wrapper for javah. ++ * gij suggests fastjar, gcj recommends fastjar. ++ * Allow builds using automake1.4 | automake (<< 1.5). ++ * Backport fix for to output more correct line numbers. ++ * Add help2man to build dependencies needed for some gpc man pages. ++ * gpc: Install binobj and gpidump binaries and man pages. ++ * Apply cross compilation patches submitted by Bastian Blank. ++ * Replace s390-biarch patch and copy s390-config-ml patch from 3.2 ++ (Gerhard Tonn). ++ * Configure using --enable-debug. ++ * Add infrastructure to only build a subset of binary packages. ++ * Rename libstdc++-{dev,dbg,pic,doc} packages. ++ * Build treelang compiler. ++ ++ -- Matthias Klose Sat, 1 Mar 2003 12:56:42 +0100 ++ ++gcc-3.2 (1:3.2.3ds2-0pre3) unstable; urgency=low ++ ++ * gcc-3.2.3 prerelease (CVS 20030228) ++ - Fixes bootstrap failure on alpha-linux. ++ - Fixes ICE on m68k (closes: #177016). ++ * Build Pascal with -O1 on powerpc, disable Pascal on arm, m68k and ++ sparc (due to wrong code generation for fwrite in glibc, ++ see PR optimization/9279). ++ * Apply cross compilation patches submitted by Bastian Blank. ++ ++ -- Matthias Klose Fri, 28 Feb 2003 20:26:30 +0100 ++ ++gcc-3.2 (1:3.2.3ds1-0pre2) unstable; urgency=medium ++ ++ * gcc-3.2.3 prerelease (CVS 20030221) ++ - Fixes ICE on hppa (closes: #181813). ++ * Patch for ffitest in s390-java.dpatch deleted, since already fixed ++ upstream. (Gerhard Tonn) ++ * Build crtbeginT.o on m68k-linux (closes: #179807). ++ * Install gcjh-wrapper for javah (closes: #180218). ++ * gij suggests fastjar, gcj recommends fastjar (closes: #179298). ++ * Allow builds using automake1.4 | automake (<< 1.5) (closes: #180048). ++ * Backport fix for to output more correct line numbers (closes: #153965). ++ * Add help2man to build dependencies needed for some gpc man pages. ++ * gpc: Install binobj and gpidump binaries and man pages. ++ * Disable gpc on arm due to wrong code generation for fwrite in ++ glibc (see PR optimization/9279). ++ ++ -- Matthias Klose Sat, 22 Feb 2003 19:58:20 +0100 ++ ++gcc-3.2 (1:3.2.3ds0-0pre1) unstable; urgency=low ++ ++ * gcc-3.2.3 prerelease (CVS 20030210) ++ - Fixes long millicode calls on hppa (closes: #180520) ++ * New gpc-20030209 version. Remove gpc-update.dpatch and gpc-testsuite.dptch ++ as they are no longer needed. ++ * Fix netbsd-i386 patches (closes: #180129, #179931) ++ * m68k-bootstrap.dpatch: backport gcse.c changes from 3.3/MAIN to 3.2 ++ * Change priority of libstdc++5 and gcc-3.2-base to important. ++ ++ -- Ryan Murray Tue, 11 Feb 2003 06:18:09 -0700 ++ ++gcc-3.2 (1:3.2.2ds8-1) unstable; urgency=low ++ ++ * gcc-3.2.2 release. ++ - Fixes ICE, regression from 2.95 (closes: #176117). ++ - Fixes ICE, regression from 2.95 (closes: #179161). ++ * libstdc++ for biarch installs now upstream to usr/lib64, ++ therefore mv usr/lib/64 usr/lib64 no longer necessary. (Gerhard Tonn) ++ ++ -- Ryan Murray Wed, 5 Feb 2003 01:35:29 -0700 ++ ++gcc-3.2 (1:3.2.2ds7-0pre8) unstable; urgency=low ++ ++ * gcc-3.2.2 prerelease (CVS 20030130). ++ * update s390 libffi patch ++ * debian/control: add myself to uploaders and change libc12-dev depends to ++ libc-dev on i386 (closes: #179128) ++ * Build-Depend on procps so that ps is available for logwatch ++ ++ -- Ryan Murray Fri, 31 Jan 2003 04:00:15 -0700 ++ ++gcc-3.2 (1:3.2.2ds6-0pre7) unstable; urgency=low ++ ++ * gcc-3.2.2 prerelease (CVS 20030128). ++ - Update needed for hppa. ++ - Fixes ICE on arm, regression from 2.95.x (closes: #168086). ++ - Can use default bison (1.875). ++ * Apply netbsd build patches (closes: #177674, #178328, #178325, ++ #178326, #178327). ++ * Run the logwatch script on "slow" architectures (arm, m68k) only. ++ * autoreconf.dpatch: Only update libtool.m4, which is newer conceptually ++ than libtool 1.4 (Ryan Murray). ++ * Apply autoreconf patch universally (Ryan Murray). ++ * More robust gij/gcj wrapper scripts, include /usr/lib/jni in default ++ JNI search path (Ben Burton). Closes: #167932. ++ * Build crtbeginT.o on m68k (closes: #177036). ++ * Fixed libc-dev source dependency (closes: #178602). ++ * Tighten shlib dependency to the current package version; should be ++ 1:3.2.2-1 for the final release (closes: #178867). ++ ++ -- Matthias Klose Tue, 28 Jan 2003 21:59:30 +0100 ++ ++gcc-3.2 (1:3.2.2ds5-0pre6) unstable; urgency=low ++ ++ * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20030123). ++ * Build locales needed by the libstdc++ testsuite. ++ * Update config.{guess,sub} files from autotools-dev (closes: #177674). ++ * Disable Ada and Java on netbsd-i386 (closes: #177679). ++ * gnat: Add suggests for gnat-doc and ada-reference-manual. ++ ++ -- Matthias Klose Thu, 23 Jan 2003 22:16:53 +0100 ++ ++gcc-3.2 (1:3.2.2ds4-0pre5.1) unstable; urgency=low ++ ++ * Readd build dependency `locales' on arm. locales is now installable ++ * Add autoreconf patch for mips{,el}. (closes: #176311) ++ ++ -- Ryan Murray Wed, 22 Jan 2003 14:31:14 -0800 ++ ++gcc-3.2 (1:3.2.2ds4-0pre5) unstable; urgency=low ++ ++ * Remove build dependency `libc6-dev-sparc64 [sparc]' for now. ++ * Remove build dependency `locales' on arm. locales is uninstallable ++ on arm due to the missing glibc-2.3. ++ * Use bison-1.35. bison-1.875 causes an hard error on the reduce/reduce ++ conflict in objc-parse.y. ++ ++ -- Matthias Klose Fri, 10 Jan 2003 10:10:43 +0100 ++ ++gcc-3.2 (1:3.2.2ds4-0pre4) unstable; urgency=low ++ ++ * Try building with gcc-2.95 on m68k-linux. Building gcc-3.2 with gcc-3.2 ++ does not work for me. m68k-linux doesn't look good at all ... ++ * Fix s390 build error. ++ * Add locales to build dependencies. A still unsolved issue is the ++ presence of the locales de_DE, en_PH, en_US, es_MX, fr_FR and it_IT, ++ or else some tests in the libstdc++ testsuite will fail. ++ * Put all -nof files in the -nof package (closes: #175253). ++ * Correctly exit logwatch script (closes: #175251). ++ * Install linker-map.gnu file for libstdc++_pic (closes: #175144). ++ * Install versioned gpcs docs only (closes: #173844). ++ * Include gpc test results in gpc package. ++ * Link local libstdc++ documentation to local source-level documentation. ++ * Clarify libstdc++ description (so version and library version). ++ Closes: #175799. ++ * Include library in libstdc++-dbg package (closes: #176005). ++ ++ -- Matthias Klose Wed, 8 Jan 2003 23:39:50 +0100 ++ ++gcc-3.2 (1:3.2.2ds3-0pre3) unstable; urgency=low ++ ++ * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021231). ++ - Fix loop count computation for preconditioned unrolled loops. ++ Closes: #162919. ++ - Fix xmmintrin.h (_MM_TRANSPOSE4_PS) CVS 20021027 (closes: #163647). ++ - Fix [PR 8601] strlen/template interaction causes ICE CVS 20021201. ++ Closes: #166143. ++ * Watch the log files, which are written during the testsuite runs and print ++ out a message, if there is still activity. No more buildd timeouts on arm ++ and m68k ... ++ * Remove gpc's reference to librx1g-dev package (closes: #172953). ++ * Remove trailing dots on package descriptions. ++ * Fix external reference to cpp.info in gcc.info (closes: #174598). ++ ++ -- Matthias Klose Tue, 31 Dec 2002 13:47:52 +0100 ++ ++gcc-3.2 (1:3.2.2ds2-0pre2) unstable; urgency=medium ++ ++ * Friday, 13th upload, so what do you expect ... ++ * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021212). ++ * Fix gnat build (autobuild maintainers: please revert back to gnat-3.2 ++ (<= 1:3.2.1ds6-1) for building gnat-3.2, if the build fails building ++ gnatlib and gnattools). ++ * Really disable sparc64 support. ++ ++ -- Matthias Klose Fri, 13 Dec 2002 00:26:37 +0100 ++ ++gcc-3.2 (1:3.2.2ds1-0pre1) unstable; urgency=low ++ ++ * A candidate for the transition ... ++ * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021210). ++ - doc/invoke.texi: Remove last reference to -a (closes: #171748). ++ * Disable sparc64 support. For now please use egcs64 to build sparc64 ++ kernels. ++ * Disable Pascal on the sparc architecture (doesn't bootstrap). ++ ++ -- Matthias Klose Tue, 10 Dec 2002 22:33:13 +0100 ++ ++gcc-3.2 (1:3.2.2ds0-0pre0) unstable; urgency=low ++ ++ * gcc-3.2 snapshot taken from the gcc-3_2-branch (CVS 20021202). ++ - Should fix _Pragma expansion within macros (closes: #157416). ++ * New gpc-20021128 version. Run check using EXTRA_TEST_PFLAGS=-g0 ++ * Add tetex-bin to build dependencies (gpc needs it). Closes: #171203. ++ ++ -- Matthias Klose Tue, 3 Dec 2002 08:22:33 +0100 ++ ++gcc-3.2 (1:3.2.1ds6-1) unstable; urgency=low ++ ++ * gcc-3.2.1 final release. ++ * Build gpc-20021111 for all architectures. hppa and i386 are ++ known to work. For the other architectures, send the usual FTBFS ... ++ WARNING: this gpc version is an alpha version, especially debug info ++ doesn't work well, so use -g0 for compiling. If you need a stable ++ gpc compiler, use gpc-2.95. ++ * Encode the gpc upstream version in the package name, the gpc release ++ date in the version number (requested by gpc upstream). ++ * Added libncurses5-dev and libgmp3-dev as build dependencies for the ++ gpc tests and runtime. ++ * Clean CVS files as well (closes: #169101). ++ * s390-biarch.dpatch added, backported from CVS (Gerhard Tonn). ++ * s390-config-ml.dpatch added, disables biarch for java, ++ libffi and boehm-gc on s390. They need a 64 bit runtime ++ during build which is not yet available on s390 (Gerhard Tonn). ++ * Biarch support for packaging adapted (Gerhard Tonn). ++ biarch variable added and with-sparc64 variable substituted in ++ most places by biarch. ++ dh_shlibdeps is applied only to 32 bit libraries on s390, since ++ ldd for 64 bit libraries don't work on 32 bit runtime. ++ Build dependency to libc6-dev-s390x added. ++ ++ -- Matthias Klose Wed, 20 Nov 2002 00:20:58 +0100 ++ ++gcc-3.2 (1:3.2.1ds5-0pre6) unstable; urgency=medium ++ ++ * gcc-3.2.1 prerelease. ++ * Removed arm patch integrated upstream. ++ * Adjust gnat build dependency (closes: #167116). ++ * Always configure with --enable-clocale=gnu. The autobuilders do have ++ locales installed, but not generated the "de_DE" locale needed for ++ the autoconf test in libstdcc++-v3/aclocal.m4. ++ * libstdc++ documentaion: Don't compresss '*.txt' referenced by html pages. ++ ++ -- Matthias Klose Tue, 12 Nov 2002 07:19:44 +0100 ++ ++gcc-3.2 (1:3.2.1ds4-0pre5) unstable; urgency=medium ++ ++ * gcc-3.2.1 snapshot (CVS 20021103). ++ * sparc64-build.dpatch: Updated. Lets sparc boostrap again. ++ * s390-loop.dpatch removed, already fixed upstream (Gerhard Tonn). ++ * bison.dpatch: Removed, patch submitted upstream. ++ * backport-java-6865.dpatch: Apply again during build. ++ * Tighten glibc dependency (closes: #166703). ++ ++ -- Matthias Klose Sun, 3 Nov 2002 12:22:02 +0100 ++ ++gcc-3.2 (1:3.2.1ds3-0pre4) unstable; urgency=high ++ ++ * gcc-3.2.1 snapshot (CVS 20021020). ++ - Expansion of _Pragma within macros fixed (closes: #157416). ++ * FTBFS: With the switch to bison-1.50 (and 1.75), gcc-3.2 fails to build from ++ source on Debian unstable systems. This is fixed in gcc HEAD, but not on ++ the current release branch. ++ HELP NEEDED: ++ - check what is missing from the patches in debian/patches/bison.dpatch. ++ This is a backport of the bison related patches, but showing regressions ++ in the gcc testsuite, so it cannot be applied. ++ - build gcc using byacc (bootstrap currently fails using byacc). ++ - build bison-1.35 in it's own package (the current 1.35-3 package fails ++ to build form source). ++ - and finally ask upstream to backport the patch to the branch. It's not ++ helpful not beeing able to follow the stable branch. Maybe we should ++ just switch to gcc HEAD as BSD does ... ++ As a terrible workaround, build the sources from CVS first on a machine, ++ with bison-1.35 installed, then package the tarball, so the bison ++ generated files are not rebuilt. ++ ++ * re-add lost patch: configure with --enable-__cxa_atexit (closes: #163422), ++ Therefore urgency high. ++ * gcj-wrapper, gij-wrapper: Accept names starting with `.' (closes: #163172, ++ #164009). ++ * Point g++ manpage to correct g++ version (closes: #162843). ++ * Support for i386-freebsd-gnu (closes: #163883). ++ * s390-java.dpatch replaced with backport from cvs head (Gerhard Tonn). ++ * Disable the testsuite run on the Hurd (closes: #159650). ++ * s390-loop.dpatch added, fixes runtime problem (Gerhard Tonn). ++ * debian/patches/bison.dpatch: Backport for bison-1.75 compatibility. ++ Don't use it due to regressions. ++ * debian/patches/backport-java-6865.dpatch: Directly applied in the ++ included tarball because of bison problems. ++ * Make fixincludes priority optional, so linda can depend on it. ++ * Tighten binutils dependency. ++ ++ -- Matthias Klose Sun, 20 Oct 2002 10:52:49 +0200 ++ ++gcc-3.2 (1:3.2.1ds2-0pre3) unstable; urgency=low ++ ++ * gcc-3.2.1 snapshot (CVS 20020923). ++ * Run the libstdc++ check-abi script. Results are put into the file ++ /usr/share/doc/libstdc++5/README.libstdc++-baseline in the libstdc++5-dev ++ package. This file contains a new baseline, if no baseline for this ++ architecture is included in the gcc sources. ++ * gcj-wrapper: Accept files starting with an underscore, accept ++ path names (closes: #160859, #161517). ++ * Explicitely call automake-1.4 when rebuilding Makefiles (closes: #161438). ++ * Let installed fixincludes script find files in /usr/lib/fixincludes. ++ * debian/rules.patch: Add .NOTPARALLEL as target, so that patches are ++ applied sequentially (closes: #159395). ++ ++ -- Matthias Klose Tue, 24 Sep 2002 07:36:56 +0200 ++ ++gcc-3.2 (1:3.2.1ds1-0pre2) unstable; urgency=low ++ ++ * gcc-3.2.1 snapshot (CVS 20020913). Welcome back m68k in bootstrap land! ++ * Fix arm-tune.dpatch (closes: #159354). ++ * Don't overwrite LD_LIBRARY_PATH in build (closes: #158459). ++ * --disable-__cxa_atexit on NetBSD (closes: #159620). ++ * Reenable installation of message catalogs (disabled in 3.2-0pre2). ++ Closes: #160175. ++ * Ben Collins ++ - Re-enable sparc64 build. This time, it's part of the default compiler. ++ I have disabled 64/alt libraries as they are too much overhead. All ++ libraries build 64bit, but currently only libgcc/libstdc++ include the ++ 64bit libraries. ++ Closes: #160404. ++ * Depend on autoconf2.13, instead of autoconf. ++ * Phil Blundell ++ - debian/patches/arm-update.dpatch: Fix python2.2 build failure. ++ ++ -- Matthias Klose Sat, 7 Sep 2002 08:05:02 +0200 ++ ++gcc-3.2 (1:3.2.1ds0-0pre1) unstable; urgency=medium ++ ++ * gcc-3.2.1 snapshot (CVS 20020829). ++ New g++ option -Wabi: ++ Warn when G++ generates code that is probably not compatible with the ++ vendor-neutral C++ ABI. Although an effort has been made to warn about ++ all such cases, there are probably some cases that are not warned about, ++ even though G++ is generating incompatible code. There may also be ++ cases where warnings are emitted even though the code that is generated ++ will be compatible. ++ The current version of the ABI is 102, defined by the __GXX_ABI_VERSION ++ macro. ++ * debian/NEWS.*: Updated. ++ * Fix libstdc++-dev dependency on libc-dev for the Hurd (closes: #157004). ++ * Add versioned expect build dependency. ++ * Tighten binutils dependency to 2.13.90.0.4. ++ * debian/patches/arm-tune.dpatch: Increase stack limit for configure. ++ * 3.2-0pre4 did build gnat-3.2 compilers for all architectures. Build-Depend ++ on gnat-3.2 now (closes: #156734). ++ * Remove bashism's in gcj-wrapper (closes: #157982). ++ * Add -cp and -classpath options to gij(1). Backport from HEAD (#146634). ++ * Add fastjar documentation. ++ ++ -- Matthias Klose Fri, 30 Aug 2002 10:35:00 +0200 ++ ++gcc-3.2 (1:3.2ds0-0pre4) unstable; urgency=low ++ ++ * Correct build dependency on gnat-3.1. ++ ++ -- Matthias Klose Mon, 12 Aug 2002 01:21:58 +0200 ++ ++gcc-3.2 (1:3.2ds0-0pre3) unstable; urgency=low ++ ++ * gcc-3.2 upstream prerelease. ++ * Disable all configure options, which are standard: ++ --enable-threads=posix --enable-long-long, --enable-clocale=gnu ++ ++ -- Matthias Klose Fri, 9 Aug 2002 21:59:08 +0200 ++ ++gcc-3.2 (1:3.2ds0-0pre2) unstable; urgency=low ++ ++ * gcc-3.2 snapshot (CVS 20020802). ++ * Fix g++-include dir. ++ * Don't install the locale files (temporarily, until we don't build ++ gcc-3.1 anymore). ++ * New package libgcj-common to avoid conflict with classpath package. ++ ++ -- Matthias Klose Sat, 3 Aug 2002 09:08:34 +0200 ++ ++gcc-3.2 (1:3.2ds0-0pre1) unstable; urgency=low ++ ++ * gcc-3.2 snapshot (CVS 20020729). ++ ++ -- Matthias Klose Mon, 29 Jul 2002 20:36:54 +0200 ++ ++gcc-3.1 (1:3.1.1ds3-1) unstable; urgency=low ++ ++ * gcc-3.1.1 release. Following this release we will have a gcc-3.2 ++ release soon, which is gcc-3.1.1 plus some C++ ABI changes. Once ++ gcc-3.2 hits the archives, gcc-3.1.1 will go away. ++ * Don't build the sparc64 compiler. The packaging/patches are ++ currently broken. ++ * Add missing headers on m68k and powerpc. ++ * Install libgcc_s_nof on powerpc. ++ * Install libffi's copyright and doc files (closes: #152198). ++ * Remove dangling symlink (closes: #149002). ++ * libgcj3: Add a conflict to the classpath package (closes: #148664). ++ * README.C++: Fix URLs. ++ * libstdc++-dbg: Install into /usr/lib/debug, document it. ++ * backport-java-6865.dpatch: backport from HEAD. ++ * Fix typo in gcj docs (closes: #148890). ++ * Change libstdc++ include dir: /usr/include/c++/3.1. ++ * libstdc++-codecvt.dpatch: New patch (closes: #149776). ++ * Build libstdc++-pic package. ++ * Move 64bit libgcc in its own package libgcc1-64 (closes: #147249). ++ * Tighten glibc dependency. ++ ++ -- Matthias Klose Mon, 29 Jul 2002 00:34:49 +0200 ++ ++gcc-3.1 (1:3.1.1ds2-0pre3) unstable; urgency=low ++ ++ * Updated to CVS 2002-06-06 (gcc-3_1-branch). ++ * Updated s390-java patch (Gerhard Tonn). ++ * Don't use -O in STAGE1_FLAGS on m68k. ++ * Fix `-classpath' option in gcj-wrapper script (closes: #150142). ++ * Remove g++-cxa-atexit patch, use --enable-__cxa_atexit configure option. ++ ++ -- Matthias Klose Wed, 3 Jul 2002 23:52:58 +0200 ++ ++gcc-3.1 (1:3.1.1ds1-0pre2) unstable; urgency=low ++ ++ * Updated to CVS 2002-06-06 (gcc-3_1-branch), fixing an ObjC regression. ++ * Welcome m68k to bootstrap land (thanks to Andreas Schwab). ++ * Add javac wrapper for gcj-3.1 (Michael Koch). ++ * Remove dangling symlink in /usr/share/doc/gcc-3.1 (closes: #149002). ++ ++ -- Matthias Klose Fri, 7 Jun 2002 00:26:05 +0200 ++ ++gcc-3.1 (1:3.1.1ds0-0pre1) unstable; urgency=low ++ ++ * Updated to CVS 2002-05-31 (gcc-3_1-branch). ++ * Change priorities from fastjar and gij-wrapper-3.1 from 30 to 31. ++ * Update arm-tune patch. ++ * Install xmmintrin.h header on i386 (closes: #148181). ++ * Install altivec.h header on powerpc. ++ * Call correct gij in gij-wrapper (closes: #148662, #148682). ++ ++ -- Matthias Klose Wed, 29 May 2002 22:47:40 +0200 ++ ++gcc-3.1 (1:3.1ds2-2) unstable; urgency=low ++ ++ * Tighten binutils dependency. ++ * Fix libstdc include dir for multilibs (Dan Jacobowitz). ++ ++ -- Matthias Klose Tue, 21 May 2002 08:03:49 +0200 ++ ++gcc-3.1 (1:3.1ds2-1) unstable; urgency=low ++ ++ * GCC 3.1 release. ++ * Ada cannot be built by the autobuilders for the first time. Do it by hand. ++ gnatgcc and gnatbind need to be in the PATH. ++ * Build with CC=gnatgcc, when building the Ada compiler. ++ * Hurd fixes. ++ * Don't build the sparc64 compiler; the hack isn't up to date and glibc ++ isn't converted to use /lib64 and /usr/lib64. ++ * m68k-linux shows bootstrap comparision failures. If you want to build ++ the compiler anyway and ignore the bootstrap comparision failure, edit ++ debian/rules.patch and uncomment the patch to ignore the failure. See ++ /usr/share/doc/gcc-3.1/BOOTSTRAP_COMPARISION_FAILURE for the differences. ++ ++ -- Matthias Klose Wed, 15 May 2002 09:53:00 +0200 ++ ++gcc-3.1 (1:3.1ds1-0pre6) unstable; urgency=low ++ ++ * Build from the "final prerelease" tarball (gcc-3.1-20020508.tar.gz). ++ * Build gnat-3.1-doc package. ++ * Build fastjar package without building java packages. ++ * Hurd fixes. ++ * Updated sparc64-build patch. ++ * Add s390-ada patch (Gerhard Tonn). ++ * Undo the dwarf2 support for hppa from -0pre5. ++ ++ -- Matthias Klose Thu, 9 May 2002 17:21:09 +0200 ++ ++gcc-3.1 (1:3.1ds0-0pre5) unstable; urgency=low ++ ++ * Use /usr/include/g++-v3-3.1 as C++ include dir. ++ * Update s390-java patch (Gerhard Tonn). ++ * Tighten binutils dependency (gas patch for m68k-linux). ++ * Use gnat-3.1 as the gnat package name (as found in gcc/ada/gnatvsn.ads). ++ * dwarf2 support hppa: a snapshot of the gcc/config/pa directory ++ from the trunk dated 2002-05-02. ++ ++ -- Matthias Klose Fri, 3 May 2002 22:51:37 +0200 ++ ++gcc-3.1 (1:3.1ds0-0pre4) unstable; urgency=low ++ ++ * Use gnat-5.00w as the gnat package name (as found in gcc/ada/gnatvsn.ads). ++ * Don't build the shared libgnat library. It assumes an existing shared ++ libiberty library. ++ * Don't install the libgcjgc library. ++ ++ -- Matthias Klose Thu, 25 Apr 2002 08:48:04 +0200 ++ ++gcc-3.1 (1:3.1ds0-0pre3) unstable; urgency=low ++ ++ * Build fastjar on all architectures. ++ * Update m68k patches. ++ * Update s390-java patch (Gerhard Tonn). ++ ++ -- Matthias Klose Sun, 14 Apr 2002 15:34:47 +0200 ++ ++gcc-3.1 (1:3.1ds0-0pre2) unstable; urgency=low ++ ++ * Add Ada support. To successfully build, a working gnatbind and gcc ++ driver with Ada support is needed. ++ * Apply needed arm patches from 3.0.4. ++ ++ -- Matthias Klose Sat, 6 Apr 2002 13:17:08 +0200 ++ ++gcc-3.1 (1:3.1ds0-0pre1) unstable; urgency=low ++ ++ * First try for gcc-3.1. ++ ++ -- Matthias Klose Mon, 1 Apr 2002 23:39:30 +0200 ++ ++gcc-3.0 (1:3.0.4ds3-6) unstable; urgency=medium ++ ++ * Second try at fixing sparc build problems. ++ ++ -- Phil Blundell Sun, 24 Mar 2002 14:49:26 +0000 ++ ++gcc-3.0 (1:3.0.4ds3-5) unstable; urgency=medium ++ ++ * Enable java on ARM. ++ * Create missing directory to fix sparc build. ++ ++ -- Phil Blundell Fri, 22 Mar 2002 20:21:59 +0000 ++ ++gcc-3.0 (1:3.0.4ds3-4) unstable; urgency=low ++ ++ * Link with system zlib (closes: #136359). ++ ++ -- Matthias Klose Tue, 12 Mar 2002 20:47:59 +0100 ++ ++gcc-3.0 (1:3.0.4ds3-3) unstable; urgency=low ++ ++ * Build libf2c (pic and non-pic) with -mieee on alpha-linux. ++ ++ -- Matthias Klose Sun, 10 Mar 2002 00:37:24 +0100 ++ ++gcc-3.0 (1:3.0.4ds3-2) unstable; urgency=medium ++ ++ * Apply hppa-build patch (Randolph Chung). Closes: #136731. ++ * Make libgcc1 conflict/replace with libgcc1-sparc64. Closes: #135709. ++ * gij-3.0 provides the `java' command. Closes: #128947. ++ * Depend on binutils (>= 2.11.93.0.2-2), allows stripping of libgcj.a ++ again. Closes: #99307. ++ * Update README.cross pointing to the README of the toolchain-source ++ package. ++ ++ -- Matthias Klose Wed, 6 Mar 2002 21:53:34 +0100 ++ ++gcc-3.0 (1:3.0.4ds3-1) unstable; urgency=low ++ ++ * Final gcc-3.0.4 release. ++ * debian/rules.d/binary-java.mk: Fix dormant typo, exposed by removing the ++ duplicate libgcj dependency and adding the gij-3.0 package. ++ Closes: #134005. ++ * New patch by Phil Blundell to fix scalapack build error on m68k. ++ ++ -- Matthias Klose Wed, 20 Feb 2002 23:59:43 +0100 ++ ++gcc-3.0 (1:3.0.4ds2-0pre020210) unstable; urgency=low ++ ++ * Make the base package dependent on the binary-arch target. Closes: #133433. ++ * Get libstdc++ on arm woring (define _GNU_SOURCE). Closes: #133435. ++ ++ -- Matthias Klose Mon, 11 Feb 2002 20:31:12 +0100 ++ ++gcc-3.0 (1:3.0.4ds2-0pre020209) unstable; urgency=high ++ ++ * Update to CVS sources (20020209 gcc-3_0-branch). ++ * Apply patch to fix bootstrap error on arm-linux (submitted upstream ++ by Phil Blundell). Closes: #130422. ++ * Make base package architecture any. ++ * Decouple versioned shlib dependencies from release number for ++ libobjc as well. ++ ++ -- Matthias Klose Sat, 9 Feb 2002 01:30:11 +0100 ++ ++gcc-3.0 (1:3.0.4ds1-0pre020203) unstable; urgency=medium ++ ++ * One release critical bug outstanding: ++ - bootstrap error on arm. ++ * Update to CVS sources (20020203 gcc-3_0-branch). ++ * Fixed upstream: PR c/3504: Correct documentation of __alignof__. ++ Closes: #85445. ++ * Remove libgcc-powerpc patch, integrated upstream (closes: #131977). ++ * Tighten binutils build dependency (to address #126162). ++ * Move jv-convert to gcj package (closes: #131985). ++ ++ -- Matthias Klose Sun, 3 Feb 2002 14:47:14 +0100 ++ ++gcc-3.0 (1:3.0.4ds0-0pre020127) unstable; urgency=low ++ ++ * Two release critical bugs outstanding: ++ - bootstrap error on arm. ++ - bus errors for C++ and java executables on sparc (see the testsuite ++ results). ++ * Update to CVS sources (20020125 gcc-3_0-branch). ++ * Enable java support for s390 architecture (patch from Gerhard Tonn). ++ * Updated NEWS file for 3.0.3. ++ * Disable building the gcc-sparc64, but build a multilibbed compiler ++ for sparc as the default. ++ * Disabled the subreg-byte patch for sparc (request from Ben Collins). ++ * Fixed reference to libgcc1 package in README (closes: #126218). ++ * Do recommend libc-dev, not depend on it. For low-end or embedded systems ++ the dependency on libc-dev can make the difference between ++ having enough or having too little space to build a kernel. ++ * README.cross: Updated by Hakan Ardo. ++ * Decouple versioned shlib dependencies from release number. Closes: #118391. ++ * Fix diversions for gcc-3.0-sparc64 package (closes: #128178), ++ unconditionally remove `sparc64-linux-gcc' alternative. ++ * g77/README.libg2c.Debian: New file mentioning `libg2c-pic'. The next ++ g77 version (3.1) does build a static and shared library (closes: #104250). ++ * Fix formatting errors in the synopsis of the java man pages. Maybe the ++ reason for #127571. Closes: #127571. ++ * fastjar: Fail for the (currently incorrect) -u option. Addresses: #116145. ++ Add alternative for `jar' using priority 30 (closes: #118648). ++ * jv-convert: Add --help option and man page. Backport from HEAD branch. ++ * libgcj2-dev: Remove duplicate dependency (closes: #127805). ++ * Giving up and make just another new package gij-X.Y with only the gij-X.Y ++ binary for policy conformance (closes: #127111). ++ * gij: Provides an alternative for `java' (priority 30) using a wrapper ++ script (Stephen Zander) (closes: #128974). Added simple manpage. ++ ++ -- Matthias Klose Sun, 27 Jan 2002 13:33:41 +0100 ++ ++gcc-3.0 (1:3.0.3ds3-1) unstable; urgency=low ++ ++ * Final gcc-3.0.3 release. ++ * Do not compress .txt files in libstdc++ docs referenced from html ++ pages (closes: #124136). ++ * libstdc++-dev suggests libstdc++-doc. ++ * debian/patches/gcc-ia64-NaT.dpatch: Update (closes: #123685). ++ ++ -- Matthias Klose Fri, 21 Dec 2001 02:54:11 +0100 ++ ++gcc-3.0 (1:3.0.3ds2-0pre011215) unstable; urgency=low ++ ++ * Update to CVS sources (011215). ++ * libstdc++ documentation updated upstream (closes: #123790). ++ * debian/patches/gcc-ia64-NaT.dpatch: Disable. Fixes bootstrap error ++ on ia64 (#123685). ++ ++ -- Matthias Klose Sat, 15 Dec 2001 14:43:21 +0100 ++ ++gcc-3.0 (1:3.0.3ds1-0pre011210) unstable; urgency=medium ++ ++ * Update to CVS sources (011208). ++ * Supposed to fix powerpc build error (closes: #123155). ++ ++ -- Matthias Klose Thu, 13 Dec 2001 07:26:05 +0100 ++ ++gcc-3.0 (1:3.0.3ds0-0pre011209) unstable; urgency=medium ++ ++ * Update to CVS sources (011208). Frozen for upstream 3.0.3 release. ++ * Apply contrib/PR3145.patch, a backport of Nathan Sidwell's patch to ++ fix PR c++/3145, the infamous "virtual inheritance" bug. This affected ++ especially KDE2 (eg. artsd). Franz Sirl ++ * cc1plus segfault in strength reduction fixed upstream. Closes: #122547. ++ * debian/patches/gcc-ia64-NaT.dpatch: Add patch to avoid a bug that can ++ cause miscompiled userapps to crash the kernel. Closes: #121924. ++ * Reenable shared libgcc for powerpc. Fixed upstream. ++ http://gcc.gnu.org/ml/gcc-patches/2001-11/msg00340.html ++ debian/patches/libgcc-powerpc.dpatch: New patch. ++ * Add upstream changelogs. ++ * Remove gij alternative. Move to gij package. ++ ++ -- Matthias Klose Sun, 9 Dec 2001 09:36:48 +0100 ++ ++gcc-3.0 (1:3.0.2ds4-4) unstable; urgency=medium ++ ++ * Disable building of libffi on mips and mipsel. ++ (closes: #117503). ++ * Enable building of shared libgcc on s390 ++ (closes: #120452). ++ ++ -- Christopher C. Chimelis Sat, 1 Dec 2001 06:15:29 -0500 ++ ++gcc-3.0 (1:3.0.2ds4-3) unstable; urgency=medium ++ ++ * Fix logic to build libffi without java (closes: #117503). ++ ++ -- Matthias Klose Sun, 4 Nov 2001 14:34:50 +0100 ++ ++gcc-3.0 (1:3.0.2ds4-2) unstable; urgency=medium ++ ++ * Enable java for ia64 (Jeff Licquia). Closes: #116798. ++ * Allow building of libffi without gcj (Jeff Licquia). ++ New libffi packages for arm hurd-i386 mips mipsel, ++ still missing: hppa, s390. ++ * debian/NEWS.gcc: Add 3.0.2 release notes. ++ * debian/patches/hppa-align.dpatch: New patch from Alan Modra, ++ submitted by Randolph Tausq. ++ ++ -- Matthias Klose Thu, 25 Oct 2001 23:59:31 +0200 ++ ++gcc-3.0 (1:3.0.2ds4-1) unstable; urgency=medium ++ ++ * Final gcc-3.0.2 release. The source tarball is not the released ++ tarball, but taken from CVS 011024). ++ * Remove patch for s390, included upstream. ++ ++ -- Matthias Klose Wed, 24 Oct 2001 00:49:40 +0200 ++ ++gcc-3.0 (1:3.0.2ds3-0pre011014) unstable; urgency=low ++ ++ * Update to CVS sources (011014). Frozen for upstream 3.0.2 release. ++ Closes: #109351, #114099, #114216, #105741 (allegro3938). ++ * Added debian/patches/fastjar.dpatch, which makes fastjar extract ++ filenames correctly (previously, some had incorrect names on extract). ++ Closes: #113236. ++ * Priorities fixed in the past (closes: #94404). ++ ++ -- Matthias Klose Sun, 14 Oct 2001 13:19:43 +0200 ++ ++gcc-3.0 (1:3.0.2ds2-0pre010923) unstable; urgency=low ++ ++ * Bootstraps on powerpc again (closes: #112777). ++ ++ -- Matthias Klose Sun, 23 Sep 2001 01:32:11 +0200 ++ ++gcc-3.0 (1:3.0.2ds2-0pre010922) unstable; urgency=low ++ ++ * Update to CVS sources (010922). ++ * Fixed upstream (closes: #111801). #105569 on hppa. ++ * Update hppa patch (Matt Taggart). ++ * Fix libstdc++-dev package description (closes: #112758). ++ * debian/rules.d/binary-objc.mk: Fix build error (closes: #112462). ++ * Make gobjc-3.0 conflict with gcc-3.0-sparc64 (closes: #111772). ++ ++ -- Matthias Klose Sat, 22 Sep 2001 09:34:49 +0200 ++ ++gcc-3.0 (1:3.0.2ds1-0pre010908) unstable; urgency=low ++ ++ * Update to CVS sources (010908). ++ * Update hppa patch (Matt Taggart). ++ * Depend on libgc6-dev, not libgc5-dev, which got obsolete (during ++ the freeze ...). However adds s390 support (closes: #110189). ++ * debian/patches/m68k-reload.dpatch: New patch (Roman Zippel). ++ Fixes #89023. ++ * debian/patches/gcc-sparc.dpatch: New patch ("David S. Miller"). ++ Fixes libstdc++ testsuite failures on sparc. ++ ++ -- Matthias Klose Sat, 8 Sep 2001 14:26:20 +0200 ++ ++gcc-3.0 (1:3.0.2ds0-0pre010826) unstable; urgency=low ++ ++ * gcc-3.0-nof: Fix symlink to gcc-3.0-base doc directory. ++ * debian/patches/gcj-without-rpath: New patch. ++ * Remove self dependency on libgcj package. ++ * Handle diversions for upgrades from 3.0 and 3.0.1 -> 3.0.2 ++ in gcc-3.0-sparc64 package. ++ * Build libg2c.a with -fPIC -DPIC and name the result libg2c-pic.a. ++ Link with this library to avoid linking with non-pic code. ++ Use this library when building dynamically loadable objects (python ++ modules, gimp plugins, ...), which need to be linked against g2c or ++ a library which is linked against g2c (i.e. lapack). ++ Packages needing '-lg2c-pic' must have a build dependency on ++ 'g77-3.0 (>= 1:3.0.2-0pre010826). ++ ++ -- Matthias Klose Sun, 26 Aug 2001 13:59:03 +0200 ++ ++gcc-3.0 (1:3.0.2ds0-0pre010825) unstable; urgency=low ++ ++ * Update to CVS sources (010825). ++ * Add libc6-dev-sparc64 to gcc-3.0-sparc64 and to sparc build dependencies. ++ * Remove conflicts on egcc package (closes: #109718). ++ * Fix gcc-3.0-nof dependency. ++ * s390 patches against gcc-3.0.1 (Gerhard Tonn). ++ * debian/control: Require binutils (>= 2.11.90.0.27) ++ ++ -- Matthias Klose Sat, 25 Aug 2001 10:59:15 +0200 ++ ++gcc-3.0 (1:3.0.1ds3-1) unstable; urgency=low ++ ++ * Final gcc-3.0.1 release. ++ * Changed upstream: default of -flimit-inline is 600 (closes: #106716). ++ * Add fastjar man page (submitted by "The Missing Man Pages Project", ++ http://www.netmeister.org/misc/m2p2i/) (closes: #103051). ++ * Fixed in last upload as well: #105246. ++ * debian/patches/cpp-memory-leak.dpatch: New patch ++ * Disable installation of shared libgcc on s390 (Gerhard Tonn). ++ ++ -- Matthias Klose Mon, 20 Aug 2001 20:47:13 +0200 ++ ++gcc-3.0 (1:3.0.1ds2-0pre010811) unstable; urgency=high ++ ++ * Update to CVS sources (010811). Includes s390 support. ++ * Add xlibs-dev to Build-Depends (libgcj). ++ * Enable java for powerpc, disable java for ia64. ++ * Enable ObjC garbage collection for all archs, which have a libgc5-dev ++ package. ++ * New patch libstdc++-codecvt (Michael Piefel) (closes: #104614). ++ * Don't strip static libgcj library (work around binutils bug #107812). ++ * Handle diversions for upgrade 3.0 -> 3.0.1 in gcc-3.0-sparc64 package ++ (closes: #107569). ++ ++ -- Matthias Klose Sat, 11 Aug 2001 20:42:15 +0200 ++ ++gcc-3.0 (1:3.0.1ds1-0pre010801) unstable; urgency=high ++ ++ * Update to CVS sources (010801). (closes: #107012). ++ * Remove build dependency on non-free graphviz and include pregenerated ++ docs (closes: #107124). ++ * Fixed in 3.0.1 (closes: #99307). ++ * Updated m68k-updates patch (Roman Zippel). ++ * Another fix for ia64 packaging bits (Randolph Chung). ++ ++ -- Matthias Klose Tue, 31 Jul 2001 21:52:55 +0200 ++ ++gcc-3.0 (1:3.0.1ds0-0pre010727) unstable; urgency=high ++ ++ * Update to CVS sources (010727). ++ * Add epoch to source version. Change '.dsx' to 'dsx', so that ++ 3.1.1ds0 gt 3.1ds7 (closes: #106538). ++ ++ -- Matthias Klose Sat, 28 Jul 2001 09:56:29 +0200 ++ ++gcc-3.0 (3.0.1.ds0-0pre010723) unstable; urgency=high ++ ++ * ia64 packaging bits (Randolph Chung) (closes: #106252). ++ ++ -- Matthias Klose Mon, 23 Jul 2001 23:02:03 +0200 ++ ++gcc-3.0 (3.0.1.ds0-0pre010721) unstable; urgency=high ++ ++ * Update to CVS sources (010721). ++ - Remove patches applied upstream: libstdc++-limits.dpatch, ++ objc-data-references ++ - Updated other patches. ++ * Fix gij alternative (closes: #103468, #103883). ++ * Patch to fix bootstrap on sparc (closes: #103568). ++ * Corrected (closes: #105371) and updated README.Debian. ++ * m68k patches for sucessful bootstrap (Roman Zippel). ++ * Add libstdc++v3 porting hints to README.Debian and README.C++. ++ * m68k md fix (#105622) (Roman Zippel). ++ * debian/rules2: Disable non-functional ulimit on Hurd (#105884). ++ * debian/control: Require binutils (>= 2.11.90.0.24) ++ * Java is enabled for alpha (closes: #87300). ++ ++ -- Matthias Klose Sun, 22 Jul 2001 08:24:04 +0200 ++ ++gcc-3.0 (3.0.ds9-4) unstable; urgency=high ++ ++ * Move this version to testing ASAP. testing still has a prerelease ++ version with now incompatible ABI's. If sparc doesn't build, ++ then IMHO it's better to remove it from testing. ++ * debian/control.m4: Set uploaders field. Adjust description of ++ gcc-3.0 (binary) package (closes: #102271, #102620). ++ * Separate gij.1 in it's own pseudo man page (closes: #99523). ++ * debian/patches/java-manpages.dpatch: New patch. ++ * libgcj: Install unversioned gij. ++ ++ -- Matthias Klose Tue, 3 Jul 2001 07:38:08 +0200 ++ ++gcc-3.0 (3.0.ds9-3) unstable; urgency=high ++ ++ * Reenable configuration with posix threads on i386 (lost in hurd-i386 ++ merge). ++ ++ -- Matthias Klose Sun, 24 Jun 2001 22:21:45 +0200 ++ ++gcc-3.0 (3.0.ds9-2) unstable; urgency=medium ++ ++ * Move this version to testing ASAP. testing still has a prerelease ++ version with now incompatible ABI's. ++ * Add libgcc0 and libgcc300 to the build conflicts (#102041). ++ * debian/README.FIRST: Removed (#101534). ++ * Updated subreg-byte patch (doc files). ++ * Disable java for the Hurd, mips and mipsel (#101570). ++ * Patch for building on the Hurd (#101708) (Jeff Bailey ). ++ * Packaging fixes for the Hurd (#101711) (Jeff Bailey ). ++ * Include pregenerated doxygen (1.2.6) docs for libstdc++-v3 (#101557). ++ The current doxygen-1.2.8.1 segaults. ++ * C++: Enable -fuse-cxa-atexit by default (#101901). ++ * Correct mail address in gccbug (#101743). ++ * Make rules resumable after failure in binary-xxx targets (#101637). ++ ++ -- Matthias Klose Sun, 24 Jun 2001 16:04:53 +0200 ++ ++gcc-3.0 (3.0.ds9-1) unstable; urgency=low ++ ++ * Final 3.0 release. ++ * Update libgcc version number (#100983, #100988, #101069, #101115, #101328). ++ * Updated hppa-build patch (Matt Taggart ). ++ * Disable java for hppa. ++ * Updated subreg-byte patch for sparc (Ben Collins). ++ ++ -- Matthias Klose Mon, 18 Jun 2001 18:26:04 +0200 ++ ++gcc-3.0 (3.0.ds8-0pre010613) unstable; urgency=low ++ ++ * Update patches for recent (010613 23:13 +0200) CVS sources. ++ * Fix packaging bugs (#100459, #100447, #100483). ++ * Build-Depend on gawk, mawk doesn't work well with test_summary. ++ ++ -- Matthias Klose Wed, 13 Jun 2001 23:13:38 +0200 ++ ++gcc-3.0 (3.0.ds7-0pre010609) unstable; urgency=low ++ ++ * Fix build dependency for the hurd (#99164). ++ * Update patches for recent (010609) CVS sources. ++ * Disable java on powerpc (link error in libjava). ++ * gcc-3.0-base.postinst: Don't prompt for non-interactive installs (#100110). ++ ++ -- Matthias Klose Sun, 10 Jun 2001 09:45:57 +0200 ++ ++gcc-3.0 (3.0.ds6-0pre010526) unstable; urgency=high ++ ++ * Urgency "high" for replacing the gcc-3.0 snapshots in testing, which ++ now are incompatile due to the changed ABIs. ++ * Upstream begins tagging with "gcc-3_0_pre_2001mmdd". ++ * Tighten dependencies to install only binary packages derived from ++ one source (#98851). Tighten libc6-dev dependency to match libc6. ++ ++ -- Matthias Klose Sun, 27 May 2001 11:35:31 +0200 ++ ++gcc-3.0 (3.0.ds6-0pre010525) unstable; urgency=low ++ ++ * ATTENTION: The ABI (exception handling) changed. No upgrade path from ++ earlier snapshots (you had been warned in the postinst ...) ++ Closing #93597, #94576, #96448, #96461. ++ You have to rebuild ++ * HELP is appreciated for scanning the Debian BTS and sending followups ++ to bug reports!!! ++ * Should we name debian gcc uploads? What about a "still seeking ++ g++ maintainer" upload? ++ * Fixed in gcc-3.0: #97030 ++ * Update patches for recent (010525) CVS sources. ++ * Make check depend on build target (fakeroot problmes). ++ * debian/rules.d/binary-libgcc.mk: new file, build first. ++ * Free memory detection on the hurd for running the testsuite. ++ * Update debhelper build dependency. ++ * libstdc++-doc: Include doxygen generated docs. ++ * Fix boring packaging bugs, too tired for appropriate changelogs ... ++ #93343, #96348, #96262, #97134, #97905, #96451, #95812, #93157 ++ * Fixed bugs: #87000. ++ ++ -- Matthias Klose Sat, 26 May 2001 23:10:42 +0200 ++ ++gcc-3.0 (3.0.ds5-0pre010510) unstable; urgency=low ++ ++ * Update patches for recent (010506) CVS sources. ++ * New version of source, as of 2001-05-10 ++ * New version of gpc source, as of 2001-05-06 (disabled by default). ++ * Make gcc-3.0-sparc64 provide an alternative for sparc64-linux-gcc, ++ since it can build kernels just fine (it seems) ++ * Add hppa patch from Matt Taggart ++ * Fix objc info inclusion...now merged with gcc info ++ * Do not install the .la for libstdc++, since it confuses libtool linked ++ applications when libstdc++3-dev and libstdc++2.10-dev are both ++ installed (closes #97905). ++ * Fixed gcc-base and libgcc section/prio to match overrides ++ ++ -- Ben Collins Mon, 7 May 2001 00:08:52 +0200 ++ ++gcc-3.0 (3.0.ds5-0pre010427) unstable; urgency=low ++ ++ * Fixed priority for fastjar from optional to extra ++ * New version of source, as of 2001-04-27 ++ * Fix description of libgcj-dev ++ * libffi-install: Make libffi installable ++ * Add libffi and libffi-dev packages. libffi is only enabled for java ++ targets right now. Perhaps more will be enabled later. ++ * Fixes to build cross compiler package (for avr) ++ (Hakan Ardo ). ++ * Better fixincludes description (#93157). ++ * Remove all remnants of libg++ ++ * Remove all hacks around libstdc++ version. Since we are strictly v3 now, ++ we can treat it like a normal shared lib, and not worry about all those ++ ABI changes. ++ * Remove all cruft control scripts. Note, debhelper will create scripts ++ that it needs to. It will do the doc link stuff and the ldconfig stuff ++ explicitly. ++ * Clean up the SONAME parsing stuff, make it a little more cleaner over ++ all the lib packages ++ * Make libffi install when built (IOW, whenever java is enabled). This ++ should obsolete the libffi package, which is old and broken ++ * Revert to normal sonames, except for ia64 (for now) ++ * Remove all references to dh_testversion, since they are deprecated for ++ Build-Depends ++ * Fix powerpc nof build ++ * Remove all references to the MULTILIB stuff, since the arches are ++ using specialized builds anyway (nof, softfloat). ++ * Added 64bit sparc64 package (gcc-3.0-sparc64, libgcc0-sparc64) ++ * Removed obsolete shlibs.local file ++ ++ -- Ben Collins Sun, 15 Apr 2001 21:33:15 -0400 ++ ++gcc-3.0 (3.0.ds4-0pre010403) unstable; urgency=low ++ ++ * debian/README: Updated for gcc-3.0 ++ * debian/rules.patch: Added subreg-byte patch for sparc ++ * debian/rules.unpack: Update to current CVS for gcc tarball name ++ * debian/patches/subreg-byte.dpatch: sparc subreg-byte support ++ * debian/patches/gcc-rawhide.dpatch: Removed ++ debian/patches/gpc-2.95.dpatch: Removed ++ debian/patches/sparc32-rfi.dpatch: Removed ++ debian/patches/temporary.dpatch: Removed ++ * Moving to unstable now ++ * debian/patches/gcc-ppc-disable-shared-libgcc.dpatch: New patch, ++ disables shared libgcc for powerpc target, since it isn't compatible ++ with the EABI objects. ++ * Create $(with_shared_libgcc) var ++ * debian/rules.d/binary-gcc.mk: Use this new variable to determine if ++ the libgcc package actually has any files ++ ++ -- Ben Collins Tue, 3 Apr 2001 23:00:55 -0400 ++ ++gcc-3.0 (3.0.ds2-0pre010223) experimental; urgency=low ++ ++ * New snapshot. Use distinct shared object names for shared libraries: ++ we don't know if binary API's still change until the final release. ++ * Versioned package names. ++ * debian/control.m4: New file. Add gcc-base, libgcc0, libobjc1, ++ libstdc++-doc, libgcj1, libgcj1-dev, fastjar, fixincludes packages. ++ Remove gcc-docs package. ++ * debian/gcov.1: Remove. ++ * debian/*: Remove 2.95.x support. Prepare for 3.0. ++ * debian/patches: Remove 2.95.x patches. ++ * Changed source package name. It's not allowed anymore to overwrite ++ source packages with different content. Introducing a 'debian source ++ element' (.ds), which is stripped again from the version number ++ for the binary packages. ++ * Fixed bugs and added functionality: ++ #26436, #27878, #33786, #34876, #35477, #42662, #46181, #42989, ++ #47981, #48530, #50529, #51227, #51456, #51651, #52382, #53698, ++ #55291, #55967, #56867, #58219, #59005, #59232, #59776, #64628, ++ #65687, #67631, #68632, #68963, #68987, #69530, #72933, #75120, ++ #75759, #76645, #76827, #83221, #87540 ++ * libgcj fixes: 42894, #51266, #68560, #71187, #79984 ++ ++ -- Matthias Klose Sat, 24 Feb 2001 13:41:11 +0100 ++ ++gcc-2.95 (2.95.3-2.001222) experimental; urgency=low ++ ++ * New upstream version 2.95.3 experimental (CVS 20001222). ++ * debian/control.in: Versioned package names, removal of snapshot logic. ++ Remove fake gcc-docs package. ++ * Reserve -1 release numbers for woody. ++ * Updated to gpc-20001218. ++ ++ -- Matthias Klose Fri, 22 Dec 2000 19:53:03 +0100 ++ ++gcc (2.95.2-20) unstable; urgency=low ++ ++ * Apply patch from gcc-2_95-branch; remove ulimit for make check. ++ ++ -- Matthias Klose Sun, 10 Dec 2000 17:01:13 +0100 ++ ++gcc (2.95.2-19) unstable; urgency=low ++ ++ * Added testsuite-20001207 from current snapshots. We'll need results ++ for 2.95.2 to make sure there are no regressions against that release. ++ Dear build daemons and porters to other architectures, please send an ++ email to gcc-testresults@gcc.gnu.org. ++ You can do this by running "debian/rules mail-summary". ++ * Updated to gpc-20001206. ++ * Added S/390 patch prepared by Chu-yeon Park (#78983). ++ * debian/patches/libio.dpatch: Fix iostream doc (fixes #77647). ++ * debian/patches/gcc-doc.dpatch: Update URL (fixes #77542). ++ * debian/patches/gcc-reload1.dpatch Patch from the gcc-bug list which ++ fixes a problem in "long long" on i[345]86 (i686 was not affected). ++ ++ -- Matthias Klose Sat, 9 Dec 2000 12:30:32 +0100 ++ ++gcc (2.95.2-18) unstable; urgency=low ++ ++ * debian/control.in: Fix syntax errors (fixes #76146, #76458). ++ Disable gpc on the hurd by request (#75686). ++ * debian/patches/arm-various.dpatch: Patches from Philip Blundell ++ for ARM arch (fixes #75801). ++ * debian/patches/gcc-alpha-mi-thunk.dpatch: Patches from Chris Chimelis ++ for alpha arch. ++ * debian/patches/g77-docs.dpatch: Adjust g77 docs (fixes #72594). ++ * Update gpc to gpc-20001118. ++ * Reenable gpc for alpha. ++ * debian/README.C++: Merge debian/README.libstdc++ and C++ FAQ information ++ provided by Matt Zimmermann. ++ * Build gcj only on architectures, where libgcj-2.95.1 can be built as well. ++ Probably needs some adjustments ... ++ * Conditionalize for chill, fortran, java, objc and chill. ++ ++ * NOT APPLIED: ++ debian/patches/libstdc++-bastring.dpatch: Apply fix (fixes #75759). ++ ++ -- Matthias Klose Sun, 19 Nov 2000 10:40:41 +0100 ++ ++gcc (2.95.2-17) unstable; urgency=low ++ ++ * Disable gpc for alpha. ++ * Include gpc-cpp in gpc package (fixes #74492). ++ * Don't build gcc-docs compatibility package anymore. ++ ++ -- Matthias Klose Wed, 11 Oct 2000 06:16:53 +0200 ++ ++gcc (2.95.2-16) unstable; urgency=low ++ ++ * Applied the emdebian/cross compiler patch and documentation ++ (Frank Smith ). ++ * Applied patch for avr target (Hakan Ardo ). ++ * debian/control.in: Add awk to Build-Depends. ++ Tighten libc6-dev dependency for libstdc++-dev (fixes #73031, ++ #72531, #72534). ++ * Disable libobjc_gc for m68k again (fixes #74380). ++ * debian/patches/arm-namespace.dpatch: Apply patch from Philip ++ Blundell to fix name space pollution on arm ++ (fixes #70937). ++ * Fix more warnings in STL headers (fixes #69352, #71943). ++ ++ -- Matthias Klose Mon, 9 Oct 2000 21:51:41 +0200 ++ ++gcc (2.95.2-15) unstable; urgency=low ++ ++ * debian/control.in: Add libgc5-dev to build depends (fixes #67015). ++ * debian/rules.def: Build GC enabled ObjC runtime for sparc. ++ * Bug #58741 fixed (in some version since 2.95.2-5). ++ * debian/control.in: Recommend librx1g-dev, libgmp2-dev, libncurses5-dev ++ (unit dependencies). ++ * Patches from Marcus Brinkmann for the hurd (fixes #67763): ++ - debian/rules.defs: Disable objc_gc on hurd-i386. ++ Disable libg++ on GNU systems. ++ - debian/rules2: Set correct names of libstdc++/libg++ ++ libraries on GNU systems. ++ Write out correct shlibs and shlibs.local file content. ++ - Keep _G_config.h for the Hurd. ++ * Apply patch for ObjC linker warnings. ++ * Don't apply gcj backport patch for sparc. ++ * Apply libio compatability patch ++ * debian/glibcver.sh: generate appropriate version for glibc ++ * debian/rules.conf: for everything after glibc 2.1, we always append ++ "-glibc$(ver)" to the C++ libs for linux. ++ * Back down gpc to -13 version (-14 wont compile on anything but i386 ++ and m68k becuase of gpc). ++ * Remove extraneous and obsolete sparc64 patches/files from debian/* ++ ++ -- Ben Collins Thu, 21 Sep 2000 08:08:35 -0400 ++ ++gcc-snapshot (20000901-2.2) experimental; urgency=low ++ ++ * New snapshot. ++ * debian/rules2: Move tradcpp0 to cpp package. ++ ++ -- Matthias Klose Sat, 2 Sep 2000 01:14:28 +0200 ++ ++gcc-snapshot (20000802-2.1) experimental; urgency=low ++ ++ * New snapshot. ++ * debian/rules2: Fixes. tradcpp0 is in gcc package, not cpp. ++ ++ -- Matthias Klose Thu, 3 Aug 2000 07:40:05 +0200 ++ ++gcc-snapshot (20000720-2) experimental; urgency=low ++ ++ * New snapshot. ++ * Enable libstdc++-v3. ++ * debian/rules2: Don't use -D for /usr/bin/install. ++ ++ -- Matthias Klose Thu, 20 Jul 2000 22:33:37 +0200 ++ ++gcc (2.95.2-14) unstable; urgency=low ++ ++ * Update gpc patch. ++ ++ -- Matthias Klose Wed, 5 Jul 2000 20:51:16 +0200 ++ ++gcc (2.95.2-13) frozen unstable; urgency=low ++ ++ * Update debian/README: document how to compile 2.0.xx kernels; don't ++ register gcc272 as an alternative for gcc (closes #62419). ++ Clarify compiler setup (closes #65548). ++ * debian/control.in: Make libstdc++-dev depend on current version of g++. ++ * Undo CVS update from release -8 (problems on alpha, #55263). ++ ++ -- Matthias Klose Mon, 19 Jun 2000 23:06:48 +0200 ++ ++gcc (2.95.2-12) frozen unstable; urgency=low ++ ++ * debian/gpc.postinst: Correct typo introduced with -11 (fixes #64193). ++ * debian/patches/gcc-rs600.dpatch: ppc codegen fix (fixes #63933). ++ ++ -- Matthias Klose Sun, 21 May 2000 15:56:05 +0200 ++ ++gcc (2.95.2-11) frozen unstable; urgency=medium ++ ++ * Upload to unstable again (fixes critical #63784). ++ * Fix doc-base files (fixes important #63810). ++ * gpc wasn't built in -10 (fixes #63977). ++ * Make /usr/bin/pc an alternative (fixes #63888). ++ * Add SYSCALLS.c.X to gcc package. ++ ++ -- Matthias Klose Sun, 14 May 2000 22:17:44 +0200 ++ ++gcc (2.95.2-10) frozen; urgency=low ++ ++ * debian/control.in: make gcc conflict on any version of egcc ++ (slink to potato upgrade problem, fixes grave #62084). ++ * Build protoize programs, separate out in new package (fixes #59436, ++ #62911). ++ * Create dummy gcc-docs package for smooth update from slink (fixes #62537). ++ * Add doc-base support for all -doc packages (fixes #63380). ++ ++ -- Matthias Klose Mon, 1 May 2000 22:24:28 +0200 ++ ++gcc (2.95.2-9) frozen unstable; urgency=low ++ ++ * Disable the sparc-bi-arch.dpatch (patch from Ben Collins, built ++ for sparc as NMU 8.1) (fixes critical #61529 and #61511). ++ "Seems that when you compile gcc 2.95.x for sparc64-linux and compile ++ sparc32 programs, the code is not the same as sparc-linux compile for ++ sparc32 (this is a bug, and is fixed in gcc 2.96 CVS)." ++ * debian/patches/gcj-vs-iconv.dpatch: Option '--encoding' for ++ encoding of input files. Patch from Tom Tromey ++ backported to 2.95.2 (fixes #42895). ++ Compile a Latin-1 encoded file with `gcj --encoding=Latin1 ...'. ++ * debian/control.in: gcc, g++ and gobjc suggest their corresponding ++ task packages (fixes #59623). ++ ++ -- Matthias Klose Sat, 8 Apr 2000 20:19:15 +0200 ++ ++gcc (2.95.2-8) frozen unstable; urgency=low ++ ++ * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000313. ++ * debian/rules2: configure with --enable-java-gc=no for sparc. Fixes ++ gcj side of #60535. ++ * debian/rules.patch: Disable gcc-emit-rtl patch for all archs but ++ alpha. Disable g++-is-tree patch ("just for 2.95.1"). ++ * debian/README: Update for gcc-2.95. ++ ++ -- Matthias Klose Mon, 27 Mar 2000 00:03:16 +0200 ++ ++gcc (2.95.2-7) frozen unstable; urgency=low ++ ++ * debian/patches/gcc-empty-struct-init.dpatch; Apply patch from ++ http://gcc.gnu.org/ml/gcc-patches/2000-02/msg00637.html. Fixes ++ compilation of 2.3.4x kernels. ++ * debian/patches/gcc-emit-rtl.dpatch: Apply patch from David Huggins-Daines ++ (backport from 2.96 CVS to fix #55263). ++ * debian/patches/gcc-pointer-arith.dpatch: Apply patch from Jim Kingdon ++ (backport from 2.96 CVS to fix #54951). ++ ++ -- Matthias Klose Thu, 2 Mar 2000 23:16:43 +0100 ++ ++gcc (2.95.2-6) frozen unstable; urgency=low ++ ++ * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000220. ++ * Remove dangling symlink probably left over from libstdc++2.9 ++ package (fixes #53661). ++ * debian/patches/gcc-alpha-complex-float.dpatch: Fixed patch by ++ David Huggins-Daines (fixes #58486). ++ * debian/g++.{postinst,prerm}: Remove outdated g++FAQ registration ++ (fixes #58253). ++ * debian/control.in: gcc-doc replaces gcc-docs (fixes #58108). ++ * debian/rules2: Include some fixed headers (asm, bits, linux, ...). ++ * debian/patches/{gcc-alpha-ev5-fix,libstdc++-valarray}.dpatch: Remove. ++ Applied upstream. ++ * debian/patches/libstdc++-bastring.dpatch: Add patch from ++ sicard@bigruth.solsoft.fr (fixes #56715). ++ ++ -- Matthias Klose Sun, 20 Feb 2000 15:08:13 +0100 ++ ++gcc (2.95.2-5) frozen unstable; urgency=low ++ ++ * Post-2.95.2 CVS updates of the gcc-2_95-branch until 20000116. ++ * Add more build dependencies (fixes #53204). ++ * debian/patches/gcc-alpha-complex-float.dpatch: Patch from ++ Joel Klecker to compile glibc correctly on alpha. ++ "Should fix the g77 problems too." ++ * debian/patches/{libio,libstdc++-wall2}.dpatch. Remove patches ++ applied upstream. ++ ++ -- Matthias Klose Sun, 16 Jan 2000 19:16:54 +0100 ++ ++gcc (2.95.2-4) unstable; urgency=low ++ ++ * debian/patches/libio.dpatch: Patch from Martin v. Loewis. ++ (fixes: #35628). ++ * debian/patches/libstdc++-deque.dpatch: Patch from Martin v. Loewis. ++ (fixes: #52689). ++ * debian/control.in: Updated Build-Depends, removed outdated README.build. ++ Fixes #51246. ++ * Tighten dependencies to cpp (>= 2.95.2-4) (closes: #50294). ++ * debian/rules.patch: Really do not apply patches/gcj-backport.dpatch. ++ Fixes #51636. ++ * Apply updated sparc-bi-arch.dpatch from Ben Collins. ++ * libstdc++: Define wstring type, if __ENABLE_WSTRING is defined. Request ++ from the author of the War FTP Daemon for Linux ("Jarle Aase" ++ ). ++ * debain/g++.preinst: Remove dangling sysmlinks (fixes #52359). ++ ++ -- Matthias Klose Sun, 19 Dec 1999 21:53:48 +0100 ++ ++gcc (2.95.2-3) unstable; urgency=low ++ ++ * debian/rules2: Don't install $(gcc_lib_dir)/include/asm; these are ++ headers fixed for glibc-1.x (closes: #49434). ++ * debian/patches/cpp-dos-newlines.dpatch: Keep CR's without ++ following LF (closes: #49186). ++ * Bug #37358 (internal compiler errors when building vdk_0.6.0-5) ++ fixed in gcc-2.95.? (closes: #37358). ++ * Apply patch gcc-alpha-ev5-fix from Richard Henderson ++ (should fix #48527 and #46963). ++ * debian/README.Bugs: Documented non bug #44554. ++ * Applied patch from Alexandre Oliva to fix gpc boostrap on alpha. ++ Reenabled gpc on all architectures. ++ * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991108. ++ * Explicitely generate postinst/prerm chunks for usr/doc transition. ++ debhelper currently doesn't handle generation for packages with ++ symlinked directories. ++ * debian/patches/libstdc++-wall3.dpatch: Fix warnings in stl_deque.h ++ and stl_rope.h (closes: #46444, #46720). ++ * debian/patches/gcj-backport.dpatch: Add file, don't apply (yet). ++ ++ -- Matthias Klose Wed, 10 Nov 1999 18:58:45 +0100 ++ ++gcc (2.95.2-2) unstable; urgency=low ++ ++ * New gpc-19991030 snapshot. ++ * Post-2.95.2 CVS updates of the gcc-2_95-branch until 19991103. ++ * Reintegrated sparc patches (bcollins@debian.org), which were lost ++ in 2.95.2-1. ++ * debian/rules2: Only install $(gcc_lib_dir)/include/asm, when existing. ++ * debian/patches/gpc-2.95.{dpatch,diff}: updated patch to drop ++ initialization in stor-layout.c. ++ * debian/NEWS.gcc: Updated for gcc-2.95.2. ++ * debian/bugs/bug-...: Removed testcases for fixed bugs. ++ * debian/patches/...dpatch: Removed patches applied upstream. ++ * debian/{rules2,g++.postinst,g++.prerm}: Handle c++ alternative. ++ * debian/changelog: Merged gcc272, egcs and snapshot changelogs. ++ ++ -- Matthias Klose Tue, 2 Nov 1999 23:09:23 +0200 ++ ++gcc (2.95.2-1.1) unstable; urgency=low ++ ++ * Most of the powerpc patches have been applied upstream. Remove all ++ but ppc-ice, ppc-andrew-dwarf-eh, and ppc-descriptions. ++ * mulilib-install.dpatch was definitely a bad idea. Fix it properly ++ by using install -D. ++ * Also, don't make directories before installing any more. Simplifies ++ rules a (tiny) bit. ++ * Do not build with LDFLAGS=-s. Everything gets stripped out anyway by ++ dh_strip -a -X_debug; so leave the binaries in the build tree with ++ debugging symbols for simplified debugging of the packages. ++ ++ -- Daniel Jacobowitz Sat, 30 Oct 1999 12:40:12 -0400 ++ ++gcc (2.95.2-1) unstable; urgency=low ++ ++ * gcc-2.95.2 release (taken from the CVS archive). -fstrict-aliasing ++ is disabled upstream. ++ ++ -- Matthias Klose Mon, 25 Oct 1999 10:26:19 +0200 ++ ++gcc (2.95.2-0pre4) unstable; urgency=low ++ ++ * Updated to cvs updates of the gcc-2_95-branch until 19991021. ++ * Updated gpc to gpc-19991018 snapshot (closes: #33037, #47453). ++ Enable gpc for all architectures ... ++ * Document gcc exit codes (closes: #43863). ++ * According to the bug submitter (Sergey V Kovalyov ) ++ the original source of these CERN librarties is outdated now. The latest ++ version of cernlibs compiles and works fine with slink (closes #31546). ++ * According to the bug submitter (Gergely Madarasz ), ++ the problem triggered on i386 cannot be reproduced with the current ++ jade and php3 versions anymore (closes: #35215). ++ * Replace corrupted m68k-pic.dpatch (from Roman Hodek and Andreas Schwab ++ and apply to ++ all architectures (closes: #48011). ++ * According to the bug submitter (Herbert Xu ) ++ this bug "probably has been fixed". Setting it to severity "fixed" ++ (fixes: #39616), will close it later ... ++ * debian/README.Bugs: Document throwing C++ exceptions "through" C ++ libraries (closes: #22769). ++ ++ -- Matthias Klose Fri, 22 Oct 1999 20:33:00 +0200 ++ ++gcc (2.95.2-0pre3) unstable; urgency=low ++ ++ * Updated to cvs updates of the gcc-2_95-branch until 19991019. ++ * Apply NMU patches (closes: #46217). ++ * debian/control.in: Fix egcs64 conflict-dependency for sparc ++ architecture (closes: #47088). ++ * debian/rules2: dbg-packages share doc dir with lib packages ++ (closes #45067). ++ * debian/patches/gcj-debian-policy.dpatch: Patch from Stephane ++ Bortzmeyer to conform to Debian policy (closes: #44463). ++ * debian/bugs/bug-*: Added test cases for new bug reports. ++ * debian/patches/libstdc++-bastring.dpatch: Patch by Richard Kettlewell ++ (closes #46550). ++ * debian/rules.patch: Apply libstdc++-wall2 patch (closes #46609). ++ * debian/README: Fix typo (closes: #45253). ++ * debian/control.in: Remove primary/secondary distinction; ++ dbg-packages don't provide their normal counterparts (closes #45206). ++ * debian/rules.patch: gcc-combine patch applied upstream. ++ * debian/rules2: Only use mail if with_check is set (off by default). ++ * debian/rules.conf: Tighten binutils dependency to 2.9.5.0.12. ++ ++ -- Matthias Klose Tue, 19 Oct 1999 20:33:00 +0200 ++ ++gcc (2.95.2-0pre2.0.2) unstable; urgency=HIGH (for m68k) ++ ++ * Binary-only NMU for m68k as quick fix for another bug; the patch ++ is in CVS already, too. ++ * Applied another patch by Andreas Schwab to fix %a5 restauration in ++ some cases. ++ ++ -- Roman Hodek Thu, 30 Sep 1999 16:09:15 +0200 ++ ++gcc (2.95.2-0pre2.0.1) unstable; urgency=HIGH (for m68k) ++ ++ * Binary-only NMU for m68k as quick fix for serious bugs; the patches ++ are already checked into gcc CVS and should be in the next official ++ version, too. ++ * Applied two patches by Andreas Schwab to fix -fpic and loop optimization. ++ ++ -- Roman Hodek Mon, 27 Sep 1999 15:32:49 +0200 ++ ++gcc (2.95.2-0pre2) unstable; urgency=low ++ ++ * Fixed in 2.95.2 (closes: #43478). ++ * Previous version had Pascal examples missing in doc directory. ++ ++ -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 ++ ++gcc (2.95.2-0pre1) unstable; urgency=low ++ ++ * Updated to cvs updates of the gcc-2_95-branch until 19990828. ++ * Apply work around memory corruption (just for 2.95.1) by ++ Daniel Jacobowitz . ++ * debian/patches/libstdc++-wall2.dpatch: Patch from Franck Sicard ++ to fix some warnings (closes: #44670). ++ * debian/patches/libstdc++-valarray.dpatch: Patch from Hideaki Fujitani ++ to fix a bug in valarray_array.h. ++ * Applied NMU from Jim Pick minus the jump.c and fold-const.c patches ++ already in the gcc-2_95-branch (closes: #44690). ++ * Conform to debian-java policy (closes: #44463). ++ * Move docs to /usr/share/doc (closes: #44782). ++ * Remove debian/patches/gcc-align.dpatch applied upstream. ++ * debian/*.postinst: Call install-info only, when configuring. ++ * debian/*.{postinst,prerm}: Add #DEBHELPER# comments to handle ++ /usr/doc -> /usr/share/doc transition. ++ ++ -- Matthias Klose Wed, 8 Sep 1999 22:18:17 +0200 ++ ++gcc (2.95.1-2.1) unstable; urgency=low ++ ++ * Non-maintainer upload. ++ * ARM platform no longer needs library-prefix patch. ++ * Updated patches from Philip Blundell. ++ ++ -- Jim Pick Wed, 8 Sep 1999 20:14:07 -0700 ++ ++gcc (2.95.1-2) unstable; urgency=low ++ ++ * debian/gcc.{postinst,prerm}: gcc provides an alternative for ++ sparc64-linux-gcc. ++ * Applied patch from Ben Collins to enable bi-architecture (32/64) ++ support for sparc. ++ * Rebuild debian/control and debian/rules.parameters after unpacking. ++ * debian/rules2: binary-indep. Conditionalize on with_pascal. ++ ++ -- Matthias Klose Sat, 4 Sep 1999 13:47:30 +0200 ++ ++gcc (2.95.1-1) unstable; urgency=low ++ ++ * Updated to release gcc-2.95.1 and cvs updates of the gcc-2_95-branch ++ until 19990828. ++ * debian/README.gcc: Updated NEWS file to include 2.95 and 2.95.1 news. ++ * debian/README.java: New file. ++ * debian/rules.defs: Disabled gpc for alpha, arm. Disabled ObjC-GC ++ for alpha. ++ * debian/rules [clean]: Remove debian/rules.parameters. ++ * debian/rules2 [binary-arch]: Call dh_shlibdeps with LD_LIBRARY_PATH set ++ to installation dir of libstdc++. Why isn't this the default? ++ * debian/control.in: *-dev packages do not longer conflict with ++ libg++272-dev package. ++ * Apply http://egcs.cygnus.com/ml/gcc-patches/1999-08/msg00599.html. ++ * Only define BAD_THROW_ALLOC, when using exceptions (fixes #43462). ++ * For ObjC (when configured with GC) recommend libgc4-dev, not libgc4. ++ * New version of 68060 build patch. ++ * debian/rules.conf: For m68k, depend on binutils version 2.9.1. ++ ++ -- Matthias Klose Sat, 28 Aug 1999 18:16:31 +0200 ++ ++gcc (2.95.1-0pre2) unstable; urgency=medium ++ ++ * gpc is back again (fixes grave #43022). ++ * debian/patches/gpc-updates.dpatch: Patches sent to upstream authors. ++ * Work around the fatal dependtry assertion failure bug in dpkg (hint ++ from "Antti-Juhani Kaijanaho" , fixes important #43072). ++ ++ -- Matthias Klose Mon, 16 Aug 1999 19:34:14 +0200 ++ ++gcc (2.95.1-0pre1) unstable; urgency=low ++ ++ * Updated to cvs 19990815 gcc-2_95-branch; included install docs and ++ FAQ from 2.95 release; upload source package as well. ++ * Source package contains tarballs only (gcc, libg++, installdocs). ++ * debian/rules: Splitted into debian/rules{,.unpack,.patch,.conf,2}. ++ * debian/gcc.postinst: s/any key/RETURN; warn only when upgrading from ++ pre 2.95 version; reference /usr/doc, not /usr/share/doc. ++ * Checked syntax for attributes of functions; checked for #35068; ++ checked for bad gmon.out files (at least with libc6 2.1.2-0pre5 and ++ binutils 2.9.1.0.25-2 the problem doesn't show up anymore). ++ * debian/patches/cpp-macro-doc.dpatch: Document macro varargs in cpp.texi. ++ * gcc is primary compiler for all platforms but m68k. Setting ++ severity of #22513 to fixed. ++ * debian/patches/gcc-default-arch.dpatch: New patch to enable generation ++ of i386 instruction as default (fixes #42743). ++ * debian/rules: Removed outdated gcc NEWS file (fixes #42742). ++ * debian/patches/libstdc++-out-of-mem.dpatch: Throw exception instead ++ of aborting when out of memory (fixes #42622). ++ * debian/patches/cpp-dos-newlines.dpatch: Handle ibackslashes after ++ DOS newlines (fixes #29240). ++ * Fixed in gcc-2.95.1: #43001. ++ * Bugs closed in this version: ++ Closes: #11525, #12253, #22513, #29240, #35068, #36182, #42584, #42585, ++ #42602, #42622, #42742 #42743, #43001, #43002. ++ ++ -- Matthias Klose Sun, 15 Aug 1999 10:31:50 +0200 ++ ++gcc (2.95-3) unstable; urgency=high ++ ++ * Provide /lib/cpp again (fixes important bug #42524). ++ * Updated to cvs 19990805 gcc-2_95-branch. ++ * Build with the default scheduler. ++ * Apply install-multilib patch from Dan Jacobowitz. ++ * Apply revised cpp-A- patch from Dan Jacobowitz. ++ ++ -- Matthias Klose Fri, 6 Aug 1999 07:25:19 +0200 ++ ++gcc (2.95-2) unstable; urgency=low ++ ++ * Remove /lib/cpp. This driver uses files from /usr/lib/gcc-lib anyway. ++ * The following bugs are fixed (compared to egcs-1.1.2). ++ Closes: #4429, #20889, #21122, #26369, #28417, #28261, #31416, #35261, ++ #35900, #35906, #38246, #38872, #39098, #39526, #40659, #40991, #41117, ++ #41290, #41302, #41313. ++ * The following by Joel Klecker: ++ - Adopt dpkg-architecture variables. ++ - Go back to SHELL = bash -e or it breaks where /bin/sh is not bash. ++ - Disabled the testsuite, it is not included in the gcc 2.95 release. ++ ++ -- Matthias Klose Sat, 31 Jul 1999 18:00:42 +0200 ++ ++gcc (2.95-1) unstable; urgency=low ++ ++ * Update for official gcc-2.95 release. ++ * Built without gpc. ++ * debian/rules: Remove g++FAQ from rules, which is outdated. ++ For ix86, build for i386, not i486. ++ * Apply patch from Jim Pick for building multilib package on arm. ++ ++ -- Matthias Klose Sat, 31 Jul 1999 16:38:21 +0200 ++ ++gcc (2.95-0pre10) unstable; urgency=low ++ ++ * Use ../builddir-gcc-$(VER) by default instead of ./builddir; upstream ++ strongly advises configuring outside of the source tree, and it makes ++ some things much easier. ++ * Add patch to prevent @local branches to weak symbols on powerpc (fixes ++ apt compilation). ++ * Add patch to make cpp -A- work as expected. ++ * Renamed debian/patches/ppc-library-prefix.dpatch to library-prefix.dpatch; ++ apply on all architectures. ++ * debian/control.in: Remove snapshot dependencies. ++ * debian/*.postinst: Reflect use of /usr/share/{info,man}. ++ ++ -- Daniel Jacobowitz Thu, 22 Jul 1999 19:27:12 -0400 ++ ++gcc (2.95-0pre9) unstable; urgency=low ++ ++ * The following bugs are fixed (compared to egcs-1.1.2): #4429, #20889, ++ #21122, #26369, #28417, #28261, #35261, #38246, #38872, #39526, #40659, ++ #40991, #41117, #41290. ++ * Updated to CVS gcc-19990718 snapshot. ++ * debian/control.in: Removed references to egcs in descriptions. ++ Changed gcj's Recommends libgcj-dev to Depends. ++ * debian/rules: Apply ppc-library-prefix for alpha as well. ++ * debian/patches/arm-config.dpatch: Updated patch sent by Jim Pick. ++ ++ -- Matthias Klose Sun, 18 Jul 1999 12:21:07 +0200 ++ ++gcc (2.95-0pre8) unstable; urgency=low ++ ++ * Updated CVS. ++ * debian/copyright: s%doc/copyright%share/common-licenses% ++ * debian/README.Bugs: s/egcs.cygnus.com/gcc.gnu.org/ s/egcs-bugs/gcc-bugs/ ++ * debian/patches/reporting.dpatch: Remake diff for current sources. ++ * debian/libstdc++-dev.postinst: It's /usr/share/info/iostream.info. ++ * debian/rules: Current dejagnu snapshot reports a framework version ++ of 1.3.1. ++ ++ -- Joel Klecker Sun, 18 Jul 1999 02:09:57 -0700 ++ ++gcc-snapshot (19990714-0pre6) experimental; urgency=low ++ ++ * Updated to CVS gcc-19990714 snapshot. ++ * Applied ARM patch (#40515). ++ * Converted DOS style linefeeds in debian/patches/ppc-* files. ++ * debian/rules: Reflect change in gcc/version.c; use sh -e as shell: ++ for some obscure reason, bash -e doesn't work. ++ * Reflect version change for libstdc++ (2.10). Remove libg++-name ++ patch; libg++ now has version 2.8.1.3. Removed libc version from ++ the package name. ++ ++ -- Matthias Klose Wed, 14 Jul 1999 18:43:57 +0200 ++ ++gcc-snapshot (19990625-0pre5.1) experimental; urgency=low ++ ++ * Non-maintainer upload. ++ * Added ARM specific patch. ++ ++ -- Jim Pick Tue, 29 Jun 1999 22:36:08 -0700 ++ ++gcc-snapshot (19990625-0pre5) experimental; urgency=low ++ ++ * Updated to CVS gcc-19990625 snapshot. ++ ++ -- Matthias Klose Fri, 25 Jun 1999 16:11:53 +0200 ++ ++gcc-snapshot (19990609-0pre4.1) experimental; urgency=low ++ ++ * Added and re-added a few last PPC patches. ++ ++ -- Daniel Jacobowitz Sat, 12 Jun 1999 16:48:01 -0500 ++ ++gcc-snapshot (19990609-0pre4) experimental; urgency=low ++ ++ * Updated to CVS egcs-19990611 snapshot. ++ ++ -- Matthias Klose Fri, 11 Jun 1999 10:20:09 +0200 ++ ++gcc-snapshot (19990609-0pre3) experimental; urgency=low ++ ++ * CVS gcc-19990609 snapshot. ++ * New gpc-19990607 snapshot. ++ ++ -- Matthias Klose Wed, 9 Jun 1999 19:40:44 +0200 ++ ++gcc-snapshot (19990524-0pre1) experimental; urgency=low ++ ++ * egcs-19990524 snapshot. ++ * First snapshot of the gcc-2_95-branch. egcs-1.2 is renamed to gcc-2.95, ++ which is now the "official" successor to gcc-2.8.1. The full version ++ name is: gcc-2.95 19990521 (prerelease). ++ * debian/control.in: Changed maintainers to `Debian GCC maintainers'. ++ * Moved all version numbers to epoch 1. ++ * debian/rules: Major changes. The support for secondary compilers ++ was already removed for the egcs-1.2 snapshots. Many fixes by ++ Joel Klecker . ++ - Send mail to Debian maintainers for successful builds. ++ - Fix VER and VERNO sed expressions. ++ - Replace remaining GNUARCH occurrences. ++ * New gpc snapshot (but don't build). ++ * debian/patches/valarray.dpatch: Backport from libstdc++-v3. ++ * debian/gcc-doc.*: Info is now gcc.info* (Joel Klecker ). ++ * Use cpp driver provided by the package. ++ * New script c89 (fixes #28261). ++ ++ -- Matthias Klose Sat, 22 May 1999 16:10:36 +0200 ++ ++egcs (1.1.2-2) unstable; urgency=low ++ ++ * Integrate NMU's for arm and sparc (fixes #37582, #36857). ++ * Apply patch for the Hurd (fixes #37753). ++ * Describe open bugs in TODO.Debian. Please have a look if you can help. ++ * Update README / math functions section (fixes #35906). ++ * Done by J.H.M. Dassen (Ray) : ++ - At Richard Braakman's request, made -dbg packages for libstdc++ ++ and libg++. ++ - Provide egcc(1) (fixes lintian error). ++ ++ -- Matthias Klose Sun, 16 May 1999 14:30:56 +0200 ++ ++egcs-snapshot (19990502-1) experimental; urgency=low ++ ++ * New snapshot. ++ ++ -- Matthias Klose Thu, 6 May 1999 11:51:02 +0200 ++ ++egcs-snapshot (19990418-2) experimental; urgency=low ++ ++ * Merged Rays changes to build debug packages. ++ ++ -- Matthias Klose Wed, 21 Apr 1999 16:54:56 +0200 ++ ++egcs-snapshot (19990418-1) experimental; urgency=low ++ ++ * New snapshot. ++ * Disable cpplib. ++ ++ -- Matthias Klose Mon, 19 Apr 1999 11:32:19 +0200 ++ ++egcs (1.1.2-1.2) unstable; urgency=low ++ ++ * NMU for arm ++ * Added arm-optimizer.dpatch with optimizer workaround for ARM ++ ++ -- Jim Pick Mon, 19 Apr 1999 06:17:13 -0700 ++ ++egcs (1.1.2-1.1) unstable; urgency=low ++ ++ * NMU for sparc ++ * Included dpatch to modify the references to gcc/crtstuff.c so that ++ __register_frame_info is not a weak reference. This allows potato to ++ remain binary compatible with slink, while still retaining compatibility ++ with other sparc/egcs1.1.2 distributions. Diff in .dpatch format has ++ been sent to the maintainer with a note it may not be needed for 1.1.3. ++ ++ -- Ben Collins Tue, 27 Apr 1999 10:15:03 -0600 ++ ++egcs (1.1.2-1) unstable; urgency=low ++ ++ * Final egcs-1.1.2 release built for potato as primary compiler ++ for all architectures except m68k. ++ ++ -- J.H.M. Dassen (Ray) Thu, 8 Apr 1999 13:14:29 +0200 ++ ++egcs-snapshot (19990321-1) experimental; urgency=low ++ ++ * New snapshot. ++ * Disable gpc. ++ * debian/rules: Simplified (no secondary compiler, bumped all versions ++ to same epoch, libapi patch is included upstream). ++ * Separated out cpp documentation to cpp-doc package. ++ * Fixed in this version: #28417. ++ ++ -- Matthias Klose Tue, 23 Mar 1999 02:11:18 +0100 ++ ++egcs (1.1.2-0slink2) stable; urgency=low ++ ++ * Applied H.J.Lu's egcs-19990315.linux patch. ++ * Install faq.html and egcs-1.1.2 announcment. ++ ++ -- Matthias Klose Tue, 23 Mar 1999 01:14:54 +0100 ++ ++egcs (1.1.2-0slink1) stable; urgency=low ++ ++ * Final egcs-1.1.2 release; compiled with glibc-2.0 for slink on i386. ++ * debian/control.in: gcc provides egcc, when FIRST_PRIMARY defined. ++ * Fixes #30767, #32278, #34252, #34352. ++ * Don't build the libstdc++.so.2.9 library on architectures, which have ++ switched to glibc-2.1. ++ ++ -- Matthias Klose Wed, 17 Mar 1999 12:55:59 +0100 ++ ++egcs (1.1.1.63-2.2) unstable; urgency=low ++ ++ * Non-maintainer upload. ++ * Incorporate patch from Joel Klecker to fix snapshot packages ++ by moving/removing the application of libapi. ++ * Disable the new libstdc++-dev-config and the postinst message in ++ glibc 2.1 versions. ++ ++ -- Daniel Jacobowitz Mon, 12 Mar 1999 14:16:02 -0500 ++ ++egcs (1.1.1.63-2.1) unstable; urgency=low ++ ++ * Non-maintainer upload. ++ * Compile with glibc 2.1 release version. ++ * New upstream version egcs-1.1.2 pre3. ++ * Miscellaneous rules updates (see changelog.snapshot). ++ * New set of powerpc-related patches from Franz Sirl, ++ . ++ * Disable libgcc.dpatch (new solution implemented upstream). Remove it. ++ * Also pass $target to config.if. ++ * Enable Dwarf2 EH for powerpc. Bump the C++ binary version. No ++ loss in -backwards- compatibility as far as I can tell, so add a ++ compatibility symlink, and add to shlibs file. ++ * Add --no-backup-if-mismatch to the debian/patches/*.dpatch files, ++ to prevent bogus .orig's in diffs. ++ * Merged with (unreleased) 1.1.1.62-1 and 1.1.1.63-{1,2} packages from ++ Matthias Klose . ++ * Stop adding a backwards compatibility link for egcs-nof on powerpc. ++ To my knowledge, nothing uses it. Do add the libstdc++ API change ++ link, though. ++ ++ -- Daniel Jacobowitz Mon, 8 Mar 1999 14:24:01 -0500 ++ ++egcs (1.1.1.63-2) stable; urgency=low ++ ++ * Provide a libstdc++ with a shared object name, which is compatible ++ to other distributions. Documented the change in README.Debian, ++ the libstdc++-2.9.postinst and the libstdc++-dev-config script. ++ ++ -- Matthias Klose Fri, 12 Mar 1999 00:36:20 +0100 ++ ++egcs (1.1.1.63-1.1) unstable; urgency=low ++ ++ * Non-Maintainer release. ++ * Build against glibc 2.1. ++ * Make egcs the primary compiler on i386. ++ * Also confilct with egcc (<< FIRST_PRIMARY) ++ if FIRST_PRIMARY is defined. ++ (this tells dpkg that gcc completely obsoletes egcc) ++ * Remove hjl-12 patch again, HJL says it should not be ++ necessary with egcs 1.1.2. ++ (as per forwarded reply from Christopher Chimelis) ++ * Apply libapi patch in clean target before regenerating debian/control ++ and remove the patch afterward. Otherwise, the libstdc++ and libg++ ++ package names are generated wrong on a glibc 2.1 system. ++ ++ -- Joel Klecker Tue, 9 Mar 1999 15:31:02 -0800 ++ ++egcs (1.1.1.63-1) unstable; urgency=low ++ ++ * New upstream version egcs-1.1.1-pre3. ++ * Applied improved libstdc++ warning patch from Rob Browning. ++ ++ -- Matthias Klose Tue, 9 Mar 1999 16:14:07 +0100 ++ ++egcs (1.1.1.62-1) unstable; urgency=low ++ ++ * New upstream version egcs-1.1.1-pre2. ++ * New upstream version libg++-2.8.1.3. ++ * Readded ARM support ++ * Readded hjl-12 per request from Christopher C Chimelis ++ ++ ++ -- Matthias Klose Fri, 26 Feb 1999 09:54:01 +0100 ++ ++egcs-snapshot (19990224-0.1) experimental; urgency=low ++ ++ * New snapshot. ++ * Add the ability to disable CPPLIB by setting CPPLIB=no in ++ the environment. ++ * Disable gpc for powerpc; I spent a long time getting it to ++ make correctly, and then it goes and ICEs. ++ ++ -- Daniel Jacobowitz Tue, 24 Feb 1999 23:34:12 -0500 ++ ++egcs (1.1.1.61-1) unstable; urgency=low ++ ++ * New upstream version egcs-1.1.1-pre1. ++ * debian/control.in: Applied patch from bug report #32987. ++ * Split up H.J.Lu's hjl-19990115-linux patch into several small ++ chunks: libapi, arm-mips, libgcc, hjl-other. The changelog.Linux ++ aren't included in the separate chunks. Please refer to the ++ unmodified hjl-19990115-linux patch file in the egcs source pkg. ++ * Apply warning patch to fix the annoying spew you get if you try to ++ use ropes or deques with -Wall (which makes -Wall mostly useless for ++ spotting errors in your own code). Fixes #32996. ++ * debian/rules: Unapply patches in the exact reverse order they were ++ applied. ++ ++ -- Matthias Klose Sat, 20 Feb 1999 22:06:21 +0100 ++ ++egcs (1.1.1-5) frozen unstable; urgency=medium ++ ++ * Move libgcc.map file to g++ package, where gcc is the secondary ++ compiler (fixes #32329, #32605, #32631). ++ * Prepare to rename libstdc++2.9 package for glibc-2.1 (fixes #32148). ++ * Apply NMU patch for arm architecure (fixes #32367). ++ * Don't apply hjl-12 patch for alpha architectures (requested by the ++ alpha developers, Christopher C Chimelis ). ++ * Call makeinfo with --no-validate to fix obscure build failure on alpha. ++ * Build gpc info files in doc subdirectory. ++ * Remove c++filt diversion (C++ name demangling patch is now in binutils, ++ fixes #30820 and #32502). ++ ++ -- Matthias Klose Sun, 31 Jan 1999 23:19:35 +0100 ++ ++egcs (1.1.1-4.1) unstable; urgency=low ++ ++ * Non-maintainer upload. ++ * Pascal doesn't build for ARM. ++ ++ -- Jim Pick Sun, 24 Jan 1999 16:13:34 -0800 ++ ++egcs (1.1.1-4) frozen unstable; urgency=high ++ ++ * Don't strip compiler libraries libgcc.a libobjc.a libg2c.a libgpc.a ++ * Move Pascal examples to the right place (fixes #32149, part 1). ++ * Add dependencies for switching from secondary to primary compiler, ++ if FIRST_PRIMARY is defined (fixes #32149, part 2). ++ ++ -- Matthias Klose Wed, 20 Jan 1999 16:51:30 +0100 ++ ++egcs (1.1.1-3) frozen unstable; urgency=low ++ ++ * Updated with the H.J.Lu's hjl-19990115-linux patch (fixes the ++ __register_frame_info problems, mips and arm port included). ++ * Update gpc to 19990118 (beta release candidate). ++ * Strip static libraries (fixes #31247 and #31248). ++ * Changed maintainer address. ++ ++ -- Matthias Klose Tue, 19 Jan 1999 16:34:28 +0100 ++ ++egcs (1.1.1-2) frozen unstable; urgency=low ++ ++ * Moved egcs-docs, g77-doc and gpc-doc packages to doc section. ++ * Downgraded Recommends: egcs-docs to Suggests: egcs-docs dependencies ++ (for archs, where egcs is the primary compiler). ++ * Add 'Suggests: stl-manual' dependency to libstdc++2.9-dev. ++ * Applied one more alpha patch: ++ ftp://ftp.yggdrasil.com/private/hjl/egcs/1.1.1/egcs-1.1.1.diff.12.gz ++ * Applied PPro optimization patch. ++ * Apply emit-rtl-nan patch. ++ * Upgraded to libg++-2.8.1.2a-19981218.tar.gz. ++ * Upgraded to gpc-19981218. ++ * Make symlinks for gobjc, libstdc++2.9-dev and libg++2.8.2 doc directories. ++ ++ -- Matthias Klose Wed, 23 Dec 1998 18:04:53 +0200 ++ ++egcs-snapshot (19981211-1) experimental; urgency=low ++ ++ * New snapshot. ++ * Adapted gpc to egcs-2.92.x (BOOT_CFLAGS must include -g). ++ * New libg++-2.8.1.2a-19981209.tar.gz. ++ * debian/rules: new target mail-summary. ++ ++ -- Matthias Klose Fri, 11 Dec 1998 18:14:53 +0200 ++ ++egcs (1.1.1-1) frozen unstable; urgency=high ++ ++ * Final egcs-1.1.1 release. ++ * The last version depended on a versioned libc6 again. ++ * Add lost dependency for libg++ on libstdc++. ++ * Added debian-libstdc++.sh script to generate a libstdc++ on a Linux ++ system, which doesn't use the libapi patch. ++ ++ -- Matthias Klose Wed, 2 Dec 1998 12:06:15 +0200 ++ ++egcs (1.1.0.91.59-2) frozen unstable; urgency=high ++ ++ * Fixes bugs from libc6 2.0.7u-6 upload without dependency line ++ Conflicts: libstdc++-2.9 (<< 2.91.59): #30019, #30066, #30078. ++ * debian/copyright: Updated URLs. ++ * gcc --help now mentions /usr/doc/debian/bug-reporting.txt. ++ * Install README.Debian and include information about patches applied. ++ * Depend on unversioned libc6 on i386, such that libstdc++2.9 can be used ++ on a hamm system. ++ ++ -- Matthias Klose Fri, 27 Nov 1998 18:32:02 +0200 ++ ++egcs (1.1.0.91.59-1) frozen unstable; urgency=low ++ ++ * This is egcs-1.1.1 prerelease #3, compiled with libc6 2.0.7u-6. ++ * Added dependency for libstdc++2.9-dev on g++ (fixes #29631). ++ * Package g77 provides f77 (fixes #29817). ++ * Already fixed in earlier egcs-1.1 releases: #2493, #25271, #10620. ++ * Bugs reported for gcc-2.7.x and fixed in the egcs version of gcc: ++ #2493, #4430, #4954, #5367, #6047, #10612, #12375, #20606, #24788, #26100. ++ * Upgraded libg++ to libg++-2.8.1.2a-19981114. ++ * Upgraded gpc to gpc-19981124. ++ * Close #25869: egcs and splay maintainers are unable to reproduce this ++ bug with the current Debian packages. Bug submitter doesn't respond. ++ * Close #25407: egcs maintainer cannot reproduce this bug with the current ++ Debian compiler. Bug submitter doesn't respond. ++ * Use debhelper 1.2.7 for building. ++ * Replace the libstdc++ and libg++ compatibility links with fake libraries. ++ ++ -- Matthias Klose Wed, 25 Nov 1998 12:11:42 +0200 ++ ++egcs (1.1.0.91.58-5) frozen unstable; urgency=low ++ ++ * Applied patch to build on the m68060. ++ * Added c++filt and c++filt.1 to the g++ package. ++ * Updated gpc to gpc-981105; fixes some regressions compared to egcs-1.1. ++ * Separated out g77 and gpc doumentation to new packages g77-doc and gpc-doc. ++ * Closed bugs (#22158). ++ * Close #20248; on platforms where gas and gld are the default versions, ++ it makes no difference to configure with or without enable-ld. ++ * Close #24349. The bugs are in the amulet source. ++ See http://www.cs.cmu.edu/afs/cs/project/amulet/www/FAQ.html#GCC28x ++ * Rename gcc.info* files to egcs.info* (fixes #24088). ++ * Documented known bugs (and workarounds) in BUGS.Debian. ++ * Fixed demangling of C++ names (fixes #28787). ++ * Applied patch form aspell to libstdc++/stl/stl_rope.h. ++ * Updated from cvs 16 Nov 1998. ++ ++ -- Matthias Klose Tue, 17 Nov 1998 09:41:24 +0200 ++ ++egcs-snapshot (19981115-2) experimental; urgency=low ++ ++ * New snapshot. Disabled gpc. ++ * New packages g77-doc and gpc-doc. ++ ++ -- Matthias Klose Mon, 16 Nov 1998 12:48:09 +0200 ++ ++egcs (1.1.0.91.58-3) frozen unstable; urgency=low ++ ++ * Previous version installed in potato, not slink. ++ * Updated from cvs 3 Nov 1998. ++ ++ -- Matthias Klose Tue, 3 Nov 1998 18:34:44 +0200 ++ ++egcs (1.1.0.91.58-2) unstable; urgency=low ++ ++ * [debian/rules]: added targets to apply and unapply patches. ++ * [debian/README.patches]: New file. ++ * Moved patches dir to debian/patches. debian/rules has to select ++ the patches to apply. ++ * Manual pages for genclass and gcov (fixes #5995, #20950, #22196). ++ * Apply egcs-1.1-reload patch needed for powerpc architecture. ++ * Fixed bugs (#17768, #20252, #25508, #27788). ++ * Reapplied alpha patch (#20875). ++ * Fixes first part of #22513, extended README.Debian (combining C & C++). ++ * Already fixed in earlier egcs-1.1 releases: #17963, #20252, #20524, ++ #20640, #22450, #24244, #24288, #28520. ++ ++ -- Matthias Klose Fri, 30 Oct 1998 13:41:45 +0200 ++ ++egcs (1.1.0.91.58-1) experimental; urgency=low ++ ++ * New upstream version. That's the egcs-1.1.1 prerelease plus patches from ++ the cvs archive upto 29 Oct 1998. ++ * Merged files from the egcs and snapshot packages. ++ * Updated libg++ to libg++-2.8.1.2 (although the Debian package name is still ++ 2.8.2). ++ * Moved patches dir to patches-1.1. ++ * Dan Jacobowitz: ++ * This is a snapshot from the egcs_1_1_branch, with ++ libapi, reload, builtin-apply, and egcs patches from ++ the debian/patches/ dir applied, along with the egcs-gpc-patches ++ and gcc/p/diffs/gcc-egcs-2.91.55.diff. ++ * Conditionalize gcj and chill (since they aren't in this branch). ++ * Fake snapshots drop the -snap-main. ++ ++ -- Matthias Klose Thu, 29 Oct 1998 15:15:19 +0200 ++ ++egcs-snapshot (1.1-19981019-5.1) experimental; urgency=low ++ ++ * This is a snapshot from the egcs_1_1_branch, with ++ libapi, reload, builtin-apply, and egcs patches from ++ the debian/patches/ dir applied, along with the egcs-gpc-patches ++ and gcc/p/diffs/gcc-egcs-2.91.55.diff. ++ * Conditionalize gcj and chill (since they aren't in this ++ branch). ++ * Fake snapshots drop the -snap-main. ++ ++ -- Daniel Jacobowitz Mon, 19 Oct 1998 22:19:23 -0400 ++ ++egcs (1.1b-5) unstable; urgency=low ++ ++ * [debian/control.in] Fixed typo in dependencies (#28076, #28087, #28092). ++ ++ -- J.H.M. Dassen (Ray) Sun, 18 Oct 1998 22:56:51 +0200 ++ ++egcs (1.1b-4) unstable; urgency=low ++ ++ * Strengthened g++ dependency on libstdc++_LIB_SO_-dev from ++ `Recommends' to `Depends'. ++ * Updated README.Debian for egcs-1.1. ++ * Updated TODO. ++ ++ -- Matthias Klose Thu, 15 Oct 1998 12:38:47 +0200 ++ ++egcs-snapshot (19981005-0.1) experimental; urgency=low ++ ++ * Make libstdc++2.9-snap-main and libg++-snap-main provide ++ their mainstream equivalents and put those equivalents into ++ their shlibs file. ++ * Package gcj, the GNU Compiler for Java(TM). ++ ++ * New upstream version of egcs (The -regcs_latest_snapshot branch). ++ * Build without libg++ entirely. ++ * Leave out gpc for now - the internals are sufficiently different ++ that it does not trivially compile. ++ * Include an experimental reload patch for powerpc - this is, ++ in the words of its author, not release quality, but it allows ++ powerpc linuxthreads to function. ++ * On architectures where we are the primary compiler, let snapshots ++ build with --prefix=/usr and conflict with the stable versions. ++ * Package chill, a front end for the language Chill. ++ * Other applied patches from debian/patches/: egcs-patches and ++ builtin-apply-patch. ++ * Use reload.c revision 1.43 to avoid a nasty bug. ++ ++ -- Daniel Jacobowitz Wed, 7 Oct 1998 00:27:42 -0400 ++ ++egcs (1.1b-3.1) unstable; urgency=low ++ ++ * NMU to fix the egcc -> gcc link once and for all ++ ++ -- Christopher C. Chimelis Tue, 22 Sep 1998 16:11:19 -0500 ++ ++egcs (1.1b-3) unstable; urgency=low ++ ++ * Oops. The egcc -> gcc link on archs where gcc is egcc was broken. ++ Thanks to Chris Chimelis for pointing this out. ++ ++ -- J.H.M. Dassen (Ray) Mon, 21 Sep 1998 20:51:35 +0200 ++ ++egcs (1.1b-2) unstable; urgency=low ++ ++ * New upstream spellfix release (Debian revision is 2 as the internal ++ version numbers didn't change). ++ * Added egcc -> gcc symlink on architectures where egcc is the primary C ++ compiler. Thus, maintainers of packages that require egcc, can now ++ simply use "egcc" without conditionals. ++ * Porters: we hope/plan to make egcs's gcc the default C compiler on all ++ platforms once the 2.2.x kernels are available. Please test this version ++ thoroughly, and give us a GO / NO GO for your architecture. ++ * Some symbols cpp used to predefine were removed upstream in order to clean ++ up the cpp namespace, but imake requires them for determining the proper ++ settings for LinuxMachineDefines (see /usr/X11R6/lib/X11/{Imake,linux}.cf), ++ thus we put them back. Thanks to Paul Slootman for reporting his imake ++ problems on Alpha. ++ * [gcc/config/alpha/linux.h] Added -D__alpha to CPP_PREDEFINES . ++ Thanks to Chris Chimelis for the alpha-only 1.1a-1.1 NMU which fixed ++ this already. ++ * [gcc/config/i386/linux.h] Added -D__i386__ to CPP_PREDEFINES . ++ * [gcc/config/sparc/linux.h] Has -Dsparc in CPP_PREDEFINES . ++ * [gcc/config/sparc/linux64.h] Has -Dsparc in CPP_PREDEFINES . ++ * [gcc/config/m68k/linux.h] Has -Dmc68000 in CPP_PREDEFINES . ++ * [gcc/config/rs6000/linux.h] Has -Dpowerpc in CPP_PREDEFINES . ++ * [gcc/config/arm/linux.h] Has -Darm in CPP_PREDEFINES . ++ * [gcc/config/i386/gnu.h] Has -Di386 in CPP_PREDEFINES . ++ * Small fixes and updates in README. ++ * Changes affecting the source package only: ++ * [gcc/Makefile.in, gcc/cp/Make-lang.in, gcc/p/Make-lang.in] ++ Daniel Jacobowitz: Ugly hacks of various kinds to make cplib2.txt get ++ properly regenerated with multilib. ++ * [debian/TODO] Created. ++ * [INSTALL/index.html] Fixed broken link. ++ ++ -- J.H.M. Dassen (Ray) Sun, 20 Sep 1998 14:05:15 +0200 ++ ++egcs (1.1a-1) unstable; urgency=low ++ ++ * New upstream release. ++ * Added README.libstdc++ . ++ * Updated Standards-Version. ++ * Matthias: ++ * Downgraded gobjc dependency on egcs-docs from Recommends: to Suggests: . ++ * [libg++/Makefile.in] Patched not to rely on a `-f' flag of `ln'. ++ ++ -- J.H.M. Dassen (Ray) Wed, 2 Sep 1998 19:57:43 +0200 ++ ++egcs (1.1-1) unstable; urgency=low ++ ++ * egcs-1.1 prerelease (from the last Debian package only the version file ++ changed). ++ * "Final" gpc Beta 2.1 gpc-19980830. ++ * Included libg++ and gpc in the .orig tarball. so that diffs are getting ++ smaller. ++ * debian/control.in: Changed maintainer address to galenh-egcs@debian.org. ++ * debian/copyright: Updated URLs. ++ ++ -- Matthias Klose Mon, 31 Aug 1998 12:43:13 +0200 ++ ++egcs (1.0.99.56-0.1) unstable; urgency=low ++ ++ * New upstream snapshot 19980830 from CVS (called egcs-1.1 19980830). ++ * New libg++ snapshot 980828. ++ * Put all patches patches subdirectory; see patches/README in the source. ++ * debian/control.in: readded for libg++2.8.2-dev: ++ Replaces: libstdc++2.8-dev (<= 2.90.29-0.5) ++ * Renamed libg++2.9 package to libg++2.8.2. ++ * gcc/p/gpc-decl.c: Fix from Peter@Gerwinski.de; fixes optimization errors. ++ * patches/gpc-patch2: Fix from Peter@Gerwinski.de; fixes alpha errors. ++ * debian/rules: New configuration flag for building with and without ++ libstdc++api patch; untested without ... ++ ++ -- Matthias Klose Sun, 30 Aug 1998 12:04:22 +0200 ++ ++egcs (1.0.99-0.6) unstable; urgency=low ++ ++ * PowerPC fixes. ++ * On powerpc, generate the -msoft-float libs and package them ++ as egcs-nof. ++ * Fix signed char error in gpc. ++ * Create a libg++.so.2.9 compatibility symlink. ++ ++ -- Daniel Jacobowitz Tue, 25 Aug 1998 11:44:09 -0400 ++ ++egcs (1.0.99-0.5) unstable; urgency=low ++ ++ * New upstream snapshot 19980824. ++ * New gpc snapshot gpc-980822; reenabled gpc for alpha. ++ ++ -- Matthias Klose Tue, 25 Aug 1998 01:21:08 +0200 ++ ++egcs (1.0.99-0.4) unstable; urgency=low ++ ++ * New upstream snapshot 19980819. Should build glibc 2.0.9x on PPC. ++ ++ -- Matthias Klose Wed, 19 Aug 1998 14:18:07 +0200 ++ ++egcs (1.0.99-0.3) unstable; urgency=low ++ ++ * New upstream snapshot 19980816. ++ * debian/rules: build correct debian/control and debian/*.shlibs ++ * Enabled Haifa scheduler for ix86. ++ ++ -- Matthias Klose Mon, 17 Aug 1998 16:29:35 +0200 ++ ++egcs (1.0.99-0.2) unstable; urgency=low ++ ++ * New upstream snapshot: egcs-19980812, minor changes only. ++ * Fixes for building on `primary' targets. ++ * Disabled gpc on `alpha' architecture. ++ * Uses debhelper 1.1.6 ++ * debian/control.in: Replace older snapshot versions in favor of newer ++ normal versions. ++ * debian/rules: Fixes building of binary-arch target only. ++ ++ -- Matthias Klose Thu, 13 Aug 1998 11:59:41 +0200 ++ ++egcs (1.0.99-0.1) unstable; urgency=low ++ ++ * New upstream version: pre egcs-1.1 version. ++ * Many changes ... for details see debian/changelog.snapshot in the ++ source package. ++ * New packages libstdc++2.9 and libstdc++2.9-dev. ++ * New libg++ snapshot 980731: new packages libg++2.9 and libg++2.9-dev. ++ * New gpc snapshot gpc-980729: new package gpc. ++ * Uses debhelper 1.1 ++ ++ -- Matthias Klose Mon, 10 Aug 1998 13:00:27 +0200 ++ ++egcs-snapshot (19980803-4) experimental; urgency=low ++ ++ * rebuilt debian/control. ++ ++ -- Matthias Klose Wed, 5 Aug 1998 08:51:47 +0200 ++ ++egcs-snapshot (19980803-3) experimental; urgency=low ++ ++ * debian/rules: fix installation locations of NEWS, header and ++ `undocumented' files. ++ * man pages aren't compressed for the snapshot package. ++ ++ -- Matthias Klose Tue, 4 Aug 1998 17:34:31 +0200 ++ ++egcs-snapshot (19980803-2) experimental; urgency=low ++ ++ * debian/rules: Uses debhelper. Old in debian/rules.old. ++ renamed postinst, prerm files for use with debhelper. ++ * debian/{libg++2.9,libstdc++2.9}/postinst: call ldconfig only, ++ when called for configure. ++ * egcs-docs is architecture independent package. ++ * new libg++ snapshot 980731. ++ * installed libstdc++ api patch (still buggy). ++ ++ -- Matthias Klose Mon, 3 Aug 1998 13:20:59 +0200 ++ ++egcs-snapshot (19980729-1) experimental; urgency=low ++ ++ * New snapshot version 19980729 from CVS archive. ++ * New gpc snapshot gpc-980729. ++ * Let gcc/configure decide about using the Haifa scheduler. ++ * Remove -DDEBIAN. That was needed for the security improvements with ++ regard to the /tmp problem. egcs-1.1 chooses another approach. ++ * Save test-protocol and extract gpc errors to gpc-test-summary. ++ * Tighten binutils dependency to 2.9.1. ++ * debian/rules: new build-info target ++ * debian/{control.in,rules}: _SO_ and BINUTILSV substitution. ++ * debian/rules: add dependency for debian/control. ++ * debian/rules: remove bin/c++filt ++ * TODO: next version will use debhelper; the unorganized moving of ++ files becomes unmanageable ... ++ * TODO: g++ headers in stdc++ package? check! ++ ++ -- Matthias Klose Thu, 30 Jul 1998 12:10:20 +0200 ++ ++egcs-snapshot (19980721-1) experimental; urgency=low ++ ++ * Unreleased. Infinite loops in executables made by gpc. ++ ++ -- Matthias Klose Wed, 22 Jul 1998 18:07:20 +0200 ++ ++egcs-snapshot (19980715-1) experimental; urgency=low ++ ++ * New snapshot version from CVS archive. ++ * New gpc snapshot gpc-980715. ++ * New libg++ version libg++-2.8.2-980708. Changed versioning ++ schema for library. The major versions of libc, libstdc++ and the ++ g++ interface are coded in the library name. Use this new schema, ++ but provide a symlink to our previous schema, since the library ++ seems to be binary compatible. ++ * [debian/rules]: Fixed bug in build target, when bootstrap returns ++ with an error ++ ++ -- Matthias Klose Wed, 15 Jul 1998 10:55:05 +0200 ++ ++egcs-snapshot (19980701-1) experimental; urgency=low ++ ++ * New snapshot version from CVS archive. ++ Two check programs in libg++ had to be manually killed to finish the ++ testsuite (tBag and tSet). ++ * New gpc snapshot gpc-980629. ++ * Incorporated debian/rules changes from egcs-1.0.3a-0.5 (but don't remove ++ gcc/cp/parse.c gcc/c-parse.c gcc/c-parse.y gcc/objc/objc-parse.c ++ gcc/objc/objc-parse.y, since these files are part of the release). ++ * Disable the -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP -DDEBIAN flags for the ++ snapshot. egcs-1.1 will have another solution. ++ * Don't bootstrap the snapshot with -fno-force-mem. Internal compiler ++ error :-( ++ * libf2c.a and f2c.h have changed names to libg2c.a and g2c.h and ++ have moved again into the gcc-lib dir. They are installed under ++ libg2c.a and g2c.h. Is it necessary to provide links f2c -> g2c ? ++ * debian/rules: reflect change of build dir of libraries. ++ ++ -- Matthias Klose Wed, 2 Jul 1998 13:15:28 +0200 ++ ++egcs-snapshot (19980628-0.1) experimental; urgency=low ++ ++ * New upstream snapshot version. ++ * Non-maintainer upload; Matthias appears to be absent currently. ++ * Updated shlibs. ++ * Merged changes from regular egcs: ++ * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or ++ newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) ++ need this. ++ * [debian/rules] Clean up some generated files outside builddir, ++ so the .diff.gz becomes smaller. ++ * [debian/rules] Partial sync/update with the one for the regular egcs ++ version. ++ * [debian/rules] Make gcc/p/configure executable. ++ ++ -- J.H.M. Dassen (Ray) Wed, 1 Jul 1998 07:12:15 +0200 ++ ++egcs (1.0.3a-0.6) frozen unstable; urgency=low ++ ++ * Some libg++ development files were in libstdc++2.8-dev rather than ++ libg++2.8-dev. Fixed this and dealt with upgrading from the earlier ++ versions (fixes #23908; this bug is not marked release-critical, but ++ is annoying and can be quite confusing for users. Therefore, I think ++ this fix should go in 2.0). ++ ++ -- J.H.M. Dassen (Ray) Tue, 30 Jun 1998 11:10:14 +0200 ++ ++egcs (1.0.3a-0.5) frozen unstable; urgency=low ++ ++ * Fixed location of .hP files (Fixes #23448). ++ * [debian/rules] simplified extraction of the files for libg++2.8-dev. ++ ++ -- J.H.M. Dassen (Ray) Wed, 17 Jun 1998 09:33:41 +0200 ++ ++egcs (1.0.3a-0.4) frozen unstable; urgency=low ++ ++ * [gcc/gcc.c] There is one call to choose_temp_base for determining the ++ tempdir to be used only; #ifdef HAVE_MKSTEMP delete the tempfile created ++ as a side effect. (fixes #23123 for egcs). ++ * [gcc/collect2.c] There's still a vulnerability here; I don't see how ++ I can fix it without leaving behind tempfiles though. ++ * [debian/control] Tightened dependency on binutils to 2.8.1.0.23 or ++ newer, as according to INSTALL/SPECIFIC PowerPC (and possibly Sparc) ++ need this. ++ * [debian/rules] Clean up some generated files outside builddir, so the ++ .diff.gz becomes smaller. ++ ++ -- J.H.M. Dassen (Ray) Sat, 13 Jun 1998 09:06:52 +0200 ++ ++egcs-snapshot (19980608-1) experimental; urgency=low ++ ++ * New snapshot version. ++ ++ -- Matthias Klose Tue, 9 Jun 1998 14:07:44 +0200 ++ ++egcs (1.0.3a-0.3) frozen unstable; urgency=high (security fixes) ++ ++ * [gcc/toplev.c] set flag_force_mem to 1 at optimisation level 3 or higher. ++ This works around #17768 which is considered release-critical. ++ * Changes by Matthias: ++ * [debian/README] Documentation of the compiler situation for Objective C. ++ * [debian/rules, debian/control.*] Generate control file from a master ++ file. ++ * [debian/rules] Updates for Pascal and Fortran parts; brings it in sync ++ with the one for the egcs snapshots. ++ * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. ++ * Really compile -DMKTEMP_EACH_FILE -DHAVE_MKSTEMP (really fixes #19453 ++ for egcs). ++ * [gcc/gcc.c] A couple of temp files weren't marked for deletion. ++ ++ -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:56:22 +0200 ++ ++egcs (1.0.3a-0.2) frozen unstable; urgency=high (security fixes) ++ ++ * Security improvements with regard to the /tmp problem ++ (gcc opens predictably named files in TMPDIR which can be abused via ++ symlinks) (Fixes #19453 for egcs). ++ * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly ++ every time; affects gcc/gcc.c . ++ * [gcc/choose-temp.c, libiberty/choose-temp.c]: use mktemp(3) if compiled ++ -DUSE_MKSTEMP . ++ * Security improvements: don't use the result of choose_temp_base in a ++ predictable fashion. ++ [gcc/gcc.c]: ++ * @c, @objective-c: use random name rather then tempbasename.i for ++ intermediate preprocessor output (%g.i -> %d%u). ++ * @c, @objective-c: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @c, @objective-c, @assembler-with-cpp: use previous random name ++ (cc1|cpp output) rather then tempbasename.s for intermediate assembler ++ input (%g.s -> %U) ++ [gcc/f/lang-specs.h]: ++ * @f77-cpp-input: use random name rather then tempbasename.i for ++ intermediate cpp output (%g.i -> %d%u). ++ * @f77-cpp-input: use previous random name (cpp output) rather than ++ tempbasename.i for f771 input (%g.i -> %U). ++ * @f77-cpp-input: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @f77-cpp-input: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @ratfor: use random name rather then tempbasename.i for ++ intermediate ratfor output (%g.f -> %d%u). ++ * @ratfor: use previous random name (ratfor output) rather than ++ tempbasename.i for f771 input (%g.f -> %U). ++ * @ratfor: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @ratfor: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @ratfor: use previous random name ++ (ratfor output) rather then tempbasename.s for intermediate assembler ++ input (%g.s -> %U). ++ * @f77: use random name rather then tempbasename.s for ++ intermediate ratfor output (%g.f -> %d%u). ++ * @ratfor: use previous random name (ratfor output) rather than ++ tempbasename.i for f771 input (%g.f -> %U). ++ * @ratfor: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @ratfor: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @ratfor: use previous random name ++ (ratfor output) rather then tempbasename.s for intermediate assembler ++ input (%g.s -> %U). ++ * @f77: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @f77: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @ratfor: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %U). ++ * Run the testsuite (this requires the dejagnu package in experimental; ++ unfortunately, it is difficult to distinguish this version from the one ++ in frozen). ++ if possible, and log the results in warn_summary and bootstrap-summary. ++ * [gcc/choose-temp.c, libiberty/choose-temp.c]: s|returh|return| in ++ comment. ++ * Added notes on the Debian compiler setup [debian/README] to the ++ development packages. ++ * Matthias: ++ * [libg++/etc/lf/Makefile.in] Replaced "-ltermcap" by "-lncurses". ++ * [debian/rules] Updated so it can be used for both egcs releases and ++ snapshots easily; added support for the GNU Pascal Compiler gpc. ++ * [contrib/test_summary, contrib/warn_summary] Added from CVS. ++ * Run compiler checks and include results in /usr/doc/. ++ * Updates to the README. ++ * [debian/rules] Use assignments to speed up startup. ++ * [debian/rules] Show the important variables at the start of the build ++ process. ++ * [debian/control.secondary] Added a dependency of gobjc on egcc on ++ architectures where egcs provides the secondary compiler, as ++ /usr/bin/egcc is the compiler driver for gobjc. (Fixes #22829). ++ * [debian/control.*] Bumped Standards-Version; used shorter version ++ numbers in the dependency relationships (esthetic difference only); ++ fixed typo. ++ ++ -- J.H.M. Dassen (Ray) Tue, 26 May 1998 21:47:41 +0200 ++ ++egcs-snapshot (19980525-1) experimental; urgency=low ++ ++ * New snapshot version. ++ ++ -- Matthias Klose Tue, 26 May 1998 18:04:06 +0200 ++ ++egcs-snapshot (19980517-1) experimental; urgency=low ++ ++ * "Initial" release of the egcs-snapshot package; many debian/* files ++ derived from the egcs-1.0.3a-0.1 package (maintained by Galen Hazelwood ++ , NMU's by J.H.M. Dassen (Ray) ) ++ * The egcs-snapshot packages can coexist with the packages of the ++ egcs release. Package names have a '-ss' appended. ++ * All packages are installed in a separate tree (/usr/lib/egcs-ss following ++ the FHSS). ++ * Made all snapshot packages extra, all snapshot packages conflict ++ with correspondent egcs packages, which are newer than the snapshot. ++ * Included libg++-2.8.1-980505. ++ * Included GNU Pascal (gpc-980511). ++ * Haifa scheduler enabled for all snapshot packages. ++ * Run compiler checks and include results in /usr/doc/. ++ * Further information in /usr/doc//README.snapshot. ++ ++ -- Matthias Klose Wed, 20 May 1998 11:14:06 +0200 ++ ++egcs (1.0.3a-0.1) frozen unstable; urgency=low ++ ++ * New upstream release egcs-2.90.29 980515 (egcs-1.0.3 release) ++ (we were using 1.0.3-prerelease). This includes the Haifa patches ++ we had since 1.0.3-0.2 and the gcc/objc/thr-posix.c patch we had ++ since 1.0.3-0.1; the differences with 1.0.3-prerelease + patches ++ we had is negligable. ++ * iostream info documentation was in the wrong package (libg++2.8-dev). ++ Now it's in libstdc++2.8-dev. (Thanks to Jens Rosenboom for bringing ++ this to my attention). As 1.0.3-0.3 didn't make it out of Incoming, ++ I'm not adding "Replaces:" for this; folks who had 1.0.3-0.3 installed ++ already know enough to use --force-overwrite. ++ * [gcc/objc/objc-act.c] Applied patch Matthias Klose supplied me with that ++ demangles Objective C method names in gcc error messages. ++ * Explicitly disable Haifa scheduling on Alpha, to make it easier to use ++ this package's diff with egcs snapshots, which may turn on Haifa ++ scheduling even though it is still unstable. (Requested by Chris Chimelis) ++ * Don't run "configure" again if builddir already exists (makes it faster ++ to restart builds in case one is hacking internals). Requested by ++ Johnnie Ingram. ++ * [gcc/gbl-ctors.h] Don't use extern declaration for atexit on glibc 2.1 ++ and higher (the prototype has probably changed; having the declaration ++ broke Sparc compiles). ++ * [debian/rules] Determine all version number automatically (from the ++ version string in gcc/version.c). ++ * [debian/copyright] Updated FTP locations; added text about libg++ (fixes ++ #22465). ++ ++ -- J.H.M. Dassen (Ray) Sat, 16 May 1998 17:41:44 +0200 ++ ++egcs (1.0.3-0.3) frozen unstable; urgency=low ++ ++ * Made an "egcs-doc" package containing documentation for egcs (e)gcc, ++ g++, gobjc, so that administrators can choose whether to have this ++ documenation or the documentation that comes with the GNU gcc package. ++ Dependency on this is Recommends: on architectures where egcs provides ++ the primary C compiler; Suggests: on the others (where GNU gcc is still ++ the primary C compiler). ++ * Use the g++ FAQ from gcc/cp rather than libg++, as that version is more ++ up to date. ++ * Added iostream info documentation to libstdc++2.8-dev. ++ ++ -- J.H.M. Dassen (Ray) Wed, 13 May 1998 08:46:10 +0200 ++ ++egcs (1.0.3-0.2) frozen unstable; urgency=low ++ ++ * Added libg++ that works with egcs, found at ++ ftp://ftp.yggdrasil.com/private/hjl/libg++-2.8.1-980505.tar.gz ++ (fixes #20587 (Severity: important)). ++ * The "libg++" and "libg++-dev" virtual packages now refer to the GNU ++ extensions. ++ * Added the g++ FAQ that comes with libg++ to the g++ package. ++ * libg++/Makefile.in: added $(srcdir) to rule for g++FAQ.info so that it ++ builds OK in builddir. ++ * Added -D__i386__ to the cpp predefines on intel. ++ * Patches Matthias supplied me with: ++ * Further 1.0.3 prerelease patches from CVS. ++ This includes patches to the Haifa scheduler. Alpha porters, please ++ check if this makes the Haifa scheduler OK again. ++ * Objective C patches from CVS. ++ ++ -- J.H.M. Dassen (Ray) Fri, 8 May 1998 14:43:20 +0200 ++ ++egcs (1.0.3-0.1) frozen unstable; urgency=low (high for maintainers that use objc) ++ ++ * bug fixes only in new upstream version ++ * Applied patches from egcs CVS archive (egcs_1_03_prerelease) ++ (see gcc/ChangeLog in the egcs source package). ++ * libstdc++2.8-dev no longer Provides: libg++-dev (fixes #21153). ++ * libstdc++2.8-dev now Conflicts: libg++27-dev (bo), ++ libg++272-dev (hamm) [regular packages] rather than ++ Conflicts: libg++-dev [virtual package] to prepare the way for "libg++" ++ to be used as a virtual package for a new libg++ package (i.e. an up to ++ date one, which not longer contains libstdc++, but only the GNU ++ extensions) that is compatible with the egcs g++ packages. Such a package ++ isn't available yet. Joel Klecker tried building libg++2.8.1.1a within ++ egcs's libstdc++ setup, but it appears to need true gcc 2.8.1 . ++ * Filed Severity: important bugs against wxxt1-dev (#21707) because these ++ still depend on libg++-dev, which is removed in this version. ++ A fixed libsidplay1-dev has already been uploaded. ++ * libstdc++2.8 is now Section: base and Priority: required (as dselect is ++ linked against it). ++ * Disabled Haifa scheduling on Alpha again; Chris Chimelis reported ++ that this caused problems on some machines. ++ * [gcc/extend.texi] ++ ftp://maya.idiap.ch/pub/tmb/usenix88-lexic.ps.Z is no longer available; ++ use http://master.debian.org/~karlheg/Usenix88-lexic.pdf . ++ (fixes the egcs part of #20002). ++ * Updated Standards-Version. ++ * Changed chmod in debian/rules at Johnie Ingram's request. ++ * Rather than hardwire the Debian part of the packages' version number, ++ extract it from debian/changelog . ++ * Use gcc/objc/thr-posix.c from 980418 egcs snapshot to make objc work. ++ (Fixes #21192). ++ * Applied workaround for the GNUstep packages on sparc systems. ++ See README.sparc (on sparc packages only) in the doc directory. ++ This affects the other compilers as well. ++ * Already done in 1.0.2-0.7: the gobjc package now provides a virtual ++ package objc-compiler. ++ ++ -- J.H.M. Dassen (Ray) Tue, 28 Apr 1998 12:05:28 +0200 ++ ++egcs (1.0.2-0.7) frozen unstable; urgency=low ++ ++ * Separated out Objective-C compiler. ++ * Applied patch from http://www.cygnus.com/ml/egcs/1998-Apr/0614.html ++ ++ -- Matthias Klose Fri, 17 Apr 1998 10:25:48 +0200 ++ ++egcs (1.0.2-0.6) frozen unstable; urgency=low ++ ++ * Due to upstream changes (libg++ is now only the GNU specific C++ ++ classes, and is no longer maintained; libstdc++ contains the C++ ++ standard library, including STL), the virtual "libg++-dev" ++ package's meaning has become confusing. Therefore, new or updated ++ packages should no longer use the virtual "libg++-dev" package. ++ * Corrected g++'s Recommends to libstdc++2.8-dev (>=2.90.27-0.1). ++ The previous version had Recommends: libstdc++-dev (>=2.90.27-0.1) ++ which doesn't work, as libstc++-dev is a virtual package. ++ * Bumped Standards-Version. ++ ++ -- J.H.M. Dassen (Ray) Tue, 14 Apr 1998 11:52:08 +0200 ++ ++egcs (1.0.2-0.5) frozen unstable; urgency=low (high for maintainers of packages that use libstdc++) ++ ++ * Modified shlibs file for libstdc++ to generate versioned dependencies, ++ as it is not link compatible with the 1.0.1-x versions in ++ project/experimental. (Fixes #20247, #20033) ++ Packages depending on libstd++ should be recompiled to fix their ++ dependencies. ++ * Strenghtened g++'s Recommends: libstdc++-dev to the 1.0.2 version or ++ newer. ++ * Fixed problems with the unknown(7) symlink for gcov. ++ * Reordering links now works. ++ ++ -- Adam Heath Sun, 12 Apr 1998 13:09:30 -0400 ++ ++egcs (1.0.2-0.4) frozen unstable; urgency=low ++ ++ * Unreleased. This is the version Adam Heath received from me. ++ * Replaces: gcc (<= 2.7.2.3-3) so that the overlap with the older gcc ++ packages (including bo's gcc_2.7.2.1-8) is handled properly ++ (fixes #19931, #19672, #20217, #20593). ++ * Alpha architecture (fixes #20875): ++ * Patched gcc/config/alpha/linux.h for the gmon functions to operate ++ properly. ++ * Made egcs the primary C compiler. ++ * Enabled Hafia scheduling. ++ * Lintian-detected problems: ++ * E: libstdc++2.8: ldconfig-symlink-before-shlib-in-deb usr/lib/libstdc++.so.2.8 ++ * E: egcc: binary-without-manpage gcov ++ Reported as wishlist bug; added link to undocumented(7). ++ * W: libstdc++2.8: non-standard-executable-perm usr/lib/libstdc++.so.2.8.0 0555 ++ * E: libstdc++2.8: shlib-with-executable-bit usr/lib/libstdc++.so.2.8.0 0555 ++ ++ -- J.H.M. Dassen (Ray) Fri, 10 Apr 1998 14:46:46 +0200 ++ ++egcs (1.0.2-0.3) frozen unstable; urgency=low ++ ++ * Really fixed dependencies. ++ ++ -- J.H.M. Dassen (Ray) Mon, 30 Mar 1998 11:30:26 +0200 ++ ++egcs (1.0.2-0.2) frozen unstable; urgency=low ++ ++ * Fixed dependencies. ++ ++ -- J.H.M. Dassen (Ray) Sat, 28 Mar 1998 13:58:58 +0100 ++ ++egcs (1.0.2-0.1) frozen unstable; urgency=low ++ ++ * New upstream version; it now has -Di386 in CPP_PREDEFINES. ++ * Only used the debian/* patches from 1.0.1-2; the rest of it appears ++ to be in 1.0.2 already. ++ ++ -- J.H.M. Dassen (Ray) Fri, 27 Mar 1998 11:47:14 +0100 ++ ++egcs (1.0.1-2) unstable; urgency=low ++ ++ * Integrated pre-release 1.0.2 patches ++ * Split out g++ ++ * egcs may now provide either the primary or secondary C compiler ++ ++ -- Galen Hazelwood Sat, 14 Mar 1998 14:15:32 -0700 ++ ++egcs (1.0.1-1) unstable; urgency=low ++ ++ * New upstream version ++ * egcs is now the standard Debian gcc! ++ * gcc now provides c-compiler (#15248 et al.) ++ * g77 now provides fortran77-compiler ++ * g77 dependencies now correct (#16991) ++ * /usr/doc/gcc/changelog.gz now has correct permissions (#16139) ++ ++ -- Galen Hazelwood Sat, 7 Feb 1998 19:22:30 -0700 ++ ++egcs (1.0-1) experimental; urgency=low ++ ++ * First official release ++ ++ -- Galen Hazelwood Thu, 4 Dec 1997 16:30:11 -0700 ++ ++egcs (970917-1) experimental; urgency=low ++ ++ * New upstream snapshot (There's a lot of stuff here as well, including ++ a new libstdc++, but it _still_ won't build...) ++ * eg77 driver now works properly ++ ++ -- Galen Hazelwood Wed, 17 Sep 1997 20:44:29 -0600 ++ ++egcs (970904-1) experimental; urgency=low ++ ++ * New upstream snapshot ++ ++ -- Galen Hazelwood Sun, 7 Sep 1997 18:25:06 -0600 ++ ++egcs (970814-1) experimental; urgency=low ++ ++ * Initial packaging (of initial snapshot!) ++ ++ -- Galen Hazelwood Wed, 20 Aug 1997 00:36:28 +0000 ++ ++gcc272 (2.7.2.3-12) unstable; urgency=low ++ ++ * Compiled on a glibc-2.0 based system. ++ * Reflect move of manpage to /usr/share in gcc.postinst as well. ++ * Moved gcc272-docs to section doc, priority optional. ++ ++ -- Matthias Klose Sat, 28 Aug 1999 13:42:13 +0200 ++ ++gcc272 (2.7.2.3-11) unstable; urgency=low ++ ++ * Follow Debian policy for GNU system type (fixes #42657). ++ * config/i386/linux.h: Remove %[cpp_cpu] from CPP_SPEC. Stops gcc-2.95 ++ complaining about obsolete spec operators (using gcc -V 2.7.2.3). ++ Patch suggested by Zack Weinberg . ++ ++ -- Matthias Klose Sun, 15 Aug 1999 20:12:21 +0200 ++ ++gcc272 (2.7.2.3-10) unstable; urgency=low ++ ++ * Renamed source package to gcc272. The egcs source package is renamed ++ to gcc, because it's now the "official" GNU C compiler. ++ * Changed maintainer address to "Debian GCC maintainers". ++ * Install info and man stuff to /usr/share. ++ ++ -- Matthias Klose Thu, 27 May 1999 12:29:23 +0200 ++ ++gcc (2.7.2.3-9) unstable; urgency=low ++ ++ * debian/{postinst,prerm}-doc: handle gcc272.info, not gcc.info. ++ Fixes #36306. ++ ++ -- Matthias Klose Tue, 20 Apr 1999 07:32:58 +0200 ++ ++gcc (2.7.2.3-8) unstable; urgency=low ++ ++ * Make gcc-2.7 the secondary compiler. Rename gcc package to gcc272. ++ On i386, sparc and m68k, this package is compiled against glibc2.0. ++ * The cpp package is built from the egcs source package. ++ ++ -- Matthias Klose Mon, 29 Mar 1999 22:48:50 +0200 ++ ++gcc (2.7.2.3-7) frozen unstable; urgency=low ++ ++ * Separated out ObjC compiler to gobjc27 package. ++ * Changed maintainer address. ++ * Synchronized README.Debian with egcs-1.1.1-3. ++ ++ -- Matthias Klose Tue, 29 Dec 1998 19:05:26 +0100 ++ ++gcc (2.7.2.3-6) frozen unstable; urgency=low ++ ++ * Link with -lc on i386, m68k, sparc, when building shared libraries ++ (fixes #25122). ++ ++ -- Matthias Klose Thu, 3 Dec 1998 12:12:12 +0200 ++ ++gcc (2.7.2.3-5) frozen unstable; urgency=low ++ ++ * Updated maintainer info. ++ * Updated Standards-Version; made lintian-clean. ++ * gcc-docs can coexist with the latest egcs-docs, so added (<= version) to ++ the Conflicts. ++ * Updated the README and renamed it to README.Debian . ++ * Put a reference to /usr/doc/gcc/README.Debian in the info docs. ++ * Updated description of g++272 . ++ * Clean up generated info files, to keep the diff small. ++ ++ -- J.H.M. Dassen (Ray) Tue, 17 Nov 1998 20:05:59 +0100 ++ ++gcc (2.7.2.3-4.8) frozen unstable; urgency=high ++ ++ * Non-maintainer release ++ * Fix type in extended description ++ * Removed wrong test in postinst ++ * Add preinst to clean up some stuff from an older gcc package properly ++ and stop man complaining about dangling symlinks ++ ++ -- Wichert Akkerman Fri, 17 Jul 1998 18:48:32 +0200 ++ ++gcc (2.7.2.3-4.7) frozen unstable; urgency=high ++ ++ * Really fixed gcc-docs postinst (Fixes #23470), so that `gcc-docs' ++ becomes installable. ++ ++ -- J.H.M. Dassen (Ray) Mon, 15 Jun 1998 07:53:40 +0200 ++ ++gcc (2.7.2.3-4.6) frozen unstable; urgency=high ++ ++ * [gcc.c] There is one call to choose_temp_base for determining the ++ tempdir to be used only; ++ #ifdef HAVE_MKSTEMP delete the tempfile created as a side effect. ++ (fixes #23123 for gcc). ++ * gcc-docs postinst was broken (due to a broken line) (fixes #23391, #23401). ++ * [debian/control] description for gcc-docs said `egcs' where it should have ++ said `gcc' (fixes #23396). ++ ++ -- J.H.M. Dassen (Ray) Thu, 11 Jun 1998 12:48:50 +0200 ++ ++gcc (2.7.2.3-4.5) frozen unstable; urgency=high ++ ++ * The previous version left temporary files behind, as they were not ++ marked for deletion afterwards. ++ ++ -- J.H.M. Dassen (Ray) Sun, 31 May 1998 22:49:14 +0200 ++ ++gcc (2.7.2.3-4.4) frozen unstable; urgency=high (security fixes) ++ ++ * Security improvements with regard to the /tmp problem ++ (gcc opens predictably named files in TMPDIR which can be abused via ++ symlinks) (Fixes #19453 for gcc): ++ * Compile -DMKTEMP_EACH_FILE to ensure the %u name is generated randomly ++ every time; affects gcc/gcc.c . ++ * [cp/g++.c, collect2.c, gcc.c] If compiled -DHAVE_MKSTEMP use mkstemp(3) ++ rather than mktemp(3). ++ * Security improvements: don't use the result of choose_temp_base in a ++ predictable fashion. ++ [gcc.c]: ++ * @c, @objective-c: use random name rather then tempbasename.i for ++ intermediate preprocessor output (%g.i -> %d%u). ++ * @c, @objective-c: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @c, @objective-c, @cpp-output, @assembler-with-cpp: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @c, @objective-c, @assembler-with-cpp: use previous random name ++ (cc1|cpp output) rather then tempbasename.s for intermediate assembler ++ input (%g.s -> %U) ++ [f/lang-specs.h]: ++ * @f77-cpp-input: use random name rather then tempbasename.i for ++ intermediate cpp output (%g.i -> %d%u). ++ * @f77-cpp-input: use previous random name (cpp output) rather than ++ tempbasename.i for f771 input (%g.i -> %U). ++ * @f77-cpp-input: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @f77-cpp-input: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @ratfor: use random name rather then tempbasename.i for ++ intermediate ratfor output (%g.f -> %d%u). ++ * @ratfor: use previous random name (ratfor output) rather than ++ tempbasename.i for f771 input (%g.f -> %U). ++ * @ratfor: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @ratfor: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @ratfor: use previous random name ++ (ratfor output) rather then tempbasename.s for intermediate assembler ++ input (%g.s -> %U). ++ * @f77: use random name rather then tempbasename.s for ++ intermediate ratfor output (%g.f -> %d%u). ++ * @ratfor: use previous random name (ratfor output) rather than ++ tempbasename.i for f771 input (%g.f -> %U). ++ * @ratfor: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @ratfor: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @ratfor: use previous random name ++ (ratfor output) rather then tempbasename.s for intermediate assembler ++ input (%g.s -> %U). ++ * @f77: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %d%u). ++ * @f77: switched ++ "as [-o output file] " to ++ "as [-o output file]". ++ * @ratfor: use random name rather then tempbasename.s for ++ intermediate compiler output (%g.s -> %U). ++ ++ -- J.H.M. Dassen (Ray) Sat, 30 May 1998 17:27:03 +0200 ++ ++gcc (2.7.2.3-4.3) frozen unstable; urgency=high ++ ++ * The "alpha" patches from -4 affected a lot more than alpha support, ++ and in all likeliness broke compilation of libc6 2.0.7pre3-1 ++ and 2.0.7pre1-4 . I removed them by selective application of the ++ diff between -4 and -4. (should fix #22292). ++ * Fixed reference to the trampolines paper (fixes #20002 for Debian; ++ this still needs to be forwarded). ++ * This is for frozen too. (obsoletes #22390 (request to move -4.2 to ++ frozen)). ++ * Split of gcc-docs package, so that the gcc can be succesfully installed ++ on systems that have egcs-docs installed. ++ * Added the README on the compiler situation that's already in the egcs ++ packages. ++ * Use the recommended settings LDFLAGS=-s CFLAGS= BOOT_CFLAGS='-O2'. ++ ++ -- J.H.M. Dassen (Ray) Thu, 28 May 1998 20:03:59 +0200 ++ ++gcc (2.7.2.3-4.2) unstable; urgency=low ++ ++ * Still for unstable, as I have received no feedback about the g++272 ++ package yet. ++ * gcc now Provides: objc-compiler . ++ * Clean up /etc/alternatives/{g++,g++.1.gz} if they are dangling. ++ (fixes #19765, #20563) ++ ++ -- J.H.M. Dassen (Ray) Wed, 22 Apr 1998 12:40:45 +0200 ++ ++gcc (2.7.2.3-4.1) unstable; urgency=low ++ ++ * Bumped Standards-Version. ++ * Forked off a g++272 package (e.g. for code that uses the GNU extensions ++ in libg++); for now this is in "unstable" only; feedback appreciated. ++ * Some cleanup (lintian): permissions, absolute link, gzip manpage. ++ ++ -- J.H.M. Dassen (Ray) Fri, 17 Apr 1998 13:05:25 +0200 ++ ++gcc (2.7.2.3-4) unstable; urgency=low ++ ++ * Added alpha patches ++ * Only build C and objective-c compilers, split off g++ ++ ++ -- Galen Hazelwood Sun, 8 Mar 1998 21:16:39 -0700 ++ ++gcc (2.7.2.3-3) unstable; urgency=low ++ ++ * Added patches for m68k ++ * Added patches for sparc (#13968) ++ ++ -- Galen Hazelwood Fri, 17 Oct 1997 18:25:21 -0600 ++ ++gcc (2.7.2.3-2) unstable; urgency=low ++ ++ * Added g77 support (g77 0.5.21) ++ ++ -- Galen Hazelwood Wed, 10 Sep 1997 18:44:54 -0600 ++ ++gcc (2.7.2.3-1) unstable; urgency=low ++ ++ * New upstream version ++ * Now using pristine source ++ * Removed misplaced paragraph in cpp.texi (#10877) ++ * Fix security bug for temporary files (#5298) ++ * Added Suggests: libg++-dev (#12335) ++ * Patched objc/thr-posix.c to support conditions (#12502) ++ ++ -- Galen Hazelwood Mon, 8 Sep 1997 12:20:07 -0600 ++ ++gcc (2.7.2.2-7) unstable; urgency=low ++ ++ * Made cc and c++ managed through alternates mechanism (for egcs) ++ ++ -- Galen Hazelwood Tue, 19 Aug 1997 22:37:03 +0000 ++ ++gcc (2.7.2.2-6) unstable; urgency=low ++ ++ * Tweaked Objective-C thread support (#11069) ++ ++ -- Galen Hazelwood Wed, 9 Jul 1997 11:56:57 -0600 ++ ++gcc (2.7.2.2-5) unstable; urgency=low ++ ++ * More updated m68k patches ++ * Now conflicts with libc5-dev (#10006, #10112) ++ * More strict Depends: cpp, prevents version mismatch (#9954) ++ ++ -- Galen Hazelwood Thu, 19 Jun 1997 01:29:02 -0600 ++ ++gcc (2.7.2.2-4) unstable; urgency=low ++ ++ * Moved to unstable ++ * Temporarily removed fortran support (waiting for new g77) ++ * Updated m68k patches ++ ++ -- Galen Hazelwood Fri, 9 May 1997 13:35:14 -0600 ++ ++gcc (2.7.2.2-3) experimental; urgency=low ++ ++ * Built against libc6 (fixes bug #8511) ++ ++ -- Galen Hazelwood Fri, 4 Apr 1997 13:30:10 -0700 ++ ++gcc (2.7.2.2-2) experimental; urgency=low ++ ++ * Fixed configure to build crt{begin,end}S.o on i386 ++ ++ -- Galen Hazelwood Tue, 11 Mar 1997 16:15:02 -0700 ++ ++gcc (2.7.2.2-1) experimental; urgency=low ++ ++ * Built for use with libc6-dev (experimental purposes only!) ++ * Added m68k patches from Andreas Schwab ++ ++ -- Galen Hazelwood Fri, 7 Mar 1997 12:44:17 -0700 ++ ++gcc (2.7.2.1-7) unstable; urgency=low ++ ++ * Patched to support g77 0.5.20 ++ ++ -- Galen Hazelwood Thu, 6 Mar 1997 22:20:23 -0700 ++ ++gcc (2.7.2.1-6) unstable; urgency=low ++ ++ * Added (small) manpage for protoize/unprotoize (fixes bug #6904) ++ * Removed -lieee from specs file (fixes bug #7741) ++ * No longer builds aout-gcc ++ ++ -- Galen Hazelwood Mon, 3 Mar 1997 11:10:20 -0700 ++ ++gcc (2.7.2.1-5) unstable; urgency=low ++ ++ * debian/control now lists cpp in section "interpreters" ++ * Re-added Objective-c patches for unstable ++ ++ -- Galen Hazelwood Wed, 22 Jan 1997 10:27:52 -0700 ++ ++gcc (2.7.2.1-4) stable unstable; urgency=low ++ ++ * Changed original source file so dpkg-source -x works ++ * Removed Objective-c patches (unsafe for stable) ++ * Built against rex's libc, so fixes placed in -3 are available to ++ those still using rex ++ ++ -- Galen Hazelwood Tue, 21 Jan 1997 11:11:53 -0700 ++ ++gcc (2.7.2.1-3) unstable; urgency=low ++ ++ * New (temporary) maintainer ++ * Updated to new standards and source format ++ * Integrated aout-gcc into gcc source package ++ * Demoted aout-gcc to Priority "extra" ++ * cpp package description more clear (fixes bug #5428) ++ * Removed cpp "Replaces: gcc" (fixes bug #5762) ++ * Minor fix to invoke.texi (fixes bug #2909) ++ * Added latest Objective-C patches for GNUstep people (fixes bug #4657) ++ ++ -- Galen Hazelwood Sun, 5 Jan 1997 09:57:36 -0700 diff --cc debian/compat index 0000000,0000000..b4de394 new file mode 100644 --- /dev/null +++ b/debian/compat @@@ -1,0 -1,0 +1,1 @@@ ++11 diff --cc debian/control index 0000000,0000000..5237ce5 new file mode 100644 --- /dev/null +++ b/debian/control @@@ -1,0 -1,0 +1,5778 @@@ ++Source: gcc-15 ++Section: devel ++Priority: optional ++Maintainer: Debian GCC Maintainers ++Uploaders: Matthias Klose ++Standards-Version: 4.7.4 ++Build-Depends: debhelper (>= 11), dpkg-dev (>= 1.17.14), g++-multilib [amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32] , ++ libc6.1-dev (>= 2.23-1~) [alpha ia64] | libc0.3-dev (>= 2.23-1~) [hurd-amd64 hurd-i386] | libc6-dev (>= 2.23-1~), libc6-dev-amd64 [i386 x32], libc6-dev-sparc64 [sparc], libc6-dev-sparc [sparc64], libc6-dev-s390x [s390], libc6-dev-i386 [amd64 x32], libc6-dev-powerpc [ppc64], libc6-dev-ppc64 [powerpc], lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el sparc64 x32], libn32gcc-s1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], libc6-dev-x32 [amd64 i386], libx32gcc-s1 [amd64 i386], libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-amd64 hurd-i386] | libc6-dbg, ++ linux-libc-dev [m68k], ++ m4, libtool, autoconf2.69, gcc-16-base, ++ dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], ++ gawk, lzma, xz-utils, patchutils, ++ libzstd-dev, zlib1g-dev, systemtap-sdt-dev [linux-any], ++ binutils:native (>= 2.39), binutils-hppa64-linux-gnu:native (>= 2.39) [hppa amd64 i386 x32], ++ gperf, bison, flex, ++ gettext, nvptx-tools [amd64 arm64 ppc64el], amdgcn-tools-21 [amd64], ++ texinfo, locales-all, sharutils, ++ procps, gnat-15:native [!arc !ia64 !sh3 !sh3eb !sh4eb], g++-15:native, netbase, gdc-15:native [!alpha !arc !ia64 !m68k !sh4 !s390 !hurd-amd64 !hurd-i386], python3:any, cargo [!alpha !hppa !ia64 !m68k !sh4 !x32 !hurd-amd64 !hurd-i386], ++ libisl-dev (>= 0.20), libmpc-dev (>= 1.0), libmpfr-dev (>= 3.0.0-9~), libgmp-dev (>= 2:5.0.1~), lib32z1-dev [amd64], lib64z1-dev [i386], unzip , ++ dejagnu [!alpha !hurd-amd64 !hurd-i386] , git [!alpha !hurd-amd64 !hurd-i386] , python3-pytest [!alpha !hppa !m68k !sh4 !x32] , python3-check-jsonschema [!alpha !hppa !m68k !sh4 !x32] , chrpath, lsb-release, quilt, time, ++ pkgconf, libgc-dev, ++ g++-15-for-host , gobjc-15-for-host [!avr] , gfortran-15-for-host , gdc-15-for-host [!alpha !arc !ia64 !m68k !sh4 !s390 !hurd-amd64 !hurd-i386] , gccgo-15-for-host [!arc !avr !hppa !loong64 !m68k !sh4] , gnat-15-for-host [!arc !ia64 !sh3 !sh3eb !sh4eb] , gm2-15-for-host [!powerpc !ppc64 !sh4] , gcobol-15-for-host [!alpha !arc !hppa !loong64 !m68k !mips !mipsel !mips64 !mips64el !powerpc !ppc64 !s390x !sh4 !sparc !sparc64 !x32 !i386 !hurd-i386 !arm !armel !armhf !hurd-amd64 !hurd-i386] , ga68-15-for-host , ++Build-Depends-Indep: doxygen , graphviz , ghostscript , texlive-latex-base , xsltproc , libxml2-utils , docbook-xsl-ns , ++Homepage: https://gcc.gnu.org/ ++Vcs-Browser: https://salsa.debian.org/toolchain-team/gcc/tree/gcc-15-debian ++Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-15-debian ++XS-Testsuite: autopkgtest ++Rules-Requires-Root: binary-targets ++ ++Package: gcc-15-base ++Architecture: any ++Multi-Arch: same ++Section: libs ++Depends: ${misc:Depends} ++Replaces: ${base:Replaces} ++Breaks: ${base:Breaks} ++Description: GCC, the GNU Compiler Collection (base package) ++ This package contains files common to all languages and libraries ++ contained in the GNU Compiler Collection (GCC). ++ ++Package: libgcc-15-dev ++X-DH-Build-For-Type: target ++Architecture: any ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, ++ ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, ++ ${dep:libtsan}, ${dep:libubsan}, ${dep:libhwasan}, ${dep:libvtv}, ++ ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} ++Breaks: libtsan2 (<< 12-20211113-2~) ++Replaces: libtsan2 (<< 12-20211113-2~) ++Multi-Arch: same ++Description: GCC support library (development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++ ++Package: lib64gcc-15-dev ++X-DH-Build-For-Type: target ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, ++ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, ++ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, ++ ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, ++ ${dep:libvtvbiarch}, ++ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Description: GCC support library (64bit development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++ ++Package: lib32gcc-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, ++ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, ++ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, ++ ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, ++ ${dep:libvtvbiarch}, ++ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Description: GCC support library (32 bit development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++ ++Package: libn32gcc-15-dev ++X-DH-Build-For-Type: target ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, ++ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, ++ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, ++ ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, ++ ${dep:libvtvbiarch}, ++ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Description: GCC support library (n32 development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++ ++Package: libx32gcc-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 i386 ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libgccbiarch}, ${dep:libsspbiarch}, ++ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, ++ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, ++ ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, ++ ${dep:libvtvbiarch}, ++ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Description: GCC support library (x32 development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++ ++Package: gcc-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Depends: cpp-15-alpha-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-alpha-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-alpha-linux-gnu ++Description: GNU C compiler for the alpha-linux-gnu architecture ++ This is the GNU C compiler for the alpha-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: cpp-15-x86-64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-x86-64-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-x86-64-linux-gnu ++Description: GNU C compiler for the x86_64-linux-gnu architecture ++ This is the GNU C compiler for the x86_64-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: cpp-15-arm-linux-gnueabi (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-arm-linux-gnueabi (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-arm-linux-gnueabi ++Description: GNU C compiler for the arm-linux-gnueabi architecture ++ This is the GNU C compiler for the arm-linux-gnueabi architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: cpp-15-arm-linux-gnueabihf (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-arm-linux-gnueabihf (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-arm-linux-gnueabihf ++Description: GNU C compiler for the arm-linux-gnueabihf architecture ++ This is the GNU C compiler for the arm-linux-gnueabihf architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: cpp-15-aarch64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-aarch64-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-aarch64-linux-gnu ++Description: GNU C compiler for the aarch64-linux-gnu architecture ++ This is the GNU C compiler for the aarch64-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: cpp-15-i686-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-i686-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-i686-linux-gnu ++Description: GNU C compiler for the i686-linux-gnu architecture ++ This is the GNU C compiler for the i686-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: cpp-15-loongarch64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-loongarch64-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-loongarch64-linux-gnu ++Description: GNU C compiler for the loongarch64-linux-gnu architecture ++ This is the GNU C compiler for the loongarch64-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: cpp-15-mipsel-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mipsel-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mipsel-linux-gnu ++Description: GNU C compiler for the mipsel-linux-gnu architecture ++ This is the GNU C compiler for the mipsel-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: cpp-15-mips64-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mips64-linux-gnuabi64 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mips64-linux-gnuabi64 ++Description: GNU C compiler for the mips64-linux-gnuabi64 architecture ++ This is the GNU C compiler for the mips64-linux-gnuabi64 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: cpp-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mips64el-linux-gnuabi64 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mips64el-linux-gnuabi64 ++Description: GNU C compiler for the mips64el-linux-gnuabi64 architecture ++ This is the GNU C compiler for the mips64el-linux-gnuabi64 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: cpp-15-mips64-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mips64-linux-gnuabin32 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mips64-linux-gnuabin32 ++Description: GNU C compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU C compiler for the mips64-linux-gnuabin32 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: cpp-15-powerpc-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-powerpc-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-powerpc-linux-gnu ++Description: GNU C compiler for the powerpc-linux-gnu architecture ++ This is the GNU C compiler for the powerpc-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: cpp-15-powerpc64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-powerpc64-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-powerpc64-linux-gnu ++Description: GNU C compiler for the powerpc64-linux-gnu architecture ++ This is the GNU C compiler for the powerpc64-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: cpp-15-powerpc64le-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-powerpc64le-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-powerpc64le-linux-gnu ++Description: GNU C compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU C compiler for the powerpc64le-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Depends: cpp-15-m68k-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-m68k-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-m68k-linux-gnu ++Description: GNU C compiler for the m68k-linux-gnu architecture ++ This is the GNU C compiler for the m68k-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: cpp-15-riscv64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-riscv64-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-riscv64-linux-gnu ++Description: GNU C compiler for the riscv64-linux-gnu architecture ++ This is the GNU C compiler for the riscv64-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-sh4-linux-gnu ++Architecture: sh4 ++Multi-Arch: foreign ++Depends: cpp-15-sh4-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-sh4-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-sh4-linux-gnu ++Description: GNU C compiler for the sh4-linux-gnu architecture ++ This is the GNU C compiler for the sh4-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: cpp-15-sparc-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-sparc-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-sparc-linux-gnu ++Description: GNU C compiler for the sparc-linux-gnu architecture ++ This is the GNU C compiler for the sparc-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: cpp-15-sparc64-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-sparc64-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-sparc64-linux-gnu ++Description: GNU C compiler for the sparc64-linux-gnu architecture ++ This is the GNU C compiler for the sparc64-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: cpp-15-s390x-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-s390x-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-s390x-linux-gnu ++Description: GNU C compiler for the s390x-linux-gnu architecture ++ This is the GNU C compiler for the s390x-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: cpp-15-x86-64-linux-gnux32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-x86-64-linux-gnux32 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-x86-64-linux-gnux32 ++Description: GNU C compiler for the x86_64-linux-gnux32 architecture ++ This is the GNU C compiler for the x86_64-linux-gnux32 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: cpp-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mips64el-linux-gnuabin32 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mips64el-linux-gnuabin32 ++Description: GNU C compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU C compiler for the mips64el-linux-gnuabin32 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: cpp-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mipsisa32r6-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mipsisa32r6-linux-gnu ++Description: GNU C compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU C compiler for the mipsisa32r6-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: cpp-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mipsisa32r6el-linux-gnu (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mipsisa32r6el-linux-gnu ++Description: GNU C compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU C compiler for the mipsisa32r6el-linux-gnu architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: cpp-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mipsisa64r6-linux-gnuabi64 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mipsisa64r6-linux-gnuabi64 ++Description: GNU C compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU C compiler for the mipsisa64r6-linux-gnuabi64 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: cpp-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mipsisa64r6el-linux-gnuabi64 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mipsisa64r6el-linux-gnuabi64 ++Description: GNU C compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU C compiler for the mipsisa64r6el-linux-gnuabi64 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: cpp-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mipsisa64r6-linux-gnuabin32 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mipsisa64r6-linux-gnuabin32 ++Description: GNU C compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU C compiler for the mipsisa64r6-linux-gnuabin32 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: cpp-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ ${dep:libcc1}, ++ binutils-mipsisa64r6el-linux-gnuabin32 (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler-mipsisa64r6el-linux-gnuabin32 ++Description: GNU C compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU C compiler for the mipsisa64r6el-linux-gnuabin32 architecture, ++ a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ++ cpp-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU C compiler for the host architecture ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gcc-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15 (>= ${gcc:Version}), cpp-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU C compiler for the build architecture ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++ . ++ This is a dependency package. ++ ++Package: gcc-15 ++Architecture: any ++Depends: gcc-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), ++ cpp-15 (= ${gcc:Version}), ++ binutils (>= ${binutils:Version}), ++ ${misc:Depends} ++Recommends: ${dep:libcdev} ++Replaces: cpp-15 (<< 7.1.1-8) ++Suggests: ${gcc:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}), ++ gcc-15-locales (>= ${gcc:SoftVersion}), ++Provides: c-compiler ++Description: GNU C compiler ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++ ++Package: gcc-15-multilib ++Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU C compiler (multilib support) ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++ ++Package: gcc-15-test-results ++Architecture: any ++Depends: gcc-15-base (= ${gcc:Version}), ${misc:Depends} ++Replaces: g++-5 (<< 5.2.1-28) ++Description: Test results for the GCC test suite ++ This package contains the test results for running the GCC test suite ++ for a post build analysis. ++ ++Package: gcc-15-plugin-dev ++Architecture: any ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), libgmp-dev (>= 2:5.0.1~), libmpc-dev (>= 1.0), ${shlibs:Depends}, ${misc:Depends} ++Description: Files for GNU GCC plugin development. ++ This package contains (header) files for GNU GCC plugin development. It ++ is only used for the development of GCC plugins, but not needed to run ++ plugins. ++ ++Package: gcc-15-hppa64-linux-gnu ++Architecture: hppa amd64 i386 x32 ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ++ binutils-hppa64-linux-gnu | binutils-hppa64, ++ ${shlibs:Depends}, ${misc:Depends} ++Description: GNU C compiler (cross compiler for hppa64) ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++ ++Package: cpp-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for alpha-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ alpha-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for x86_64-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ x86_64-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for arm-linux-gnueabi ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ arm-linux-gnueabi architecture but not the compiler. ++ ++Package: cpp-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for arm-linux-gnueabihf ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ arm-linux-gnueabihf architecture but not the compiler. ++ ++Package: cpp-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for aarch64-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ aarch64-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for i686-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ i686-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for loongarch64-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ loongarch64-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mipsel-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mipsel-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mips64-linux-gnuabi64 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mips64-linux-gnuabi64 architecture but not the compiler. ++ ++Package: cpp-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mips64el-linux-gnuabi64 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mips64el-linux-gnuabi64 architecture but not the compiler. ++ ++Package: cpp-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mips64-linux-gnuabin32 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mips64-linux-gnuabin32 architecture but not the compiler. ++ ++Package: cpp-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for powerpc-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ powerpc-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for powerpc64-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ powerpc64-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for powerpc64le-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ powerpc64le-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for m68k-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ m68k-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for riscv64-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ riscv64-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-sh4-linux-gnu ++Architecture: sh4 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for sh4-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ sh4-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for sparc-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ sparc-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for sparc64-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ sparc64-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for s390x-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ s390x-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for x86_64-linux-gnux32 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ x86_64-linux-gnux32 architecture but not the compiler. ++ ++Package: cpp-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mips64el-linux-gnuabin32 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mips64el-linux-gnuabin32 architecture but not the compiler. ++ ++Package: cpp-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mipsisa32r6-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mipsisa32r6-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mipsisa32r6el-linux-gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mipsisa32r6el-linux-gnu architecture but not the compiler. ++ ++Package: cpp-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mipsisa64r6-linux-gnuabi64 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mipsisa64r6-linux-gnuabi64 architecture but not the compiler. ++ ++Package: cpp-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mipsisa64r6el-linux-gnuabi64 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mipsisa64r6el-linux-gnuabi64 architecture but not the compiler. ++ ++Package: cpp-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mipsisa64r6-linux-gnuabin32 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mipsisa64r6-linux-gnuabin32 architecture but not the compiler. ++ ++Package: cpp-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}), cpp-15-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor for mipsisa64r6el-linux-gnuabin32 ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ mipsisa64r6el-linux-gnuabin32 architecture but not the compiler. ++ ++Package: cpp-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), cpp-15${target:suffix} (>= ${gcc:SoftVersion}), ${misc:Depends} ++Description: GNU C preprocessor for the host architecture ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those who ++ require the preprocessor configured for the host architecture but not ++ the compiler. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: cpp-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Section: interpreters ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), cpp-15 (>= ${gcc:Version}), ${misc:Depends} ++Description: GNU C preprocessor for the build architecture ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those who ++ require the preprocessor configured for the build architecture but not ++ the compiler. ++ . ++ This is a dependency package. ++ ++Package: cpp-15 ++Architecture: any ++Section: interpreters ++Depends: gcc-15-base (= ${gcc:Version}), cpp-15${target:suffix} (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-locales (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++Description: GNU C preprocessor ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those who ++ require the preprocessor but not the compiler. ++ ++Package: gcc-15-locales ++Architecture: all ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), cpp-15 (>= ${gcc:SoftVersion}), ${misc:Depends} ++Recommends: gcc-15 (>= ${gcc:SoftVersion}) ++Description: GCC, the GNU compiler collection (native language support files) ++ Native language support for GCC. Lets GCC speak your language, ++ if translations are available. ++ . ++ Please do NOT submit bug reports in other languages than "C". ++ Always reset your language settings to use the "C" locales. ++ ++Package: g++-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-alpha-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the alpha-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ alpha-linux-gnu architecture. ++ ++Package: g++-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-x86-64-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the x86_64-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ x86_64-linux-gnu architecture. ++ ++Package: g++-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-arm-linux-gnueabi ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the arm-linux-gnueabi architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ arm-linux-gnueabi architecture. ++ ++Package: g++-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-arm-linux-gnueabihf ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the arm-linux-gnueabihf architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ arm-linux-gnueabihf architecture. ++ ++Package: g++-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-aarch64-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the aarch64-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ aarch64-linux-gnu architecture. ++ ++Package: g++-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-i686-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the i686-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ i686-linux-gnu architecture. ++ ++Package: g++-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-loongarch64-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the loongarch64-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ loongarch64-linux-gnu architecture. ++ ++Package: g++-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mipsel-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mipsel-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mipsel-linux-gnu architecture. ++ ++Package: g++-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mips64-linux-gnuabi64 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mips64-linux-gnuabi64 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mips64-linux-gnuabi64 architecture. ++ ++Package: g++-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mips64el-linux-gnuabi64 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mips64el-linux-gnuabi64 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mips64el-linux-gnuabi64 architecture. ++ ++Package: g++-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mips64-linux-gnuabin32 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mips64-linux-gnuabin32 architecture. ++ ++Package: g++-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-powerpc-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the powerpc-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ powerpc-linux-gnu architecture. ++ ++Package: g++-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-powerpc64-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the powerpc64-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ powerpc64-linux-gnu architecture. ++ ++Package: g++-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-powerpc64le-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ powerpc64le-linux-gnu architecture. ++ ++Package: g++-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-m68k-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the m68k-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ m68k-linux-gnu architecture. ++ ++Package: g++-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-riscv64-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the riscv64-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ riscv64-linux-gnu architecture. ++ ++Package: g++-15-sh4-linux-gnu ++Architecture: sh4 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-sh4-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the sh4-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ sh4-linux-gnu architecture. ++ ++Package: g++-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-sparc-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the sparc-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ sparc-linux-gnu architecture. ++ ++Package: g++-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-sparc64-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the sparc64-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ sparc64-linux-gnu architecture. ++ ++Package: g++-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-s390x-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the s390x-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ s390x-linux-gnu architecture. ++ ++Package: g++-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-x86-64-linux-gnux32 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the x86_64-linux-gnux32 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ x86_64-linux-gnux32 architecture. ++ ++Package: g++-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mips64el-linux-gnuabin32 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mips64el-linux-gnuabin32 architecture. ++ ++Package: g++-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mipsisa32r6-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mipsisa32r6-linux-gnu architecture. ++ ++Package: g++-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mipsisa32r6el-linux-gnu ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mipsisa32r6el-linux-gnu architecture. ++ ++Package: g++-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mipsisa64r6-linux-gnuabi64 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mipsisa64r6-linux-gnuabi64 architecture. ++ ++Package: g++-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mipsisa64r6el-linux-gnuabi64 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mipsisa64r6el-linux-gnuabi64 architecture. ++ ++Package: g++-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mipsisa64r6-linux-gnuabin32 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mipsisa64r6-linux-gnuabin32 architecture. ++ ++Package: g++-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler-mipsisa64r6el-linux-gnuabin32 ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Description: GNU C++ compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ mipsisa64r6el-linux-gnuabin32 architecture. ++ ++Package: g++-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), g++-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU C++ compiler for the host architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the host architecture. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: g++-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:Version}), ${misc:Depends}, ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}) ++Description: GNU C++ compiler for the build architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ arch_gnu architecture. ++ . ++ This is a dependency package. ++ ++Package: g++-15 ++Architecture: any ++Depends: g++-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} ++Provides: c++-compiler, c++abi2-dev ++Suggests: ${gxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Description: GNU C++ compiler ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ ++Package: g++-15-multilib ++Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 ++Depends: gcc-15-base (= ${gcc:Version}), g++-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: ${dep:libcxxbiarchdbg} ++Description: GNU C++ compiler (multilib support) ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++ ++Package: libgccjit15 ++Section: libs ++Architecture: any ++Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev, binutils, ${dep:libcdev}, ++ ${shlibs:Depends}, ${misc:Depends} ++Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) ++Description: GCC just-in-time compilation (shared library) ++ libgccjit provides an embeddable shared library with an API for adding ++ compilation to existing programs using GCC. ++ ++Package: libgccjit-15-doc ++Section: doc ++Architecture: all ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-doc, libgccjit-8-doc, ++ libgccjit-9-doc, libgccjit-10-doc, libgccjit-11-doc, libgccjit-12-doc, ++ libgccjit-13-doc, libgccjit-14-doc, ++Description: GCC just-in-time compilation (documentation) ++ libgccjit provides an embeddable shared library with an API for adding ++ compilation to existing programs using GCC. ++ ++Package: libgccjit-15-dev ++Section: libdevel ++Architecture: any ++Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), libgccjit15 (>= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++Suggests: libgccjit-15-dbg ++Description: GCC just-in-time compilation (development files) ++ libgccjit provides an embeddable shared library with an API for adding ++ compilation to existing programs using GCC. ++ ++#Package: libgdiagnostics`'PV-doc ++#Section: doc ++#Architecture: all ++#Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++#Conflicts: libgdiagnostics-14-doc, ++#Description: GCC diagnostic-handling code wrapped into a library (documentation) ++# GCCs diagnostic-handling code covers things like ++# - quoting pertinent source code (with a cache) ++# - underlining points and ranges in the source code, possibly with labels ++# - emitting fix-it hints ++# - generating patches from fix-it hints ++# - SARIF output ++ ++Package: libgdiagnostics-15-dev ++Section: libdevel ++Architecture: any ++Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), libgdiagnostics0 (>= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++Suggests: libgdiagnostic-15-dbg ++Description: GCC diagnostic-handling code wrapped into a library (development files) ++ GCCs diagnostic-handling code covers things like ++ - quoting pertinent source code (with a cache) ++ - underlining points and ranges in the source code, possibly with labels ++ - emitting fix-it hints ++ - generating patches from fix-it hints ++ - SARIF output ++ ++Package: gcc-15-diagnostics ++Section: devel ++Architecture: any ++Depends: gcc-15-base (= ${gcc:Version}), libgdiagnostics0 (>= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++Description: GCC diagnostic tools ++ Currently only provides the sarif-replay command-line tool, which takes ++ SARIF files as input, and uses libdiagnostics to replay any diagnostics ++ within them as if they were GCC diagnostics. ++ ++Package: gobjc++-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-alpha-linux-gnu (= ${gcc:Version}), g++-15-alpha-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-alpha-linux-gnu ++Description: GNU Objective-C++ compiler for the alpha-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ alpha-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-x86-64-linux-gnu (= ${gcc:Version}), g++-15-x86-64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-x86-64-linux-gnu ++Description: GNU Objective-C++ compiler for the x86_64-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ x86_64-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-arm-linux-gnueabi (= ${gcc:Version}), g++-15-arm-linux-gnueabi (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-arm-linux-gnueabi ++Description: GNU Objective-C++ compiler for the arm-linux-gnueabi architecture ++ This is the GNU Objective-C++ compiler for the ++ arm-linux-gnueabi architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-arm-linux-gnueabihf (= ${gcc:Version}), g++-15-arm-linux-gnueabihf (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-arm-linux-gnueabihf ++Description: GNU Objective-C++ compiler for the arm-linux-gnueabihf architecture ++ This is the GNU Objective-C++ compiler for the ++ arm-linux-gnueabihf architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-aarch64-linux-gnu (= ${gcc:Version}), g++-15-aarch64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-aarch64-linux-gnu ++Description: GNU Objective-C++ compiler for the aarch64-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ aarch64-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-i686-linux-gnu (= ${gcc:Version}), g++-15-i686-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-i686-linux-gnu ++Description: GNU Objective-C++ compiler for the i686-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ i686-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-loongarch64-linux-gnu (= ${gcc:Version}), g++-15-loongarch64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-loongarch64-linux-gnu ++Description: GNU Objective-C++ compiler for the loongarch64-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ loongarch64-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsel-linux-gnu (= ${gcc:Version}), g++-15-mipsel-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mipsel-linux-gnu ++Description: GNU Objective-C++ compiler for the mipsel-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ mipsel-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), g++-15-mips64-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mips64-linux-gnuabi64 ++Description: GNU Objective-C++ compiler for the mips64-linux-gnuabi64 architecture ++ This is the GNU Objective-C++ compiler for the ++ mips64-linux-gnuabi64 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), g++-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mips64el-linux-gnuabi64 ++Description: GNU Objective-C++ compiler for the mips64el-linux-gnuabi64 architecture ++ This is the GNU Objective-C++ compiler for the ++ mips64el-linux-gnuabi64 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), g++-15-mips64-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mips64-linux-gnuabin32 ++Description: GNU Objective-C++ compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU Objective-C++ compiler for the ++ mips64-linux-gnuabin32 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc-linux-gnu (= ${gcc:Version}), g++-15-powerpc-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-powerpc-linux-gnu ++Description: GNU Objective-C++ compiler for the powerpc-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ powerpc-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc64-linux-gnu (= ${gcc:Version}), g++-15-powerpc64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-powerpc64-linux-gnu ++Description: GNU Objective-C++ compiler for the powerpc64-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ powerpc64-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-powerpc64le-linux-gnu (= ${gcc:Version}), g++-15-powerpc64le-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-powerpc64le-linux-gnu ++Description: GNU Objective-C++ compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ powerpc64le-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-m68k-linux-gnu (= ${gcc:Version}), g++-15-m68k-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-m68k-linux-gnu ++Description: GNU Objective-C++ compiler for the m68k-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ m68k-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-riscv64-linux-gnu (= ${gcc:Version}), g++-15-riscv64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-riscv64-linux-gnu ++Description: GNU Objective-C++ compiler for the riscv64-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ riscv64-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-sh4-linux-gnu ++Architecture: sh4 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sh4-linux-gnu (= ${gcc:Version}), g++-15-sh4-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-sh4-linux-gnu ++Description: GNU Objective-C++ compiler for the sh4-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ sh4-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sparc-linux-gnu (= ${gcc:Version}), g++-15-sparc-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-sparc-linux-gnu ++Description: GNU Objective-C++ compiler for the sparc-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ sparc-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-sparc64-linux-gnu (= ${gcc:Version}), g++-15-sparc64-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-sparc64-linux-gnu ++Description: GNU Objective-C++ compiler for the sparc64-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ sparc64-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-s390x-linux-gnu (= ${gcc:Version}), g++-15-s390x-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-s390x-linux-gnu ++Description: GNU Objective-C++ compiler for the s390x-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ s390x-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-x86-64-linux-gnux32 (= ${gcc:Version}), g++-15-x86-64-linux-gnux32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-x86-64-linux-gnux32 ++Description: GNU Objective-C++ compiler for the x86_64-linux-gnux32 architecture ++ This is the GNU Objective-C++ compiler for the ++ x86_64-linux-gnux32 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), g++-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mips64el-linux-gnuabin32 ++Description: GNU Objective-C++ compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU Objective-C++ compiler for the ++ mips64el-linux-gnuabin32 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), g++-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mipsisa32r6-linux-gnu ++Description: GNU Objective-C++ compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ mipsisa32r6-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), g++-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mipsisa32r6el-linux-gnu ++Description: GNU Objective-C++ compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ mipsisa32r6el-linux-gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), g++-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mipsisa64r6-linux-gnuabi64 ++Description: GNU Objective-C++ compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU Objective-C++ compiler for the ++ mipsisa64r6-linux-gnuabi64 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), g++-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mipsisa64r6el-linux-gnuabi64 ++Description: GNU Objective-C++ compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU Objective-C++ compiler for the ++ mipsisa64r6el-linux-gnuabi64 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), g++-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mipsisa64r6-linux-gnuabin32 ++Description: GNU Objective-C++ compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU Objective-C++ compiler for the ++ mipsisa64r6-linux-gnuabin32 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), g++-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler-mipsisa64r6el-linux-gnuabin32 ++Description: GNU Objective-C++ compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU Objective-C++ compiler for the ++ mipsisa64r6el-linux-gnuabin32 architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gobjc++-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gobjc-15-for-host (= ${gcc:Version}), g++-15-for-host (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU Objective-C++ compiler for the host architecture ++ This is the GNU Objective-C++ compiler for the host architecture, ++ which compiles Objective-C++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gobjc++-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gobjc++-15 (>= ${gcc:Version}), ++ gobjc-15-for-build (= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), g++-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU Objective-C++ compiler for the build architecture ++ This is the GNU Objective-C++ compiler for the build architecture, ++ which compiles Objective-C++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ This is a dependency package. ++ ++Package: gobjc++-15 ++Architecture: any ++Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15${target:suffix} (= ${gcc:Version}), gobjc-15 (= ${gcc:Version}), g++-15 (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler ++Description: GNU Objective-C++ compiler ++ This is the GNU Objective-C++ compiler, which compiles ++ Objective-C++ on platforms supported by the gcc compiler. It uses the ++ gcc backend to generate optimized code. ++ ++Package: gobjc++-15-multilib ++Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 ++Depends: gcc-15-base (= ${gcc:Version}), gobjc++-15 (= ${gcc:Version}), g++-15-multilib (= ${gcc:Version}), gobjc-15-multilib (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Objective-C++ compiler (multilib support) ++ This is the GNU Objective-C++ compiler, which compiles Objective-C++ on ++ platforms supported by the gcc compiler. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++ ++Package: gobjc-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-alpha-linux-gnu ++Description: GNU Objective-C compiler for the alpha-linux-gnu architecture ++ This is the GNU Objective-C compiler for the alpha-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-x86-64-linux-gnu ++Description: GNU Objective-C compiler for the x86_64-linux-gnu architecture ++ This is the GNU Objective-C compiler for the x86_64-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-arm-linux-gnueabi ++Description: GNU Objective-C compiler for the arm-linux-gnueabi architecture ++ This is the GNU Objective-C compiler for the arm-linux-gnueabi ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-arm-linux-gnueabihf ++Description: GNU Objective-C compiler for the arm-linux-gnueabihf architecture ++ This is the GNU Objective-C compiler for the arm-linux-gnueabihf ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-aarch64-linux-gnu ++Description: GNU Objective-C compiler for the aarch64-linux-gnu architecture ++ This is the GNU Objective-C compiler for the aarch64-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-i686-linux-gnu ++Description: GNU Objective-C compiler for the i686-linux-gnu architecture ++ This is the GNU Objective-C compiler for the i686-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-loongarch64-linux-gnu ++Description: GNU Objective-C compiler for the loongarch64-linux-gnu architecture ++ This is the GNU Objective-C compiler for the loongarch64-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mipsel-linux-gnu ++Description: GNU Objective-C compiler for the mipsel-linux-gnu architecture ++ This is the GNU Objective-C compiler for the mipsel-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mips64-linux-gnuabi64 ++Description: GNU Objective-C compiler for the mips64-linux-gnuabi64 architecture ++ This is the GNU Objective-C compiler for the mips64-linux-gnuabi64 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mips64el-linux-gnuabi64 ++Description: GNU Objective-C compiler for the mips64el-linux-gnuabi64 architecture ++ This is the GNU Objective-C compiler for the mips64el-linux-gnuabi64 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mips64-linux-gnuabin32 ++Description: GNU Objective-C compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU Objective-C compiler for the mips64-linux-gnuabin32 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-powerpc-linux-gnu ++Description: GNU Objective-C compiler for the powerpc-linux-gnu architecture ++ This is the GNU Objective-C compiler for the powerpc-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-powerpc64-linux-gnu ++Description: GNU Objective-C compiler for the powerpc64-linux-gnu architecture ++ This is the GNU Objective-C compiler for the powerpc64-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-powerpc64le-linux-gnu ++Description: GNU Objective-C compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU Objective-C compiler for the powerpc64le-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-m68k-linux-gnu ++Description: GNU Objective-C compiler for the m68k-linux-gnu architecture ++ This is the GNU Objective-C compiler for the m68k-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-riscv64-linux-gnu ++Description: GNU Objective-C compiler for the riscv64-linux-gnu architecture ++ This is the GNU Objective-C compiler for the riscv64-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-sh4-linux-gnu ++Architecture: sh4 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-sh4-linux-gnu ++Description: GNU Objective-C compiler for the sh4-linux-gnu architecture ++ This is the GNU Objective-C compiler for the sh4-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-sparc-linux-gnu ++Description: GNU Objective-C compiler for the sparc-linux-gnu architecture ++ This is the GNU Objective-C compiler for the sparc-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-sparc64-linux-gnu ++Description: GNU Objective-C compiler for the sparc64-linux-gnu architecture ++ This is the GNU Objective-C compiler for the sparc64-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-s390x-linux-gnu ++Description: GNU Objective-C compiler for the s390x-linux-gnu architecture ++ This is the GNU Objective-C compiler for the s390x-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-x86-64-linux-gnux32 ++Description: GNU Objective-C compiler for the x86_64-linux-gnux32 architecture ++ This is the GNU Objective-C compiler for the x86_64-linux-gnux32 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mips64el-linux-gnuabin32 ++Description: GNU Objective-C compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU Objective-C compiler for the mips64el-linux-gnuabin32 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mipsisa32r6-linux-gnu ++Description: GNU Objective-C compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU Objective-C compiler for the mipsisa32r6-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mipsisa32r6el-linux-gnu ++Description: GNU Objective-C compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU Objective-C compiler for the mipsisa32r6el-linux-gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mipsisa64r6-linux-gnuabi64 ++Description: GNU Objective-C compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU Objective-C compiler for the mipsisa64r6-linux-gnuabi64 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mipsisa64r6el-linux-gnuabi64 ++Description: GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabi64 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mipsisa64r6-linux-gnuabin32 ++Description: GNU Objective-C compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU Objective-C compiler for the mipsisa64r6-linux-gnuabin32 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libobjc-15-dev (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc-15-doc (>= ${gcc:SoftVersion}), ++Provides: objc-compiler-mipsisa64r6el-linux-gnuabin32 ++Description: GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU Objective-C compiler for the mipsisa64r6el-linux-gnuabin32 ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gobjc-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU Objective-C compiler for the host architecture ++ This is the GNU Objective-C compiler for the host architecture, ++ which compiles Objective-C on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gobjc-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gobjc-15 (>= ${gcc:Version}), ${misc:Depends}, ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}) ++Description: GNU Objective-C compiler for the build architecture ++ This is the GNU Objective-C compiler for the build architecture, ++ which compiles Objective-C on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ This is a dependency package. ++ ++Package: gobjc-15 ++Architecture: any ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15${target:suffix} (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjc:multilib}, gcc-15-doc (>= ${gcc:SoftVersion}) ++Provides: objc-compiler ++Description: GNU Objective-C compiler ++ This is the GNU Objective-C compiler, which compiles ++ Objective-C on platforms supported by the gcc compiler. It uses the ++ gcc backend to generate optimized code. ++ ++Package: gobjc-15-multilib ++Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 ++Depends: gcc-15-base (= ${gcc:Version}), gobjc-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Objective-C compiler (multilib support) ++ This is the GNU Objective-C compiler, which compiles Objective-C on platforms ++ supported by the gcc compiler. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++ ++Package: libobjc-15-dev ++X-DH-Build-For-Type: target ++Architecture: any ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libobjc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Multi-Arch: same ++Description: Runtime library for GNU Objective-C applications (development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++Package: lib64objc-15-dev ++X-DH-Build-For-Type: target ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Objective-C applications (64bit development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++Package: lib32objc-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Objective-C applications (32bit development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++Package: libn32objc-15-dev ++X-DH-Build-For-Type: target ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Objective-C applications (n32 development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++Package: libx32objc-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 i386 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32objc4 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Objective-C applications (x32 development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++Package: gfortran-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the alpha-linux-gnu architecture ++ This is the GNU Fortran compiler for the alpha-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the x86_64-linux-gnu architecture ++ This is the GNU Fortran compiler for the x86_64-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the arm-linux-gnueabi architecture ++ This is the GNU Fortran compiler for the arm-linux-gnueabi architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the arm-linux-gnueabihf architecture ++ This is the GNU Fortran compiler for the arm-linux-gnueabihf architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the aarch64-linux-gnu architecture ++ This is the GNU Fortran compiler for the aarch64-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the i686-linux-gnu architecture ++ This is the GNU Fortran compiler for the i686-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-loongarch64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the loongarch64-linux-gnu architecture ++ This is the GNU Fortran compiler for the loongarch64-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mipsel-linux-gnu architecture ++ This is the GNU Fortran compiler for the mipsel-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mips64-linux-gnuabi64 architecture ++ This is the GNU Fortran compiler for the mips64-linux-gnuabi64 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mips64el-linux-gnuabi64 architecture ++ This is the GNU Fortran compiler for the mips64el-linux-gnuabi64 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU Fortran compiler for the mips64-linux-gnuabin32 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the powerpc-linux-gnu architecture ++ This is the GNU Fortran compiler for the powerpc-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the powerpc64-linux-gnu architecture ++ This is the GNU Fortran compiler for the powerpc64-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU Fortran compiler for the powerpc64le-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-m68k-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the m68k-linux-gnu architecture ++ This is the GNU Fortran compiler for the m68k-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the riscv64-linux-gnu architecture ++ This is the GNU Fortran compiler for the riscv64-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-sh4-linux-gnu ++Architecture: sh4 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sh4-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the sh4-linux-gnu architecture ++ This is the GNU Fortran compiler for the sh4-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the sparc-linux-gnu architecture ++ This is the GNU Fortran compiler for the sparc-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the sparc64-linux-gnu architecture ++ This is the GNU Fortran compiler for the sparc64-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the s390x-linux-gnu architecture ++ This is the GNU Fortran compiler for the s390x-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the x86_64-linux-gnux32 architecture ++ This is the GNU Fortran compiler for the x86_64-linux-gnux32 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU Fortran compiler for the mips64el-linux-gnuabin32 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU Fortran compiler for the mipsisa32r6-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU Fortran compiler for the mipsisa32r6el-linux-gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU Fortran compiler for the mipsisa64r6-linux-gnuabi64 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU Fortran compiler for the mipsisa64r6el-linux-gnuabi64 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU Fortran compiler for the mipsisa64r6-linux-gnuabin32 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libgfortran-15-dev (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran-15-doc, ++ libcoarrays-dev ++Description: GNU Fortran compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU Fortran compiler for the mipsisa64r6el-linux-gnuabin32 architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ ++Package: gfortran-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gfortran-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU Fortran compiler for the host architecture ++ This is the GNU Fortran compiler for the host architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gfortran-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gfortran-15 (>= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU Fortran compiler for the build architecture ++ This is the GNU Fortran compiler for the build architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ This is a dependency package. ++ ++Package: gfortran-15 ++Architecture: any ++Depends: gfortran-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} ++Provides: fortran95-compiler, ${fortran:mod-version} ++Suggests: ${gfortran:multilib}, gfortran-15-doc ++Description: GNU Fortran compiler ++ This is the GNU Fortran compiler, which compiles ++ Fortran on platforms supported by the gcc compiler. It uses the ++ gcc backend to generate optimized code. ++ ++Package: gfortran-15-multilib ++Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 ++Depends: gcc-15-base (= ${gcc:Version}), gfortran-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Fortran compiler (multilib support) ++ This is the GNU Fortran compiler, which compiles Fortran on platforms ++ supported by the gcc compiler. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++ ++Package: libgfortran-15-dev ++X-DH-Build-For-Type: target ++Architecture: any ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libgfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Multi-Arch: same ++Description: Runtime library for GNU Fortran applications (development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++Package: lib64gfortran-15-dev ++X-DH-Build-For-Type: target ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Fortran applications (64bit development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++Package: lib32gfortran-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Fortran applications (32bit development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++Package: libn32gfortran-15-dev ++X-DH-Build-For-Type: target ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Fortran applications (n32 development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++Package: libx32gfortran-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 i386 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32gfortran5 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Fortran applications (x32 development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++Package: gccgo-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-alpha-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the alpha-linux-gnu architecture ++ This is the GNU Go compiler for the alpha-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the x86_64-linux-gnu architecture ++ This is the GNU Go compiler for the x86_64-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabi (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the arm-linux-gnueabi architecture ++ This is the GNU Go compiler for the arm-linux-gnueabi architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-arm-linux-gnueabihf (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the arm-linux-gnueabihf architecture ++ This is the GNU Go compiler for the arm-linux-gnueabihf architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-aarch64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the aarch64-linux-gnu architecture ++ This is the GNU Go compiler for the aarch64-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-i686-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the i686-linux-gnu architecture ++ This is the GNU Go compiler for the i686-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsel-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mipsel-linux-gnu architecture ++ This is the GNU Go compiler for the mipsel-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mips64-linux-gnuabi64 architecture ++ This is the GNU Go compiler for the mips64-linux-gnuabi64 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mips64el-linux-gnuabi64 architecture ++ This is the GNU Go compiler for the mips64el-linux-gnuabi64 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU Go compiler for the mips64-linux-gnuabin32 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the powerpc-linux-gnu architecture ++ This is the GNU Go compiler for the powerpc-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the powerpc64-linux-gnu architecture ++ This is the GNU Go compiler for the powerpc64-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-powerpc64le-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU Go compiler for the powerpc64le-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-riscv64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the riscv64-linux-gnu architecture ++ This is the GNU Go compiler for the riscv64-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the sparc-linux-gnu architecture ++ This is the GNU Go compiler for the sparc-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-sparc64-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the sparc64-linux-gnu architecture ++ This is the GNU Go compiler for the sparc64-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-s390x-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the s390x-linux-gnu architecture ++ This is the GNU Go compiler for the s390x-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-x86-64-linux-gnux32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the x86_64-linux-gnux32 architecture ++ This is the GNU Go compiler for the x86_64-linux-gnux32 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mips64el-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU Go compiler for the mips64el-linux-gnuabin32 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU Go compiler for the mipsisa32r6-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa32r6el-linux-gnu (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU Go compiler for the mipsisa32r6el-linux-gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU Go compiler for the mipsisa64r6-linux-gnuabi64 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabi64 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU Go compiler for the mipsisa64r6el-linux-gnuabi64 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU Go compiler for the mipsisa64r6-linux-gnuabin32 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15-mipsisa64r6el-linux-gnuabin32 (= ${gcc:Version}), libgo-15-dev (>= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12 (<< 8-20171209-2) ++Replaces: libgo12 (<< 8-20171209-2) ++Description: GNU Go compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU Go compiler for the mipsisa64r6el-linux-gnuabin32 architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ ++Package: gccgo-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gccgo-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU Go compiler for the host architecture ++ This is the GNU Go compiler for the host architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gccgo-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccgo-15 (>= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU Go compiler for the build architecture ++ This is the GNU Go compiler for the build architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ . ++ This is a dependency package. ++ ++Package: gccgo-15 ++Architecture: any ++Depends: gcc-15-base (= ${gcc:Version}), gccgo-15${target:suffix} (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${misc:Depends} ++Provides: go-compiler ++Suggests: ${go:multilib}, gccgo-15-doc, , ++Conflicts: ${golang:Conflicts} ++Description: GNU Go compiler ++ This is the GNU Go compiler, which compiles Go on platforms supported ++ by the gcc compiler. It uses the gcc backend to generate optimized code. ++ ++Package: gccgo-15-multilib ++Architecture: amd64 i386 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 s390 sparc sparc64 x32 ++Depends: gcc-15-base (= ${gcc:Version}), gccgo-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libgobiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: ${dep:libgobiarchdbg} ++Description: GNU Go compiler (multilib support) ++ This is the GNU Go compiler, which compiles Go on platforms supported ++ by the gcc compiler. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++ ++Package: libgo-15-dev ++X-DH-Build-For-Type: target ++Architecture: any ++Multi-Arch: same ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), libgo24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Go applications (development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++Package: lib64go-15-dev ++X-DH-Build-For-Type: target ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), lib64go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Go applications (64bit development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++Package: lib32go-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), lib32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Go applications (32bit development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++Package: libn32go-15-dev ++X-DH-Build-For-Type: target ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), libn32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Go applications (n32 development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++Package: libx32go-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 i386 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32go24 (>= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Go applications (x32 development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++Package: libgo24 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: any ++Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Go applications ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++Package: lib64go24 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Go applications (64bit) ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++Package: lib32go24 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++Description: Runtime library for GNU Go applications (32bit) ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++Package: libn32go24 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: lib32go24 [amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mipsn32r6 mipsn32r6el] ++Description: Runtime library for GNU Go applications (n32) ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++Package: libx32go24 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: amd64 i386 ++Depends: gcc-15-base (= ${gcc:Version}), ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Description: Runtime library for GNU Go applications (x32) ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++Package: libstdc++-15-dev ++X-DH-Build-For-Type: target ++Architecture: any ++Multi-Arch: same ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libgcc-15-dev (= ${gcc:Version}), ++ libstdc++6 (>= ${gcc:Version}), ${dep:libcdev}, ${misc:Depends} ++Suggests: libstdc++-15-doc ++Provides: libstdc++-dev ++Description: GNU Standard C++ Library v3 (development files) ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ ++Package: libstdc++-15-pic ++X-DH-Build-For-Type: target ++Architecture: any ++Multi-Arch: same ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), ++ libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Standard C++ Library v3 (shared library subset kit) ++ This is used to develop subsets of the libstdc++ shared libraries for ++ use on custom installation floppies and in embedded systems. ++ . ++ Unless you are making one of those, you will not need this package. ++ ++Package: libstdc++6-15-dbg ++X-DH-Build-For-Type: target ++Architecture: any ++Section: debug ++Depends: gcc-15-base (= ${gcc:Version}), libstdc++6 (>= ${gcc:Version}), ++ , ${shlibs:Depends}, ${misc:Depends} ++Provides: ++Multi-Arch: same ++Recommends: libstdc++-15-dev (= ${gcc:Version}) ++Conflicts: libstdc++5-dbg, libstdc++5-3.3-dbg, libstdc++6-dbg, ++ libstdc++6-4.0-dbg, libstdc++6-4.1-dbg, libstdc++6-4.2-dbg, ++ libstdc++6-4.3-dbg, libstdc++6-4.4-dbg, libstdc++6-4.5-dbg, ++ libstdc++6-4.6-dbg, libstdc++6-4.7-dbg, libstdc++6-4.8-dbg, ++ libstdc++6-4.9-dbg, libstdc++6-5-dbg, libstdc++6-6-dbg, ++ libstdc++6-7-dbg, libstdc++6-8-dbg, libstdc++6-9-dbg, ++ libstdc++6-10-dbg, libstdc++6-11-dbg, libstdc++6-12-dbg, ++ libstdc++6-13-dbg, libstdc++6-14-dbg, ++Description: GNU Standard C++ Library v3 (debug build) ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++ ++Package: lib32stdc++-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib32gcc-15-dev (= ${gcc:Version}), ++ lib32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Standard C++ Library v3 (development files) ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ ++Package: lib32stdc++6-15-dbg ++X-DH-Build-For-Type: target ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Section: debug ++Depends: gcc-15-base (= ${gcc:Version}), lib32stdc++6 (>= ${gcc:Version}), ++ libstdc++-15-dev (= ${gcc:Version}), , ++ ${shlibs:Depends}, ${misc:Depends} ++Conflicts: lib32stdc++6-dbg, lib32stdc++6-4.0-dbg, ++ lib32stdc++6-4.1-dbg, lib32stdc++6-4.2-dbg, lib32stdc++6-4.3-dbg, ++ lib32stdc++6-4.4-dbg, lib32stdc++6-4.5-dbg, lib32stdc++6-4.6-dbg, ++ lib32stdc++6-4.7-dbg, lib32stdc++6-4.8-dbg, lib32stdc++6-4.9-dbg, ++ lib32stdc++6-5-dbg, lib32stdc++6-6-dbg, lib32stdc++6-7-dbg, ++ lib32stdc++6-8-dbg, lib32stdc++6-9-dbg, lib32stdc++6-10-dbg, ++ lib32stdc++6-11-dbg, lib32stdc++6-12-dbg, lib32stdc++6-13-dbg, ++ lib32stdc++6-14-dbg, ++Description: GNU Standard C++ Library v3 (debug build) ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++ ++Package: lib64stdc++-15-dev ++X-DH-Build-For-Type: target ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib64gcc-15-dev (= ${gcc:Version}), ++ lib64stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Standard C++ Library v3 (development files) ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ ++Package: lib64stdc++6-15-dbg ++X-DH-Build-For-Type: target ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Section: debug ++Depends: gcc-15-base (= ${gcc:Version}), lib64stdc++6 (>= ${gcc:Version}), ++ libstdc++-15-dev (= ${gcc:Version}), , ++ ${shlibs:Depends}, ${misc:Depends} ++Conflicts: lib64stdc++6-dbg, lib64stdc++6-4.0-dbg, ++ lib64stdc++6-4.1-dbg, lib64stdc++6-4.2-dbg, lib64stdc++6-4.3-dbg, ++ lib64stdc++6-4.4-dbg, lib64stdc++6-4.5-dbg, lib64stdc++6-4.6-dbg, ++ lib64stdc++6-4.7-dbg, lib64stdc++6-4.8-dbg, lib64stdc++6-4.9-dbg, ++ lib64stdc++6-5-dbg, lib64stdc++6-6-dbg, lib64stdc++6-7-dbg, ++ lib64stdc++6-8-dbg, lib64stdc++6-9-dbg, lib64stdc++6-10-dbg, ++ lib64stdc++6-11-dbg, lib64stdc++6-12-dbg, lib64stdc++6-13-dbg, ++ lib64stdc++6-14-dbg, ++Description: GNU Standard C++ Library v3 (debug build) ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++ ++Package: libn32stdc++-15-dev ++X-DH-Build-For-Type: target ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libn32gcc-15-dev (= ${gcc:Version}), ++ libn32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Standard C++ Library v3 (development files) ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ ++Package: libn32stdc++6-15-dbg ++X-DH-Build-For-Type: target ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Section: debug ++Depends: gcc-15-base (= ${gcc:Version}), libn32stdc++6 (>= ${gcc:Version}), ++ libstdc++-15-dev (= ${gcc:Version}), , ++ ${shlibs:Depends}, ${misc:Depends} ++Conflicts: libn32stdc++6-dbg, libn32stdc++6-4.0-dbg, ++ libn32stdc++6-4.1-dbg, libn32stdc++6-4.2-dbg, libn32stdc++6-4.3-dbg, ++ libn32stdc++6-4.4-dbg, libn32stdc++6-4.5-dbg, libn32stdc++6-4.6-dbg, ++ libn32stdc++6-4.7-dbg, libn32stdc++6-4.8-dbg, libn32stdc++6-4.9-dbg, ++ libn32stdc++6-5-dbg, libn32stdc++6-6-dbg, libn32stdc++6-7-dbg, ++ libn32stdc++6-8-dbg, libn32stdc++6-9-dbg, libn32stdc++6-10-dbg, ++ libn32stdc++6-11-dbg, libn32stdc++6-12-dbg, libn32stdc++6-13-dbg, ++ libn32stdc++6-14-dbg, ++Description: GNU Standard C++ Library v3 (debug build) ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++ ++Package: libx32stdc++-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 i386 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libx32gcc-15-dev (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), ++ libx32stdc++6 (>= ${gcc:Version}), libstdc++-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Standard C++ Library v3 (development files) ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ ++Package: libx32stdc++6-15-dbg ++X-DH-Build-For-Type: target ++Architecture: amd64 i386 ++Section: debug ++Depends: gcc-15-base (= ${gcc:Version}), libx32stdc++6 (>= ${gcc:Version}), ++ libstdc++-15-dev (= ${gcc:Version}), , ++ ${shlibs:Depends}, ${misc:Depends} ++Conflicts: libx32stdc++6-dbg, libx32stdc++6-4.6-dbg, ++ libx32stdc++6-4.7-dbg, libx32stdc++6-4.8-dbg, libx32stdc++6-4.9-dbg, ++ libx32stdc++6-5-dbg, libx32stdc++6-6-dbg, libx32stdc++6-7-dbg, ++ libx32stdc++6-8-dbg, libx32stdc++6-9-dbg, libx32stdc++6-10-dbg, ++ libx32stdc++6-11-dbg, libx32stdc++6-12-dbg, libx32stdc++6-13-dbg, ++ libx32stdc++6-14-dbg, ++Description: GNU Standard C++ Library v3 (debug build) ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++ ++Package: libstdc++-15-doc ++Build-Profiles: ++Architecture: all ++Section: doc ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, ++ libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, ++ libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, ++ libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc, ++ libstdc++-7-doc, libstdc++-8-doc, libstdc++-9-doc, libstdc++-10-doc, ++ libstdc++-11-doc, libstdc++-12-doc, libstdc++-13-doc, libstdc++-14-doc, ++Description: GNU Standard C++ Library v3 (documentation files) ++ This package contains documentation files for the GNU stdc++ library. ++ . ++ One set is the distribution documentation, the other set is the ++ source documentation including a namespace list, class hierarchy, ++ alphabetical list, compound list, file list, namespace members, ++ compound members and file members. ++ ++Package: gnat-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-alpha-linux-gnu, gnat-8-alpha-linux-gnu, ++ gnat-9-alpha-linux-gnu, gnat-10-alpha-linux-gnu, ++ gnat-11-alpha-linux-gnu, gnat-12-alpha-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the alpha-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-x86-64-linux-gnu, gnat-8-x86-64-linux-gnu, ++ gnat-9-x86-64-linux-gnu, gnat-10-x86-64-linux-gnu, ++ gnat-11-x86-64-linux-gnu, gnat-12-x86-64-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the x86_64-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-arm-linux-gnueabi, gnat-8-arm-linux-gnueabi, ++ gnat-9-arm-linux-gnueabi, gnat-10-arm-linux-gnueabi, ++ gnat-11-arm-linux-gnueabi, gnat-12-arm-linux-gnueabi, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the arm-linux-gnueabi architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-arm-linux-gnueabihf, gnat-8-arm-linux-gnueabihf, ++ gnat-9-arm-linux-gnueabihf, gnat-10-arm-linux-gnueabihf, ++ gnat-11-arm-linux-gnueabihf, gnat-12-arm-linux-gnueabihf, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the arm-linux-gnueabihf architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-aarch64-linux-gnu, gnat-8-aarch64-linux-gnu, ++ gnat-9-aarch64-linux-gnu, gnat-10-aarch64-linux-gnu, ++ gnat-11-aarch64-linux-gnu, gnat-12-aarch64-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the aarch64-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-i686-linux-gnu, gnat-8-i686-linux-gnu, ++ gnat-9-i686-linux-gnu, gnat-10-i686-linux-gnu, ++ gnat-11-i686-linux-gnu, gnat-12-i686-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the i686-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-loongarch64-linux-gnu, gnat-8-loongarch64-linux-gnu, ++ gnat-9-loongarch64-linux-gnu, gnat-10-loongarch64-linux-gnu, ++ gnat-11-loongarch64-linux-gnu, gnat-12-loongarch64-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the loongarch64-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mipsel-linux-gnu, gnat-8-mipsel-linux-gnu, ++ gnat-9-mipsel-linux-gnu, gnat-10-mipsel-linux-gnu, ++ gnat-11-mipsel-linux-gnu, gnat-12-mipsel-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mipsel-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mips64-linux-gnuabi64, gnat-8-mips64-linux-gnuabi64, ++ gnat-9-mips64-linux-gnuabi64, gnat-10-mips64-linux-gnuabi64, ++ gnat-11-mips64-linux-gnuabi64, gnat-12-mips64-linux-gnuabi64, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mips64-linux-gnuabi64 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mips64el-linux-gnuabi64, gnat-8-mips64el-linux-gnuabi64, ++ gnat-9-mips64el-linux-gnuabi64, gnat-10-mips64el-linux-gnuabi64, ++ gnat-11-mips64el-linux-gnuabi64, gnat-12-mips64el-linux-gnuabi64, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mips64el-linux-gnuabi64 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mips64-linux-gnuabin32, gnat-8-mips64-linux-gnuabin32, ++ gnat-9-mips64-linux-gnuabin32, gnat-10-mips64-linux-gnuabin32, ++ gnat-11-mips64-linux-gnuabin32, gnat-12-mips64-linux-gnuabin32, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mips64-linux-gnuabin32 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-powerpc-linux-gnu, gnat-8-powerpc-linux-gnu, ++ gnat-9-powerpc-linux-gnu, gnat-10-powerpc-linux-gnu, ++ gnat-11-powerpc-linux-gnu, gnat-12-powerpc-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the powerpc-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-powerpc64-linux-gnu, gnat-8-powerpc64-linux-gnu, ++ gnat-9-powerpc64-linux-gnu, gnat-10-powerpc64-linux-gnu, ++ gnat-11-powerpc64-linux-gnu, gnat-12-powerpc64-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the powerpc64-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-powerpc64le-linux-gnu, gnat-8-powerpc64le-linux-gnu, ++ gnat-9-powerpc64le-linux-gnu, gnat-10-powerpc64le-linux-gnu, ++ gnat-11-powerpc64le-linux-gnu, gnat-12-powerpc64le-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the powerpc64le-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-m68k-linux-gnu, gnat-8-m68k-linux-gnu, ++ gnat-9-m68k-linux-gnu, gnat-10-m68k-linux-gnu, ++ gnat-11-m68k-linux-gnu, gnat-12-m68k-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the m68k-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-riscv64-linux-gnu, gnat-8-riscv64-linux-gnu, ++ gnat-9-riscv64-linux-gnu, gnat-10-riscv64-linux-gnu, ++ gnat-11-riscv64-linux-gnu, gnat-12-riscv64-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the riscv64-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-sh4-linux-gnu ++Architecture: sh4 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-sh4-linux-gnu, gnat-8-sh4-linux-gnu, ++ gnat-9-sh4-linux-gnu, gnat-10-sh4-linux-gnu, ++ gnat-11-sh4-linux-gnu, gnat-12-sh4-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the sh4-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-sparc-linux-gnu, gnat-8-sparc-linux-gnu, ++ gnat-9-sparc-linux-gnu, gnat-10-sparc-linux-gnu, ++ gnat-11-sparc-linux-gnu, gnat-12-sparc-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the sparc-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-sparc64-linux-gnu, gnat-8-sparc64-linux-gnu, ++ gnat-9-sparc64-linux-gnu, gnat-10-sparc64-linux-gnu, ++ gnat-11-sparc64-linux-gnu, gnat-12-sparc64-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the sparc64-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-s390x-linux-gnu, gnat-8-s390x-linux-gnu, ++ gnat-9-s390x-linux-gnu, gnat-10-s390x-linux-gnu, ++ gnat-11-s390x-linux-gnu, gnat-12-s390x-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the s390x-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-x86-64-linux-gnux32, gnat-8-x86-64-linux-gnux32, ++ gnat-9-x86-64-linux-gnux32, gnat-10-x86-64-linux-gnux32, ++ gnat-11-x86-64-linux-gnux32, gnat-12-x86-64-linux-gnux32, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the x86_64-linux-gnux32 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mips64el-linux-gnuabin32, gnat-8-mips64el-linux-gnuabin32, ++ gnat-9-mips64el-linux-gnuabin32, gnat-10-mips64el-linux-gnuabin32, ++ gnat-11-mips64el-linux-gnuabin32, gnat-12-mips64el-linux-gnuabin32, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mips64el-linux-gnuabin32 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mipsisa32r6-linux-gnu, gnat-8-mipsisa32r6-linux-gnu, ++ gnat-9-mipsisa32r6-linux-gnu, gnat-10-mipsisa32r6-linux-gnu, ++ gnat-11-mipsisa32r6-linux-gnu, gnat-12-mipsisa32r6-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mipsisa32r6-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mipsisa32r6el-linux-gnu, gnat-8-mipsisa32r6el-linux-gnu, ++ gnat-9-mipsisa32r6el-linux-gnu, gnat-10-mipsisa32r6el-linux-gnu, ++ gnat-11-mipsisa32r6el-linux-gnu, gnat-12-mipsisa32r6el-linux-gnu, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mipsisa32r6el-linux-gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mipsisa64r6-linux-gnuabi64, gnat-8-mipsisa64r6-linux-gnuabi64, ++ gnat-9-mipsisa64r6-linux-gnuabi64, gnat-10-mipsisa64r6-linux-gnuabi64, ++ gnat-11-mipsisa64r6-linux-gnuabi64, gnat-12-mipsisa64r6-linux-gnuabi64, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mipsisa64r6el-linux-gnuabi64, gnat-8-mipsisa64r6el-linux-gnuabi64, ++ gnat-9-mipsisa64r6el-linux-gnuabi64, gnat-10-mipsisa64r6el-linux-gnuabi64, ++ gnat-11-mipsisa64r6el-linux-gnuabi64, gnat-12-mipsisa64r6el-linux-gnuabi64, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mipsisa64r6-linux-gnuabin32, gnat-8-mipsisa64r6-linux-gnuabin32, ++ gnat-9-mipsisa64r6-linux-gnuabin32, gnat-10-mipsisa64r6-linux-gnuabin32, ++ gnat-11-mipsisa64r6-linux-gnuabin32, gnat-12-mipsisa64r6-linux-gnuabin32, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012 ++Provides: gnat-15-${libgnat:alihash} ++Conflicts: gnat-4.9, gnat-5, gnat-6, gnat-7, gnat-8, gnat-9, ++ gnat-10, gnat-11, gnat-12, gnat-13, gnat-14, ++ gnat-7-mipsisa64r6el-linux-gnuabin32, gnat-8-mipsisa64r6el-linux-gnuabin32, ++ gnat-9-mipsisa64r6el-linux-gnuabin32, gnat-10-mipsisa64r6el-linux-gnuabin32, ++ gnat-11-mipsisa64r6el-linux-gnuabin32, gnat-12-mipsisa64r6el-linux-gnuabin32, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++Description: GNU Ada compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: gnat-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gnat-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU Ada compiler for the host architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gnat-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gnat-15 (>= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU Ada compiler for the build architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ . ++ This is a dependency package. ++ ++Package: gnat-15 ++Architecture: any ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gnat-15${target:suffix} (= ${gcc:Version}), gcc-15-base (= ${gcc:Version}), gcc-15 (>= ${gcc:SoftVersion}), ${misc:Depends} ++Suggests: gnat-15-doc, ada-reference-manual-2012, gnat-15-sjlj ++Description: GNU Ada compiler ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ ++Package: libgnat-15 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: any ++Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: runtime for applications compiled with GNAT (shared library) ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ The libgnat library provides runtime components needed by most ++ applications produced with GNAT. ++ . ++ This package contains the runtime shared library. ++ ++Package: gdc-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the x86_64-linux-gnu architecture ++ This is the GNU D compiler for the x86_64-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the arm-linux-gnueabi architecture ++ This is the GNU D compiler for the arm-linux-gnueabi architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the arm-linux-gnueabihf architecture ++ This is the GNU D compiler for the arm-linux-gnueabihf architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the aarch64-linux-gnu architecture ++ This is the GNU D compiler for the aarch64-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the i686-linux-gnu architecture ++ This is the GNU D compiler for the i686-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the loongarch64-linux-gnu architecture ++ This is the GNU D compiler for the loongarch64-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mipsel-linux-gnu architecture ++ This is the GNU D compiler for the mipsel-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mips64-linux-gnuabi64 architecture ++ This is the GNU D compiler for the mips64-linux-gnuabi64 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mips64el-linux-gnuabi64 architecture ++ This is the GNU D compiler for the mips64el-linux-gnuabi64 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mips64-linux-gnuabin32 architecture ++ This is the GNU D compiler for the mips64-linux-gnuabin32 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the powerpc-linux-gnu architecture ++ This is the GNU D compiler for the powerpc-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the powerpc64-linux-gnu architecture ++ This is the GNU D compiler for the powerpc64-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the powerpc64le-linux-gnu architecture ++ This is the GNU D compiler for the powerpc64le-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the riscv64-linux-gnu architecture ++ This is the GNU D compiler for the riscv64-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the sparc-linux-gnu architecture ++ This is the GNU D compiler for the sparc-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the sparc64-linux-gnu architecture ++ This is the GNU D compiler for the sparc64-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the s390x-linux-gnu architecture ++ This is the GNU D compiler for the s390x-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the x86_64-linux-gnux32 architecture ++ This is the GNU D compiler for the x86_64-linux-gnux32 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mips64el-linux-gnuabin32 architecture ++ This is the GNU D compiler for the mips64el-linux-gnuabin32 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mipsisa32r6-linux-gnu architecture ++ This is the GNU D compiler for the mipsisa32r6-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU D compiler for the mipsisa32r6el-linux-gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU D compiler for the mipsisa64r6-linux-gnuabi64 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU D compiler for the mipsisa64r6el-linux-gnuabi64 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU D compiler for the mipsisa64r6-linux-gnuabin32 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2) for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU D compiler for the mipsisa64r6el-linux-gnuabin32 architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gdc-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU D compiler (version 2) for the host architecture ++ This is the GNU D compiler for the host architecture, which compiles D on ++ platforms supported by gcc. It uses the gcc backend to generate optimised ++ code. ++ . ++ This compiler supports D language version 2. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gdc-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gdc-15 (>= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU D compiler (version 2) for the build architecture ++ This is the GNU D compiler for the build architecture, which compiles D on ++ platforms supported by gcc. It uses the gcc backend to generate optimised ++ code. ++ . ++ This compiler supports D language version 2. ++ . ++ This is a dependency package. ++ ++Package: gdc-15 ++Architecture: any ++Depends: gdc-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends} ++Provides: gdc, d-compiler, d-v2-compiler ++Replaces: gdc (<< 4.4.6-5) ++Description: GNU D compiler (version 2) ++ This is the GNU D compiler, which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++ ++Package: gdc-15-multilib ++Architecture: any ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gdc-15 (= ${gcc:Version}), gcc-15-multilib (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends} ++Description: GNU D compiler (version 2, multilib support) ++ This is the GNU D compiler, which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++ ++Package: libgphobos-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 arm64 armel armhf hppa i386 loong64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 ++Multi-Arch: same ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libgphobos6 (>= ${gdc:Version}), ++ zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} ++Description: Phobos D standard library ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: lib64gphobos-15-dev ++X-DH-Build-For-Type: target ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib64gphobos6 (>= ${gdc:Version}), ++ lib64gcc-15-dev (= ${gcc:Version}), lib64z1-dev [!mips !mipsel !mipsn32 !mipsn32el !mipsr6 !mipsr6el !mipsn32r6 !mipsn32r6el], ++ ${shlibs:Depends}, ${misc:Depends} ++Description: Phobos D standard library (64bit development files) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: lib32gphobos-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), lib32gphobos6 (>= ${gdc:Version}), ++ lib32gcc-15-dev (= ${gcc:Version}), lib32z1-dev [!mipsn32 !mipsn32el !mips64 !mips64el !mipsn32r6 !mipsn32r6el !mips64r6 !mips64r6el], ++ ${shlibs:Depends}, ${misc:Depends} ++Description: Phobos D standard library (32bit development files) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: libn32gphobos-15-dev ++X-DH-Build-For-Type: target ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libn32gphobos6 (>= ${gdc:Version}), ++ libn32gcc-15-dev (= ${gcc:Version}), libn32z1-dev [!mips !mipsel !mips64 !mips64el !mipsr6 !mipsr6el !mips64r6 !mips64r6el], ++ ${shlibs:Depends}, ${misc:Depends} ++Description: Phobos D standard library (n32 development files) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: libx32gphobos-15-dev ++X-DH-Build-For-Type: target ++Architecture: amd64 i386 ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libx32gphobos6 (>= ${gdc:Version}), ++ libx32gcc-15-dev (= ${gcc:Version}), ${dep:libx32z}, ${shlibs:Depends}, ${misc:Depends} ++Description: Phobos D standard library (x32 development files) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: libgphobos6 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: amd64 arm64 armel armhf hppa i386 loong64 mips mips64 mips64el mips64r6 mips64r6el mipsel mipsn32 mipsn32el mipsn32r6 mipsn32r6el mipsr6 mipsr6el powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Replaces: libgphobos68 ++Breaks: dub (<< 1.16.0-1~) ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: lib64gphobos6 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: i386 powerpc sparc s390 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el x32 ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Replaces: lib64gphobos68 ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: lib32gphobos6 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Replaces: lib32gphobos68 ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: libn32gphobos6 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Conflicts: lib32phobos6 [amd64 ppc64 sparc64 x32 mipsn32 mipsn32el mipsn32r6 mipsn32r6el] ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: libx32gphobos6 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: amd64 i386 ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Replaces: libx32gphobos68 ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: gm2-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-alpha-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the alpha-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the alpha-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the x86_64-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the x86_64-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the arm-linux-gnueabi architecture ++ This is the GNU Modula-2 compiler for the arm-linux-gnueabi architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the arm-linux-gnueabihf architecture ++ This is the GNU Modula-2 compiler for the arm-linux-gnueabihf architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the aarch64-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the aarch64-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the i686-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the i686-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the loongarch64-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the loongarch64-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mipsel-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the mipsel-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mips64-linux-gnuabi64 architecture ++ This is the GNU Modula-2 compiler for the mips64-linux-gnuabi64 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mips64el-linux-gnuabi64 architecture ++ This is the GNU Modula-2 compiler for the mips64el-linux-gnuabi64 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU Modula-2 compiler for the mips64-linux-gnuabin32 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the powerpc64le-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-m68k-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the m68k-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the m68k-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the riscv64-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the riscv64-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the sparc-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the sparc-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the sparc64-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the sparc64-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the s390x-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the s390x-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the x86_64-linux-gnux32 architecture ++ This is the GNU Modula-2 compiler for the x86_64-linux-gnux32 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU Modula-2 compiler for the mips64el-linux-gnuabin32 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the mipsisa32r6-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU Modula-2 compiler for the mipsisa32r6el-linux-gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabi64 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabi64 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU Modula-2 compiler for the mipsisa64r6-linux-gnuabin32 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gm2cross}, libgm2-15-dev (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU Modula-2 compiler for the mipsisa64r6el-linux-gnuabin32 architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gm2-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gm2-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU Modula-2 compiler for the host architecture ++ This is the GNU Modula-2 compiler for the host architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gm2-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gm2-15 (>= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU Modula-2 compiler for the build architecture ++ This is the GNU Modula-2 compiler for the build architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ This is a dependency package. ++ ++Package: gm2-15 ++Architecture: any ++Depends: gm2-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gm2cross}, ${misc:Depends} ++Provides: gm2, m2-compiler ++Description: GNU Modula-2 compiler (version 2) ++ This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms ++ supported by gcc. It uses the gcc backend to generate optimised code. ++ ++Package: libgm2-15-dev ++X-DH-Build-For-Type: target ++Architecture: any ++Multi-Arch: same ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libgm2-20 (>= ${gm2:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 standard library ++ This is the Modula-2 standard library that comes with the gm2 compiler. ++ ++Package: libgm2-20 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: any ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Modula-2 standard library (runtime library) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++ ++Package: gm2-15-doc ++Architecture: all ++Section: doc ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Suggests: gm2-15 ++Description: Documentation for the GNU Modula-2 compiler (gm2) ++ Documentation for the GNU Modula-2 compiler in HTML and info format. ++ ++Package: gccrs-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the x86_64-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabi (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the arm-linux-gnueabi architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-arm-linux-gnueabihf (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the arm-linux-gnueabihf architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the aarch64-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-i686-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the i686-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-loongarch64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the loongarch64-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsel-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mipsel-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mips64-linux-gnuabi64 architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mips64el-linux-gnuabi64 architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mips64-linux-gnuabin32 architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the powerpc-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the powerpc64-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the powerpc64le-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the riscv64-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the sparc-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-sparc64-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the sparc64-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-s390x-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the s390x-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mips64el-linux-gnuabin32 architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mipsisa32r6-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mipsisa32r6el-linux-gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Rust compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gccrs-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gccrs-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU Rust compiler for the host architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gccrs-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccrs-15 (>= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU Rust compiler for the build architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ This is a dependency package. ++ ++Package: gccrs-15 ++Architecture: any ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gccrs-15${target:suffix} (= ${gcc:Version}), g++-15 (>= ${gcc:SoftVersion}), ${misc:Depends} ++Provides: gccrs, rust-compiler ++Description: GNU Rust compiler ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ ++Package: gcobol-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the x86_64-linux-gnu architecture ++ This is the GNU COBOL compiler for the x86_64-linux-gnu architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the aarch64-linux-gnu architecture ++ This is the GNU COBOL compiler for the aarch64-linux-gnu architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU COBOL compiler for the mips64-linux-gnuabin32 architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU COBOL compiler for the powerpc64le-linux-gnu architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the riscv64-linux-gnu architecture ++ This is the GNU COBOL compiler for the riscv64-linux-gnu architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU COBOL compiler for the mips64el-linux-gnuabin32 architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU COBOL compiler for the mipsisa32r6-linux-gnu architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU COBOL compiler for the mipsisa32r6el-linux-gnu architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU COBOL compiler for the mipsisa64r6-linux-gnuabi64 architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU COBOL compiler for the mipsisa64r6el-linux-gnuabi64 architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU COBOL compiler for the mipsisa64r6-linux-gnuabin32 architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), g++-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libgcobol-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU COBOL compiler for the mipsisa64r6el-linux-gnuabin32 architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: gcobol-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), gcobol-15${target:suffix} (>= ${gcc:SoftVersion}), ++ g++-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU COBOL compiler for the host architecture ++ This is the GNU COBOL compiler for the host architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gcobol-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcobol-15 (>= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), g++-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU COBOL compiler for the build architecture ++ This is the GNU COBOL compiler for the build architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ This is a dependency package. ++ ++Package: gcobol-15 ++Architecture: any ++Depends: gcobol-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), g++-15 (>= ${gcc:SoftVersion}), ${dep:gcobolcross}, ${misc:Depends} ++Provides: gcobol, cobol-compiler ++Description: GNU COBOL compiler ++ This is the GNU COBOL compiler, which compiles COBOL on platforms ++ supported by gcc. It uses the gcc backend to generate optimised code. ++ ++Package: libgcobol-15-dev ++X-DH-Build-For-Type: target ++Architecture: any ++Multi-Arch: same ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libgcobol1 (>= ${gcobol:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL standard library ++ This is the COBOL standard library that comes with the gcobol compiler. ++ ++Package: libgcobol1 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: any ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU COBOL standard library (runtime library) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++ ++Package: ga68-15-alpha-linux-gnu ++Architecture: alpha ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-alpha-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the alpha-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the alpha-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-x86-64-linux-gnu ++Architecture: amd64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-x86-64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the x86_64-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the x86_64-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-arm-linux-gnueabi ++Architecture: armel ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-arm-linux-gnueabi (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the arm-linux-gnueabi architecture ++ This is the GNU Algol 68 compiler for the arm-linux-gnueabi architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-arm-linux-gnueabihf ++Architecture: armhf ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-arm-linux-gnueabihf (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the arm-linux-gnueabihf architecture ++ This is the GNU Algol 68 compiler for the arm-linux-gnueabihf architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-aarch64-linux-gnu ++Architecture: arm64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-aarch64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the aarch64-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the aarch64-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-i686-linux-gnu ++Architecture: i386 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-i686-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the i686-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the i686-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-loongarch64-linux-gnu ++Architecture: loong64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-loongarch64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the loongarch64-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the loongarch64-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mipsel-linux-gnu ++Architecture: mipsel ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsel-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mipsel-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the mipsel-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mips64-linux-gnuabi64 ++Architecture: mips64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mips64-linux-gnuabi64 architecture ++ This is the GNU Algol 68 compiler for the mips64-linux-gnuabi64 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mips64el-linux-gnuabi64 ++Architecture: mips64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mips64el-linux-gnuabi64 architecture ++ This is the GNU Algol 68 compiler for the mips64el-linux-gnuabi64 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mips64-linux-gnuabin32 ++Architecture: mipsn32 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mips64-linux-gnuabin32 architecture ++ This is the GNU Algol 68 compiler for the mips64-linux-gnuabin32 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-powerpc-linux-gnu ++Architecture: powerpc ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the powerpc-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the powerpc-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-powerpc64-linux-gnu ++Architecture: ppc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the powerpc64-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the powerpc64-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-powerpc64le-linux-gnu ++Architecture: ppc64el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-powerpc64le-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the powerpc64le-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the powerpc64le-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-m68k-linux-gnu ++Architecture: m68k ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-m68k-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the m68k-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the m68k-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-riscv64-linux-gnu ++Architecture: riscv64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-riscv64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the riscv64-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the riscv64-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-sh4-linux-gnu ++Architecture: sh4 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sh4-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the sh4-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the sh4-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-sparc-linux-gnu ++Architecture: sparc ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sparc-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the sparc-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the sparc-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-sparc64-linux-gnu ++Architecture: sparc64 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-sparc64-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the sparc64-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the sparc64-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-s390x-linux-gnu ++Architecture: s390x ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-s390x-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the s390x-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the s390x-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-x86-64-linux-gnux32 ++Architecture: x32 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-x86-64-linux-gnux32 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the x86_64-linux-gnux32 architecture ++ This is the GNU Algol 68 compiler for the x86_64-linux-gnux32 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mips64el-linux-gnuabin32 ++Architecture: mipsn32el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mips64el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mips64el-linux-gnuabin32 architecture ++ This is the GNU Algol 68 compiler for the mips64el-linux-gnuabin32 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mipsisa32r6-linux-gnu ++Architecture: mipsr6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa32r6-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mipsisa32r6-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the mipsisa32r6-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mipsisa32r6el-linux-gnu ++Architecture: mipsr6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa32r6el-linux-gnu (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mipsisa32r6el-linux-gnu architecture ++ This is the GNU Algol 68 compiler for the mipsisa32r6el-linux-gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mipsisa64r6-linux-gnuabi64 ++Architecture: mips64r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabi64 architecture ++ This is the GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabi64 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mipsisa64r6el-linux-gnuabi64 ++Architecture: mips64r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6el-linux-gnuabi64 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabi64 architecture ++ This is the GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabi64 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mipsisa64r6-linux-gnuabin32 ++Architecture: mipsn32r6 ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabin32 architecture ++ This is the GNU Algol 68 compiler for the mipsisa64r6-linux-gnuabin32 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-mipsisa64r6el-linux-gnuabin32 ++Architecture: mipsn32r6el ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), gcc-15-mipsisa64r6el-linux-gnuabin32 (>= ${gcc:Version}), ${dep:ga68cross}, ++ libga68-15-dev (= ${gcc:Version}), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabin32 architecture ++ This is the GNU Algol 68 compiler for the mipsisa64r6el-linux-gnuabin32 architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ ++Package: ga68-15-for-host ++Architecture: any ++X-DH-Build-For-Type: target ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), ga68-15${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc-15-for-host (= ${gcc:Version}), ${misc:Depends} ++Description: GNU Algol 68 compiler for the host architecture ++ This is the GNU Algol 68 compiler for the host architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: ga68-15-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), ga68-15 (>= ${gcc:Version}), ++ cpp-15-for-build (= ${gcc:Version}), gcc-15-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++Description: GNU Algol 68 compiler for the build architecture ++ This is the GNU Algol 68 compiler for the build architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ This is a dependency package. ++ ++Package: ga68-15 ++Architecture: any ++Depends: ga68-15${target:suffix} (= ${gcc:Version}), gcc-15-base (>= ${gcc:SoftVersion}), gcc-15 (>= ${gcc:SoftVersion}), ${dep:ga68cross}, ${misc:Depends} ++Provides: ga68, algol68-compiler ++Description: GNU Algol 68 compiler ++ This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms ++ supported by gcc. It uses the gcc backend to generate optimised code. ++ ++Package: libga68-15-dev ++X-DH-Build-For-Type: target ++Architecture: any ++Multi-Arch: same ++Section: libdevel ++Depends: gcc-15-base (= ${gcc:Version}), libga68-1 (>= ${ga68:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 standard library ++ This is the Algol 68 standard library that comes with the ga68 compiler. ++ ++Package: libga68-1 ++X-DH-Build-For-Type: target ++Section: libs ++Architecture: any ++Multi-Arch: same ++Depends: gcc-15-base (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Description: GNU Algol 68 standard library (runtime library) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++ ++Package: ga68-15-doc ++Architecture: all ++Section: doc ++Depends: gcc-15-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Suggests: ga68-15 ++Description: Documentation for the GNU Algol 68 compiler (ga68) ++ Documentation for the GNU Algol 68 compiler in HTML and info format. ++ ++#Package: gcc`'PV-soft-float ++#Architecture: arm armel armhf ++#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} ++#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float ++#BUILT_USING`'dnl ++#Description: GCC soft-floating-point gcc libraries (ARM) ++# These are versions of basic static libraries such as libgcc.a compiled ++# with the -msoft-float option, for CPUs without a floating-point unit. ++ ++Package: gcc-15-offload-nvptx ++Architecture: amd64 arm64 ppc64el ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcdev}, ++ nvptx-tools, libgomp-plugin-nvptx1 (>= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++Description: GCC offloading compiler to NVPTX ++ The package provides offloading support for NVidia PTX. OpenMP and OpenACC ++ programs linked with -fopenmp will by default add PTX code into the binaries, ++ which can be offloaded to NVidia PTX capable devices if available. ++ ++Package: libgomp-plugin-nvptx1 ++Architecture: amd64 arm64 ppc64el ++Multi-Arch: same ++Section: libs ++Depends: gcc-15-base (= ${gcc:Version}), libgomp1, ${shlibs:Depends}, ${misc:Depends} ++Suggests: libcuda1 [amd64] | libnvidia-tesla-cuda1 [amd64 ppc64el] | libcuda1-any ++Description: GCC OpenMP v4.5 plugin for offloading to NVPTX ++ This package contains libgomp plugin for offloading to NVidia ++ PTX. The plugin needs libcuda.so.1 shared library that has to be ++ installed separately. ++ ++Package: gcc-15-offload-amdgcn ++Architecture: amd64 ++Depends: gcc-15-base (= ${gcc:Version}), gcc-15 (= ${gcc:Version}), ${dep:libcdev}, ++ libgomp-plugin-amdgcn1 (>= ${gcc:Version}), ++ amdgcn-tools-21 [amd64], ${shlibs:Depends}, ${misc:Depends} ++Description: GCC offloading compiler to GCN ++ The package provides offloading support for AMD GCN. OpenMP and OpenACC ++ programs linked with -fopenmp will by default add GCN code into the binaries, ++ which can be offloaded to AMD GCN capable devices if available. ++ ++Package: libgomp-plugin-amdgcn1 ++Architecture: amd64 ++Multi-Arch: same ++Section: libs ++Depends: gcc-15-base (= ${gcc:Version}), libgomp1, ${shlibs:Depends}, ${misc:Depends} ++Description: GCC OpenMP v4.5 plugin for offloading to GCN ++ This package contains libgomp plugin for offloading to AMD GCN. ++ ++Package: gcc-15-source ++Multi-Arch: foreign ++Architecture: all ++Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, time, m4, libtool, autoconf2.69, ++ ${misc:Depends} ++Description: Source of the GNU Compiler Collection ++ This package contains the sources and patches which are needed to ++ build the GNU Compiler Collection (GCC). diff --cc debian/control.m4 index 0000000,0000000..0ee6922 new file mode 100644 --- /dev/null +++ b/debian/control.m4 @@@ -1,0 -1,0 +1,5350 @@@ ++divert(-1) ++ ++define(`checkdef',`ifdef($1, , `errprint(`error: undefined macro $1 ++')m4exit(1)')') ++define(`errexit',`errprint(`error: undefined macro `$1' ++')m4exit(1)') ++ ++dnl The following macros must be defined, when called: ++dnl ifdef(`SRCNAME', , errexit(`SRCNAME')) ++dnl ifdef(`PV', , errexit(`PV')) ++dnl ifdef(`ARCH', , errexit(`ARCH')) ++ ++dnl The architecture will also be defined (-D__i386__, -D__powerpc__, etc.) ++ ++define(`PN', `$1') ++define(`MAINTAINER', `Debian GCC Maintainers ') ++ ++define(`depifenabled', `ifelse(index(enabled_languages, `$1'), -1, `', `$2')') ++define(`ifenabled', `ifelse(index(enabled_languages, `$1'), -1, `dnl', `$2')') ++ ++ifdef(`TARGET',`ifdef(`CROSS_ARCH',`',`undefine(`MULTIARCH')')') ++define(`CROSS_ARCH', ifdef(`CROSS_ARCH', CROSS_ARCH, `all')) ++define(`libdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') ++define(`libdevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') ++define(`libidevdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') ++ifdef(`TARGET',`ifelse(CROSS_ARCH,`all',` ++define(`libidevdep', `lib$2$1`'LS`'AQ (>= ifelse(`$4',`',`${gcc:SoftVersion}',`$4'))') ++')') ++ifelse(index(enabled_languages, `libdbg'), -1, ` ++define(`libdbgdep', `') ++',` ++define(`libdbgdep', `lib$2$1`'LS`'AQ (ifelse(`$3',`',`>=',`$3') ifelse(`$4',`',`${gcc:Version}',`$4'))') ++')`'dnl libdbg ++ ++define(`BUILT_USING', ifelse(add_built_using,yes,`Built-Using: ${Built-Using} ++')) ++define(`TARGET_PACKAGE',`X-DH-Build-For-Type: target ++') ++define(`_for_each',`ifelse(`$3',`',`',`pushdef(`$1',`$3')$2`'popdef(`$1')`'$0(`$1',`$2',shift(shift(shift($@))))')') ++define(`for_each_arch',`_for_each(`_arch',`dnl ++pushdef(`arch_deb',`patsubst(_arch,`=.*',`')')dnl ++pushdef(`arch_gnu',`patsubst(_arch,`.*=',`')')dnl ++pushdef(`arch_gnusuffix',`-patsubst(arch_gnu,`_',`-')')dnl ++$1`'popdef(`arch_gnusuffix')popdef(`arch_gnu')popdef(`arch_deb')',dnl ++patsubst(ARCH_GNUTYPE_MAP,`\s+',`,'))') ++ ++divert`'dnl ++dnl -------------------------------------------------------------------------- ++Source: SRCNAME ++Section: devel ++Priority: optional ++ifelse(DIST,`Ubuntu',`dnl ++Maintainer: Ubuntu Core developers ++XSBC-Original-Maintainer: MAINTAINER ++', `dnl ++Maintainer: MAINTAINER ++')dnl DIST ++Uploaders: Matthias Klose ++Standards-Version: 4.7.4 ++ifdef(`TARGET',`dnl cross ++Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP ++ LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP ++ linux-libc-dev [m68k], ++ dwz, LIBUNWIND_BUILD_DEP LIBATOMIC_OPS_BUILD_DEP AUTO_BUILD_DEP ++ SOURCE_BUILD_DEP CROSS_BUILD_DEP ++ ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP, ++ libzstd-dev, zlib1g-dev, BINUTILS_BUILD_DEP, ++ gawk, lzma, xz-utils, patchutils, ++ PKGCONF_BUILD_DEP libgc-dev, ++ zlib1g-dev, SDT_BUILD_DEP USAGE_BUILD_DEP ++ bison, flex, GNAT_BUILD_DEP GDC_BUILD_DEP GM2_BUILD_DEP ++ lsb-release, quilt, time ++',`dnl native ++Build-Depends: DEBHELPER_BUILD_DEP DPKG_BUILD_DEP GCC_MULTILIB_BUILD_DEP ++ LIBC_BUILD_DEP, LIBC_BIARCH_BUILD_DEP LIBC_DBG_DEP ++ linux-libc-dev [m68k], ++ AUTO_BUILD_DEP BASE_BUILD_DEP ++ dwz, libunwind8-dev [ia64], libatomic-ops-dev [ia64], ++ gawk, lzma, xz-utils, patchutils, ++ libzstd-dev, zlib1g-dev, SDT_BUILD_DEP USAGE_BUILD_DEP ++ BINUTILS_BUILD_DEP, BUILD_DEP_FOR_BINUTILS ++ gperf, bison, flex, ++ gettext, OFFLOAD_BUILD_DEP ++ texinfo, LOCALES, sharutils, ++ procps, FORTRAN_BUILD_DEP GNAT_BUILD_DEP GO_BUILD_DEP GDC_BUILD_DEP GM2_BUILD_DEP RS_BUILD_DEP ++ ISL_BUILD_DEP MPC_BUILD_DEP MPFR_BUILD_DEP GMP_BUILD_DEP PHOBOS_BUILD_DEP ++ CHECK_BUILD_DEP chrpath, lsb-release, quilt, time, ++ PKGCONF_BUILD_DEP libgc-dev, ++ TARGET_TOOL_BUILD_DEP ++Build-Depends-Indep: LIBSTDCXX_BUILD_INDEP ++')dnl ++ifelse(regexp(SRCNAME, `gdc'),0,`dnl ++Homepage: https://gdcproject.org/ ++', `dnl ++Homepage: https://gcc.gnu.org/ ++')dnl SRCNAME ++Vcs-Browser: https://salsa.debian.org/toolchain-team/gcc/tree/gcc-15-debian ++Vcs-Git: https://salsa.debian.org/toolchain-team/gcc.git -b gcc-15-debian ++XS-Testsuite: autopkgtest ++Rules-Requires-Root: binary-targets ++ ++ifelse(regexp(SRCNAME, `gcc-snapshot'),0,`dnl ++Package: gcc-snapshot`'TS ++Architecture: any ++Depends: binutils`'TS (>= ${binutils:Version}), ++ ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, python3, ++ ${snap:depends}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${snap:recommends} ++BUILT_USING`'dnl ++Description: SNAPSHOT of the GNU Compiler Collection ++ This package contains a recent development SNAPSHOT of all files ++ contained in the GNU Compiler Collection (GCC). ++ . ++ The source code for this package has been exported from SVN trunk. ++ . ++ DO NOT USE THIS SNAPSHOT FOR BUILDING DEBIAN PACKAGES! ++ . ++ This package will NEVER hit the testing distribution. It is used for ++ tracking gcc bugs submitted to the Debian BTS in recent development ++ versions of gcc. ++',`dnl regexp SRCNAME ++ifelse(regexp(SRCNAME, `gcc-toolchain'),0,`dnl ++Package: gcc-toolchain`'PV`'TS ++Architecture: any ++Depends: ++ ${dep:libcbiarchdev}, ${dep:libcdev}, ${dep:libunwinddev}, python3, ++ ${snap:depends}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${snap:recommends} ++BUILT_USING`'dnl ++Description: Backport of the GNU Compiler Collection ++ This package contains the default GCC and binutils as found ++ in a newer Ubuntu LTS release. ++',`dnl regexp SRCNAME ++dnl default base package dependencies ++define(`BASEDEP', `gcc`'PV`'TS-base (= ${gcc:Version})') ++define(`SOFTBASEDEP', `gcc`'PV`'TS-base (>= ${gcc:SoftVersion})') ++ ++ifdef(`TARGET',` ++define(`BASELDEP', `gcc`'PV`'ifelse(CROSS_ARCH,`all',`-cross')-base`'GCC_PORTS_BUILD (= ${gcc:Version})') ++define(`SOFTBASELDEP', `gcc`'PV`'ifelse(CROSS_ARCH, `all',`-cross')-base`'GCC_PORTS_BUILD (>= ${gcc:SoftVersion})') ++',`dnl ++define(`BASELDEP', `BASEDEP') ++define(`SOFTBASELDEP', `SOFTBASEDEP') ++') ++ ++ifenabled(`gccbase',` ++Package: gcc`'PV`'TS-base ++Architecture: any ++Multi-Arch: same ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: ${misc:Depends} ++Replaces: ${base:Replaces} ++Breaks: ${base:Breaks} ++BUILT_USING`'dnl ++Description: GCC, the GNU Compiler Collection (base package) ++ This package contains files common to all languages and libraries ++ contained in the GNU Compiler Collection (GCC). ++ifdef(`BASE_ONLY', `dnl ++ . ++ This version of GCC is not yet available for this architecture. ++ Please use the compilers from the gcc-snapshot package for testing. ++')`'dnl ++')`'dnl gccbase ++ ++ifenabled(`gcclbase',` ++Package: gcc`'PV-cross-base`'GCC_PORTS_BUILD ++Architecture: all ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC, the GNU Compiler Collection (library base package) ++ This empty package contains changelog and copyright files common to ++ all libraries contained in the GNU Compiler Collection (GCC). ++ifdef(`BASE_ONLY', `dnl ++ . ++ This version of GCC is not yet available for this architecture. ++ Please use the compilers from the gcc-snapshot package for testing. ++')`'dnl ++')`'dnl gcclbase ++ ++ifenabled(`libgcc',` ++Package: libgcc-s1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Provides: libgcc1`'LS (= ${gcc:EpochVersion}), ifdef(`TARGET',`libgcc-s1-TARGET-dcv1',`') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++ifdef(`LIBGCCPROTECTED', `XB-Important: yes ++Protected: yes ++')`'dnl ++ifdef(`TARGET',`dnl ++Breaks: libgcc1`'LS (<< 1:10) ++Replaces: libgcc1`'LS (<< 1:10) ++',`dnl ++Breaks: ${libgcc:Breaks} ++Replaces: libgcc1`'LS (<< 1:10) ++')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') ++ Shared version of the support library, a library of internal subroutines ++ that GCC uses to overcome shortcomings of particular machines, or ++ special needs for some languages. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libgcc1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libgcc-s1`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} ++Provides: ifdef(`TARGET',`libgcc1-TARGET-dcv1',`') ++ifdef(`MULTIxxxARCH', `Multi-Arch: same ++Breaks: ${multiarch:breaks} ++')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++ ++ifenabled(`libdbg',` ++Package: libgcc-s1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(gcc-s1,,=,${gcc:Version}), ${misc:Depends} ++ifdef(`MULTIARCH',`Multi-Arch: same ++')dnl ++Breaks: libgcc1-dbg`'LS (<< 1:10) ++Replaces: libgcc1-dbg`'LS (<< 1:10) ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ Debug symbols for the GCC support library. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libgcc1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libgcc-s1-dbg`'LS, libdep(gcc1,,=,${gcc:EpochVersion}), ${misc:Depends} ++ifdef(`MULTIxxxARCH',`Multi-Arch: same ++')dnl ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++')`'dnl libdbg ++ ++Package: libgcc-s2`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') ++ifdef(`TARGET',`dnl',`Section: libs') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++ifdef(`LIBGCCPROTECTED', `XB-Important: yes ++Protected: yes ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Provides: libgcc2`'LS (= ${gcc:EpochVersion}), ifdef(`TARGET',`libgcc-s2-TARGET-dcv1')`' ++ifdef(`TARGET',`dnl ++Breaks: libgcc2`'LS (<< 1:10) ++Replaces: libgcc2`'LS (<< 1:10) ++',`dnl ++Breaks: ${libgcc:Breaks} ++Replaces: libgcc2`'LS (<< 1:10) ++')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') ++ Shared version of the support library, a library of internal subroutines ++ that GCC uses to overcome shortcomings of particular machines, or ++ special needs for some languages. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libgcc2`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libgcc-s2`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} ++ifdef(`TARGET',`Provides: libgcc-s2-TARGET-dcv1 ++')`'dnl ++ifdef(`MULTIxxxARCH', `Multi-Arch: same ++Breaks: ${multiarch:breaks} ++')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++ ++ifenabled(`libdbg',` ++Package: libgcc-s2-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') ++Section: debug ++Depends: BASELDEP, libdep(gcc-s2,,=,${gcc:Version}), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Breaks: libgcc2-dbg`'LS (<< 1:10) ++Replaces: libgcc2-dbg`'LS (<< 1:10) ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ Debug symbols for the GCC support library. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libgcc2-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`m68k') ++Section: debug ++Depends: BASELDEP, libgcc-s2-dbg`'LS, libdep(gcc2,,=,${gcc:EpochVersion}), ${misc:Depends} ++ifdef(`MULTIxxxARCH',`Multi-Arch: same ++')dnl ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols, debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++')`'dnl libdbg ++ ++Package: libgcc-s4`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') ++ifdef(`MULTIARCH', `Multi-Arch: same ++ifdef(`LIBGCCPROTECTED', `XB-Important: yes ++Protected: yes ++')`'dnl ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Provides: libgcc4`'LS (= ${gcc:EpochVersion}) ++ifdef(`TARGET',`dnl ++Breaks: libgcc4`'LS (<< 1:10) ++Replaces: libgcc4`'LS (<< 1:10) ++',`dnl ++Breaks: ${libgcc:Breaks} ++Replaces: libgcc4`'LS (<< 1:10) ++')`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') ++ Shared version of the support library, a library of internal subroutines ++ that GCC uses to overcome shortcomings of particular machines, or ++ special needs for some languages. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libgcc4`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libgcc-s4`'LS (>= ${gcc:Version}), ${misc:Depends}, ${shlibs:Depends} ++ifdef(`MULTIxxxARCH', `Multi-Arch: same ++Breaks: ${multiarch:breaks} ++')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++ ++ifenabled(`libdbg',` ++Package: libgcc-s4-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Section: debug ++Depends: BASELDEP, libdep(gcc-s4,,=,${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Breaks: libgcc4-dbg`'LS (<< 1:10) ++Replaces: libgcc4-dbg`'LS (<< 1:10) ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ Debug symbols for the GCC support library. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libgcc4-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`hppa') ++Section: debug ++Depends: BASELDEP, libgcc-s4-dbg`'LS, libdep(gcc4,,=,${gcc:EpochVersion}), ${misc:Depends} ++ifdef(`MULTIxxxARCH',`Multi-Arch: same ++')dnl ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols, debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++')`'dnl libdbg ++')`'dnl libgcc ++ ++ifenabled(`cdev',` ++Package: libgcc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: BASELDEP, ${dep:libgcc}, ${dep:libssp}, ${dep:libgomp}, ${dep:libitm}, ++ ${dep:libatomic}, ${dep:libbtrace}, ${dep:libasan}, ${dep:liblsan}, ++ ${dep:libtsan}, ${dep:libubsan}, ${dep:libhwasan}, ${dep:libvtv}, ++ ${dep:libqmath}, ${dep:libunwinddev}, ${shlibs:Depends}, ${misc:Depends} ++Breaks: libtsan`'TSAN_SO`'LS (<< 12-20211113-2~) ++Replaces: libtsan`'TSAN_SO`'LS (<< 12-20211113-2~) ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library (development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++')`'dnl cdev ++ ++ifenabled(`lib64gcc',` ++Package: lib64gcc-s1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} ++ifdef(`TARGET',`Provides: lib64gcc1`'LS (= ${gcc:EpochVersion}), lib64gcc-s1-TARGET-dcv1 ++',`')`'dnl ++Breaks: lib64gcc1`'LS (<< 1:10) ++Replaces: lib64gcc1`'LS (<< 1:10) ++BUILT_USING`'dnl ++Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (64bit) ++ Shared version of the support library, a library of internal subroutines ++ that GCC uses to overcome shortcomings of particular machines, or ++ special needs for some languages. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: lib64gcc1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, lib64gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} ++ifdef(`TARGET',`Provides: lib64gcc1-TARGET-dcv1 ++',`')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library (dependency package)`'ifdef(`TARGET',` (TARGET)', `') (64bit) ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++ ++ifenabled(`libdbg',` ++Package: lib64gcc-s1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(gcc-s1,64,=,${gcc:Version}), ${misc:Depends} ++Breaks: lib64gcc1-dbg`'LS (<< 1:10) ++Replaces: lib64gcc1-dbg`'LS (<< 1:10) ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ Debug symbols for the GCC support library. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: lib64gcc1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, lib64gcc-s1-dbg`'LS, libdep(gcc1,64,=,${gcc:EpochVersion}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++')`'dnl libdbg ++')`'dnl lib64gcc ++ ++ifenabled(`cdev',` ++Package: lib64gcc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, ++ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, ++ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, ++ ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, ++ ${dep:libvtvbiarch}, ++ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC support library (64bit development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++')`'dnl cdev ++ ++ifenabled(`lib32gcc',` ++Package: lib32gcc-s1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++Breaks: lib32gcc1`'LS (<< 1:10) ++Replaces: lib32gcc1`'LS (<< 1:10) ++ifdef(`TARGET',`Provides: lib32gcc1`'LS (= ${gcc:EpochVersion}), lib32gcc-s1-TARGET-dcv1 ++',`')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library (32 bit Version) ++ Shared version of the support library, a library of internal subroutines ++ that GCC uses to overcome shortcomings of particular machines, or ++ special needs for some languages. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: lib32gcc1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, lib32gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++ifdef(`TARGET',`Provides: lib32gcc1-TARGET-dcv1 ++',`')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library (dependency package, 32bit) ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++ ++ifenabled(`libdbg',` ++Package: lib32gcc-s1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(gcc-s1,32,=,${gcc:Version}), ${misc:Depends} ++Breaks: lib32gcc1-dbg`'LS (<< 1:10) ++Replaces: lib32gcc1-dbg`'LS (<< 1:10) ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ Debug symbols for the GCC support library. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: lib32gcc1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, lib32gcc-s1-dbg`'LS, libdep(gcc1,32,=,${gcc:EpochVersion}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++')`'dnl libdbg ++')`'dnl lib32gcc1 ++ ++ifenabled(`cdev',` ++Package: lib32gcc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, ++ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, ++ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, ++ ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, ++ ${dep:libvtvbiarch}, ++ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC support library (32 bit development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++')`'dnl cdev ++ ++ifenabled(`libn32gcc',` ++Package: libn32gcc-s1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libn32gcc1`'LS (= ${gcc:EpochVersion}), libn32gcc-s1-TARGET-dcv1 ++',`')`'dnl ++Breaks: libn32gcc1`'LS (<< 1:10) ++Replaces: libn32gcc1`'LS (<< 1:10) ++ifdef(`TARGET',`dnl',`Conflicts: lib32gcc-s1 [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (n32) ++ Shared version of the support library, a library of internal subroutines ++ that GCC uses to overcome shortcomings of particular machines, or ++ special needs for some languages. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libn32gcc1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libn32gcc-s1`'LS, ${dep:libcbiarch}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libn32gcc1-TARGET-dcv1 ++',`')`'dnl ++ifdef(`TARGET',`dnl',`Conflicts: lib32gcc1 [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (n32) ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++ ++ifenabled(`libdbg',` ++Package: libn32gcc-s1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: debug ++Depends: BASELDEP, libdep(gcc-s1,n32,=,${gcc:Version}), ${misc:Depends} ++Breaks: libn32gcc1-dbg`'LS (<< 1:10) ++Replaces: libn32gcc1-dbg`'LS (<< 1:10) ++ifdef(`TARGET',`dnl',`Conflicts: lib32gcc-s1-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ Debug symbols for the GCC support library. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libn32gcc1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: debug ++Depends: BASELDEP, libn32gcc-s1-dbg`'LS, libdep(gcc1,n32,=,${gcc:EpochVersion}), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32gcc1-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++')`'dnl libdbg ++')`'dnl libn32gcc ++ ++ifenabled(`cdev',` ++Package: libn32gcc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, ++ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, ++ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, ++ ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, ++ ${dep:libvtvbiarch}, ++ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC support library (n32 development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++')`'dnl cdev ++ ++ifenabled(`libx32gcc',` ++Package: libx32gcc-s1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libx32gcc1`'LS (= ${gcc:EpochVersion}), libx32gcc-s1-TARGET-dcv1 ++',`')`'dnl ++Breaks: libx32gcc1`'LS (<< 1:10) ++Replaces: libx32gcc1`'LS (<< 1:10) ++BUILT_USING`'dnl ++Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (x32) ++ Shared version of the support library, a library of internal subroutines ++ that GCC uses to overcome shortcomings of particular machines, or ++ special needs for some languages. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libx32gcc1`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libx32gcc-s1`'LS (>= ${gcc:Version}), ${dep:libcbiarch}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libx32gcc1-TARGET-dcv1 ++',`')`'dnl ++BUILT_USING`'dnl ++Description: GCC support library`'ifdef(`TARGET',` (TARGET)', `') (x32) ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++ ++ifenabled(`libdbg',` ++Package: libx32gcc-s1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(gcc-s1,x32,=,${gcc:Version}), ${misc:Depends} ++Breaks: libx32gcc1-dbg`'LS (<< 1:10) ++Replaces: libx32gcc1-dbg`'LS (<< 1:10) ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ Debug symbols for the GCC support library. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`libcompatgcc',` ++Package: libx32gcc1-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libx32gcc-s1-dbg`'LS, libdep(gcc1,x32,=,${gcc:EpochVersion}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC support library (debug symbols)`'ifdef(`TARGET',` (TARGET)', `') ++ This is a dependency package, and can be safely removed after upgrade. ++')`'dnl libcompatgcc ++')`'dnl libdbg ++')`'dnl libx32gcc ++ ++ifenabled(`cdev',` ++ifenabled(`x32dev',` ++Package: libx32gcc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: libdevel ++Recommends: ${dep:libcdev} ++Depends: BASELDEP, ${dep:libgccbiarch}, ${dep:libsspbiarch}, ++ ${dep:libgompbiarch}, ${dep:libitmbiarch}, ${dep:libatomicbiarch}, ++ ${dep:libbtracebiarch}, ${dep:libasanbiarch}, ${dep:liblsanbiarch}, ++ ${dep:libtsanbiarch}, ${dep:libubsanbiarch}, ${dep:libhwasanbiarch}, ++ ${dep:libvtvbiarch}, ++ ${dep:libqmathbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC support library (x32 development files) ++ This package contains the headers and static library files necessary for ++ building C programs which use libgcc, libgomp, libquadmath, libssp or libitm. ++')`'dnl x32dev ++')`'dnl cdev ++ ++ifenabled(`cdev',`dnl ++for_each_arch(` ++Package: gcc`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: cpp`'PV`'arch_gnusuffix (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') ++ ifenabled(`gccxbase',` BASEDEP,') ++ ${dep:libcc1}, ++ binutils`'arch_gnusuffix (>= ${binutils:Version}), ++ ${dep:libgccdev}, ${shlibs:Depends}, ${misc:Depends} ++Recommends: ${dep:libcdev} ++Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), ++ gcc`'PV-locales (>= ${gcc:SoftVersion}), ++ libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ++ libdbgdep(gomp`'GOMP_SO-dbg,), ++ libdbgdep(itm`'ITM_SO-dbg,), ++ libdbgdep(atomic`'ATOMIC_SO-dbg,), ++ libdbgdep(asan`'ASAN_SO-dbg,), ++ libdbgdep(lsan`'LSAN_SO-dbg,), ++ libdbgdep(tsan`'TSAN_SO-dbg,), ++ libdbgdep(ubsan`'UBSAN_SO-dbg,), ++ libdbgdep(hwasan`'HWASAN_SO-dbg,), ++ifenabled(`libvtv',`',` ++ libdbgdep(vtv`'VTV_SO-dbg,), ++')`'dnl ++ libdbgdep(quadmath`'QMATH_SO-dbg,), ++Provides: c-compiler`'arch_gnusuffix ++ifdef(`TARGET',`Conflicts: gcc-multilib ++')`'dnl ++BUILT_USING`'dnl ++Description: GNU C compiler for the arch_gnu architecture ++ This is the GNU C compiler for the arch_gnu architecture, ++ a fairly portable optimizing compiler for C. ++')`'dnl for_each_arch ++ ++Package: gcc`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gcc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ cpp`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU C compiler for the host architecture ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gcc`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gcc`'PV (>= ${gcc:Version}), cpp`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU C compiler for the build architecture ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++ . ++ This is a dependency package. ++ ++Package: gcc`'PV ++Architecture: any ++Depends: gcc`'PV`'${target:suffix} (= ${gcc:Version}),ifenabled(`gccbase',` BASEDEP,') ++ ifenabled(`gccxbase',` BASEDEP,') ++ cpp`'PV (= ${gcc:Version}), ++ binutils (>= ${binutils:Version}), ++ ${misc:Depends} ++Recommends: ${dep:libcdev} ++Replaces: cpp`'PV (<< 7.1.1-8) ++Suggests: ${gcc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}), ++ gcc`'PV-locales (>= ${gcc:SoftVersion}), ++ libdbgdep(gcc`'GCC_SO-dbg,,>=,${libgcc:Version}), ++ libdbgdep(gomp`'GOMP_SO-dbg,), ++ libdbgdep(itm`'ITM_SO-dbg,), ++ libdbgdep(atomic`'ATOMIC_SO-dbg,), ++ libdbgdep(asan`'ASAN_SO-dbg,), ++ libdbgdep(lsan`'LSAN_SO-dbg,), ++ libdbgdep(tsan`'TSAN_SO-dbg,), ++ libdbgdep(ubsan`'UBSAN_SO-dbg,), ++ifenabled(`libvtv',`',` ++ libdbgdep(vtv`'VTV_SO-dbg,), ++')`'dnl ++ libdbgdep(quadmath`'QMATH_SO-dbg), ++Provides: c-compiler ++BUILT_USING`'dnl ++Description: GNU C compiler ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++')`'dnl ++ ++ifenabled(`multilib',` ++Package: gcc`'PV-multilib`'TS ++Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ${dep:libcbiarchdev}, ${dep:libgccbiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU C compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multilib ++ ++ifenabled(`testresults',` ++Package: gcc`'PV-test-results ++Architecture: any ++Depends: BASEDEP, ${misc:Depends} ++Replaces: g++-5 (<< 5.2.1-28) ++BUILT_USING`'dnl ++Description: Test results for the GCC test suite ++ This package contains the test results for running the GCC test suite ++ for a post build analysis. ++')`'dnl testresults ++ ++ifenabled(`plugindev',` ++Package: gcc`'PV-plugin-dev`'TS ++Architecture: any ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), GMP_BUILD_DEP MPC_BUILD_DEP ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Files for GNU GCC plugin development. ++ This package contains (header) files for GNU GCC plugin development. It ++ is only used for the development of GCC plugins, but not needed to run ++ plugins. ++')`'dnl plugindev ++')`'dnl cdev ++ ++ifenabled(`cdev',` ++Package: gcc`'PV-hppa64-linux-gnu ++Architecture: ifdef(`TARGET',`any',hppa amd64 i386 x32) ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gcc`'PV`'TS (= ${gcc:Version}), ++ binutils-hppa64-linux-gnu | binutils-hppa64, ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU C compiler (cross compiler for hppa64) ++ This is the GNU C compiler, a fairly portable optimizing compiler for C. ++')`'dnl cdev ++ ++ifenabled(`cdev',`dnl ++for_each_arch(` ++Package: cpp`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++ifdef(`TARGET',`dnl',`Section: interpreters') ++Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}), cpp`'PV-doc (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++BUILT_USING`'dnl ++Description: GNU C preprocessor for arch_gnu ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those ++ who require the preprocessor configured for the ++ arch_gnu architecture but not the compiler. ++')`'dnl for_each_arch ++ ++Package: cpp`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Section: ifdef(`TARGET',`devel',`interpreters') ++Depends: BASEDEP, cpp`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU C preprocessor for the host architecture ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those who ++ require the preprocessor configured for the host architecture but not ++ the compiler. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: cpp`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Section: ifdef(`TARGET',`devel',`interpreters') ++Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU C preprocessor for the build architecture ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those who ++ require the preprocessor configured for the build architecture but not ++ the compiler. ++ . ++ This is a dependency package. ++ ++Package: cpp`'PV ++Architecture: any ++Section: interpreters ++Depends: BASEDEP, cpp`'PV`'${target:suffix} (= ${gcc:Version}), ${misc:Depends} ++Suggests: gcc`'PV-locales (>= ${gcc:SoftVersion}) ++Breaks: libmagics++-dev (<< 2.28.0-4), hardening-wrapper (<< 2.8+nmu3) ++BUILT_USING`'dnl ++Description: GNU C preprocessor ++ A macro processor that is used automatically by the GNU C compiler ++ to transform programs before actual compilation. ++ . ++ This package has been separated from gcc for the benefit of those who ++ require the preprocessor but not the compiler. ++')`'dnl ++ ++ifdef(`TARGET', `', ` ++ifenabled(`gfdldoc',` ++Package: cpp`'PV-doc ++Architecture: all ++Section: doc ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Description: Documentation for the GNU C preprocessor (cpp) ++ Documentation for the GNU C preprocessor in info `format'. ++')`'dnl gfdldoc ++')`'dnl native ++ ++ifdef(`TARGET', `', ` ++Package: gcc`'PV-locales ++Architecture: all ++Depends: SOFTBASEDEP, cpp`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} ++Recommends: gcc`'PV (>= ${gcc:SoftVersion}) ++Description: GCC, the GNU compiler collection (native language support files) ++ Native language support for GCC. Lets GCC speak your language, ++ if translations are available. ++ . ++ Please do NOT submit bug reports in other languages than "C". ++ Always reset your language settings to use the "C" locales. ++')`'dnl native ++')`'dnl cdev ++ ++ifenabled(`c++',` ++ifenabled(`c++dev',`dnl ++for_each_arch(` ++Package: g++`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(stdc++`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} ++Provides: c++-compiler`'arch_gnusuffix ++Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(stdc++CXX_SO`'PV-dbg,) ++BUILT_USING`'dnl ++Description: GNU C++ compiler for the arch_gnu architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ arch_gnu architecture. ++')`'dnl for_each_arch ++ ++Package: g++`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, g++`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU C++ compiler for the host architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the host architecture. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: g++`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, g++`'PV (>= ${gcc:Version}), ${misc:Depends}, ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}) ++BUILT_USING`'dnl ++Description: GNU C++ compiler for the build architecture ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This package contains C++ cross-compiler for the ++ arch_gnu architecture. ++ . ++ This is a dependency package. ++ ++Package: g++`'PV ++Architecture: any ++Depends: g++`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends} ++Provides: c++-compiler, c++abi2-dev ++Suggests: ${gxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) ++BUILT_USING`'dnl ++Description: GNU C++ compiler ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++')`'dnl TARGET ++ ++ifenabled(`multilib',` ++Package: g++`'PV-multilib`'TS ++Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, g++`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libcxxbiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: ${dep:libcxxbiarchdbg} ++BUILT_USING`'dnl ++Description: GNU C++ compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU C++ compiler, a fairly portable optimizing compiler for C++. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multilib ++')`'dnl c++dev ++')`'dnl c++ ++ ++ifdef(`TARGET', `', ` ++ifenabled(`ssp',` ++Package: libssp`'SSP_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: any ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Section: libs ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC stack smashing protection library ++ GCC can now emit code for protecting applications from stack-smashing attacks. ++ The protection is realized by buffer overflow detection and reordering of ++ stack variables to avoid pointer corruption. ++ ++Package: lib32ssp`'SSP_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: biarch32_archs ++Section: libs ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Replaces: libssp0 (<< 4.1) ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: GCC stack smashing protection library (32bit) ++ GCC can now emit code for protecting applications from stack-smashing attacks. ++ The protection is realized by buffer overflow detection and reordering of ++ stack variables to avoid pointer corruption. ++ ++Package: lib64ssp`'SSP_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: biarch64_archs ++Section: libs ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Replaces: libssp0 (<< 4.1) ++BUILT_USING`'dnl ++Description: GCC stack smashing protection library (64bit) ++ GCC can now emit code for protecting applications from stack-smashing attacks. ++ The protection is realized by buffer overflow detection and reordering of ++ stack variables to avoid pointer corruption. ++ ++Package: libn32ssp`'SSP_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: biarchn32_archs ++Section: libs ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Replaces: libssp0 (<< 4.1) ++ifdef(`TARGET',`dnl',`Conflicts: lib32ssp`'SSP_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GCC stack smashing protection library (n32) ++ GCC can now emit code for protecting applications from stack-smashing attacks. ++ The protection is realized by buffer overflow detection and reordering of ++ stack variables to avoid pointer corruption. ++ ++Package: libx32ssp`'SSP_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: biarchx32_archs ++Section: libs ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Replaces: libssp0 (<< 4.1) ++BUILT_USING`'dnl ++Description: GCC stack smashing protection library (x32) ++ GCC can now emit code for protecting applications from stack-smashing attacks. ++ The protection is realized by buffer overflow detection and reordering of ++ stack variables to avoid pointer corruption. ++')`'dnl ++')`'dnl native ++ ++ifenabled(`libgomp',` ++Package: libgomp`'GOMP_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++Breaks: ${multiarch:breaks} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++ in the GNU Compiler Collection. ++ ++ifenabled(`libdbg',` ++Package: libgomp`'GOMP_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(gomp`'GOMP_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (debug symbols) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++ in the GNU Compiler Collection. ++')`'dnl libdbg ++ ++Package: lib32gomp`'GOMP_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (32bit) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++ in the GNU Compiler Collection. ++ ++ifenabled(`libdbg',` ++Package: lib32gomp`'GOMP_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(gomp`'GOMP_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (32 bit debug symbols) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++ in the GNU Compiler Collection. ++')`'dnl libdbg ++ ++Package: lib64gomp`'GOMP_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (64bit) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++ in the GNU Compiler Collection. ++ ++ifenabled(`libdbg',` ++Package: lib64gomp`'GOMP_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(gomp`'GOMP_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (64bit debug symbols) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++ in the GNU Compiler Collection. ++')`'dnl libdbg ++ ++Package: libn32gomp`'GOMP_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32gomp`'GOMP_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (n32) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++ in the GNU Compiler Collection. ++ ++ifenabled(`libdbg',` ++Package: libn32gomp`'GOMP_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: debug ++Depends: BASELDEP, libdep(gomp`'GOMP_SO,n32,=), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32ssp`'GOMP_SO-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (n32 debug symbols) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++')`'dnl libdbg ++ ++ifenabled(`libx32gomp',` ++Package: libx32gomp`'GOMP_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (x32) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++ in the GNU Compiler Collection. ++ ++ifenabled(`libdbg',` ++Package: libx32gomp`'GOMP_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(gomp`'GOMP_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC OpenMP (GOMP) support library (x32 debug symbols) ++ GOMP is an implementation of OpenMP for the C, C++, and Fortran compilers ++')`'dnl libdbg ++')`'dnl libx32gomp ++')`'dnl libgomp ++ ++ifenabled(`libitm',` ++Package: libitm`'ITM_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Transactional Memory Library ++ GNU Transactional Memory Library (libitm) provides transaction support for ++ accesses to the memory of a process, enabling easy-to-use synchronization of ++ accesses to shared memory by several threads. ++ ++ifenabled(`libdbg',` ++Package: libitm`'ITM_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(itm`'ITM_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: GNU Transactional Memory Library (debug symbols) ++ GNU Transactional Memory Library (libitm) provides transaction support for ++ accesses to the memory of a process, enabling easy-to-use synchronization of ++ accesses to shared memory by several threads. ++')`'dnl libdbg ++ ++Package: lib32itm`'ITM_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: GNU Transactional Memory Library (32bit) ++ GNU Transactional Memory Library (libitm) provides transaction support for ++ accesses to the memory of a process, enabling easy-to-use synchronization of ++ accesses to shared memory by several threads. ++ ++ifenabled(`libdbg',` ++Package: lib32itm`'ITM_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(itm`'ITM_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Transactional Memory Library (32 bit debug symbols) ++ GNU Transactional Memory Library (libitm) provides transaction support for ++ accesses to the memory of a process, enabling easy-to-use synchronization of ++ accesses to shared memory by several threads. ++')`'dnl libdbg ++ ++Package: lib64itm`'ITM_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Transactional Memory Library (64bit) ++ GNU Transactional Memory Library (libitm) provides transaction support for ++ accesses to the memory of a process, enabling easy-to-use synchronization of ++ accesses to shared memory by several threads. ++ ++ifenabled(`libdbg',` ++Package: lib64itm`'ITM_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(itm`'ITM_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Transactional Memory Library (64bit debug symbols) ++ GNU Transactional Memory Library (libitm) provides transaction support for ++ accesses to the memory of a process, enabling easy-to-use synchronization of ++ accesses to shared memory by several threads. ++')`'dnl libdbg ++ ++#Package: libn32itm`'ITM_SO`'LS ++#Section: ifdef(`TARGET',`devel',`libs') ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Priority: optional ++#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32itm`'ITM_SO [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: GNU Transactional Memory Library (n32) ++# GNU Transactional Memory Library (libitm) provides transaction support for ++# accesses to the memory of a process, enabling easy-to-use synchronization of ++# accesses to shared memory by several threads. ++ ++#Package: libn32itm`'ITM_SO-dbg`'LS ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Section: debug ++#Priority: optional ++#Depends: BASELDEP, libdep(itm`'ITM_SO,n32,=), ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32itm`'ITM_SO-dbg [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: GNU Transactional Memory Library (n32 debug symbols) ++# GNU Transactional Memory Library (libitm) provides transaction support for ++# accesses to the memory of a process, enabling easy-to-use synchronization of ++# accesses to shared memory by several threads. ++ ++ifenabled(`libx32itm',` ++Package: libx32itm`'ITM_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Transactional Memory Library (x32) ++ This manual documents the usage and internals of libitm. It provides ++ transaction support for accesses to the memory of a process, enabling ++ easy-to-use synchronization of accesses to shared memory by several threads. ++ ++ifenabled(`libdbg',` ++Package: libx32itm`'ITM_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(itm`'ITM_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Transactional Memory Library (x32 debug symbols) ++ This manual documents the usage and internals of libitm. It provides ++ transaction support for accesses to the memory of a process, enabling ++ easy-to-use synchronization of accesses to shared memory by several threads. ++')`'dnl libdbg ++')`'dnl libx32itm ++')`'dnl libitm ++ ++ifenabled(`libatomic',` ++Package: libatomic`'ATOMIC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++ ++ifenabled(`libdbg',` ++Package: libatomic`'ATOMIC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (debug symbols) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++')`'dnl libdbg ++ ++Package: lib32atomic`'ATOMIC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (32bit) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++ ++ifenabled(`libdbg',` ++Package: lib32atomic`'ATOMIC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (32 bit debug symbols) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++')`'dnl libdbg ++ ++Package: lib64atomic`'ATOMIC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (64bit) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++ ++ifenabled(`libdbg',` ++Package: lib64atomic`'ATOMIC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (64bit debug symbols) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++')`'dnl libdbg ++ ++Package: libn32atomic`'ATOMIC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32atomic`'ATOMIC_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (n32) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++ ++ifenabled(`libdbg',` ++Package: libn32atomic`'ATOMIC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: debug ++Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,n32,=), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32atomic`'ATOMIC_SO-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (n32 debug symbols) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++')`'dnl libdbg ++ ++ifenabled(`libx32atomic',` ++Package: libx32atomic`'ATOMIC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (x32) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++ ++ifenabled(`libdbg',` ++Package: libx32atomic`'ATOMIC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(atomic`'ATOMIC_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: support library providing __atomic built-in functions (x32 debug symbols) ++ library providing __atomic built-in functions. When an atomic call cannot ++ be turned into lock-free instructions, GCC will make calls into this library. ++')`'dnl libdbg ++')`'dnl libx32atomic ++')`'dnl libatomic ++ ++ifenabled(`libasan',` ++Package: libasan`'ASAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector ++ AddressSanitizer (ASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++ ++ifenabled(`libdbg',` ++Package: libasan`'ASAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(asan`'ASAN_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector (debug symbols) ++ AddressSanitizer (ASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++')`'dnl libdbg ++ ++Package: lib32asan`'ASAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector (32bit) ++ AddressSanitizer (ASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++ ++ifenabled(`libdbg',` ++Package: lib32asan`'ASAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(asan`'ASAN_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector (32 bit debug symbols) ++ AddressSanitizer (ASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++')`'dnl libdbg ++ ++Package: lib64asan`'ASAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector (64bit) ++ AddressSanitizer (ASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++ ++ifenabled(`libdbg',` ++Package: lib64asan`'ASAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(asan`'ASAN_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector (64bit debug symbols) ++ AddressSanitizer (ASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++')`'dnl libdbg ++ ++#Package: libn32asan`'ASAN_SO`'LS ++#Section: ifdef(`TARGET',`devel',`libs') ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Priority: optional ++#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32asan`'ASAN_SO [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: AddressSanitizer -- a fast memory error detector (n32) ++# AddressSanitizer (ASan) is a fast memory error detector. It finds ++# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++ ++#Package: libn32asan`'ASAN_SO-dbg`'LS ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Section: debug ++#Priority: optional ++#Depends: BASELDEP, libdep(asan`'ASAN_SO,n32,=), ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32asan`'ASAN_SO-dbg [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: AddressSanitizer -- a fast memory error detector (n32 debug symbols) ++# AddressSanitizer (ASan) is a fast memory error detector. It finds ++# use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++ ++ifenabled(`libx32asan',` ++Package: libx32asan`'ASAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector (x32) ++ AddressSanitizer (ASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++ ++ifenabled(`libdbg',` ++Package: libx32asan`'ASAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(asan`'ASAN_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector (x32 debug symbols) ++ AddressSanitizer (ASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++')`'dnl libdbg ++')`'dnl libx32asan ++')`'dnl libasan ++ ++ifenabled(`libhwasan',` ++Package: libhwasan`'HWASAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector ++ AddressSanitizer (HWASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++ ++ifenabled(`libdbg',` ++Package: libhwasan`'HWASAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(hwasan`'LSAN_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: AddressSanitizer -- a fast memory error detector (debug symbols) ++ AddressSanitizer (HWASan) is a fast memory error detector. It finds ++ use-after-free and {heap,stack,global}-buffer overflow bugs in C/C++ programs. ++')`'dnl libdbg ++')`'dnl libhwasan ++ ++ifenabled(`liblsan',` ++Package: liblsan`'LSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: LeakSanitizer -- a memory leak detector (runtime) ++ LeakSanitizer (Lsan) is a memory leak detector which is integrated ++ into AddressSanitizer. ++ ++ifenabled(`libdbg',` ++Package: liblsan`'LSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(lsan`'LSAN_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: LeakSanitizer -- a memory leak detector (debug symbols) ++ LeakSanitizer (Lsan) is a memory leak detector which is integrated ++ into AddressSanitizer. ++')`'dnl libdbg ++ ++ifenabled(`lib32lsan',` ++Package: lib32lsan`'LSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: LeakSanitizer -- a memory leak detector (32bit) ++ LeakSanitizer (Lsan) is a memory leak detector which is integrated ++ into AddressSanitizer (empty package). ++ ++ifenabled(`libdbg',` ++Package: lib32lsan`'LSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(lsan`'LSAN_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: LeakSanitizer -- a memory leak detector (32 bit debug symbols) ++ LeakSanitizer (Lsan) is a memory leak detector which is integrated ++ into AddressSanitizer (empty package). ++')`'dnl libdbg ++')`'dnl lib32lsan ++ ++ifenabled(`lib64lsan',` ++#Package: lib64lsan`'LSAN_SO`'LS ++#Section: ifdef(`TARGET',`devel',`libs') ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++#Priority: optional ++#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++#BUILT_USING`'dnl ++#Description: LeakSanitizer -- a memory leak detector (64bit) ++# LeakSanitizer (Lsan) is a memory leak detector which is integrated ++# into AddressSanitizer. ++ ++ifenabled(`libdbg',` ++#Package: lib64lsan`'LSAN_SO-dbg`'LS ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++#Section: debug ++#Priority: optional ++#Depends: BASELDEP, libdep(lsan`'LSAN_SO,64,=), ${misc:Depends} ++#BUILT_USING`'dnl ++#Description: LeakSanitizer -- a memory leak detector (64bit debug symbols) ++# LeakSanitizer (Lsan) is a memory leak detector which is integrated ++# into AddressSanitizer. ++')`'dnl libdbg ++')`'dnl lib64lsan ++ ++ifenabled(`libn32lsan',` ++#Package: libn32lsan`'LSAN_SO`'LS ++#Section: ifdef(`TARGET',`devel',`libs') ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Priority: optional ++#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32lsan`'LSAN_SO [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: LeakSanitizer -- a memory leak detector (n32) ++# LeakSanitizer (Lsan) is a memory leak detector which is integrated ++# into AddressSanitizer. ++ ++ifenabled(`libdbg',` ++#Package: libn32lsan`'LSAN_SO-dbg`'LS ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Section: debug ++#Priority: optional ++#Depends: BASELDEP, libdep(lsan`'LSAN_SO,n32,=), ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32lsan`'LSAN_SO-dbg [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: LeakSanitizer -- a memory leak detector (n32 debug symbols) ++# LeakSanitizer (Lsan) is a memory leak detector which is integrated ++# into AddressSanitizer. ++')`'dnl libdbg ++')`'dnl libn32lsan ++ ++ifenabled(`libx32lsan',` ++Package: libx32lsan`'LSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: LeakSanitizer -- a memory leak detector (x32) ++ LeakSanitizer (Lsan) is a memory leak detector which is integrated ++ into AddressSanitizer (empty package). ++ ++ifenabled(`libdbg',` ++Package: libx32lsan`'LSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(lsan`'LSAN_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: LeakSanitizer -- a memory leak detector (x32 debug symbols) ++ LeakSanitizer (Lsan) is a memory leak detector which is integrated ++ into AddressSanitizer (empty package). ++')`'dnl libdbg ++')`'dnl libx32lsan ++')`'dnl liblsan ++ ++ifenabled(`libtsan',` ++Package: libtsan`'TSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (runtime) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++ ++ifenabled(`libdbg',` ++Package: libtsan`'TSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(tsan`'TSAN_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (debug symbols) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++')`'dnl libdbg ++ ++ifenabled(`lib32tsan',` ++Package: lib32tsan`'TSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (32bit) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++ ++ifenabled(`libdbg',` ++Package: lib32tsan`'TSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(tsan`'TSAN_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (32 bit debug symbols) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++')`'dnl libdbg ++')`'dnl lib32tsan ++ ++ifenabled(`lib64tsan',` ++Package: lib64tsan`'TSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++ ++ifenabled(`libdbg',` ++Package: lib64tsan`'TSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(tsan`'TSAN_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (64bit debug symbols) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++')`'dnl libdbg ++')`'dnl lib64tsan ++ ++ifenabled(`libn32tsan',` ++Package: libn32tsan`'TSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32tsan`'TSAN_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++ ++ifenabled(`libdbg',` ++Package: libn32tsan`'TSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: debug ++Depends: BASELDEP, libdep(tsan`'TSAN_SO,n32,=), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32tsan`'TSAN_SO-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (n32 debug symbols) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++')`'dnl libdbg ++')`'dnl libn32tsan ++ ++ifenabled(`libx32tsan',` ++Package: libx32tsan`'TSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++ ++ifenabled(`libdbg',` ++Package: libx32tsan`'TSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(tsan`'TSAN_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: ThreadSanitizer -- a Valgrind-based detector of data races (x32 debug symbols) ++ ThreadSanitizer (Tsan) is a data race detector for C/C++ programs. ++ The Linux and Mac versions are based on Valgrind. ++')`'dnl libdbg ++')`'dnl libx32tsan ++')`'dnl libtsan ++ ++ifenabled(`libubsan',` ++Package: libubsan`'UBSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: UBSan -- undefined behaviour sanitizer (runtime) ++ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++ Various computations will be instrumented to detect undefined behavior ++ at runtime. Available for C and C++. ++ ++ifenabled(`libdbg',` ++Package: libubsan`'UBSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: UBSan -- undefined behaviour sanitizer (debug symbols) ++ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++ Various computations will be instrumented to detect undefined behavior ++ at runtime. Available for C and C++. ++')`'dnl libdbg ++ ++ifenabled(`lib32ubsan',` ++Package: lib32ubsan`'UBSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: UBSan -- undefined behaviour sanitizer (32bit) ++ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++ Various computations will be instrumented to detect undefined behavior ++ at runtime. Available for C and C++. ++ ++ifenabled(`libdbg',` ++Package: lib32ubsan`'UBSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: UBSan -- undefined behaviour sanitizer (32 bit debug symbols) ++ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++ Various computations will be instrumented to detect undefined behavior ++ at runtime. Available for C and C++. ++')`'dnl libdbg ++')`'dnl lib32ubsan ++ ++ifenabled(`lib64ubsan',` ++Package: lib64ubsan`'UBSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: UBSan -- undefined behaviour sanitizer (64bit) ++ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++ Various computations will be instrumented to detect undefined behavior ++ at runtime. Available for C and C++. ++ ++ifenabled(`libdbg',` ++Package: lib64ubsan`'UBSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: UBSan -- undefined behaviour sanitizer (64bit debug symbols) ++ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++ Various computations will be instrumented to detect undefined behavior ++ at runtime. Available for C and C++. ++')`'dnl libdbg ++')`'dnl lib64ubsan ++ ++ifenabled(`libn32ubsan',` ++#Package: libn32ubsan`'UBSAN_SO`'LS ++#Section: ifdef(`TARGET',`devel',`libs') ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Priority: optional ++#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32ubsan`'UBSAN_SO [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: UBSan -- undefined behaviour sanitizer (n32) ++# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++# Various computations will be instrumented to detect undefined behavior ++# at runtime. Available for C and C++. ++ ++ifenabled(`libdbg',` ++#Package: libn32ubsan`'UBSAN_SO-dbg`'LS ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Section: debug ++#Priority: optional ++#Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,n32,=), ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32ubsan`'UBSAN_SO-dbg [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: UBSan -- undefined behaviour sanitizer (n32 debug symbols) ++# UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++# Various computations will be instrumented to detect undefined behavior ++# at runtime. Available for C and C++. ++')`'dnl libdbg ++')`'dnl libn32ubsan ++ ++ifenabled(`libx32ubsan',` ++Package: libx32ubsan`'UBSAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: UBSan -- undefined behaviour sanitizer (x32) ++ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++ Various computations will be instrumented to detect undefined behavior ++ at runtime. Available for C and C++. ++ ++ifenabled(`libdbg',` ++Package: libx32ubsan`'UBSAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(ubsan`'UBSAN_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: UBSan -- undefined behaviour sanitizer (x32 debug symbols) ++ UndefinedBehaviorSanitizer can be enabled via -fsanitize=undefined. ++ Various computations will be instrumented to detect undefined behavior ++ at runtime. Available for C and C++. ++')`'dnl libdbg ++')`'dnl libx32ubsan ++')`'dnl libubsan ++ ++ifenabled(`libvtv',` ++Package: libvtv`'VTV_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU vtable verification library (runtime) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++ ++ifenabled(`libdbg',` ++Package: libvtv`'VTV_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(vtv`'VTV_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: GNU vtable verification library (debug symbols) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++')`'dnl libdbg ++ ++ifenabled(`lib32vtv',` ++Package: lib32vtv`'VTV_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: GNU vtable verification library (32bit) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++ ++ifenabled(`libdbg',` ++Package: lib32vtv`'VTV_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(vtv`'VTV_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU vtable verification library (32 bit debug symbols) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++')`'dnl libdbg ++')`'dnl lib32vtv ++ ++ifenabled(`lib64vtv',` ++Package: lib64vtv`'VTV_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU vtable verification library (64bit) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++ ++ifenabled(`libdbg',` ++Package: lib64vtv`'VTV_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(vtv`'VTV_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU vtable verification library (64bit debug symbols) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++')`'dnl libdbg ++')`'dnl lib64vtv ++ ++ifenabled(`libn32vtv',` ++Package: libn32vtv`'VTV_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32vtv`'VTV_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GNU vtable verification library (n32) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++ ++ifenabled(`libdbg',` ++Package: libn32vtv`'VTV_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: debug ++Depends: BASELDEP, libdep(vtv`'VTV_SO,n32,=), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32vtv`'VTV_SO-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GNU vtable verification library (n32 debug symbols) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++')`'dnl libdbg ++')`'dnl libn32vtv ++ ++ifenabled(`libx32vtv',` ++Package: libx32vtv`'VTV_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU vtable verification library (x32) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++ ++ifenabled(`libdbg',` ++Package: libx32vtv`'VTV_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(vtv`'VTV_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU vtable verification library (x32 debug symbols) ++ Vtable verification is a new security hardening feature for GCC that ++ is designed to detect and handle (during program execution) when a ++ vtable pointer that is about to be used for a virtual function call is ++ not a valid vtable pointer for that call. ++')`'dnl libdbg ++')`'dnl libx32vtv ++')`'dnl libvtv ++ ++ifenabled(`libbacktrace',` ++Package: libbacktrace`'BTRACE_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: stack backtrace library ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++ ++ifenabled(`libdbg',` ++Package: libbacktrace`'BTRACE_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: stack backtrace library (debug symbols) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++')`'dnl libdbg ++ ++Package: lib32backtrace`'BTRACE_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: stack backtrace library (32bit) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++ ++ifenabled(`libdbg',` ++Package: lib32backtrace`'BTRACE_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: stack backtrace library (32 bit debug symbols) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++')`'dnl libdbg ++ ++Package: lib64backtrace`'BTRACE_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: stack backtrace library (64bit) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++ ++ifenabled(`libdbg',` ++Package: lib64backtrace`'BTRACE_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: stack backtrace library (64bit debug symbols) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++')`'dnl libdbg ++ ++Package: libn32backtrace`'BTRACE_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32backtrace`'BTRACE_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: stack backtrace library (n32) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++ ++ifenabled(`libdbg',` ++Package: libn32backtrace`'BTRACE_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: debug ++Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,n32,=), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32backtrace`'BTRACE_SO-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: stack backtrace library (n32 debug symbols) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++')`'dnl libdbg ++ ++ifenabled(`libx32backtrace',` ++Package: libx32backtrace`'BTRACE_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: stack backtrace library (x32) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++ ++ifenabled(`libdbg',` ++Package: libx32backtrace`'BTRACE_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(backtrace`'BTRACE_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: stack backtrace library (x32 debug symbols) ++ libbacktrace uses the GCC unwind interface to collect a stack trace, ++ and parses DWARF debug info to get file/line/function information. ++')`'dnl libdbg ++')`'dnl libx32backtrace ++')`'dnl libbacktrace ++ ++ifenabled(`libqmath',` ++Package: libquadmath`'QMATH_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC Quad-Precision Math Library ++ A library, which provides quad-precision mathematical functions on targets ++ supporting the __float128 datatype. The library is used to provide on such ++ targets the REAL(16) type in the GNU Fortran compiler. ++ ++ifenabled(`libdbg',` ++Package: libquadmath`'QMATH_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(quadmath`'QMATH_SO,,=), ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: GCC Quad-Precision Math Library (debug symbols) ++ A library, which provides quad-precision mathematical functions on targets ++ supporting the __float128 datatype. ++')`'dnl libdbg ++ ++Package: lib32quadmath`'QMATH_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: GCC Quad-Precision Math Library (32bit) ++ A library, which provides quad-precision mathematical functions on targets ++ supporting the __float128 datatype. The library is used to provide on such ++ targets the REAL(16) type in the GNU Fortran compiler. ++ ++ifenabled(`libdbg',` ++Package: lib32quadmath`'QMATH_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(quadmath`'QMATH_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC Quad-Precision Math Library (32 bit debug symbols) ++ A library, which provides quad-precision mathematical functions on targets ++ supporting the __float128 datatype. ++')`'dnl libdbg ++ ++Package: lib64quadmath`'QMATH_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC Quad-Precision Math Library (64bit) ++ A library, which provides quad-precision mathematical functions on targets ++ supporting the __float128 datatype. The library is used to provide on such ++ targets the REAL(16) type in the GNU Fortran compiler. ++ ++ifenabled(`libdbg',` ++Package: lib64quadmath`'QMATH_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(quadmath`'QMATH_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC Quad-Precision Math Library (64bit debug symbols) ++ A library, which provides quad-precision mathematical functions on targets ++ supporting the __float128 datatype. ++')`'dnl libdbg ++ ++#Package: libn32quadmath`'QMATH_SO`'LS ++#Section: ifdef(`TARGET',`devel',`libs') ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Priority: optional ++#Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32quadmath`'QMATH_SO [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: GCC Quad-Precision Math Library (n32) ++# A library, which provides quad-precision mathematical functions on targets ++# supporting the __float128 datatype. The library is used to provide on such ++# targets the REAL(16) type in the GNU Fortran compiler. ++ ++ifenabled(`libdbg',` ++#Package: libn32quadmath`'QMATH_SO-dbg`'LS ++#Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++#Section: debug ++#Priority: optional ++#Depends: BASELDEP, libdep(quadmath`'QMATH_SO,n32,=), ${misc:Depends} ++#ifdef(`TARGET',`dnl',`Conflicts: lib32quadmath`'QMATH_SO-dbg [biarch32_conflicts]') ++#BUILT_USING`'dnl ++#Description: GCC Quad-Precision Math Library (n32 debug symbols) ++# A library, which provides quad-precision mathematical functions on targets ++# supporting the __float128 datatype. ++')`'dnl libdbg ++ ++ifenabled(`libx32qmath',` ++Package: libx32quadmath`'QMATH_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC Quad-Precision Math Library (x32) ++ A library, which provides quad-precision mathematical functions on targets ++ supporting the __float128 datatype. The library is used to provide on such ++ targets the REAL(16) type in the GNU Fortran compiler. ++ ++ifenabled(`libdbg',` ++Package: libx32quadmath`'QMATH_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(quadmath`'QMATH_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC Quad-Precision Math Library (x32 debug symbols) ++ A library, which provides quad-precision mathematical functions on targets ++ supporting the __float128 datatype. ++')`'dnl libdbg ++')`'dnl libx32qmath ++')`'dnl libqmath ++ ++ifenabled(`libcc1',` ++Package: libcc1-`'CC1_SO ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC cc1 plugin for GDB ++ libcc1 is a plugin for GDB. ++')`'dnl libcc1 ++ ++ifenabled(`libjit',` ++Package: libgccjit`'GCCJIT_SO ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, libgcc`'PV-dev, binutils, ${dep:libcdev}, ++ ${shlibs:Depends}, ${misc:Depends} ++Breaks: python-gccjit (<< 0.4-4), python3-gccjit (<< 0.4-4) ++BUILT_USING`'dnl ++Description: GCC just-in-time compilation (shared library) ++ libgccjit provides an embeddable shared library with an API for adding ++ compilation to existing programs using GCC. ++ ++ifenabled(`libdbg',` ++Package: libgccjit`'GCCJIT_SO-dbg ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, libgccjit`'GCCJIT_SO (= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC just-in-time compilation (debug information) ++ libgccjit provides an embeddable shared library with an API for adding ++ compilation to existing programs using GCC. ++')`'dnl libdbg ++')`'dnl libjit ++ ++ifenabled(`jit',` ++Package: libgccjit`'PV-doc ++Section: doc ++Architecture: all ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Conflicts: libgccjit-5-doc, libgccjit-6-doc, libgccjit-7-doc, libgccjit-8-doc, ++ libgccjit-9-doc, libgccjit-10-doc, libgccjit-11-doc, libgccjit-12-doc, ++ libgccjit-13-doc, libgccjit-14-doc, ++Description: GCC just-in-time compilation (documentation) ++ libgccjit provides an embeddable shared library with an API for adding ++ compilation to existing programs using GCC. ++ ++Package: libgccjit`'PV-dev ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, libgccjit`'GCCJIT_SO (>= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Suggests: libgccjit`'PV-dbg ++Description: GCC just-in-time compilation (development files) ++ libgccjit provides an embeddable shared library with an API for adding ++ compilation to existing programs using GCC. ++')`'dnl jit ++ ++ifenabled(`libdiag',` ++Package: libgdiagnostics`'DIAGNOSTICS_SO ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC diagnostic-handling code wrapped into a library (shared library) ++ GCCs diagnostic-handling code covers things like ++ - quoting pertinent source code (with a cache) ++ - underlining points and ranges in the source code, possibly with labels ++ - emitting fix-it hints ++ - generating patches from fix-it hints ++ - SARIF output ++ ++ifenabled(`libdbg',` ++Package: libgdiagnostics`'DIAGNOSTICS_SO-dbg ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC diagnostic-handling code wrapped into a library (debug information) ++ GCCs diagnostic-handling code covers things like ++ - quoting pertinent source code (with a cache) ++ - underlining points and ranges in the source code, possibly with labels ++ - emitting fix-it hints ++ - generating patches from fix-it hints ++ - SARIF output ++')`'dnl libdbg ++')`'dnl libdiag ++ ++ifenabled(`gdiag',` ++#Package: libgdiagnostics`'PV-doc ++#Section: doc ++#Architecture: all ++#Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++#Conflicts: libgdiagnostics-14-doc, ++#Description: GCC diagnostic-handling code wrapped into a library (documentation) ++# GCCs diagnostic-handling code covers things like ++# - quoting pertinent source code (with a cache) ++# - underlining points and ranges in the source code, possibly with labels ++# - emitting fix-it hints ++# - generating patches from fix-it hints ++# - SARIF output ++ ++Package: libgdiagnostics`'PV-dev ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (>= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Suggests: libgdiagnostic`'PV-dbg ++Description: GCC diagnostic-handling code wrapped into a library (development files) ++ GCCs diagnostic-handling code covers things like ++ - quoting pertinent source code (with a cache) ++ - underlining points and ranges in the source code, possibly with labels ++ - emitting fix-it hints ++ - generating patches from fix-it hints ++ - SARIF output ++ ++Package: gcc`'PV-diagnostics ++ifdef(`TARGET',`dnl',`Section: devel') ++Architecture: any ++Depends: BASEDEP, libgdiagnostics`'DIAGNOSTICS_SO (>= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC diagnostic tools ++ Currently only provides the sarif-replay command-line tool, which takes ++ SARIF files as input, and uses libdiagnostics to replay any diagnostics ++ within them as if they were GCC diagnostics. ++')`'dnl gdiag ++ ++ifenabled(`objpp',` ++ifenabled(`objppdev',` ++for_each_arch(` ++Package: gobjc++`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: BASEDEP, gobjc`'PV`'arch_gnusuffix (= ${gcc:Version}), g++`'PV`'arch_gnusuffix (= ${gcc:Version}), ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler`'arch_gnusuffix ++BUILT_USING`'dnl ++Description: GNU Objective-C++ compiler for the arch_gnu architecture ++ This is the GNU Objective-C++ compiler for the ++ arch_gnu architecture, which compiles Objective-C++ ++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++')`'dnl for_each_arch ++ ++Package: gobjc++`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gobjc++`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gobjc`'PV`'-for-host (= ${gcc:Version}), g++`'PV`'-for-host (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Objective-C++ compiler for the host architecture ++ This is the GNU Objective-C++ compiler for the host architecture, ++ which compiles Objective-C++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gobjc++`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gobjc++`'PV (>= ${gcc:Version}), ++ gobjc`'PV`'-for-build (= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), g++`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Objective-C++ compiler for the build architecture ++ This is the GNU Objective-C++ compiler for the build architecture, ++ which compiles Objective-C++ on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ This is a dependency package. ++ ++Package: gobjc++`'PV ++Architecture: any ++Depends: BASEDEP, gobjc++`'PV`'${target:suffix} (= ${gcc:Version}), gobjc`'PV (= ${gcc:Version}), g++`'PV (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjcxx:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) ++Provides: objc++-compiler ++BUILT_USING`'dnl ++Description: GNU Objective-C++ compiler ++ This is the GNU Objective-C++ compiler, which compiles ++ Objective-C++ on platforms supported by the gcc compiler. It uses the ++ gcc backend to generate optimized code. ++')`'dnl TARGET ++')`'dnl obcppdev ++ ++ifenabled(`multilib',` ++Package: gobjc++`'PV-multilib`'TS ++Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gobjc++`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), gobjc`'PV-multilib`'TS (= ${gcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Objective-C++ compiler (multilib support) ++ This is the GNU Objective-C++ compiler, which compiles Objective-C++ on ++ platforms supported by the gcc compiler. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multilib ++')`'dnl obcpp ++ ++ifenabled(`objc',` ++ifenabled(`objcdev',` ++for_each_arch(` ++Package: gobjc`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ${dep:libcdev}, ${shlibs:Depends}, libidevdep(objc`'PV-dev,,=), ${misc:Depends} ++Suggests: gcc`'PV-doc (>= ${gcc:SoftVersion}), libdbgdep(objc`'OBJC_SO-dbg,) ++Provides: objc-compiler`'arch_gnusuffix ++BUILT_USING`'dnl ++Description: GNU Objective-C compiler for the arch_gnu architecture ++ This is the GNU Objective-C compiler for the arch_gnu ++ architecture, which compiles Objective-C on platforms supported by the ++ gcc compiler. It uses the gcc backend to generate optimized code. ++')`'dnl for_each_arch ++ ++Package: gobjc`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gobjc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Objective-C compiler for the host architecture ++ This is the GNU Objective-C compiler for the host architecture, ++ which compiles Objective-C on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gobjc`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gobjc`'PV (>= ${gcc:Version}), ${misc:Depends}, ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}) ++BUILT_USING`'dnl ++Description: GNU Objective-C compiler for the build architecture ++ This is the GNU Objective-C compiler for the build architecture, ++ which compiles Objective-C on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ This is a dependency package. ++ ++Package: gobjc`'PV ++Architecture: any ++Depends: BASEDEP, gobjc`'PV`'${target:suffix} (= ${gcc:Version}), gcc`'PV (= ${gcc:Version}), ${misc:Depends} ++Suggests: ${gobjc:multilib}, gcc`'PV-doc (>= ${gcc:SoftVersion}) ++Provides: objc-compiler ++BUILT_USING`'dnl ++Description: GNU Objective-C compiler ++ This is the GNU Objective-C compiler, which compiles ++ Objective-C on platforms supported by the gcc compiler. It uses the ++ gcc backend to generate optimized code. ++')`'dnl ifndef TARGET ++ifenabled(`multilib',` ++Package: gobjc`'PV-multilib`'TS ++Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gobjc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libobjcbiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Objective-C compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU Objective-C compiler, which compiles Objective-C on platforms ++ supported by the gcc compiler. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multilib ++ ++Package: libobjc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(objc`'OBJC_SO,), ${shlibs:Depends}, ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++Package: lib64objc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(objc`'OBJC_SO,64), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (64bit development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++Package: lib32objc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(objc`'OBJC_SO,32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (32bit development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++Package: libn32objc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(objc`'OBJC_SO,n32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (n32 development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++ ++ifenabled(`x32dev',` ++Package: libx32objc`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(objc`'OBJC_SO,x32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (x32 development files) ++ This package contains the headers and static library files needed to build ++ GNU ObjC applications. ++')`'dnl libx32objc ++')`'dnl objcdev ++ ++ifenabled(`libobjc',` ++Package: libobjc`'OBJC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++ifelse(OBJC_SO,`2',`Breaks: ${multiarch:breaks} ++',`')')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications ++ Library needed for GNU ObjC applications linked against the shared library. ++ ++ifenabled(`libdbg',` ++Package: libobjc`'OBJC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, libdep(objc`'OBJC_SO,,=), libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (debug symbols) ++ Library needed for GNU ObjC applications linked against the shared library. ++')`'dnl libdbg ++')`'dnl libobjc ++ ++ifenabled(`lib64objc',` ++Package: lib64objc`'OBJC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (64bit) ++ Library needed for GNU ObjC applications linked against the shared library. ++ ++ifenabled(`libdbg',` ++Package: lib64objc`'OBJC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, libdep(objc`'OBJC_SO,64,=), libdbgdep(gcc-s`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (64 bit debug symbols) ++ Library needed for GNU ObjC applications linked against the shared library. ++')`'dnl libdbg ++')`'dnl lib64objc ++ ++ifenabled(`lib32objc',` ++Package: lib32objc`'OBJC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (32bit) ++ Library needed for GNU ObjC applications linked against the shared library. ++ ++ifenabled(`libdbg',` ++Package: lib32objc`'OBJC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, libdep(objc`'OBJC_SO,32,=), libdbgdep(gcc-s`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (32 bit debug symbols) ++ Library needed for GNU ObjC applications linked against the shared library. ++')`'dnl libdbg ++')`'dnl lib32objc ++ ++ifenabled(`libn32objc',` ++Package: libn32objc`'OBJC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32objc`'OBJC_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (n32) ++ Library needed for GNU ObjC applications linked against the shared library. ++ ++ifenabled(`libdbg',` ++Package: libn32objc`'OBJC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, libdep(objc`'OBJC_SO,n32,=), libdbgdep(gcc-s`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32objc`'OBJC_SO-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (n32 debug symbols) ++ Library needed for GNU ObjC applications linked against the shared library. ++')`'dnl libdbg ++')`'dnl libn32objc ++ ++ifenabled(`libx32objc',` ++Package: libx32objc`'OBJC_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (x32) ++ Library needed for GNU ObjC applications linked against the shared library. ++ ++ifenabled(`libdbg',` ++Package: libx32objc`'OBJC_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, libdep(objc`'OBJC_SO,x32,=), libdbgdep(gcc-s`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Objective-C applications (x32 debug symbols) ++ Library needed for GNU ObjC applications linked against the shared library. ++')`'dnl libdbg ++')`'dnl libx32objc ++')`'dnl objc ++ ++ifenabled(`fortran',` ++ifenabled(`fdev',`dnl ++for_each_arch(`ifelse(index(` 'fortran_no_archs` ',` !'arch_deb` '),`-1',` ++Package: gfortran`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: BASEDEP, gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), libidevdep(gfortran`'PV-dev,,=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gfortran`'PV-doc, ++ libdbgdep(gfortran`'FORTRAN_SO-dbg), ++ libcoarrays-dev ++BUILT_USING`'dnl ++Description: GNU Fortran compiler for the arch_gnu architecture ++ This is the GNU Fortran compiler for the arch_gnu architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++')')`'dnl for_each_arch ++ ++Package: gfortran`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gfortran`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Fortran compiler for the host architecture ++ This is the GNU Fortran compiler for the host architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gfortran`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gfortran`'PV (>= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Fortran compiler for the build architecture ++ This is the GNU Fortran compiler for the build architecture, ++ which compiles Fortran on platforms supported by the gcc compiler. ++ It uses the gcc backend to generate optimized code. ++ . ++ This is a dependency package. ++ ++Package: gfortran`'PV ++Architecture: any ++Depends: gfortran`'PV`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (= ${gcc:Version}), ${misc:Depends} ++Provides: fortran95-compiler, ${fortran:mod-version} ++Suggests: ${gfortran:multilib}, gfortran`'PV-doc ++BUILT_USING`'dnl ++Description: GNU Fortran compiler ++ This is the GNU Fortran compiler, which compiles ++ Fortran on platforms supported by the gcc compiler. It uses the ++ gcc backend to generate optimized code. ++')`'dnl TARGET ++ ++ifenabled(`multilib',` ++Package: gfortran`'PV-multilib`'TS ++Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gfortran`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgfortranbiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Fortran compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU Fortran compiler, which compiles Fortran on platforms ++ supported by the gcc compiler. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multilib ++ ++ifenabled(`gfdldoc',` ++Package: gfortran`'PV-doc ++Architecture: all ++Section: doc ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Description: Documentation for the GNU Fortran compiler (gfortran) ++ Documentation for the GNU Fortran compiler in info `format'. ++')`'dnl gfdldoc ++ ++Package: libgfortran`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Depends: BASELDEP, libdevdep(gcc`'PV-dev`',), libdep(gfortran`'FORTRAN_SO,), ${shlibs:Depends}, ${misc:Depends} ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++Package: lib64gfortran`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev`',64), libdep(gfortran`'FORTRAN_SO,64), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (64bit development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++Package: lib32gfortran`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev`',32), libdep(gfortran`'FORTRAN_SO,32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (32bit development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++Package: libn32gfortran`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev`',n32), libdep(gfortran`'FORTRAN_SO,n32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (n32 development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++ ++ifenabled(`x32dev',` ++Package: libx32gfortran`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev`',x32), libdep(gfortran`'FORTRAN_SO,x32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (x32 development files) ++ This package contains the headers and static library files needed to build ++ GNU Fortran applications. ++')`'dnl libx32gfortran ++')`'dnl fdev ++ ++ifenabled(`libgfortran',` ++Package: libgfortran`'FORTRAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++Breaks: ${multiarch:breaks} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: libgfortran`'FORTRAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,,=), libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (debug symbols) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++')`'dnl libdbg ++')`'dnl libgfortran ++ ++ifenabled(`lib64gfortran',` ++Package: lib64gfortran`'FORTRAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (64bit) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: lib64gfortran`'FORTRAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (64bit debug symbols) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++')`'dnl libdbg ++')`'dnl lib64gfortran ++ ++ifenabled(`lib32gfortran',` ++Package: lib32gfortran`'FORTRAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (32bit) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: lib32gfortran`'FORTRAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (32 bit debug symbols) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++')`'dnl libdbg ++')`'dnl lib32gfortran ++ ++ifenabled(`libn32gfortran',` ++Package: libn32gfortran`'FORTRAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32gfortran`'FORTRAN_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (n32) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: libn32gfortran`'FORTRAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,n32,=), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32gfortran`'FORTRAN_SO-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (n32 debug symbols) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++')`'dnl libdbg ++')`'dnl libn32gfortran ++ ++ifenabled(`libx32gfortran',` ++Package: libx32gfortran`'FORTRAN_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (x32) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: libx32gfortran`'FORTRAN_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, libdep(gfortran`'FORTRAN_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Fortran applications (x32 debug symbols) ++ Library needed for GNU Fortran applications linked against the ++ shared library. ++')`'dnl libdbg ++')`'dnl libx32gfortran ++')`'dnl fortran ++ ++ifenabled(`ggo',` ++ifenabled(`godev',` ++for_each_arch(`ifelse(index(` 'go_no_archs` ',` !'arch_deb` '),`-1',` ++Package: gccgo`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: BASEDEP, ifdef(`STANDALONEGO',`${dep:libcc1}, ',`gcc`'PV`'arch_gnusuffix (= ${gcc:Version}), ')libidevdep(go`'PV-dev,,>=), ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg), ++Conflicts: ${golang:Conflicts} ++Breaks: libgo12`'LS (<< 8-20171209-2) ++Replaces: libgo12`'LS (<< 8-20171209-2) ++BUILT_USING`'dnl ++Description: GNU Go compiler for the arch_gnu architecture ++ This is the GNU Go compiler for the arch_gnu architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++')')`'dnl for_each_arch ++ ++Package: gccgo`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gccgo`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Go compiler for the host architecture ++ This is the GNU Go compiler for the host architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gccgo`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gccgo`'PV (>= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Go compiler for the build architecture ++ This is the GNU Go compiler for the build architecture, which ++ compiles Go on platforms supported by the gcc compiler. It uses the gcc ++ backend to generate optimized code. ++ . ++ This is a dependency package. ++ ++Package: gccgo`'PV ++Architecture: any ++Depends: BASEDEP, gccgo`'PV`'${target:suffix} (= ${gcc:Version}), ifdef(`STANDALONEGO',`',`gcc`'PV (= ${gcc:Version}), ')${misc:Depends} ++Provides: go-compiler ++Suggests: ${go:multilib}, gccgo`'PV-doc, libdbgdep(go`'GO_SO-dbg), ++Conflicts: ${golang:Conflicts} ++BUILT_USING`'dnl ++Description: GNU Go compiler ++ This is the GNU Go compiler, which compiles Go on platforms supported ++ by the gcc compiler. It uses the gcc backend to generate optimized code. ++')`'dnl no-TARGET ++ ++ifenabled(`multilib',` ++Package: gccgo`'PV-multilib`'TS ++Architecture: ifdef(`TARGET',`any',MULTILIB_ARCHS) ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gccgo`'PV`'TS (= ${gcc:Version}), ifdef(`STANDALONEGO',,`gcc`'PV-multilib`'TS (= ${gcc:Version}), ')${dep:libgobiarchdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: ${dep:libgobiarchdbg} ++BUILT_USING`'dnl ++Description: GNU Go compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU Go compiler, which compiles Go on platforms supported ++ by the gcc compiler. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multilib ++ ++ifenabled(`gfdldoc',` ++Package: gccgo`'PV-doc ++Architecture: all ++Section: doc ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Documentation for the GNU Go compiler (gccgo) ++ Documentation for the GNU Go compiler in info `format'. ++')`'dnl gfdldoc ++ ++Package: libgo`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,), libdep(go`'GO_SO,), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++Package: lib64go`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), libdep(go`'GO_SO,64), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (64bit development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++Package: lib32go`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), libdep(go`'GO_SO,32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (32bit development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++Package: libn32go`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), libdep(go`'GO_SO,n32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (n32 development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++ ++ifenabled(`x32dev',` ++Package: libx32go`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: libdevel ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(go`'GO_SO,x32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (x32 development files) ++ This package contains the headers and static library files needed to build ++ GNU Go applications. ++')`'dnl libx32go ++')`'dnl godev ++ ++ifenabled(`libggo',` ++Package: libgo`'GO_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: libgo`'GO_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, libdep(go`'GO_SO,,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (debug symbols) ++ Library needed for GNU Go applications linked against the ++ shared library. This currently is an empty package, because the ++ library is completely unstripped. ++')`'dnl libdbg ++')`'dnl libgo ++ ++ifenabled(`lib64ggo',` ++Package: lib64go`'GO_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (64bit) ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: lib64go`'GO_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, libdep(go`'GO_SO,64,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (64bit debug symbols) ++ Library needed for GNU Go applications linked against the ++ shared library. This currently is an empty package, because the ++ library is completely unstripped. ++')`'dnl libdbg ++')`'dnl lib64go ++ ++ifenabled(`lib32ggo',` ++Package: lib32go`'GO_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (32bit) ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: lib32go`'GO_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, libdep(go`'GO_SO,32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (32 bit debug symbols) ++ Library needed for GNU Go applications linked against the ++ shared library. This currently is an empty package, because the ++ library is completely unstripped. ++')`'dnl libdbg ++')`'dnl lib32go ++ ++ifenabled(`libn32ggo',` ++Package: libn32go`'GO_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32go`'GO_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (n32) ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: libn32go`'GO_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, libdep(go`'GO_SO,n32,=), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32go`'GO_SO-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (n32 debug symbols) ++ Library needed for GNU Go applications linked against the ++ shared library. This currently is an empty package, because the ++ library is completely unstripped. ++')`'dnl libdbg ++')`'dnl libn32go ++ ++ifenabled(`libx32ggo',` ++Package: libx32go`'GO_SO`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (x32) ++ Library needed for GNU Go applications linked against the ++ shared library. ++ ++ifenabled(`libdbg',` ++Package: libx32go`'GO_SO-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, libdep(go`'GO_SO,x32,=), ${misc:Depends} ++BUILT_USING`'dnl ++Description: Runtime library for GNU Go applications (x32 debug symbols) ++ Library needed for GNU Go applications linked against the ++ shared library. This currently is an empty package, because the ++ library is completely unstripped. ++')`'dnl libdbg ++')`'dnl libx32go ++')`'dnl ggo ++ ++ifenabled(`c++',` ++ifenabled(`libcxx',` ++Package: libstdc++CXX_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, ${dep:libc}, ${shlibs:Depends}, ${misc:Depends} ++Provides: ifdef(`TARGET',`libstdc++CXX_SO-TARGET-dcv1',`') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++Breaks: ${multiarch:breaks} ++')`'dnl ++Conflicts: scim (<< 1.4.2-1) ++Replaces: libstdc++CXX_SO`'PV-dbg`'LS (<< 4.9.0-3) ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains an additional runtime library for C++ programs ++ built with the GNU compiler. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++')`'dnl libcxx ++ ++ifenabled(`lib32cxx',` ++Package: lib32stdc++CXX_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libdep(gcc-s1,32), ${shlibs:Depends}, ${misc:Depends} ++Conflicts: ${confl:lib32} ++ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-TARGET-dcv1 ++',`')`'dnl ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3 (32 bit Version) ++ This package contains an additional runtime library for C++ programs ++ built with the GNU compiler. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++')`'dnl lib32cxx ++ ++ifenabled(`lib64cxx',` ++Package: lib64stdc++CXX_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libdep(gcc-s1,64), ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-TARGET-dcv1 ++',`')`'dnl ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (64bit) ++ This package contains an additional runtime library for C++ programs ++ built with the GNU compiler. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++')`'dnl lib64cxx ++ ++ifenabled(`libn32cxx',` ++Package: libn32stdc++CXX_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libdep(gcc-s1,n32), ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-TARGET-dcv1 ++',`')`'dnl ++ifdef(`TARGET',`dnl',`Conflicts: lib32stdc++`'CXX_SO [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (n32) ++ This package contains an additional runtime library for C++ programs ++ built with the GNU compiler. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++')`'dnl libn32cxx ++ ++ifenabled(`libx32cxx',` ++Package: libx32stdc++CXX_SO`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++ifdef(`TARGET',`dnl',`Section: libs') ++Depends: BASELDEP, libdep(gcc-s1,x32), ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-TARGET-dcv1 ++',`')`'dnl ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3`'ifdef(`TARGET',` (TARGET)', `') (x32) ++ This package contains an additional runtime library for C++ programs ++ built with the GNU compiler. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++')`'dnl libx32cxx ++ ++ifenabled(`c++dev',` ++Package: libstdc++`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,,=), ++ libdep(stdc++CXX_SO,,>=), ${dep:libcdev}, ${misc:Depends} ++ifdef(`TARGET',`',`dnl native ++Suggests: libstdc++`'PV-doc ++')`'dnl native ++Provides: libstdc++-dev`'LS`'ifdef(`TARGET',`, libstdc++-dev-TARGET-dcv1') ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++Package: libstdc++`'PV-pic`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Depends: BASELDEP, libdep(stdc++CXX_SO,), ++ libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libstdc++-pic-TARGET-dcv1 ++',`')`'dnl ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3 (shared library subset kit)`'ifdef(`TARGET',` (TARGET)', `') ++ This is used to develop subsets of the libstdc++ shared libraries for ++ use on custom installation floppies and in embedded systems. ++ . ++ Unless you are making one of those, you will not need this package. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++Package: libstdc++CXX_SO`'PV-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++Section: debug ++Depends: BASELDEP, libdep(stdc++CXX_SO,), ++ libdbgdep(gcc-s`'GCC_SO-dbg,,>=,${libgcc:Version}), ${shlibs:Depends}, ${misc:Depends} ++Provides: ifdef(`TARGET',`libstdc++CXX_SO-dbg-TARGET-dcv1',`') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Recommends: libdevdep(stdc++`'PV-dev,) ++Conflicts: libstdc++5-dbg`'LS, libstdc++5-3.3-dbg`'LS, libstdc++6-dbg`'LS, ++ libstdc++6-4.0-dbg`'LS, libstdc++6-4.1-dbg`'LS, libstdc++6-4.2-dbg`'LS, ++ libstdc++6-4.3-dbg`'LS, libstdc++6-4.4-dbg`'LS, libstdc++6-4.5-dbg`'LS, ++ libstdc++6-4.6-dbg`'LS, libstdc++6-4.7-dbg`'LS, libstdc++6-4.8-dbg`'LS, ++ libstdc++6-4.9-dbg`'LS, libstdc++6-5-dbg`'LS, libstdc++6-6-dbg`'LS, ++ libstdc++6-7-dbg`'LS, libstdc++6-8-dbg`'LS, libstdc++6-9-dbg`'LS, ++ libstdc++6-10-dbg`'LS, libstdc++6-11-dbg`'LS, libstdc++6-12-dbg`'LS, ++ libstdc++6-13-dbg`'LS, libstdc++6-14-dbg`'LS, ++BUILT_USING`'dnl ++ifelse(index(enabled_languages, `libdbg'), -1, `dnl ++Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++',`dnl ++Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains the shared library of libstdc++ compiled with ++ debugging symbols. ++')`'dnl ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++Package: lib32stdc++`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,32), ++ libdep(stdc++CXX_SO,32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++Package: lib32stdc++CXX_SO`'PV-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: debug ++Depends: BASELDEP, libdep(stdc++CXX_SO,32), ++ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,32,>=,${gcc:EpochVersion}), ++ ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`Provides: lib32stdc++CXX_SO-dbg-TARGET-dcv1 ++',`')`'dnl ++Conflicts: lib32stdc++6-dbg`'LS, lib32stdc++6-4.0-dbg`'LS, ++ lib32stdc++6-4.1-dbg`'LS, lib32stdc++6-4.2-dbg`'LS, lib32stdc++6-4.3-dbg`'LS, ++ lib32stdc++6-4.4-dbg`'LS, lib32stdc++6-4.5-dbg`'LS, lib32stdc++6-4.6-dbg`'LS, ++ lib32stdc++6-4.7-dbg`'LS, lib32stdc++6-4.8-dbg`'LS, lib32stdc++6-4.9-dbg`'LS, ++ lib32stdc++6-5-dbg`'LS, lib32stdc++6-6-dbg`'LS, lib32stdc++6-7-dbg`'LS, ++ lib32stdc++6-8-dbg`'LS, lib32stdc++6-9-dbg`'LS, lib32stdc++6-10-dbg`'LS, ++ lib32stdc++6-11-dbg`'LS, lib32stdc++6-12-dbg`'LS, lib32stdc++6-13-dbg`'LS, ++ lib32stdc++6-14-dbg`'LS, ++BUILT_USING`'dnl ++ifelse(index(enabled_languages, `libdbg'), -1, `dnl ++Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++',`dnl ++Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') ++ This package contains the shared library of libstdc++ compiled with ++ debugging symbols. ++')`'dnl ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++Package: lib64stdc++`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,64), ++ libdep(stdc++CXX_SO,64), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++Package: lib64stdc++CXX_SO`'PV-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: debug ++Depends: BASELDEP, libdep(stdc++CXX_SO,64), ++ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,64,>=,${gcc:EpochVersion}), ++ ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`Provides: lib64stdc++CXX_SO-dbg-TARGET-dcv1 ++',`')`'dnl ++Conflicts: lib64stdc++6-dbg`'LS, lib64stdc++6-4.0-dbg`'LS, ++ lib64stdc++6-4.1-dbg`'LS, lib64stdc++6-4.2-dbg`'LS, lib64stdc++6-4.3-dbg`'LS, ++ lib64stdc++6-4.4-dbg`'LS, lib64stdc++6-4.5-dbg`'LS, lib64stdc++6-4.6-dbg`'LS, ++ lib64stdc++6-4.7-dbg`'LS, lib64stdc++6-4.8-dbg`'LS, lib64stdc++6-4.9-dbg`'LS, ++ lib64stdc++6-5-dbg`'LS, lib64stdc++6-6-dbg`'LS, lib64stdc++6-7-dbg`'LS, ++ lib64stdc++6-8-dbg`'LS, lib64stdc++6-9-dbg`'LS, lib64stdc++6-10-dbg`'LS, ++ lib64stdc++6-11-dbg`'LS, lib64stdc++6-12-dbg`'LS, lib64stdc++6-13-dbg`'LS, ++ lib64stdc++6-14-dbg`'LS, ++BUILT_USING`'dnl ++ifelse(index(enabled_languages, `libdbg'), -1, `dnl ++Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++',`dnl ++Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains the shared library of libstdc++ compiled with ++ debugging symbols. ++')`'dnl ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++Package: libn32stdc++`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,n32), ++ libdep(stdc++CXX_SO,n32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET', `') ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++Package: libn32stdc++CXX_SO`'PV-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: debug ++Depends: BASELDEP, libdep(stdc++CXX_SO,n32), ++ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,n32,>=,${gcc:EpochVersion}), ++ ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libn32stdc++CXX_SO-dbg-TARGET-dcv1 ++',`')`'dnl ++Conflicts: libn32stdc++6-dbg`'LS, libn32stdc++6-4.0-dbg`'LS, ++ libn32stdc++6-4.1-dbg`'LS, libn32stdc++6-4.2-dbg`'LS, libn32stdc++6-4.3-dbg`'LS, ++ libn32stdc++6-4.4-dbg`'LS, libn32stdc++6-4.5-dbg`'LS, libn32stdc++6-4.6-dbg`'LS, ++ libn32stdc++6-4.7-dbg`'LS, libn32stdc++6-4.8-dbg`'LS, libn32stdc++6-4.9-dbg`'LS, ++ libn32stdc++6-5-dbg`'LS, libn32stdc++6-6-dbg`'LS, libn32stdc++6-7-dbg`'LS, ++ libn32stdc++6-8-dbg`'LS, libn32stdc++6-9-dbg`'LS, libn32stdc++6-10-dbg`'LS, ++ libn32stdc++6-11-dbg`'LS, libn32stdc++6-12-dbg`'LS, libn32stdc++6-13-dbg`'LS, ++ libn32stdc++6-14-dbg`'LS, ++BUILT_USING`'dnl ++ifelse(index(enabled_languages, `libdbg'), -1, `dnl ++Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++',`dnl ++Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET)',` (TARGET', `') ++ This package contains the shared library of libstdc++ compiled with ++ debugging symbols. ++')`'dnl ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++ ++ifenabled(`x32dev',` ++Package: libx32stdc++`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++ifdef(`TARGET',`dnl',`Section: libdevel') ++Depends: BASELDEP, libdevdep(gcc`'PV-dev,x32), libdep(stdc++CXX_SO,x32), ++ libdep(stdc++CXX_SO,x32), libdevdep(stdc++`'PV-dev,), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Standard C++ Library v3 (development files)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains the headers and static library files necessary for ++ building C++ programs which use libstdc++. ++ . ++ libstdc++-v3 is a complete rewrite from the previous libstdc++-v2, which ++ was included up to g++-2.95. The first version of libstdc++-v3 appeared ++ in g++-3.0. ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++')`'dnl x32dev ++ ++ifenabled(`libx32dbgcxx',` ++Package: libx32stdc++CXX_SO`'PV-dbg`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: debug ++Depends: BASELDEP, libdep(stdc++CXX_SO,x32), ++ libdevdep(stdc++`'PV-dev,), libdbgdep(gcc-s`'GCC_SO-dbg,x32,>=,${gcc:EpochVersion}), ++ ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`Provides: libx32stdc++CXX_SO-dbg-TARGET-dcv1 ++',`')`'dnl ++Conflicts: libx32stdc++6-dbg`'LS, libx32stdc++6-4.6-dbg`'LS, ++ libx32stdc++6-4.7-dbg`'LS, libx32stdc++6-4.8-dbg`'LS, libx32stdc++6-4.9-dbg`'LS, ++ libx32stdc++6-5-dbg`'LS, libx32stdc++6-6-dbg`'LS, libx32stdc++6-7-dbg`'LS, ++ libx32stdc++6-8-dbg`'LS, libx32stdc++6-9-dbg`'LS, libx32stdc++6-10-dbg`'LS, ++ libx32stdc++6-11-dbg`'LS, libx32stdc++6-12-dbg`'LS, libx32stdc++6-13-dbg`'LS, ++ libx32stdc++6-14-dbg`'LS, ++BUILT_USING`'dnl ++ifelse(index(enabled_languages, `libdbg'), -1, `dnl ++Description: GNU Standard C++ Library v3 (debug build)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains a debug build of the shared libstdc++ library. The debug ++ symbols for the default build can be found in the libstdc++6-dbgsym package. ++',`dnl ++Description: GNU Standard C++ Library v3 (debugging files)`'ifdef(`TARGET',` (TARGET)', `') ++ This package contains the shared library of libstdc++ compiled with ++ debugging symbols. ++')`'dnl ++ifdef(`TARGET', `dnl ++ . ++ This package contains files for TARGET architecture, for use in cross-compile ++ environment. ++')`'dnl ++')`'dnl libx32dbgcxx ++ ++ifdef(`TARGET', `', ` ++Package: libstdc++`'PV-doc ++Build-Profiles: ++Architecture: all ++Section: doc ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Conflicts: libstdc++5-doc, libstdc++5-3.3-doc, libstdc++6-doc, ++ libstdc++6-4.0-doc, libstdc++6-4.1-doc, libstdc++6-4.2-doc, libstdc++6-4.3-doc, ++ libstdc++6-4.4-doc, libstdc++6-4.5-doc, libstdc++6-4.6-doc, libstdc++6-4.7-doc, ++ libstdc++-4.8-doc, libstdc++-4.9-doc, libstdc++-5-doc, libstdc++-6-doc, ++ libstdc++-7-doc, libstdc++-8-doc, libstdc++-9-doc, libstdc++-10-doc, ++ libstdc++-11-doc, libstdc++-12-doc, libstdc++-13-doc, libstdc++-14-doc, ++Description: GNU Standard C++ Library v3 (documentation files) ++ This package contains documentation files for the GNU stdc++ library. ++ . ++ One set is the distribution documentation, the other set is the ++ source documentation including a namespace list, class hierarchy, ++ alphabetical list, compound list, file list, namespace members, ++ compound members and file members. ++')`'dnl native ++')`'dnl c++dev ++')`'dnl c++ ++ ++ifenabled(`ada',` ++for_each_arch(`ifelse(index(` 'ada_no_archs` ',` !'arch_deb` '),`-1',` ++Package: gnat`'-GNAT_V`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, gcc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ${dep:libgnat}, ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++Suggests: gnat`'PV-doc, ada-reference-manual-2012 ++ifdef(`TARGET',`',`dnl ++Provides: gnat`'-GNAT_V-${libgnat:alihash} ++')`'dnl ++Conflicts: gnat-4.9, gnat-5`'TS, gnat-6`'TS, gnat-7`'TS, gnat-8`'TS, gnat-9`'TS, ++ gnat-10`'TS, gnat-11`'TS, gnat-12`'TS, gnat-13`'TS, gnat-14`'TS, ++ gnat-7`'arch_gnusuffix, gnat-8`'arch_gnusuffix, ++ gnat-9`'arch_gnusuffix, gnat-10`'arch_gnusuffix, ++ gnat-11`'arch_gnusuffix, gnat-12`'arch_gnusuffix, ++# Previous versions conflict for (at least) /usr/bin/gnatmake. ++BUILT_USING`'dnl ++Description: GNU Ada compiler for the arch_gnu architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++')')`'dnl for_each_arch ++ ++Package: gnat`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gnat`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Ada compiler for the host architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gnat`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gnat`'PV (>= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Ada compiler for the build architecture ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++ . ++ This is a dependency package. ++ ++Package: gnat`'-GNAT_V ++Architecture: any ++ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: gnat`'-GNAT_V`'${target:suffix} (= ${gcc:Version}), BASEDEP, gcc`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} ++Suggests: gnat`'PV-doc, ada-reference-manual-2012, gnat`'-GNAT_V-sjlj ++BUILT_USING`'dnl ++Description: GNU Ada compiler ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides the compiler, tools and runtime library that handles ++ exceptions using the default zero-cost mechanism. ++')`'dnl no-TARGET ++ ++ifenabled(`adasjlj',` ++Package: gnat`'-GNAT_V-sjlj`'TS ++Architecture: any ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++ifdef(`MULTIARCH', `Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASEDEP, gnat`'-GNAT_V`'TS (= ${gnat:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Ada compiler (setjump/longjump runtime library) ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ This package provides an alternative runtime library that handles ++ exceptions using the setjump/longjump mechanism (as a static library ++ only). You can install it to supplement the normal compiler. ++')`'dnl adasjlj ++ ++ifenabled(`libgnat',` ++Package: libgnat`'-GNAT_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: runtime for applications compiled with GNAT (shared library) ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ The libgnat library provides runtime components needed by most ++ applications produced with GNAT. ++ . ++ This package contains the runtime shared library. ++ ++ifenabled(`libdbg',` ++Package: libgnat`'-GNAT_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++Pre-Depends: ${misc:Pre-Depends} ++')`'dnl ++Depends: BASELDEP, libgnat`'-GNAT_V`'LS (= ${gnat:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: runtime for applications compiled with GNAT (debugging symbols) ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ The libgnat library provides runtime components needed by most ++ applications produced with GNAT. ++ . ++ This package contains the debugging symbols. ++')`'dnl libdbg ++')`'dnl libgnat ++ ++ifenabled(`lib64gnat',` ++Package: lib64gnat`'-GNAT_V ++Section: libs ++Architecture: biarch64_archs ++Depends: BASELDEP, ${dep:libcbiarch}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: runtime for applications compiled with GNAT (64 bits shared library) ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ The libgnat library provides runtime components needed by most ++ applications produced with GNAT. ++ . ++ This package contains the runtime shared library for 64 bits architectures. ++')`'dnl libgnat ++ ++ifenabled(`gfdldoc',` ++Package: gnat`'PV-doc ++Architecture: all ++Section: doc ++Depends: ${misc:Depends} ++Suggests: gnat`'PV ++Conflicts: gnat-4.9-doc, ++ gnat-5-doc, gnat-6-doc, gnat-7-doc, gnat-8-doc, gnat-9-doc, gnat-10-doc, ++ gnat-11-doc, gnat-12-doc, gnat-13-doc, gnat-14-doc, ++BUILT_USING`'dnl ++Description: GNU Ada compiler (documentation) ++ GNAT is a compiler for the Ada programming language. It produces optimized ++ code on platforms supported by the GNU Compiler Collection (GCC). ++ . ++ The libgnat library provides runtime components needed by most ++ applications produced with GNAT. ++ . ++ This package contains the documentation in info `format'. ++')`'dnl gfdldoc ++')`'dnl ada ++ ++ifenabled(`d ',`dnl ++for_each_arch(`ifelse(index(` 'd_no_archs` ',` !'arch_deb` '),`-1',` ++Package: gdc`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gdccross}, ${dep:phobosdev}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU D compiler (version 2) for the arch_gnu architecture ++ This is the GNU D compiler for the arch_gnu architecture, ++ which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++')')`'dnl for_each_arch ++ ++Package: gdc`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gdc`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU D compiler (version 2) for the host architecture ++ This is the GNU D compiler for the host architecture, which compiles D on ++ platforms supported by gcc. It uses the gcc backend to generate optimised ++ code. ++ . ++ This compiler supports D language version 2. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gdc`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gdc`'PV (>= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU D compiler (version 2) for the build architecture ++ This is the GNU D compiler for the build architecture, which compiles D on ++ platforms supported by gcc. It uses the gcc backend to generate optimised ++ code. ++ . ++ This compiler supports D language version 2. ++ . ++ This is a dependency package. ++ ++Package: gdc`'PV ++Architecture: any ++Depends: gdc`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gdccross}, ${misc:Depends} ++Provides: gdc, d-compiler, d-v2-compiler ++Replaces: gdc (<< 4.4.6-5) ++BUILT_USING`'dnl ++Description: GNU D compiler (version 2) ++ This is the GNU D compiler, which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This compiler supports D language version 2. ++')`'dnl TARGET ++ ++ifenabled(`multilib',` ++Package: gdc`'PV-multilib`'TS ++Architecture: any ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: SOFTBASEDEP, gdc`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libphobosbiarchdev}${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU D compiler (version 2, multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU D compiler, which compiles D on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multilib ++ ++ifenabled(`libdevphobos',` ++Package: libgphobos`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Section: libdevel ++Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), ++ zlib1g-dev, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Phobos D standard library ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: lib64gphobos`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: libdevel ++Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), ++ libdevdep(gcc`'PV-dev,64), ifdef(`TARGET',`',`lib64z1-dev [!mips !mipsel !mipsn32 !mipsn32el !mipsr6 !mipsr6el !mipsn32r6 !mipsn32r6el],') ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Phobos D standard library (64bit development files) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++Package: lib32gphobos`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: libdevel ++Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), ++ libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev [!mipsn32 !mipsn32el !mips64 !mips64el !mipsn32r6 !mipsn32r6el !mips64r6 !mips64r6el],') ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Phobos D standard library (32bit development files) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++ifenabled(`libdevn32phobos',` ++Package: libn32gphobos`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: libdevel ++Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), ++ libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev [!mips !mipsel !mips64 !mips64el !mipsr6 !mipsr6el !mips64r6 !mips64r6el],') ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Phobos D standard library (n32 development files) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++')`'dnl libn32phobos ++ ++ifenabled(`libdevx32phobos',` ++Package: libx32gphobos`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: libdevel ++Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (>= ${gdc:Version}), ++ libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: Phobos D standard library (x32 development files) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++')`'dnl libx32phobos ++')`'dnl libdevphobos ++ ++ifenabled(`libphobos',` ++Package: libgphobos`'PHOBOS_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Replaces: libgphobos68`'LS ++Breaks: dub (<< 1.16.0-1~) ++BUILT_USING`'dnl ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++ifenabled(`libdbg',` ++Package: libgphobos`'PHOBOS_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`libphobos_archs') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, libgphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} ++Replaces: libgphobos68-dbg`'LS ++BUILT_USING`'dnl ++Description: Phobos D standard library (debug symbols) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++')`'dnl libdbg ++ ++Package: lib64gphobos`'PHOBOS_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Replaces: lib64gphobos68`'LS ++BUILT_USING`'dnl ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++ifenabled(`libdbg',` ++Package: lib64gphobos`'PHOBOS_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, lib64gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} ++Replaces: lib64gphobos68-dbg`'LS ++BUILT_USING`'dnl ++Description: Phobos D standard library (debug symbols) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++')`'dnl libdbg ++ ++Package: lib32gphobos`'PHOBOS_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Replaces: lib32gphobos68`'LS ++BUILT_USING`'dnl ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++ifenabled(`libdbg',` ++Package: lib32gphobos`'PHOBOS_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, lib32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} ++Replaces: lib32gphobos68-dbg`'LS ++BUILT_USING`'dnl ++Description: Phobos D standard library (debug symbols) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++')`'dnl libdbg ++ ++ifenabled(`libn32phobos',` ++Package: libn32gphobos`'PHOBOS_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32phobos`'PHOBOS_V [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++ifenabled(`libdbg',` ++Package: libn32gphobos`'PHOBOS_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, libn32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32phobos`'PHOBOS_V-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: Phobos D standard library (debug symbols) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++')`'dnl libdbg ++')`'dnl libn32phobos ++ ++ifenabled(`libx32phobos',` ++Package: libx32gphobos`'PHOBOS_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Replaces: libx32gphobos68`'LS ++BUILT_USING`'dnl ++Description: Phobos D standard library (runtime library) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++ ++ifenabled(`libdbg',` ++Package: libx32gphobos`'PHOBOS_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, libx32gphobos`'PHOBOS_V`'LS (= ${gdc:Version}), ${misc:Depends} ++Replaces: libx32gphobos68-dbg`'LS ++BUILT_USING`'dnl ++Description: Phobos D standard library (debug symbols) ++ This is the Phobos standard library that comes with the D2 compiler. ++ . ++ For more information check http://www.dlang.org/phobos/ ++')`'dnl libdbg ++')`'dnl libx32phobos ++ ++')`'dnl libphobos ++')`'dnl d ++ ++ifenabled(`m2 ',`dnl ++for_each_arch(`ifelse(index(` 'm2_no_archs` ',` !'arch_deb` '),`-1',` ++Package: gm2`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gm2cross}, libidevdep(gm2`'PV-dev,,=), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 compiler for the arch_gnu architecture ++ This is the GNU Modula-2 compiler for the arch_gnu architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++')')`'dnl for_each_arch ++ ++Package: gm2`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gm2`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 compiler for the host architecture ++ This is the GNU Modula-2 compiler for the host architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gm2`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gm2`'PV (>= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 compiler for the build architecture ++ This is the GNU Modula-2 compiler for the build architecture, ++ which compiles Modula-2 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ This is a dependency package. ++ ++Package: gm2`'PV ++Architecture: any ++Depends: gm2`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gm2cross}, ${misc:Depends} ++Provides: gm2, m2-compiler ++BUILT_USING`'dnl ++Description: GNU Modula-2 compiler (version 2) ++ This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms ++ supported by gcc. It uses the gcc backend to generate optimised code. ++')`'dnl TARGET ++ ++ifenabled(`multigm2lib',` ++Package: gm2`'PV-multilib`'TS ++Architecture: any ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: SOFTBASEDEP, gm2`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgm2biarchdev}${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU Modula-2 compiler, which compiles Modula-2 on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multigm2lib ++ ++ifenabled(`libdevgm2',` ++Package: libgm2`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Section: libdevel ++Depends: BASELDEP, libgm2`'-GM2_V`'LS (>= ${gm2:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library ++ This is the Modula-2 standard library that comes with the gm2 compiler. ++ ++ifenabled(`multigm2lib',` ++Package: lib64gm2`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: libdevel ++Depends: BASELDEP, lib64gm2`'-GM2_V`'LS (>= ${gm2:Version}), ++ libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (64bit development files) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++ ++Package: lib32gm2`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: libdevel ++Depends: BASELDEP, lib32gm2`'-GM2_V`'LS (>= ${gm2:Version}), ++ libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev,') ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (32bit development files) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++ ++ifenabled(`libdevn32gm2',` ++Package: libn32gm2`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: libdevel ++Depends: BASELDEP, libn32gm2`'-GM2_V`'LS (>= ${gm2:Version}), ++ libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev,') ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (n32 development files) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++')`'dnl libn32gm2 ++ ++ifenabled(`libdevx32gm2',` ++Package: libx32gm2`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: libdevel ++Depends: BASELDEP, libx32gm2`'-GM2_V`'LS (>= ${gm2:Version}), ++ libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (x32 development files) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++')`'dnl libx32gm2 ++')`'dnl multigm2lib ++')`'dnl libdevgm2 ++ ++ifenabled(`libgm2',` ++Package: libgm2`'-GM2_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (runtime library) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++ ++ifenabled(`libdbg',` ++Package: libgm2`'-GM2_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, libgm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} ++Replaces: libgm268-dbg`'LS ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (debug symbols) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++')`'dnl libdbg ++ ++ifenabled(`multigm2lib',` ++Package: lib64gm2`'-GM2_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Replaces: lib64gm268`'LS ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (runtime library) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++ ++ifenabled(`libdbg',` ++Package: lib64gm2`'-GM2_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, lib64gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} ++Replaces: lib64gm268-dbg`'LS ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (debug symbols) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++')`'dnl libdbg ++ ++Package: lib32gm2`'-GM2_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Replaces: lib32gm268`'LS ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (runtime library) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++ ++ifenabled(`libdbg',` ++Package: lib32gm2`'-GM2_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, lib32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} ++Replaces: lib32gm268-dbg`'LS ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (debug symbols) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++')`'dnl libdbg ++ ++ifenabled(`libn32gm2',` ++Package: libn32gm2`'-GM2_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32-gm2`'GM2_V [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (runtime library) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++ ++ifenabled(`libdbg',` ++Package: libn32gm2`'-GM2_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, libn32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} ++ifdef(`TARGET',`dnl',`Conflicts: lib32-gm2`'GM2_V-dbg [biarch32_conflicts]') ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (debug symbols) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++')`'dnl libdbg ++')`'dnl libn32gm2 ++ ++ifenabled(`libx32gm2',` ++Package: libx32gm2`'-GM2_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (runtime library) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++ ++ifenabled(`libdbg',` ++Package: libx32gm2`'-GM2_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, libx32gm2`'-GM2_V`'LS (= ${gm2:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Modula-2 standard library (debug symbols) ++ This is the GNU Modula-2 standard library that comes with the gm2 compiler. ++')`'dnl libdbg ++')`'dnl libx32gm2 ++')`'dnl multigm2lib ++')`'dnl libgm2 ++ ++Package: gm2`'PV-doc ++Architecture: all ++Section: doc ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Suggests: gm2`'PV ++Description: Documentation for the GNU Modula-2 compiler (gm2) ++ Documentation for the GNU Modula-2 compiler in HTML and info `format'. ++')`'dnl m2 ++ ++ifenabled(`rust ',` ++for_each_arch(`ifelse(index(` 'rs_no_archs` ',` !'arch_deb` '),`-1',` ++Package: gccrs`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:SoftVersion}), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Rust compiler for the arch_gnu architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++')')`'dnl for_each_arch ++ ++Package: gccrs`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gccrs`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Rust compiler for the host architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ ++Package: gccrs`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gccrs`'PV (>= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Rust compiler for the build architecture ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ This is a dependency package. ++ ++Package: gccrs`'PV ++Architecture: any ++Depends: SOFTBASEDEP, gccrs`'PV`'${target:suffix} (= ${gcc:Version}), g++`'PV (>= ${gcc:SoftVersion}), ${misc:Depends} ++Provides: gccrs, rust-compiler ++BUILT_USING`'dnl ++Description: GNU Rust compiler ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++ . ++ gccrs is a full alternative implementation of the Rust ++ language ontop of GCC with the goal to become fully ++ upstream with the GNU toolchain. ++ . ++ !!!!! Please note, the compiler is in a very early stage ++ and not usable yet for compiling real Rust programs !!!!! ++')`'dnl rust ++ ++ifenabled(`cobol ',`dnl ++for_each_arch(`ifelse(index(` 'cobol_no_archs` ',` !'arch_deb` '),`-1',` ++Package: gcobol`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, g++`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:gcobolcross}, ++ libidevdep(gcobol`'PV-dev,,=), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL compiler for the arch_gnu architecture ++ This is the GNU COBOL compiler for the arch_gnu architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++')')`'dnl for_each_arch ++ ++Package: gcobol`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, gcobol`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ g++`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL compiler for the host architecture ++ This is the GNU COBOL compiler for the host architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: gcobol`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gcobol`'PV (>= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), g++`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL compiler for the build architecture ++ This is the GNU COBOL compiler for the build architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ This is a dependency package. ++ ++Package: gcobol`'PV ++Architecture: any ++Depends: gcobol`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, g++`'PV (>= ${gcc:SoftVersion}), ${dep:gcobolcross}, ${misc:Depends} ++Provides: gcobol, cobol-compiler ++BUILT_USING`'dnl ++Description: GNU COBOL compiler ++ This is the GNU COBOL compiler, which compiles COBOL on platforms ++ supported by gcc. It uses the gcc backend to generate optimised code. ++')`'dnl TARGET ++ ++ifenabled(`multigcobollib',` ++Package: gcobol`'PV-multilib`'TS ++Architecture: any ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: SOFTBASEDEP, gcobol`'PV`'TS (= ${gcc:Version}), g++`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libgcobolbiarchdev}${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU COBOL compiler, which compiles COBOL on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multigcobollib ++ ++ifenabled(`libdevgcobol',` ++Package: libgcobol`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Section: libdevel ++Depends: BASELDEP, libgcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library ++ This is the COBOL standard library that comes with the gcobol compiler. ++ ++ifenabled(`multigcobollib',` ++Package: lib64gcobol`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: libdevel ++Depends: BASELDEP, lib64gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), ++ libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (64bit development files) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++ ++Package: lib32gcobol`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: libdevel ++Depends: BASELDEP, lib32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), ++ libdevdep(gcc`'PV-dev,32), ifdef(`TARGET',`',`lib32z1-dev,') ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (32bit development files) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++ ++ifenabled(`libdevn32gcobol',` ++Package: libn32gcobol`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: libdevel ++Depends: BASELDEP, libn32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), ++ libdevdep(gcc`'PV-dev,n32), ifdef(`TARGET',`',`libn32z1-dev,') ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (n32 development files) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++')`'dnl libn32gcobol ++ ++ifenabled(`libdevx32gcobol',` ++Package: libx32gcobol`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: libdevel ++Depends: BASELDEP, libx32gcobol`'GCOBOL_V`'LS (>= ${gcobol:Version}), ++ libdevdep(gcc`'PV-dev,x32), ifdef(`TARGET',`',`${dep:libx32z},') ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (x32 development files) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++')`'dnl libx32gcobol ++')`'dnl multigcobollib ++')`'dnl libdevgcobol ++ ++ifenabled(`libgcobol',` ++Package: libgcobol`'GCOBOL_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (runtime library) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++ ++ifenabled(`libdbg',` ++Package: libgcobol`'GCOBOL_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, libgcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} ++Replaces: libgcobol68-dbg`'LS ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (debug symbols) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++')`'dnl libdbg ++ ++ifenabled(`multigcobollib',` ++Package: lib64gcobol`'GCOBOL_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Replaces: lib64gcobol68`'LS ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (runtime library) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++ ++ifenabled(`libdbg',` ++Package: lib64gcobol`'GCOBOL_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, lib64gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} ++Replaces: lib64gcobol68-dbg`'LS ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (debug symbols) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++')`'dnl libdbg ++ ++Package: lib32gcobol`'GCOBOL_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++Replaces: lib32gcobol68`'LS ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (runtime library) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++ ++ifenabled(`libdbg',` ++Package: lib32gcobol`'GCOBOL_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, lib32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} ++Replaces: lib32gcobol68-dbg`'LS ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (debug symbols) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++')`'dnl libdbg ++ ++ifenabled(`libn32gcobol',` ++Package: libn32gcobol`'GCOBOL_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (runtime library) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++ ++ifenabled(`libdbg',` ++Package: libn32gcobol`'GCOBOL_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, libn32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (debug symbols) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++')`'dnl libdbg ++')`'dnl libn32gcobol ++ ++ifenabled(`libx32gcobol',` ++Package: libx32gcobol`'GCOBOL_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (runtime library) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++ ++ifenabled(`libdbg',` ++Package: libx32gcobol`'GCOBOL_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, libx32gcobol`'GCOBOL_V`'LS (= ${gcobol:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU COBOL standard library (debug symbols) ++ This is the GNU COBOL standard library that comes with the gcobol compiler. ++')`'dnl libdbg ++')`'dnl libx32gcobol ++')`'dnl multigcobollib ++')`'dnl libgcobol ++ ++ifenabled(`doccobol',` ++Package: gcobol`'PV-doc ++Architecture: all ++Section: doc ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Suggests: gcobol`'PV ++Description: Documentation for the GNU COBOL compiler (gcobol) ++ Documentation for the GNU COBOL compiler in HTML and info `format'. ++')`'dnl doccobol ++')`'dnl cobol ++ ++ ++ifenabled(`algol ',`dnl ++for_each_arch(`ifelse(index(` 'algol_no_archs` ',` !'arch_deb` '),`-1',` ++Package: ga68`'PV`'arch_gnusuffix ++Architecture: ifdef(`TARGET',`any',arch_deb) ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, gcc`'PV`'arch_gnusuffix (>= ${gcc:Version}), ${dep:ga68cross}, ++ libidevdep(ga68`'PV-dev,,=), ++ ${dep:libcdev}, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 compiler for the arch_gnu architecture ++ This is the GNU Algol 68 compiler for the arch_gnu architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++')')`'dnl for_each_arch ++ ++Package: ga68`'PV`'-for-host ++Architecture: ifdef(`TARGET',`TARGET',`any') ++TARGET_PACKAGE`'dnl ++Multi-Arch: same ++Depends: BASEDEP, ga68`'PV`'${target:suffix} (>= ${gcc:SoftVersion}), ++ gcc`'PV`'-for-host (= ${gcc:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 compiler for the host architecture ++ This is the GNU Algol 68 compiler for the host architecture, ++ which compiles Algol 68 on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ When using this package, tools must be invoked with an architecture prefix. ++ . ++ This is a dependency package. ++ifdef(`TARGET',`',` ++Package: ga68`'PV`'-for-build ++Architecture: all ++Multi-Arch: foreign ++Depends: SOFTBASEDEP, ga68`'PV (>= ${gcc:Version}), ++ cpp`'PV`'-for-build (= ${gcc:Version}), gcc`'PV`'-for-build (= ${gcc:Version}), ++ ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 compiler for the build architecture ++ This is the GNU Algol 68 compiler for the build architecture, ++ which compiles COBOL on platforms supported by gcc. It uses the gcc ++ backend to generate optimised code. ++ . ++ This is a dependency package. ++ ++Package: ga68`'PV ++Architecture: any ++Depends: ga68`'PV`'${target:suffix} (= ${gcc:Version}), SOFTBASEDEP, gcc`'PV (>= ${gcc:SoftVersion}), ${dep:ga68cross}, ${misc:Depends} ++Provides: ga68, algol68-compiler ++BUILT_USING`'dnl ++Description: GNU Algol 68 compiler ++ This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms ++ supported by gcc. It uses the gcc backend to generate optimised code. ++')`'dnl TARGET ++ ++ifenabled(`multiga68lib',` ++Package: ga68`'PV-multilib`'TS ++Architecture: any ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: SOFTBASEDEP, ga68`'PV`'TS (= ${gcc:Version}), gcc`'PV-multilib`'TS (= ${gcc:Version}), ${dep:libga68biarchdev}${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 compiler (multilib support)`'ifdef(`TARGET',` (cross compiler for TARGET architecture)', `') ++ This is the GNU Algol 68 compiler, which compiles Algol 68 on platforms supported by gcc. ++ It uses the gcc backend to generate optimised code. ++ . ++ This is a dependency package, depending on development packages ++ for the non-default multilib architecture(s). ++')`'dnl multiga68lib ++ ++ifenabled(`libdevga68',` ++Package: libga68`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Section: libdevel ++Depends: BASELDEP, libga68-`'GA68_V`'LS (>= ${ga68:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library ++ This is the Algol 68 standard library that comes with the ga68 compiler. ++ ++ifenabled(`multiga68lib',` ++Package: lib64ga68`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Section: libdevel ++Depends: BASELDEP, lib64ga68-`'GA68_V`'LS (>= ${ga68:Version}), ++ libdevdep(gcc`'PV-dev,64), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (64bit development files) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++ ++Package: lib32ga68`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Section: libdevel ++Depends: BASELDEP, lib32ga68-`'GA68_V`'LS (>= ${ga68:Version}), ++ libdevdep(gcc`'PV-dev,32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (32bit development files) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++ ++ifenabled(`libdevn32ga68',` ++Package: libn32ga68`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Section: libdevel ++Depends: BASELDEP, libn32ga68-`'GA68_V`'LS (>= ${ga68:Version}), ++ libdevdep(gcc`'PV-dev,n32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (n32 development files) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++')`'dnl libn32ga68 ++ ++ifenabled(`libdevx32ga68',` ++Package: libx32ga68`'PV-dev`'LS ++TARGET_PACKAGE`'dnl ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Section: libdevel ++Depends: BASELDEP, libx32ga68-`'GA68_V`'LS (>= ${ga68:Version}), ++ libdevdep(gcc`'PV-dev,x32), ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (x32 development files) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++')`'dnl libx32ga68 ++')`'dnl multiga68lib ++')`'dnl libdevga68 ++ ++ifenabled(`libga68',` ++Package: libga68-`'GA68_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (runtime library) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++ ++ifenabled(`libdbg',` ++Package: libga68-`'GA68_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`any') ++ifdef(`MULTIARCH', `Multi-Arch: same ++')`'dnl ++Depends: BASELDEP, libga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (debug symbols) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++')`'dnl libdbg ++ ++ifenabled(`multiga68lib',` ++Package: lib64ga68-`'GA68_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (runtime library) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++ ++ifenabled(`libdbg',` ++Package: lib64ga68-`'GA68_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch64_archs') ++Depends: BASELDEP, lib64ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (debug symbols) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++')`'dnl libdbg ++ ++Package: lib32ga68-`'GA68_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (runtime library) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++ ++ifenabled(`libdbg',` ++Package: lib32ga68-`'GA68_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarch32_archs') ++Depends: BASELDEP, lib32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (debug symbols) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++')`'dnl libdbg ++ ++ifenabled(`libn32ga68',` ++Package: libn32ga68-`'GA68_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (runtime library) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++ ++ifenabled(`libdbg',` ++Package: libn32ga68-`'GA68_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchn32_archs') ++Depends: BASELDEP, libn32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (debug symbols) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++')`'dnl libdbg ++')`'dnl libn32ga68 ++ ++ifenabled(`libx32ga68',` ++Package: libx32ga68-`'GA68_V`'LS ++TARGET_PACKAGE`'dnl ++ifdef(`TARGET',`dnl',`Section: libs') ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (runtime library) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++ ++ifenabled(`libdbg',` ++Package: libx32ga68-`'GA68_V-dbg`'LS ++TARGET_PACKAGE`'dnl ++Section: debug ++Architecture: ifdef(`TARGET',`CROSS_ARCH',`biarchx32_archs') ++Depends: BASELDEP, libx32ga68-`'GA68_V`'LS (= ${ga68:Version}), ${misc:Depends} ++BUILT_USING`'dnl ++Description: GNU Algol 68 standard library (debug symbols) ++ This is the GNU Algol 68 standard library that comes with the ga68 compiler. ++')`'dnl libdbg ++')`'dnl libx32ga68 ++')`'dnl multiga68lib ++')`'dnl libga68 ++ ++Package: ga68`'PV-doc ++Architecture: all ++Section: doc ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Suggests: ga68`'PV ++Description: Documentation for the GNU Algol 68 compiler (ga68) ++ Documentation for the GNU Algol 68 compiler in HTML and info `format'. ++')`'dnl algol ++ ++ ++ifdef(`TARGET',`',`dnl ++ifenabled(`libs',` ++#Package: gcc`'PV-soft-float ++#Architecture: arm armel armhf ++#Depends: BASEDEP, depifenabled(`cdev',`gcc`'PV (= ${gcc:Version}),') ${shlibs:Depends}, ${misc:Depends} ++#Conflicts: gcc-4.4-soft-float, gcc-4.5-soft-float, gcc-4.6-soft-float ++#BUILT_USING`'dnl ++#Description: GCC soft-floating-point gcc libraries (ARM) ++# These are versions of basic static libraries such as libgcc.a compiled ++# with the -msoft-float option, for CPUs without a floating-point unit. ++')`'dnl commonlibs ++')`'dnl ++ ++ifenabled(`cdev',` ++ifdef(`TARGET', `', ` ++ifenabled(`gfdldoc',` ++Package: gcc`'PV-doc ++Architecture: all ++Section: doc ++Depends: gcc`'PV-base (>= ${gcc:SoftVersion}), ${misc:Depends} ++Conflicts: gcc-docs (<< 2.95.2) ++Replaces: gcc (<=2.7.2.3-4.3), gcc-docs (<< 2.95.2) ++Description: Documentation for the GNU compilers (gcc, gobjc, g++) ++ Documentation for the GNU compilers in info `format'. ++')`'dnl gfdldoc ++')`'dnl native ++')`'dnl cdev ++ ++ifenabled(`olnvptx',` ++Package: gcc`'PV-offload-nvptx ++Architecture: nvptx_archs ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, ++ nvptx-tools, libgomp-plugin-nvptx`'GOMP_SO (>= ${gcc:Version}), ++ ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC offloading compiler to NVPTX ++ The package provides offloading support for NVidia PTX. OpenMP and OpenACC ++ programs linked with -fopenmp will by default add PTX code into the binaries, ++ which can be offloaded to NVidia PTX capable devices if available. ++ ++ifenabled(`gompnvptx',` ++Package: libgomp-plugin-nvptx`'GOMP_SO ++Architecture: nvptx_archs ++Multi-Arch: same ++Section: libs ++Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} ++Suggests: libcuda1 [amd64] | libnvidia-tesla-cuda1 [amd64 ppc64el] | libcuda1-any ++BUILT_USING`'dnl ++Description: GCC OpenMP v4.5 plugin for offloading to NVPTX ++ This package contains libgomp plugin for offloading to NVidia ++ PTX. The plugin needs libcuda.so.1 shared library that has to be ++ installed separately. ++')`'dnl gompnvptx ++')`'dnl olnvptx ++ ++ifenabled(`olgcn',` ++Package: gcc`'PV-offload-amdgcn ++Architecture: gcn_archs ++ifdef(`TARGET',`Multi-Arch: foreign ++')dnl ++Depends: BASEDEP, gcc`'PV (= ${gcc:Version}), ${dep:libcdev}, ++ libgomp-plugin-amdgcn`'GOMP_SO (>= ${gcc:Version}), ++ AMDGCN_TOOLS_DEP ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC offloading compiler to GCN ++ The package provides offloading support for AMD GCN. OpenMP and OpenACC ++ programs linked with -fopenmp will by default add GCN code into the binaries, ++ which can be offloaded to AMD GCN capable devices if available. ++ ++ifenabled(`gompgcn',` ++Package: libgomp-plugin-amdgcn`'GOMP_SO ++Architecture: gcn_archs ++Multi-Arch: same ++Section: libs ++Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC OpenMP v4.5 plugin for offloading to GCN ++ This package contains libgomp plugin for offloading to AMD GCN. ++')`'dnl gompgcn ++')`'dnl olgcn ++ ++ifenabled(`olhsa',` ++ifenabled(`gomphsa',` ++Package: libgomp-plugin-hsa`'GOMP_SO ++Architecture: amd64 ++Multi-Arch: same ++Section: libs ++Depends: BASEDEP, libgomp`'GOMP_SO`'LS, ${shlibs:Depends}, ${misc:Depends} ++BUILT_USING`'dnl ++Description: GCC OpenMP v4.5 plugin for offloading to HSA ++ This package contains libgomp plugin for offloading to HSA. ++')`'dnl gomphsa ++')`'dnl olhsa ++ ++ifdef(`TARGET',`',`dnl ++ifenabled(`libnof',` ++#Package: gcc`'PV-nof ++#Architecture: powerpc ++#Depends: BASEDEP, ${shlibs:Depends}ifenabled(`cdev',`, gcc`'PV (= ${gcc:Version})'), ${misc:Depends} ++#Conflicts: gcc-3.2-nof ++#BUILT_USING`'dnl ++#Description: GCC no-floating-point gcc libraries (powerpc) ++# These are versions of basic static libraries such as libgcc.a compiled ++# with the -msoft-float option, for CPUs without a floating-point unit. ++')`'dnl libnof ++')`'dnl ++ ++ifenabled(`source',` ++Package: gcc`'PV-source ++Multi-Arch: foreign ++Architecture: all ++Depends: make, quilt, patchutils, sharutils, gawk, lsb-release, time, AUTO_BUILD_DEP ++ ${misc:Depends} ++Description: Source of the GNU Compiler Collection ++ This package contains the sources and patches which are needed to ++ build the GNU Compiler Collection (GCC). ++')`'dnl source ++dnl ++')')`'dnl regexp SRCNAME ++dnl last line in file diff --cc debian/copyright index 0000000,0000000..f2bf22f new file mode 100644 --- /dev/null +++ b/debian/copyright @@@ -1,0 -1,0 +1,1638 @@@ ++This is the Debian GNU/Linux prepackaged version of the GNU compiler ++collection, containing Ada, C, C++, D, Fortran 95, Go, Objective-C, ++Objective-C++, and Modula-2 compilers, documentation, and support ++libraries. In addition, Debian provides the gm2 compiler, either in ++the same source package, or built from a separate same source package. ++Packaging is done by the Debian GCC Maintainers ++, with sources obtained from: ++ ++ ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) ++ https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git (for prereleases) ++ ftp://sourceware.org/pub/newlib/ (for newlib) ++ ++The current gcc-15 source package is taken from the git gcc-15-branch. ++ ++Changes: See changelog.Debian.gz ++ ++Debian splits the GNU Compiler Collection into packages for each language, ++library, and documentation as follows: ++ ++Language Compiler package Library package Documentation ++--------------------------------------------------------------------------- ++Ada gnat-15 libgnat-15 gnat-15-doc ++Algol-68 ga68-15 libga68-1 libga68-15-doc ++C gcc-15 gcc-15-doc ++C++ g++-15 libstdc++6 libstdc++6-15-doc ++COBOL gcobol-15 libgcobol1 ++D gdc-15 libgphobos6 ++Fortran 95 gfortran-15 libgfortran5 gfortran-15-doc ++Go gccgo-15 libgo0 ++Objective C gobjc-15 libobjc4 ++Objective C++ gobjc++-15 ++Modula-2 gm2-15 libgm2 libgm2-15-doc ++Rust gccrs-15 ++ ++For some language run-time libraries, Debian provides source files, ++development files, debugging symbols and libraries containing position- ++independent code in separate packages: ++ ++Language Sources Development Debugging Position-Independent ++------------------------------------------------------------------------------ ++C++ libstdc++6-15-dbg libstdc++6-15-pic ++D libphobos-15-dev ++ ++Additional packages include: ++ ++All languages: ++libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) ++gcc-15-base Base files common to all compilers ++gcc-15-soft-float Software floating point (ARM only) ++gcc-15-source The sources with patches ++ ++Ada: ++libgnat-util15-dev, libgnat-util15 GNAT version library ++ ++C: ++cpp-15, cpp-15-doc GNU C Preprocessor ++libssp0-dev, libssp0 GCC stack smashing protection library ++libquadmath0 Math routines for the __float128 type ++fixincludes Fix non-ANSI header files ++ ++C, C++ and Fortran 95: ++libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library ++libitm1-dev, libitm1 GNU Transactional Memory Library ++ ++Biarch support: On some 64-bit platforms which can also run 32-bit code, ++Debian provides additional packages containing 32-bit versions of some ++libraries. These packages have names beginning with 'lib32' instead of ++'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which ++can also run 64-bit code, Debian provides additional packages with names ++beginning with 'lib64' instead of 'lib'. These packages contain 64-bit ++versions of the libraries. (At this time, not all platforms and not all ++libraries support biarch.) The license terms for these lib32 or lib64 ++packages are identical to the ones for the lib packages. ++ ++ ++COPYRIGHT STATEMENTS AND LICENSING TERMS ++ ++ ++GCC is Copyright (C) 1986-2025 Free Software Foundation, Inc. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++Files that have exception clauses are licensed under the terms of the ++GNU General Public License; either version 3, or (at your option) any ++later version. ++ ++On Debian GNU/Linux systems, the complete text of the GNU General ++Public License is in `/usr/share/common-licenses/GPL', version 3 of this ++license in `/usr/share/common-licenses/GPL-3'. ++ ++The following runtime libraries are licensed under the terms of the ++GNU General Public License (v3 or later) with version 3.1 of the GCC ++Runtime Library Exception (included in this file): ++ ++ - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, ++ gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, ++ gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, ++ gcc/tsystem.h, gcc/typeclass.h). ++ - libatomic ++ - libdecnumber ++ - libgm2 ++ - libgomp ++ - libgrust ++ - libitm ++ - libssp ++ - libstdc++-v3 ++ - libobjc ++ - libgfortran ++ - The libgnat-15 Ada support library and libgnat-util15 library. ++ - Various config files in gcc/config/ used in runtime libraries. ++ - libvtv ++ ++The libbacktrace library is licensed under the following terms: ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are ++met: ++ ++ (1) Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ ++ (2) Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in ++ the documentation and/or other materials provided with the ++ distribution. ++ ++ (3) The name of the author may not be used to ++ endorse or promote products derived from this software without ++ specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, ++INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ++SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ++STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING ++IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGE. ++ ++ ++The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are ++licensed under the following terms: ++ ++Copyright (c) 2009-2019 by the LLVM contributors. ++ ++All rights reserved. ++ ++Developed by: ++ ++ LLVM Team ++ ++ University of Illinois at Urbana-Champaign ++ ++ http://llvm.org ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy of ++this software and associated documentation files (the "Software"), to deal with ++the Software without restriction, including without limitation the rights to ++use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies ++of the Software, and to permit persons to whom the Software is furnished to do ++so, subject to the following conditions: ++ ++ * Redistributions of source code must retain the above copyright notice, ++ this list of conditions and the following disclaimers. ++ ++ * Redistributions in binary form must reproduce the above copyright notice, ++ this list of conditions and the following disclaimers in the ++ documentation and/or other materials provided with the distribution. ++ ++ * Neither the names of the LLVM Team, University of Illinois at ++ Urbana-Champaign, nor the names of its contributors may be used to ++ endorse or promote products derived from this Software without specific ++ prior written permission. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS ++FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE ++SOFTWARE. ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy ++of this software and associated documentation files (the "Software"), to deal ++in the Software without restriction, including without limitation the rights ++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++copies of the Software, and to permit persons to whom the Software is ++furnished to do so, subject to the following conditions: ++ ++The above copyright notice and this permission notice shall be included in ++all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ++THE SOFTWARE. ++ ++ ++The libffi library is licensed under the following terms: ++ ++ libffi - Copyright (c) 1996-2011 Red Hat, Inc. ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ OTHER DEALINGS IN THE SOFTWARE. ++ ++ ++The documentation is licensed under the GNU Free Documentation License (v1.2). ++On Debian GNU/Linux systems, the complete text of this license is in ++`/usr/share/common-licenses/GFDL-1.2'. ++ ++ ++GCC RUNTIME LIBRARY EXCEPTION ++ ++Version 3.1, 31 March 2009 ++ ++Copyright (C) 2009 Free Software Foundation, Inc. ++ ++Everyone is permitted to copy and distribute verbatim copies of this ++license document, but changing it is not allowed. ++ ++This GCC Runtime Library Exception ("Exception") is an additional ++permission under section 7 of the GNU General Public License, version ++3 ("GPLv3"). It applies to a given file (the "Runtime Library") that ++bears a notice placed by the copyright holder of the file stating that ++the file is governed by GPLv3 along with this Exception. ++ ++When you use GCC to compile a program, GCC may combine portions of ++certain GCC header files and runtime libraries with the compiled ++program. The purpose of this Exception is to allow compilation of ++non-GPL (including proprietary) programs to use, in this way, the ++header files and runtime libraries covered by this Exception. ++ ++0. Definitions. ++ ++A file is an "Independent Module" if it either requires the Runtime ++Library for execution after a Compilation Process, or makes use of an ++interface provided by the Runtime Library, but is not otherwise based ++on the Runtime Library. ++ ++"GCC" means a version of the GNU Compiler Collection, with or without ++modifications, governed by version 3 (or a specified later version) of ++the GNU General Public License (GPL) with the option of using any ++subsequent versions published by the FSF. ++ ++"GPL-compatible Software" is software whose conditions of propagation, ++modification and use would permit combination with GCC in accord with ++the license of GCC. ++ ++"Target Code" refers to output from any compiler for a real or virtual ++target processor architecture, in executable form or suitable for ++input to an assembler, loader, linker and/or execution ++phase. Notwithstanding that, Target Code does not include data in any ++format that is used as a compiler intermediate representation, or used ++for producing a compiler intermediate representation. ++ ++The "Compilation Process" transforms code entirely represented in ++non-intermediate languages designed for human-written code, and/or in ++Java Virtual Machine byte code, into Target Code. Thus, for example, ++use of source code generators and preprocessors need not be considered ++part of the Compilation Process, since the Compilation Process can be ++understood as starting with the output of the generators or ++preprocessors. ++ ++A Compilation Process is "Eligible" if it is done using GCC, alone or ++with other GPL-compatible software, or if it is done without using any ++work based on GCC. For example, using non-GPL-compatible Software to ++optimize any GCC intermediate representations would not qualify as an ++Eligible Compilation Process. ++ ++1. Grant of Additional Permission. ++ ++You have permission to propagate a work of Target Code formed by ++combining the Runtime Library with Independent Modules, even if such ++propagation would otherwise violate the terms of GPLv3, provided that ++all Target Code was generated by Eligible Compilation Processes. You ++may then convey such a combination under terms of your choice, ++consistent with the licensing of the Independent Modules. ++ ++2. No Weakening of GCC Copyleft. ++ ++The availability of this Exception does not imply any general ++presumption that third-party software is unaffected by the copyleft ++requirements of the license of GCC. ++ ++ ++libquadmath/ ++ Copyright (C) 1992-2018 Free Software Foundation, Inc. ++ ++ Written by Francois-Xavier Coudert ++ Written by Tobias Burnus ++ Contributions by Ulrich Drepper ++ Conversion to long double by Jakub Jelinek ++ ++ This file is part of the libquadmath library. ++ Libquadmath is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public ++ License as published by the Free Software Foundation; either ++ version 2 of the License, or (at your option) any later version. ++ ++ Libiberty is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++libquadmath/math: ++ ++atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: ++ Copyright 2001 by Stephen L. Moshier ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: ++ Changes for 128-bit __float128 are ++ Copyright (C) 2001 Stephen L. Moshier ++ and are incorporated herein by permission of the author. The author ++ reserves the right to distribute this material elsewhere under different ++ copying permissions. These modifications are distributed here under ++ the following terms: ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++libquadmath/math/ ++ ++cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, ++sinq_kernel.c, truncq.c: ++ Copyright (C) 1997, 1999 Free Software Foundation, Inc. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++libquadmath/math/isinfq.c: ++ Written by J.T. Conklin . ++ Change for long double by Jakub Jelinek ++ Public domain. ++ ++libquadmath/math/ ++ llroundq.c, lroundq.c, tgammaq.c: ++ ++ Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 1997 and ++ Jakub Jelinek , 1999. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++libquadmath/math/log10q.c: ++ Cephes Math Library Release 2.2: January, 1991 ++ Copyright 1984, 1991 by Stephen L. Moshier ++ Adapted for glibc November, 2001 ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++libquadmath/math/ ++ acoshq.c, acosq.c, asinhq.c, asinq.c, atan2q.c, atanhq.c, ceilq.c, ++ copysignq.c, coshq.c, cosq.c, erfq.c, fabsq.c, finiteq.c, floorq.c, ++ fmodq.c, frexpq.c, hypotq.c, ilogbq.c, isnanq.c, jnq.c, ldexpq.c, ++ logbq.c, modfq.c, nearbyintq.c, nextafterq.c, powq.c, remainderq.c, ++ rem_pio2q.c, rintq.c, scalblnq.c, scalbnq.c, sinhq.c, sinq.c, ++ tanhq.c, tanq.c, tanq_kernel.c: ++ ++ Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. ++ . ++ Developed at SunPro, a Sun Microsystems, Inc. business. ++ Permission to use, copy, modify, and distribute this ++ software is freely granted, provided that this notice ++ is preserved. ++ ++libquadmath/math/ ++ acosq.c, asinq.c, coshq.c, erfq.c, jnq.c, powq.c, sinhq.c, tanq_kernel.c: ++ ++ In addition to the Sun Microsystems copyright: ++ ++ Long double expansions are ++ Copyright (C) 2001 Stephen L. Moshier ++ and are incorporated herein by permission of the author. The author ++ reserves the right to distribute this material elsewhere under different ++ copying permissions. These modifications are distributed here under ++ the LGPL 2.1 or later. ++ ++ ++gcc/go/gofrontend, libgo: ++ ++Copyright (c) 2009-2023 The Go Authors. All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are ++met: ++ ++ * Redistributions of source code must retain the above copyright ++notice, this list of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above ++copyright notice, this list of conditions and the following disclaimer ++in the documentation and/or other materials provided with the ++distribution. ++ * Neither the name of Google Inc. nor the names of its ++contributors may be used to endorse or promote products derived from ++this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++D: ++gdc-15 GNU D Compiler ++libphobos-15-dev D standard runtime library ++ ++The D source package is made up of the following components. ++ ++The D front-end for GCC: ++ - d/* ++ ++Copyright (C) 2004-2007 David Friedman ++Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 ++Copyright (C) 2015-2024 Free Software Foundation, Inc. ++ ++This program is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3 of the License, or ++(at your option) any later version. ++ ++On Debian GNU/Linux systems, the complete text of the GNU General ++Public License is in `/usr/share/common-licenses/GPL', version 2 of this ++license in `/usr/share/common-licenses/GPL-3'. ++ ++The DMD Compiler implementation of the D programming language: ++ - d/dmd/* ++ ++Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved ++All Rights Reserved ++written by Walter Bright ++http://www.digitalmars.com ++License for redistribution is by either the Artistic License or ++the GNU General Public License (v1). ++ ++On Debian GNU/Linux systems, the complete text of the GNU General ++Public License is in `/usr/share/common-licenses/GPL', the Artistic ++license in `/usr/share/common-licenses/Artistic'. ++ ++ ++The Zlib data compression library: ++ - zlib/* ++ ++ (C) 1995-2016 Jean-loup Gailly and Mark Adler ++ ++ This software is provided 'as-is', without any express or implied ++ warranty. In no event will the authors be held liable for any damages ++ arising from the use of this software. ++ ++ Permission is granted to anyone to use this software for any purpose, ++ including commercial applications, and to alter it and redistribute it ++ freely, subject to the following restrictions: ++ ++ 1. The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++ 2. Altered source versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. ++ 3. This notice may not be removed or altered from any source distribution. ++ ++ ++The Phobos standard runtime library: ++ - libphobos/* ++ ++Unless otherwise marked within the file, each file in the source ++is under the following licenses: ++ ++Copyright (C) 2004-2022 by Digital Mars, www.digitalmars.com ++Written by Walter Bright ++Copyright (C) 2018-2023, The D Language Foundation ++ ++This software is provided 'as-is', without any express or implied ++warranty. In no event will the authors be held liable for any damages ++arising from the use of this software. ++ ++Permission is granted to anyone to use this software for any purpose, ++including commercial applications, and to alter it and redistribute it ++freely, in both source and binary form, subject to the following ++restrictions: ++ ++ o The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++ o Altered source versions must be plainly marked as such, and must not ++ be misrepresented as being the original software. ++ o This notice may not be removed or altered from any source ++ distribution. ++ ++By plainly marking modifications, something along the lines of adding to each ++file that has been changed a "Modified by Foo Bar" line ++underneath the "Written by" line would be adequate. ++ ++gcc/m2: ++gcc/m2/gm2-libiberty: ++gcc/m2/mc-boot/: ++gcc/m2/mc-boot-ch/: ++Copyright (C) 2001-2019 Free Software Foundation, Inc. ++Contributed by Gaius Mulley . ++ ++This file is part of GNU Modula-2. ++ ++GNU Modula-2 is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GNU Modula-2 is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++gcc/m2/**/*.texi: ++Copyright (C) 2000-2024 Free Software Foundation, Inc. ++ ++Permission is granted to copy, distribute and/or modify this document ++under the terms of the GNU Free Documentation License, Version 1.3 or ++any later version published by the Free Software Foundation; with no ++Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. ++ ++gcc/m2/gm2-coroutines: ++gcc/m2/gm2-libs: ++gcc/m2/gm2-libs-min: ++gcc/m2/gm2-libs-pim: ++gcc/m2/gm2-libs-ch: ++Copyright (C) 2002-2024 Free Software Foundation, Inc. ++ ++This library is free software; you can redistribute it and/or ++modify it under the terms of the GNU Lesser General Public ++License as published by the Free Software Foundation; either ++version 2.1 of the License, or (at your option) any later version. ++ ++This library is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++Lesser General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++gcc/m2/gm2-libs-iso/: ++This has a mix of licenses, most as GPL-3+ plus GCC Runtime Library ++Exception, version 3.1. ++ ++gcc/m2/gm2-libs-iso/*.def: ++Library module defined by the International Standard ++Information technology - programming languages ++BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. ++ ++Copyright ISO/IEC (International Organization for Standardization ++and International Electrotechnical Commission) 1996, 1997, 1998, ++1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ++ ++Copyright (C) 2001-2024 Free Software Foundation, Inc. ++mix of GPL-3.0 and LGPL-2.1/3 ++ ++Copyright (C) 2001-2024 Free Software Foundation, Inc. ++mix of GPL-3.0 and LGPL-2.1/3 ++ ++gcc/m2/examples: ++Copyright (C) 2005-2024 Free Software Foundation, Inc. ++Mix of LGPL-2.1 and GPL-3.0. ++ ++gcc/m2/images: ++GPL-3+ ++ ++gcc/m2/el/gm2-mode.el: ++;; Everyone is granted permission to copy, modify and redistribute ++;; GNU Emacs, but only under the conditions described in the ++;; GNU Emacs General Public License. A copy of this license is ++;; supposed to have been given to you along with GNU Emacs so you ++;; can know your rights and responsibilities. It should be in a ++;; file named COPYING. Among other things, the copyright notice ++;; and this notice must be preserved on all copies. ++ ++Copyright (C) 2001-2024 Free Software Foundation, Inc. ++Contributed by Gaius Mulley . ++Mix of GPL-3 and LGPL-2.1. ++ ++gcc/testsuite/gm2/: ++Copyright (C) 2001-2019 Free Software Foundation, Inc. ++Mix of GPL-2+ and GPL-3+ ++ ++libgm2: ++ ++libgm2/libiso/: ++libgm2/libpim/: ++libgm2/liblog/: ++libgm2/libcor/: ++libgm2/libmin/: ++Copyright (C) 2002-2024 Free Software Foundation, Inc. ++ ++This library is free software; you can redistribute it and/or ++modify it under the terms of the GNU Lesser General Public ++License as published by the Free Software Foundation; either ++version 2.1 of the License, or (at your option) any later version. ++ ++This library is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++Lesser General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++newlib-X.Y.Z/ (only for the offload compilers): ++ ++Upstream Authors: ++newlib@sources.redhat.com ++Jeff Johnston ++Tom Fitzsimmons ++ ++The newlib subdirectory is a collection of software from several sources. ++Each file may have its own copyright/license that is embedded in the source ++file. ++ ++This list documents those licenses which are more restrictive than ++a BSD-like license or require the copyright notice ++to be duplicated in documentation and/or other materials associated with ++the distribution. Certain licenses documented here only apply to ++specific targets. Certain clauses only apply if you are building the ++code as part of your binary. ++ ++Note that this list may omit certain licenses that ++only pertain to the copying/modifying of the individual source code. ++If you are distributing the source code, then you do not need to ++worry about these omitted licenses, so long as you do not modify the ++copyright information already in place. ++ ++Parts of this work are licensed under the terms of the GNU General ++Public License. On Debian systems, the complete text of this license ++can be found in /usr/share/common-licenses/GPL. ++ ++Parts of this work are licensed under the terms of the GNU Library ++General Public License. On Debian systems, the complete text of this ++license be found in /usr/share/common-licenses/LGPL. ++ ++(1) University of California, Berkeley ++ ++[1a] ++ ++Copyright (c) 1990 The Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms are permitted ++provided that the above copyright notice and this paragraph are ++duplicated in all such forms and that any documentation, ++and other materials related to such distribution and use ++acknowledge that the software was developed ++by the University of California, Berkeley. The name of the ++University may not be used to endorse or promote products derived ++from this software without specific prior written permission. ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++[1b] ++ ++Copyright (c) 1990 The Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms are permitted ++provided that the above copyright notice and this paragraph are ++duplicated in all such forms and that any documentation, ++advertising materials, and other materials related to such ++distribution and use acknowledge that the software was developed ++by the University of California, Berkeley. The name of the ++University may not be used to endorse or promote products derived ++from this software without specific prior written permission. ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++[1c] ++ ++Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 ++The Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. All advertising materials mentioning features or use of this software ++ must display the following acknowledgement: ++ This product includes software developed by the University of ++ California, Berkeley and its contributors. ++4. Neither the name of the University nor the names of its contributors ++ may be used to endorse or promote products derived from this software ++ without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++[1d] ++ ++Copyright (c) 1988, 1990, 1993 Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. Neither the name of the University nor the names of its contributors ++ may be used to endorse or promote products derived from this software ++ without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++[1e] ++ ++Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 ++The Regents of the University of California. All rights reserved. ++(c) UNIX System Laboratories, Inc. ++All or some portions of this file are derived from material licensed ++to the University of California by American Telephone and Telegraph ++Co. or Unix System Laboratories, Inc. and are reproduced herein with ++the permission of UNIX System Laboratories, Inc. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. All advertising materials mentioning features or use of this software ++ must display the following acknowledgement: ++ This product includes software developed by the University of ++ California, Berkeley and its contributors. ++4. Neither the name of the University nor the names of its contributors ++ may be used to endorse or promote products derived from this software ++ without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++[1f] ++ ++Copyright (c) 1987, 1988, 2000 Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms are permitted ++provided that: (1) source distributions retain this entire copyright ++notice and comment, and (2) distributions including binaries display ++the following acknowledgement: ``This product includes software ++developed by the University of California, Berkeley and its contributors'' ++in the documentation or other materials provided with the distribution ++and in all advertising materials mentioning features or use of this ++software. Neither the name of the University nor the names of its ++contributors may be used to endorse or promote products derived ++from this software without specific prior written permission. ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++------------------------------------------------------------- ++ Please note that in some of the above alternate licenses, there is a ++ statement regarding that acknowledgement must be made in any ++ advertising materials for products using the code. This restriction ++ no longer applies due to the following license change: ++ ++ ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change ++ ++ In some cases the defunct clause has been removed in modified newlib code and ++ in some cases, the clause has been left as-is. ++------------------------------------------------------------- ++ ++(2) Cygwin (cygwin targets only) ++ ++Copyright 2001 Red Hat, Inc. ++ ++This software is a copyrighted work licensed under the terms of the ++Cygwin license. Please consult the file "CYGWIN_LICENSE" for ++details. ++ ++(3) David M. Gay at AT&T ++ ++The author of this software is David M. Gay. ++ ++Copyright (c) 1991 by AT&T. ++ ++Permission to use, copy, modify, and distribute this software for any ++purpose without fee is hereby granted, provided that this entire notice ++is included in all copies of any software which is or includes a copy ++or modification of this software and in all copies of the supporting ++documentation for such software. ++ ++THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED ++WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY ++REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY ++OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. ++ ++(4) Advanced Micro Devices ++ ++Copyright 1989, 1990 Advanced Micro Devices, Inc. ++ ++This software is the property of Advanced Micro Devices, Inc (AMD) which ++specifically grants the user the right to modify, use and distribute this ++software provided this notice is not removed or altered. All other rights ++are reserved by AMD. ++ ++AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS ++SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL ++DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR ++USE OF THIS SOFTWARE. ++ ++So that all may benefit from your experience, please report any problems ++or suggestions about this software to the 29K Technical Support Center at ++800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or ++0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. ++ ++Advanced Micro Devices, Inc. ++29K Support Products ++Mail Stop 573 ++5900 E. Ben White Blvd. ++Austin, TX 78741 ++800-292-9263 ++ ++(5) C.W. Sandmann ++ ++Copyright (C) 1993 C.W. Sandmann ++ ++This file may be freely distributed as long as the author's name remains. ++ ++(6) Eric Backus ++ ++(C) Copyright 1992 Eric Backus ++ ++This software may be used freely so long as this copyright notice is ++left intact. There is no warrantee on this software. ++ ++(7) Sun Microsystems ++ ++Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. ++ ++Developed at SunPro, a Sun Microsystems, Inc. business. ++Permission to use, copy, modify, and distribute this ++software is freely granted, provided that this notice ++is preserved. ++ ++(8) Hewlett Packard ++ ++(c) Copyright 1986 HEWLETT-PACKARD COMPANY ++ ++To anyone who acknowledges that this file is provided "AS IS" ++without any express or implied warranty: ++ permission to use, copy, modify, and distribute this file ++for any purpose is hereby granted without fee, provided that ++the above copyright notice and this notice appears in all ++copies, and that the name of Hewlett-Packard Company not be ++used in advertising or publicity pertaining to distribution ++of the software without specific, written prior permission. ++Hewlett-Packard Company makes no representations about the ++suitability of this software for any purpose. ++ ++(9) Hans-Peter Nilsson ++ ++Copyright (C) 2001 Hans-Peter Nilsson ++ ++Permission to use, copy, modify, and distribute this software is ++freely granted, provided that the above copyright notice, this notice ++and the following disclaimer are preserved with no changes. ++ ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++PURPOSE. ++ ++(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) ++ ++Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) ++ ++The authors hereby grant permission to use, copy, modify, distribute, ++and license this software and its documentation for any purpose, provided ++that existing copyright notices are retained in all copies and that this ++notice is included verbatim in any distributions. No written agreement, ++license, or royalty fee is required for any of the authorized uses. ++Modifications to this software may be copyrighted by their authors ++and need not follow the licensing terms described here, provided that ++the new terms are clearly indicated on the first page of each file where ++they apply. ++ ++(11) Christopher G. Demetriou ++ ++Copyright (c) 2001 Christopher G. Demetriou ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. The name of the author may not be used to endorse or promote products ++ derived from this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++(12) SuperH, Inc. ++ ++Copyright 2002 SuperH, Inc. All rights reserved ++ ++This software is the property of SuperH, Inc (SuperH) which specifically ++grants the user the right to modify, use and distribute this software ++provided this notice is not removed or altered. All other rights are ++reserved by SuperH. ++ ++SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO ++THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, ++INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM ++THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. ++ ++So that all may benefit from your experience, please report any problems ++or suggestions about this software to the SuperH Support Center via ++e-mail at softwaresupport@superh.com . ++ ++SuperH, Inc. ++405 River Oaks Parkway ++San Jose ++CA 95134 ++USA ++ ++(13) Royal Institute of Technology ++ ++Copyright (c) 1999 Kungliga Tekniska Hgskolan ++(Royal Institute of Technology, Stockholm, Sweden). ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++ ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++3. Neither the name of KTH nor the names of its contributors may be ++ used to endorse or promote products derived from this software without ++ specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY ++EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE ++LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR ++BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ++WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ++OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ++ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++(14) Alexey Zelkin ++ ++Copyright (c) 2000, 2001 Alexey Zelkin ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(15) Andrey A. Chernov ++ ++Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(16) FreeBSD ++ ++Copyright (c) 1997-2002 FreeBSD Project. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(17) S. L. Moshier ++ ++Author: S. L. Moshier. ++ ++Copyright (c) 1984,2000 S.L. Moshier ++ ++Permission to use, copy, modify, and distribute this software for any ++purpose without fee is hereby granted, provided that this entire notice ++is included in all copies of any software which is or includes a copy ++or modification of this software and in all copies of the supporting ++documentation for such software. ++ ++THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED ++WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION ++OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS ++SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. ++ ++(18) Citrus Project ++ ++Copyright (c)1999 Citrus Project, ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(19) Todd C. Miller ++ ++Copyright (c) 1998 Todd C. Miller ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. The name of the author may not be used to endorse or promote products ++ derived from this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, ++INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ++AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ++THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ++OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ++WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ++OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ++ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++(20) DJ Delorie (i386) ++ ++Copyright (C) 1991 DJ Delorie ++All rights reserved. ++ ++Redistribution and use in source and binary forms is permitted ++provided that the above copyright notice and following paragraph are ++duplicated in all such forms. ++ ++This file is distributed WITHOUT ANY WARRANTY; without even the implied ++warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++ ++(21) Free Software Foundation LGPL License (*-linux* targets only) ++ ++ Copyright (C) 1990-2025 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Mark Kettenis , 1997. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with the GNU C Library; if not, see https://www.gnu.org/licenses/. ++ ++(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) ++ ++Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU Library General Public License ++as published by the Free Software Foundation; either version 2 ++of the License, or (at your option) any later version. ++ ++This program is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU Library General Public License for more details. ++ ++(23) Intel (i960) ++ ++Copyright (c) 1993 Intel Corporation ++ ++Intel hereby grants you permission to copy, modify, and distribute this ++software and its documentation. Intel grants this permission provided ++that the above copyright notice appears in all copies and that both the ++copyright notice and this permission notice appear in supporting ++documentation. In addition, Intel grants this permission provided that ++you prominently mark as "not part of the original" any modifications ++made to this software or documentation, and that the name of Intel ++Corporation not be used in advertising or publicity pertaining to ++distribution of the software or the documentation without specific, ++written prior permission. ++ ++Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR ++IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY ++OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or ++representations regarding the use of, or the results of the use of, ++the software and documentation in terms of correctness, accuracy, ++reliability, currentness, or otherwise; and you rely on the software, ++documentation and results solely at your own risk. ++ ++IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, ++LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES ++OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM ++PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. ++ ++(24) Hewlett-Packard (hppa targets only) ++ ++(c) Copyright 1986 HEWLETT-PACKARD COMPANY ++ ++To anyone who acknowledges that this file is provided "AS IS" ++without any express or implied warranty: ++ permission to use, copy, modify, and distribute this file ++for any purpose is hereby granted without fee, provided that ++the above copyright notice and this notice appears in all ++copies, and that the name of Hewlett-Packard Company not be ++used in advertising or publicity pertaining to distribution ++of the software without specific, written prior permission. ++Hewlett-Packard Company makes no representations about the ++suitability of this software for any purpose. ++ ++(25) Henry Spencer (only *-linux targets) ++ ++Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. ++This software is not subject to any license of the American Telephone ++and Telegraph Company or of the Regents of the University of California. ++ ++Permission is granted to anyone to use this software for any purpose on ++any computer system, and to alter it and redistribute it, subject ++to the following restrictions: ++ ++1. The author is not responsible for the consequences of use of this ++ software, no matter how awful, even if they arise from flaws in it. ++ ++2. The origin of this software must not be misrepresented, either by ++ explicit claim or by omission. Since few users ever read sources, ++ credits must appear in the documentation. ++ ++3. Altered versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. Since few users ++ ever read sources, credits must appear in the documentation. ++ ++4. This notice may not be removed or altered. ++ ++(26) Mike Barcroft ++ ++Copyright (c) 2001 Mike Barcroft ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(27) Konstantin Chuguev (--enable-newlib-iconv) ++ ++Copyright (c) 1999, 2000 ++ Konstantin Chuguev. All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++ iconv (Charset Conversion Library) v2.0 ++ ++(27) Artem Bityuckiy (--enable-newlib-iconv) ++ ++Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. ++Rights transferred to Franklin Electronic Publishers. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(28) Red Hat Incorporated ++ ++Unless otherwise stated in each remaining newlib file, the remaining ++files in the newlib subdirectory default to the following copyright. ++It should be noted that Red Hat Incorporated now owns copyrights ++belonging to Cygnus Solutions and Cygnus Support. ++ ++Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are met: ++ ++ Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ ++ Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++ The name of Red Hat Incorporated may not be used to endorse ++ or promote products derived from this software without specific ++ prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY ++DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++contrib/unicode: ++ ++UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE ++ ++ Unicode Data Files include all data files under the directories ++http://www.unicode.org/Public/, http://www.unicode.org/reports/, and ++http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF ++online code charts under the directory http://www.unicode.org/Public/. ++Software includes any source code published in the Unicode Standard or under ++the directories http://www.unicode.org/Public/, ++http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. ++ ++ NOTICE TO USER: Carefully read the following legal agreement. BY ++DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ++("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND ++AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF ++YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA ++FILES OR SOFTWARE. ++ ++ COPYRIGHT AND PERMISSION NOTICE ++ ++ Copyright © 1991-2013 Unicode, Inc. All rights reserved. Distributed under ++the Terms of Use in http://www.unicode.org/copyright.html. ++ ++ Permission is hereby granted, free of charge, to any person obtaining a ++copy of the Unicode data files and any associated documentation (the "Data ++Files") or Unicode software and any associated documentation (the "Software") ++to deal in the Data Files or Software without restriction, including without ++limitation the rights to use, copy, modify, merge, publish, distribute, and/or ++sell copies of the Data Files or Software, and to permit persons to whom the ++Data Files or Software are furnished to do so, provided that (a) the above ++copyright notice(s) and this permission notice appear with all copies of the ++Data Files or Software, (b) both the above copyright notice(s) and this ++permission notice appear in associated documentation, and (c) there is clear ++notice in each modified Data File or in the Software as well as in the ++documentation associated with the Data File(s) or Software that the data or ++software has been modified. ++ ++ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY ++KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD ++PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL ++DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR ++PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ++ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE ++DATA FILES OR SOFTWARE. ++ ++ Except as contained in this notice, the name of a copyright holder shall ++not be used in advertising or otherwise to promote the sale, use or other ++dealings in these Data Files or Software without prior written authorization ++of the copyright holder. ++ ++contrib/unicode/from_glibc: ++ ++# Copyright (C) 2014-2019 Free Software Foundation, Inc. ++# This file is part of the GNU C Library. ++# ++# The GNU C Library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++# ++# The GNU C Library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public ++# License along with the GNU C Library; if not, see ++# . ++ ++gcc/cobol, libgcobol: ++ ++ * Copyright (c) 2021-2024 Symas Corporation ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are ++ * met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above ++ * copyright notice, this list of conditions and the following disclaimer ++ * in the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of the Symas Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived from ++ * this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++gcc/algol68 ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ This file is NOT part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ You should have received a copy of the GNU General Public License along with ++ GCC; see the file COPYING3. If not see . ++ ++libga68: ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ This file is NOT part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . ++ ++gcc/rust/checks/errors/borrowck/ffi-polonius/vendor/ ++libgrust/libformat_parser/vendor/ ++ ++ Vendored crates are authored by "The Rust Project Developers", ++ licensed under the Apache-2.0/MIT licenses. ++ ++ MIT License: ++ ++ Permission is hereby granted, free of charge, to any ++ person obtaining a copy of this software and associated ++ documentation files (the "Software"), to deal in the ++ Software without restriction, including without ++ limitation the rights to use, copy, modify, merge, ++ publish, distribute, sublicense, and/or sell copies of ++ the Software, and to permit persons to whom the Software ++ is furnished to do so, subject to the following ++ conditions: ++ ++ The above copyright notice and this permission notice ++ shall be included in all copies or substantial portions ++ of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ++ ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED ++ TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A ++ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT ++ SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ++ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR ++ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ++On Debian GNU/Linux systems, the complete text of Apache 2.0 License ++is in `/usr/share/common-licenses/Apache-2.0'. diff --cc debian/copyright.in index 0000000,0000000..ee2a755 new file mode 100644 --- /dev/null +++ b/debian/copyright.in @@@ -1,0 -1,0 +1,1638 @@@ ++This is the Debian GNU/Linux prepackaged version of the GNU compiler ++collection, containing Ada, C, C++, D, Fortran 95, Go, Objective-C, ++Objective-C++, and Modula-2 compilers, documentation, and support ++libraries. In addition, Debian provides the gm2 compiler, either in ++the same source package, or built from a separate same source package. ++Packaging is done by the Debian GCC Maintainers ++, with sources obtained from: ++ ++ ftp://gcc.gnu.org/pub/gcc/releases/ (for full releases) ++ https://gcc.gnu.org/git/gitweb.cgi?p=gcc.git (for prereleases) ++ ftp://sourceware.org/pub/newlib/ (for newlib) ++ ++The current gcc-@BV@ source package is taken from the git @SVN_BRANCH@. ++ ++Changes: See changelog.Debian.gz ++ ++Debian splits the GNU Compiler Collection into packages for each language, ++library, and documentation as follows: ++ ++Language Compiler package Library package Documentation ++--------------------------------------------------------------------------- ++Ada gnat-@BV@ libgnat-@BV@ gnat-@BV@-doc ++Algol-68 ga68-@BV@ libga68-1 libga68-@BV@-doc ++C gcc-@BV@ gcc-@BV@-doc ++C++ g++-@BV@ libstdc++6 libstdc++6-@BV@-doc ++COBOL gcobol-@BV@ libgcobol1 ++D gdc-@BV@ libgphobos6 ++Fortran 95 gfortran-@BV@ libgfortran5 gfortran-@BV@-doc ++Go gccgo-@BV@ libgo0 ++Objective C gobjc-@BV@ libobjc4 ++Objective C++ gobjc++-@BV@ ++Modula-2 gm2-@BV@ libgm2 libgm2-@BV@-doc ++Rust gccrs-@BV@ ++ ++For some language run-time libraries, Debian provides source files, ++development files, debugging symbols and libraries containing position- ++independent code in separate packages: ++ ++Language Sources Development Debugging Position-Independent ++------------------------------------------------------------------------------ ++C++ libstdc++6-@BV@-dbg libstdc++6-@BV@-pic ++D libphobos-@BV@-dev ++ ++Additional packages include: ++ ++All languages: ++libgcc1, libgcc2, libgcc4 GCC intrinsics (platform-dependent) ++gcc-@BV@-base Base files common to all compilers ++gcc-@BV@-soft-float Software floating point (ARM only) ++gcc-@BV@-source The sources with patches ++ ++Ada: ++libgnat-util@BV@-dev, libgnat-util@BV@ GNAT version library ++ ++C: ++cpp-@BV@, cpp-@BV@-doc GNU C Preprocessor ++libssp0-dev, libssp0 GCC stack smashing protection library ++libquadmath0 Math routines for the __float128 type ++fixincludes Fix non-ANSI header files ++ ++C, C++ and Fortran 95: ++libgomp1-dev, libgomp1 GCC OpenMP (GOMP) support library ++libitm1-dev, libitm1 GNU Transactional Memory Library ++ ++Biarch support: On some 64-bit platforms which can also run 32-bit code, ++Debian provides additional packages containing 32-bit versions of some ++libraries. These packages have names beginning with 'lib32' instead of ++'lib', for example lib32stdc++6. Similarly, on some 32-bit platforms which ++can also run 64-bit code, Debian provides additional packages with names ++beginning with 'lib64' instead of 'lib'. These packages contain 64-bit ++versions of the libraries. (At this time, not all platforms and not all ++libraries support biarch.) The license terms for these lib32 or lib64 ++packages are identical to the ones for the lib packages. ++ ++ ++COPYRIGHT STATEMENTS AND LICENSING TERMS ++ ++ ++GCC is Copyright (C) 1986-2025 Free Software Foundation, Inc. ++ ++GCC is free software; you can redistribute it and/or modify it under ++the terms of the GNU General Public License as published by the Free ++Software Foundation; either version 3, or (at your option) any later ++version. ++ ++GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++WARRANTY; without even the implied warranty of MERCHANTABILITY or ++FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++for more details. ++ ++Files that have exception clauses are licensed under the terms of the ++GNU General Public License; either version 3, or (at your option) any ++later version. ++ ++On Debian GNU/Linux systems, the complete text of the GNU General ++Public License is in `/usr/share/common-licenses/GPL', version 3 of this ++license in `/usr/share/common-licenses/GPL-3'. ++ ++The following runtime libraries are licensed under the terms of the ++GNU General Public License (v3 or later) with version 3.1 of the GCC ++Runtime Library Exception (included in this file): ++ ++ - libgcc (libgcc/, gcc/libgcc2.[ch], gcc/unwind*, gcc/gthr*, ++ gcc/coretypes.h, gcc/crtstuff.c, gcc/defaults.h, gcc/dwarf2.h, ++ gcc/emults.c, gcc/gbl-ctors.h, gcc/gcov-io.h, gcc/libgcov.c, ++ gcc/tsystem.h, gcc/typeclass.h). ++ - libatomic ++ - libdecnumber ++ - libgm2 ++ - libgomp ++ - libgrust ++ - libitm ++ - libssp ++ - libstdc++-v3 ++ - libobjc ++ - libgfortran ++ - The libgnat-@BV@ Ada support library and libgnat-util@BV@ library. ++ - Various config files in gcc/config/ used in runtime libraries. ++ - libvtv ++ ++The libbacktrace library is licensed under the following terms: ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are ++met: ++ ++ (1) Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ ++ (2) Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in ++ the documentation and/or other materials provided with the ++ distribution. ++ ++ (3) The name of the author may not be used to ++ endorse or promote products derived from this software without ++ specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, ++INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR ++SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, ++STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING ++IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE ++POSSIBILITY OF SUCH DAMAGE. ++ ++ ++The libsanitizer libraries (libasan, liblsan, libtsan, libubsan) are ++licensed under the following terms: ++ ++Copyright (c) 2009-2019 by the LLVM contributors. ++ ++All rights reserved. ++ ++Developed by: ++ ++ LLVM Team ++ ++ University of Illinois at Urbana-Champaign ++ ++ http://llvm.org ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy of ++this software and associated documentation files (the "Software"), to deal with ++the Software without restriction, including without limitation the rights to ++use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies ++of the Software, and to permit persons to whom the Software is furnished to do ++so, subject to the following conditions: ++ ++ * Redistributions of source code must retain the above copyright notice, ++ this list of conditions and the following disclaimers. ++ ++ * Redistributions in binary form must reproduce the above copyright notice, ++ this list of conditions and the following disclaimers in the ++ documentation and/or other materials provided with the distribution. ++ ++ * Neither the names of the LLVM Team, University of Illinois at ++ Urbana-Champaign, nor the names of its contributors may be used to ++ endorse or promote products derived from this Software without specific ++ prior written permission. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS ++FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++CONTRIBUTORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS WITH THE ++SOFTWARE. ++ ++Permission is hereby granted, free of charge, to any person obtaining a copy ++of this software and associated documentation files (the "Software"), to deal ++in the Software without restriction, including without limitation the rights ++to use, copy, modify, merge, publish, distribute, sublicense, and/or sell ++copies of the Software, and to permit persons to whom the Software is ++furnished to do so, subject to the following conditions: ++ ++The above copyright notice and this permission notice shall be included in ++all copies or substantial portions of the Software. ++ ++THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR ++IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, ++FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE ++AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER ++LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, ++OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN ++THE SOFTWARE. ++ ++ ++The libffi library is licensed under the following terms: ++ ++ libffi - Copyright (c) 1996-2011 Red Hat, Inc. ++ ++ Permission is hereby granted, free of charge, to any person obtaining ++ a copy of this software and associated documentation files (the ++ ``Software''), to deal in the Software without restriction, including ++ without limitation the rights to use, copy, modify, merge, publish, ++ distribute, sublicense, and/or sell copies of the Software, and to ++ permit persons to whom the Software is furnished to do so, subject to ++ the following conditions: ++ ++ The above copyright notice and this permission notice shall be included ++ in all copies or substantial portions of the Software. ++ ++ THE SOFTWARE IS PROVIDED ``AS IS'', WITHOUT WARRANTY OF ANY KIND, EXPRESS ++ OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. ++ IN NO EVENT SHALL CYGNUS SOLUTIONS BE LIABLE FOR ANY CLAIM, DAMAGES OR ++ OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ++ ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR ++ OTHER DEALINGS IN THE SOFTWARE. ++ ++ ++The documentation is licensed under the GNU Free Documentation License (v1.2). ++On Debian GNU/Linux systems, the complete text of this license is in ++`/usr/share/common-licenses/GFDL-1.2'. ++ ++ ++GCC RUNTIME LIBRARY EXCEPTION ++ ++Version 3.1, 31 March 2009 ++ ++Copyright (C) 2009 Free Software Foundation, Inc. ++ ++Everyone is permitted to copy and distribute verbatim copies of this ++license document, but changing it is not allowed. ++ ++This GCC Runtime Library Exception ("Exception") is an additional ++permission under section 7 of the GNU General Public License, version ++3 ("GPLv3"). It applies to a given file (the "Runtime Library") that ++bears a notice placed by the copyright holder of the file stating that ++the file is governed by GPLv3 along with this Exception. ++ ++When you use GCC to compile a program, GCC may combine portions of ++certain GCC header files and runtime libraries with the compiled ++program. The purpose of this Exception is to allow compilation of ++non-GPL (including proprietary) programs to use, in this way, the ++header files and runtime libraries covered by this Exception. ++ ++0. Definitions. ++ ++A file is an "Independent Module" if it either requires the Runtime ++Library for execution after a Compilation Process, or makes use of an ++interface provided by the Runtime Library, but is not otherwise based ++on the Runtime Library. ++ ++"GCC" means a version of the GNU Compiler Collection, with or without ++modifications, governed by version 3 (or a specified later version) of ++the GNU General Public License (GPL) with the option of using any ++subsequent versions published by the FSF. ++ ++"GPL-compatible Software" is software whose conditions of propagation, ++modification and use would permit combination with GCC in accord with ++the license of GCC. ++ ++"Target Code" refers to output from any compiler for a real or virtual ++target processor architecture, in executable form or suitable for ++input to an assembler, loader, linker and/or execution ++phase. Notwithstanding that, Target Code does not include data in any ++format that is used as a compiler intermediate representation, or used ++for producing a compiler intermediate representation. ++ ++The "Compilation Process" transforms code entirely represented in ++non-intermediate languages designed for human-written code, and/or in ++Java Virtual Machine byte code, into Target Code. Thus, for example, ++use of source code generators and preprocessors need not be considered ++part of the Compilation Process, since the Compilation Process can be ++understood as starting with the output of the generators or ++preprocessors. ++ ++A Compilation Process is "Eligible" if it is done using GCC, alone or ++with other GPL-compatible software, or if it is done without using any ++work based on GCC. For example, using non-GPL-compatible Software to ++optimize any GCC intermediate representations would not qualify as an ++Eligible Compilation Process. ++ ++1. Grant of Additional Permission. ++ ++You have permission to propagate a work of Target Code formed by ++combining the Runtime Library with Independent Modules, even if such ++propagation would otherwise violate the terms of GPLv3, provided that ++all Target Code was generated by Eligible Compilation Processes. You ++may then convey such a combination under terms of your choice, ++consistent with the licensing of the Independent Modules. ++ ++2. No Weakening of GCC Copyleft. ++ ++The availability of this Exception does not imply any general ++presumption that third-party software is unaffected by the copyleft ++requirements of the license of GCC. ++ ++ ++libquadmath/ ++ Copyright (C) 1992-2018 Free Software Foundation, Inc. ++ ++ Written by Francois-Xavier Coudert ++ Written by Tobias Burnus ++ Contributions by Ulrich Drepper ++ Conversion to long double by Jakub Jelinek ++ ++ This file is part of the libquadmath library. ++ Libquadmath is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Library General Public ++ License as published by the Free Software Foundation; either ++ version 2 of the License, or (at your option) any later version. ++ ++ Libiberty is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Library General Public License for more details. ++ ++libquadmath/math: ++ ++atanq.c, expm1q.c, j0q.c, j1q.c, log1pq.c, logq.c: ++ Copyright 2001 by Stephen L. Moshier ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++coshq.c, erfq.c, jnq.c, lgammaq.c, powq.c, roundq.c: ++ Changes for 128-bit __float128 are ++ Copyright (C) 2001 Stephen L. Moshier ++ and are incorporated herein by permission of the author. The author ++ reserves the right to distribute this material elsewhere under different ++ copying permissions. These modifications are distributed here under ++ the following terms: ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++libquadmath/math/ ++ ++cosq_kernel.c, expq.c, sincos_table.c, sincosq.c, sincosq_kernel.c, ++sinq_kernel.c, truncq.c: ++ Copyright (C) 1997, 1999 Free Software Foundation, Inc. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++libquadmath/math/isinfq.c: ++ Written by J.T. Conklin . ++ Change for long double by Jakub Jelinek ++ Public domain. ++ ++libquadmath/math/ ++ llroundq.c, lroundq.c, tgammaq.c: ++ ++ Copyright (C) 1997, 1999, 2002, 2004 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 1997 and ++ Jakub Jelinek , 1999. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++libquadmath/math/log10q.c: ++ Cephes Math Library Release 2.2: January, 1991 ++ Copyright 1984, 1991 by Stephen L. Moshier ++ Adapted for glibc November, 2001 ++ ++ This library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ This library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++libquadmath/math/ ++ acoshq.c, acosq.c, asinhq.c, asinq.c, atan2q.c, atanhq.c, ceilq.c, ++ copysignq.c, coshq.c, cosq.c, erfq.c, fabsq.c, finiteq.c, floorq.c, ++ fmodq.c, frexpq.c, hypotq.c, ilogbq.c, isnanq.c, jnq.c, ldexpq.c, ++ logbq.c, modfq.c, nearbyintq.c, nextafterq.c, powq.c, remainderq.c, ++ rem_pio2q.c, rintq.c, scalblnq.c, scalbnq.c, sinhq.c, sinq.c, ++ tanhq.c, tanq.c, tanq_kernel.c: ++ ++ Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. ++ . ++ Developed at SunPro, a Sun Microsystems, Inc. business. ++ Permission to use, copy, modify, and distribute this ++ software is freely granted, provided that this notice ++ is preserved. ++ ++libquadmath/math/ ++ acosq.c, asinq.c, coshq.c, erfq.c, jnq.c, powq.c, sinhq.c, tanq_kernel.c: ++ ++ In addition to the Sun Microsystems copyright: ++ ++ Long double expansions are ++ Copyright (C) 2001 Stephen L. Moshier ++ and are incorporated herein by permission of the author. The author ++ reserves the right to distribute this material elsewhere under different ++ copying permissions. These modifications are distributed here under ++ the LGPL 2.1 or later. ++ ++ ++gcc/go/gofrontend, libgo: ++ ++Copyright (c) 2009-2023 The Go Authors. All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are ++met: ++ ++ * Redistributions of source code must retain the above copyright ++notice, this list of conditions and the following disclaimer. ++ * Redistributions in binary form must reproduce the above ++copyright notice, this list of conditions and the following disclaimer ++in the documentation and/or other materials provided with the ++distribution. ++ * Neither the name of Google Inc. nor the names of its ++contributors may be used to endorse or promote products derived from ++this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++D: ++gdc-@BV@ GNU D Compiler ++libphobos-@BV@-dev D standard runtime library ++ ++The D source package is made up of the following components. ++ ++The D front-end for GCC: ++ - d/* ++ ++Copyright (C) 2004-2007 David Friedman ++Modified by Vincenzo Ampolo, Michael Parrot, Iain Buclaw, (C) 2009, 2010 ++Copyright (C) 2015-2024 Free Software Foundation, Inc. ++ ++This program is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3 of the License, or ++(at your option) any later version. ++ ++On Debian GNU/Linux systems, the complete text of the GNU General ++Public License is in `/usr/share/common-licenses/GPL', version 2 of this ++license in `/usr/share/common-licenses/GPL-3'. ++ ++The DMD Compiler implementation of the D programming language: ++ - d/dmd/* ++ ++Copyright (C) 1999-2023 by The D Language Foundation, All Rights Reserved ++All Rights Reserved ++written by Walter Bright ++http://www.digitalmars.com ++License for redistribution is by either the Artistic License or ++the GNU General Public License (v1). ++ ++On Debian GNU/Linux systems, the complete text of the GNU General ++Public License is in `/usr/share/common-licenses/GPL', the Artistic ++license in `/usr/share/common-licenses/Artistic'. ++ ++ ++The Zlib data compression library: ++ - zlib/* ++ ++ (C) 1995-2016 Jean-loup Gailly and Mark Adler ++ ++ This software is provided 'as-is', without any express or implied ++ warranty. In no event will the authors be held liable for any damages ++ arising from the use of this software. ++ ++ Permission is granted to anyone to use this software for any purpose, ++ including commercial applications, and to alter it and redistribute it ++ freely, subject to the following restrictions: ++ ++ 1. The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++ 2. Altered source versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. ++ 3. This notice may not be removed or altered from any source distribution. ++ ++ ++The Phobos standard runtime library: ++ - libphobos/* ++ ++Unless otherwise marked within the file, each file in the source ++is under the following licenses: ++ ++Copyright (C) 2004-2022 by Digital Mars, www.digitalmars.com ++Written by Walter Bright ++Copyright (C) 2018-2023, The D Language Foundation ++ ++This software is provided 'as-is', without any express or implied ++warranty. In no event will the authors be held liable for any damages ++arising from the use of this software. ++ ++Permission is granted to anyone to use this software for any purpose, ++including commercial applications, and to alter it and redistribute it ++freely, in both source and binary form, subject to the following ++restrictions: ++ ++ o The origin of this software must not be misrepresented; you must not ++ claim that you wrote the original software. If you use this software ++ in a product, an acknowledgment in the product documentation would be ++ appreciated but is not required. ++ o Altered source versions must be plainly marked as such, and must not ++ be misrepresented as being the original software. ++ o This notice may not be removed or altered from any source ++ distribution. ++ ++By plainly marking modifications, something along the lines of adding to each ++file that has been changed a "Modified by Foo Bar" line ++underneath the "Written by" line would be adequate. ++ ++gcc/m2: ++gcc/m2/gm2-libiberty: ++gcc/m2/mc-boot/: ++gcc/m2/mc-boot-ch/: ++Copyright (C) 2001-2019 Free Software Foundation, Inc. ++Contributed by Gaius Mulley . ++ ++This file is part of GNU Modula-2. ++ ++GNU Modula-2 is free software; you can redistribute it and/or modify ++it under the terms of the GNU General Public License as published by ++the Free Software Foundation; either version 3, or (at your option) ++any later version. ++ ++GNU Modula-2 is distributed in the hope that it will be useful, but ++WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++General Public License for more details. ++ ++gcc/m2/**/*.texi: ++Copyright (C) 2000-2024 Free Software Foundation, Inc. ++ ++Permission is granted to copy, distribute and/or modify this document ++under the terms of the GNU Free Documentation License, Version 1.3 or ++any later version published by the Free Software Foundation; with no ++Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. ++ ++gcc/m2/gm2-coroutines: ++gcc/m2/gm2-libs: ++gcc/m2/gm2-libs-min: ++gcc/m2/gm2-libs-pim: ++gcc/m2/gm2-libs-ch: ++Copyright (C) 2002-2024 Free Software Foundation, Inc. ++ ++This library is free software; you can redistribute it and/or ++modify it under the terms of the GNU Lesser General Public ++License as published by the Free Software Foundation; either ++version 2.1 of the License, or (at your option) any later version. ++ ++This library is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++Lesser General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++gcc/m2/gm2-libs-iso/: ++This has a mix of licenses, most as GPL-3+ plus GCC Runtime Library ++Exception, version 3.1. ++ ++gcc/m2/gm2-libs-iso/*.def: ++Library module defined by the International Standard ++Information technology - programming languages ++BS ISO/IEC 10514-1:1996E Part 1: Modula-2, Base Language. ++ ++Copyright ISO/IEC (International Organization for Standardization ++and International Electrotechnical Commission) 1996, 1997, 1998, ++1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 ++ ++Copyright (C) 2001-2024 Free Software Foundation, Inc. ++mix of GPL-3.0 and LGPL-2.1/3 ++ ++Copyright (C) 2001-2024 Free Software Foundation, Inc. ++mix of GPL-3.0 and LGPL-2.1/3 ++ ++gcc/m2/examples: ++Copyright (C) 2005-2024 Free Software Foundation, Inc. ++Mix of LGPL-2.1 and GPL-3.0. ++ ++gcc/m2/images: ++GPL-3+ ++ ++gcc/m2/el/gm2-mode.el: ++;; Everyone is granted permission to copy, modify and redistribute ++;; GNU Emacs, but only under the conditions described in the ++;; GNU Emacs General Public License. A copy of this license is ++;; supposed to have been given to you along with GNU Emacs so you ++;; can know your rights and responsibilities. It should be in a ++;; file named COPYING. Among other things, the copyright notice ++;; and this notice must be preserved on all copies. ++ ++Copyright (C) 2001-2024 Free Software Foundation, Inc. ++Contributed by Gaius Mulley . ++Mix of GPL-3 and LGPL-2.1. ++ ++gcc/testsuite/gm2/: ++Copyright (C) 2001-2019 Free Software Foundation, Inc. ++Mix of GPL-2+ and GPL-3+ ++ ++libgm2: ++ ++libgm2/libiso/: ++libgm2/libpim/: ++libgm2/liblog/: ++libgm2/libcor/: ++libgm2/libmin/: ++Copyright (C) 2002-2024 Free Software Foundation, Inc. ++ ++This library is free software; you can redistribute it and/or ++modify it under the terms of the GNU Lesser General Public ++License as published by the Free Software Foundation; either ++version 2.1 of the License, or (at your option) any later version. ++ ++This library is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++Lesser General Public License for more details. ++ ++Under Section 7 of GPL version 3, you are granted additional ++permissions described in the GCC Runtime Library Exception, version ++3.1, as published by the Free Software Foundation. ++ ++newlib-X.Y.Z/ (only for the offload compilers): ++ ++Upstream Authors: ++newlib@sources.redhat.com ++Jeff Johnston ++Tom Fitzsimmons ++ ++The newlib subdirectory is a collection of software from several sources. ++Each file may have its own copyright/license that is embedded in the source ++file. ++ ++This list documents those licenses which are more restrictive than ++a BSD-like license or require the copyright notice ++to be duplicated in documentation and/or other materials associated with ++the distribution. Certain licenses documented here only apply to ++specific targets. Certain clauses only apply if you are building the ++code as part of your binary. ++ ++Note that this list may omit certain licenses that ++only pertain to the copying/modifying of the individual source code. ++If you are distributing the source code, then you do not need to ++worry about these omitted licenses, so long as you do not modify the ++copyright information already in place. ++ ++Parts of this work are licensed under the terms of the GNU General ++Public License. On Debian systems, the complete text of this license ++can be found in /usr/share/common-licenses/GPL. ++ ++Parts of this work are licensed under the terms of the GNU Library ++General Public License. On Debian systems, the complete text of this ++license be found in /usr/share/common-licenses/LGPL. ++ ++(1) University of California, Berkeley ++ ++[1a] ++ ++Copyright (c) 1990 The Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms are permitted ++provided that the above copyright notice and this paragraph are ++duplicated in all such forms and that any documentation, ++and other materials related to such distribution and use ++acknowledge that the software was developed ++by the University of California, Berkeley. The name of the ++University may not be used to endorse or promote products derived ++from this software without specific prior written permission. ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++[1b] ++ ++Copyright (c) 1990 The Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms are permitted ++provided that the above copyright notice and this paragraph are ++duplicated in all such forms and that any documentation, ++advertising materials, and other materials related to such ++distribution and use acknowledge that the software was developed ++by the University of California, Berkeley. The name of the ++University may not be used to endorse or promote products derived ++from this software without specific prior written permission. ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++[1c] ++ ++Copyright (c) 1981, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 ++The Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. All advertising materials mentioning features or use of this software ++ must display the following acknowledgement: ++ This product includes software developed by the University of ++ California, Berkeley and its contributors. ++4. Neither the name of the University nor the names of its contributors ++ may be used to endorse or promote products derived from this software ++ without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++[1d] ++ ++Copyright (c) 1988, 1990, 1993 Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. Neither the name of the University nor the names of its contributors ++ may be used to endorse or promote products derived from this software ++ without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++[1e] ++ ++Copyright (c) 1982, 1986, 1989, 1991, 1993, 1994 ++The Regents of the University of California. All rights reserved. ++(c) UNIX System Laboratories, Inc. ++All or some portions of this file are derived from material licensed ++to the University of California by American Telephone and Telegraph ++Co. or Unix System Laboratories, Inc. and are reproduced herein with ++the permission of UNIX System Laboratories, Inc. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. All advertising materials mentioning features or use of this software ++ must display the following acknowledgement: ++ This product includes software developed by the University of ++ California, Berkeley and its contributors. ++4. Neither the name of the University nor the names of its contributors ++ may be used to endorse or promote products derived from this software ++ without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++[1f] ++ ++Copyright (c) 1987, 1988, 2000 Regents of the University of California. ++All rights reserved. ++ ++Redistribution and use in source and binary forms are permitted ++provided that: (1) source distributions retain this entire copyright ++notice and comment, and (2) distributions including binaries display ++the following acknowledgement: ``This product includes software ++developed by the University of California, Berkeley and its contributors'' ++in the documentation or other materials provided with the distribution ++and in all advertising materials mentioning features or use of this ++software. Neither the name of the University nor the names of its ++contributors may be used to endorse or promote products derived ++from this software without specific prior written permission. ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ++ ++------------------------------------------------------------- ++ Please note that in some of the above alternate licenses, there is a ++ statement regarding that acknowledgement must be made in any ++ advertising materials for products using the code. This restriction ++ no longer applies due to the following license change: ++ ++ ftp://ftp.cs.berkeley.edu/pub/4bsd/README.Impt.License.Change ++ ++ In some cases the defunct clause has been removed in modified newlib code and ++ in some cases, the clause has been left as-is. ++------------------------------------------------------------- ++ ++(2) Cygwin (cygwin targets only) ++ ++Copyright 2001 Red Hat, Inc. ++ ++This software is a copyrighted work licensed under the terms of the ++Cygwin license. Please consult the file "CYGWIN_LICENSE" for ++details. ++ ++(3) David M. Gay at AT&T ++ ++The author of this software is David M. Gay. ++ ++Copyright (c) 1991 by AT&T. ++ ++Permission to use, copy, modify, and distribute this software for any ++purpose without fee is hereby granted, provided that this entire notice ++is included in all copies of any software which is or includes a copy ++or modification of this software and in all copies of the supporting ++documentation for such software. ++ ++THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED ++WARRANTY. IN PARTICULAR, NEITHER THE AUTHOR NOR AT&T MAKES ANY ++REPRESENTATION OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY ++OF THIS SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. ++ ++(4) Advanced Micro Devices ++ ++Copyright 1989, 1990 Advanced Micro Devices, Inc. ++ ++This software is the property of Advanced Micro Devices, Inc (AMD) which ++specifically grants the user the right to modify, use and distribute this ++software provided this notice is not removed or altered. All other rights ++are reserved by AMD. ++ ++AMD MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO THIS ++SOFTWARE. IN NO EVENT SHALL AMD BE LIABLE FOR INCIDENTAL OR CONSEQUENTIAL ++DAMAGES IN CONNECTION WITH OR ARISING FROM THE FURNISHING, PERFORMANCE, OR ++USE OF THIS SOFTWARE. ++ ++So that all may benefit from your experience, please report any problems ++or suggestions about this software to the 29K Technical Support Center at ++800-29-29-AMD (800-292-9263) in the USA, or 0800-89-1131 in the UK, or ++0031-11-1129 in Japan, toll free. The direct dial number is 512-462-4118. ++ ++Advanced Micro Devices, Inc. ++29K Support Products ++Mail Stop 573 ++5900 E. Ben White Blvd. ++Austin, TX 78741 ++800-292-9263 ++ ++(5) C.W. Sandmann ++ ++Copyright (C) 1993 C.W. Sandmann ++ ++This file may be freely distributed as long as the author's name remains. ++ ++(6) Eric Backus ++ ++(C) Copyright 1992 Eric Backus ++ ++This software may be used freely so long as this copyright notice is ++left intact. There is no warrantee on this software. ++ ++(7) Sun Microsystems ++ ++Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved. ++ ++Developed at SunPro, a Sun Microsystems, Inc. business. ++Permission to use, copy, modify, and distribute this ++software is freely granted, provided that this notice ++is preserved. ++ ++(8) Hewlett Packard ++ ++(c) Copyright 1986 HEWLETT-PACKARD COMPANY ++ ++To anyone who acknowledges that this file is provided "AS IS" ++without any express or implied warranty: ++ permission to use, copy, modify, and distribute this file ++for any purpose is hereby granted without fee, provided that ++the above copyright notice and this notice appears in all ++copies, and that the name of Hewlett-Packard Company not be ++used in advertising or publicity pertaining to distribution ++of the software without specific, written prior permission. ++Hewlett-Packard Company makes no representations about the ++suitability of this software for any purpose. ++ ++(9) Hans-Peter Nilsson ++ ++Copyright (C) 2001 Hans-Peter Nilsson ++ ++Permission to use, copy, modify, and distribute this software is ++freely granted, provided that the above copyright notice, this notice ++and the following disclaimer are preserved with no changes. ++ ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED ++WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++PURPOSE. ++ ++(10) Stephane Carrez (m68hc11-elf/m68hc12-elf targets only) ++ ++Copyright (C) 1999, 2000, 2001, 2002 Stephane Carrez (stcarrez@nerim.fr) ++ ++The authors hereby grant permission to use, copy, modify, distribute, ++and license this software and its documentation for any purpose, provided ++that existing copyright notices are retained in all copies and that this ++notice is included verbatim in any distributions. No written agreement, ++license, or royalty fee is required for any of the authorized uses. ++Modifications to this software may be copyrighted by their authors ++and need not follow the licensing terms described here, provided that ++the new terms are clearly indicated on the first page of each file where ++they apply. ++ ++(11) Christopher G. Demetriou ++ ++Copyright (c) 2001 Christopher G. Demetriou ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. The name of the author may not be used to endorse or promote products ++ derived from this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR ++IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES ++OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ++IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, ++INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT ++NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF ++THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++(12) SuperH, Inc. ++ ++Copyright 2002 SuperH, Inc. All rights reserved ++ ++This software is the property of SuperH, Inc (SuperH) which specifically ++grants the user the right to modify, use and distribute this software ++provided this notice is not removed or altered. All other rights are ++reserved by SuperH. ++ ++SUPERH MAKES NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH REGARD TO ++THIS SOFTWARE. IN NO EVENT SHALL SUPERH BE LIABLE FOR INDIRECT, SPECIAL, ++INCIDENTAL OR CONSEQUENTIAL DAMAGES IN CONNECTION WITH OR ARISING FROM ++THE FURNISHING, PERFORMANCE, OR USE OF THIS SOFTWARE. ++ ++So that all may benefit from your experience, please report any problems ++or suggestions about this software to the SuperH Support Center via ++e-mail at softwaresupport@superh.com . ++ ++SuperH, Inc. ++405 River Oaks Parkway ++San Jose ++CA 95134 ++USA ++ ++(13) Royal Institute of Technology ++ ++Copyright (c) 1999 Kungliga Tekniska Hgskolan ++(Royal Institute of Technology, Stockholm, Sweden). ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++ ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++3. Neither the name of KTH nor the names of its contributors may be ++ used to endorse or promote products derived from this software without ++ specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY ++EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR ++PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE ++LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR ++CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF ++SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR ++BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ++WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ++OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ++ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++(14) Alexey Zelkin ++ ++Copyright (c) 2000, 2001 Alexey Zelkin ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(15) Andrey A. Chernov ++ ++Copyright (C) 1997 by Andrey A. Chernov, Moscow, Russia. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(16) FreeBSD ++ ++Copyright (c) 1997-2002 FreeBSD Project. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(17) S. L. Moshier ++ ++Author: S. L. Moshier. ++ ++Copyright (c) 1984,2000 S.L. Moshier ++ ++Permission to use, copy, modify, and distribute this software for any ++purpose without fee is hereby granted, provided that this entire notice ++is included in all copies of any software which is or includes a copy ++or modification of this software and in all copies of the supporting ++documentation for such software. ++ ++THIS SOFTWARE IS BEING PROVIDED "AS IS", WITHOUT ANY EXPRESS OR IMPLIED ++WARRANTY. IN PARTICULAR, THE AUTHOR MAKES NO REPRESENTATION ++OR WARRANTY OF ANY KIND CONCERNING THE MERCHANTABILITY OF THIS ++SOFTWARE OR ITS FITNESS FOR ANY PARTICULAR PURPOSE. ++ ++(18) Citrus Project ++ ++Copyright (c)1999 Citrus Project, ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(19) Todd C. Miller ++ ++Copyright (c) 1998 Todd C. Miller ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++3. The name of the author may not be used to endorse or promote products ++ derived from this software without specific prior written permission. ++ ++THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, ++INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY ++AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL ++THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, ++EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, ++PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; ++OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, ++WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR ++OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ++ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++(20) DJ Delorie (i386) ++ ++Copyright (C) 1991 DJ Delorie ++All rights reserved. ++ ++Redistribution and use in source and binary forms is permitted ++provided that the above copyright notice and following paragraph are ++duplicated in all such forms. ++ ++This file is distributed WITHOUT ANY WARRANTY; without even the implied ++warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. ++ ++(21) Free Software Foundation LGPL License (*-linux* targets only) ++ ++ Copyright (C) 1990-2025 ++ Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Mark Kettenis , 1997. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library is distributed in the hope that it will be useful, ++ but WITHOUT ANY WARRANTY; without even the implied warranty of ++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public License ++ along with the GNU C Library; if not, see https://www.gnu.org/licenses/. ++ ++(22) Xavier Leroy LGPL License (i[3456]86-*-linux* targets only) ++ ++Copyright (C) 1996 Xavier Leroy (Xavier.Leroy@inria.fr) ++ ++This program is free software; you can redistribute it and/or ++modify it under the terms of the GNU Library General Public License ++as published by the Free Software Foundation; either version 2 ++of the License, or (at your option) any later version. ++ ++This program is distributed in the hope that it will be useful, ++but WITHOUT ANY WARRANTY; without even the implied warranty of ++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ++GNU Library General Public License for more details. ++ ++(23) Intel (i960) ++ ++Copyright (c) 1993 Intel Corporation ++ ++Intel hereby grants you permission to copy, modify, and distribute this ++software and its documentation. Intel grants this permission provided ++that the above copyright notice appears in all copies and that both the ++copyright notice and this permission notice appear in supporting ++documentation. In addition, Intel grants this permission provided that ++you prominently mark as "not part of the original" any modifications ++made to this software or documentation, and that the name of Intel ++Corporation not be used in advertising or publicity pertaining to ++distribution of the software or the documentation without specific, ++written prior permission. ++ ++Intel Corporation provides this AS IS, WITHOUT ANY WARRANTY, EXPRESS OR ++IMPLIED, INCLUDING, WITHOUT LIMITATION, ANY WARRANTY OF MERCHANTABILITY ++OR FITNESS FOR A PARTICULAR PURPOSE. Intel makes no guarantee or ++representations regarding the use of, or the results of the use of, ++the software and documentation in terms of correctness, accuracy, ++reliability, currentness, or otherwise; and you rely on the software, ++documentation and results solely at your own risk. ++ ++IN NO EVENT SHALL INTEL BE LIABLE FOR ANY LOSS OF USE, LOSS OF BUSINESS, ++LOSS OF PROFITS, INDIRECT, INCIDENTAL, SPECIAL OR CONSEQUENTIAL DAMAGES ++OF ANY KIND. IN NO EVENT SHALL INTEL'S TOTAL LIABILITY EXCEED THE SUM ++PAID TO INTEL FOR THE PRODUCT LICENSED HEREUNDER. ++ ++(24) Hewlett-Packard (hppa targets only) ++ ++(c) Copyright 1986 HEWLETT-PACKARD COMPANY ++ ++To anyone who acknowledges that this file is provided "AS IS" ++without any express or implied warranty: ++ permission to use, copy, modify, and distribute this file ++for any purpose is hereby granted without fee, provided that ++the above copyright notice and this notice appears in all ++copies, and that the name of Hewlett-Packard Company not be ++used in advertising or publicity pertaining to distribution ++of the software without specific, written prior permission. ++Hewlett-Packard Company makes no representations about the ++suitability of this software for any purpose. ++ ++(25) Henry Spencer (only *-linux targets) ++ ++Copyright 1992, 1993, 1994 Henry Spencer. All rights reserved. ++This software is not subject to any license of the American Telephone ++and Telegraph Company or of the Regents of the University of California. ++ ++Permission is granted to anyone to use this software for any purpose on ++any computer system, and to alter it and redistribute it, subject ++to the following restrictions: ++ ++1. The author is not responsible for the consequences of use of this ++ software, no matter how awful, even if they arise from flaws in it. ++ ++2. The origin of this software must not be misrepresented, either by ++ explicit claim or by omission. Since few users ever read sources, ++ credits must appear in the documentation. ++ ++3. Altered versions must be plainly marked as such, and must not be ++ misrepresented as being the original software. Since few users ++ ever read sources, credits must appear in the documentation. ++ ++4. This notice may not be removed or altered. ++ ++(26) Mike Barcroft ++ ++Copyright (c) 2001 Mike Barcroft ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(27) Konstantin Chuguev (--enable-newlib-iconv) ++ ++Copyright (c) 1999, 2000 ++ Konstantin Chuguev. All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++ iconv (Charset Conversion Library) v2.0 ++ ++(27) Artem Bityuckiy (--enable-newlib-iconv) ++ ++Copyright (c) 2003, Artem B. Bityuckiy, SoftMine Corporation. ++Rights transferred to Franklin Electronic Publishers. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions ++are met: ++1. Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++2. Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND ++ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ++ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE ++FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL ++DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS ++OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ++HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT ++LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY ++OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ++SUCH DAMAGE. ++ ++(28) Red Hat Incorporated ++ ++Unless otherwise stated in each remaining newlib file, the remaining ++files in the newlib subdirectory default to the following copyright. ++It should be noted that Red Hat Incorporated now owns copyrights ++belonging to Cygnus Solutions and Cygnus Support. ++ ++Copyright (c) 1994, 1997, 2001, 2002, 2003, 2004 Red Hat Incorporated. ++All rights reserved. ++ ++Redistribution and use in source and binary forms, with or without ++modification, are permitted provided that the following conditions are met: ++ ++ Redistributions of source code must retain the above copyright ++ notice, this list of conditions and the following disclaimer. ++ ++ Redistributions in binary form must reproduce the above copyright ++ notice, this list of conditions and the following disclaimer in the ++ documentation and/or other materials provided with the distribution. ++ ++ The name of Red Hat Incorporated may not be used to endorse ++ or promote products derived from this software without specific ++ prior written permission. ++ ++THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" ++AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE ++IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE ++DISCLAIMED. IN NO EVENT SHALL RED HAT INCORPORATED BE LIABLE FOR ANY ++DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES ++(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; ++LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ++ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS ++SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++ ++contrib/unicode: ++ ++UNICODE, INC. LICENSE AGREEMENT - DATA FILES AND SOFTWARE ++ ++ Unicode Data Files include all data files under the directories ++http://www.unicode.org/Public/, http://www.unicode.org/reports/, and ++http://www.unicode.org/cldr/data/. Unicode Data Files do not include PDF ++online code charts under the directory http://www.unicode.org/Public/. ++Software includes any source code published in the Unicode Standard or under ++the directories http://www.unicode.org/Public/, ++http://www.unicode.org/reports/, and http://www.unicode.org/cldr/data/. ++ ++ NOTICE TO USER: Carefully read the following legal agreement. BY ++DOWNLOADING, INSTALLING, COPYING OR OTHERWISE USING UNICODE INC.'S DATA FILES ++("DATA FILES"), AND/OR SOFTWARE ("SOFTWARE"), YOU UNEQUIVOCALLY ACCEPT, AND ++AGREE TO BE BOUND BY, ALL OF THE TERMS AND CONDITIONS OF THIS AGREEMENT. IF ++YOU DO NOT AGREE, DO NOT DOWNLOAD, INSTALL, COPY, DISTRIBUTE OR USE THE DATA ++FILES OR SOFTWARE. ++ ++ COPYRIGHT AND PERMISSION NOTICE ++ ++ Copyright © 1991-2013 Unicode, Inc. All rights reserved. Distributed under ++the Terms of Use in http://www.unicode.org/copyright.html. ++ ++ Permission is hereby granted, free of charge, to any person obtaining a ++copy of the Unicode data files and any associated documentation (the "Data ++Files") or Unicode software and any associated documentation (the "Software") ++to deal in the Data Files or Software without restriction, including without ++limitation the rights to use, copy, modify, merge, publish, distribute, and/or ++sell copies of the Data Files or Software, and to permit persons to whom the ++Data Files or Software are furnished to do so, provided that (a) the above ++copyright notice(s) and this permission notice appear with all copies of the ++Data Files or Software, (b) both the above copyright notice(s) and this ++permission notice appear in associated documentation, and (c) there is clear ++notice in each modified Data File or in the Software as well as in the ++documentation associated with the Data File(s) or Software that the data or ++software has been modified. ++ ++ THE DATA FILES AND SOFTWARE ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY ++KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF ++MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT OF THIRD ++PARTY RIGHTS. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR HOLDERS INCLUDED IN ++THIS NOTICE BE LIABLE FOR ANY CLAIM, OR ANY SPECIAL INDIRECT OR CONSEQUENTIAL ++DAMAGES, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR ++PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ++ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THE ++DATA FILES OR SOFTWARE. ++ ++ Except as contained in this notice, the name of a copyright holder shall ++not be used in advertising or otherwise to promote the sale, use or other ++dealings in these Data Files or Software without prior written authorization ++of the copyright holder. ++ ++contrib/unicode/from_glibc: ++ ++# Copyright (C) 2014-2019 Free Software Foundation, Inc. ++# This file is part of the GNU C Library. ++# ++# The GNU C Library is free software; you can redistribute it and/or ++# modify it under the terms of the GNU Lesser General Public ++# License as published by the Free Software Foundation; either ++# version 2.1 of the License, or (at your option) any later version. ++# ++# The GNU C Library is distributed in the hope that it will be useful, ++# but WITHOUT ANY WARRANTY; without even the implied warranty of ++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU ++# Lesser General Public License for more details. ++# ++# You should have received a copy of the GNU Lesser General Public ++# License along with the GNU C Library; if not, see ++# . ++ ++gcc/cobol, libgcobol: ++ ++ * Copyright (c) 2021-2024 Symas Corporation ++ * ++ * Redistribution and use in source and binary forms, with or without ++ * modification, are permitted provided that the following conditions are ++ * met: ++ * ++ * * Redistributions of source code must retain the above copyright ++ * notice, this list of conditions and the following disclaimer. ++ * * Redistributions in binary form must reproduce the above ++ * copyright notice, this list of conditions and the following disclaimer ++ * in the documentation and/or other materials provided with the ++ * distribution. ++ * * Neither the name of the Symas Corporation nor the names of its ++ * contributors may be used to endorse or promote products derived from ++ * this software without specific prior written permission. ++ * ++ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS ++ * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT ++ * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR ++ * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT ++ * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ++ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ++ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, ++ * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY ++ * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ ++gcc/algol68 ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ This file is NOT part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ You should have received a copy of the GNU General Public License along with ++ GCC; see the file COPYING3. If not see . ++ ++libga68: ++ ++ Copyright (C) 2025 Jose E. Marchesi. ++ ++ This file is NOT part of GCC. ++ ++ GCC is free software; you can redistribute it and/or modify it under the ++ terms of the GNU General Public License as published by the Free Software ++ Foundation; either version 3, or (at your option) any later version. ++ ++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY ++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS ++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more ++ details. ++ ++ Under Section 7 of GPL version 3, you are granted additional permissions ++ described in the GCC Runtime Library Exception, version 3.1, as published by ++ the Free Software Foundation. ++ ++ You should have received a copy of the GNU General Public License and a copy ++ of the GCC Runtime Library Exception along with this program; see the files ++ COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . ++ ++gcc/rust/checks/errors/borrowck/ffi-polonius/vendor/ ++libgrust/libformat_parser/vendor/ ++ ++ Vendored crates are authored by "The Rust Project Developers", ++ licensed under the Apache-2.0/MIT licenses. ++ ++ MIT License: ++ ++ Permission is hereby granted, free of charge, to any ++ person obtaining a copy of this software and associated ++ documentation files (the "Software"), to deal in the ++ Software without restriction, including without ++ limitation the rights to use, copy, modify, merge, ++ publish, distribute, sublicense, and/or sell copies of ++ the Software, and to permit persons to whom the Software ++ is furnished to do so, subject to the following ++ conditions: ++ ++ The above copyright notice and this permission notice ++ shall be included in all copies or substantial portions ++ of the Software. ++ ++ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ++ ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED ++ TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A ++ PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT ++ SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY ++ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION ++ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR ++ IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER ++ DEALINGS IN THE SOFTWARE. ++ ++On Debian GNU/Linux systems, the complete text of Apache 2.0 License ++is in `/usr/share/common-licenses/Apache-2.0'. diff --cc debian/cpp-BV-CRB.preinst.in index 0000000,0000000..408889b new file mode 100644 --- /dev/null +++ b/debian/cpp-BV-CRB.preinst.in @@@ -1,0 -1,0 +1,11 @@@ ++#!/bin/sh ++ ++set -e ++ ++if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then ++ update-alternatives --quiet --remove @TARGET@-cpp /usr/bin/@TARGET@-cpp-@BV@ ++fi ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/cpp-BV-doc.doc-base.cpp index 0000000,0000000..d64e86f new file mode 100644 --- /dev/null +++ b/debian/cpp-BV-doc.doc-base.cpp @@@ -1,0 -1,0 +1,16 @@@ ++Document: cpp-@BV@ ++Title: The GNU C preprocessor ++Author: Various ++Abstract: The C preprocessor is a "macro processor" that is used automatically ++ by the C compiler to transform your program before actual compilation. ++ It is called a macro processor because it allows you to define "macros", ++ which are brief abbreviations for longer constructs. ++Section: Programming ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/cpp.html ++Files: /usr/share/doc/gcc-@BV@-base/cpp.html ++ ++Format: info ++Index: /usr/share/info/cpp-@BV@.info.gz ++Files: /usr/share/info/cpp-@BV@* diff --cc debian/cpp-BV-doc.doc-base.cppint index 0000000,0000000..151d319 new file mode 100644 --- /dev/null +++ b/debian/cpp-BV-doc.doc-base.cppint @@@ -1,0 -1,0 +1,17 @@@ ++Document: cppinternals-@BV@ ++Title: The GNU C preprocessor (internals) ++Author: Various ++Abstract: This brief manual documents the internals of cpplib, and ++ explains some of the tricky issues. It is intended that, along with ++ the comments in the source code, a reasonably competent C programmer ++ should be able to figure out what the code is doing, and why things ++ have been implemented the way they have. ++Section: Programming ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/cppinternals.html ++Files: /usr/share/doc/gcc-@BV@-base/cppinternals.html ++ ++Format: info ++Index: /usr/share/info/cppinternals-@BV@.info.gz ++Files: /usr/share/info/cppinternals-@BV@* diff --cc debian/dh_doclink index 0000000,0000000..8372658 new file mode 100755 --- /dev/null +++ b/debian/dh_doclink @@@ -1,0 -1,0 +1,12 @@@ ++#! /bin/sh ++ ++pkg=`echo $1 | sed 's/^-p//'` ++target=$2 ++ ++[ -d debian/$pkg/usr/share/doc ] || mkdir -p debian/$pkg/usr/share/doc ++if [ -d debian/$pkg/usr/share/doc/$p -a ! -h debian/$pkg/usr/share/doc/$p ] ++then ++ echo "WARNING: removing doc directory $pkg" ++ rm -rf debian/$pkg/usr/share/doc/$pkg ++fi ++ln -sf $target debian/$pkg/usr/share/doc/$pkg diff --cc debian/dh_rmemptydirs index 0000000,0000000..4a010c7 new file mode 100755 --- /dev/null +++ b/debian/dh_rmemptydirs @@@ -1,0 -1,0 +1,10 @@@ ++#! /bin/sh -e ++ ++pkg=`echo $1 | sed 's/^-p//'` ++ ++: # remove empty directories, when all components are in place ++for d in `find debian/$pkg -depth -type d -empty 2> /dev/null`; do \ ++ while rmdir $d 2> /dev/null; do d=`dirname $d`; done; \ ++done ++ ++exit 0 diff --cc debian/dummy-man.1 index 0000000,0000000..966d935 new file mode 100644 --- /dev/null +++ b/debian/dummy-man.1 @@@ -1,0 -1,0 +1,29 @@@ ++.TH @NAME@ 1 "May 24, 2003" @name@ "Debian Free Documentation" ++.SH NAME ++@name@ \- A program with a man page covered by the GFDL with invariant sections ++.SH SYNOPSIS ++@name@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] ++ ++.SH DESCRIPTION ++ ++\fB@name@\fR is documented by a man page, which is covered by the "GNU ++Free Documentation License" (GFDL) containing invariant sections. ++.P ++In November 2002, version 1.2 of the GNU Free Documentation License (GNU ++FDL) was released by the Free Software Foundation after a long period ++of consultation. Unfortunately, some concerns raised by members of the ++Debian Project were not addressed, and as such the GNU FDL can apply ++to works that do not pass the Debian Free Software Guidelines (DFSG), ++and may thus only be included in the non-free component of the Debian ++archive, not the Debian distribution itself. ++ ++.SH "SEE ALSO" ++.BR http://gcc.gnu.org/onlinedocs/ ++for the complete documentation, ++.BR http://lists.debian.org/debian-legal/2003/debian-legal-200304/msg00307.html ++for a proposed statement of Debian with respect to the GFDL, ++.BR gfdl(7) ++ ++.SH AUTHOR ++This manual page was written by the Debian GCC maintainers, ++for the Debian GNU/Linux system. diff --cc debian/dummy.texi index 0000000,0000000..127ccaa new file mode 100644 --- /dev/null +++ b/debian/dummy.texi @@@ -1,0 -1,0 +1,1 @@@ ++@c This file is empty because the original one has a non DFSG free license (GFDL) diff --cc debian/g++-BV-CRB.preinst.in index 0000000,0000000..b69c8f8 new file mode 100644 --- /dev/null +++ b/debian/g++-BV-CRB.preinst.in @@@ -1,0 -1,0 +1,11 @@@ ++#!/bin/sh ++ ++set -e ++ ++if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then ++ update-alternatives --quiet --remove @TARGET@-g++ /usr/bin/@TARGET@-g++-@BV@ ++fi ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/ga68-BV-doc.doc-base index 0000000,0000000..c1f81ed new file mode 100644 --- /dev/null +++ b/debian/ga68-BV-doc.doc-base @@@ -1,0 -1,0 +1,14 @@@ ++Document: ga68-@BV@ ++Title: The GNU Algol 68 Compiler ++Author: Various ++Abstract: This manual documents how to run, install and port `gm68', ++ as well as its new features and incompatibilities, and how to report bugs. ++Section: Programming/Algol68 ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/Algol68/ga68-@BV@.html ++Files: /usr/share/doc/gcc-@BV@-base/Algol68/ga68-@BV@.html ++ ++Format: info ++Index: /usr/share/info/ga68-@BV@.info.gz ++Files: /usr/share/info/ga68-@BV@* diff --cc debian/gcc-BV-CRB.preinst.in index 0000000,0000000..ca34796 new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-CRB.preinst.in @@@ -1,0 -1,0 +1,12 @@@ ++#!/bin/sh ++ ++set -e ++ ++if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then ++ update-alternatives --quiet --remove @TARGET@-gcc /usr/bin/@TARGET@-gcc-@BV@ ++ update-alternatives --quiet --remove @TARGET@-gcov /usr/bin/@TARGET@-gcov-@BV@ ++fi ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/gcc-BV-doc.doc-base.gcc index 0000000,0000000..106e18d new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-doc.doc-base.gcc @@@ -1,0 -1,0 +1,14 @@@ ++Document: gcc-@BV@ ++Title: The GNU C and C++ compiler ++Author: Various ++Abstract: This manual documents how to run, install and port the GNU compiler, ++ as well as its new features and incompatibilities, and how to report bugs. ++Section: Programming ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/gcc.html ++Files: /usr/share/doc/gcc-@BV@-base/gcc.html ++ ++Format: info ++Index: /usr/share/info/gcc-@BV@.info.gz ++Files: /usr/share/info/gcc-@BV@* diff --cc debian/gcc-BV-doc.doc-base.gccint index 0000000,0000000..85f4af1 new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-doc.doc-base.gccint @@@ -1,0 -1,0 +1,17 @@@ ++Document: gccint-@BV@ ++Title: Internals of the GNU C and C++ compiler ++Author: Various ++Abstract: This manual documents the internals of the GNU compilers, ++ including how to port them to new targets and some information about ++ how to write front ends for new languages. It corresponds to GCC ++ version @BV@.x. The use of the GNU compilers is documented in a ++ separate manual. ++Section: Programming ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/gccint.html ++Files: /usr/share/doc/gcc-@BV@-base/gccint.html ++ ++Format: info ++Index: /usr/share/info/gccint-@BV@.info.gz ++Files: /usr/share/info/gccint-@BV@* diff --cc debian/gcc-BV-doc.doc-base.gomp index 0000000,0000000..69ccede new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-doc.doc-base.gomp @@@ -1,0 -1,0 +1,15 @@@ ++Document: gcc-@BV@-gomp ++Title: The GNU OpenMP Implementation (for GCC @BV@) ++Author: Various ++Abstract: This manual documents the usage of libgomp, the GNU implementation ++ of the OpenMP Application Programming Interface (API) for multi-platform ++ shared-memory parallel programming in C/C++ and Fortran. ++Section: Programming ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/libgomp.html ++Files: /usr/share/doc/gcc-@BV@-base/libgomp.html ++ ++Format: info ++Index: /usr/share/info/libgomp-@BV@.info.gz ++Files: /usr/share/info/libgomp-@BV@* diff --cc debian/gcc-BV-doc.doc-base.itm index 0000000,0000000..130a70f new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-doc.doc-base.itm @@@ -1,0 -1,0 +1,16 @@@ ++Document: gcc-@BV@-itm ++Title: The GNU Transactional Memory Library (for GCC @BV@) ++Author: Various ++Abstract: This manual documents the usage and internals of libitm, ++ the GNU Transactional Memory Library. It provides transaction support ++ for accesses to a process' memory, enabling easy-to-use synchronization ++ of accesses to shared memory by several threads. ++Section: Programming ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/libitm.html ++Files: /usr/share/doc/gcc-@BV@-base/libitm.html ++ ++Format: info ++Index: /usr/share/info/libitm-@BV@.info.gz ++Files: /usr/share/info/libitm-@BV@* diff --cc debian/gcc-BV-doc.doc-base.qmath index 0000000,0000000..bdc2d4c new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-doc.doc-base.qmath @@@ -1,0 -1,0 +1,14 @@@ ++Document: gcc-@BV@-qmath ++Title: The GCC Quad-Precision Math Library (for GCC @BV@) ++Author: Various ++Abstract: This manual documents the usage of libquadmath, the GCC ++ Quad-Precision Math Library Application Programming Interface (API). ++Section: Programming ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/libquadmath.html ++Files: /usr/share/doc/gcc-@BV@-base/libquadmath.html ++ ++Format: info ++Index: /usr/share/info/libquadmath-@BV@.info.gz ++Files: /usr/share/info/libquadmath-@BV@* diff --cc debian/gcc-BV-hppa64-linux-gnu.overrides index 0000000,0000000..9f7ebd0 new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-hppa64-linux-gnu.overrides @@@ -1,0 -1,0 +1,3 @@@ ++gcc-@BV@-hppa64-linux-gnu binary: binary-from-other-architecture ++gcc-@BV@-hppa64-linux-gnu binary: binary-without-manpage ++gcc-@BV@-hppa64-linux-gnu binary: hardening-no-pie diff --cc debian/gcc-BV-multilib.overrides index 0000000,0000000..545ca0e new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-multilib.overrides @@@ -1,0 -1,0 +1,1 @@@ ++gcc-@BV@-multilib binary: binary-from-other-architecture diff --cc debian/gcc-BV-source.overrides index 0000000,0000000..46e8559 new file mode 100644 --- /dev/null +++ b/debian/gcc-BV-source.overrides @@@ -1,0 -1,0 +1,5 @@@ ++gcc-@BV@-source: changelog-file-not-compressed ++ ++# these are patches taken over unmodified from 4.3 ++gcc-@BV@-source: script-not-executable ++gcc-@BV@-source: shell-script-fails-syntax-check diff --cc debian/gcc-XX-BV.1 index 0000000,0000000..f02b309 new file mode 100644 --- /dev/null +++ b/debian/gcc-XX-BV.1 @@@ -1,0 -1,0 +1,21 @@@ ++.TH GCC-@TOOL@-@BV@ 1 "May 8, 2012" gcc-@TOOL@-@BV@ "" ++.SH NAME ++gcc-@TOOL@ \- a wrapper around @TOOL@ adding the \-\-plugin option ++ ++.SH SYNOPSIS ++gcc-@TOOL@ [\fB\s-1OPTION\s0\fR] ... [\fI\s-1ARGS\s0\fR...] ++ ++.SH DESCRIPTION ++ ++\fBgcc-@TOOL@\fR is a wrapper around ++.BR @TOOL@ (1) ++adding the appropriate ++\fB\-\-plugin\fR option for the GCC @BV@ compiler. ++ ++.SH OPTIONS ++See ++.BR @TOOL@ (1) ++for a list of options that nm understands. ++ ++.SH "SEE ALSO" ++.BR @TOOL@ (1) diff --cc debian/gcc-dummy.texi index 0000000,0000000..b84b670 new file mode 100644 --- /dev/null +++ b/debian/gcc-dummy.texi @@@ -1,0 -1,0 +1,41 @@@ ++\input texinfo @c -*-texinfo-*- ++@c %**start of header ++ ++@settitle The GNU Compiler Collection (GCC) ++ ++@c Create a separate index for command line options. ++@defcodeindex op ++@c Merge the standard indexes into a single one. ++@syncodeindex fn cp ++@syncodeindex vr cp ++@syncodeindex ky cp ++@syncodeindex pg cp ++@syncodeindex tp cp ++ ++@paragraphindent 1 ++ ++@c %**end of header ++ ++@copying ++The current documentation is licensed under the same terms as the Debian packaging. ++@end copying ++@ifnottex ++@dircategory Programming ++@direntry ++* @name@: (@name@). The GNU Compiler Collection (@name@). ++@end direntry ++@sp 1 ++@end ifnottex ++ ++@summarycontents ++@contents ++@page ++ ++@node Top ++@top Introduction ++@cindex introduction ++The official GNU compilers' documentation is released under the terms ++of the GNU Free Documentation License with cover texts. This has been ++considered non free by the Debian Project. Thus you will find it in the ++non-free section of the Debian archive. ++@bye diff --cc debian/gcc-snapshot.overrides index 0000000,0000000..124c256 new file mode 100644 --- /dev/null +++ b/debian/gcc-snapshot.overrides @@@ -1,0 -1,0 +1,17 @@@ ++gcc-snapshot binary: bad-permissions-for-ali-file ++gcc-snapshot binary: non-standard-file-perm ++ ++# libphobos non-multilib builds ++gcc-snapshot binary: embedded-library ++ ++gcc-snapshot binary: binary-from-other-architecture ++gcc-snapshot binary: extra-license-file ++gcc-snapshot binary: triplet-dir-and-architecture-mismatch ++gcc-snapshot binary: unstripped-binary-or-object ++gcc-snapshot binary: missing-prerequisite-for-gfortran-module ++ ++# intended ++gcc-snapshot binary: hardening-no-pie ++ ++# nvptx offload, silly lintian ++gcc-snapshot binary: no-code-sections diff --cc debian/gcc-snapshot.prerm index 0000000,0000000..000148c new file mode 100644 --- /dev/null +++ b/debian/gcc-snapshot.prerm @@@ -1,0 -1,0 +1,6 @@@ ++#! /bin/sh -e ++ ++find /usr/lib/gcc-snapshot/share/gcc/python -name '*.py[co]' | xargs -r rm -f ++find /usr/lib/gcc-snapshot/share/gcc/python -name __pycache__ -type d | xargs -r rm -rf ++ ++#DEBHELPER# diff --cc debian/gcc.css index 0000000,0000000..e32c4b9 new file mode 100644 --- /dev/null +++ b/debian/gcc.css @@@ -1,0 -1,0 +1,154 @@@ ++/* CSS for the GCC web site. ++ ++ Gerald Pfeifer ++ */ ++ ++body { background-color: white; color: black; } ++ ++a:link { color: #0066bb; text-decoration: none; } ++a:visited { color: #003399; text-decoration: none; } ++a:hover { color: darkorange; text-decoration: none; } ++ ++h1 { color: darkslategray; text-align:center; } ++h2 { color: darkslategray; } ++ ++.highlight{ color: darkslategray; font-weight:bold; } ++.smaller { font-size: 80%; } ++ ++.left { text-align:left; } ++.right { text-align:right; } ++.center { text-align:center; margin-left:auto; margin-right:auto; } ++.top { vertical-align:top; } ++.middle { vertical-align:middle; } ++ ++.width33 { width:33%; } ++.border0 { border-width:0; } ++ ++.no-margin-top { margin-top:0; } ++.twocolumns { column-count:2; } ++.imgleft { margin: 5px 20px; float: left; } ++ ++img.right { float: right; } ++ ++td.news { width: 50%; padding-right: 8px; vertical-align: top; } ++td.news h2 { font-size: 1.2em; margin-top: 0; margin-bottom: 2%; } ++td.news dl { margin-top:0; } ++td.news dt { color:darkslategrey; font-weight:bold; margin-top:0.3em; } ++td.news dd { margin-left:3ex; margin-top:0.1em; margin-bottom:0.1em; } ++td.news .date { color:darkslategrey; font-size:90%; margin-left:0.1ex; } ++ ++td.status { width: 50%; padding-left: 12px; vertical-align: top; ++ border-left: #3366cc thin solid; } ++td.status h2 { font-size: 1.2em; margin-top:0; margin-bottom: 1%; } ++td.status dl { margin-top:0; } ++td.status .version { font-weight:bold; } ++td.status .regress { font-size: 80%; } ++td.status dd { margin-left:3ex; } ++ ++table.nav { ++ padding-left: 32px; ++ border-spacing: 0pt; ++} ++ ++table.nav td { ++ border-width: 0; ++} ++ ++table.navitem { ++ width: 100%; ++ border-spacing: 0pt; ++} ++ ++table.navitem tr:nth-child(1) { ++ border-color: #3366cc; ++ border-style: solid; ++ border-width: thin; ++ color: #f2f2f9; ++ background-color: #0066dd; ++ font-weight: bold; ++} ++table.navitem tr:nth-child(2) { ++ padding-top: 3px; ++ padding-left: 8px; ++ padding-bottom: 3px; ++ background-color: #f2f2f9; ++ font-size: smaller; ++} ++ ++div.copyright { ++ clear: both; ++ font-size: smaller; ++ background: #f2f2f9; ++ border: 2px solid #3366cc; ++ border-style: solid; ++ border-width: thin; ++ padding: 4px; ++} ++div.copyright p:nth-child(3) { margin-bottom: 0; } ++ ++.bold { font-weight:bold; } ++.boldcyan { font-weight:bold; color:cyan; } ++.boldlime { font-weight:bold; color:lime; } ++.boldmagenta { font-weight:bold; color:magenta; } ++.boldred { font-weight:bold; color:red; } ++.boldgreen { font-weight:bold; color:green; } ++.boldblue { font-weight:bold; color:blue; } ++.red { color:red; } ++.green { color:green; } ++.blue { color:blue; } ++.blackbg { color:white; background-color: #000000; } ++ ++/* Inline markup for differences. */ ++ins { background-color: lightgreen } ++del { background-color: pink } ++ ++/* Quote an e-mail. The first
has the sender, the second the quote. */ ++blockquote.mail div:nth-child(2) { border-left: solid blue; padding-left: 4pt; } ++ ++/* This comes close to , alas a bit less bordersome. */ ++table.border th { border:2px solid; } ++ ++/* C++ status tables. */ ++table.cxxstatus th, table.cxxstatus td { border: 1px solid gray; } ++table.cxxstatus td:nth-child(3) { text-align:center; } ++table.cxxstatus tr.separator { background: #f2f2f9; } ++ ++/* C++ Defect Report table. */ ++table.cxxdrstatus th, table.cxxdrstatus td { border: 1px solid gray; } ++table.cxxdrstatus td:nth-child(4) { text-align:center; } ++table.cxxdrstatus tr.separator { background: #f2f2f9; } ++table.cxxdrstatus { width: 65%; } ++ ++/* OpenMP status tables. */ ++table.ompstatus thead th, table.cxxstatus thead td { border: 1px solid gray; } ++table.ompstatus tbody td:nth-child(2) { text-align:center; } ++table.ompstatus thead tr { background: #f2f2f9; } ++ ++/* Padded tables. */ ++table.padding5 th, td { border: 1px solid gray; padding:5px; } ++ ++.supported { background-color: lightgreen; } ++.unsupported { background-color: lightsalmon; } ++.other { background-color: lightgray; } ++.partial { background-color: lightyellow; } ++.open { color: #AAAAAA; } ++ ++/* Online documentation. */ ++ ++pre.smallexample { ++ font-size: medium; ++ background: #f2f2f9; ++ padding: 4px; ++ display: inline-block; ++} ++ ++/* Classpath versus libgcj merge status page. */ ++ ++.classpath-only { background-color: #FFFFAA; } ++.libgcj-only { background-color: #FFFFAA; } ++.VM-specific { background-color: #CCCCFF; } ++.GCJ-specific { background-color: #CCCCFF; } ++.needsmerge { background-color: #FF9090; } ++.merged { background-color: #22FF22; } ++.merged-expected-diff { background-color: #22FF22; } ++.merged-unexpected-diff { background-color: #FF4444; } diff --cc debian/gccgo-BV-doc.doc-base index 0000000,0000000..86ce258 new file mode 100644 --- /dev/null +++ b/debian/gccgo-BV-doc.doc-base @@@ -1,0 -1,0 +1,17 @@@ ++Document: gccgo-@BV@ ++Title: The GNU Go compiler (version @BV@) ++Author: Various ++Abstract: This manual describes how to use gccgo, the GNU compiler for ++ the Go programming language. This manual is specifically about ++ gccgo. For more information about the Go programming ++ language in general, including language specifications and standard ++ package documentation, see http://golang.org/. ++Section: Programming ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/gccgo.html ++Files: /usr/share/doc/gcc-@BV@-base/gccgo.html ++ ++Format: info ++Index: /usr/share/info/gccgo-@BV@.info.gz ++Files: /usr/share/info/gccgo-@BV@* diff --cc debian/gen-libstdc-breaks.sh index 0000000,0000000..de35a4a new file mode 100755 --- /dev/null +++ b/debian/gen-libstdc-breaks.sh @@@ -1,0 -1,0 +1,178 @@@ ++#! /bin/sh ++ ++# https://bugs.debian.org/cgi-bin/pkgreport.cgi?tag=gcc-pr66145;users=debian-gcc@lists.debian.org ++ ++vendor=Debian ++if dpkg-vendor --derives-from Ubuntu; then ++ vendor=Ubuntu ++fi ++ ++if [ "$vendor" = Debian ]; then ++ : ++ pkgs=$(echo ' ++antlr ++libaqsis1 ++libassimp3 ++blockattack ++boo ++libboost-date-time1.54.0 ++libboost-date-time1.55.0 ++libcpprest2.4 ++printer-driver-brlaser ++c++-annotations ++clustalx ++libdavix0 ++libdballe6 ++dff ++libdiet-sed2.8 ++libdiet-client2.8 ++libdiet-admin2.8 ++digikam-private-libs ++emscripten ++ergo ++fceux ++flush ++libfreefem++ ++freeorion ++fslview ++fwbuilder ++libgazebo5 ++libgetfem4++ ++libgmsh2 ++gnote ++gnudatalanguage ++python-healpy ++innoextract ++libinsighttoolkit4.7 ++libdap17 ++libdapclient6 ++libdapserver7 ++libkolabxml1 ++libpqxx-4.0 ++libreoffice-core ++librime1 ++libwibble-dev ++lightspark ++libmarisa0 ++mira-assembler ++mongodb ++mongodb-server ++ncbi-blast+ ++libogre-1.8.0 ++libogre-1.9.0 ++openscad ++libopenwalnut1 ++passepartout ++pdf2djvu ++photoprint ++plastimatch ++plee-the-bear ++povray ++powertop ++psi4 ++python3-taglib ++realtimebattle ++ruby-passenger ++libapache2-mod-passenger ++schroot ++sqlitebrowser ++tecnoballz ++wesnoth-1.12-core ++widelands ++libwreport2 ++xflr5 ++libxmltooling6') ++else ++ pkgs=$(echo ' ++antlr ++libaqsis1 ++libassimp3 ++blockattack ++boo ++libboost-date-time1.55.0 ++libcpprest2.2 ++printer-driver-brlaser ++c++-annotations ++chromium-browser ++clustalx ++libdavix0 ++libdballe6 ++dff ++libdiet-sed2.8 ++libdiet-client2.8 ++libdiet-admin2.8 ++libkgeomap2 ++libmediawiki1 ++libkvkontakte1 ++emscripten ++ergo ++fceux ++flush ++libfreefem++ ++freeorion ++fslview ++fwbuilder ++libgazebo5 ++libgetfem4++ ++libgmsh2 ++gnote ++gnudatalanguage ++python-healpy ++innoextract ++libinsighttoolkit4.6 ++libdap17 ++libdapclient6 ++libdapserver7 ++libkolabxml1 ++libpqxx-4.0 ++libreoffice-core ++librime1 ++libwibble-dev ++lightspark ++libmarisa0 ++mira-assembler ++mongodb ++mongodb-server ++ncbi-blast+ ++libogre-1.8.0 ++libogre-1.9.0 ++openscad ++libopenwalnut1 ++passepartout ++pdf2djvu ++photoprint ++plastimatch ++plee-the-bear ++povray ++powertop ++psi4 ++python3-taglib ++realtimebattle ++ruby-passenger ++libapache2-mod-passenger ++sqlitebrowser ++tecnoballz ++wesnoth-1.12-core ++widelands ++libwreport2 ++xflr5 ++libxmltooling6') ++fi ++ ++fn=debian/libstdc++-breaks.$vendor ++rm -f $fn ++echo $pkgs ++for p in $pkgs; do ++ #echo $p ++ if ! apt-cache show --no-all-versions $p >/dev/null; then ++ echo "not found: $p" ++ fi ++ v=$(apt-cache show --no-all-versions $p | awk '/^Version/ {print $2}') ++ case "$p" in ++ libboost-date-time*) ++ echo "$p," >> $fn ++ ;; ++ *) ++ echo "$p (<= $v)," >> $fn ++ esac ++done diff --cc debian/gfortran-BV-CRB.preinst.in index 0000000,0000000..f6e7cfd new file mode 100644 --- /dev/null +++ b/debian/gfortran-BV-CRB.preinst.in @@@ -1,0 -1,0 +1,11 @@@ ++#!/bin/sh ++ ++set -e ++ ++if [ "$1" = "upgrade" ] || [ "$1" = "configure" ]; then ++ update-alternatives --quiet --remove @TARGET@-gfortran /usr/bin/@TARGET@-gfortran-@BV@ ++fi ++ ++#DEBHELPER# ++ ++exit 0 diff --cc debian/gfortran-BV-doc.doc-base index 0000000,0000000..485d458 new file mode 100644 --- /dev/null +++ b/debian/gfortran-BV-doc.doc-base @@@ -1,0 -1,0 +1,14 @@@ ++Document: gfortran-@BV@ ++Title: The GNU Fortran Compiler ++Author: Various ++Abstract: This manual documents how to run, install and port `gfortran', ++ as well as its new features and incompatibilities, and how to report bugs. ++Section: Programming/Fortran ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html ++Files: /usr/share/doc/gcc-@BV@-base/fortran/gfortran.html ++ ++Format: info ++Index: /usr/share/info/gfortran-@BV@.info.gz ++Files: /usr/share/info/gfortran-@BV@* diff --cc debian/gm2-BV-doc.doc-base index 0000000,0000000..63315b5 new file mode 100644 --- /dev/null +++ b/debian/gm2-BV-doc.doc-base @@@ -1,0 -1,0 +1,14 @@@ ++Document: gm2-@BV@ ++Title: The GNU Modula-2 Compiler ++Author: Various ++Abstract: This manual documents how to run, install and port `gm2', ++ as well as its new features and incompatibilities, and how to report bugs. ++Section: Programming/Modula-2 ++ ++Format: html ++Index: /usr/share/doc/gcc-@BV@-base/m2/gm2-@BV@.html ++Files: /usr/share/doc/gcc-@BV@-base/m2/gm2-@BV@.html ++ ++Format: info ++Index: /usr/share/info/gm2-@BV@.info.gz ++Files: /usr/share/info/gm2-@BV@* diff --cc debian/gnat-BV-doc.doc-base.rm index 0000000,0000000..7957275 new file mode 100644 --- /dev/null +++ b/debian/gnat-BV-doc.doc-base.rm @@@ -1,0 -1,0 +1,16 @@@ ++Document: gnat-rm-@BV@ ++Title: GNAT (GNU Ada) Reference Manual ++Author: Various ++Abstract: This manual contains useful information in writing programs ++ using the GNAT compiler. It includes information on implementation ++ dependent characteristics of GNAT, including all the information ++ required by Annex M of the standard. ++Section: Programming/Ada ++ ++Format: html ++Index: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html ++Files: /usr/share/doc/gnat-@BV@-doc/gnat_rm.html ++ ++Format: info ++Index: /usr/share/info/gnat_rm-@BV@.info.gz ++Files: /usr/share/info/gnat_rm-@BV@* diff --cc debian/gnat-BV-doc.doc-base.style index 0000000,0000000..db6dfc8 new file mode 100644 --- /dev/null +++ b/debian/gnat-BV-doc.doc-base.style @@@ -1,0 -1,0 +1,16 @@@ ++Document: gnat-style-@BV@ ++Title: GNAT Coding Style ++Author: Various ++Abstract: Most of GNAT is written in Ada using a consistent style to ++ ensure readability of the code. This document has been written to ++ help maintain this consistent style, while having a large group of ++ developers work on the compiler. ++Section: Programming/Ada ++ ++Format: html ++Index: /usr/share/doc/gnat-@BV@-doc/gnat-style.html ++Files: /usr/share/doc/gnat-@BV@-doc/gnat-style.html ++ ++Format: info ++Index: /usr/share/info/gnat-style-@BV@.info.gz ++Files: /usr/share/info/gnat-style-@BV@* diff --cc debian/gnat-BV-doc.doc-base.ug index 0000000,0000000..00dedf1 new file mode 100644 --- /dev/null +++ b/debian/gnat-BV-doc.doc-base.ug @@@ -1,0 -1,0 +1,16 @@@ ++Document: gnat-ugn-@BV@ ++Title: GNAT User's Guide for Unix Platforms ++Author: Various ++Abstract: This guide describes the use of GNAT, a compiler and ++ software development toolset for the full Ada 95 programming language. ++ It describes the features of the compiler and tools, and details how ++ to use them to build Ada 95 applications. ++Section: Programming/Ada ++ ++Format: html ++Index: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html ++Files: /usr/share/doc/gnat-@BV@-doc/gnat_ugn.html ++ ++Format: info ++Index: /usr/share/info/gnat_ugn-@BV@.info.gz ++Files: /usr/share/info/gnat_ugn-@BV@* diff --cc debian/gnat.1 index 0000000,0000000..33a42c7 new file mode 100644 --- /dev/null +++ b/debian/gnat.1 @@@ -1,0 -1,0 +1,43 @@@ ++.\" Hey, Emacs! This is an -*- nroff -*- source file. ++.\" ++.\" Copyright (C) 1996 Erick Branderhorst ++.\" Copyright (C) 2011 Nicolas Boulenguez ++.\" ++.\" This is free software; you can redistribute it and/or modify it under ++.\" the terms of the GNU General Public License as published by the Free ++.\" Software Foundation; either version 2, or (at your option) any later ++.\" version. ++.\" ++.\" This is distributed in the hope that it will be useful, but WITHOUT ++.\" ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or ++.\" FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License ++.\" for more details. ++.\" ++.\" You should have received a copy of the GNU General Public License with ++.\" your Debian GNU/Linux system, in /usr/doc/copyright/GPL, or with the ++.\" dpkg source package as the file COPYING. If not, write to the Free ++.\" Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. ++.\" ++.\" ++.TH "GNAT TOOLBOX" 1 "Jun 2002" "Debian Project" "Debian Linux" ++.SH NAME ++gnat, gnatbind, gnatbl, gnatchop, gnatfind, gnathtml, gnatkr, gnatlink, ++gnatls, gnatmake, gnatprep, gnatpsta, gnatpsys, gnatxref \- ++GNAT toolbox ++.SH DESCRIPTION ++Those programs are part of GNU GNAT, a freely available Ada 95 compiler. ++.PP ++For accessing the full GNAT manuals, use ++.B info gnat-ug-4.8 ++and ++.B info gnat-rm-4.8 ++for the sections related to the reference manual. ++If those sections cannot be found, you will have to install the ++gnat-4.4-doc package as well (since these manuals contain invariant parts, ++the package is located in the non-free part of the Debian archive). ++You may also browse ++.B http://gcc.gnu.org/onlinedocs ++which provides the GCC online documentation. ++.SH AUTHOR ++This manpage has been written by Samuel Tardieu , for the ++Debian GNU/Linux project. diff --cc debian/lib32asan8.symbols index 0000000,0000000..62205b2 new file mode 100644 --- /dev/null +++ b/debian/lib32asan8.symbols @@@ -1,0 -1,0 +1,2099 @@@ ++# SymbolsHelper-Confirmed: 15 amd64 ppc64 s390x sparc64 x32 ++libasan.so.8 lib32asan8 #MINVER# ++ _Unwind_RaiseException@Base 15 ++ _ZdaPv@Base 15 ++ _ZdaPvRKSt9nothrow_t@Base 15 ++ _ZdaPvSt11align_val_t@Base 15 ++ _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 ++ _ZdaPvj@Base 15 ++ _ZdaPvjSt11align_val_t@Base 15 ++ _ZdlPv@Base 15 ++ _ZdlPvRKSt9nothrow_t@Base 15 ++ _ZdlPvSt11align_val_t@Base 15 ++ _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 ++ _ZdlPvj@Base 15 ++ _ZdlPvjSt11align_val_t@Base 15 ++ _Znaj@Base 15 ++ _ZnajRKSt9nothrow_t@Base 15 ++ _ZnajSt11align_val_t@Base 15 ++ _ZnajSt11align_val_tRKSt9nothrow_t@Base 15 ++ _Znwj@Base 15 ++ _ZnwjRKSt9nothrow_t@Base 15 ++ _ZnwjSt11align_val_t@Base 15 ++ _ZnwjSt11align_val_tRKSt9nothrow_t@Base 15 ++ __asan_addr_is_in_fake_stack@Base 15 ++ __asan_address_is_poisoned@Base 15 ++ __asan_after_dynamic_init@Base 15 ++ __asan_alloca_poison@Base 15 ++ __asan_allocas_unpoison@Base 15 ++ __asan_backtrace_alloc@Base 15 ++ __asan_backtrace_close@Base 15 ++ __asan_backtrace_create_state@Base 15 ++ __asan_backtrace_dwarf_add@Base 15 ++ __asan_backtrace_free@Base 15 ++ __asan_backtrace_get_view@Base 15 ++ __asan_backtrace_initialize@Base 15 ++ __asan_backtrace_open@Base 15 ++ __asan_backtrace_pcinfo@Base 15 ++ __asan_backtrace_qsort@Base 15 ++ __asan_backtrace_release_view@Base 15 ++ __asan_backtrace_syminfo@Base 15 ++ __asan_backtrace_syminfo_to_full_callback@Base 15 ++ __asan_backtrace_syminfo_to_full_error_callback@Base 15 ++ __asan_backtrace_uncompress_lzma@Base 15 ++ __asan_backtrace_uncompress_zdebug@Base 15 ++ __asan_backtrace_uncompress_zstd@Base 15 ++ __asan_backtrace_vector_finish@Base 15 ++ __asan_backtrace_vector_grow@Base 15 ++ __asan_backtrace_vector_release@Base 15 ++ __asan_before_dynamic_init@Base 15 ++ __asan_cplus_demangle_builtin_types@Base 15 ++ __asan_cplus_demangle_fill_ctor@Base 15 ++ __asan_cplus_demangle_fill_dtor@Base 15 ++ __asan_cplus_demangle_fill_extended_operator@Base 15 ++ __asan_cplus_demangle_fill_name@Base 15 ++ __asan_cplus_demangle_init_info@Base 15 ++ __asan_cplus_demangle_mangled_name@Base 15 ++ __asan_cplus_demangle_operators@Base 15 ++ __asan_cplus_demangle_print@Base 15 ++ __asan_cplus_demangle_print_callback@Base 15 ++ __asan_cplus_demangle_type@Base 15 ++ __asan_cplus_demangle_v3@Base 15 ++ __asan_cplus_demangle_v3_callback@Base 15 ++ __asan_default_options@Base 15 ++ __asan_default_suppressions@Base 15 ++ __asan_describe_address@Base 15 ++ __asan_exp_load16@Base 15 ++ __asan_exp_load1@Base 15 ++ __asan_exp_load2@Base 15 ++ __asan_exp_load4@Base 15 ++ __asan_exp_load8@Base 15 ++ __asan_exp_loadN@Base 15 ++ __asan_exp_store16@Base 15 ++ __asan_exp_store1@Base 15 ++ __asan_exp_store2@Base 15 ++ __asan_exp_store4@Base 15 ++ __asan_exp_store8@Base 15 ++ __asan_exp_storeN@Base 15 ++ __asan_get_alloc_stack@Base 15 ++ __asan_get_current_fake_stack@Base 15 ++ __asan_get_free_stack@Base 15 ++ __asan_get_report_access_size@Base 15 ++ __asan_get_report_access_type@Base 15 ++ __asan_get_report_address@Base 15 ++ __asan_get_report_bp@Base 15 ++ __asan_get_report_description@Base 15 ++ __asan_get_report_pc@Base 15 ++ __asan_get_report_sp@Base 15 ++ __asan_get_shadow_mapping@Base 15 ++ __asan_handle_no_return@Base 15 ++ __asan_handle_vfork@Base 15 ++ __asan_init@Base 15 ++ __asan_internal_memcmp@Base 15 ++ __asan_internal_memcpy@Base 15 ++ __asan_internal_memset@Base 15 ++ __asan_internal_strcmp@Base 15 ++ __asan_internal_strlen@Base 15 ++ __asan_internal_strncmp@Base 15 ++ __asan_internal_strnlen@Base 15 ++ __asan_is_gnu_v3_mangled_ctor@Base 15 ++ __asan_is_gnu_v3_mangled_dtor@Base 15 ++ __asan_java_demangle_v3@Base 15 ++ __asan_java_demangle_v3_callback@Base 15 ++ __asan_load16@Base 15 ++ __asan_load16_noabort@Base 15 ++ __asan_load1@Base 15 ++ __asan_load1_noabort@Base 15 ++ __asan_load2@Base 15 ++ __asan_load2_noabort@Base 15 ++ __asan_load4@Base 15 ++ __asan_load4_noabort@Base 15 ++ __asan_load8@Base 15 ++ __asan_load8_noabort@Base 15 ++ __asan_loadN@Base 15 ++ __asan_loadN_noabort@Base 15 ++ __asan_load_cxx_array_cookie@Base 15 ++ __asan_locate_address@Base 15 ++ __asan_memcpy@Base 15 ++ __asan_memmove@Base 15 ++ __asan_memset@Base 15 ++ __asan_on_error@Base 15 ++ __asan_option_detect_stack_use_after_return@Base 15 ++ __asan_poison_cxx_array_cookie@Base 15 ++ __asan_poison_intra_object_redzone@Base 15 ++ __asan_poison_memory_region@Base 15 ++ __asan_poison_stack_memory@Base 15 ++ __asan_print_accumulated_stats@Base 15 ++ __asan_region_is_poisoned@Base 15 ++ __asan_register_elf_globals@Base 15 ++ __asan_register_globals@Base 15 ++ __asan_register_image_globals@Base 15 ++ __asan_report_error@Base 15 ++ __asan_report_exp_load16@Base 15 ++ __asan_report_exp_load1@Base 15 ++ __asan_report_exp_load2@Base 15 ++ __asan_report_exp_load4@Base 15 ++ __asan_report_exp_load8@Base 15 ++ __asan_report_exp_load_n@Base 15 ++ __asan_report_exp_store16@Base 15 ++ __asan_report_exp_store1@Base 15 ++ __asan_report_exp_store2@Base 15 ++ __asan_report_exp_store4@Base 15 ++ __asan_report_exp_store8@Base 15 ++ __asan_report_exp_store_n@Base 15 ++ __asan_report_load16@Base 15 ++ __asan_report_load16_noabort@Base 15 ++ __asan_report_load1@Base 15 ++ __asan_report_load1_noabort@Base 15 ++ __asan_report_load2@Base 15 ++ __asan_report_load2_noabort@Base 15 ++ __asan_report_load4@Base 15 ++ __asan_report_load4_noabort@Base 15 ++ __asan_report_load8@Base 15 ++ __asan_report_load8_noabort@Base 15 ++ __asan_report_load_n@Base 15 ++ __asan_report_load_n_noabort@Base 15 ++ __asan_report_present@Base 15 ++ __asan_report_store16@Base 15 ++ __asan_report_store16_noabort@Base 15 ++ __asan_report_store1@Base 15 ++ __asan_report_store1_noabort@Base 15 ++ __asan_report_store2@Base 15 ++ __asan_report_store2_noabort@Base 15 ++ __asan_report_store4@Base 15 ++ __asan_report_store4_noabort@Base 15 ++ __asan_report_store8@Base 15 ++ __asan_report_store8_noabort@Base 15 ++ __asan_report_store_n@Base 15 ++ __asan_report_store_n_noabort@Base 15 ++ __asan_rt_version@Base 15 ++ __asan_set_death_callback@Base 15 ++ __asan_set_error_report_callback@Base 15 ++ __asan_set_shadow_00@Base 15 ++ __asan_set_shadow_01@Base 15 ++ __asan_set_shadow_02@Base 15 ++ __asan_set_shadow_03@Base 15 ++ __asan_set_shadow_04@Base 15 ++ __asan_set_shadow_05@Base 15 ++ __asan_set_shadow_06@Base 15 ++ __asan_set_shadow_07@Base 15 ++ __asan_set_shadow_f1@Base 15 ++ __asan_set_shadow_f2@Base 15 ++ __asan_set_shadow_f3@Base 15 ++ __asan_set_shadow_f5@Base 15 ++ __asan_set_shadow_f8@Base 15 ++ __asan_shadow_memory_dynamic_address@Base 15 ++ __asan_stack_free_0@Base 15 ++ __asan_stack_free_10@Base 15 ++ __asan_stack_free_1@Base 15 ++ __asan_stack_free_2@Base 15 ++ __asan_stack_free_3@Base 15 ++ __asan_stack_free_4@Base 15 ++ __asan_stack_free_5@Base 15 ++ __asan_stack_free_6@Base 15 ++ __asan_stack_free_7@Base 15 ++ __asan_stack_free_8@Base 15 ++ __asan_stack_free_9@Base 15 ++ __asan_stack_malloc_0@Base 15 ++ __asan_stack_malloc_10@Base 15 ++ __asan_stack_malloc_1@Base 15 ++ __asan_stack_malloc_2@Base 15 ++ __asan_stack_malloc_3@Base 15 ++ __asan_stack_malloc_4@Base 15 ++ __asan_stack_malloc_5@Base 15 ++ __asan_stack_malloc_6@Base 15 ++ __asan_stack_malloc_7@Base 15 ++ __asan_stack_malloc_8@Base 15 ++ __asan_stack_malloc_9@Base 15 ++ __asan_stack_malloc_always_0@Base 15 ++ __asan_stack_malloc_always_10@Base 15 ++ __asan_stack_malloc_always_1@Base 15 ++ __asan_stack_malloc_always_2@Base 15 ++ __asan_stack_malloc_always_3@Base 15 ++ __asan_stack_malloc_always_4@Base 15 ++ __asan_stack_malloc_always_5@Base 15 ++ __asan_stack_malloc_always_6@Base 15 ++ __asan_stack_malloc_always_7@Base 15 ++ __asan_stack_malloc_always_8@Base 15 ++ __asan_stack_malloc_always_9@Base 15 ++ __asan_store16@Base 15 ++ __asan_store16_noabort@Base 15 ++ __asan_store1@Base 15 ++ __asan_store1_noabort@Base 15 ++ __asan_store2@Base 15 ++ __asan_store2_noabort@Base 15 ++ __asan_store4@Base 15 ++ __asan_store4_noabort@Base 15 ++ __asan_store8@Base 15 ++ __asan_store8_noabort@Base 15 ++ __asan_storeN@Base 15 ++ __asan_storeN_noabort@Base 15 ++ __asan_test_only_reported_buggy_pointer@Base 15 ++ __asan_unpoison_intra_object_redzone@Base 15 ++ __asan_unpoison_memory_region@Base 15 ++ __asan_unpoison_stack_memory@Base 15 ++ __asan_unregister_elf_globals@Base 15 ++ __asan_unregister_globals@Base 15 ++ __asan_unregister_image_globals@Base 15 ++ __asan_update_allocation_context@Base 15 ++ __asan_version_mismatch_check_v8@Base 15 ++ __b64_ntop@Base 15 ++ __b64_pton@Base 15 ++ __bzero@Base 15 ++ __cxa_atexit@Base 15 ++ __cxa_throw@Base 15 ++ __fprintf_chk@Base 15 ++ __getdelim@Base 15 ++ __interceptor__Unwind_RaiseException@Base 15 ++ __interceptor___b64_ntop@Base 15 ++ __interceptor___b64_pton@Base 15 ++ __interceptor___bzero@Base 15 ++ __interceptor___cxa_atexit@Base 15 ++ __interceptor___cxa_throw@Base 15 ++ __interceptor___fprintf_chk@Base 15 ++ __interceptor___getdelim@Base 15 ++ (arch=!sparc64)__interceptor___isoc23_fscanf@Base 15 ++ (arch=!sparc64)__interceptor___isoc23_scanf@Base 15 ++ (arch=!sparc64)__interceptor___isoc23_sscanf@Base 15 ++ __interceptor___isoc23_strtoimax@Base 15 ++ __interceptor___isoc23_strtol@Base 15 ++ __interceptor___isoc23_strtoll@Base 15 ++ __interceptor___isoc23_strtoumax@Base 15 ++ (arch=!sparc64)__interceptor___isoc23_vfscanf@Base 15 ++ (arch=!sparc64)__interceptor___isoc23_vscanf@Base 15 ++ (arch=!sparc64)__interceptor___isoc23_vsscanf@Base 15 ++ __interceptor___isoc99_fprintf@Base 15 ++ (arch=!sparc64)__interceptor___isoc99_fscanf@Base 15 ++ __interceptor___isoc99_printf@Base 15 ++ (arch=!sparc64)__interceptor___isoc99_scanf@Base 15 ++ __interceptor___isoc99_snprintf@Base 15 ++ __interceptor___isoc99_sprintf@Base 15 ++ (arch=!sparc64)__interceptor___isoc99_sscanf@Base 15 ++ __interceptor___isoc99_vfprintf@Base 15 ++ (arch=!sparc64)__interceptor___isoc99_vfscanf@Base 15 ++ __interceptor___isoc99_vprintf@Base 15 ++ (arch=!sparc64)__interceptor___isoc99_vscanf@Base 15 ++ __interceptor___isoc99_vsnprintf@Base 15 ++ __interceptor___isoc99_vsprintf@Base 15 ++ (arch=!sparc64)__interceptor___isoc99_vsscanf@Base 15 ++ __interceptor___libc_memalign@Base 15 ++ __interceptor___longjmp_chk@Base 15 ++ __interceptor___lxstat64@Base 15 ++ __interceptor___lxstat@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc23_fscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc23_scanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc23_sscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc23_vfscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc23_vscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc23_vsscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc99_fscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc99_scanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc99_sscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc99_vfscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc99_vscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl___isoc99_vsscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_asprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_fprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_fscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_printf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_scanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_snprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_sprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_sscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_vasprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_vfprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_vfscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_vprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_vscanf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_vsnprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_vsprintf@Base 15 ++ (arch=sparc64)__interceptor___nldbl_vsscanf@Base 15 ++ __interceptor___overflow@Base 15 ++ __interceptor___snprintf_chk@Base 15 ++ __interceptor___sprintf_chk@Base 15 ++ __interceptor___strdup@Base 15 ++ __interceptor___strndup@Base 15 ++ __interceptor___strxfrm_l@Base 15 ++ (arch=!s390x)__interceptor___tls_get_addr@Base 15 ++ (arch=s390x)__interceptor___tls_get_addr_internal@Base 15 ++ (arch=ppc64)__interceptor___tls_get_addr_opt@Base 15 ++ (arch=s390x)__interceptor___tls_get_offset@Base 15 ++ __interceptor___uflow@Base 15 ++ __interceptor___underflow@Base 15 ++ __interceptor___vsnprintf_chk@Base 15 ++ __interceptor___vsprintf_chk@Base 15 ++ __interceptor___wcsxfrm_l@Base 15 ++ __interceptor___woverflow@Base 15 ++ __interceptor___wuflow@Base 15 ++ __interceptor___wunderflow@Base 15 ++ __interceptor___xpg_strerror_r@Base 15 ++ __interceptor___xstat64@Base 15 ++ __interceptor___xstat@Base 15 ++ __interceptor__exit@Base 15 ++ __interceptor__longjmp@Base 15 ++ __interceptor__obstack_begin@Base 15 ++ __interceptor__obstack_begin_1@Base 15 ++ __interceptor__obstack_newchunk@Base 15 ++ __interceptor_accept4@Base 15 ++ __interceptor_accept@Base 15 ++ __interceptor_aligned_alloc@Base 15 ++ __interceptor_argp_parse@Base 15 ++ __interceptor_asctime@Base 15 ++ __interceptor_asctime_r@Base 15 ++ (arch=!sparc64)__interceptor_asprintf@Base 15 ++ __interceptor_atoi@Base 15 ++ __interceptor_atol@Base 15 ++ __interceptor_atoll@Base 15 ++ __interceptor_backtrace@Base 15 ++ __interceptor_backtrace_symbols@Base 15 ++ __interceptor_bcmp@Base 15 ++ __interceptor_bsearch@Base 15 ++ __interceptor_bzero@Base 15 ++ __interceptor_calloc@Base 15 ++ __interceptor_canonicalize_file_name@Base 15 ++ __interceptor_capget@Base 15 ++ __interceptor_capset@Base 15 ++ __interceptor_cfree@Base 15 ++ __interceptor_clock_getcpuclockid@Base 15 ++ __interceptor_clock_getres@Base 15 ++ __interceptor_clock_gettime@Base 15 ++ __interceptor_clock_settime@Base 15 ++ __interceptor_confstr@Base 15 ++ __interceptor_ctermid@Base 15 ++ __interceptor_ctime@Base 15 ++ __interceptor_ctime_r@Base 15 ++ __interceptor_dlclose@Base 15 ++ __interceptor_dlopen@Base 15 ++ __interceptor_dn_comp@Base 15 ++ __interceptor_dn_expand@Base 15 ++ __interceptor_drand48_r@Base 15 ++ __interceptor_endgrent@Base 15 ++ __interceptor_endpwent@Base 15 ++ __interceptor_ether_aton@Base 15 ++ __interceptor_ether_aton_r@Base 15 ++ __interceptor_ether_hostton@Base 15 ++ __interceptor_ether_line@Base 15 ++ __interceptor_ether_ntoa@Base 15 ++ __interceptor_ether_ntoa_r@Base 15 ++ __interceptor_ether_ntohost@Base 15 ++ __interceptor_eventfd_read@Base 15 ++ __interceptor_eventfd_write@Base 15 ++ __interceptor_fclose@Base 15 ++ __interceptor_fdopen@Base 15 ++ __interceptor_fflush@Base 15 ++ __interceptor_fgetgrent@Base 15 ++ __interceptor_fgetgrent_r@Base 15 ++ __interceptor_fgetpwent@Base 15 ++ __interceptor_fgetpwent_r@Base 15 ++ __interceptor_fgets@Base 15 ++ __interceptor_fgetxattr@Base 15 ++ __interceptor_flistxattr@Base 15 ++ __interceptor_fmemopen@Base 15 ++ __interceptor_fopen64@Base 15 ++ __interceptor_fopen@Base 15 ++ __interceptor_fopencookie@Base 15 ++ (arch=!sparc64)__interceptor_fprintf@Base 15 ++ __interceptor_fputs@Base 15 ++ __interceptor_fread@Base 15 ++ __interceptor_free@Base 15 ++ __interceptor_freopen64@Base 15 ++ __interceptor_freopen@Base 15 ++ __interceptor_frexp@Base 15 ++ __interceptor_frexpf@Base 15 ++ __interceptor_frexpl@Base 15 ++ (arch=!sparc64)__interceptor_fscanf@Base 15 ++ __interceptor_fstatfs64@Base 15 ++ __interceptor_fstatfs@Base 15 ++ __interceptor_fstatvfs64@Base 15 ++ __interceptor_fstatvfs@Base 15 ++ __interceptor_ftime@Base 15 ++ __interceptor_fwrite@Base 15 ++ __interceptor_get_current_dir_name@Base 15 ++ __interceptor_getaddrinfo@Base 15 ++ __interceptor_getcwd@Base 15 ++ __interceptor_getdelim@Base 15 ++ __interceptor_getentropy@Base 15 ++ __interceptor_getgrent@Base 15 ++ __interceptor_getgrent_r@Base 15 ++ __interceptor_getgrgid@Base 15 ++ __interceptor_getgrgid_r@Base 15 ++ __interceptor_getgrnam@Base 15 ++ __interceptor_getgrnam_r@Base 15 ++ __interceptor_getgrouplist@Base 15 ++ __interceptor_getgroups@Base 15 ++ __interceptor_gethostbyaddr@Base 15 ++ __interceptor_gethostbyaddr_r@Base 15 ++ __interceptor_gethostbyname2@Base 15 ++ __interceptor_gethostbyname2_r@Base 15 ++ __interceptor_gethostbyname@Base 15 ++ __interceptor_gethostbyname_r@Base 15 ++ __interceptor_gethostent@Base 15 ++ __interceptor_gethostent_r@Base 15 ++ __interceptor_getifaddrs@Base 15 ++ __interceptor_getitimer@Base 15 ++ __interceptor_getline@Base 15 ++ __interceptor_getloadavg@Base 15 ++ __interceptor_getmntent@Base 15 ++ __interceptor_getmntent_r@Base 15 ++ __interceptor_getnameinfo@Base 15 ++ __interceptor_getnetbyaddr@Base 15 ++ __interceptor_getnetbyname@Base 15 ++ __interceptor_getnetent@Base 15 ++ __interceptor_getpass@Base 15 ++ __interceptor_getpeername@Base 15 ++ __interceptor_getprotobyname@Base 15 ++ __interceptor_getprotobyname_r@Base 15 ++ __interceptor_getprotobynumber@Base 15 ++ __interceptor_getprotobynumber_r@Base 15 ++ __interceptor_getprotoent@Base 15 ++ __interceptor_getprotoent_r@Base 15 ++ __interceptor_getpwent@Base 15 ++ __interceptor_getpwent_r@Base 15 ++ __interceptor_getpwnam@Base 15 ++ __interceptor_getpwnam_r@Base 15 ++ __interceptor_getpwuid@Base 15 ++ __interceptor_getpwuid_r@Base 15 ++ __interceptor_getrandom@Base 15 ++ __interceptor_getresgid@Base 15 ++ __interceptor_getresuid@Base 15 ++ __interceptor_getsockname@Base 15 ++ __interceptor_getsockopt@Base 15 ++ __interceptor_getusershell@Base 15 ++ __interceptor_getutent@Base 15 ++ __interceptor_getutid@Base 15 ++ __interceptor_getutline@Base 15 ++ __interceptor_getutxent@Base 15 ++ __interceptor_getutxid@Base 15 ++ __interceptor_getutxline@Base 15 ++ __interceptor_getxattr@Base 15 ++ __interceptor_glob64@Base 15 ++ __interceptor_glob@Base 15 ++ __interceptor_gmtime@Base 15 ++ __interceptor_gmtime_r@Base 15 ++ __interceptor_iconv@Base 15 ++ __interceptor_if_indextoname@Base 15 ++ __interceptor_if_nametoindex@Base 15 ++ __interceptor_index@Base 15 ++ __interceptor_inet_aton@Base 15 ++ __interceptor_inet_ntop@Base 15 ++ __interceptor_inet_pton@Base 15 ++ __interceptor_initgroups@Base 15 ++ __interceptor_ioctl@Base 15 ++ __interceptor_lgamma@Base 15 ++ __interceptor_lgamma_r@Base 15 ++ __interceptor_lgammaf@Base 15 ++ __interceptor_lgammaf_r@Base 15 ++ __interceptor_lgammal@Base 15 ++ __interceptor_lgammal_r@Base 15 ++ __interceptor_lgetxattr@Base 15 ++ __interceptor_listxattr@Base 15 ++ __interceptor_llistxattr@Base 15 ++ __interceptor_localtime@Base 15 ++ __interceptor_localtime_r@Base 15 ++ __interceptor_longjmp@Base 15 ++ __interceptor_lrand48_r@Base 15 ++ __interceptor_lstat64@Base 15 ++ __interceptor_lstat@Base 15 ++ __interceptor_makecontext@Base 15 ++ __interceptor_mallinfo@Base 15 ++ __interceptor_malloc@Base 15 ++ __interceptor_malloc_stats@Base 15 ++ __interceptor_malloc_usable_size@Base 15 ++ __interceptor_mallopt@Base 15 ++ __interceptor_mbsnrtowcs@Base 15 ++ __interceptor_mbsrtowcs@Base 15 ++ __interceptor_mbstowcs@Base 15 ++ __interceptor_mcheck@Base 15 ++ __interceptor_mcheck_pedantic@Base 15 ++ __interceptor_memalign@Base 15 ++ __interceptor_memchr@Base 15 ++ __interceptor_memcmp@Base 15 ++ __interceptor_memcpy@Base 15 ++ __interceptor_memmem@Base 15 ++ __interceptor_memmove@Base 15 ++ __interceptor_memrchr@Base 15 ++ __interceptor_memset@Base 15 ++ __interceptor_mincore@Base 15 ++ __interceptor_mktime@Base 15 ++ __interceptor_mlock@Base 15 ++ __interceptor_mlockall@Base 15 ++ __interceptor_mmap64@Base 15 ++ __interceptor_mmap@Base 15 ++ __interceptor_modf@Base 15 ++ __interceptor_modff@Base 15 ++ __interceptor_modfl@Base 15 ++ __interceptor_mprobe@Base 15 ++ __interceptor_mprotect@Base 15 ++ __interceptor_msgrcv@Base 15 ++ __interceptor_msgsnd@Base 15 ++ __interceptor_munlock@Base 15 ++ __interceptor_munlockall@Base 15 ++ __interceptor_munmap@Base 15 ++ __interceptor_name_to_handle_at@Base 15 ++ __interceptor_open_by_handle_at@Base 15 ++ __interceptor_open_memstream@Base 15 ++ __interceptor_open_wmemstream@Base 15 ++ __interceptor_opendir@Base 15 ++ __interceptor_pclose@Base 15 ++ __interceptor_poll@Base 15 ++ __interceptor_popen@Base 15 ++ __interceptor_posix_memalign@Base 15 ++ __interceptor_posix_spawn@Base 15 ++ __interceptor_posix_spawnp@Base 15 ++ __interceptor_ppoll@Base 15 ++ __interceptor_prctl@Base 15 ++ __interceptor_pread64@Base 15 ++ __interceptor_pread@Base 15 ++ __interceptor_preadv2@Base 15 ++ __interceptor_preadv64@Base 15 ++ __interceptor_preadv@Base 15 ++ (arch=!sparc64)__interceptor_printf@Base 15 ++ __interceptor_process_vm_readv@Base 15 ++ __interceptor_process_vm_writev@Base 15 ++ __interceptor_pthread_attr_getaffinity_np@Base 15 ++ __interceptor_pthread_attr_getdetachstate@Base 15 ++ __interceptor_pthread_attr_getguardsize@Base 15 ++ __interceptor_pthread_attr_getinheritsched@Base 15 ++ __interceptor_pthread_attr_getschedparam@Base 15 ++ __interceptor_pthread_attr_getschedpolicy@Base 15 ++ __interceptor_pthread_attr_getscope@Base 15 ++ __interceptor_pthread_attr_getstack@Base 15 ++ __interceptor_pthread_attr_getstacksize@Base 15 ++ __interceptor_pthread_barrierattr_getpshared@Base 15 ++ __interceptor_pthread_condattr_getclock@Base 15 ++ __interceptor_pthread_condattr_getpshared@Base 15 ++ __interceptor_pthread_create@Base 15 ++ __interceptor_pthread_detach@Base 15 ++ __interceptor_pthread_exit@Base 15 ++ __interceptor_pthread_getaffinity_np@Base 15 ++ __interceptor_pthread_getcpuclockid@Base 15 ++ __interceptor_pthread_getname_np@Base 15 ++ __interceptor_pthread_getschedparam@Base 15 ++ __interceptor_pthread_join@Base 15 ++ __interceptor_pthread_mutexattr_getprioceiling@Base 15 ++ __interceptor_pthread_mutexattr_getprotocol@Base 15 ++ __interceptor_pthread_mutexattr_getpshared@Base 15 ++ __interceptor_pthread_mutexattr_getrobust@Base 15 ++ __interceptor_pthread_mutexattr_getrobust_np@Base 15 ++ __interceptor_pthread_mutexattr_gettype@Base 15 ++ __interceptor_pthread_rwlockattr_getkind_np@Base 15 ++ __interceptor_pthread_rwlockattr_getpshared@Base 15 ++ __interceptor_pthread_setcancelstate@Base 15 ++ __interceptor_pthread_setcanceltype@Base 15 ++ __interceptor_pthread_setname_np@Base 15 ++ __interceptor_pthread_sigmask@Base 15 ++ __interceptor_pthread_timedjoin_np@Base 15 ++ __interceptor_pthread_tryjoin_np@Base 15 ++ (arch=!ppc64)__interceptor_ptrace@Base 15 ++ __interceptor_ptsname@Base 15 ++ __interceptor_ptsname_r@Base 15 ++ __interceptor_puts@Base 15 ++ __interceptor_pututxline@Base 15 ++ __interceptor_pvalloc@Base 15 ++ __interceptor_pwrite64@Base 15 ++ __interceptor_pwrite@Base 15 ++ __interceptor_pwritev2@Base 15 ++ __interceptor_pwritev64@Base 15 ++ __interceptor_pwritev@Base 15 ++ __interceptor_qsort@Base 15 ++ __interceptor_qsort_r@Base 15 ++ __interceptor_rand_r@Base 15 ++ __interceptor_random_r@Base 15 ++ __interceptor_read@Base 15 ++ __interceptor_readdir64@Base 15 ++ __interceptor_readdir64_r@Base 15 ++ __interceptor_readdir@Base 15 ++ __interceptor_readdir_r@Base 15 ++ __interceptor_readlink@Base 15 ++ __interceptor_readlinkat@Base 15 ++ __interceptor_readv@Base 15 ++ __interceptor_realloc@Base 15 ++ __interceptor_reallocarray@Base 15 ++ __interceptor_realpath@Base 15 ++ __interceptor_recv@Base 15 ++ __interceptor_recvfrom@Base 15 ++ __interceptor_recvmmsg@Base 15 ++ __interceptor_recvmsg@Base 15 ++ __interceptor_regcomp@Base 15 ++ __interceptor_regerror@Base 15 ++ __interceptor_regexec@Base 15 ++ __interceptor_regfree@Base 15 ++ __interceptor_remquo@Base 15 ++ __interceptor_remquof@Base 15 ++ __interceptor_remquol@Base 15 ++ __interceptor_scandir64@Base 15 ++ __interceptor_scandir@Base 15 ++ (arch=!sparc64)__interceptor_scanf@Base 15 ++ __interceptor_sched_getaffinity@Base 15 ++ __interceptor_sched_getparam@Base 15 ++ __interceptor_sem_destroy@Base 15 ++ __interceptor_sem_getvalue@Base 15 ++ __interceptor_sem_init@Base 15 ++ __interceptor_sem_open@Base 15 ++ __interceptor_sem_post@Base 15 ++ __interceptor_sem_timedwait@Base 15 ++ __interceptor_sem_trywait@Base 15 ++ __interceptor_sem_unlink@Base 15 ++ __interceptor_sem_wait@Base 15 ++ __interceptor_send@Base 15 ++ __interceptor_sendmmsg@Base 15 ++ __interceptor_sendmsg@Base 15 ++ __interceptor_sendto@Base 15 ++ __interceptor_setbuf@Base 15 ++ __interceptor_setbuffer@Base 15 ++ __interceptor_setgrent@Base 15 ++ __interceptor_setitimer@Base 15 ++ __interceptor_setlinebuf@Base 15 ++ __interceptor_setlocale@Base 15 ++ __interceptor_setpwent@Base 15 ++ __interceptor_setvbuf@Base 15 ++ __interceptor_sigaction@Base 15 ++ __interceptor_sigaltstack@Base 15 ++ __interceptor_sigandset@Base 15 ++ __interceptor_sigemptyset@Base 15 ++ __interceptor_sigfillset@Base 15 ++ __interceptor_siglongjmp@Base 15 ++ __interceptor_signal@Base 15 ++ __interceptor_sigorset@Base 15 ++ __interceptor_sigpending@Base 15 ++ __interceptor_sigprocmask@Base 15 ++ __interceptor_sigtimedwait@Base 15 ++ __interceptor_sigwait@Base 15 ++ __interceptor_sigwaitinfo@Base 15 ++ __interceptor_sincos@Base 15 ++ __interceptor_sincosf@Base 15 ++ __interceptor_sincosl@Base 15 ++ (arch=!sparc64)__interceptor_snprintf@Base 15 ++ (arch=!sparc64)__interceptor_sprintf@Base 15 ++ (arch=!sparc64)__interceptor_sscanf@Base 15 ++ __interceptor_stat64@Base 15 ++ __interceptor_stat@Base 15 ++ __interceptor_statfs64@Base 15 ++ __interceptor_statfs@Base 15 ++ __interceptor_statvfs64@Base 15 ++ __interceptor_statvfs@Base 15 ++ __interceptor_strcasecmp@Base 15 ++ __interceptor_strcasestr@Base 15 ++ __interceptor_strcat@Base 15 ++ __interceptor_strchr@Base 15 ++ __interceptor_strchrnul@Base 15 ++ __interceptor_strcmp@Base 15 ++ __interceptor_strcpy@Base 15 ++ __interceptor_strcspn@Base 15 ++ __interceptor_strdup@Base 15 ++ __interceptor_strerror@Base 15 ++ __interceptor_strerror_r@Base 15 ++ __interceptor_strlen@Base 15 ++ __interceptor_strncasecmp@Base 15 ++ __interceptor_strncat@Base 15 ++ __interceptor_strncmp@Base 15 ++ __interceptor_strncpy@Base 15 ++ __interceptor_strndup@Base 15 ++ __interceptor_strnlen@Base 15 ++ __interceptor_strpbrk@Base 15 ++ __interceptor_strptime@Base 15 ++ __interceptor_strrchr@Base 15 ++ __interceptor_strspn@Base 15 ++ __interceptor_strstr@Base 15 ++ __interceptor_strtoimax@Base 15 ++ __interceptor_strtok@Base 15 ++ __interceptor_strtol@Base 15 ++ __interceptor_strtoll@Base 15 ++ __interceptor_strtoumax@Base 15 ++ __interceptor_strxfrm@Base 15 ++ __interceptor_strxfrm_l@Base 15 ++ __interceptor_swapcontext@Base 15 ++ __interceptor_sysinfo@Base 15 ++ __interceptor_tcgetattr@Base 15 ++ __interceptor_tempnam@Base 15 ++ __interceptor_textdomain@Base 15 ++ __interceptor_time@Base 15 ++ __interceptor_timerfd_gettime@Base 15 ++ __interceptor_timerfd_settime@Base 15 ++ __interceptor_times@Base 15 ++ __interceptor_tmpnam@Base 15 ++ __interceptor_tmpnam_r@Base 15 ++ __interceptor_tsearch@Base 15 ++ __interceptor_ttyname@Base 15 ++ __interceptor_ttyname_r@Base 15 ++ __interceptor_uname@Base 15 ++ __interceptor_valloc@Base 15 ++ (arch=!sparc64)__interceptor_vasprintf@Base 15 ++ (arch=amd64 x32)__interceptor_vfork@Base 15 ++ (arch=!sparc64)__interceptor_vfprintf@Base 15 ++ (arch=!sparc64)__interceptor_vfscanf@Base 15 ++ (arch=!sparc64)__interceptor_vprintf@Base 15 ++ (arch=!sparc64)__interceptor_vscanf@Base 15 ++ (arch=!sparc64)__interceptor_vsnprintf@Base 15 ++ (arch=!sparc64)__interceptor_vsprintf@Base 15 ++ (arch=!sparc64)__interceptor_vsscanf@Base 15 ++ __interceptor_wait3@Base 15 ++ __interceptor_wait4@Base 15 ++ __interceptor_wait@Base 15 ++ __interceptor_waitid@Base 15 ++ __interceptor_waitpid@Base 15 ++ __interceptor_wcrtomb@Base 15 ++ __interceptor_wcscat@Base 15 ++ __interceptor_wcsdup@Base 15 ++ __interceptor_wcslen@Base 15 ++ __interceptor_wcsncat@Base 15 ++ __interceptor_wcsnlen@Base 15 ++ __interceptor_wcsnrtombs@Base 15 ++ __interceptor_wcsrtombs@Base 15 ++ __interceptor_wcstombs@Base 15 ++ __interceptor_wcsxfrm@Base 15 ++ __interceptor_wcsxfrm_l@Base 15 ++ __interceptor_wctomb@Base 15 ++ __interceptor_wordexp@Base 15 ++ __interceptor_write@Base 15 ++ __interceptor_writev@Base 15 ++ __interceptor_xdr_bool@Base 15 ++ __interceptor_xdr_bytes@Base 15 ++ __interceptor_xdr_char@Base 15 ++ __interceptor_xdr_destroy@Base 15 ++ __interceptor_xdr_double@Base 15 ++ __interceptor_xdr_enum@Base 15 ++ __interceptor_xdr_float@Base 15 ++ __interceptor_xdr_hyper@Base 15 ++ __interceptor_xdr_int16_t@Base 15 ++ __interceptor_xdr_int32_t@Base 15 ++ __interceptor_xdr_int64_t@Base 15 ++ __interceptor_xdr_int8_t@Base 15 ++ __interceptor_xdr_int@Base 15 ++ __interceptor_xdr_long@Base 15 ++ __interceptor_xdr_longlong_t@Base 15 ++ __interceptor_xdr_quad_t@Base 15 ++ __interceptor_xdr_short@Base 15 ++ __interceptor_xdr_string@Base 15 ++ __interceptor_xdr_u_char@Base 15 ++ __interceptor_xdr_u_hyper@Base 15 ++ __interceptor_xdr_u_int@Base 15 ++ __interceptor_xdr_u_long@Base 15 ++ __interceptor_xdr_u_longlong_t@Base 15 ++ __interceptor_xdr_u_quad_t@Base 15 ++ __interceptor_xdr_u_short@Base 15 ++ __interceptor_xdr_uint16_t@Base 15 ++ __interceptor_xdr_uint32_t@Base 15 ++ __interceptor_xdr_uint64_t@Base 15 ++ __interceptor_xdr_uint8_t@Base 15 ++ __interceptor_xdrmem_create@Base 15 ++ __interceptor_xdrrec_create@Base 15 ++ __interceptor_xdrstdio_create@Base 15 ++ (arch=!sparc64)__isoc23_fscanf@Base 15 ++ (arch=!sparc64)__isoc23_scanf@Base 15 ++ (arch=!sparc64)__isoc23_sscanf@Base 15 ++ __isoc23_strtoimax@Base 15 ++ __isoc23_strtol@Base 15 ++ __isoc23_strtoll@Base 15 ++ __isoc23_strtoumax@Base 15 ++ (arch=!sparc64)__isoc23_vfscanf@Base 15 ++ (arch=!sparc64)__isoc23_vscanf@Base 15 ++ (arch=!sparc64)__isoc23_vsscanf@Base 15 ++ __isoc99_fprintf@Base 15 ++ (arch=!sparc64)__isoc99_fscanf@Base 15 ++ __isoc99_printf@Base 15 ++ (arch=!sparc64)__isoc99_scanf@Base 15 ++ __isoc99_snprintf@Base 15 ++ __isoc99_sprintf@Base 15 ++ (arch=!sparc64)__isoc99_sscanf@Base 15 ++ __isoc99_vfprintf@Base 15 ++ (arch=!sparc64)__isoc99_vfscanf@Base 15 ++ __isoc99_vprintf@Base 15 ++ (arch=!sparc64)__isoc99_vscanf@Base 15 ++ __isoc99_vsnprintf@Base 15 ++ __isoc99_vsprintf@Base 15 ++ (arch=!sparc64)__isoc99_vsscanf@Base 15 ++ __libc_memalign@Base 15 ++ __longjmp_chk@Base 15 ++ __lsan_default_options@Base 15 ++ __lsan_disable@Base 15 ++ __lsan_do_leak_check@Base 15 ++ __lsan_do_recoverable_leak_check@Base 15 ++ __lsan_enable@Base 15 ++ __lsan_ignore_object@Base 15 ++ __lsan_register_root_region@Base 15 ++ __lsan_unregister_root_region@Base 15 ++ __lxstat64@Base 15 ++ __lxstat@Base 15 ++ (arch=sparc64)__nldbl___isoc23_fscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc23_scanf@Base 15 ++ (arch=sparc64)__nldbl___isoc23_sscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc23_vfscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc23_vscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc23_vsscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc99_fscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc99_scanf@Base 15 ++ (arch=sparc64)__nldbl___isoc99_sscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc99_vfscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc99_vscanf@Base 15 ++ (arch=sparc64)__nldbl___isoc99_vsscanf@Base 15 ++ (arch=sparc64)__nldbl_asprintf@Base 15 ++ (arch=sparc64)__nldbl_fprintf@Base 15 ++ (arch=sparc64)__nldbl_fscanf@Base 15 ++ (arch=sparc64)__nldbl_printf@Base 15 ++ (arch=sparc64)__nldbl_scanf@Base 15 ++ (arch=sparc64)__nldbl_snprintf@Base 15 ++ (arch=sparc64)__nldbl_sprintf@Base 15 ++ (arch=sparc64)__nldbl_sscanf@Base 15 ++ (arch=sparc64)__nldbl_vasprintf@Base 15 ++ (arch=sparc64)__nldbl_vfprintf@Base 15 ++ (arch=sparc64)__nldbl_vfscanf@Base 15 ++ (arch=sparc64)__nldbl_vprintf@Base 15 ++ (arch=sparc64)__nldbl_vscanf@Base 15 ++ (arch=sparc64)__nldbl_vsnprintf@Base 15 ++ (arch=sparc64)__nldbl_vsprintf@Base 15 ++ (arch=sparc64)__nldbl_vsscanf@Base 15 ++ __overflow@Base 15 ++ __sancov_default_options@Base 15 ++ __sancov_lowest_stack@Base 15 ++ __sanitizer_acquire_crash_state@Base 15 ++ __sanitizer_annotate_contiguous_container@Base 15 ++ __sanitizer_annotate_double_ended_contiguous_container@Base 15 ++ __sanitizer_contiguous_container_find_bad_address@Base 15 ++ __sanitizer_copy_contiguous_container_annotations@Base 15 ++ __sanitizer_cov_8bit_counters_init@Base 15 ++ __sanitizer_cov_bool_flag_init@Base 15 ++ __sanitizer_cov_dump@Base 15 ++ __sanitizer_cov_load16@Base 15 ++ __sanitizer_cov_load1@Base 15 ++ __sanitizer_cov_load2@Base 15 ++ __sanitizer_cov_load4@Base 15 ++ __sanitizer_cov_load8@Base 15 ++ __sanitizer_cov_pcs_init@Base 15 ++ __sanitizer_cov_reset@Base 15 ++ __sanitizer_cov_store16@Base 15 ++ __sanitizer_cov_store1@Base 15 ++ __sanitizer_cov_store2@Base 15 ++ __sanitizer_cov_store4@Base 15 ++ __sanitizer_cov_store8@Base 15 ++ __sanitizer_cov_trace_cmp1@Base 15 ++ __sanitizer_cov_trace_cmp2@Base 15 ++ __sanitizer_cov_trace_cmp4@Base 15 ++ __sanitizer_cov_trace_cmp8@Base 15 ++ __sanitizer_cov_trace_cmp@Base 15 ++ __sanitizer_cov_trace_const_cmp1@Base 15 ++ __sanitizer_cov_trace_const_cmp2@Base 15 ++ __sanitizer_cov_trace_const_cmp4@Base 15 ++ __sanitizer_cov_trace_const_cmp8@Base 15 ++ __sanitizer_cov_trace_div4@Base 15 ++ __sanitizer_cov_trace_div8@Base 15 ++ __sanitizer_cov_trace_gep@Base 15 ++ __sanitizer_cov_trace_pc_guard@Base 15 ++ __sanitizer_cov_trace_pc_guard_init@Base 15 ++ __sanitizer_cov_trace_pc_indir@Base 15 ++ __sanitizer_cov_trace_switch@Base 15 ++ __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 ++ __sanitizer_dump_coverage@Base 15 ++ __sanitizer_dump_trace_pc_guard_coverage@Base 15 ++ __sanitizer_finish_switch_fiber@Base 15 ++ __sanitizer_free_hook@Base 15 ++ __sanitizer_get_allocated_begin@Base 15 ++ __sanitizer_get_allocated_size@Base 15 ++ __sanitizer_get_allocated_size_fast@Base 15 ++ __sanitizer_get_current_allocated_bytes@Base 15 ++ __sanitizer_get_dtls_size@Base 15 ++ __sanitizer_get_estimated_allocated_size@Base 15 ++ __sanitizer_get_free_bytes@Base 15 ++ __sanitizer_get_heap_size@Base 15 ++ __sanitizer_get_module_and_offset_for_pc@Base 15 ++ __sanitizer_get_ownership@Base 15 ++ __sanitizer_get_report_path@Base 15 ++ __sanitizer_get_unmapped_bytes@Base 15 ++ __sanitizer_ignore_free_hook@Base 15 ++ __sanitizer_install_malloc_and_free_hooks@Base 15 ++ __sanitizer_internal_memcpy@Base 15 ++ __sanitizer_internal_memmove@Base 15 ++ __sanitizer_internal_memset@Base 15 ++ __sanitizer_malloc_hook@Base 15 ++ __sanitizer_on_print@Base 15 ++ __sanitizer_print_memory_profile@Base 15 ++ __sanitizer_print_stack_trace@Base 15 ++ __sanitizer_ptr_cmp@Base 15 ++ __sanitizer_ptr_sub@Base 15 ++ __sanitizer_purge_allocator@Base 15 ++ __sanitizer_report_error_summary@Base 15 ++ __sanitizer_sandbox_on_notify@Base 15 ++ __sanitizer_set_death_callback@Base 15 ++ __sanitizer_set_report_fd@Base 15 ++ __sanitizer_set_report_path@Base 15 ++ __sanitizer_start_switch_fiber@Base 15 ++ __sanitizer_symbolize_global@Base 15 ++ __sanitizer_symbolize_pc@Base 15 ++ __sanitizer_syscall_post_impl_accept4@Base 15 ++ __sanitizer_syscall_post_impl_accept@Base 15 ++ __sanitizer_syscall_post_impl_access@Base 15 ++ __sanitizer_syscall_post_impl_acct@Base 15 ++ __sanitizer_syscall_post_impl_add_key@Base 15 ++ __sanitizer_syscall_post_impl_adjtimex@Base 15 ++ __sanitizer_syscall_post_impl_alarm@Base 15 ++ __sanitizer_syscall_post_impl_bdflush@Base 15 ++ __sanitizer_syscall_post_impl_bind@Base 15 ++ __sanitizer_syscall_post_impl_brk@Base 15 ++ __sanitizer_syscall_post_impl_capget@Base 15 ++ __sanitizer_syscall_post_impl_capset@Base 15 ++ __sanitizer_syscall_post_impl_chdir@Base 15 ++ __sanitizer_syscall_post_impl_chmod@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_chown16@Base 15 ++ __sanitizer_syscall_post_impl_chown@Base 15 ++ __sanitizer_syscall_post_impl_chroot@Base 15 ++ __sanitizer_syscall_post_impl_clock_adjtime@Base 15 ++ __sanitizer_syscall_post_impl_clock_getres@Base 15 ++ __sanitizer_syscall_post_impl_clock_gettime@Base 15 ++ __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 ++ __sanitizer_syscall_post_impl_clock_settime@Base 15 ++ __sanitizer_syscall_post_impl_close@Base 15 ++ __sanitizer_syscall_post_impl_connect@Base 15 ++ __sanitizer_syscall_post_impl_creat@Base 15 ++ __sanitizer_syscall_post_impl_delete_module@Base 15 ++ __sanitizer_syscall_post_impl_dup2@Base 15 ++ __sanitizer_syscall_post_impl_dup3@Base 15 ++ __sanitizer_syscall_post_impl_dup@Base 15 ++ __sanitizer_syscall_post_impl_epoll_create1@Base 15 ++ __sanitizer_syscall_post_impl_epoll_create@Base 15 ++ __sanitizer_syscall_post_impl_epoll_ctl@Base 15 ++ __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 ++ __sanitizer_syscall_post_impl_epoll_pwait@Base 15 ++ __sanitizer_syscall_post_impl_epoll_wait@Base 15 ++ __sanitizer_syscall_post_impl_eventfd2@Base 15 ++ __sanitizer_syscall_post_impl_eventfd@Base 15 ++ __sanitizer_syscall_post_impl_exit@Base 15 ++ __sanitizer_syscall_post_impl_exit_group@Base 15 ++ __sanitizer_syscall_post_impl_faccessat@Base 15 ++ __sanitizer_syscall_post_impl_fchdir@Base 15 ++ __sanitizer_syscall_post_impl_fchmod@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_fchown16@Base 15 ++ __sanitizer_syscall_post_impl_fchown@Base 15 ++ __sanitizer_syscall_post_impl_fchownat@Base 15 ++ __sanitizer_syscall_post_impl_fcntl64@Base 15 ++ __sanitizer_syscall_post_impl_fcntl@Base 15 ++ __sanitizer_syscall_post_impl_fdatasync@Base 15 ++ __sanitizer_syscall_post_impl_fgetxattr@Base 15 ++ __sanitizer_syscall_post_impl_flistxattr@Base 15 ++ __sanitizer_syscall_post_impl_flock@Base 15 ++ __sanitizer_syscall_post_impl_fork@Base 15 ++ __sanitizer_syscall_post_impl_fremovexattr@Base 15 ++ __sanitizer_syscall_post_impl_fsetxattr@Base 15 ++ __sanitizer_syscall_post_impl_fstat64@Base 15 ++ __sanitizer_syscall_post_impl_fstat@Base 15 ++ __sanitizer_syscall_post_impl_fstatat64@Base 15 ++ __sanitizer_syscall_post_impl_fstatfs64@Base 15 ++ __sanitizer_syscall_post_impl_fstatfs@Base 15 ++ __sanitizer_syscall_post_impl_fsync@Base 15 ++ __sanitizer_syscall_post_impl_ftruncate@Base 15 ++ __sanitizer_syscall_post_impl_futex@Base 15 ++ __sanitizer_syscall_post_impl_futimesat@Base 15 ++ __sanitizer_syscall_post_impl_get_mempolicy@Base 15 ++ __sanitizer_syscall_post_impl_get_robust_list@Base 15 ++ __sanitizer_syscall_post_impl_getcpu@Base 15 ++ __sanitizer_syscall_post_impl_getcwd@Base 15 ++ __sanitizer_syscall_post_impl_getdents64@Base 15 ++ __sanitizer_syscall_post_impl_getdents@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_getegid16@Base 15 ++ __sanitizer_syscall_post_impl_getegid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_geteuid16@Base 15 ++ __sanitizer_syscall_post_impl_geteuid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_getgid16@Base 15 ++ __sanitizer_syscall_post_impl_getgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_getgroups16@Base 15 ++ __sanitizer_syscall_post_impl_getgroups@Base 15 ++ __sanitizer_syscall_post_impl_gethostname@Base 15 ++ __sanitizer_syscall_post_impl_getitimer@Base 15 ++ __sanitizer_syscall_post_impl_getpeername@Base 15 ++ __sanitizer_syscall_post_impl_getpgid@Base 15 ++ __sanitizer_syscall_post_impl_getpgrp@Base 15 ++ __sanitizer_syscall_post_impl_getpid@Base 15 ++ __sanitizer_syscall_post_impl_getppid@Base 15 ++ __sanitizer_syscall_post_impl_getpriority@Base 15 ++ __sanitizer_syscall_post_impl_getrandom@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_getresgid16@Base 15 ++ __sanitizer_syscall_post_impl_getresgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_getresuid16@Base 15 ++ __sanitizer_syscall_post_impl_getresuid@Base 15 ++ __sanitizer_syscall_post_impl_getrlimit@Base 15 ++ __sanitizer_syscall_post_impl_getrusage@Base 15 ++ __sanitizer_syscall_post_impl_getsid@Base 15 ++ __sanitizer_syscall_post_impl_getsockname@Base 15 ++ __sanitizer_syscall_post_impl_getsockopt@Base 15 ++ __sanitizer_syscall_post_impl_gettid@Base 15 ++ __sanitizer_syscall_post_impl_gettimeofday@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_getuid16@Base 15 ++ __sanitizer_syscall_post_impl_getuid@Base 15 ++ __sanitizer_syscall_post_impl_getxattr@Base 15 ++ __sanitizer_syscall_post_impl_init_module@Base 15 ++ __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 ++ __sanitizer_syscall_post_impl_inotify_init1@Base 15 ++ __sanitizer_syscall_post_impl_inotify_init@Base 15 ++ __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 ++ __sanitizer_syscall_post_impl_io_cancel@Base 15 ++ __sanitizer_syscall_post_impl_io_destroy@Base 15 ++ __sanitizer_syscall_post_impl_io_getevents@Base 15 ++ __sanitizer_syscall_post_impl_io_setup@Base 15 ++ __sanitizer_syscall_post_impl_io_submit@Base 15 ++ __sanitizer_syscall_post_impl_ioctl@Base 15 ++ __sanitizer_syscall_post_impl_ioperm@Base 15 ++ __sanitizer_syscall_post_impl_ioprio_get@Base 15 ++ __sanitizer_syscall_post_impl_ioprio_set@Base 15 ++ __sanitizer_syscall_post_impl_ipc@Base 15 ++ __sanitizer_syscall_post_impl_kexec_load@Base 15 ++ __sanitizer_syscall_post_impl_keyctl@Base 15 ++ __sanitizer_syscall_post_impl_kill@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_lchown16@Base 15 ++ __sanitizer_syscall_post_impl_lchown@Base 15 ++ __sanitizer_syscall_post_impl_lgetxattr@Base 15 ++ __sanitizer_syscall_post_impl_link@Base 15 ++ __sanitizer_syscall_post_impl_linkat@Base 15 ++ __sanitizer_syscall_post_impl_listen@Base 15 ++ __sanitizer_syscall_post_impl_listxattr@Base 15 ++ __sanitizer_syscall_post_impl_llistxattr@Base 15 ++ __sanitizer_syscall_post_impl_llseek@Base 15 ++ __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 ++ __sanitizer_syscall_post_impl_lremovexattr@Base 15 ++ __sanitizer_syscall_post_impl_lseek@Base 15 ++ __sanitizer_syscall_post_impl_lsetxattr@Base 15 ++ __sanitizer_syscall_post_impl_lstat64@Base 15 ++ __sanitizer_syscall_post_impl_lstat@Base 15 ++ __sanitizer_syscall_post_impl_madvise@Base 15 ++ __sanitizer_syscall_post_impl_mbind@Base 15 ++ __sanitizer_syscall_post_impl_migrate_pages@Base 15 ++ __sanitizer_syscall_post_impl_mincore@Base 15 ++ __sanitizer_syscall_post_impl_mkdir@Base 15 ++ __sanitizer_syscall_post_impl_mkdirat@Base 15 ++ __sanitizer_syscall_post_impl_mknod@Base 15 ++ __sanitizer_syscall_post_impl_mknodat@Base 15 ++ __sanitizer_syscall_post_impl_mlock@Base 15 ++ __sanitizer_syscall_post_impl_mlockall@Base 15 ++ __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 ++ __sanitizer_syscall_post_impl_mount@Base 15 ++ __sanitizer_syscall_post_impl_move_pages@Base 15 ++ __sanitizer_syscall_post_impl_mprotect@Base 15 ++ __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 ++ __sanitizer_syscall_post_impl_mq_notify@Base 15 ++ __sanitizer_syscall_post_impl_mq_open@Base 15 ++ __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 ++ __sanitizer_syscall_post_impl_mq_timedsend@Base 15 ++ __sanitizer_syscall_post_impl_mq_unlink@Base 15 ++ __sanitizer_syscall_post_impl_mremap@Base 15 ++ __sanitizer_syscall_post_impl_msgctl@Base 15 ++ __sanitizer_syscall_post_impl_msgget@Base 15 ++ __sanitizer_syscall_post_impl_msgrcv@Base 15 ++ __sanitizer_syscall_post_impl_msgsnd@Base 15 ++ __sanitizer_syscall_post_impl_msync@Base 15 ++ __sanitizer_syscall_post_impl_munlock@Base 15 ++ __sanitizer_syscall_post_impl_munlockall@Base 15 ++ __sanitizer_syscall_post_impl_munmap@Base 15 ++ __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 ++ __sanitizer_syscall_post_impl_nanosleep@Base 15 ++ __sanitizer_syscall_post_impl_newfstat@Base 15 ++ __sanitizer_syscall_post_impl_newfstatat@Base 15 ++ __sanitizer_syscall_post_impl_newlstat@Base 15 ++ __sanitizer_syscall_post_impl_newstat@Base 15 ++ __sanitizer_syscall_post_impl_newuname@Base 15 ++ __sanitizer_syscall_post_impl_ni_syscall@Base 15 ++ __sanitizer_syscall_post_impl_nice@Base 15 ++ __sanitizer_syscall_post_impl_old_getrlimit@Base 15 ++ __sanitizer_syscall_post_impl_old_mmap@Base 15 ++ __sanitizer_syscall_post_impl_old_readdir@Base 15 ++ __sanitizer_syscall_post_impl_old_select@Base 15 ++ __sanitizer_syscall_post_impl_oldumount@Base 15 ++ __sanitizer_syscall_post_impl_olduname@Base 15 ++ __sanitizer_syscall_post_impl_open@Base 15 ++ __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 ++ __sanitizer_syscall_post_impl_openat@Base 15 ++ __sanitizer_syscall_post_impl_pause@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_read@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_write@Base 15 ++ __sanitizer_syscall_post_impl_perf_event_open@Base 15 ++ __sanitizer_syscall_post_impl_personality@Base 15 ++ __sanitizer_syscall_post_impl_pipe2@Base 15 ++ __sanitizer_syscall_post_impl_pipe@Base 15 ++ __sanitizer_syscall_post_impl_pivot_root@Base 15 ++ __sanitizer_syscall_post_impl_poll@Base 15 ++ __sanitizer_syscall_post_impl_ppoll@Base 15 ++ __sanitizer_syscall_post_impl_pread64@Base 15 ++ __sanitizer_syscall_post_impl_preadv@Base 15 ++ __sanitizer_syscall_post_impl_prlimit64@Base 15 ++ __sanitizer_syscall_post_impl_process_vm_readv@Base 15 ++ __sanitizer_syscall_post_impl_process_vm_writev@Base 15 ++ __sanitizer_syscall_post_impl_pselect6@Base 15 ++ __sanitizer_syscall_post_impl_ptrace@Base 15 ++ __sanitizer_syscall_post_impl_pwrite64@Base 15 ++ __sanitizer_syscall_post_impl_pwritev@Base 15 ++ __sanitizer_syscall_post_impl_quotactl@Base 15 ++ __sanitizer_syscall_post_impl_read@Base 15 ++ __sanitizer_syscall_post_impl_readlink@Base 15 ++ __sanitizer_syscall_post_impl_readlinkat@Base 15 ++ __sanitizer_syscall_post_impl_readv@Base 15 ++ __sanitizer_syscall_post_impl_reboot@Base 15 ++ __sanitizer_syscall_post_impl_recv@Base 15 ++ __sanitizer_syscall_post_impl_recvfrom@Base 15 ++ __sanitizer_syscall_post_impl_recvmmsg@Base 15 ++ __sanitizer_syscall_post_impl_recvmsg@Base 15 ++ __sanitizer_syscall_post_impl_remap_file_pages@Base 15 ++ __sanitizer_syscall_post_impl_removexattr@Base 15 ++ __sanitizer_syscall_post_impl_rename@Base 15 ++ __sanitizer_syscall_post_impl_renameat@Base 15 ++ __sanitizer_syscall_post_impl_request_key@Base 15 ++ __sanitizer_syscall_post_impl_restart_syscall@Base 15 ++ __sanitizer_syscall_post_impl_rmdir@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigaction@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigpending@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 ++ __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 ++ __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 ++ __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 ++ __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 ++ __sanitizer_syscall_post_impl_sched_getparam@Base 15 ++ __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 ++ __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 ++ __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 ++ __sanitizer_syscall_post_impl_sched_setparam@Base 15 ++ __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 ++ __sanitizer_syscall_post_impl_sched_yield@Base 15 ++ __sanitizer_syscall_post_impl_select@Base 15 ++ __sanitizer_syscall_post_impl_semctl@Base 15 ++ __sanitizer_syscall_post_impl_semget@Base 15 ++ __sanitizer_syscall_post_impl_semop@Base 15 ++ __sanitizer_syscall_post_impl_semtimedop@Base 15 ++ __sanitizer_syscall_post_impl_send@Base 15 ++ __sanitizer_syscall_post_impl_sendfile64@Base 15 ++ __sanitizer_syscall_post_impl_sendfile@Base 15 ++ __sanitizer_syscall_post_impl_sendmmsg@Base 15 ++ __sanitizer_syscall_post_impl_sendmsg@Base 15 ++ __sanitizer_syscall_post_impl_sendto@Base 15 ++ __sanitizer_syscall_post_impl_set_mempolicy@Base 15 ++ __sanitizer_syscall_post_impl_set_robust_list@Base 15 ++ __sanitizer_syscall_post_impl_set_tid_address@Base 15 ++ __sanitizer_syscall_post_impl_setdomainname@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setfsgid16@Base 15 ++ __sanitizer_syscall_post_impl_setfsgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setfsuid16@Base 15 ++ __sanitizer_syscall_post_impl_setfsuid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setgid16@Base 15 ++ __sanitizer_syscall_post_impl_setgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setgroups16@Base 15 ++ __sanitizer_syscall_post_impl_setgroups@Base 15 ++ __sanitizer_syscall_post_impl_sethostname@Base 15 ++ __sanitizer_syscall_post_impl_setitimer@Base 15 ++ __sanitizer_syscall_post_impl_setns@Base 15 ++ __sanitizer_syscall_post_impl_setpgid@Base 15 ++ __sanitizer_syscall_post_impl_setpriority@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setregid16@Base 15 ++ __sanitizer_syscall_post_impl_setregid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setresgid16@Base 15 ++ __sanitizer_syscall_post_impl_setresgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setresuid16@Base 15 ++ __sanitizer_syscall_post_impl_setresuid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setreuid16@Base 15 ++ __sanitizer_syscall_post_impl_setreuid@Base 15 ++ __sanitizer_syscall_post_impl_setrlimit@Base 15 ++ __sanitizer_syscall_post_impl_setsid@Base 15 ++ __sanitizer_syscall_post_impl_setsockopt@Base 15 ++ __sanitizer_syscall_post_impl_settimeofday@Base 15 ++ (arch=sparc64)__sanitizer_syscall_post_impl_setuid16@Base 15 ++ __sanitizer_syscall_post_impl_setuid@Base 15 ++ __sanitizer_syscall_post_impl_setxattr@Base 15 ++ __sanitizer_syscall_post_impl_sgetmask@Base 15 ++ __sanitizer_syscall_post_impl_shmat@Base 15 ++ __sanitizer_syscall_post_impl_shmctl@Base 15 ++ __sanitizer_syscall_post_impl_shmdt@Base 15 ++ __sanitizer_syscall_post_impl_shmget@Base 15 ++ __sanitizer_syscall_post_impl_shutdown@Base 15 ++ __sanitizer_syscall_post_impl_sigaction@Base 15 ++ __sanitizer_syscall_post_impl_sigaltstack@Base 15 ++ __sanitizer_syscall_post_impl_signal@Base 15 ++ __sanitizer_syscall_post_impl_signalfd4@Base 15 ++ __sanitizer_syscall_post_impl_signalfd@Base 15 ++ __sanitizer_syscall_post_impl_sigpending@Base 15 ++ __sanitizer_syscall_post_impl_sigprocmask@Base 15 ++ __sanitizer_syscall_post_impl_socket@Base 15 ++ __sanitizer_syscall_post_impl_socketcall@Base 15 ++ __sanitizer_syscall_post_impl_socketpair@Base 15 ++ __sanitizer_syscall_post_impl_splice@Base 15 ++ __sanitizer_syscall_post_impl_spu_create@Base 15 ++ __sanitizer_syscall_post_impl_spu_run@Base 15 ++ __sanitizer_syscall_post_impl_ssetmask@Base 15 ++ __sanitizer_syscall_post_impl_stat64@Base 15 ++ __sanitizer_syscall_post_impl_stat@Base 15 ++ __sanitizer_syscall_post_impl_statfs64@Base 15 ++ __sanitizer_syscall_post_impl_statfs@Base 15 ++ __sanitizer_syscall_post_impl_stime@Base 15 ++ __sanitizer_syscall_post_impl_swapoff@Base 15 ++ __sanitizer_syscall_post_impl_swapon@Base 15 ++ __sanitizer_syscall_post_impl_symlink@Base 15 ++ __sanitizer_syscall_post_impl_symlinkat@Base 15 ++ __sanitizer_syscall_post_impl_sync@Base 15 ++ __sanitizer_syscall_post_impl_syncfs@Base 15 ++ __sanitizer_syscall_post_impl_sysctl@Base 15 ++ __sanitizer_syscall_post_impl_sysfs@Base 15 ++ __sanitizer_syscall_post_impl_sysinfo@Base 15 ++ __sanitizer_syscall_post_impl_syslog@Base 15 ++ __sanitizer_syscall_post_impl_tee@Base 15 ++ __sanitizer_syscall_post_impl_tgkill@Base 15 ++ __sanitizer_syscall_post_impl_time@Base 15 ++ __sanitizer_syscall_post_impl_timer_create@Base 15 ++ __sanitizer_syscall_post_impl_timer_delete@Base 15 ++ __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 ++ __sanitizer_syscall_post_impl_timer_gettime@Base 15 ++ __sanitizer_syscall_post_impl_timer_settime@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_create@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_settime@Base 15 ++ __sanitizer_syscall_post_impl_times@Base 15 ++ __sanitizer_syscall_post_impl_tkill@Base 15 ++ __sanitizer_syscall_post_impl_truncate@Base 15 ++ __sanitizer_syscall_post_impl_umask@Base 15 ++ __sanitizer_syscall_post_impl_umount@Base 15 ++ __sanitizer_syscall_post_impl_uname@Base 15 ++ __sanitizer_syscall_post_impl_unlink@Base 15 ++ __sanitizer_syscall_post_impl_unlinkat@Base 15 ++ __sanitizer_syscall_post_impl_unshare@Base 15 ++ __sanitizer_syscall_post_impl_uselib@Base 15 ++ __sanitizer_syscall_post_impl_ustat@Base 15 ++ __sanitizer_syscall_post_impl_utime@Base 15 ++ __sanitizer_syscall_post_impl_utimensat@Base 15 ++ __sanitizer_syscall_post_impl_utimes@Base 15 ++ __sanitizer_syscall_post_impl_vfork@Base 15 ++ __sanitizer_syscall_post_impl_vhangup@Base 15 ++ __sanitizer_syscall_post_impl_vmsplice@Base 15 ++ __sanitizer_syscall_post_impl_wait4@Base 15 ++ __sanitizer_syscall_post_impl_waitid@Base 15 ++ __sanitizer_syscall_post_impl_waitpid@Base 15 ++ __sanitizer_syscall_post_impl_write@Base 15 ++ __sanitizer_syscall_post_impl_writev@Base 15 ++ __sanitizer_syscall_pre_impl_accept4@Base 15 ++ __sanitizer_syscall_pre_impl_accept@Base 15 ++ __sanitizer_syscall_pre_impl_access@Base 15 ++ __sanitizer_syscall_pre_impl_acct@Base 15 ++ __sanitizer_syscall_pre_impl_add_key@Base 15 ++ __sanitizer_syscall_pre_impl_adjtimex@Base 15 ++ __sanitizer_syscall_pre_impl_alarm@Base 15 ++ __sanitizer_syscall_pre_impl_bdflush@Base 15 ++ __sanitizer_syscall_pre_impl_bind@Base 15 ++ __sanitizer_syscall_pre_impl_brk@Base 15 ++ __sanitizer_syscall_pre_impl_capget@Base 15 ++ __sanitizer_syscall_pre_impl_capset@Base 15 ++ __sanitizer_syscall_pre_impl_chdir@Base 15 ++ __sanitizer_syscall_pre_impl_chmod@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_chown16@Base 15 ++ __sanitizer_syscall_pre_impl_chown@Base 15 ++ __sanitizer_syscall_pre_impl_chroot@Base 15 ++ __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 ++ __sanitizer_syscall_pre_impl_clock_getres@Base 15 ++ __sanitizer_syscall_pre_impl_clock_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 ++ __sanitizer_syscall_pre_impl_clock_settime@Base 15 ++ __sanitizer_syscall_pre_impl_close@Base 15 ++ __sanitizer_syscall_pre_impl_connect@Base 15 ++ __sanitizer_syscall_pre_impl_creat@Base 15 ++ __sanitizer_syscall_pre_impl_delete_module@Base 15 ++ __sanitizer_syscall_pre_impl_dup2@Base 15 ++ __sanitizer_syscall_pre_impl_dup3@Base 15 ++ __sanitizer_syscall_pre_impl_dup@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_create1@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_create@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_wait@Base 15 ++ __sanitizer_syscall_pre_impl_eventfd2@Base 15 ++ __sanitizer_syscall_pre_impl_eventfd@Base 15 ++ __sanitizer_syscall_pre_impl_exit@Base 15 ++ __sanitizer_syscall_pre_impl_exit_group@Base 15 ++ __sanitizer_syscall_pre_impl_faccessat@Base 15 ++ __sanitizer_syscall_pre_impl_fchdir@Base 15 ++ __sanitizer_syscall_pre_impl_fchmod@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_fchown16@Base 15 ++ __sanitizer_syscall_pre_impl_fchown@Base 15 ++ __sanitizer_syscall_pre_impl_fchownat@Base 15 ++ __sanitizer_syscall_pre_impl_fcntl64@Base 15 ++ __sanitizer_syscall_pre_impl_fcntl@Base 15 ++ __sanitizer_syscall_pre_impl_fdatasync@Base 15 ++ __sanitizer_syscall_pre_impl_fgetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_flistxattr@Base 15 ++ __sanitizer_syscall_pre_impl_flock@Base 15 ++ __sanitizer_syscall_pre_impl_fork@Base 15 ++ __sanitizer_syscall_pre_impl_fremovexattr@Base 15 ++ __sanitizer_syscall_pre_impl_fsetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_fstat64@Base 15 ++ __sanitizer_syscall_pre_impl_fstat@Base 15 ++ __sanitizer_syscall_pre_impl_fstatat64@Base 15 ++ __sanitizer_syscall_pre_impl_fstatfs64@Base 15 ++ __sanitizer_syscall_pre_impl_fstatfs@Base 15 ++ __sanitizer_syscall_pre_impl_fsync@Base 15 ++ __sanitizer_syscall_pre_impl_ftruncate@Base 15 ++ __sanitizer_syscall_pre_impl_futex@Base 15 ++ __sanitizer_syscall_pre_impl_futimesat@Base 15 ++ __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 ++ __sanitizer_syscall_pre_impl_get_robust_list@Base 15 ++ __sanitizer_syscall_pre_impl_getcpu@Base 15 ++ __sanitizer_syscall_pre_impl_getcwd@Base 15 ++ __sanitizer_syscall_pre_impl_getdents64@Base 15 ++ __sanitizer_syscall_pre_impl_getdents@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_getegid16@Base 15 ++ __sanitizer_syscall_pre_impl_getegid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_geteuid16@Base 15 ++ __sanitizer_syscall_pre_impl_geteuid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_getgid16@Base 15 ++ __sanitizer_syscall_pre_impl_getgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_getgroups16@Base 15 ++ __sanitizer_syscall_pre_impl_getgroups@Base 15 ++ __sanitizer_syscall_pre_impl_gethostname@Base 15 ++ __sanitizer_syscall_pre_impl_getitimer@Base 15 ++ __sanitizer_syscall_pre_impl_getpeername@Base 15 ++ __sanitizer_syscall_pre_impl_getpgid@Base 15 ++ __sanitizer_syscall_pre_impl_getpgrp@Base 15 ++ __sanitizer_syscall_pre_impl_getpid@Base 15 ++ __sanitizer_syscall_pre_impl_getppid@Base 15 ++ __sanitizer_syscall_pre_impl_getpriority@Base 15 ++ __sanitizer_syscall_pre_impl_getrandom@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_getresgid16@Base 15 ++ __sanitizer_syscall_pre_impl_getresgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_getresuid16@Base 15 ++ __sanitizer_syscall_pre_impl_getresuid@Base 15 ++ __sanitizer_syscall_pre_impl_getrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_getrusage@Base 15 ++ __sanitizer_syscall_pre_impl_getsid@Base 15 ++ __sanitizer_syscall_pre_impl_getsockname@Base 15 ++ __sanitizer_syscall_pre_impl_getsockopt@Base 15 ++ __sanitizer_syscall_pre_impl_gettid@Base 15 ++ __sanitizer_syscall_pre_impl_gettimeofday@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_getuid16@Base 15 ++ __sanitizer_syscall_pre_impl_getuid@Base 15 ++ __sanitizer_syscall_pre_impl_getxattr@Base 15 ++ __sanitizer_syscall_pre_impl_init_module@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_init1@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_init@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 ++ __sanitizer_syscall_pre_impl_io_cancel@Base 15 ++ __sanitizer_syscall_pre_impl_io_destroy@Base 15 ++ __sanitizer_syscall_pre_impl_io_getevents@Base 15 ++ __sanitizer_syscall_pre_impl_io_setup@Base 15 ++ __sanitizer_syscall_pre_impl_io_submit@Base 15 ++ __sanitizer_syscall_pre_impl_ioctl@Base 15 ++ __sanitizer_syscall_pre_impl_ioperm@Base 15 ++ __sanitizer_syscall_pre_impl_ioprio_get@Base 15 ++ __sanitizer_syscall_pre_impl_ioprio_set@Base 15 ++ __sanitizer_syscall_pre_impl_ipc@Base 15 ++ __sanitizer_syscall_pre_impl_kexec_load@Base 15 ++ __sanitizer_syscall_pre_impl_keyctl@Base 15 ++ __sanitizer_syscall_pre_impl_kill@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_lchown16@Base 15 ++ __sanitizer_syscall_pre_impl_lchown@Base 15 ++ __sanitizer_syscall_pre_impl_lgetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_link@Base 15 ++ __sanitizer_syscall_pre_impl_linkat@Base 15 ++ __sanitizer_syscall_pre_impl_listen@Base 15 ++ __sanitizer_syscall_pre_impl_listxattr@Base 15 ++ __sanitizer_syscall_pre_impl_llistxattr@Base 15 ++ __sanitizer_syscall_pre_impl_llseek@Base 15 ++ __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 ++ __sanitizer_syscall_pre_impl_lremovexattr@Base 15 ++ __sanitizer_syscall_pre_impl_lseek@Base 15 ++ __sanitizer_syscall_pre_impl_lsetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_lstat64@Base 15 ++ __sanitizer_syscall_pre_impl_lstat@Base 15 ++ __sanitizer_syscall_pre_impl_madvise@Base 15 ++ __sanitizer_syscall_pre_impl_mbind@Base 15 ++ __sanitizer_syscall_pre_impl_migrate_pages@Base 15 ++ __sanitizer_syscall_pre_impl_mincore@Base 15 ++ __sanitizer_syscall_pre_impl_mkdir@Base 15 ++ __sanitizer_syscall_pre_impl_mkdirat@Base 15 ++ __sanitizer_syscall_pre_impl_mknod@Base 15 ++ __sanitizer_syscall_pre_impl_mknodat@Base 15 ++ __sanitizer_syscall_pre_impl_mlock@Base 15 ++ __sanitizer_syscall_pre_impl_mlockall@Base 15 ++ __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 ++ __sanitizer_syscall_pre_impl_mount@Base 15 ++ __sanitizer_syscall_pre_impl_move_pages@Base 15 ++ __sanitizer_syscall_pre_impl_mprotect@Base 15 ++ __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 ++ __sanitizer_syscall_pre_impl_mq_notify@Base 15 ++ __sanitizer_syscall_pre_impl_mq_open@Base 15 ++ __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 ++ __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 ++ __sanitizer_syscall_pre_impl_mq_unlink@Base 15 ++ __sanitizer_syscall_pre_impl_mremap@Base 15 ++ __sanitizer_syscall_pre_impl_msgctl@Base 15 ++ __sanitizer_syscall_pre_impl_msgget@Base 15 ++ __sanitizer_syscall_pre_impl_msgrcv@Base 15 ++ __sanitizer_syscall_pre_impl_msgsnd@Base 15 ++ __sanitizer_syscall_pre_impl_msync@Base 15 ++ __sanitizer_syscall_pre_impl_munlock@Base 15 ++ __sanitizer_syscall_pre_impl_munlockall@Base 15 ++ __sanitizer_syscall_pre_impl_munmap@Base 15 ++ __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 ++ __sanitizer_syscall_pre_impl_nanosleep@Base 15 ++ __sanitizer_syscall_pre_impl_newfstat@Base 15 ++ __sanitizer_syscall_pre_impl_newfstatat@Base 15 ++ __sanitizer_syscall_pre_impl_newlstat@Base 15 ++ __sanitizer_syscall_pre_impl_newstat@Base 15 ++ __sanitizer_syscall_pre_impl_newuname@Base 15 ++ __sanitizer_syscall_pre_impl_ni_syscall@Base 15 ++ __sanitizer_syscall_pre_impl_nice@Base 15 ++ __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_old_mmap@Base 15 ++ __sanitizer_syscall_pre_impl_old_readdir@Base 15 ++ __sanitizer_syscall_pre_impl_old_select@Base 15 ++ __sanitizer_syscall_pre_impl_oldumount@Base 15 ++ __sanitizer_syscall_pre_impl_olduname@Base 15 ++ __sanitizer_syscall_pre_impl_open@Base 15 ++ __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 ++ __sanitizer_syscall_pre_impl_openat@Base 15 ++ __sanitizer_syscall_pre_impl_pause@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 ++ __sanitizer_syscall_pre_impl_perf_event_open@Base 15 ++ __sanitizer_syscall_pre_impl_personality@Base 15 ++ __sanitizer_syscall_pre_impl_pipe2@Base 15 ++ __sanitizer_syscall_pre_impl_pipe@Base 15 ++ __sanitizer_syscall_pre_impl_pivot_root@Base 15 ++ __sanitizer_syscall_pre_impl_poll@Base 15 ++ __sanitizer_syscall_pre_impl_ppoll@Base 15 ++ __sanitizer_syscall_pre_impl_pread64@Base 15 ++ __sanitizer_syscall_pre_impl_preadv@Base 15 ++ __sanitizer_syscall_pre_impl_prlimit64@Base 15 ++ __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 ++ __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 ++ __sanitizer_syscall_pre_impl_pselect6@Base 15 ++ __sanitizer_syscall_pre_impl_ptrace@Base 15 ++ __sanitizer_syscall_pre_impl_pwrite64@Base 15 ++ __sanitizer_syscall_pre_impl_pwritev@Base 15 ++ __sanitizer_syscall_pre_impl_quotactl@Base 15 ++ __sanitizer_syscall_pre_impl_read@Base 15 ++ __sanitizer_syscall_pre_impl_readlink@Base 15 ++ __sanitizer_syscall_pre_impl_readlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_readv@Base 15 ++ __sanitizer_syscall_pre_impl_reboot@Base 15 ++ __sanitizer_syscall_pre_impl_recv@Base 15 ++ __sanitizer_syscall_pre_impl_recvfrom@Base 15 ++ __sanitizer_syscall_pre_impl_recvmmsg@Base 15 ++ __sanitizer_syscall_pre_impl_recvmsg@Base 15 ++ __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 ++ __sanitizer_syscall_pre_impl_removexattr@Base 15 ++ __sanitizer_syscall_pre_impl_rename@Base 15 ++ __sanitizer_syscall_pre_impl_renameat@Base 15 ++ __sanitizer_syscall_pre_impl_request_key@Base 15 ++ __sanitizer_syscall_pre_impl_restart_syscall@Base 15 ++ __sanitizer_syscall_pre_impl_rmdir@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 ++ __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 ++ __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 ++ __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getparam@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 ++ __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setparam@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 ++ __sanitizer_syscall_pre_impl_sched_yield@Base 15 ++ __sanitizer_syscall_pre_impl_select@Base 15 ++ __sanitizer_syscall_pre_impl_semctl@Base 15 ++ __sanitizer_syscall_pre_impl_semget@Base 15 ++ __sanitizer_syscall_pre_impl_semop@Base 15 ++ __sanitizer_syscall_pre_impl_semtimedop@Base 15 ++ __sanitizer_syscall_pre_impl_send@Base 15 ++ __sanitizer_syscall_pre_impl_sendfile64@Base 15 ++ __sanitizer_syscall_pre_impl_sendfile@Base 15 ++ __sanitizer_syscall_pre_impl_sendmmsg@Base 15 ++ __sanitizer_syscall_pre_impl_sendmsg@Base 15 ++ __sanitizer_syscall_pre_impl_sendto@Base 15 ++ __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 ++ __sanitizer_syscall_pre_impl_set_robust_list@Base 15 ++ __sanitizer_syscall_pre_impl_set_tid_address@Base 15 ++ __sanitizer_syscall_pre_impl_setdomainname@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setfsgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setfsgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setfsuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setfsuid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setgroups16@Base 15 ++ __sanitizer_syscall_pre_impl_setgroups@Base 15 ++ __sanitizer_syscall_pre_impl_sethostname@Base 15 ++ __sanitizer_syscall_pre_impl_setitimer@Base 15 ++ __sanitizer_syscall_pre_impl_setns@Base 15 ++ __sanitizer_syscall_pre_impl_setpgid@Base 15 ++ __sanitizer_syscall_pre_impl_setpriority@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setregid16@Base 15 ++ __sanitizer_syscall_pre_impl_setregid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setresgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setresgid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setresuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setresuid@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setreuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setreuid@Base 15 ++ __sanitizer_syscall_pre_impl_setrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_setsid@Base 15 ++ __sanitizer_syscall_pre_impl_setsockopt@Base 15 ++ __sanitizer_syscall_pre_impl_settimeofday@Base 15 ++ (arch=sparc64)__sanitizer_syscall_pre_impl_setuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setuid@Base 15 ++ __sanitizer_syscall_pre_impl_setxattr@Base 15 ++ __sanitizer_syscall_pre_impl_sgetmask@Base 15 ++ __sanitizer_syscall_pre_impl_shmat@Base 15 ++ __sanitizer_syscall_pre_impl_shmctl@Base 15 ++ __sanitizer_syscall_pre_impl_shmdt@Base 15 ++ __sanitizer_syscall_pre_impl_shmget@Base 15 ++ __sanitizer_syscall_pre_impl_shutdown@Base 15 ++ __sanitizer_syscall_pre_impl_sigaction@Base 15 ++ __sanitizer_syscall_pre_impl_sigaltstack@Base 15 ++ __sanitizer_syscall_pre_impl_signal@Base 15 ++ __sanitizer_syscall_pre_impl_signalfd4@Base 15 ++ __sanitizer_syscall_pre_impl_signalfd@Base 15 ++ __sanitizer_syscall_pre_impl_sigpending@Base 15 ++ __sanitizer_syscall_pre_impl_sigprocmask@Base 15 ++ __sanitizer_syscall_pre_impl_socket@Base 15 ++ __sanitizer_syscall_pre_impl_socketcall@Base 15 ++ __sanitizer_syscall_pre_impl_socketpair@Base 15 ++ __sanitizer_syscall_pre_impl_splice@Base 15 ++ __sanitizer_syscall_pre_impl_spu_create@Base 15 ++ __sanitizer_syscall_pre_impl_spu_run@Base 15 ++ __sanitizer_syscall_pre_impl_ssetmask@Base 15 ++ __sanitizer_syscall_pre_impl_stat64@Base 15 ++ __sanitizer_syscall_pre_impl_stat@Base 15 ++ __sanitizer_syscall_pre_impl_statfs64@Base 15 ++ __sanitizer_syscall_pre_impl_statfs@Base 15 ++ __sanitizer_syscall_pre_impl_stime@Base 15 ++ __sanitizer_syscall_pre_impl_swapoff@Base 15 ++ __sanitizer_syscall_pre_impl_swapon@Base 15 ++ __sanitizer_syscall_pre_impl_symlink@Base 15 ++ __sanitizer_syscall_pre_impl_symlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_sync@Base 15 ++ __sanitizer_syscall_pre_impl_syncfs@Base 15 ++ __sanitizer_syscall_pre_impl_sysctl@Base 15 ++ __sanitizer_syscall_pre_impl_sysfs@Base 15 ++ __sanitizer_syscall_pre_impl_sysinfo@Base 15 ++ __sanitizer_syscall_pre_impl_syslog@Base 15 ++ __sanitizer_syscall_pre_impl_tee@Base 15 ++ __sanitizer_syscall_pre_impl_tgkill@Base 15 ++ __sanitizer_syscall_pre_impl_time@Base 15 ++ __sanitizer_syscall_pre_impl_timer_create@Base 15 ++ __sanitizer_syscall_pre_impl_timer_delete@Base 15 ++ __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 ++ __sanitizer_syscall_pre_impl_timer_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_timer_settime@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_create@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 ++ __sanitizer_syscall_pre_impl_times@Base 15 ++ __sanitizer_syscall_pre_impl_tkill@Base 15 ++ __sanitizer_syscall_pre_impl_truncate@Base 15 ++ __sanitizer_syscall_pre_impl_umask@Base 15 ++ __sanitizer_syscall_pre_impl_umount@Base 15 ++ __sanitizer_syscall_pre_impl_uname@Base 15 ++ __sanitizer_syscall_pre_impl_unlink@Base 15 ++ __sanitizer_syscall_pre_impl_unlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_unshare@Base 15 ++ __sanitizer_syscall_pre_impl_uselib@Base 15 ++ __sanitizer_syscall_pre_impl_ustat@Base 15 ++ __sanitizer_syscall_pre_impl_utime@Base 15 ++ __sanitizer_syscall_pre_impl_utimensat@Base 15 ++ __sanitizer_syscall_pre_impl_utimes@Base 15 ++ __sanitizer_syscall_pre_impl_vfork@Base 15 ++ __sanitizer_syscall_pre_impl_vhangup@Base 15 ++ __sanitizer_syscall_pre_impl_vmsplice@Base 15 ++ __sanitizer_syscall_pre_impl_wait4@Base 15 ++ __sanitizer_syscall_pre_impl_waitid@Base 15 ++ __sanitizer_syscall_pre_impl_waitpid@Base 15 ++ __sanitizer_syscall_pre_impl_write@Base 15 ++ __sanitizer_syscall_pre_impl_writev@Base 15 ++ __sanitizer_unaligned_load16@Base 15 ++ __sanitizer_unaligned_load32@Base 15 ++ __sanitizer_unaligned_load64@Base 15 ++ __sanitizer_unaligned_store16@Base 15 ++ __sanitizer_unaligned_store32@Base 15 ++ __sanitizer_unaligned_store64@Base 15 ++ __sanitizer_verify_contiguous_container@Base 15 ++ __sanitizer_verify_double_ended_contiguous_container@Base 15 ++ __sanitizer_weak_hook_memcmp@Base 15 ++ __sanitizer_weak_hook_memmem@Base 15 ++ __sanitizer_weak_hook_strcasecmp@Base 15 ++ __sanitizer_weak_hook_strcasestr@Base 15 ++ __sanitizer_weak_hook_strcmp@Base 15 ++ __sanitizer_weak_hook_strncasecmp@Base 15 ++ __sanitizer_weak_hook_strncmp@Base 15 ++ __sanitizer_weak_hook_strstr@Base 15 ++ __snprintf_chk@Base 15 ++ __sprintf_chk@Base 15 ++ __strdup@Base 15 ++ __strndup@Base 15 ++ __strxfrm_l@Base 15 ++ (arch=!ppc64 !s390x)__tls_get_addr@Base 15 ++ (arch=s390x)__tls_get_addr_internal@Base 15 ++ (arch=ppc64)__tls_get_addr_opt@Base 15 ++ (arch=s390x)__tls_get_offset@Base 15 ++ __uflow@Base 15 ++ __underflow@Base 15 ++ __vsnprintf_chk@Base 15 ++ __vsprintf_chk@Base 15 ++ __wcsxfrm_l@Base 15 ++ __woverflow@Base 15 ++ __wuflow@Base 15 ++ __wunderflow@Base 15 ++ __xpg_strerror_r@Base 15 ++ __xstat64@Base 15 ++ __xstat@Base 15 ++ _exit@Base 15 ++ _longjmp@Base 15 ++ _obstack_begin@Base 15 ++ _obstack_begin_1@Base 15 ++ _obstack_newchunk@Base 15 ++ accept4@Base 15 ++ accept@Base 15 ++ aligned_alloc@Base 15 ++ argp_parse@Base 15 ++ asctime@Base 15 ++ asctime_r@Base 15 ++ (arch=!sparc64)asprintf@Base 15 ++ atoi@Base 15 ++ atol@Base 15 ++ atoll@Base 15 ++ backtrace@Base 15 ++ backtrace_symbols@Base 15 ++ bcmp@Base 15 ++ bsearch@Base 15 ++ bzero@Base 15 ++ calloc@Base 15 ++ canonicalize_file_name@Base 15 ++ capget@Base 15 ++ capset@Base 15 ++ cfree@Base 15 ++ clock_getcpuclockid@Base 15 ++ clock_getres@Base 15 ++ clock_gettime@Base 15 ++ clock_settime@Base 15 ++ confstr@Base 15 ++ ctermid@Base 15 ++ ctime@Base 15 ++ ctime_r@Base 15 ++ dlclose@Base 15 ++ dlopen@Base 15 ++ dn_comp@Base 15 ++ dn_expand@Base 15 ++ drand48_r@Base 15 ++ endgrent@Base 15 ++ endpwent@Base 15 ++ ether_aton@Base 15 ++ ether_aton_r@Base 15 ++ ether_hostton@Base 15 ++ ether_line@Base 15 ++ ether_ntoa@Base 15 ++ ether_ntoa_r@Base 15 ++ ether_ntohost@Base 15 ++ eventfd_read@Base 15 ++ eventfd_write@Base 15 ++ fclose@Base 15 ++ fdopen@Base 15 ++ fflush@Base 15 ++ fgetgrent@Base 15 ++ fgetgrent_r@Base 15 ++ fgetpwent@Base 15 ++ fgetpwent_r@Base 15 ++ fgets@Base 15 ++ fgetxattr@Base 15 ++ flistxattr@Base 15 ++ fmemopen@Base 15 ++ fopen64@Base 15 ++ fopen@Base 15 ++ fopencookie@Base 15 ++ (arch=!sparc64)fprintf@Base 15 ++ fputs@Base 15 ++ fread@Base 15 ++ free@Base 15 ++ freopen64@Base 15 ++ freopen@Base 15 ++ frexp@Base 15 ++ frexpf@Base 15 ++ frexpl@Base 15 ++ (arch=!sparc64)fscanf@Base 15 ++ fstatfs64@Base 15 ++ fstatfs@Base 15 ++ fstatvfs64@Base 15 ++ fstatvfs@Base 15 ++ ftime@Base 15 ++ fwrite@Base 15 ++ get_current_dir_name@Base 15 ++ getaddrinfo@Base 15 ++ getcwd@Base 15 ++ getdelim@Base 15 ++ getentropy@Base 15 ++ getgrent@Base 15 ++ getgrent_r@Base 15 ++ getgrgid@Base 15 ++ getgrgid_r@Base 15 ++ getgrnam@Base 15 ++ getgrnam_r@Base 15 ++ getgrouplist@Base 15 ++ getgroups@Base 15 ++ gethostbyaddr@Base 15 ++ gethostbyaddr_r@Base 15 ++ gethostbyname2@Base 15 ++ gethostbyname2_r@Base 15 ++ gethostbyname@Base 15 ++ gethostbyname_r@Base 15 ++ gethostent@Base 15 ++ gethostent_r@Base 15 ++ getifaddrs@Base 15 ++ getitimer@Base 15 ++ getline@Base 15 ++ getloadavg@Base 15 ++ getmntent@Base 15 ++ getmntent_r@Base 15 ++ getnameinfo@Base 15 ++ getnetbyaddr@Base 15 ++ getnetbyname@Base 15 ++ getnetent@Base 15 ++ getpass@Base 15 ++ getpeername@Base 15 ++ getprotobyname@Base 15 ++ getprotobyname_r@Base 15 ++ getprotobynumber@Base 15 ++ getprotobynumber_r@Base 15 ++ getprotoent@Base 15 ++ getprotoent_r@Base 15 ++ getpwent@Base 15 ++ getpwent_r@Base 15 ++ getpwnam@Base 15 ++ getpwnam_r@Base 15 ++ getpwuid@Base 15 ++ getpwuid_r@Base 15 ++ getrandom@Base 15 ++ getresgid@Base 15 ++ getresuid@Base 15 ++ getsockname@Base 15 ++ getsockopt@Base 15 ++ getusershell@Base 15 ++ getutent@Base 15 ++ getutid@Base 15 ++ getutline@Base 15 ++ getutxent@Base 15 ++ getutxid@Base 15 ++ getutxline@Base 15 ++ getxattr@Base 15 ++ glob64@Base 15 ++ glob@Base 15 ++ gmtime@Base 15 ++ gmtime_r@Base 15 ++ iconv@Base 15 ++ if_indextoname@Base 15 ++ if_nametoindex@Base 15 ++ index@Base 15 ++ inet_aton@Base 15 ++ inet_ntop@Base 15 ++ inet_pton@Base 15 ++ initgroups@Base 15 ++ ioctl@Base 15 ++ lgamma@Base 15 ++ lgamma_r@Base 15 ++ lgammaf@Base 15 ++ lgammaf_r@Base 15 ++ lgammal@Base 15 ++ lgammal_r@Base 15 ++ lgetxattr@Base 15 ++ listxattr@Base 15 ++ llistxattr@Base 15 ++ localtime@Base 15 ++ localtime_r@Base 15 ++ longjmp@Base 15 ++ lrand48_r@Base 15 ++ lstat64@Base 15 ++ lstat@Base 15 ++ makecontext@Base 15 ++ mallinfo@Base 15 ++ malloc@Base 15 ++ malloc_stats@Base 15 ++ malloc_usable_size@Base 15 ++ mallopt@Base 15 ++ mbsnrtowcs@Base 15 ++ mbsrtowcs@Base 15 ++ mbstowcs@Base 15 ++ mcheck@Base 15 ++ mcheck_pedantic@Base 15 ++ memalign@Base 15 ++ memchr@Base 15 ++ memcmp@Base 15 ++ memcpy@Base 15 ++ memmem@Base 15 ++ memmove@Base 15 ++ memrchr@Base 15 ++ memset@Base 15 ++ mincore@Base 15 ++ mktime@Base 15 ++ mlock@Base 15 ++ mlockall@Base 15 ++ mmap64@Base 15 ++ mmap@Base 15 ++ modf@Base 15 ++ modff@Base 15 ++ modfl@Base 15 ++ mprobe@Base 15 ++ mprotect@Base 15 ++ msgrcv@Base 15 ++ msgsnd@Base 15 ++ munlock@Base 15 ++ munlockall@Base 15 ++ munmap@Base 15 ++ name_to_handle_at@Base 15 ++ open_by_handle_at@Base 15 ++ open_memstream@Base 15 ++ open_wmemstream@Base 15 ++ opendir@Base 15 ++ pclose@Base 15 ++ poll@Base 15 ++ popen@Base 15 ++ posix_memalign@Base 15 ++ posix_spawn@Base 15 ++ posix_spawnp@Base 15 ++ ppoll@Base 15 ++ prctl@Base 15 ++ pread64@Base 15 ++ pread@Base 15 ++ preadv2@Base 15 ++ preadv64@Base 15 ++ preadv@Base 15 ++ (arch=!sparc64)printf@Base 15 ++ process_vm_readv@Base 15 ++ process_vm_writev@Base 15 ++ pthread_attr_getaffinity_np@Base 15 ++ pthread_attr_getdetachstate@Base 15 ++ pthread_attr_getguardsize@Base 15 ++ pthread_attr_getinheritsched@Base 15 ++ pthread_attr_getschedparam@Base 15 ++ pthread_attr_getschedpolicy@Base 15 ++ pthread_attr_getscope@Base 15 ++ pthread_attr_getstack@Base 15 ++ pthread_attr_getstacksize@Base 15 ++ pthread_barrierattr_getpshared@Base 15 ++ pthread_condattr_getclock@Base 15 ++ pthread_condattr_getpshared@Base 15 ++ pthread_create@Base 15 ++ pthread_detach@Base 15 ++ pthread_exit@Base 15 ++ pthread_getaffinity_np@Base 15 ++ pthread_getcpuclockid@Base 15 ++ pthread_getname_np@Base 15 ++ pthread_getschedparam@Base 15 ++ pthread_join@Base 15 ++ pthread_mutexattr_getprioceiling@Base 15 ++ pthread_mutexattr_getprotocol@Base 15 ++ pthread_mutexattr_getpshared@Base 15 ++ pthread_mutexattr_getrobust@Base 15 ++ pthread_mutexattr_getrobust_np@Base 15 ++ pthread_mutexattr_gettype@Base 15 ++ pthread_rwlockattr_getkind_np@Base 15 ++ pthread_rwlockattr_getpshared@Base 15 ++ pthread_setcancelstate@Base 15 ++ pthread_setcanceltype@Base 15 ++ pthread_setname_np@Base 15 ++ pthread_sigmask@Base 15 ++ pthread_timedjoin_np@Base 15 ++ pthread_tryjoin_np@Base 15 ++ (arch=!ppc64)ptrace@Base 15 ++ ptsname@Base 15 ++ ptsname_r@Base 15 ++ puts@Base 15 ++ pututxline@Base 15 ++ pvalloc@Base 15 ++ pwrite64@Base 15 ++ pwrite@Base 15 ++ pwritev2@Base 15 ++ pwritev64@Base 15 ++ pwritev@Base 15 ++ qsort@Base 15 ++ qsort_r@Base 15 ++ rand_r@Base 15 ++ random_r@Base 15 ++ read@Base 15 ++ readdir64@Base 15 ++ readdir64_r@Base 15 ++ readdir@Base 15 ++ readdir_r@Base 15 ++ readlink@Base 15 ++ readlinkat@Base 15 ++ readv@Base 15 ++ realloc@Base 15 ++ reallocarray@Base 15 ++ realpath@Base 15 ++ recv@Base 15 ++ recvfrom@Base 15 ++ recvmmsg@Base 15 ++ recvmsg@Base 15 ++ regcomp@Base 15 ++ regerror@Base 15 ++ regexec@Base 15 ++ regfree@Base 15 ++ remquo@Base 15 ++ remquof@Base 15 ++ remquol@Base 15 ++ scandir64@Base 15 ++ scandir@Base 15 ++ (arch=!sparc64)scanf@Base 15 ++ sched_getaffinity@Base 15 ++ sched_getparam@Base 15 ++ sem_destroy@Base 15 ++ sem_getvalue@Base 15 ++ sem_init@Base 15 ++ sem_open@Base 15 ++ sem_post@Base 15 ++ sem_timedwait@Base 15 ++ sem_trywait@Base 15 ++ sem_unlink@Base 15 ++ sem_wait@Base 15 ++ send@Base 15 ++ sendmmsg@Base 15 ++ sendmsg@Base 15 ++ sendto@Base 15 ++ setbuf@Base 15 ++ setbuffer@Base 15 ++ setgrent@Base 15 ++ setitimer@Base 15 ++ setlinebuf@Base 15 ++ setlocale@Base 15 ++ setpwent@Base 15 ++ setvbuf@Base 15 ++ sigaction@Base 15 ++ sigaltstack@Base 15 ++ sigandset@Base 15 ++ sigemptyset@Base 15 ++ sigfillset@Base 15 ++ siglongjmp@Base 15 ++ signal@Base 15 ++ sigorset@Base 15 ++ sigpending@Base 15 ++ sigprocmask@Base 15 ++ sigtimedwait@Base 15 ++ sigwait@Base 15 ++ sigwaitinfo@Base 15 ++ sincos@Base 15 ++ sincosf@Base 15 ++ sincosl@Base 15 ++ (arch=!sparc64)snprintf@Base 15 ++ (arch=!sparc64)sprintf@Base 15 ++ (arch=!sparc64)sscanf@Base 15 ++ stat64@Base 15 ++ stat@Base 15 ++ statfs64@Base 15 ++ statfs@Base 15 ++ statvfs64@Base 15 ++ statvfs@Base 15 ++ strcasecmp@Base 15 ++ strcasestr@Base 15 ++ strcat@Base 15 ++ strchr@Base 15 ++ strchrnul@Base 15 ++ strcmp@Base 15 ++ strcpy@Base 15 ++ strcspn@Base 15 ++ strdup@Base 15 ++ strerror@Base 15 ++ strerror_r@Base 15 ++ strlen@Base 15 ++ strncasecmp@Base 15 ++ strncat@Base 15 ++ strncmp@Base 15 ++ strncpy@Base 15 ++ strndup@Base 15 ++ strnlen@Base 15 ++ strpbrk@Base 15 ++ strptime@Base 15 ++ strrchr@Base 15 ++ strspn@Base 15 ++ strstr@Base 15 ++ strtoimax@Base 15 ++ strtok@Base 15 ++ strtol@Base 15 ++ strtoll@Base 15 ++ strtoumax@Base 15 ++ strxfrm@Base 15 ++ strxfrm_l@Base 15 ++ swapcontext@Base 15 ++ sysinfo@Base 15 ++ tcgetattr@Base 15 ++ tempnam@Base 15 ++ textdomain@Base 15 ++ time@Base 15 ++ timerfd_gettime@Base 15 ++ timerfd_settime@Base 15 ++ times@Base 15 ++ tmpnam@Base 15 ++ tmpnam_r@Base 15 ++ tsearch@Base 15 ++ ttyname@Base 15 ++ ttyname_r@Base 15 ++ uname@Base 15 ++ valloc@Base 15 ++ (arch=!sparc64)vasprintf@Base 15 ++ (arch=amd64 x32)vfork@Base 15 ++ (arch=!sparc64)vfprintf@Base 15 ++ (arch=!sparc64)vfscanf@Base 15 ++ (arch=!sparc64)vprintf@Base 15 ++ (arch=!sparc64)vscanf@Base 15 ++ (arch=!sparc64)vsnprintf@Base 15 ++ (arch=!sparc64)vsprintf@Base 15 ++ (arch=!sparc64)vsscanf@Base 15 ++ wait3@Base 15 ++ wait4@Base 15 ++ wait@Base 15 ++ waitid@Base 15 ++ waitpid@Base 15 ++ wcrtomb@Base 15 ++ wcscat@Base 15 ++ wcsdup@Base 15 ++ wcslen@Base 15 ++ wcsncat@Base 15 ++ wcsnlen@Base 15 ++ wcsnrtombs@Base 15 ++ wcsrtombs@Base 15 ++ wcstombs@Base 15 ++ wcsxfrm@Base 15 ++ wcsxfrm_l@Base 15 ++ wctomb@Base 15 ++ wordexp@Base 15 ++ write@Base 15 ++ writev@Base 15 ++ xdr_bool@Base 15 ++ xdr_bytes@Base 15 ++ xdr_char@Base 15 ++ xdr_destroy@Base 15 ++ xdr_double@Base 15 ++ xdr_enum@Base 15 ++ xdr_float@Base 15 ++ xdr_hyper@Base 15 ++ xdr_int16_t@Base 15 ++ xdr_int32_t@Base 15 ++ xdr_int64_t@Base 15 ++ xdr_int8_t@Base 15 ++ xdr_int@Base 15 ++ xdr_long@Base 15 ++ xdr_longlong_t@Base 15 ++ xdr_quad_t@Base 15 ++ xdr_short@Base 15 ++ xdr_string@Base 15 ++ xdr_u_char@Base 15 ++ xdr_u_hyper@Base 15 ++ xdr_u_int@Base 15 ++ xdr_u_long@Base 15 ++ xdr_u_longlong_t@Base 15 ++ xdr_u_quad_t@Base 15 ++ xdr_u_short@Base 15 ++ xdr_uint16_t@Base 15 ++ xdr_uint32_t@Base 15 ++ xdr_uint64_t@Base 15 ++ xdr_uint8_t@Base 15 ++ xdrmem_create@Base 15 ++ xdrrec_create@Base 15 ++ xdrstdio_create@Base 15 diff --cc debian/lib32gccLC.postinst index 0000000,0000000..0163e03 new file mode 100644 --- /dev/null +++ b/debian/lib32gccLC.postinst @@@ -1,0 -1,0 +1,12 @@@ ++#! /bin/sh -e ++ ++case "$1" in ++ configure) ++ docdir=/usr/share/doc/lib32gcc@LC@ ++ if [ -d $docdir ] && [ ! -h $docdir ]; then ++ rm -rf $docdir ++ ln -s gcc-@BV@-base $docdir ++ fi ++esac ++ ++#DEBHELPER# diff --cc debian/lib32stdc++CXX.postinst index 0000000,0000000..0ebbeb0 new file mode 100644 --- /dev/null +++ b/debian/lib32stdc++CXX.postinst @@@ -1,0 -1,0 +1,12 @@@ ++#! /bin/sh -e ++ ++case "$1" in ++ configure) ++ docdir=/usr/share/doc/lib32stdc++@CXX@ ++ if [ -d $docdir ] && [ ! -h $docdir ]; then ++ rm -rf $docdir ++ ln -s gcc-@BV@-base $docdir ++ fi ++esac ++ ++#DEBHELPER# diff --cc debian/lib64asan8.symbols index 0000000,0000000..a32f8ce new file mode 100644 --- /dev/null +++ b/debian/lib64asan8.symbols @@@ -1,0 -1,0 +1,3013 @@@ ++# SymbolsHelper-Confirmed: 15 i386 powerpc ++libasan.so.8 lib64asan8 #MINVER# ++ _Unwind_RaiseException@Base 15 ++ _ZdaPv@Base 15 ++ _ZdaPvRKSt9nothrow_t@Base 15 ++ _ZdaPvSt11align_val_t@Base 15 ++ _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 ++ _ZdaPvm@Base 15 ++ _ZdaPvmSt11align_val_t@Base 15 ++ _ZdlPv@Base 15 ++ _ZdlPvRKSt9nothrow_t@Base 15 ++ _ZdlPvSt11align_val_t@Base 15 ++ _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 ++ _ZdlPvm@Base 15 ++ _ZdlPvmSt11align_val_t@Base 15 ++ _Znam@Base 15 ++ _ZnamRKSt9nothrow_t@Base 15 ++ _ZnamSt11align_val_t@Base 15 ++ _ZnamSt11align_val_tRKSt9nothrow_t@Base 15 ++ _Znwm@Base 15 ++ _ZnwmRKSt9nothrow_t@Base 15 ++ _ZnwmSt11align_val_t@Base 15 ++ _ZnwmSt11align_val_tRKSt9nothrow_t@Base 15 ++ (arch=i386)___interceptor__Unwind_RaiseException@Base 15 ++ (arch=i386)___interceptor___b64_ntop@Base 15 ++ (arch=i386)___interceptor___b64_pton@Base 15 ++ (arch=i386)___interceptor___bzero@Base 15 ++ (arch=i386)___interceptor___cxa_atexit@Base 15 ++ (arch=i386)___interceptor___cxa_throw@Base 15 ++ (arch=i386)___interceptor___fprintf_chk@Base 15 ++ (arch=i386)___interceptor___getdelim@Base 15 ++ (arch=i386)___interceptor___isoc23_fscanf@Base 15 ++ (arch=i386)___interceptor___isoc23_scanf@Base 15 ++ (arch=i386)___interceptor___isoc23_sscanf@Base 15 ++ (arch=i386)___interceptor___isoc23_strtoimax@Base 15 ++ (arch=i386)___interceptor___isoc23_strtol@Base 15 ++ (arch=i386)___interceptor___isoc23_strtoll@Base 15 ++ (arch=i386)___interceptor___isoc23_strtoumax@Base 15 ++ (arch=i386)___interceptor___isoc23_vfscanf@Base 15 ++ (arch=i386)___interceptor___isoc23_vscanf@Base 15 ++ (arch=i386)___interceptor___isoc23_vsscanf@Base 15 ++ (arch=i386)___interceptor___isoc99_fprintf@Base 15 ++ (arch=i386)___interceptor___isoc99_fscanf@Base 15 ++ (arch=i386)___interceptor___isoc99_printf@Base 15 ++ (arch=i386)___interceptor___isoc99_scanf@Base 15 ++ (arch=i386)___interceptor___isoc99_snprintf@Base 15 ++ (arch=i386)___interceptor___isoc99_sprintf@Base 15 ++ (arch=i386)___interceptor___isoc99_sscanf@Base 15 ++ (arch=i386)___interceptor___isoc99_vfprintf@Base 15 ++ (arch=i386)___interceptor___isoc99_vfscanf@Base 15 ++ (arch=i386)___interceptor___isoc99_vprintf@Base 15 ++ (arch=i386)___interceptor___isoc99_vscanf@Base 15 ++ (arch=i386)___interceptor___isoc99_vsnprintf@Base 15 ++ (arch=i386)___interceptor___isoc99_vsprintf@Base 15 ++ (arch=i386)___interceptor___isoc99_vsscanf@Base 15 ++ (arch=i386)___interceptor___libc_memalign@Base 15 ++ (arch=i386)___interceptor___longjmp_chk@Base 15 ++ (arch=i386)___interceptor___lxstat64@Base 15 ++ (arch=i386)___interceptor___lxstat@Base 15 ++ (arch=i386)___interceptor___overflow@Base 15 ++ (arch=i386)___interceptor___snprintf_chk@Base 15 ++ (arch=i386)___interceptor___sprintf_chk@Base 15 ++ (arch=i386)___interceptor___strdup@Base 15 ++ (arch=i386)___interceptor___strndup@Base 15 ++ (arch=i386)___interceptor___strxfrm_l@Base 15 ++ (arch=i386)___interceptor___tls_get_addr@Base 15 ++ (arch=i386)___interceptor___uflow@Base 15 ++ (arch=i386)___interceptor___underflow@Base 15 ++ (arch=i386)___interceptor___vsnprintf_chk@Base 15 ++ (arch=i386)___interceptor___vsprintf_chk@Base 15 ++ (arch=i386)___interceptor___wcsxfrm_l@Base 15 ++ (arch=i386)___interceptor___woverflow@Base 15 ++ (arch=i386)___interceptor___wuflow@Base 15 ++ (arch=i386)___interceptor___wunderflow@Base 15 ++ (arch=i386)___interceptor___xpg_strerror_r@Base 15 ++ (arch=i386)___interceptor___xstat64@Base 15 ++ (arch=i386)___interceptor___xstat@Base 15 ++ (arch=i386)___interceptor__exit@Base 15 ++ (arch=i386)___interceptor__longjmp@Base 15 ++ (arch=i386)___interceptor__obstack_begin@Base 15 ++ (arch=i386)___interceptor__obstack_begin_1@Base 15 ++ (arch=i386)___interceptor__obstack_newchunk@Base 15 ++ (arch=i386)___interceptor_accept4@Base 15 ++ (arch=i386)___interceptor_accept@Base 15 ++ (arch=i386)___interceptor_aligned_alloc@Base 15 ++ (arch=i386)___interceptor_argp_parse@Base 15 ++ (arch=i386)___interceptor_asctime@Base 15 ++ (arch=i386)___interceptor_asctime_r@Base 15 ++ (arch=i386)___interceptor_asprintf@Base 15 ++ (arch=i386)___interceptor_atoi@Base 15 ++ (arch=i386)___interceptor_atol@Base 15 ++ (arch=i386)___interceptor_atoll@Base 15 ++ (arch=i386)___interceptor_backtrace@Base 15 ++ (arch=i386)___interceptor_backtrace_symbols@Base 15 ++ (arch=i386)___interceptor_bcmp@Base 15 ++ (arch=i386)___interceptor_bsearch@Base 15 ++ (arch=i386)___interceptor_bzero@Base 15 ++ (arch=i386)___interceptor_calloc@Base 15 ++ (arch=i386)___interceptor_canonicalize_file_name@Base 15 ++ (arch=i386)___interceptor_capget@Base 15 ++ (arch=i386)___interceptor_capset@Base 15 ++ (arch=i386)___interceptor_cfree@Base 15 ++ (arch=i386)___interceptor_clock_getcpuclockid@Base 15 ++ (arch=i386)___interceptor_clock_getres@Base 15 ++ (arch=i386)___interceptor_clock_gettime@Base 15 ++ (arch=i386)___interceptor_clock_settime@Base 15 ++ (arch=i386)___interceptor_confstr@Base 15 ++ (arch=i386)___interceptor_ctermid@Base 15 ++ (arch=i386)___interceptor_ctime@Base 15 ++ (arch=i386)___interceptor_ctime_r@Base 15 ++ (arch=i386)___interceptor_dlclose@Base 15 ++ (arch=i386)___interceptor_dlopen@Base 15 ++ (arch=i386)___interceptor_dn_comp@Base 15 ++ (arch=i386)___interceptor_dn_expand@Base 15 ++ (arch=i386)___interceptor_drand48_r@Base 15 ++ (arch=i386)___interceptor_endgrent@Base 15 ++ (arch=i386)___interceptor_endpwent@Base 15 ++ (arch=i386)___interceptor_ether_aton@Base 15 ++ (arch=i386)___interceptor_ether_aton_r@Base 15 ++ (arch=i386)___interceptor_ether_hostton@Base 15 ++ (arch=i386)___interceptor_ether_line@Base 15 ++ (arch=i386)___interceptor_ether_ntoa@Base 15 ++ (arch=i386)___interceptor_ether_ntoa_r@Base 15 ++ (arch=i386)___interceptor_ether_ntohost@Base 15 ++ (arch=i386)___interceptor_eventfd_read@Base 15 ++ (arch=i386)___interceptor_eventfd_write@Base 15 ++ (arch=i386)___interceptor_fclose@Base 15 ++ (arch=i386)___interceptor_fdopen@Base 15 ++ (arch=i386)___interceptor_fflush@Base 15 ++ (arch=i386)___interceptor_fgetgrent@Base 15 ++ (arch=i386)___interceptor_fgetgrent_r@Base 15 ++ (arch=i386)___interceptor_fgetpwent@Base 15 ++ (arch=i386)___interceptor_fgetpwent_r@Base 15 ++ (arch=i386)___interceptor_fgets@Base 15 ++ (arch=i386)___interceptor_fgetxattr@Base 15 ++ (arch=i386)___interceptor_flistxattr@Base 15 ++ (arch=i386)___interceptor_fmemopen@Base 15 ++ (arch=i386)___interceptor_fopen64@Base 15 ++ (arch=i386)___interceptor_fopen@Base 15 ++ (arch=i386)___interceptor_fopencookie@Base 15 ++ (arch=i386)___interceptor_fprintf@Base 15 ++ (arch=i386)___interceptor_fputs@Base 15 ++ (arch=i386)___interceptor_fread@Base 15 ++ (arch=i386)___interceptor_free@Base 15 ++ (arch=i386)___interceptor_freopen64@Base 15 ++ (arch=i386)___interceptor_freopen@Base 15 ++ (arch=i386)___interceptor_frexp@Base 15 ++ (arch=i386)___interceptor_frexpf@Base 15 ++ (arch=i386)___interceptor_frexpl@Base 15 ++ (arch=i386)___interceptor_fscanf@Base 15 ++ (arch=i386)___interceptor_fstatfs64@Base 15 ++ (arch=i386)___interceptor_fstatfs@Base 15 ++ (arch=i386)___interceptor_fstatvfs64@Base 15 ++ (arch=i386)___interceptor_fstatvfs@Base 15 ++ (arch=i386)___interceptor_ftime@Base 15 ++ (arch=i386)___interceptor_fwrite@Base 15 ++ (arch=i386)___interceptor_get_current_dir_name@Base 15 ++ (arch=i386)___interceptor_getaddrinfo@Base 15 ++ (arch=i386)___interceptor_getcwd@Base 15 ++ (arch=i386)___interceptor_getdelim@Base 15 ++ (arch=i386)___interceptor_getentropy@Base 15 ++ (arch=i386)___interceptor_getgrent@Base 15 ++ (arch=i386)___interceptor_getgrent_r@Base 15 ++ (arch=i386)___interceptor_getgrgid@Base 15 ++ (arch=i386)___interceptor_getgrgid_r@Base 15 ++ (arch=i386)___interceptor_getgrnam@Base 15 ++ (arch=i386)___interceptor_getgrnam_r@Base 15 ++ (arch=i386)___interceptor_getgrouplist@Base 15 ++ (arch=i386)___interceptor_getgroups@Base 15 ++ (arch=i386)___interceptor_gethostbyaddr@Base 15 ++ (arch=i386)___interceptor_gethostbyaddr_r@Base 15 ++ (arch=i386)___interceptor_gethostbyname2@Base 15 ++ (arch=i386)___interceptor_gethostbyname2_r@Base 15 ++ (arch=i386)___interceptor_gethostbyname@Base 15 ++ (arch=i386)___interceptor_gethostbyname_r@Base 15 ++ (arch=i386)___interceptor_gethostent@Base 15 ++ (arch=i386)___interceptor_gethostent_r@Base 15 ++ (arch=i386)___interceptor_getifaddrs@Base 15 ++ (arch=i386)___interceptor_getitimer@Base 15 ++ (arch=i386)___interceptor_getline@Base 15 ++ (arch=i386)___interceptor_getloadavg@Base 15 ++ (arch=i386)___interceptor_getmntent@Base 15 ++ (arch=i386)___interceptor_getmntent_r@Base 15 ++ (arch=i386)___interceptor_getnameinfo@Base 15 ++ (arch=i386)___interceptor_getnetbyaddr@Base 15 ++ (arch=i386)___interceptor_getnetbyname@Base 15 ++ (arch=i386)___interceptor_getnetent@Base 15 ++ (arch=i386)___interceptor_getpass@Base 15 ++ (arch=i386)___interceptor_getpeername@Base 15 ++ (arch=i386)___interceptor_getprotobyname@Base 15 ++ (arch=i386)___interceptor_getprotobyname_r@Base 15 ++ (arch=i386)___interceptor_getprotobynumber@Base 15 ++ (arch=i386)___interceptor_getprotobynumber_r@Base 15 ++ (arch=i386)___interceptor_getprotoent@Base 15 ++ (arch=i386)___interceptor_getprotoent_r@Base 15 ++ (arch=i386)___interceptor_getpwent@Base 15 ++ (arch=i386)___interceptor_getpwent_r@Base 15 ++ (arch=i386)___interceptor_getpwnam@Base 15 ++ (arch=i386)___interceptor_getpwnam_r@Base 15 ++ (arch=i386)___interceptor_getpwuid@Base 15 ++ (arch=i386)___interceptor_getpwuid_r@Base 15 ++ (arch=i386)___interceptor_getrandom@Base 15 ++ (arch=i386)___interceptor_getresgid@Base 15 ++ (arch=i386)___interceptor_getresuid@Base 15 ++ (arch=i386)___interceptor_getsockname@Base 15 ++ (arch=i386)___interceptor_getsockopt@Base 15 ++ (arch=i386)___interceptor_getusershell@Base 15 ++ (arch=i386)___interceptor_getutent@Base 15 ++ (arch=i386)___interceptor_getutid@Base 15 ++ (arch=i386)___interceptor_getutline@Base 15 ++ (arch=i386)___interceptor_getutxent@Base 15 ++ (arch=i386)___interceptor_getutxid@Base 15 ++ (arch=i386)___interceptor_getutxline@Base 15 ++ (arch=i386)___interceptor_getxattr@Base 15 ++ (arch=i386)___interceptor_glob64@Base 15 ++ (arch=i386)___interceptor_glob@Base 15 ++ (arch=i386)___interceptor_gmtime@Base 15 ++ (arch=i386)___interceptor_gmtime_r@Base 15 ++ (arch=i386)___interceptor_iconv@Base 15 ++ (arch=i386)___interceptor_if_indextoname@Base 15 ++ (arch=i386)___interceptor_if_nametoindex@Base 15 ++ (arch=i386)___interceptor_index@Base 15 ++ (arch=i386)___interceptor_inet_aton@Base 15 ++ (arch=i386)___interceptor_inet_ntop@Base 15 ++ (arch=i386)___interceptor_inet_pton@Base 15 ++ (arch=i386)___interceptor_initgroups@Base 15 ++ (arch=i386)___interceptor_ioctl@Base 15 ++ (arch=i386)___interceptor_lgamma@Base 15 ++ (arch=i386)___interceptor_lgamma_r@Base 15 ++ (arch=i386)___interceptor_lgammaf@Base 15 ++ (arch=i386)___interceptor_lgammaf_r@Base 15 ++ (arch=i386)___interceptor_lgammal@Base 15 ++ (arch=i386)___interceptor_lgammal_r@Base 15 ++ (arch=i386)___interceptor_lgetxattr@Base 15 ++ (arch=i386)___interceptor_listxattr@Base 15 ++ (arch=i386)___interceptor_llistxattr@Base 15 ++ (arch=i386)___interceptor_localtime@Base 15 ++ (arch=i386)___interceptor_localtime_r@Base 15 ++ (arch=i386)___interceptor_longjmp@Base 15 ++ (arch=i386)___interceptor_lrand48_r@Base 15 ++ (arch=i386)___interceptor_lstat64@Base 15 ++ (arch=i386)___interceptor_lstat@Base 15 ++ (arch=i386)___interceptor_makecontext@Base 15 ++ (arch=i386)___interceptor_mallinfo@Base 15 ++ (arch=i386)___interceptor_malloc@Base 15 ++ (arch=i386)___interceptor_malloc_stats@Base 15 ++ (arch=i386)___interceptor_malloc_usable_size@Base 15 ++ (arch=i386)___interceptor_mallopt@Base 15 ++ (arch=i386)___interceptor_mbsnrtowcs@Base 15 ++ (arch=i386)___interceptor_mbsrtowcs@Base 15 ++ (arch=i386)___interceptor_mbstowcs@Base 15 ++ (arch=i386)___interceptor_mcheck@Base 15 ++ (arch=i386)___interceptor_mcheck_pedantic@Base 15 ++ (arch=i386)___interceptor_memalign@Base 15 ++ (arch=i386)___interceptor_memchr@Base 15 ++ (arch=i386)___interceptor_memcmp@Base 15 ++ (arch=i386)___interceptor_memcpy@Base 15 ++ (arch=i386)___interceptor_memmem@Base 15 ++ (arch=i386)___interceptor_memmove@Base 15 ++ (arch=i386)___interceptor_memrchr@Base 15 ++ (arch=i386)___interceptor_memset@Base 15 ++ (arch=i386)___interceptor_mincore@Base 15 ++ (arch=i386)___interceptor_mktime@Base 15 ++ (arch=i386)___interceptor_mlock@Base 15 ++ (arch=i386)___interceptor_mlockall@Base 15 ++ (arch=i386)___interceptor_mmap64@Base 15 ++ (arch=i386)___interceptor_mmap@Base 15 ++ (arch=i386)___interceptor_modf@Base 15 ++ (arch=i386)___interceptor_modff@Base 15 ++ (arch=i386)___interceptor_modfl@Base 15 ++ (arch=i386)___interceptor_mprobe@Base 15 ++ (arch=i386)___interceptor_mprotect@Base 15 ++ (arch=i386)___interceptor_msgrcv@Base 15 ++ (arch=i386)___interceptor_msgsnd@Base 15 ++ (arch=i386)___interceptor_munlock@Base 15 ++ (arch=i386)___interceptor_munlockall@Base 15 ++ (arch=i386)___interceptor_munmap@Base 15 ++ (arch=i386)___interceptor_name_to_handle_at@Base 15 ++ (arch=i386)___interceptor_open_by_handle_at@Base 15 ++ (arch=i386)___interceptor_open_memstream@Base 15 ++ (arch=i386)___interceptor_open_wmemstream@Base 15 ++ (arch=i386)___interceptor_opendir@Base 15 ++ (arch=i386)___interceptor_pclose@Base 15 ++ (arch=i386)___interceptor_poll@Base 15 ++ (arch=i386)___interceptor_popen@Base 15 ++ (arch=i386)___interceptor_posix_memalign@Base 15 ++ (arch=i386)___interceptor_posix_spawn@Base 15 ++ (arch=i386)___interceptor_posix_spawnp@Base 15 ++ (arch=i386)___interceptor_ppoll@Base 15 ++ (arch=i386)___interceptor_prctl@Base 15 ++ (arch=i386)___interceptor_pread64@Base 15 ++ (arch=i386)___interceptor_pread@Base 15 ++ (arch=i386)___interceptor_preadv2@Base 15 ++ (arch=i386)___interceptor_preadv64@Base 15 ++ (arch=i386)___interceptor_preadv@Base 15 ++ (arch=i386)___interceptor_printf@Base 15 ++ (arch=i386)___interceptor_process_vm_readv@Base 15 ++ (arch=i386)___interceptor_process_vm_writev@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getaffinity_np@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getdetachstate@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getguardsize@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getinheritsched@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getschedparam@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getschedpolicy@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getscope@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getstack@Base 15 ++ (arch=i386)___interceptor_pthread_attr_getstacksize@Base 15 ++ (arch=i386)___interceptor_pthread_barrierattr_getpshared@Base 15 ++ (arch=i386)___interceptor_pthread_condattr_getclock@Base 15 ++ (arch=i386)___interceptor_pthread_condattr_getpshared@Base 15 ++ (arch=i386)___interceptor_pthread_create@Base 15 ++ (arch=i386)___interceptor_pthread_detach@Base 15 ++ (arch=i386)___interceptor_pthread_exit@Base 15 ++ (arch=i386)___interceptor_pthread_getaffinity_np@Base 15 ++ (arch=i386)___interceptor_pthread_getcpuclockid@Base 15 ++ (arch=i386)___interceptor_pthread_getname_np@Base 15 ++ (arch=i386)___interceptor_pthread_getschedparam@Base 15 ++ (arch=i386)___interceptor_pthread_join@Base 15 ++ (arch=i386)___interceptor_pthread_mutexattr_getprioceiling@Base 15 ++ (arch=i386)___interceptor_pthread_mutexattr_getprotocol@Base 15 ++ (arch=i386)___interceptor_pthread_mutexattr_getpshared@Base 15 ++ (arch=i386)___interceptor_pthread_mutexattr_getrobust@Base 15 ++ (arch=i386)___interceptor_pthread_mutexattr_getrobust_np@Base 15 ++ (arch=i386)___interceptor_pthread_mutexattr_gettype@Base 15 ++ (arch=i386)___interceptor_pthread_rwlockattr_getkind_np@Base 15 ++ (arch=i386)___interceptor_pthread_rwlockattr_getpshared@Base 15 ++ (arch=i386)___interceptor_pthread_setcancelstate@Base 15 ++ (arch=i386)___interceptor_pthread_setcanceltype@Base 15 ++ (arch=i386)___interceptor_pthread_setname_np@Base 15 ++ (arch=i386)___interceptor_pthread_sigmask@Base 15 ++ (arch=i386)___interceptor_pthread_timedjoin_np@Base 15 ++ (arch=i386)___interceptor_pthread_tryjoin_np@Base 15 ++ (arch=i386)___interceptor_ptrace@Base 15 ++ (arch=i386)___interceptor_ptsname@Base 15 ++ (arch=i386)___interceptor_ptsname_r@Base 15 ++ (arch=i386)___interceptor_puts@Base 15 ++ (arch=i386)___interceptor_pututxline@Base 15 ++ (arch=i386)___interceptor_pvalloc@Base 15 ++ (arch=i386)___interceptor_pwrite64@Base 15 ++ (arch=i386)___interceptor_pwrite@Base 15 ++ (arch=i386)___interceptor_pwritev2@Base 15 ++ (arch=i386)___interceptor_pwritev64@Base 15 ++ (arch=i386)___interceptor_pwritev@Base 15 ++ (arch=i386)___interceptor_qsort@Base 15 ++ (arch=i386)___interceptor_qsort_r@Base 15 ++ (arch=i386)___interceptor_rand_r@Base 15 ++ (arch=i386)___interceptor_random_r@Base 15 ++ (arch=i386)___interceptor_read@Base 15 ++ (arch=i386)___interceptor_readdir64@Base 15 ++ (arch=i386)___interceptor_readdir64_r@Base 15 ++ (arch=i386)___interceptor_readdir@Base 15 ++ (arch=i386)___interceptor_readdir_r@Base 15 ++ (arch=i386)___interceptor_readlink@Base 15 ++ (arch=i386)___interceptor_readlinkat@Base 15 ++ (arch=i386)___interceptor_readv@Base 15 ++ (arch=i386)___interceptor_realloc@Base 15 ++ (arch=i386)___interceptor_reallocarray@Base 15 ++ (arch=i386)___interceptor_realpath@Base 15 ++ (arch=i386)___interceptor_recv@Base 15 ++ (arch=i386)___interceptor_recvfrom@Base 15 ++ (arch=i386)___interceptor_recvmmsg@Base 15 ++ (arch=i386)___interceptor_recvmsg@Base 15 ++ (arch=i386)___interceptor_regcomp@Base 15 ++ (arch=i386)___interceptor_regerror@Base 15 ++ (arch=i386)___interceptor_regexec@Base 15 ++ (arch=i386)___interceptor_regfree@Base 15 ++ (arch=i386)___interceptor_remquo@Base 15 ++ (arch=i386)___interceptor_remquof@Base 15 ++ (arch=i386)___interceptor_remquol@Base 15 ++ (arch=i386)___interceptor_scandir64@Base 15 ++ (arch=i386)___interceptor_scandir@Base 15 ++ (arch=i386)___interceptor_scanf@Base 15 ++ (arch=i386)___interceptor_sched_getaffinity@Base 15 ++ (arch=i386)___interceptor_sched_getparam@Base 15 ++ (arch=i386)___interceptor_sem_destroy@Base 15 ++ (arch=i386)___interceptor_sem_getvalue@Base 15 ++ (arch=i386)___interceptor_sem_init@Base 15 ++ (arch=i386)___interceptor_sem_open@Base 15 ++ (arch=i386)___interceptor_sem_post@Base 15 ++ (arch=i386)___interceptor_sem_timedwait@Base 15 ++ (arch=i386)___interceptor_sem_trywait@Base 15 ++ (arch=i386)___interceptor_sem_unlink@Base 15 ++ (arch=i386)___interceptor_sem_wait@Base 15 ++ (arch=i386)___interceptor_send@Base 15 ++ (arch=i386)___interceptor_sendmmsg@Base 15 ++ (arch=i386)___interceptor_sendmsg@Base 15 ++ (arch=i386)___interceptor_sendto@Base 15 ++ (arch=i386)___interceptor_setbuf@Base 15 ++ (arch=i386)___interceptor_setbuffer@Base 15 ++ (arch=i386)___interceptor_setgrent@Base 15 ++ (arch=i386)___interceptor_setitimer@Base 15 ++ (arch=i386)___interceptor_setlinebuf@Base 15 ++ (arch=i386)___interceptor_setlocale@Base 15 ++ (arch=i386)___interceptor_setpwent@Base 15 ++ (arch=i386)___interceptor_setvbuf@Base 15 ++ (arch=i386)___interceptor_shmctl@Base 15 ++ (arch=i386)___interceptor_sigaction@Base 15 ++ (arch=i386)___interceptor_sigaltstack@Base 15 ++ (arch=i386)___interceptor_sigandset@Base 15 ++ (arch=i386)___interceptor_sigemptyset@Base 15 ++ (arch=i386)___interceptor_sigfillset@Base 15 ++ (arch=i386)___interceptor_siglongjmp@Base 15 ++ (arch=i386)___interceptor_signal@Base 15 ++ (arch=i386)___interceptor_sigorset@Base 15 ++ (arch=i386)___interceptor_sigpending@Base 15 ++ (arch=i386)___interceptor_sigprocmask@Base 15 ++ (arch=i386)___interceptor_sigtimedwait@Base 15 ++ (arch=i386)___interceptor_sigwait@Base 15 ++ (arch=i386)___interceptor_sigwaitinfo@Base 15 ++ (arch=i386)___interceptor_sincos@Base 15 ++ (arch=i386)___interceptor_sincosf@Base 15 ++ (arch=i386)___interceptor_sincosl@Base 15 ++ (arch=i386)___interceptor_snprintf@Base 15 ++ (arch=i386)___interceptor_sprintf@Base 15 ++ (arch=i386)___interceptor_sscanf@Base 15 ++ (arch=i386)___interceptor_stat64@Base 15 ++ (arch=i386)___interceptor_stat@Base 15 ++ (arch=i386)___interceptor_statfs64@Base 15 ++ (arch=i386)___interceptor_statfs@Base 15 ++ (arch=i386)___interceptor_statvfs64@Base 15 ++ (arch=i386)___interceptor_statvfs@Base 15 ++ (arch=i386)___interceptor_strcasecmp@Base 15 ++ (arch=i386)___interceptor_strcasestr@Base 15 ++ (arch=i386)___interceptor_strcat@Base 15 ++ (arch=i386)___interceptor_strchr@Base 15 ++ (arch=i386)___interceptor_strchrnul@Base 15 ++ (arch=i386)___interceptor_strcmp@Base 15 ++ (arch=i386)___interceptor_strcpy@Base 15 ++ (arch=i386)___interceptor_strcspn@Base 15 ++ (arch=i386)___interceptor_strdup@Base 15 ++ (arch=i386)___interceptor_strerror@Base 15 ++ (arch=i386)___interceptor_strerror_r@Base 15 ++ (arch=i386)___interceptor_strlen@Base 15 ++ (arch=i386)___interceptor_strncasecmp@Base 15 ++ (arch=i386)___interceptor_strncat@Base 15 ++ (arch=i386)___interceptor_strncmp@Base 15 ++ (arch=i386)___interceptor_strncpy@Base 15 ++ (arch=i386)___interceptor_strndup@Base 15 ++ (arch=i386)___interceptor_strnlen@Base 15 ++ (arch=i386)___interceptor_strpbrk@Base 15 ++ (arch=i386)___interceptor_strptime@Base 15 ++ (arch=i386)___interceptor_strrchr@Base 15 ++ (arch=i386)___interceptor_strspn@Base 15 ++ (arch=i386)___interceptor_strstr@Base 15 ++ (arch=i386)___interceptor_strtoimax@Base 15 ++ (arch=i386)___interceptor_strtok@Base 15 ++ (arch=i386)___interceptor_strtol@Base 15 ++ (arch=i386)___interceptor_strtoll@Base 15 ++ (arch=i386)___interceptor_strtoumax@Base 15 ++ (arch=i386)___interceptor_strxfrm@Base 15 ++ (arch=i386)___interceptor_strxfrm_l@Base 15 ++ (arch=i386)___interceptor_swapcontext@Base 15 ++ (arch=i386)___interceptor_sysinfo@Base 15 ++ (arch=i386)___interceptor_tcgetattr@Base 15 ++ (arch=i386)___interceptor_tempnam@Base 15 ++ (arch=i386)___interceptor_textdomain@Base 15 ++ (arch=i386)___interceptor_time@Base 15 ++ (arch=i386)___interceptor_timerfd_gettime@Base 15 ++ (arch=i386)___interceptor_timerfd_settime@Base 15 ++ (arch=i386)___interceptor_times@Base 15 ++ (arch=i386)___interceptor_tmpnam@Base 15 ++ (arch=i386)___interceptor_tmpnam_r@Base 15 ++ (arch=i386)___interceptor_tsearch@Base 15 ++ (arch=i386)___interceptor_ttyname@Base 15 ++ (arch=i386)___interceptor_ttyname_r@Base 15 ++ (arch=i386)___interceptor_uname@Base 15 ++ (arch=i386)___interceptor_valloc@Base 15 ++ (arch=i386)___interceptor_vasprintf@Base 15 ++ (arch=i386)___interceptor_vfork@Base 15 ++ (arch=i386)___interceptor_vfprintf@Base 15 ++ (arch=i386)___interceptor_vfscanf@Base 15 ++ (arch=i386)___interceptor_vprintf@Base 15 ++ (arch=i386)___interceptor_vscanf@Base 15 ++ (arch=i386)___interceptor_vsnprintf@Base 15 ++ (arch=i386)___interceptor_vsprintf@Base 15 ++ (arch=i386)___interceptor_vsscanf@Base 15 ++ (arch=i386)___interceptor_wait3@Base 15 ++ (arch=i386)___interceptor_wait4@Base 15 ++ (arch=i386)___interceptor_wait@Base 15 ++ (arch=i386)___interceptor_waitid@Base 15 ++ (arch=i386)___interceptor_waitpid@Base 15 ++ (arch=i386)___interceptor_wcrtomb@Base 15 ++ (arch=i386)___interceptor_wcscat@Base 15 ++ (arch=i386)___interceptor_wcsdup@Base 15 ++ (arch=i386)___interceptor_wcslen@Base 15 ++ (arch=i386)___interceptor_wcsncat@Base 15 ++ (arch=i386)___interceptor_wcsnlen@Base 15 ++ (arch=i386)___interceptor_wcsnrtombs@Base 15 ++ (arch=i386)___interceptor_wcsrtombs@Base 15 ++ (arch=i386)___interceptor_wcstombs@Base 15 ++ (arch=i386)___interceptor_wcsxfrm@Base 15 ++ (arch=i386)___interceptor_wcsxfrm_l@Base 15 ++ (arch=i386)___interceptor_wctomb@Base 15 ++ (arch=i386)___interceptor_wordexp@Base 15 ++ (arch=i386)___interceptor_write@Base 15 ++ (arch=i386)___interceptor_writev@Base 15 ++ (arch=i386)___interceptor_xdr_bool@Base 15 ++ (arch=i386)___interceptor_xdr_bytes@Base 15 ++ (arch=i386)___interceptor_xdr_char@Base 15 ++ (arch=i386)___interceptor_xdr_destroy@Base 15 ++ (arch=i386)___interceptor_xdr_double@Base 15 ++ (arch=i386)___interceptor_xdr_enum@Base 15 ++ (arch=i386)___interceptor_xdr_float@Base 15 ++ (arch=i386)___interceptor_xdr_hyper@Base 15 ++ (arch=i386)___interceptor_xdr_int16_t@Base 15 ++ (arch=i386)___interceptor_xdr_int32_t@Base 15 ++ (arch=i386)___interceptor_xdr_int64_t@Base 15 ++ (arch=i386)___interceptor_xdr_int8_t@Base 15 ++ (arch=i386)___interceptor_xdr_int@Base 15 ++ (arch=i386)___interceptor_xdr_long@Base 15 ++ (arch=i386)___interceptor_xdr_longlong_t@Base 15 ++ (arch=i386)___interceptor_xdr_quad_t@Base 15 ++ (arch=i386)___interceptor_xdr_short@Base 15 ++ (arch=i386)___interceptor_xdr_string@Base 15 ++ (arch=i386)___interceptor_xdr_u_char@Base 15 ++ (arch=i386)___interceptor_xdr_u_hyper@Base 15 ++ (arch=i386)___interceptor_xdr_u_int@Base 15 ++ (arch=i386)___interceptor_xdr_u_long@Base 15 ++ (arch=i386)___interceptor_xdr_u_longlong_t@Base 15 ++ (arch=i386)___interceptor_xdr_u_quad_t@Base 15 ++ (arch=i386)___interceptor_xdr_u_short@Base 15 ++ (arch=i386)___interceptor_xdr_uint16_t@Base 15 ++ (arch=i386)___interceptor_xdr_uint32_t@Base 15 ++ (arch=i386)___interceptor_xdr_uint64_t@Base 15 ++ (arch=i386)___interceptor_xdr_uint8_t@Base 15 ++ (arch=i386)___interceptor_xdrmem_create@Base 15 ++ (arch=i386)___interceptor_xdrrec_create@Base 15 ++ (arch=i386)___interceptor_xdrstdio_create@Base 15 ++ __asan_addr_is_in_fake_stack@Base 15 ++ __asan_address_is_poisoned@Base 15 ++ __asan_after_dynamic_init@Base 15 ++ __asan_alloca_poison@Base 15 ++ __asan_allocas_unpoison@Base 15 ++ __asan_backtrace_alloc@Base 15 ++ __asan_backtrace_close@Base 15 ++ __asan_backtrace_create_state@Base 15 ++ __asan_backtrace_dwarf_add@Base 15 ++ __asan_backtrace_free@Base 15 ++ __asan_backtrace_get_view@Base 15 ++ __asan_backtrace_initialize@Base 15 ++ __asan_backtrace_open@Base 15 ++ __asan_backtrace_pcinfo@Base 15 ++ __asan_backtrace_qsort@Base 15 ++ __asan_backtrace_release_view@Base 15 ++ __asan_backtrace_syminfo@Base 15 ++ __asan_backtrace_syminfo_to_full_callback@Base 15 ++ __asan_backtrace_syminfo_to_full_error_callback@Base 15 ++ __asan_backtrace_uncompress_lzma@Base 15 ++ __asan_backtrace_uncompress_zdebug@Base 15 ++ __asan_backtrace_uncompress_zstd@Base 15 ++ __asan_backtrace_vector_finish@Base 15 ++ __asan_backtrace_vector_grow@Base 15 ++ __asan_backtrace_vector_release@Base 15 ++ __asan_before_dynamic_init@Base 15 ++ __asan_cplus_demangle_builtin_types@Base 15 ++ __asan_cplus_demangle_fill_ctor@Base 15 ++ __asan_cplus_demangle_fill_dtor@Base 15 ++ __asan_cplus_demangle_fill_extended_operator@Base 15 ++ __asan_cplus_demangle_fill_name@Base 15 ++ __asan_cplus_demangle_init_info@Base 15 ++ __asan_cplus_demangle_mangled_name@Base 15 ++ __asan_cplus_demangle_operators@Base 15 ++ __asan_cplus_demangle_print@Base 15 ++ __asan_cplus_demangle_print_callback@Base 15 ++ __asan_cplus_demangle_type@Base 15 ++ __asan_cplus_demangle_v3@Base 15 ++ __asan_cplus_demangle_v3_callback@Base 15 ++ __asan_default_options@Base 15 ++ __asan_default_suppressions@Base 15 ++ __asan_describe_address@Base 15 ++ __asan_exp_load16@Base 15 ++ __asan_exp_load1@Base 15 ++ __asan_exp_load2@Base 15 ++ __asan_exp_load4@Base 15 ++ __asan_exp_load8@Base 15 ++ __asan_exp_loadN@Base 15 ++ __asan_exp_store16@Base 15 ++ __asan_exp_store1@Base 15 ++ __asan_exp_store2@Base 15 ++ __asan_exp_store4@Base 15 ++ __asan_exp_store8@Base 15 ++ __asan_exp_storeN@Base 15 ++ __asan_get_alloc_stack@Base 15 ++ __asan_get_current_fake_stack@Base 15 ++ __asan_get_free_stack@Base 15 ++ __asan_get_report_access_size@Base 15 ++ __asan_get_report_access_type@Base 15 ++ __asan_get_report_address@Base 15 ++ __asan_get_report_bp@Base 15 ++ __asan_get_report_description@Base 15 ++ __asan_get_report_pc@Base 15 ++ __asan_get_report_sp@Base 15 ++ __asan_get_shadow_mapping@Base 15 ++ __asan_handle_no_return@Base 15 ++ __asan_handle_vfork@Base 15 ++ __asan_init@Base 15 ++ __asan_internal_memcmp@Base 15 ++ __asan_internal_memcpy@Base 15 ++ __asan_internal_memset@Base 15 ++ __asan_internal_strcmp@Base 15 ++ __asan_internal_strlen@Base 15 ++ __asan_internal_strncmp@Base 15 ++ __asan_internal_strnlen@Base 15 ++ __asan_is_gnu_v3_mangled_ctor@Base 15 ++ __asan_is_gnu_v3_mangled_dtor@Base 15 ++ __asan_java_demangle_v3@Base 15 ++ __asan_java_demangle_v3_callback@Base 15 ++ __asan_load16@Base 15 ++ __asan_load16_noabort@Base 15 ++ __asan_load1@Base 15 ++ __asan_load1_noabort@Base 15 ++ __asan_load2@Base 15 ++ __asan_load2_noabort@Base 15 ++ __asan_load4@Base 15 ++ __asan_load4_noabort@Base 15 ++ __asan_load8@Base 15 ++ __asan_load8_noabort@Base 15 ++ __asan_loadN@Base 15 ++ __asan_loadN_noabort@Base 15 ++ __asan_load_cxx_array_cookie@Base 15 ++ __asan_locate_address@Base 15 ++ __asan_memcpy@Base 15 ++ __asan_memmove@Base 15 ++ __asan_memset@Base 15 ++ __asan_on_error@Base 15 ++ __asan_option_detect_stack_use_after_return@Base 15 ++ __asan_poison_cxx_array_cookie@Base 15 ++ __asan_poison_intra_object_redzone@Base 15 ++ __asan_poison_memory_region@Base 15 ++ __asan_poison_stack_memory@Base 15 ++ __asan_print_accumulated_stats@Base 15 ++ __asan_region_is_poisoned@Base 15 ++ __asan_register_elf_globals@Base 15 ++ __asan_register_globals@Base 15 ++ __asan_register_image_globals@Base 15 ++ __asan_report_error@Base 15 ++ __asan_report_exp_load16@Base 15 ++ __asan_report_exp_load1@Base 15 ++ __asan_report_exp_load2@Base 15 ++ __asan_report_exp_load4@Base 15 ++ __asan_report_exp_load8@Base 15 ++ __asan_report_exp_load_n@Base 15 ++ __asan_report_exp_store16@Base 15 ++ __asan_report_exp_store1@Base 15 ++ __asan_report_exp_store2@Base 15 ++ __asan_report_exp_store4@Base 15 ++ __asan_report_exp_store8@Base 15 ++ __asan_report_exp_store_n@Base 15 ++ __asan_report_load16@Base 15 ++ __asan_report_load16_noabort@Base 15 ++ __asan_report_load1@Base 15 ++ __asan_report_load1_noabort@Base 15 ++ __asan_report_load2@Base 15 ++ __asan_report_load2_noabort@Base 15 ++ __asan_report_load4@Base 15 ++ __asan_report_load4_noabort@Base 15 ++ __asan_report_load8@Base 15 ++ __asan_report_load8_noabort@Base 15 ++ __asan_report_load_n@Base 15 ++ __asan_report_load_n_noabort@Base 15 ++ __asan_report_present@Base 15 ++ __asan_report_store16@Base 15 ++ __asan_report_store16_noabort@Base 15 ++ __asan_report_store1@Base 15 ++ __asan_report_store1_noabort@Base 15 ++ __asan_report_store2@Base 15 ++ __asan_report_store2_noabort@Base 15 ++ __asan_report_store4@Base 15 ++ __asan_report_store4_noabort@Base 15 ++ __asan_report_store8@Base 15 ++ __asan_report_store8_noabort@Base 15 ++ __asan_report_store_n@Base 15 ++ __asan_report_store_n_noabort@Base 15 ++ __asan_rt_version@Base 15 ++ __asan_set_death_callback@Base 15 ++ __asan_set_error_report_callback@Base 15 ++ __asan_set_shadow_00@Base 15 ++ __asan_set_shadow_01@Base 15 ++ __asan_set_shadow_02@Base 15 ++ __asan_set_shadow_03@Base 15 ++ __asan_set_shadow_04@Base 15 ++ __asan_set_shadow_05@Base 15 ++ __asan_set_shadow_06@Base 15 ++ __asan_set_shadow_07@Base 15 ++ __asan_set_shadow_f1@Base 15 ++ __asan_set_shadow_f2@Base 15 ++ __asan_set_shadow_f3@Base 15 ++ __asan_set_shadow_f5@Base 15 ++ __asan_set_shadow_f8@Base 15 ++ __asan_shadow_memory_dynamic_address@Base 15 ++ __asan_stack_free_0@Base 15 ++ __asan_stack_free_10@Base 15 ++ __asan_stack_free_1@Base 15 ++ __asan_stack_free_2@Base 15 ++ __asan_stack_free_3@Base 15 ++ __asan_stack_free_4@Base 15 ++ __asan_stack_free_5@Base 15 ++ __asan_stack_free_6@Base 15 ++ __asan_stack_free_7@Base 15 ++ __asan_stack_free_8@Base 15 ++ __asan_stack_free_9@Base 15 ++ __asan_stack_malloc_0@Base 15 ++ __asan_stack_malloc_10@Base 15 ++ __asan_stack_malloc_1@Base 15 ++ __asan_stack_malloc_2@Base 15 ++ __asan_stack_malloc_3@Base 15 ++ __asan_stack_malloc_4@Base 15 ++ __asan_stack_malloc_5@Base 15 ++ __asan_stack_malloc_6@Base 15 ++ __asan_stack_malloc_7@Base 15 ++ __asan_stack_malloc_8@Base 15 ++ __asan_stack_malloc_9@Base 15 ++ __asan_stack_malloc_always_0@Base 15 ++ __asan_stack_malloc_always_10@Base 15 ++ __asan_stack_malloc_always_1@Base 15 ++ __asan_stack_malloc_always_2@Base 15 ++ __asan_stack_malloc_always_3@Base 15 ++ __asan_stack_malloc_always_4@Base 15 ++ __asan_stack_malloc_always_5@Base 15 ++ __asan_stack_malloc_always_6@Base 15 ++ __asan_stack_malloc_always_7@Base 15 ++ __asan_stack_malloc_always_8@Base 15 ++ __asan_stack_malloc_always_9@Base 15 ++ __asan_store16@Base 15 ++ __asan_store16_noabort@Base 15 ++ __asan_store1@Base 15 ++ __asan_store1_noabort@Base 15 ++ __asan_store2@Base 15 ++ __asan_store2_noabort@Base 15 ++ __asan_store4@Base 15 ++ __asan_store4_noabort@Base 15 ++ __asan_store8@Base 15 ++ __asan_store8_noabort@Base 15 ++ __asan_storeN@Base 15 ++ __asan_storeN_noabort@Base 15 ++ __asan_test_only_reported_buggy_pointer@Base 15 ++ __asan_unpoison_intra_object_redzone@Base 15 ++ __asan_unpoison_memory_region@Base 15 ++ __asan_unpoison_stack_memory@Base 15 ++ __asan_unregister_elf_globals@Base 15 ++ __asan_unregister_globals@Base 15 ++ __asan_unregister_image_globals@Base 15 ++ __asan_update_allocation_context@Base 15 ++ __asan_version_mismatch_check_v8@Base 15 ++ __b64_ntop@Base 15 ++ __b64_pton@Base 15 ++ __bzero@Base 15 ++ __cxa_atexit@Base 15 ++ __cxa_throw@Base 15 ++ __fprintf_chk@Base 15 ++ __getdelim@Base 15 ++ __interceptor__Unwind_RaiseException@Base 15 ++ __interceptor___b64_ntop@Base 15 ++ __interceptor___b64_pton@Base 15 ++ __interceptor___bzero@Base 15 ++ __interceptor___cxa_atexit@Base 15 ++ __interceptor___cxa_throw@Base 15 ++ __interceptor___fprintf_chk@Base 15 ++ __interceptor___getdelim@Base 15 ++ __interceptor___isoc23_fscanf@Base 15 ++ __interceptor___isoc23_scanf@Base 15 ++ __interceptor___isoc23_sscanf@Base 15 ++ __interceptor___isoc23_strtoimax@Base 15 ++ __interceptor___isoc23_strtol@Base 15 ++ __interceptor___isoc23_strtoll@Base 15 ++ __interceptor___isoc23_strtoumax@Base 15 ++ __interceptor___isoc23_vfscanf@Base 15 ++ __interceptor___isoc23_vscanf@Base 15 ++ __interceptor___isoc23_vsscanf@Base 15 ++ __interceptor___isoc99_fprintf@Base 15 ++ __interceptor___isoc99_fscanf@Base 15 ++ __interceptor___isoc99_printf@Base 15 ++ __interceptor___isoc99_scanf@Base 15 ++ __interceptor___isoc99_snprintf@Base 15 ++ __interceptor___isoc99_sprintf@Base 15 ++ __interceptor___isoc99_sscanf@Base 15 ++ __interceptor___isoc99_vfprintf@Base 15 ++ __interceptor___isoc99_vfscanf@Base 15 ++ __interceptor___isoc99_vprintf@Base 15 ++ __interceptor___isoc99_vscanf@Base 15 ++ __interceptor___isoc99_vsnprintf@Base 15 ++ __interceptor___isoc99_vsprintf@Base 15 ++ __interceptor___isoc99_vsscanf@Base 15 ++ __interceptor___libc_memalign@Base 15 ++ __interceptor___longjmp_chk@Base 15 ++ __interceptor___lxstat64@Base 15 ++ __interceptor___lxstat@Base 15 ++ __interceptor___overflow@Base 15 ++ __interceptor___snprintf_chk@Base 15 ++ __interceptor___sprintf_chk@Base 15 ++ __interceptor___strdup@Base 15 ++ __interceptor___strndup@Base 15 ++ __interceptor___strxfrm_l@Base 15 ++ __interceptor___tls_get_addr@Base 15 ++ (arch=powerpc)__interceptor___tls_get_addr_opt@Base 15 ++ __interceptor___uflow@Base 15 ++ __interceptor___underflow@Base 15 ++ __interceptor___vsnprintf_chk@Base 15 ++ __interceptor___vsprintf_chk@Base 15 ++ __interceptor___wcsxfrm_l@Base 15 ++ __interceptor___woverflow@Base 15 ++ __interceptor___wuflow@Base 15 ++ __interceptor___wunderflow@Base 15 ++ __interceptor___xpg_strerror_r@Base 15 ++ __interceptor___xstat64@Base 15 ++ __interceptor___xstat@Base 15 ++ __interceptor__exit@Base 15 ++ __interceptor__longjmp@Base 15 ++ __interceptor__obstack_begin@Base 15 ++ __interceptor__obstack_begin_1@Base 15 ++ __interceptor__obstack_newchunk@Base 15 ++ __interceptor_accept4@Base 15 ++ __interceptor_accept@Base 15 ++ __interceptor_aligned_alloc@Base 15 ++ __interceptor_argp_parse@Base 15 ++ __interceptor_asctime@Base 15 ++ __interceptor_asctime_r@Base 15 ++ __interceptor_asprintf@Base 15 ++ __interceptor_atoi@Base 15 ++ __interceptor_atol@Base 15 ++ __interceptor_atoll@Base 15 ++ __interceptor_backtrace@Base 15 ++ __interceptor_backtrace_symbols@Base 15 ++ __interceptor_bcmp@Base 15 ++ __interceptor_bsearch@Base 15 ++ __interceptor_bzero@Base 15 ++ __interceptor_calloc@Base 15 ++ __interceptor_canonicalize_file_name@Base 15 ++ __interceptor_capget@Base 15 ++ __interceptor_capset@Base 15 ++ __interceptor_cfree@Base 15 ++ __interceptor_clock_getcpuclockid@Base 15 ++ __interceptor_clock_getres@Base 15 ++ __interceptor_clock_gettime@Base 15 ++ __interceptor_clock_settime@Base 15 ++ __interceptor_confstr@Base 15 ++ __interceptor_ctermid@Base 15 ++ __interceptor_ctime@Base 15 ++ __interceptor_ctime_r@Base 15 ++ __interceptor_dlclose@Base 15 ++ __interceptor_dlopen@Base 15 ++ __interceptor_dn_comp@Base 15 ++ __interceptor_dn_expand@Base 15 ++ __interceptor_drand48_r@Base 15 ++ __interceptor_endgrent@Base 15 ++ __interceptor_endpwent@Base 15 ++ __interceptor_ether_aton@Base 15 ++ __interceptor_ether_aton_r@Base 15 ++ __interceptor_ether_hostton@Base 15 ++ __interceptor_ether_line@Base 15 ++ __interceptor_ether_ntoa@Base 15 ++ __interceptor_ether_ntoa_r@Base 15 ++ __interceptor_ether_ntohost@Base 15 ++ __interceptor_eventfd_read@Base 15 ++ __interceptor_eventfd_write@Base 15 ++ __interceptor_fclose@Base 15 ++ __interceptor_fdopen@Base 15 ++ __interceptor_fflush@Base 15 ++ __interceptor_fgetgrent@Base 15 ++ __interceptor_fgetgrent_r@Base 15 ++ __interceptor_fgetpwent@Base 15 ++ __interceptor_fgetpwent_r@Base 15 ++ __interceptor_fgets@Base 15 ++ __interceptor_fgetxattr@Base 15 ++ __interceptor_flistxattr@Base 15 ++ __interceptor_fmemopen@Base 15 ++ __interceptor_fopen64@Base 15 ++ __interceptor_fopen@Base 15 ++ __interceptor_fopencookie@Base 15 ++ __interceptor_fprintf@Base 15 ++ __interceptor_fputs@Base 15 ++ __interceptor_fread@Base 15 ++ __interceptor_free@Base 15 ++ __interceptor_freopen64@Base 15 ++ __interceptor_freopen@Base 15 ++ __interceptor_frexp@Base 15 ++ __interceptor_frexpf@Base 15 ++ __interceptor_frexpl@Base 15 ++ __interceptor_fscanf@Base 15 ++ __interceptor_fstatfs64@Base 15 ++ __interceptor_fstatfs@Base 15 ++ __interceptor_fstatvfs64@Base 15 ++ __interceptor_fstatvfs@Base 15 ++ __interceptor_ftime@Base 15 ++ __interceptor_fwrite@Base 15 ++ __interceptor_get_current_dir_name@Base 15 ++ __interceptor_getaddrinfo@Base 15 ++ __interceptor_getcwd@Base 15 ++ __interceptor_getdelim@Base 15 ++ __interceptor_getentropy@Base 15 ++ __interceptor_getgrent@Base 15 ++ __interceptor_getgrent_r@Base 15 ++ __interceptor_getgrgid@Base 15 ++ __interceptor_getgrgid_r@Base 15 ++ __interceptor_getgrnam@Base 15 ++ __interceptor_getgrnam_r@Base 15 ++ __interceptor_getgrouplist@Base 15 ++ __interceptor_getgroups@Base 15 ++ __interceptor_gethostbyaddr@Base 15 ++ __interceptor_gethostbyaddr_r@Base 15 ++ __interceptor_gethostbyname2@Base 15 ++ __interceptor_gethostbyname2_r@Base 15 ++ __interceptor_gethostbyname@Base 15 ++ __interceptor_gethostbyname_r@Base 15 ++ __interceptor_gethostent@Base 15 ++ __interceptor_gethostent_r@Base 15 ++ __interceptor_getifaddrs@Base 15 ++ __interceptor_getitimer@Base 15 ++ __interceptor_getline@Base 15 ++ __interceptor_getloadavg@Base 15 ++ __interceptor_getmntent@Base 15 ++ __interceptor_getmntent_r@Base 15 ++ __interceptor_getnameinfo@Base 15 ++ __interceptor_getnetbyaddr@Base 15 ++ __interceptor_getnetbyname@Base 15 ++ __interceptor_getnetent@Base 15 ++ __interceptor_getpass@Base 15 ++ __interceptor_getpeername@Base 15 ++ __interceptor_getprotobyname@Base 15 ++ __interceptor_getprotobyname_r@Base 15 ++ __interceptor_getprotobynumber@Base 15 ++ __interceptor_getprotobynumber_r@Base 15 ++ __interceptor_getprotoent@Base 15 ++ __interceptor_getprotoent_r@Base 15 ++ __interceptor_getpwent@Base 15 ++ __interceptor_getpwent_r@Base 15 ++ __interceptor_getpwnam@Base 15 ++ __interceptor_getpwnam_r@Base 15 ++ __interceptor_getpwuid@Base 15 ++ __interceptor_getpwuid_r@Base 15 ++ __interceptor_getrandom@Base 15 ++ __interceptor_getresgid@Base 15 ++ __interceptor_getresuid@Base 15 ++ __interceptor_getsockname@Base 15 ++ __interceptor_getsockopt@Base 15 ++ __interceptor_getusershell@Base 15 ++ __interceptor_getutent@Base 15 ++ __interceptor_getutid@Base 15 ++ __interceptor_getutline@Base 15 ++ __interceptor_getutxent@Base 15 ++ __interceptor_getutxid@Base 15 ++ __interceptor_getutxline@Base 15 ++ __interceptor_getxattr@Base 15 ++ __interceptor_glob64@Base 15 ++ __interceptor_glob@Base 15 ++ __interceptor_gmtime@Base 15 ++ __interceptor_gmtime_r@Base 15 ++ __interceptor_iconv@Base 15 ++ __interceptor_if_indextoname@Base 15 ++ __interceptor_if_nametoindex@Base 15 ++ __interceptor_index@Base 15 ++ __interceptor_inet_aton@Base 15 ++ __interceptor_inet_ntop@Base 15 ++ __interceptor_inet_pton@Base 15 ++ __interceptor_initgroups@Base 15 ++ __interceptor_ioctl@Base 15 ++ __interceptor_lgamma@Base 15 ++ __interceptor_lgamma_r@Base 15 ++ __interceptor_lgammaf@Base 15 ++ __interceptor_lgammaf_r@Base 15 ++ __interceptor_lgammal@Base 15 ++ __interceptor_lgammal_r@Base 15 ++ __interceptor_lgetxattr@Base 15 ++ __interceptor_listxattr@Base 15 ++ __interceptor_llistxattr@Base 15 ++ __interceptor_localtime@Base 15 ++ __interceptor_localtime_r@Base 15 ++ __interceptor_longjmp@Base 15 ++ __interceptor_lrand48_r@Base 15 ++ __interceptor_lstat64@Base 15 ++ __interceptor_lstat@Base 15 ++ __interceptor_makecontext@Base 15 ++ __interceptor_mallinfo@Base 15 ++ __interceptor_malloc@Base 15 ++ __interceptor_malloc_stats@Base 15 ++ __interceptor_malloc_usable_size@Base 15 ++ __interceptor_mallopt@Base 15 ++ __interceptor_mbsnrtowcs@Base 15 ++ __interceptor_mbsrtowcs@Base 15 ++ __interceptor_mbstowcs@Base 15 ++ __interceptor_mcheck@Base 15 ++ __interceptor_mcheck_pedantic@Base 15 ++ __interceptor_memalign@Base 15 ++ __interceptor_memchr@Base 15 ++ __interceptor_memcmp@Base 15 ++ __interceptor_memcpy@Base 15 ++ __interceptor_memmem@Base 15 ++ __interceptor_memmove@Base 15 ++ __interceptor_memrchr@Base 15 ++ __interceptor_memset@Base 15 ++ __interceptor_mincore@Base 15 ++ __interceptor_mktime@Base 15 ++ __interceptor_mlock@Base 15 ++ __interceptor_mlockall@Base 15 ++ __interceptor_mmap64@Base 15 ++ __interceptor_mmap@Base 15 ++ __interceptor_modf@Base 15 ++ __interceptor_modff@Base 15 ++ __interceptor_modfl@Base 15 ++ __interceptor_mprobe@Base 15 ++ __interceptor_mprotect@Base 15 ++ __interceptor_msgrcv@Base 15 ++ __interceptor_msgsnd@Base 15 ++ __interceptor_munlock@Base 15 ++ __interceptor_munlockall@Base 15 ++ __interceptor_munmap@Base 15 ++ __interceptor_name_to_handle_at@Base 15 ++ __interceptor_open_by_handle_at@Base 15 ++ __interceptor_open_memstream@Base 15 ++ __interceptor_open_wmemstream@Base 15 ++ __interceptor_opendir@Base 15 ++ __interceptor_pclose@Base 15 ++ __interceptor_poll@Base 15 ++ __interceptor_popen@Base 15 ++ __interceptor_posix_memalign@Base 15 ++ __interceptor_posix_spawn@Base 15 ++ __interceptor_posix_spawnp@Base 15 ++ __interceptor_ppoll@Base 15 ++ __interceptor_prctl@Base 15 ++ __interceptor_pread64@Base 15 ++ __interceptor_pread@Base 15 ++ __interceptor_preadv2@Base 15 ++ __interceptor_preadv64@Base 15 ++ __interceptor_preadv@Base 15 ++ __interceptor_printf@Base 15 ++ __interceptor_process_vm_readv@Base 15 ++ __interceptor_process_vm_writev@Base 15 ++ __interceptor_pthread_attr_getaffinity_np@Base 15 ++ __interceptor_pthread_attr_getdetachstate@Base 15 ++ __interceptor_pthread_attr_getguardsize@Base 15 ++ __interceptor_pthread_attr_getinheritsched@Base 15 ++ __interceptor_pthread_attr_getschedparam@Base 15 ++ __interceptor_pthread_attr_getschedpolicy@Base 15 ++ __interceptor_pthread_attr_getscope@Base 15 ++ __interceptor_pthread_attr_getstack@Base 15 ++ __interceptor_pthread_attr_getstacksize@Base 15 ++ __interceptor_pthread_barrierattr_getpshared@Base 15 ++ __interceptor_pthread_condattr_getclock@Base 15 ++ __interceptor_pthread_condattr_getpshared@Base 15 ++ __interceptor_pthread_create@Base 15 ++ __interceptor_pthread_detach@Base 15 ++ __interceptor_pthread_exit@Base 15 ++ __interceptor_pthread_getaffinity_np@Base 15 ++ __interceptor_pthread_getcpuclockid@Base 15 ++ __interceptor_pthread_getname_np@Base 15 ++ __interceptor_pthread_getschedparam@Base 15 ++ __interceptor_pthread_join@Base 15 ++ __interceptor_pthread_mutexattr_getprioceiling@Base 15 ++ __interceptor_pthread_mutexattr_getprotocol@Base 15 ++ __interceptor_pthread_mutexattr_getpshared@Base 15 ++ __interceptor_pthread_mutexattr_getrobust@Base 15 ++ __interceptor_pthread_mutexattr_getrobust_np@Base 15 ++ __interceptor_pthread_mutexattr_gettype@Base 15 ++ __interceptor_pthread_rwlockattr_getkind_np@Base 15 ++ __interceptor_pthread_rwlockattr_getpshared@Base 15 ++ __interceptor_pthread_setcancelstate@Base 15 ++ __interceptor_pthread_setcanceltype@Base 15 ++ __interceptor_pthread_setname_np@Base 15 ++ __interceptor_pthread_sigmask@Base 15 ++ __interceptor_pthread_timedjoin_np@Base 15 ++ __interceptor_pthread_tryjoin_np@Base 15 ++ __interceptor_ptrace@Base 15 ++ __interceptor_ptsname@Base 15 ++ __interceptor_ptsname_r@Base 15 ++ __interceptor_puts@Base 15 ++ __interceptor_pututxline@Base 15 ++ __interceptor_pvalloc@Base 15 ++ __interceptor_pwrite64@Base 15 ++ __interceptor_pwrite@Base 15 ++ __interceptor_pwritev2@Base 15 ++ __interceptor_pwritev64@Base 15 ++ __interceptor_pwritev@Base 15 ++ __interceptor_qsort@Base 15 ++ __interceptor_qsort_r@Base 15 ++ __interceptor_rand_r@Base 15 ++ __interceptor_random_r@Base 15 ++ __interceptor_read@Base 15 ++ __interceptor_readdir64@Base 15 ++ __interceptor_readdir64_r@Base 15 ++ __interceptor_readdir@Base 15 ++ __interceptor_readdir_r@Base 15 ++ __interceptor_readlink@Base 15 ++ __interceptor_readlinkat@Base 15 ++ __interceptor_readv@Base 15 ++ __interceptor_realloc@Base 15 ++ __interceptor_reallocarray@Base 15 ++ __interceptor_realpath@Base 15 ++ __interceptor_recv@Base 15 ++ __interceptor_recvfrom@Base 15 ++ __interceptor_recvmmsg@Base 15 ++ __interceptor_recvmsg@Base 15 ++ __interceptor_regcomp@Base 15 ++ __interceptor_regerror@Base 15 ++ __interceptor_regexec@Base 15 ++ __interceptor_regfree@Base 15 ++ __interceptor_remquo@Base 15 ++ __interceptor_remquof@Base 15 ++ __interceptor_remquol@Base 15 ++ __interceptor_scandir64@Base 15 ++ __interceptor_scandir@Base 15 ++ __interceptor_scanf@Base 15 ++ __interceptor_sched_getaffinity@Base 15 ++ __interceptor_sched_getparam@Base 15 ++ __interceptor_sem_destroy@Base 15 ++ __interceptor_sem_getvalue@Base 15 ++ __interceptor_sem_init@Base 15 ++ __interceptor_sem_open@Base 15 ++ __interceptor_sem_post@Base 15 ++ __interceptor_sem_timedwait@Base 15 ++ __interceptor_sem_trywait@Base 15 ++ __interceptor_sem_unlink@Base 15 ++ __interceptor_sem_wait@Base 15 ++ __interceptor_send@Base 15 ++ __interceptor_sendmmsg@Base 15 ++ __interceptor_sendmsg@Base 15 ++ __interceptor_sendto@Base 15 ++ __interceptor_setbuf@Base 15 ++ __interceptor_setbuffer@Base 15 ++ __interceptor_setgrent@Base 15 ++ __interceptor_setitimer@Base 15 ++ __interceptor_setlinebuf@Base 15 ++ __interceptor_setlocale@Base 15 ++ __interceptor_setpwent@Base 15 ++ __interceptor_setvbuf@Base 15 ++ __interceptor_shmctl@Base 15 ++ __interceptor_sigaction@Base 15 ++ __interceptor_sigaltstack@Base 15 ++ __interceptor_sigandset@Base 15 ++ __interceptor_sigemptyset@Base 15 ++ __interceptor_sigfillset@Base 15 ++ __interceptor_siglongjmp@Base 15 ++ __interceptor_signal@Base 15 ++ __interceptor_sigorset@Base 15 ++ __interceptor_sigpending@Base 15 ++ __interceptor_sigprocmask@Base 15 ++ __interceptor_sigtimedwait@Base 15 ++ __interceptor_sigwait@Base 15 ++ __interceptor_sigwaitinfo@Base 15 ++ __interceptor_sincos@Base 15 ++ __interceptor_sincosf@Base 15 ++ __interceptor_sincosl@Base 15 ++ __interceptor_snprintf@Base 15 ++ __interceptor_sprintf@Base 15 ++ __interceptor_sscanf@Base 15 ++ __interceptor_stat64@Base 15 ++ __interceptor_stat@Base 15 ++ __interceptor_statfs64@Base 15 ++ __interceptor_statfs@Base 15 ++ __interceptor_statvfs64@Base 15 ++ __interceptor_statvfs@Base 15 ++ __interceptor_strcasecmp@Base 15 ++ __interceptor_strcasestr@Base 15 ++ __interceptor_strcat@Base 15 ++ __interceptor_strchr@Base 15 ++ __interceptor_strchrnul@Base 15 ++ __interceptor_strcmp@Base 15 ++ __interceptor_strcpy@Base 15 ++ __interceptor_strcspn@Base 15 ++ __interceptor_strdup@Base 15 ++ __interceptor_strerror@Base 15 ++ __interceptor_strerror_r@Base 15 ++ __interceptor_strlen@Base 15 ++ __interceptor_strncasecmp@Base 15 ++ __interceptor_strncat@Base 15 ++ __interceptor_strncmp@Base 15 ++ __interceptor_strncpy@Base 15 ++ __interceptor_strndup@Base 15 ++ __interceptor_strnlen@Base 15 ++ __interceptor_strpbrk@Base 15 ++ __interceptor_strptime@Base 15 ++ __interceptor_strrchr@Base 15 ++ __interceptor_strspn@Base 15 ++ __interceptor_strstr@Base 15 ++ __interceptor_strtoimax@Base 15 ++ __interceptor_strtok@Base 15 ++ __interceptor_strtol@Base 15 ++ __interceptor_strtoll@Base 15 ++ __interceptor_strtoumax@Base 15 ++ __interceptor_strxfrm@Base 15 ++ __interceptor_strxfrm_l@Base 15 ++ __interceptor_swapcontext@Base 15 ++ __interceptor_sysinfo@Base 15 ++ __interceptor_tcgetattr@Base 15 ++ __interceptor_tempnam@Base 15 ++ __interceptor_textdomain@Base 15 ++ __interceptor_time@Base 15 ++ __interceptor_timerfd_gettime@Base 15 ++ __interceptor_timerfd_settime@Base 15 ++ __interceptor_times@Base 15 ++ __interceptor_tmpnam@Base 15 ++ __interceptor_tmpnam_r@Base 15 ++ (arch=i386)__interceptor_trampoline__Unwind_RaiseException@Base 15 ++ (arch=i386)__interceptor_trampoline___b64_ntop@Base 15 ++ (arch=i386)__interceptor_trampoline___b64_pton@Base 15 ++ (arch=i386)__interceptor_trampoline___bzero@Base 15 ++ (arch=i386)__interceptor_trampoline___cxa_atexit@Base 15 ++ (arch=i386)__interceptor_trampoline___cxa_throw@Base 15 ++ (arch=i386)__interceptor_trampoline___fprintf_chk@Base 15 ++ (arch=i386)__interceptor_trampoline___getdelim@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_fscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_scanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_sscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_strtoimax@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_strtol@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_strtoll@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_strtoumax@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_vfscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_vscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc23_vsscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_fprintf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_fscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_printf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_scanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_snprintf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_sprintf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_sscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_vfprintf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_vfscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_vprintf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_vscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_vsnprintf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_vsprintf@Base 15 ++ (arch=i386)__interceptor_trampoline___isoc99_vsscanf@Base 15 ++ (arch=i386)__interceptor_trampoline___libc_memalign@Base 15 ++ (arch=i386)__interceptor_trampoline___longjmp_chk@Base 15 ++ (arch=i386)__interceptor_trampoline___lxstat64@Base 15 ++ (arch=i386)__interceptor_trampoline___lxstat@Base 15 ++ (arch=i386)__interceptor_trampoline___overflow@Base 15 ++ (arch=i386)__interceptor_trampoline___snprintf_chk@Base 15 ++ (arch=i386)__interceptor_trampoline___sprintf_chk@Base 15 ++ (arch=i386)__interceptor_trampoline___strdup@Base 15 ++ (arch=i386)__interceptor_trampoline___strndup@Base 15 ++ (arch=i386)__interceptor_trampoline___strxfrm_l@Base 15 ++ (arch=i386)__interceptor_trampoline___tls_get_addr@Base 15 ++ (arch=i386)__interceptor_trampoline___uflow@Base 15 ++ (arch=i386)__interceptor_trampoline___underflow@Base 15 ++ (arch=i386)__interceptor_trampoline___vsnprintf_chk@Base 15 ++ (arch=i386)__interceptor_trampoline___vsprintf_chk@Base 15 ++ (arch=i386)__interceptor_trampoline___wcsxfrm_l@Base 15 ++ (arch=i386)__interceptor_trampoline___woverflow@Base 15 ++ (arch=i386)__interceptor_trampoline___wuflow@Base 15 ++ (arch=i386)__interceptor_trampoline___wunderflow@Base 15 ++ (arch=i386)__interceptor_trampoline___xpg_strerror_r@Base 15 ++ (arch=i386)__interceptor_trampoline___xstat64@Base 15 ++ (arch=i386)__interceptor_trampoline___xstat@Base 15 ++ (arch=i386)__interceptor_trampoline__exit@Base 15 ++ (arch=i386)__interceptor_trampoline__longjmp@Base 15 ++ (arch=i386)__interceptor_trampoline__obstack_begin@Base 15 ++ (arch=i386)__interceptor_trampoline__obstack_begin_1@Base 15 ++ (arch=i386)__interceptor_trampoline__obstack_newchunk@Base 15 ++ (arch=i386)__interceptor_trampoline_accept4@Base 15 ++ (arch=i386)__interceptor_trampoline_accept@Base 15 ++ (arch=i386)__interceptor_trampoline_aligned_alloc@Base 15 ++ (arch=i386)__interceptor_trampoline_argp_parse@Base 15 ++ (arch=i386)__interceptor_trampoline_asctime@Base 15 ++ (arch=i386)__interceptor_trampoline_asctime_r@Base 15 ++ (arch=i386)__interceptor_trampoline_asprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_atoi@Base 15 ++ (arch=i386)__interceptor_trampoline_atol@Base 15 ++ (arch=i386)__interceptor_trampoline_atoll@Base 15 ++ (arch=i386)__interceptor_trampoline_backtrace@Base 15 ++ (arch=i386)__interceptor_trampoline_backtrace_symbols@Base 15 ++ (arch=i386)__interceptor_trampoline_bcmp@Base 15 ++ (arch=i386)__interceptor_trampoline_bsearch@Base 15 ++ (arch=i386)__interceptor_trampoline_bzero@Base 15 ++ (arch=i386)__interceptor_trampoline_calloc@Base 15 ++ (arch=i386)__interceptor_trampoline_canonicalize_file_name@Base 15 ++ (arch=i386)__interceptor_trampoline_capget@Base 15 ++ (arch=i386)__interceptor_trampoline_capset@Base 15 ++ (arch=i386)__interceptor_trampoline_cfree@Base 15 ++ (arch=i386)__interceptor_trampoline_clock_getcpuclockid@Base 15 ++ (arch=i386)__interceptor_trampoline_clock_getres@Base 15 ++ (arch=i386)__interceptor_trampoline_clock_gettime@Base 15 ++ (arch=i386)__interceptor_trampoline_clock_settime@Base 15 ++ (arch=i386)__interceptor_trampoline_confstr@Base 15 ++ (arch=i386)__interceptor_trampoline_ctermid@Base 15 ++ (arch=i386)__interceptor_trampoline_ctime@Base 15 ++ (arch=i386)__interceptor_trampoline_ctime_r@Base 15 ++ (arch=i386)__interceptor_trampoline_dlclose@Base 15 ++ (arch=i386)__interceptor_trampoline_dlopen@Base 15 ++ (arch=i386)__interceptor_trampoline_dn_comp@Base 15 ++ (arch=i386)__interceptor_trampoline_dn_expand@Base 15 ++ (arch=i386)__interceptor_trampoline_drand48_r@Base 15 ++ (arch=i386)__interceptor_trampoline_endgrent@Base 15 ++ (arch=i386)__interceptor_trampoline_endpwent@Base 15 ++ (arch=i386)__interceptor_trampoline_ether_aton@Base 15 ++ (arch=i386)__interceptor_trampoline_ether_aton_r@Base 15 ++ (arch=i386)__interceptor_trampoline_ether_hostton@Base 15 ++ (arch=i386)__interceptor_trampoline_ether_line@Base 15 ++ (arch=i386)__interceptor_trampoline_ether_ntoa@Base 15 ++ (arch=i386)__interceptor_trampoline_ether_ntoa_r@Base 15 ++ (arch=i386)__interceptor_trampoline_ether_ntohost@Base 15 ++ (arch=i386)__interceptor_trampoline_eventfd_read@Base 15 ++ (arch=i386)__interceptor_trampoline_eventfd_write@Base 15 ++ (arch=i386)__interceptor_trampoline_fclose@Base 15 ++ (arch=i386)__interceptor_trampoline_fdopen@Base 15 ++ (arch=i386)__interceptor_trampoline_fflush@Base 15 ++ (arch=i386)__interceptor_trampoline_fgetgrent@Base 15 ++ (arch=i386)__interceptor_trampoline_fgetgrent_r@Base 15 ++ (arch=i386)__interceptor_trampoline_fgetpwent@Base 15 ++ (arch=i386)__interceptor_trampoline_fgetpwent_r@Base 15 ++ (arch=i386)__interceptor_trampoline_fgets@Base 15 ++ (arch=i386)__interceptor_trampoline_fgetxattr@Base 15 ++ (arch=i386)__interceptor_trampoline_flistxattr@Base 15 ++ (arch=i386)__interceptor_trampoline_fmemopen@Base 15 ++ (arch=i386)__interceptor_trampoline_fopen64@Base 15 ++ (arch=i386)__interceptor_trampoline_fopen@Base 15 ++ (arch=i386)__interceptor_trampoline_fopencookie@Base 15 ++ (arch=i386)__interceptor_trampoline_fprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_fputs@Base 15 ++ (arch=i386)__interceptor_trampoline_fread@Base 15 ++ (arch=i386)__interceptor_trampoline_free@Base 15 ++ (arch=i386)__interceptor_trampoline_freopen64@Base 15 ++ (arch=i386)__interceptor_trampoline_freopen@Base 15 ++ (arch=i386)__interceptor_trampoline_frexp@Base 15 ++ (arch=i386)__interceptor_trampoline_frexpf@Base 15 ++ (arch=i386)__interceptor_trampoline_frexpl@Base 15 ++ (arch=i386)__interceptor_trampoline_fscanf@Base 15 ++ (arch=i386)__interceptor_trampoline_fstatfs64@Base 15 ++ (arch=i386)__interceptor_trampoline_fstatfs@Base 15 ++ (arch=i386)__interceptor_trampoline_fstatvfs64@Base 15 ++ (arch=i386)__interceptor_trampoline_fstatvfs@Base 15 ++ (arch=i386)__interceptor_trampoline_ftime@Base 15 ++ (arch=i386)__interceptor_trampoline_fwrite@Base 15 ++ (arch=i386)__interceptor_trampoline_get_current_dir_name@Base 15 ++ (arch=i386)__interceptor_trampoline_getaddrinfo@Base 15 ++ (arch=i386)__interceptor_trampoline_getcwd@Base 15 ++ (arch=i386)__interceptor_trampoline_getdelim@Base 15 ++ (arch=i386)__interceptor_trampoline_getentropy@Base 15 ++ (arch=i386)__interceptor_trampoline_getgrent@Base 15 ++ (arch=i386)__interceptor_trampoline_getgrent_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getgrgid@Base 15 ++ (arch=i386)__interceptor_trampoline_getgrgid_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getgrnam@Base 15 ++ (arch=i386)__interceptor_trampoline_getgrnam_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getgrouplist@Base 15 ++ (arch=i386)__interceptor_trampoline_getgroups@Base 15 ++ (arch=i386)__interceptor_trampoline_gethostbyaddr@Base 15 ++ (arch=i386)__interceptor_trampoline_gethostbyaddr_r@Base 15 ++ (arch=i386)__interceptor_trampoline_gethostbyname2@Base 15 ++ (arch=i386)__interceptor_trampoline_gethostbyname2_r@Base 15 ++ (arch=i386)__interceptor_trampoline_gethostbyname@Base 15 ++ (arch=i386)__interceptor_trampoline_gethostbyname_r@Base 15 ++ (arch=i386)__interceptor_trampoline_gethostent@Base 15 ++ (arch=i386)__interceptor_trampoline_gethostent_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getifaddrs@Base 15 ++ (arch=i386)__interceptor_trampoline_getitimer@Base 15 ++ (arch=i386)__interceptor_trampoline_getline@Base 15 ++ (arch=i386)__interceptor_trampoline_getloadavg@Base 15 ++ (arch=i386)__interceptor_trampoline_getmntent@Base 15 ++ (arch=i386)__interceptor_trampoline_getmntent_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getnameinfo@Base 15 ++ (arch=i386)__interceptor_trampoline_getnetbyaddr@Base 15 ++ (arch=i386)__interceptor_trampoline_getnetbyname@Base 15 ++ (arch=i386)__interceptor_trampoline_getnetent@Base 15 ++ (arch=i386)__interceptor_trampoline_getpass@Base 15 ++ (arch=i386)__interceptor_trampoline_getpeername@Base 15 ++ (arch=i386)__interceptor_trampoline_getprotobyname@Base 15 ++ (arch=i386)__interceptor_trampoline_getprotobyname_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getprotobynumber@Base 15 ++ (arch=i386)__interceptor_trampoline_getprotobynumber_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getprotoent@Base 15 ++ (arch=i386)__interceptor_trampoline_getprotoent_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getpwent@Base 15 ++ (arch=i386)__interceptor_trampoline_getpwent_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getpwnam@Base 15 ++ (arch=i386)__interceptor_trampoline_getpwnam_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getpwuid@Base 15 ++ (arch=i386)__interceptor_trampoline_getpwuid_r@Base 15 ++ (arch=i386)__interceptor_trampoline_getrandom@Base 15 ++ (arch=i386)__interceptor_trampoline_getresgid@Base 15 ++ (arch=i386)__interceptor_trampoline_getresuid@Base 15 ++ (arch=i386)__interceptor_trampoline_getsockname@Base 15 ++ (arch=i386)__interceptor_trampoline_getsockopt@Base 15 ++ (arch=i386)__interceptor_trampoline_getusershell@Base 15 ++ (arch=i386)__interceptor_trampoline_getutent@Base 15 ++ (arch=i386)__interceptor_trampoline_getutid@Base 15 ++ (arch=i386)__interceptor_trampoline_getutline@Base 15 ++ (arch=i386)__interceptor_trampoline_getutxent@Base 15 ++ (arch=i386)__interceptor_trampoline_getutxid@Base 15 ++ (arch=i386)__interceptor_trampoline_getutxline@Base 15 ++ (arch=i386)__interceptor_trampoline_getxattr@Base 15 ++ (arch=i386)__interceptor_trampoline_glob64@Base 15 ++ (arch=i386)__interceptor_trampoline_glob@Base 15 ++ (arch=i386)__interceptor_trampoline_gmtime@Base 15 ++ (arch=i386)__interceptor_trampoline_gmtime_r@Base 15 ++ (arch=i386)__interceptor_trampoline_iconv@Base 15 ++ (arch=i386)__interceptor_trampoline_if_indextoname@Base 15 ++ (arch=i386)__interceptor_trampoline_if_nametoindex@Base 15 ++ (arch=i386)__interceptor_trampoline_index@Base 15 ++ (arch=i386)__interceptor_trampoline_inet_aton@Base 15 ++ (arch=i386)__interceptor_trampoline_inet_ntop@Base 15 ++ (arch=i386)__interceptor_trampoline_inet_pton@Base 15 ++ (arch=i386)__interceptor_trampoline_initgroups@Base 15 ++ (arch=i386)__interceptor_trampoline_ioctl@Base 15 ++ (arch=i386)__interceptor_trampoline_lgamma@Base 15 ++ (arch=i386)__interceptor_trampoline_lgamma_r@Base 15 ++ (arch=i386)__interceptor_trampoline_lgammaf@Base 15 ++ (arch=i386)__interceptor_trampoline_lgammaf_r@Base 15 ++ (arch=i386)__interceptor_trampoline_lgammal@Base 15 ++ (arch=i386)__interceptor_trampoline_lgammal_r@Base 15 ++ (arch=i386)__interceptor_trampoline_lgetxattr@Base 15 ++ (arch=i386)__interceptor_trampoline_listxattr@Base 15 ++ (arch=i386)__interceptor_trampoline_llistxattr@Base 15 ++ (arch=i386)__interceptor_trampoline_localtime@Base 15 ++ (arch=i386)__interceptor_trampoline_localtime_r@Base 15 ++ (arch=i386)__interceptor_trampoline_longjmp@Base 15 ++ (arch=i386)__interceptor_trampoline_lrand48_r@Base 15 ++ (arch=i386)__interceptor_trampoline_lstat64@Base 15 ++ (arch=i386)__interceptor_trampoline_lstat@Base 15 ++ (arch=i386)__interceptor_trampoline_makecontext@Base 15 ++ (arch=i386)__interceptor_trampoline_mallinfo@Base 15 ++ (arch=i386)__interceptor_trampoline_malloc@Base 15 ++ (arch=i386)__interceptor_trampoline_malloc_stats@Base 15 ++ (arch=i386)__interceptor_trampoline_malloc_usable_size@Base 15 ++ (arch=i386)__interceptor_trampoline_mallopt@Base 15 ++ (arch=i386)__interceptor_trampoline_mbsnrtowcs@Base 15 ++ (arch=i386)__interceptor_trampoline_mbsrtowcs@Base 15 ++ (arch=i386)__interceptor_trampoline_mbstowcs@Base 15 ++ (arch=i386)__interceptor_trampoline_mcheck@Base 15 ++ (arch=i386)__interceptor_trampoline_mcheck_pedantic@Base 15 ++ (arch=i386)__interceptor_trampoline_memalign@Base 15 ++ (arch=i386)__interceptor_trampoline_memchr@Base 15 ++ (arch=i386)__interceptor_trampoline_memcmp@Base 15 ++ (arch=i386)__interceptor_trampoline_memcpy@Base 15 ++ (arch=i386)__interceptor_trampoline_memmem@Base 15 ++ (arch=i386)__interceptor_trampoline_memmove@Base 15 ++ (arch=i386)__interceptor_trampoline_memrchr@Base 15 ++ (arch=i386)__interceptor_trampoline_memset@Base 15 ++ (arch=i386)__interceptor_trampoline_mincore@Base 15 ++ (arch=i386)__interceptor_trampoline_mktime@Base 15 ++ (arch=i386)__interceptor_trampoline_mlock@Base 15 ++ (arch=i386)__interceptor_trampoline_mlockall@Base 15 ++ (arch=i386)__interceptor_trampoline_mmap64@Base 15 ++ (arch=i386)__interceptor_trampoline_mmap@Base 15 ++ (arch=i386)__interceptor_trampoline_modf@Base 15 ++ (arch=i386)__interceptor_trampoline_modff@Base 15 ++ (arch=i386)__interceptor_trampoline_modfl@Base 15 ++ (arch=i386)__interceptor_trampoline_mprobe@Base 15 ++ (arch=i386)__interceptor_trampoline_mprotect@Base 15 ++ (arch=i386)__interceptor_trampoline_msgrcv@Base 15 ++ (arch=i386)__interceptor_trampoline_msgsnd@Base 15 ++ (arch=i386)__interceptor_trampoline_munlock@Base 15 ++ (arch=i386)__interceptor_trampoline_munlockall@Base 15 ++ (arch=i386)__interceptor_trampoline_munmap@Base 15 ++ (arch=i386)__interceptor_trampoline_name_to_handle_at@Base 15 ++ (arch=i386)__interceptor_trampoline_open_by_handle_at@Base 15 ++ (arch=i386)__interceptor_trampoline_open_memstream@Base 15 ++ (arch=i386)__interceptor_trampoline_open_wmemstream@Base 15 ++ (arch=i386)__interceptor_trampoline_opendir@Base 15 ++ (arch=i386)__interceptor_trampoline_pclose@Base 15 ++ (arch=i386)__interceptor_trampoline_poll@Base 15 ++ (arch=i386)__interceptor_trampoline_popen@Base 15 ++ (arch=i386)__interceptor_trampoline_posix_memalign@Base 15 ++ (arch=i386)__interceptor_trampoline_posix_spawn@Base 15 ++ (arch=i386)__interceptor_trampoline_posix_spawnp@Base 15 ++ (arch=i386)__interceptor_trampoline_ppoll@Base 15 ++ (arch=i386)__interceptor_trampoline_prctl@Base 15 ++ (arch=i386)__interceptor_trampoline_pread64@Base 15 ++ (arch=i386)__interceptor_trampoline_pread@Base 15 ++ (arch=i386)__interceptor_trampoline_preadv2@Base 15 ++ (arch=i386)__interceptor_trampoline_preadv64@Base 15 ++ (arch=i386)__interceptor_trampoline_preadv@Base 15 ++ (arch=i386)__interceptor_trampoline_printf@Base 15 ++ (arch=i386)__interceptor_trampoline_process_vm_readv@Base 15 ++ (arch=i386)__interceptor_trampoline_process_vm_writev@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getscope@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getstack@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_condattr_getclock@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_create@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_detach@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_exit@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_getaffinity_np@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_getcpuclockid@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_getname_np@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_getschedparam@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_join@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_setcancelstate@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_setcanceltype@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_setname_np@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_sigmask@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_timedjoin_np@Base 15 ++ (arch=i386)__interceptor_trampoline_pthread_tryjoin_np@Base 15 ++ (arch=i386)__interceptor_trampoline_ptrace@Base 15 ++ (arch=i386)__interceptor_trampoline_ptsname@Base 15 ++ (arch=i386)__interceptor_trampoline_ptsname_r@Base 15 ++ (arch=i386)__interceptor_trampoline_puts@Base 15 ++ (arch=i386)__interceptor_trampoline_pututxline@Base 15 ++ (arch=i386)__interceptor_trampoline_pvalloc@Base 15 ++ (arch=i386)__interceptor_trampoline_pwrite64@Base 15 ++ (arch=i386)__interceptor_trampoline_pwrite@Base 15 ++ (arch=i386)__interceptor_trampoline_pwritev2@Base 15 ++ (arch=i386)__interceptor_trampoline_pwritev64@Base 15 ++ (arch=i386)__interceptor_trampoline_pwritev@Base 15 ++ (arch=i386)__interceptor_trampoline_qsort@Base 15 ++ (arch=i386)__interceptor_trampoline_qsort_r@Base 15 ++ (arch=i386)__interceptor_trampoline_rand_r@Base 15 ++ (arch=i386)__interceptor_trampoline_random_r@Base 15 ++ (arch=i386)__interceptor_trampoline_read@Base 15 ++ (arch=i386)__interceptor_trampoline_readdir64@Base 15 ++ (arch=i386)__interceptor_trampoline_readdir64_r@Base 15 ++ (arch=i386)__interceptor_trampoline_readdir@Base 15 ++ (arch=i386)__interceptor_trampoline_readdir_r@Base 15 ++ (arch=i386)__interceptor_trampoline_readlink@Base 15 ++ (arch=i386)__interceptor_trampoline_readlinkat@Base 15 ++ (arch=i386)__interceptor_trampoline_readv@Base 15 ++ (arch=i386)__interceptor_trampoline_realloc@Base 15 ++ (arch=i386)__interceptor_trampoline_reallocarray@Base 15 ++ (arch=i386)__interceptor_trampoline_realpath@Base 15 ++ (arch=i386)__interceptor_trampoline_recv@Base 15 ++ (arch=i386)__interceptor_trampoline_recvfrom@Base 15 ++ (arch=i386)__interceptor_trampoline_recvmmsg@Base 15 ++ (arch=i386)__interceptor_trampoline_recvmsg@Base 15 ++ (arch=i386)__interceptor_trampoline_regcomp@Base 15 ++ (arch=i386)__interceptor_trampoline_regerror@Base 15 ++ (arch=i386)__interceptor_trampoline_regexec@Base 15 ++ (arch=i386)__interceptor_trampoline_regfree@Base 15 ++ (arch=i386)__interceptor_trampoline_remquo@Base 15 ++ (arch=i386)__interceptor_trampoline_remquof@Base 15 ++ (arch=i386)__interceptor_trampoline_remquol@Base 15 ++ (arch=i386)__interceptor_trampoline_scandir64@Base 15 ++ (arch=i386)__interceptor_trampoline_scandir@Base 15 ++ (arch=i386)__interceptor_trampoline_scanf@Base 15 ++ (arch=i386)__interceptor_trampoline_sched_getaffinity@Base 15 ++ (arch=i386)__interceptor_trampoline_sched_getparam@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_destroy@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_getvalue@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_init@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_open@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_post@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_timedwait@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_trywait@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_unlink@Base 15 ++ (arch=i386)__interceptor_trampoline_sem_wait@Base 15 ++ (arch=i386)__interceptor_trampoline_send@Base 15 ++ (arch=i386)__interceptor_trampoline_sendmmsg@Base 15 ++ (arch=i386)__interceptor_trampoline_sendmsg@Base 15 ++ (arch=i386)__interceptor_trampoline_sendto@Base 15 ++ (arch=i386)__interceptor_trampoline_setbuf@Base 15 ++ (arch=i386)__interceptor_trampoline_setbuffer@Base 15 ++ (arch=i386)__interceptor_trampoline_setgrent@Base 15 ++ (arch=i386)__interceptor_trampoline_setitimer@Base 15 ++ (arch=i386)__interceptor_trampoline_setlinebuf@Base 15 ++ (arch=i386)__interceptor_trampoline_setlocale@Base 15 ++ (arch=i386)__interceptor_trampoline_setpwent@Base 15 ++ (arch=i386)__interceptor_trampoline_setvbuf@Base 15 ++ (arch=i386)__interceptor_trampoline_shmctl@Base 15 ++ (arch=i386)__interceptor_trampoline_sigaction@Base 15 ++ (arch=i386)__interceptor_trampoline_sigaltstack@Base 15 ++ (arch=i386)__interceptor_trampoline_sigandset@Base 15 ++ (arch=i386)__interceptor_trampoline_sigemptyset@Base 15 ++ (arch=i386)__interceptor_trampoline_sigfillset@Base 15 ++ (arch=i386)__interceptor_trampoline_siglongjmp@Base 15 ++ (arch=i386)__interceptor_trampoline_signal@Base 15 ++ (arch=i386)__interceptor_trampoline_sigorset@Base 15 ++ (arch=i386)__interceptor_trampoline_sigpending@Base 15 ++ (arch=i386)__interceptor_trampoline_sigprocmask@Base 15 ++ (arch=i386)__interceptor_trampoline_sigtimedwait@Base 15 ++ (arch=i386)__interceptor_trampoline_sigwait@Base 15 ++ (arch=i386)__interceptor_trampoline_sigwaitinfo@Base 15 ++ (arch=i386)__interceptor_trampoline_sincos@Base 15 ++ (arch=i386)__interceptor_trampoline_sincosf@Base 15 ++ (arch=i386)__interceptor_trampoline_sincosl@Base 15 ++ (arch=i386)__interceptor_trampoline_snprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_sprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_sscanf@Base 15 ++ (arch=i386)__interceptor_trampoline_stat64@Base 15 ++ (arch=i386)__interceptor_trampoline_stat@Base 15 ++ (arch=i386)__interceptor_trampoline_statfs64@Base 15 ++ (arch=i386)__interceptor_trampoline_statfs@Base 15 ++ (arch=i386)__interceptor_trampoline_statvfs64@Base 15 ++ (arch=i386)__interceptor_trampoline_statvfs@Base 15 ++ (arch=i386)__interceptor_trampoline_strcasecmp@Base 15 ++ (arch=i386)__interceptor_trampoline_strcasestr@Base 15 ++ (arch=i386)__interceptor_trampoline_strcat@Base 15 ++ (arch=i386)__interceptor_trampoline_strchr@Base 15 ++ (arch=i386)__interceptor_trampoline_strchrnul@Base 15 ++ (arch=i386)__interceptor_trampoline_strcmp@Base 15 ++ (arch=i386)__interceptor_trampoline_strcpy@Base 15 ++ (arch=i386)__interceptor_trampoline_strcspn@Base 15 ++ (arch=i386)__interceptor_trampoline_strdup@Base 15 ++ (arch=i386)__interceptor_trampoline_strerror@Base 15 ++ (arch=i386)__interceptor_trampoline_strerror_r@Base 15 ++ (arch=i386)__interceptor_trampoline_strlen@Base 15 ++ (arch=i386)__interceptor_trampoline_strncasecmp@Base 15 ++ (arch=i386)__interceptor_trampoline_strncat@Base 15 ++ (arch=i386)__interceptor_trampoline_strncmp@Base 15 ++ (arch=i386)__interceptor_trampoline_strncpy@Base 15 ++ (arch=i386)__interceptor_trampoline_strndup@Base 15 ++ (arch=i386)__interceptor_trampoline_strnlen@Base 15 ++ (arch=i386)__interceptor_trampoline_strpbrk@Base 15 ++ (arch=i386)__interceptor_trampoline_strptime@Base 15 ++ (arch=i386)__interceptor_trampoline_strrchr@Base 15 ++ (arch=i386)__interceptor_trampoline_strspn@Base 15 ++ (arch=i386)__interceptor_trampoline_strstr@Base 15 ++ (arch=i386)__interceptor_trampoline_strtoimax@Base 15 ++ (arch=i386)__interceptor_trampoline_strtok@Base 15 ++ (arch=i386)__interceptor_trampoline_strtol@Base 15 ++ (arch=i386)__interceptor_trampoline_strtoll@Base 15 ++ (arch=i386)__interceptor_trampoline_strtoumax@Base 15 ++ (arch=i386)__interceptor_trampoline_strxfrm@Base 15 ++ (arch=i386)__interceptor_trampoline_strxfrm_l@Base 15 ++ (arch=i386)__interceptor_trampoline_swapcontext@Base 15 ++ (arch=i386)__interceptor_trampoline_sysinfo@Base 15 ++ (arch=i386)__interceptor_trampoline_tcgetattr@Base 15 ++ (arch=i386)__interceptor_trampoline_tempnam@Base 15 ++ (arch=i386)__interceptor_trampoline_textdomain@Base 15 ++ (arch=i386)__interceptor_trampoline_time@Base 15 ++ (arch=i386)__interceptor_trampoline_timerfd_gettime@Base 15 ++ (arch=i386)__interceptor_trampoline_timerfd_settime@Base 15 ++ (arch=i386)__interceptor_trampoline_times@Base 15 ++ (arch=i386)__interceptor_trampoline_tmpnam@Base 15 ++ (arch=i386)__interceptor_trampoline_tmpnam_r@Base 15 ++ (arch=i386)__interceptor_trampoline_tsearch@Base 15 ++ (arch=i386)__interceptor_trampoline_ttyname@Base 15 ++ (arch=i386)__interceptor_trampoline_ttyname_r@Base 15 ++ (arch=i386)__interceptor_trampoline_uname@Base 15 ++ (arch=i386)__interceptor_trampoline_valloc@Base 15 ++ (arch=i386)__interceptor_trampoline_vasprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_vfork@Base 15 ++ (arch=i386)__interceptor_trampoline_vfprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_vfscanf@Base 15 ++ (arch=i386)__interceptor_trampoline_vprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_vscanf@Base 15 ++ (arch=i386)__interceptor_trampoline_vsnprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_vsprintf@Base 15 ++ (arch=i386)__interceptor_trampoline_vsscanf@Base 15 ++ (arch=i386)__interceptor_trampoline_wait3@Base 15 ++ (arch=i386)__interceptor_trampoline_wait4@Base 15 ++ (arch=i386)__interceptor_trampoline_wait@Base 15 ++ (arch=i386)__interceptor_trampoline_waitid@Base 15 ++ (arch=i386)__interceptor_trampoline_waitpid@Base 15 ++ (arch=i386)__interceptor_trampoline_wcrtomb@Base 15 ++ (arch=i386)__interceptor_trampoline_wcscat@Base 15 ++ (arch=i386)__interceptor_trampoline_wcsdup@Base 15 ++ (arch=i386)__interceptor_trampoline_wcslen@Base 15 ++ (arch=i386)__interceptor_trampoline_wcsncat@Base 15 ++ (arch=i386)__interceptor_trampoline_wcsnlen@Base 15 ++ (arch=i386)__interceptor_trampoline_wcsnrtombs@Base 15 ++ (arch=i386)__interceptor_trampoline_wcsrtombs@Base 15 ++ (arch=i386)__interceptor_trampoline_wcstombs@Base 15 ++ (arch=i386)__interceptor_trampoline_wcsxfrm@Base 15 ++ (arch=i386)__interceptor_trampoline_wcsxfrm_l@Base 15 ++ (arch=i386)__interceptor_trampoline_wctomb@Base 15 ++ (arch=i386)__interceptor_trampoline_wordexp@Base 15 ++ (arch=i386)__interceptor_trampoline_write@Base 15 ++ (arch=i386)__interceptor_trampoline_writev@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_bool@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_bytes@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_char@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_destroy@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_double@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_enum@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_float@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_hyper@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_int16_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_int32_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_int64_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_int8_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_int@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_long@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_longlong_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_quad_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_short@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_string@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_u_char@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_u_hyper@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_u_int@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_u_long@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_u_longlong_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_u_quad_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_u_short@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_uint16_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_uint32_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_uint64_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdr_uint8_t@Base 15 ++ (arch=i386)__interceptor_trampoline_xdrmem_create@Base 15 ++ (arch=i386)__interceptor_trampoline_xdrrec_create@Base 15 ++ (arch=i386)__interceptor_trampoline_xdrstdio_create@Base 15 ++ __interceptor_tsearch@Base 15 ++ __interceptor_ttyname@Base 15 ++ __interceptor_ttyname_r@Base 15 ++ __interceptor_uname@Base 15 ++ __interceptor_valloc@Base 15 ++ __interceptor_vasprintf@Base 15 ++ (arch=i386)__interceptor_vfork@Base 15 ++ __interceptor_vfprintf@Base 15 ++ __interceptor_vfscanf@Base 15 ++ __interceptor_vprintf@Base 15 ++ __interceptor_vscanf@Base 15 ++ __interceptor_vsnprintf@Base 15 ++ __interceptor_vsprintf@Base 15 ++ __interceptor_vsscanf@Base 15 ++ __interceptor_wait3@Base 15 ++ __interceptor_wait4@Base 15 ++ __interceptor_wait@Base 15 ++ __interceptor_waitid@Base 15 ++ __interceptor_waitpid@Base 15 ++ __interceptor_wcrtomb@Base 15 ++ __interceptor_wcscat@Base 15 ++ __interceptor_wcsdup@Base 15 ++ __interceptor_wcslen@Base 15 ++ __interceptor_wcsncat@Base 15 ++ __interceptor_wcsnlen@Base 15 ++ __interceptor_wcsnrtombs@Base 15 ++ __interceptor_wcsrtombs@Base 15 ++ __interceptor_wcstombs@Base 15 ++ __interceptor_wcsxfrm@Base 15 ++ __interceptor_wcsxfrm_l@Base 15 ++ __interceptor_wctomb@Base 15 ++ __interceptor_wordexp@Base 15 ++ __interceptor_write@Base 15 ++ __interceptor_writev@Base 15 ++ __interceptor_xdr_bool@Base 15 ++ __interceptor_xdr_bytes@Base 15 ++ __interceptor_xdr_char@Base 15 ++ __interceptor_xdr_destroy@Base 15 ++ __interceptor_xdr_double@Base 15 ++ __interceptor_xdr_enum@Base 15 ++ __interceptor_xdr_float@Base 15 ++ __interceptor_xdr_hyper@Base 15 ++ __interceptor_xdr_int16_t@Base 15 ++ __interceptor_xdr_int32_t@Base 15 ++ __interceptor_xdr_int64_t@Base 15 ++ __interceptor_xdr_int8_t@Base 15 ++ __interceptor_xdr_int@Base 15 ++ __interceptor_xdr_long@Base 15 ++ __interceptor_xdr_longlong_t@Base 15 ++ __interceptor_xdr_quad_t@Base 15 ++ __interceptor_xdr_short@Base 15 ++ __interceptor_xdr_string@Base 15 ++ __interceptor_xdr_u_char@Base 15 ++ __interceptor_xdr_u_hyper@Base 15 ++ __interceptor_xdr_u_int@Base 15 ++ __interceptor_xdr_u_long@Base 15 ++ __interceptor_xdr_u_longlong_t@Base 15 ++ __interceptor_xdr_u_quad_t@Base 15 ++ __interceptor_xdr_u_short@Base 15 ++ __interceptor_xdr_uint16_t@Base 15 ++ __interceptor_xdr_uint32_t@Base 15 ++ __interceptor_xdr_uint64_t@Base 15 ++ __interceptor_xdr_uint8_t@Base 15 ++ __interceptor_xdrmem_create@Base 15 ++ __interceptor_xdrrec_create@Base 15 ++ __interceptor_xdrstdio_create@Base 15 ++ __isoc23_fscanf@Base 15 ++ __isoc23_scanf@Base 15 ++ __isoc23_sscanf@Base 15 ++ __isoc23_strtoimax@Base 15 ++ __isoc23_strtol@Base 15 ++ __isoc23_strtoll@Base 15 ++ __isoc23_strtoumax@Base 15 ++ __isoc23_vfscanf@Base 15 ++ __isoc23_vscanf@Base 15 ++ __isoc23_vsscanf@Base 15 ++ __isoc99_fprintf@Base 15 ++ __isoc99_fscanf@Base 15 ++ __isoc99_printf@Base 15 ++ __isoc99_scanf@Base 15 ++ __isoc99_snprintf@Base 15 ++ __isoc99_sprintf@Base 15 ++ __isoc99_sscanf@Base 15 ++ __isoc99_vfprintf@Base 15 ++ __isoc99_vfscanf@Base 15 ++ __isoc99_vprintf@Base 15 ++ __isoc99_vscanf@Base 15 ++ __isoc99_vsnprintf@Base 15 ++ __isoc99_vsprintf@Base 15 ++ __isoc99_vsscanf@Base 15 ++ __libc_memalign@Base 15 ++ __longjmp_chk@Base 15 ++ __lsan_default_options@Base 15 ++ __lsan_disable@Base 15 ++ __lsan_do_leak_check@Base 15 ++ __lsan_do_recoverable_leak_check@Base 15 ++ __lsan_enable@Base 15 ++ __lsan_ignore_object@Base 15 ++ __lsan_register_root_region@Base 15 ++ __lsan_unregister_root_region@Base 15 ++ __lxstat64@Base 15 ++ __lxstat@Base 15 ++ __overflow@Base 15 ++ __sancov_default_options@Base 15 ++ __sancov_lowest_stack@Base 15 ++ __sanitizer_acquire_crash_state@Base 15 ++ __sanitizer_annotate_contiguous_container@Base 15 ++ __sanitizer_annotate_double_ended_contiguous_container@Base 15 ++ __sanitizer_contiguous_container_find_bad_address@Base 15 ++ __sanitizer_copy_contiguous_container_annotations@Base 15 ++ __sanitizer_cov_8bit_counters_init@Base 15 ++ __sanitizer_cov_bool_flag_init@Base 15 ++ __sanitizer_cov_dump@Base 15 ++ __sanitizer_cov_load16@Base 15 ++ __sanitizer_cov_load1@Base 15 ++ __sanitizer_cov_load2@Base 15 ++ __sanitizer_cov_load4@Base 15 ++ __sanitizer_cov_load8@Base 15 ++ __sanitizer_cov_pcs_init@Base 15 ++ __sanitizer_cov_reset@Base 15 ++ __sanitizer_cov_store16@Base 15 ++ __sanitizer_cov_store1@Base 15 ++ __sanitizer_cov_store2@Base 15 ++ __sanitizer_cov_store4@Base 15 ++ __sanitizer_cov_store8@Base 15 ++ __sanitizer_cov_trace_cmp1@Base 15 ++ __sanitizer_cov_trace_cmp2@Base 15 ++ __sanitizer_cov_trace_cmp4@Base 15 ++ __sanitizer_cov_trace_cmp8@Base 15 ++ __sanitizer_cov_trace_cmp@Base 15 ++ __sanitizer_cov_trace_const_cmp1@Base 15 ++ __sanitizer_cov_trace_const_cmp2@Base 15 ++ __sanitizer_cov_trace_const_cmp4@Base 15 ++ __sanitizer_cov_trace_const_cmp8@Base 15 ++ __sanitizer_cov_trace_div4@Base 15 ++ __sanitizer_cov_trace_div8@Base 15 ++ __sanitizer_cov_trace_gep@Base 15 ++ __sanitizer_cov_trace_pc_guard@Base 15 ++ __sanitizer_cov_trace_pc_guard_init@Base 15 ++ __sanitizer_cov_trace_pc_indir@Base 15 ++ __sanitizer_cov_trace_switch@Base 15 ++ __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 ++ __sanitizer_dump_coverage@Base 15 ++ __sanitizer_dump_trace_pc_guard_coverage@Base 15 ++ __sanitizer_finish_switch_fiber@Base 15 ++ __sanitizer_free_hook@Base 15 ++ __sanitizer_get_allocated_begin@Base 15 ++ __sanitizer_get_allocated_size@Base 15 ++ __sanitizer_get_allocated_size_fast@Base 15 ++ __sanitizer_get_current_allocated_bytes@Base 15 ++ __sanitizer_get_dtls_size@Base 15 ++ __sanitizer_get_estimated_allocated_size@Base 15 ++ __sanitizer_get_free_bytes@Base 15 ++ __sanitizer_get_heap_size@Base 15 ++ __sanitizer_get_module_and_offset_for_pc@Base 15 ++ __sanitizer_get_ownership@Base 15 ++ __sanitizer_get_report_path@Base 15 ++ __sanitizer_get_unmapped_bytes@Base 15 ++ __sanitizer_ignore_free_hook@Base 15 ++ __sanitizer_install_malloc_and_free_hooks@Base 15 ++ __sanitizer_internal_memcpy@Base 15 ++ __sanitizer_internal_memmove@Base 15 ++ __sanitizer_internal_memset@Base 15 ++ __sanitizer_malloc_hook@Base 15 ++ __sanitizer_on_print@Base 15 ++ __sanitizer_print_memory_profile@Base 15 ++ __sanitizer_print_stack_trace@Base 15 ++ __sanitizer_ptr_cmp@Base 15 ++ __sanitizer_ptr_sub@Base 15 ++ __sanitizer_purge_allocator@Base 15 ++ __sanitizer_report_error_summary@Base 15 ++ __sanitizer_sandbox_on_notify@Base 15 ++ __sanitizer_set_death_callback@Base 15 ++ __sanitizer_set_report_fd@Base 15 ++ __sanitizer_set_report_path@Base 15 ++ __sanitizer_start_switch_fiber@Base 15 ++ __sanitizer_symbolize_global@Base 15 ++ __sanitizer_symbolize_pc@Base 15 ++ __sanitizer_syscall_post_impl_accept4@Base 15 ++ __sanitizer_syscall_post_impl_accept@Base 15 ++ __sanitizer_syscall_post_impl_access@Base 15 ++ __sanitizer_syscall_post_impl_acct@Base 15 ++ __sanitizer_syscall_post_impl_add_key@Base 15 ++ __sanitizer_syscall_post_impl_adjtimex@Base 15 ++ __sanitizer_syscall_post_impl_alarm@Base 15 ++ __sanitizer_syscall_post_impl_bdflush@Base 15 ++ __sanitizer_syscall_post_impl_bind@Base 15 ++ __sanitizer_syscall_post_impl_brk@Base 15 ++ __sanitizer_syscall_post_impl_capget@Base 15 ++ __sanitizer_syscall_post_impl_capset@Base 15 ++ __sanitizer_syscall_post_impl_chdir@Base 15 ++ __sanitizer_syscall_post_impl_chmod@Base 15 ++ __sanitizer_syscall_post_impl_chown@Base 15 ++ __sanitizer_syscall_post_impl_chroot@Base 15 ++ __sanitizer_syscall_post_impl_clock_adjtime@Base 15 ++ __sanitizer_syscall_post_impl_clock_getres@Base 15 ++ __sanitizer_syscall_post_impl_clock_gettime@Base 15 ++ __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 ++ __sanitizer_syscall_post_impl_clock_settime@Base 15 ++ __sanitizer_syscall_post_impl_close@Base 15 ++ __sanitizer_syscall_post_impl_connect@Base 15 ++ __sanitizer_syscall_post_impl_creat@Base 15 ++ __sanitizer_syscall_post_impl_delete_module@Base 15 ++ __sanitizer_syscall_post_impl_dup2@Base 15 ++ __sanitizer_syscall_post_impl_dup3@Base 15 ++ __sanitizer_syscall_post_impl_dup@Base 15 ++ __sanitizer_syscall_post_impl_epoll_create1@Base 15 ++ __sanitizer_syscall_post_impl_epoll_create@Base 15 ++ __sanitizer_syscall_post_impl_epoll_ctl@Base 15 ++ __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 ++ __sanitizer_syscall_post_impl_epoll_pwait@Base 15 ++ __sanitizer_syscall_post_impl_epoll_wait@Base 15 ++ __sanitizer_syscall_post_impl_eventfd2@Base 15 ++ __sanitizer_syscall_post_impl_eventfd@Base 15 ++ __sanitizer_syscall_post_impl_exit@Base 15 ++ __sanitizer_syscall_post_impl_exit_group@Base 15 ++ __sanitizer_syscall_post_impl_faccessat@Base 15 ++ __sanitizer_syscall_post_impl_fchdir@Base 15 ++ __sanitizer_syscall_post_impl_fchmod@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat@Base 15 ++ __sanitizer_syscall_post_impl_fchown@Base 15 ++ __sanitizer_syscall_post_impl_fchownat@Base 15 ++ __sanitizer_syscall_post_impl_fcntl64@Base 15 ++ __sanitizer_syscall_post_impl_fcntl@Base 15 ++ __sanitizer_syscall_post_impl_fdatasync@Base 15 ++ __sanitizer_syscall_post_impl_fgetxattr@Base 15 ++ __sanitizer_syscall_post_impl_flistxattr@Base 15 ++ __sanitizer_syscall_post_impl_flock@Base 15 ++ __sanitizer_syscall_post_impl_fork@Base 15 ++ __sanitizer_syscall_post_impl_fremovexattr@Base 15 ++ __sanitizer_syscall_post_impl_fsetxattr@Base 15 ++ __sanitizer_syscall_post_impl_fstat64@Base 15 ++ __sanitizer_syscall_post_impl_fstat@Base 15 ++ __sanitizer_syscall_post_impl_fstatat64@Base 15 ++ __sanitizer_syscall_post_impl_fstatfs64@Base 15 ++ __sanitizer_syscall_post_impl_fstatfs@Base 15 ++ __sanitizer_syscall_post_impl_fsync@Base 15 ++ __sanitizer_syscall_post_impl_ftruncate@Base 15 ++ __sanitizer_syscall_post_impl_futex@Base 15 ++ __sanitizer_syscall_post_impl_futimesat@Base 15 ++ __sanitizer_syscall_post_impl_get_mempolicy@Base 15 ++ __sanitizer_syscall_post_impl_get_robust_list@Base 15 ++ __sanitizer_syscall_post_impl_getcpu@Base 15 ++ __sanitizer_syscall_post_impl_getcwd@Base 15 ++ __sanitizer_syscall_post_impl_getdents64@Base 15 ++ __sanitizer_syscall_post_impl_getdents@Base 15 ++ __sanitizer_syscall_post_impl_getegid@Base 15 ++ __sanitizer_syscall_post_impl_geteuid@Base 15 ++ __sanitizer_syscall_post_impl_getgid@Base 15 ++ __sanitizer_syscall_post_impl_getgroups@Base 15 ++ __sanitizer_syscall_post_impl_gethostname@Base 15 ++ __sanitizer_syscall_post_impl_getitimer@Base 15 ++ __sanitizer_syscall_post_impl_getpeername@Base 15 ++ __sanitizer_syscall_post_impl_getpgid@Base 15 ++ __sanitizer_syscall_post_impl_getpgrp@Base 15 ++ __sanitizer_syscall_post_impl_getpid@Base 15 ++ __sanitizer_syscall_post_impl_getppid@Base 15 ++ __sanitizer_syscall_post_impl_getpriority@Base 15 ++ __sanitizer_syscall_post_impl_getrandom@Base 15 ++ __sanitizer_syscall_post_impl_getresgid@Base 15 ++ __sanitizer_syscall_post_impl_getresuid@Base 15 ++ __sanitizer_syscall_post_impl_getrlimit@Base 15 ++ __sanitizer_syscall_post_impl_getrusage@Base 15 ++ __sanitizer_syscall_post_impl_getsid@Base 15 ++ __sanitizer_syscall_post_impl_getsockname@Base 15 ++ __sanitizer_syscall_post_impl_getsockopt@Base 15 ++ __sanitizer_syscall_post_impl_gettid@Base 15 ++ __sanitizer_syscall_post_impl_gettimeofday@Base 15 ++ __sanitizer_syscall_post_impl_getuid@Base 15 ++ __sanitizer_syscall_post_impl_getxattr@Base 15 ++ __sanitizer_syscall_post_impl_init_module@Base 15 ++ __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 ++ __sanitizer_syscall_post_impl_inotify_init1@Base 15 ++ __sanitizer_syscall_post_impl_inotify_init@Base 15 ++ __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 ++ __sanitizer_syscall_post_impl_io_cancel@Base 15 ++ __sanitizer_syscall_post_impl_io_destroy@Base 15 ++ __sanitizer_syscall_post_impl_io_getevents@Base 15 ++ __sanitizer_syscall_post_impl_io_setup@Base 15 ++ __sanitizer_syscall_post_impl_io_submit@Base 15 ++ __sanitizer_syscall_post_impl_ioctl@Base 15 ++ __sanitizer_syscall_post_impl_ioperm@Base 15 ++ __sanitizer_syscall_post_impl_ioprio_get@Base 15 ++ __sanitizer_syscall_post_impl_ioprio_set@Base 15 ++ __sanitizer_syscall_post_impl_ipc@Base 15 ++ __sanitizer_syscall_post_impl_kexec_load@Base 15 ++ __sanitizer_syscall_post_impl_keyctl@Base 15 ++ __sanitizer_syscall_post_impl_kill@Base 15 ++ __sanitizer_syscall_post_impl_lchown@Base 15 ++ __sanitizer_syscall_post_impl_lgetxattr@Base 15 ++ __sanitizer_syscall_post_impl_link@Base 15 ++ __sanitizer_syscall_post_impl_linkat@Base 15 ++ __sanitizer_syscall_post_impl_listen@Base 15 ++ __sanitizer_syscall_post_impl_listxattr@Base 15 ++ __sanitizer_syscall_post_impl_llistxattr@Base 15 ++ __sanitizer_syscall_post_impl_llseek@Base 15 ++ __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 ++ __sanitizer_syscall_post_impl_lremovexattr@Base 15 ++ __sanitizer_syscall_post_impl_lseek@Base 15 ++ __sanitizer_syscall_post_impl_lsetxattr@Base 15 ++ __sanitizer_syscall_post_impl_lstat64@Base 15 ++ __sanitizer_syscall_post_impl_lstat@Base 15 ++ __sanitizer_syscall_post_impl_madvise@Base 15 ++ __sanitizer_syscall_post_impl_mbind@Base 15 ++ __sanitizer_syscall_post_impl_migrate_pages@Base 15 ++ __sanitizer_syscall_post_impl_mincore@Base 15 ++ __sanitizer_syscall_post_impl_mkdir@Base 15 ++ __sanitizer_syscall_post_impl_mkdirat@Base 15 ++ __sanitizer_syscall_post_impl_mknod@Base 15 ++ __sanitizer_syscall_post_impl_mknodat@Base 15 ++ __sanitizer_syscall_post_impl_mlock@Base 15 ++ __sanitizer_syscall_post_impl_mlockall@Base 15 ++ __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 ++ __sanitizer_syscall_post_impl_mount@Base 15 ++ __sanitizer_syscall_post_impl_move_pages@Base 15 ++ __sanitizer_syscall_post_impl_mprotect@Base 15 ++ __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 ++ __sanitizer_syscall_post_impl_mq_notify@Base 15 ++ __sanitizer_syscall_post_impl_mq_open@Base 15 ++ __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 ++ __sanitizer_syscall_post_impl_mq_timedsend@Base 15 ++ __sanitizer_syscall_post_impl_mq_unlink@Base 15 ++ __sanitizer_syscall_post_impl_mremap@Base 15 ++ __sanitizer_syscall_post_impl_msgctl@Base 15 ++ __sanitizer_syscall_post_impl_msgget@Base 15 ++ __sanitizer_syscall_post_impl_msgrcv@Base 15 ++ __sanitizer_syscall_post_impl_msgsnd@Base 15 ++ __sanitizer_syscall_post_impl_msync@Base 15 ++ __sanitizer_syscall_post_impl_munlock@Base 15 ++ __sanitizer_syscall_post_impl_munlockall@Base 15 ++ __sanitizer_syscall_post_impl_munmap@Base 15 ++ __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 ++ __sanitizer_syscall_post_impl_nanosleep@Base 15 ++ __sanitizer_syscall_post_impl_newfstat@Base 15 ++ __sanitizer_syscall_post_impl_newfstatat@Base 15 ++ __sanitizer_syscall_post_impl_newlstat@Base 15 ++ __sanitizer_syscall_post_impl_newstat@Base 15 ++ __sanitizer_syscall_post_impl_newuname@Base 15 ++ __sanitizer_syscall_post_impl_ni_syscall@Base 15 ++ __sanitizer_syscall_post_impl_nice@Base 15 ++ __sanitizer_syscall_post_impl_old_getrlimit@Base 15 ++ __sanitizer_syscall_post_impl_old_mmap@Base 15 ++ __sanitizer_syscall_post_impl_old_readdir@Base 15 ++ __sanitizer_syscall_post_impl_old_select@Base 15 ++ __sanitizer_syscall_post_impl_oldumount@Base 15 ++ __sanitizer_syscall_post_impl_olduname@Base 15 ++ __sanitizer_syscall_post_impl_open@Base 15 ++ __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 ++ __sanitizer_syscall_post_impl_openat@Base 15 ++ __sanitizer_syscall_post_impl_pause@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_read@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_write@Base 15 ++ __sanitizer_syscall_post_impl_perf_event_open@Base 15 ++ __sanitizer_syscall_post_impl_personality@Base 15 ++ __sanitizer_syscall_post_impl_pipe2@Base 15 ++ __sanitizer_syscall_post_impl_pipe@Base 15 ++ __sanitizer_syscall_post_impl_pivot_root@Base 15 ++ __sanitizer_syscall_post_impl_poll@Base 15 ++ __sanitizer_syscall_post_impl_ppoll@Base 15 ++ __sanitizer_syscall_post_impl_pread64@Base 15 ++ __sanitizer_syscall_post_impl_preadv@Base 15 ++ __sanitizer_syscall_post_impl_prlimit64@Base 15 ++ __sanitizer_syscall_post_impl_process_vm_readv@Base 15 ++ __sanitizer_syscall_post_impl_process_vm_writev@Base 15 ++ __sanitizer_syscall_post_impl_pselect6@Base 15 ++ __sanitizer_syscall_post_impl_ptrace@Base 15 ++ __sanitizer_syscall_post_impl_pwrite64@Base 15 ++ __sanitizer_syscall_post_impl_pwritev@Base 15 ++ __sanitizer_syscall_post_impl_quotactl@Base 15 ++ __sanitizer_syscall_post_impl_read@Base 15 ++ __sanitizer_syscall_post_impl_readlink@Base 15 ++ __sanitizer_syscall_post_impl_readlinkat@Base 15 ++ __sanitizer_syscall_post_impl_readv@Base 15 ++ __sanitizer_syscall_post_impl_reboot@Base 15 ++ __sanitizer_syscall_post_impl_recv@Base 15 ++ __sanitizer_syscall_post_impl_recvfrom@Base 15 ++ __sanitizer_syscall_post_impl_recvmmsg@Base 15 ++ __sanitizer_syscall_post_impl_recvmsg@Base 15 ++ __sanitizer_syscall_post_impl_remap_file_pages@Base 15 ++ __sanitizer_syscall_post_impl_removexattr@Base 15 ++ __sanitizer_syscall_post_impl_rename@Base 15 ++ __sanitizer_syscall_post_impl_renameat@Base 15 ++ __sanitizer_syscall_post_impl_request_key@Base 15 ++ __sanitizer_syscall_post_impl_restart_syscall@Base 15 ++ __sanitizer_syscall_post_impl_rmdir@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigaction@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigpending@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 ++ __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 ++ __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 ++ __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 ++ __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 ++ __sanitizer_syscall_post_impl_sched_getparam@Base 15 ++ __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 ++ __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 ++ __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 ++ __sanitizer_syscall_post_impl_sched_setparam@Base 15 ++ __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 ++ __sanitizer_syscall_post_impl_sched_yield@Base 15 ++ __sanitizer_syscall_post_impl_select@Base 15 ++ __sanitizer_syscall_post_impl_semctl@Base 15 ++ __sanitizer_syscall_post_impl_semget@Base 15 ++ __sanitizer_syscall_post_impl_semop@Base 15 ++ __sanitizer_syscall_post_impl_semtimedop@Base 15 ++ __sanitizer_syscall_post_impl_send@Base 15 ++ __sanitizer_syscall_post_impl_sendfile64@Base 15 ++ __sanitizer_syscall_post_impl_sendfile@Base 15 ++ __sanitizer_syscall_post_impl_sendmmsg@Base 15 ++ __sanitizer_syscall_post_impl_sendmsg@Base 15 ++ __sanitizer_syscall_post_impl_sendto@Base 15 ++ __sanitizer_syscall_post_impl_set_mempolicy@Base 15 ++ __sanitizer_syscall_post_impl_set_robust_list@Base 15 ++ __sanitizer_syscall_post_impl_set_tid_address@Base 15 ++ __sanitizer_syscall_post_impl_setdomainname@Base 15 ++ __sanitizer_syscall_post_impl_setfsgid@Base 15 ++ __sanitizer_syscall_post_impl_setfsuid@Base 15 ++ __sanitizer_syscall_post_impl_setgid@Base 15 ++ __sanitizer_syscall_post_impl_setgroups@Base 15 ++ __sanitizer_syscall_post_impl_sethostname@Base 15 ++ __sanitizer_syscall_post_impl_setitimer@Base 15 ++ __sanitizer_syscall_post_impl_setns@Base 15 ++ __sanitizer_syscall_post_impl_setpgid@Base 15 ++ __sanitizer_syscall_post_impl_setpriority@Base 15 ++ __sanitizer_syscall_post_impl_setregid@Base 15 ++ __sanitizer_syscall_post_impl_setresgid@Base 15 ++ __sanitizer_syscall_post_impl_setresuid@Base 15 ++ __sanitizer_syscall_post_impl_setreuid@Base 15 ++ __sanitizer_syscall_post_impl_setrlimit@Base 15 ++ __sanitizer_syscall_post_impl_setsid@Base 15 ++ __sanitizer_syscall_post_impl_setsockopt@Base 15 ++ __sanitizer_syscall_post_impl_settimeofday@Base 15 ++ __sanitizer_syscall_post_impl_setuid@Base 15 ++ __sanitizer_syscall_post_impl_setxattr@Base 15 ++ __sanitizer_syscall_post_impl_sgetmask@Base 15 ++ __sanitizer_syscall_post_impl_shmat@Base 15 ++ __sanitizer_syscall_post_impl_shmctl@Base 15 ++ __sanitizer_syscall_post_impl_shmdt@Base 15 ++ __sanitizer_syscall_post_impl_shmget@Base 15 ++ __sanitizer_syscall_post_impl_shutdown@Base 15 ++ __sanitizer_syscall_post_impl_sigaction@Base 15 ++ __sanitizer_syscall_post_impl_sigaltstack@Base 15 ++ __sanitizer_syscall_post_impl_signal@Base 15 ++ __sanitizer_syscall_post_impl_signalfd4@Base 15 ++ __sanitizer_syscall_post_impl_signalfd@Base 15 ++ __sanitizer_syscall_post_impl_sigpending@Base 15 ++ __sanitizer_syscall_post_impl_sigprocmask@Base 15 ++ __sanitizer_syscall_post_impl_socket@Base 15 ++ __sanitizer_syscall_post_impl_socketcall@Base 15 ++ __sanitizer_syscall_post_impl_socketpair@Base 15 ++ __sanitizer_syscall_post_impl_splice@Base 15 ++ __sanitizer_syscall_post_impl_spu_create@Base 15 ++ __sanitizer_syscall_post_impl_spu_run@Base 15 ++ __sanitizer_syscall_post_impl_ssetmask@Base 15 ++ __sanitizer_syscall_post_impl_stat64@Base 15 ++ __sanitizer_syscall_post_impl_stat@Base 15 ++ __sanitizer_syscall_post_impl_statfs64@Base 15 ++ __sanitizer_syscall_post_impl_statfs@Base 15 ++ __sanitizer_syscall_post_impl_stime@Base 15 ++ __sanitizer_syscall_post_impl_swapoff@Base 15 ++ __sanitizer_syscall_post_impl_swapon@Base 15 ++ __sanitizer_syscall_post_impl_symlink@Base 15 ++ __sanitizer_syscall_post_impl_symlinkat@Base 15 ++ __sanitizer_syscall_post_impl_sync@Base 15 ++ __sanitizer_syscall_post_impl_syncfs@Base 15 ++ __sanitizer_syscall_post_impl_sysctl@Base 15 ++ __sanitizer_syscall_post_impl_sysfs@Base 15 ++ __sanitizer_syscall_post_impl_sysinfo@Base 15 ++ __sanitizer_syscall_post_impl_syslog@Base 15 ++ __sanitizer_syscall_post_impl_tee@Base 15 ++ __sanitizer_syscall_post_impl_tgkill@Base 15 ++ __sanitizer_syscall_post_impl_time@Base 15 ++ __sanitizer_syscall_post_impl_timer_create@Base 15 ++ __sanitizer_syscall_post_impl_timer_delete@Base 15 ++ __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 ++ __sanitizer_syscall_post_impl_timer_gettime@Base 15 ++ __sanitizer_syscall_post_impl_timer_settime@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_create@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_settime@Base 15 ++ __sanitizer_syscall_post_impl_times@Base 15 ++ __sanitizer_syscall_post_impl_tkill@Base 15 ++ __sanitizer_syscall_post_impl_truncate@Base 15 ++ __sanitizer_syscall_post_impl_umask@Base 15 ++ __sanitizer_syscall_post_impl_umount@Base 15 ++ __sanitizer_syscall_post_impl_uname@Base 15 ++ __sanitizer_syscall_post_impl_unlink@Base 15 ++ __sanitizer_syscall_post_impl_unlinkat@Base 15 ++ __sanitizer_syscall_post_impl_unshare@Base 15 ++ __sanitizer_syscall_post_impl_uselib@Base 15 ++ __sanitizer_syscall_post_impl_ustat@Base 15 ++ __sanitizer_syscall_post_impl_utime@Base 15 ++ __sanitizer_syscall_post_impl_utimensat@Base 15 ++ __sanitizer_syscall_post_impl_utimes@Base 15 ++ __sanitizer_syscall_post_impl_vfork@Base 15 ++ __sanitizer_syscall_post_impl_vhangup@Base 15 ++ __sanitizer_syscall_post_impl_vmsplice@Base 15 ++ __sanitizer_syscall_post_impl_wait4@Base 15 ++ __sanitizer_syscall_post_impl_waitid@Base 15 ++ __sanitizer_syscall_post_impl_waitpid@Base 15 ++ __sanitizer_syscall_post_impl_write@Base 15 ++ __sanitizer_syscall_post_impl_writev@Base 15 ++ __sanitizer_syscall_pre_impl_accept4@Base 15 ++ __sanitizer_syscall_pre_impl_accept@Base 15 ++ __sanitizer_syscall_pre_impl_access@Base 15 ++ __sanitizer_syscall_pre_impl_acct@Base 15 ++ __sanitizer_syscall_pre_impl_add_key@Base 15 ++ __sanitizer_syscall_pre_impl_adjtimex@Base 15 ++ __sanitizer_syscall_pre_impl_alarm@Base 15 ++ __sanitizer_syscall_pre_impl_bdflush@Base 15 ++ __sanitizer_syscall_pre_impl_bind@Base 15 ++ __sanitizer_syscall_pre_impl_brk@Base 15 ++ __sanitizer_syscall_pre_impl_capget@Base 15 ++ __sanitizer_syscall_pre_impl_capset@Base 15 ++ __sanitizer_syscall_pre_impl_chdir@Base 15 ++ __sanitizer_syscall_pre_impl_chmod@Base 15 ++ __sanitizer_syscall_pre_impl_chown@Base 15 ++ __sanitizer_syscall_pre_impl_chroot@Base 15 ++ __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 ++ __sanitizer_syscall_pre_impl_clock_getres@Base 15 ++ __sanitizer_syscall_pre_impl_clock_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 ++ __sanitizer_syscall_pre_impl_clock_settime@Base 15 ++ __sanitizer_syscall_pre_impl_close@Base 15 ++ __sanitizer_syscall_pre_impl_connect@Base 15 ++ __sanitizer_syscall_pre_impl_creat@Base 15 ++ __sanitizer_syscall_pre_impl_delete_module@Base 15 ++ __sanitizer_syscall_pre_impl_dup2@Base 15 ++ __sanitizer_syscall_pre_impl_dup3@Base 15 ++ __sanitizer_syscall_pre_impl_dup@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_create1@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_create@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_wait@Base 15 ++ __sanitizer_syscall_pre_impl_eventfd2@Base 15 ++ __sanitizer_syscall_pre_impl_eventfd@Base 15 ++ __sanitizer_syscall_pre_impl_exit@Base 15 ++ __sanitizer_syscall_pre_impl_exit_group@Base 15 ++ __sanitizer_syscall_pre_impl_faccessat@Base 15 ++ __sanitizer_syscall_pre_impl_fchdir@Base 15 ++ __sanitizer_syscall_pre_impl_fchmod@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat@Base 15 ++ __sanitizer_syscall_pre_impl_fchown@Base 15 ++ __sanitizer_syscall_pre_impl_fchownat@Base 15 ++ __sanitizer_syscall_pre_impl_fcntl64@Base 15 ++ __sanitizer_syscall_pre_impl_fcntl@Base 15 ++ __sanitizer_syscall_pre_impl_fdatasync@Base 15 ++ __sanitizer_syscall_pre_impl_fgetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_flistxattr@Base 15 ++ __sanitizer_syscall_pre_impl_flock@Base 15 ++ __sanitizer_syscall_pre_impl_fork@Base 15 ++ __sanitizer_syscall_pre_impl_fremovexattr@Base 15 ++ __sanitizer_syscall_pre_impl_fsetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_fstat64@Base 15 ++ __sanitizer_syscall_pre_impl_fstat@Base 15 ++ __sanitizer_syscall_pre_impl_fstatat64@Base 15 ++ __sanitizer_syscall_pre_impl_fstatfs64@Base 15 ++ __sanitizer_syscall_pre_impl_fstatfs@Base 15 ++ __sanitizer_syscall_pre_impl_fsync@Base 15 ++ __sanitizer_syscall_pre_impl_ftruncate@Base 15 ++ __sanitizer_syscall_pre_impl_futex@Base 15 ++ __sanitizer_syscall_pre_impl_futimesat@Base 15 ++ __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 ++ __sanitizer_syscall_pre_impl_get_robust_list@Base 15 ++ __sanitizer_syscall_pre_impl_getcpu@Base 15 ++ __sanitizer_syscall_pre_impl_getcwd@Base 15 ++ __sanitizer_syscall_pre_impl_getdents64@Base 15 ++ __sanitizer_syscall_pre_impl_getdents@Base 15 ++ __sanitizer_syscall_pre_impl_getegid@Base 15 ++ __sanitizer_syscall_pre_impl_geteuid@Base 15 ++ __sanitizer_syscall_pre_impl_getgid@Base 15 ++ __sanitizer_syscall_pre_impl_getgroups@Base 15 ++ __sanitizer_syscall_pre_impl_gethostname@Base 15 ++ __sanitizer_syscall_pre_impl_getitimer@Base 15 ++ __sanitizer_syscall_pre_impl_getpeername@Base 15 ++ __sanitizer_syscall_pre_impl_getpgid@Base 15 ++ __sanitizer_syscall_pre_impl_getpgrp@Base 15 ++ __sanitizer_syscall_pre_impl_getpid@Base 15 ++ __sanitizer_syscall_pre_impl_getppid@Base 15 ++ __sanitizer_syscall_pre_impl_getpriority@Base 15 ++ __sanitizer_syscall_pre_impl_getrandom@Base 15 ++ __sanitizer_syscall_pre_impl_getresgid@Base 15 ++ __sanitizer_syscall_pre_impl_getresuid@Base 15 ++ __sanitizer_syscall_pre_impl_getrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_getrusage@Base 15 ++ __sanitizer_syscall_pre_impl_getsid@Base 15 ++ __sanitizer_syscall_pre_impl_getsockname@Base 15 ++ __sanitizer_syscall_pre_impl_getsockopt@Base 15 ++ __sanitizer_syscall_pre_impl_gettid@Base 15 ++ __sanitizer_syscall_pre_impl_gettimeofday@Base 15 ++ __sanitizer_syscall_pre_impl_getuid@Base 15 ++ __sanitizer_syscall_pre_impl_getxattr@Base 15 ++ __sanitizer_syscall_pre_impl_init_module@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_init1@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_init@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 ++ __sanitizer_syscall_pre_impl_io_cancel@Base 15 ++ __sanitizer_syscall_pre_impl_io_destroy@Base 15 ++ __sanitizer_syscall_pre_impl_io_getevents@Base 15 ++ __sanitizer_syscall_pre_impl_io_setup@Base 15 ++ __sanitizer_syscall_pre_impl_io_submit@Base 15 ++ __sanitizer_syscall_pre_impl_ioctl@Base 15 ++ __sanitizer_syscall_pre_impl_ioperm@Base 15 ++ __sanitizer_syscall_pre_impl_ioprio_get@Base 15 ++ __sanitizer_syscall_pre_impl_ioprio_set@Base 15 ++ __sanitizer_syscall_pre_impl_ipc@Base 15 ++ __sanitizer_syscall_pre_impl_kexec_load@Base 15 ++ __sanitizer_syscall_pre_impl_keyctl@Base 15 ++ __sanitizer_syscall_pre_impl_kill@Base 15 ++ __sanitizer_syscall_pre_impl_lchown@Base 15 ++ __sanitizer_syscall_pre_impl_lgetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_link@Base 15 ++ __sanitizer_syscall_pre_impl_linkat@Base 15 ++ __sanitizer_syscall_pre_impl_listen@Base 15 ++ __sanitizer_syscall_pre_impl_listxattr@Base 15 ++ __sanitizer_syscall_pre_impl_llistxattr@Base 15 ++ __sanitizer_syscall_pre_impl_llseek@Base 15 ++ __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 ++ __sanitizer_syscall_pre_impl_lremovexattr@Base 15 ++ __sanitizer_syscall_pre_impl_lseek@Base 15 ++ __sanitizer_syscall_pre_impl_lsetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_lstat64@Base 15 ++ __sanitizer_syscall_pre_impl_lstat@Base 15 ++ __sanitizer_syscall_pre_impl_madvise@Base 15 ++ __sanitizer_syscall_pre_impl_mbind@Base 15 ++ __sanitizer_syscall_pre_impl_migrate_pages@Base 15 ++ __sanitizer_syscall_pre_impl_mincore@Base 15 ++ __sanitizer_syscall_pre_impl_mkdir@Base 15 ++ __sanitizer_syscall_pre_impl_mkdirat@Base 15 ++ __sanitizer_syscall_pre_impl_mknod@Base 15 ++ __sanitizer_syscall_pre_impl_mknodat@Base 15 ++ __sanitizer_syscall_pre_impl_mlock@Base 15 ++ __sanitizer_syscall_pre_impl_mlockall@Base 15 ++ __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 ++ __sanitizer_syscall_pre_impl_mount@Base 15 ++ __sanitizer_syscall_pre_impl_move_pages@Base 15 ++ __sanitizer_syscall_pre_impl_mprotect@Base 15 ++ __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 ++ __sanitizer_syscall_pre_impl_mq_notify@Base 15 ++ __sanitizer_syscall_pre_impl_mq_open@Base 15 ++ __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 ++ __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 ++ __sanitizer_syscall_pre_impl_mq_unlink@Base 15 ++ __sanitizer_syscall_pre_impl_mremap@Base 15 ++ __sanitizer_syscall_pre_impl_msgctl@Base 15 ++ __sanitizer_syscall_pre_impl_msgget@Base 15 ++ __sanitizer_syscall_pre_impl_msgrcv@Base 15 ++ __sanitizer_syscall_pre_impl_msgsnd@Base 15 ++ __sanitizer_syscall_pre_impl_msync@Base 15 ++ __sanitizer_syscall_pre_impl_munlock@Base 15 ++ __sanitizer_syscall_pre_impl_munlockall@Base 15 ++ __sanitizer_syscall_pre_impl_munmap@Base 15 ++ __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 ++ __sanitizer_syscall_pre_impl_nanosleep@Base 15 ++ __sanitizer_syscall_pre_impl_newfstat@Base 15 ++ __sanitizer_syscall_pre_impl_newfstatat@Base 15 ++ __sanitizer_syscall_pre_impl_newlstat@Base 15 ++ __sanitizer_syscall_pre_impl_newstat@Base 15 ++ __sanitizer_syscall_pre_impl_newuname@Base 15 ++ __sanitizer_syscall_pre_impl_ni_syscall@Base 15 ++ __sanitizer_syscall_pre_impl_nice@Base 15 ++ __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_old_mmap@Base 15 ++ __sanitizer_syscall_pre_impl_old_readdir@Base 15 ++ __sanitizer_syscall_pre_impl_old_select@Base 15 ++ __sanitizer_syscall_pre_impl_oldumount@Base 15 ++ __sanitizer_syscall_pre_impl_olduname@Base 15 ++ __sanitizer_syscall_pre_impl_open@Base 15 ++ __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 ++ __sanitizer_syscall_pre_impl_openat@Base 15 ++ __sanitizer_syscall_pre_impl_pause@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 ++ __sanitizer_syscall_pre_impl_perf_event_open@Base 15 ++ __sanitizer_syscall_pre_impl_personality@Base 15 ++ __sanitizer_syscall_pre_impl_pipe2@Base 15 ++ __sanitizer_syscall_pre_impl_pipe@Base 15 ++ __sanitizer_syscall_pre_impl_pivot_root@Base 15 ++ __sanitizer_syscall_pre_impl_poll@Base 15 ++ __sanitizer_syscall_pre_impl_ppoll@Base 15 ++ __sanitizer_syscall_pre_impl_pread64@Base 15 ++ __sanitizer_syscall_pre_impl_preadv@Base 15 ++ __sanitizer_syscall_pre_impl_prlimit64@Base 15 ++ __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 ++ __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 ++ __sanitizer_syscall_pre_impl_pselect6@Base 15 ++ __sanitizer_syscall_pre_impl_ptrace@Base 15 ++ __sanitizer_syscall_pre_impl_pwrite64@Base 15 ++ __sanitizer_syscall_pre_impl_pwritev@Base 15 ++ __sanitizer_syscall_pre_impl_quotactl@Base 15 ++ __sanitizer_syscall_pre_impl_read@Base 15 ++ __sanitizer_syscall_pre_impl_readlink@Base 15 ++ __sanitizer_syscall_pre_impl_readlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_readv@Base 15 ++ __sanitizer_syscall_pre_impl_reboot@Base 15 ++ __sanitizer_syscall_pre_impl_recv@Base 15 ++ __sanitizer_syscall_pre_impl_recvfrom@Base 15 ++ __sanitizer_syscall_pre_impl_recvmmsg@Base 15 ++ __sanitizer_syscall_pre_impl_recvmsg@Base 15 ++ __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 ++ __sanitizer_syscall_pre_impl_removexattr@Base 15 ++ __sanitizer_syscall_pre_impl_rename@Base 15 ++ __sanitizer_syscall_pre_impl_renameat@Base 15 ++ __sanitizer_syscall_pre_impl_request_key@Base 15 ++ __sanitizer_syscall_pre_impl_restart_syscall@Base 15 ++ __sanitizer_syscall_pre_impl_rmdir@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 ++ __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 ++ __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 ++ __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getparam@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 ++ __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setparam@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 ++ __sanitizer_syscall_pre_impl_sched_yield@Base 15 ++ __sanitizer_syscall_pre_impl_select@Base 15 ++ __sanitizer_syscall_pre_impl_semctl@Base 15 ++ __sanitizer_syscall_pre_impl_semget@Base 15 ++ __sanitizer_syscall_pre_impl_semop@Base 15 ++ __sanitizer_syscall_pre_impl_semtimedop@Base 15 ++ __sanitizer_syscall_pre_impl_send@Base 15 ++ __sanitizer_syscall_pre_impl_sendfile64@Base 15 ++ __sanitizer_syscall_pre_impl_sendfile@Base 15 ++ __sanitizer_syscall_pre_impl_sendmmsg@Base 15 ++ __sanitizer_syscall_pre_impl_sendmsg@Base 15 ++ __sanitizer_syscall_pre_impl_sendto@Base 15 ++ __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 ++ __sanitizer_syscall_pre_impl_set_robust_list@Base 15 ++ __sanitizer_syscall_pre_impl_set_tid_address@Base 15 ++ __sanitizer_syscall_pre_impl_setdomainname@Base 15 ++ __sanitizer_syscall_pre_impl_setfsgid@Base 15 ++ __sanitizer_syscall_pre_impl_setfsuid@Base 15 ++ __sanitizer_syscall_pre_impl_setgid@Base 15 ++ __sanitizer_syscall_pre_impl_setgroups@Base 15 ++ __sanitizer_syscall_pre_impl_sethostname@Base 15 ++ __sanitizer_syscall_pre_impl_setitimer@Base 15 ++ __sanitizer_syscall_pre_impl_setns@Base 15 ++ __sanitizer_syscall_pre_impl_setpgid@Base 15 ++ __sanitizer_syscall_pre_impl_setpriority@Base 15 ++ __sanitizer_syscall_pre_impl_setregid@Base 15 ++ __sanitizer_syscall_pre_impl_setresgid@Base 15 ++ __sanitizer_syscall_pre_impl_setresuid@Base 15 ++ __sanitizer_syscall_pre_impl_setreuid@Base 15 ++ __sanitizer_syscall_pre_impl_setrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_setsid@Base 15 ++ __sanitizer_syscall_pre_impl_setsockopt@Base 15 ++ __sanitizer_syscall_pre_impl_settimeofday@Base 15 ++ __sanitizer_syscall_pre_impl_setuid@Base 15 ++ __sanitizer_syscall_pre_impl_setxattr@Base 15 ++ __sanitizer_syscall_pre_impl_sgetmask@Base 15 ++ __sanitizer_syscall_pre_impl_shmat@Base 15 ++ __sanitizer_syscall_pre_impl_shmctl@Base 15 ++ __sanitizer_syscall_pre_impl_shmdt@Base 15 ++ __sanitizer_syscall_pre_impl_shmget@Base 15 ++ __sanitizer_syscall_pre_impl_shutdown@Base 15 ++ __sanitizer_syscall_pre_impl_sigaction@Base 15 ++ __sanitizer_syscall_pre_impl_sigaltstack@Base 15 ++ __sanitizer_syscall_pre_impl_signal@Base 15 ++ __sanitizer_syscall_pre_impl_signalfd4@Base 15 ++ __sanitizer_syscall_pre_impl_signalfd@Base 15 ++ __sanitizer_syscall_pre_impl_sigpending@Base 15 ++ __sanitizer_syscall_pre_impl_sigprocmask@Base 15 ++ __sanitizer_syscall_pre_impl_socket@Base 15 ++ __sanitizer_syscall_pre_impl_socketcall@Base 15 ++ __sanitizer_syscall_pre_impl_socketpair@Base 15 ++ __sanitizer_syscall_pre_impl_splice@Base 15 ++ __sanitizer_syscall_pre_impl_spu_create@Base 15 ++ __sanitizer_syscall_pre_impl_spu_run@Base 15 ++ __sanitizer_syscall_pre_impl_ssetmask@Base 15 ++ __sanitizer_syscall_pre_impl_stat64@Base 15 ++ __sanitizer_syscall_pre_impl_stat@Base 15 ++ __sanitizer_syscall_pre_impl_statfs64@Base 15 ++ __sanitizer_syscall_pre_impl_statfs@Base 15 ++ __sanitizer_syscall_pre_impl_stime@Base 15 ++ __sanitizer_syscall_pre_impl_swapoff@Base 15 ++ __sanitizer_syscall_pre_impl_swapon@Base 15 ++ __sanitizer_syscall_pre_impl_symlink@Base 15 ++ __sanitizer_syscall_pre_impl_symlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_sync@Base 15 ++ __sanitizer_syscall_pre_impl_syncfs@Base 15 ++ __sanitizer_syscall_pre_impl_sysctl@Base 15 ++ __sanitizer_syscall_pre_impl_sysfs@Base 15 ++ __sanitizer_syscall_pre_impl_sysinfo@Base 15 ++ __sanitizer_syscall_pre_impl_syslog@Base 15 ++ __sanitizer_syscall_pre_impl_tee@Base 15 ++ __sanitizer_syscall_pre_impl_tgkill@Base 15 ++ __sanitizer_syscall_pre_impl_time@Base 15 ++ __sanitizer_syscall_pre_impl_timer_create@Base 15 ++ __sanitizer_syscall_pre_impl_timer_delete@Base 15 ++ __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 ++ __sanitizer_syscall_pre_impl_timer_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_timer_settime@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_create@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 ++ __sanitizer_syscall_pre_impl_times@Base 15 ++ __sanitizer_syscall_pre_impl_tkill@Base 15 ++ __sanitizer_syscall_pre_impl_truncate@Base 15 ++ __sanitizer_syscall_pre_impl_umask@Base 15 ++ __sanitizer_syscall_pre_impl_umount@Base 15 ++ __sanitizer_syscall_pre_impl_uname@Base 15 ++ __sanitizer_syscall_pre_impl_unlink@Base 15 ++ __sanitizer_syscall_pre_impl_unlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_unshare@Base 15 ++ __sanitizer_syscall_pre_impl_uselib@Base 15 ++ __sanitizer_syscall_pre_impl_ustat@Base 15 ++ __sanitizer_syscall_pre_impl_utime@Base 15 ++ __sanitizer_syscall_pre_impl_utimensat@Base 15 ++ __sanitizer_syscall_pre_impl_utimes@Base 15 ++ __sanitizer_syscall_pre_impl_vfork@Base 15 ++ __sanitizer_syscall_pre_impl_vhangup@Base 15 ++ __sanitizer_syscall_pre_impl_vmsplice@Base 15 ++ __sanitizer_syscall_pre_impl_wait4@Base 15 ++ __sanitizer_syscall_pre_impl_waitid@Base 15 ++ __sanitizer_syscall_pre_impl_waitpid@Base 15 ++ __sanitizer_syscall_pre_impl_write@Base 15 ++ __sanitizer_syscall_pre_impl_writev@Base 15 ++ __sanitizer_unaligned_load16@Base 15 ++ __sanitizer_unaligned_load32@Base 15 ++ __sanitizer_unaligned_load64@Base 15 ++ __sanitizer_unaligned_store16@Base 15 ++ __sanitizer_unaligned_store32@Base 15 ++ __sanitizer_unaligned_store64@Base 15 ++ __sanitizer_verify_contiguous_container@Base 15 ++ __sanitizer_verify_double_ended_contiguous_container@Base 15 ++ __sanitizer_weak_hook_memcmp@Base 15 ++ __sanitizer_weak_hook_memmem@Base 15 ++ __sanitizer_weak_hook_strcasecmp@Base 15 ++ __sanitizer_weak_hook_strcasestr@Base 15 ++ __sanitizer_weak_hook_strcmp@Base 15 ++ __sanitizer_weak_hook_strncasecmp@Base 15 ++ __sanitizer_weak_hook_strncmp@Base 15 ++ __sanitizer_weak_hook_strstr@Base 15 ++ __snprintf_chk@Base 15 ++ __sprintf_chk@Base 15 ++ __strdup@Base 15 ++ __strndup@Base 15 ++ __strxfrm_l@Base 15 ++ (arch=i386)__tls_get_addr@Base 15 ++ (arch=powerpc)__tls_get_addr_opt@Base 15 ++ __uflow@Base 15 ++ __underflow@Base 15 ++ __vsnprintf_chk@Base 15 ++ __vsprintf_chk@Base 15 ++ __wcsxfrm_l@Base 15 ++ __woverflow@Base 15 ++ __wuflow@Base 15 ++ __wunderflow@Base 15 ++ __xpg_strerror_r@Base 15 ++ __xstat64@Base 15 ++ __xstat@Base 15 ++ _exit@Base 15 ++ _longjmp@Base 15 ++ _obstack_begin@Base 15 ++ _obstack_begin_1@Base 15 ++ _obstack_newchunk@Base 15 ++ accept4@Base 15 ++ accept@Base 15 ++ aligned_alloc@Base 15 ++ argp_parse@Base 15 ++ asctime@Base 15 ++ asctime_r@Base 15 ++ asprintf@Base 15 ++ atoi@Base 15 ++ atol@Base 15 ++ atoll@Base 15 ++ backtrace@Base 15 ++ backtrace_symbols@Base 15 ++ bcmp@Base 15 ++ bsearch@Base 15 ++ bzero@Base 15 ++ calloc@Base 15 ++ canonicalize_file_name@Base 15 ++ capget@Base 15 ++ capset@Base 15 ++ cfree@Base 15 ++ clock_getcpuclockid@Base 15 ++ clock_getres@Base 15 ++ clock_gettime@Base 15 ++ clock_settime@Base 15 ++ confstr@Base 15 ++ ctermid@Base 15 ++ ctime@Base 15 ++ ctime_r@Base 15 ++ dlclose@Base 15 ++ dlopen@Base 15 ++ dn_comp@Base 15 ++ dn_expand@Base 15 ++ drand48_r@Base 15 ++ endgrent@Base 15 ++ endpwent@Base 15 ++ ether_aton@Base 15 ++ ether_aton_r@Base 15 ++ ether_hostton@Base 15 ++ ether_line@Base 15 ++ ether_ntoa@Base 15 ++ ether_ntoa_r@Base 15 ++ ether_ntohost@Base 15 ++ eventfd_read@Base 15 ++ eventfd_write@Base 15 ++ fclose@Base 15 ++ fdopen@Base 15 ++ fflush@Base 15 ++ fgetgrent@Base 15 ++ fgetgrent_r@Base 15 ++ fgetpwent@Base 15 ++ fgetpwent_r@Base 15 ++ fgets@Base 15 ++ fgetxattr@Base 15 ++ flistxattr@Base 15 ++ fmemopen@Base 15 ++ fopen64@Base 15 ++ fopen@Base 15 ++ fopencookie@Base 15 ++ fprintf@Base 15 ++ fputs@Base 15 ++ fread@Base 15 ++ free@Base 15 ++ freopen64@Base 15 ++ freopen@Base 15 ++ frexp@Base 15 ++ frexpf@Base 15 ++ frexpl@Base 15 ++ fscanf@Base 15 ++ fstatfs64@Base 15 ++ fstatfs@Base 15 ++ fstatvfs64@Base 15 ++ fstatvfs@Base 15 ++ ftime@Base 15 ++ fwrite@Base 15 ++ get_current_dir_name@Base 15 ++ getaddrinfo@Base 15 ++ getcwd@Base 15 ++ getdelim@Base 15 ++ getentropy@Base 15 ++ getgrent@Base 15 ++ getgrent_r@Base 15 ++ getgrgid@Base 15 ++ getgrgid_r@Base 15 ++ getgrnam@Base 15 ++ getgrnam_r@Base 15 ++ getgrouplist@Base 15 ++ getgroups@Base 15 ++ gethostbyaddr@Base 15 ++ gethostbyaddr_r@Base 15 ++ gethostbyname2@Base 15 ++ gethostbyname2_r@Base 15 ++ gethostbyname@Base 15 ++ gethostbyname_r@Base 15 ++ gethostent@Base 15 ++ gethostent_r@Base 15 ++ getifaddrs@Base 15 ++ getitimer@Base 15 ++ getline@Base 15 ++ getloadavg@Base 15 ++ getmntent@Base 15 ++ getmntent_r@Base 15 ++ getnameinfo@Base 15 ++ getnetbyaddr@Base 15 ++ getnetbyname@Base 15 ++ getnetent@Base 15 ++ getpass@Base 15 ++ getpeername@Base 15 ++ getprotobyname@Base 15 ++ getprotobyname_r@Base 15 ++ getprotobynumber@Base 15 ++ getprotobynumber_r@Base 15 ++ getprotoent@Base 15 ++ getprotoent_r@Base 15 ++ getpwent@Base 15 ++ getpwent_r@Base 15 ++ getpwnam@Base 15 ++ getpwnam_r@Base 15 ++ getpwuid@Base 15 ++ getpwuid_r@Base 15 ++ getrandom@Base 15 ++ getresgid@Base 15 ++ getresuid@Base 15 ++ getsockname@Base 15 ++ getsockopt@Base 15 ++ getusershell@Base 15 ++ getutent@Base 15 ++ getutid@Base 15 ++ getutline@Base 15 ++ getutxent@Base 15 ++ getutxid@Base 15 ++ getutxline@Base 15 ++ getxattr@Base 15 ++ glob64@Base 15 ++ glob@Base 15 ++ gmtime@Base 15 ++ gmtime_r@Base 15 ++ iconv@Base 15 ++ if_indextoname@Base 15 ++ if_nametoindex@Base 15 ++ index@Base 15 ++ inet_aton@Base 15 ++ inet_ntop@Base 15 ++ inet_pton@Base 15 ++ initgroups@Base 15 ++ ioctl@Base 15 ++ lgamma@Base 15 ++ lgamma_r@Base 15 ++ lgammaf@Base 15 ++ lgammaf_r@Base 15 ++ lgammal@Base 15 ++ lgammal_r@Base 15 ++ lgetxattr@Base 15 ++ listxattr@Base 15 ++ llistxattr@Base 15 ++ localtime@Base 15 ++ localtime_r@Base 15 ++ longjmp@Base 15 ++ lrand48_r@Base 15 ++ lstat64@Base 15 ++ lstat@Base 15 ++ makecontext@Base 15 ++ mallinfo@Base 15 ++ malloc@Base 15 ++ malloc_stats@Base 15 ++ malloc_usable_size@Base 15 ++ mallopt@Base 15 ++ mbsnrtowcs@Base 15 ++ mbsrtowcs@Base 15 ++ mbstowcs@Base 15 ++ mcheck@Base 15 ++ mcheck_pedantic@Base 15 ++ memalign@Base 15 ++ memchr@Base 15 ++ memcmp@Base 15 ++ memcpy@Base 15 ++ memmem@Base 15 ++ memmove@Base 15 ++ memrchr@Base 15 ++ memset@Base 15 ++ mincore@Base 15 ++ mktime@Base 15 ++ mlock@Base 15 ++ mlockall@Base 15 ++ mmap64@Base 15 ++ mmap@Base 15 ++ modf@Base 15 ++ modff@Base 15 ++ modfl@Base 15 ++ mprobe@Base 15 ++ mprotect@Base 15 ++ msgrcv@Base 15 ++ msgsnd@Base 15 ++ munlock@Base 15 ++ munlockall@Base 15 ++ munmap@Base 15 ++ name_to_handle_at@Base 15 ++ open_by_handle_at@Base 15 ++ open_memstream@Base 15 ++ open_wmemstream@Base 15 ++ opendir@Base 15 ++ pclose@Base 15 ++ poll@Base 15 ++ popen@Base 15 ++ posix_memalign@Base 15 ++ posix_spawn@Base 15 ++ posix_spawnp@Base 15 ++ ppoll@Base 15 ++ prctl@Base 15 ++ pread64@Base 15 ++ pread@Base 15 ++ preadv2@Base 15 ++ preadv64@Base 15 ++ preadv@Base 15 ++ printf@Base 15 ++ process_vm_readv@Base 15 ++ process_vm_writev@Base 15 ++ pthread_attr_getaffinity_np@Base 15 ++ pthread_attr_getdetachstate@Base 15 ++ pthread_attr_getguardsize@Base 15 ++ pthread_attr_getinheritsched@Base 15 ++ pthread_attr_getschedparam@Base 15 ++ pthread_attr_getschedpolicy@Base 15 ++ pthread_attr_getscope@Base 15 ++ pthread_attr_getstack@Base 15 ++ pthread_attr_getstacksize@Base 15 ++ pthread_barrierattr_getpshared@Base 15 ++ pthread_condattr_getclock@Base 15 ++ pthread_condattr_getpshared@Base 15 ++ pthread_create@Base 15 ++ pthread_detach@Base 15 ++ pthread_exit@Base 15 ++ pthread_getaffinity_np@Base 15 ++ pthread_getcpuclockid@Base 15 ++ pthread_getname_np@Base 15 ++ pthread_getschedparam@Base 15 ++ pthread_join@Base 15 ++ pthread_mutexattr_getprioceiling@Base 15 ++ pthread_mutexattr_getprotocol@Base 15 ++ pthread_mutexattr_getpshared@Base 15 ++ pthread_mutexattr_getrobust@Base 15 ++ pthread_mutexattr_getrobust_np@Base 15 ++ pthread_mutexattr_gettype@Base 15 ++ pthread_rwlockattr_getkind_np@Base 15 ++ pthread_rwlockattr_getpshared@Base 15 ++ pthread_setcancelstate@Base 15 ++ pthread_setcanceltype@Base 15 ++ pthread_setname_np@Base 15 ++ pthread_sigmask@Base 15 ++ pthread_timedjoin_np@Base 15 ++ pthread_tryjoin_np@Base 15 ++ ptrace@Base 15 ++ ptsname@Base 15 ++ ptsname_r@Base 15 ++ puts@Base 15 ++ pututxline@Base 15 ++ pvalloc@Base 15 ++ pwrite64@Base 15 ++ pwrite@Base 15 ++ pwritev2@Base 15 ++ pwritev64@Base 15 ++ pwritev@Base 15 ++ qsort@Base 15 ++ qsort_r@Base 15 ++ rand_r@Base 15 ++ random_r@Base 15 ++ read@Base 15 ++ readdir64@Base 15 ++ readdir64_r@Base 15 ++ readdir@Base 15 ++ readdir_r@Base 15 ++ readlink@Base 15 ++ readlinkat@Base 15 ++ readv@Base 15 ++ realloc@Base 15 ++ reallocarray@Base 15 ++ realpath@Base 15 ++ recv@Base 15 ++ recvfrom@Base 15 ++ recvmmsg@Base 15 ++ recvmsg@Base 15 ++ regcomp@Base 15 ++ regerror@Base 15 ++ regexec@Base 15 ++ regfree@Base 15 ++ remquo@Base 15 ++ remquof@Base 15 ++ remquol@Base 15 ++ scandir64@Base 15 ++ scandir@Base 15 ++ scanf@Base 15 ++ sched_getaffinity@Base 15 ++ sched_getparam@Base 15 ++ sem_destroy@Base 15 ++ sem_getvalue@Base 15 ++ sem_init@Base 15 ++ sem_open@Base 15 ++ sem_post@Base 15 ++ sem_timedwait@Base 15 ++ sem_trywait@Base 15 ++ sem_unlink@Base 15 ++ sem_wait@Base 15 ++ send@Base 15 ++ sendmmsg@Base 15 ++ sendmsg@Base 15 ++ sendto@Base 15 ++ setbuf@Base 15 ++ setbuffer@Base 15 ++ setgrent@Base 15 ++ setitimer@Base 15 ++ setlinebuf@Base 15 ++ setlocale@Base 15 ++ setpwent@Base 15 ++ setvbuf@Base 15 ++ shmctl@Base 15 ++ sigaction@Base 15 ++ sigaltstack@Base 15 ++ sigandset@Base 15 ++ sigemptyset@Base 15 ++ sigfillset@Base 15 ++ siglongjmp@Base 15 ++ signal@Base 15 ++ sigorset@Base 15 ++ sigpending@Base 15 ++ sigprocmask@Base 15 ++ sigtimedwait@Base 15 ++ sigwait@Base 15 ++ sigwaitinfo@Base 15 ++ sincos@Base 15 ++ sincosf@Base 15 ++ sincosl@Base 15 ++ snprintf@Base 15 ++ sprintf@Base 15 ++ sscanf@Base 15 ++ stat64@Base 15 ++ stat@Base 15 ++ statfs64@Base 15 ++ statfs@Base 15 ++ statvfs64@Base 15 ++ statvfs@Base 15 ++ strcasecmp@Base 15 ++ strcasestr@Base 15 ++ strcat@Base 15 ++ strchr@Base 15 ++ strchrnul@Base 15 ++ strcmp@Base 15 ++ strcpy@Base 15 ++ strcspn@Base 15 ++ strdup@Base 15 ++ strerror@Base 15 ++ strerror_r@Base 15 ++ strlen@Base 15 ++ strncasecmp@Base 15 ++ strncat@Base 15 ++ strncmp@Base 15 ++ strncpy@Base 15 ++ strndup@Base 15 ++ strnlen@Base 15 ++ strpbrk@Base 15 ++ strptime@Base 15 ++ strrchr@Base 15 ++ strspn@Base 15 ++ strstr@Base 15 ++ strtoimax@Base 15 ++ strtok@Base 15 ++ strtol@Base 15 ++ strtoll@Base 15 ++ strtoumax@Base 15 ++ strxfrm@Base 15 ++ strxfrm_l@Base 15 ++ swapcontext@Base 15 ++ sysinfo@Base 15 ++ tcgetattr@Base 15 ++ tempnam@Base 15 ++ textdomain@Base 15 ++ time@Base 15 ++ timerfd_gettime@Base 15 ++ timerfd_settime@Base 15 ++ times@Base 15 ++ tmpnam@Base 15 ++ tmpnam_r@Base 15 ++ tsearch@Base 15 ++ ttyname@Base 15 ++ ttyname_r@Base 15 ++ uname@Base 15 ++ valloc@Base 15 ++ vasprintf@Base 15 ++ (arch=i386)vfork@Base 15 ++ vfprintf@Base 15 ++ vfscanf@Base 15 ++ vprintf@Base 15 ++ vscanf@Base 15 ++ vsnprintf@Base 15 ++ vsprintf@Base 15 ++ vsscanf@Base 15 ++ wait3@Base 15 ++ wait4@Base 15 ++ wait@Base 15 ++ waitid@Base 15 ++ waitpid@Base 15 ++ wcrtomb@Base 15 ++ wcscat@Base 15 ++ wcsdup@Base 15 ++ wcslen@Base 15 ++ wcsncat@Base 15 ++ wcsnlen@Base 15 ++ wcsnrtombs@Base 15 ++ wcsrtombs@Base 15 ++ wcstombs@Base 15 ++ wcsxfrm@Base 15 ++ wcsxfrm_l@Base 15 ++ wctomb@Base 15 ++ wordexp@Base 15 ++ write@Base 15 ++ writev@Base 15 ++ xdr_bool@Base 15 ++ xdr_bytes@Base 15 ++ xdr_char@Base 15 ++ xdr_destroy@Base 15 ++ xdr_double@Base 15 ++ xdr_enum@Base 15 ++ xdr_float@Base 15 ++ xdr_hyper@Base 15 ++ xdr_int16_t@Base 15 ++ xdr_int32_t@Base 15 ++ xdr_int64_t@Base 15 ++ xdr_int8_t@Base 15 ++ xdr_int@Base 15 ++ xdr_long@Base 15 ++ xdr_longlong_t@Base 15 ++ xdr_quad_t@Base 15 ++ xdr_short@Base 15 ++ xdr_string@Base 15 ++ xdr_u_char@Base 15 ++ xdr_u_hyper@Base 15 ++ xdr_u_int@Base 15 ++ xdr_u_long@Base 15 ++ xdr_u_longlong_t@Base 15 ++ xdr_u_quad_t@Base 15 ++ xdr_u_short@Base 15 ++ xdr_uint16_t@Base 15 ++ xdr_uint32_t@Base 15 ++ xdr_uint64_t@Base 15 ++ xdr_uint8_t@Base 15 ++ xdrmem_create@Base 15 ++ xdrrec_create@Base 15 ++ xdrstdio_create@Base 15 diff --cc debian/lib64gccLC.postinst index 0000000,0000000..f671fd6 new file mode 100644 --- /dev/null +++ b/debian/lib64gccLC.postinst @@@ -1,0 -1,0 +1,12 @@@ ++#! /bin/sh -e ++ ++case "$1" in ++ configure) ++ docdir=/usr/share/doc/lib64gcc@LC@ ++ if [ -d $docdir ] && [ ! -h $docdir ]; then ++ rm -rf $docdir ++ ln -s gcc-@BV@-base $docdir ++ fi ++esac ++ ++#DEBHELPER# diff --cc debian/lib64stdc++CXX.postinst index 0000000,0000000..1c8e979 new file mode 100644 --- /dev/null +++ b/debian/lib64stdc++CXX.postinst @@@ -1,0 -1,0 +1,12 @@@ ++#! /bin/sh -e ++ ++case "$1" in ++ configure) ++ docdir=/usr/share/doc/lib64stdc++@CXX@ ++ if [ -d $docdir ] && [ ! -h $docdir ]; then ++ rm -rf $docdir ++ ln -s gcc-@BV@-base $docdir ++ fi ++esac ++ ++#DEBHELPER# diff --cc debian/libasan8.symbols index 0000000,0000000..4b243c6 new file mode 100644 --- /dev/null +++ b/debian/libasan8.symbols @@@ -1,0 -1,0 +1,3091 @@@ ++# SymbolsHelper-Confirmed: 15 amd64 armhf i386 powerpc ppc64 ppc64el riscv64 s390x sparc64 x32 ++libasan.so.8 libasan8 #MINVER# ++ _Unwind_RaiseException@Base 15 ++ _ZdaPv@Base 15 ++ _ZdaPvRKSt9nothrow_t@Base 15 ++ _ZdaPvSt11align_val_t@Base 15 ++ _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 ++ (subst)_ZdaPv{size_t}@Base 15 ++ (subst)_ZdaPv{size_t}St11align_val_t@Base 15 ++ _ZdlPv@Base 15 ++ _ZdlPvRKSt9nothrow_t@Base 15 ++ _ZdlPvSt11align_val_t@Base 15 ++ _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 ++ (subst)_ZdlPv{size_t}@Base 15 ++ (subst)_ZdlPv{size_t}St11align_val_t@Base 15 ++ (subst)_Zna{size_t}@Base 15 ++ (subst)_Zna{size_t}RKSt9nothrow_t@Base 15 ++ (subst)_Zna{size_t}St11align_val_t@Base 15 ++ (subst)_Zna{size_t}St11align_val_tRKSt9nothrow_t@Base 15 ++ (subst)_Znw{size_t}@Base 15 ++ (subst)_Znw{size_t}RKSt9nothrow_t@Base 15 ++ (subst)_Znw{size_t}St11align_val_t@Base 15 ++ (subst)_Znw{size_t}St11align_val_tRKSt9nothrow_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor__Unwind_RaiseException@Base 15 ++ (arch=armhf)___interceptor___aeabi_memclr4@Base 15 ++ (arch=armhf)___interceptor___aeabi_memclr8@Base 15 ++ (arch=armhf)___interceptor___aeabi_memclr@Base 15 ++ (arch=armhf)___interceptor___aeabi_memcpy4@Base 15 ++ (arch=armhf)___interceptor___aeabi_memcpy8@Base 15 ++ (arch=armhf)___interceptor___aeabi_memcpy@Base 15 ++ (arch=armhf)___interceptor___aeabi_memmove4@Base 15 ++ (arch=armhf)___interceptor___aeabi_memmove8@Base 15 ++ (arch=armhf)___interceptor___aeabi_memmove@Base 15 ++ (arch=armhf)___interceptor___aeabi_memset4@Base 15 ++ (arch=armhf)___interceptor___aeabi_memset8@Base 15 ++ (arch=armhf)___interceptor___aeabi_memset@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___b64_ntop@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___b64_pton@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___bzero@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___cxa_atexit@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___cxa_throw@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___fprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___getdelim@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_fscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_scanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_sscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoimax@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtol@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoll@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_strtoumax@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vfscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc23_vsscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_fprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_fscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_printf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_scanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_snprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_sprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_sscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vfprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vfscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsnprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___isoc99_vsscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___libc_memalign@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___longjmp_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___lxstat64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___lxstat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___overflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___snprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___sprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___strdup@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___strndup@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___strxfrm_l@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___tls_get_addr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___uflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___underflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___vsnprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___vsprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___wcsxfrm_l@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___woverflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___wuflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___wunderflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___xpg_strerror_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___xstat64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor___xstat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor__exit@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor__longjmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor__obstack_begin@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor__obstack_begin_1@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor__obstack_newchunk@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_accept4@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_accept@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_aligned_alloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_argp_parse@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_asctime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_asctime_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_asprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_atoi@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_atol@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_atoll@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_backtrace@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_backtrace_symbols@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_bcmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_bsearch@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_bzero@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_calloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_canonicalize_file_name@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_capget@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_capset@Base 15 ++ (arch=amd64 armhf x32)___interceptor_cfree@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_clock_getcpuclockid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_clock_getres@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_clock_gettime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_clock_settime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_confstr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ctermid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ctime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ctime_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_dlclose@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_dlopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_dn_comp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_dn_expand@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_drand48_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_endgrent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_endpwent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ether_aton@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ether_aton_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ether_hostton@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ether_line@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntoa@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntoa_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ether_ntohost@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_eventfd_read@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_eventfd_write@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fclose@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fdopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fflush@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fgetgrent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fgetgrent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fgetpwent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fgetpwent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fgets@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fgetxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_flistxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fmemopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fopen64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fopencookie@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fputs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fread@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_free@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_freopen64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_freopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_frexp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_frexpf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_frexpl@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fstatfs64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fstatfs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fstatvfs64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fstatvfs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ftime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_fwrite@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_get_current_dir_name@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getaddrinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getcwd@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getdelim@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getentropy@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getgrent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getgrent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getgrgid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getgrgid_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getgrnam@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getgrnam_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getgrouplist@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getgroups@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyaddr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyaddr_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname2@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname2_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gethostbyname_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gethostent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gethostent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getifaddrs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getitimer@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getline@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getloadavg@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getmntent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getmntent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getnameinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getnetbyaddr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getnetbyname@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getnetent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getpass@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getpeername@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getprotobyname@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getprotobyname_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getprotobynumber@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getprotobynumber_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getprotoent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getprotoent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getpwent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getpwent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getpwnam@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getpwnam_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getpwuid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getpwuid_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getrandom@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getresgid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getresuid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getsockname@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getsockopt@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getusershell@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getutent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getutid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getutline@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getutxent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getutxid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getutxline@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_getxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_glob64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_glob@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gmtime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_gmtime_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_iconv@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_if_indextoname@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_if_nametoindex@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_index@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_inet_aton@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_inet_ntop@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_inet_pton@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_initgroups@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ioctl@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lgamma@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lgamma_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lgammaf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lgammaf_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lgammal@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lgammal_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lgetxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_listxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_llistxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_localtime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_localtime_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_longjmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lrand48_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lstat64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_lstat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_makecontext@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mallinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_malloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_malloc_stats@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_malloc_usable_size@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mallopt@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mbsnrtowcs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mbsrtowcs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mbstowcs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mcheck@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mcheck_pedantic@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_memalign@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_memchr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_memcmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_memcpy@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_memmem@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_memmove@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_memrchr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_memset@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mincore@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mktime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mlock@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mlockall@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mmap64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mmap@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_modf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_modff@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_modfl@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mprobe@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_mprotect@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_msgrcv@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_msgsnd@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_munlock@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_munlockall@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_munmap@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_name_to_handle_at@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_open_by_handle_at@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_open_memstream@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_open_wmemstream@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_opendir@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pclose@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_poll@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_popen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_posix_memalign@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_posix_spawn@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_posix_spawnp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ppoll@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_prctl@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pread64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pread@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_preadv2@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_preadv64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_preadv@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_printf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_process_vm_readv@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_process_vm_writev@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getaffinity_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getdetachstate@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getguardsize@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getinheritsched@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getschedparam@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getschedpolicy@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getscope@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getstack@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_attr_getstacksize@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_barrierattr_getpshared@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_condattr_getclock@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_condattr_getpshared@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_create@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_detach@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_exit@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getaffinity_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getcpuclockid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getname_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_getschedparam@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_join@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getprioceiling@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getprotocol@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getpshared@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getrobust@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_getrobust_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_mutexattr_gettype@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_rwlockattr_getkind_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_rwlockattr_getpshared@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setcancelstate@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setcanceltype@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_setname_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_sigmask@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_timedjoin_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pthread_tryjoin_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ptrace@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ptsname@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ptsname_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_puts@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pututxline@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pvalloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pwrite64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pwrite@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pwritev2@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pwritev64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_pwritev@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_qsort@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_qsort_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_rand_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_random_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_read@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_readdir64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_readdir64_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_readdir@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_readdir_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_readlink@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_readlinkat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_readv@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_realloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_reallocarray@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_realpath@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_recv@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_recvfrom@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_recvmmsg@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_recvmsg@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_regcomp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_regerror@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_regexec@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_regfree@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_remquo@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_remquof@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_remquol@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_scandir64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_scandir@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_scanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sched_getaffinity@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sched_getparam@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_destroy@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_getvalue@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_init@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_open@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_post@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_timedwait@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_trywait@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_unlink@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sem_wait@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_send@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sendmmsg@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sendmsg@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sendto@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_setbuf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_setbuffer@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_setgrent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_setitimer@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_setlinebuf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_setlocale@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_setpwent@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_setvbuf@Base 15 ++ (arch=amd64 riscv64)___interceptor_shmctl@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigaction@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigaltstack@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigandset@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigemptyset@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigfillset@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_siglongjmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_signal@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigorset@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigpending@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigprocmask@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigtimedwait@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigwait@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sigwaitinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sincos@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sincosf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sincosl@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_snprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_stat64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_stat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_statfs64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_statfs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_statvfs64@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_statvfs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strcasecmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strcasestr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strcat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strchr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strchrnul@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strcmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strcpy@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strcspn@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strdup@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strerror@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strerror_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strlen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strncasecmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strncat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strncmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strncpy@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strndup@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strnlen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strpbrk@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strptime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strrchr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strspn@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strstr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strtoimax@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strtok@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strtol@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strtoll@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strtoumax@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strxfrm@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_strxfrm_l@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_swapcontext@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_sysinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_tcgetattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_tempnam@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_textdomain@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_time@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_timerfd_gettime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_timerfd_settime@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_times@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_tmpnam@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_tmpnam_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_tsearch@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ttyname@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_ttyname_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_uname@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_valloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vasprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vfork@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vfprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vfscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vsnprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vsprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_vsscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wait3@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wait4@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wait@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_waitid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_waitpid@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcrtomb@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcscat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcsdup@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcslen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcsncat@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcsnlen@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcsnrtombs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcsrtombs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcstombs@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcsxfrm@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wcsxfrm_l@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wctomb@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_wordexp@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_write@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_writev@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_bool@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_bytes@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_char@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_destroy@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_double@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_enum@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_float@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_hyper@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int16_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int32_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int64_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int8_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_int@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_long@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_longlong_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_quad_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_short@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_string@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_char@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_hyper@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_int@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_long@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_longlong_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_quad_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_u_short@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint16_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint32_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint64_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdr_uint8_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdrmem_create@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdrrec_create@Base 15 ++ (arch=amd64 armhf riscv64 x32)___interceptor_xdrstdio_create@Base 15 ++ __asan_addr_is_in_fake_stack@Base 15 ++ __asan_address_is_poisoned@Base 15 ++ __asan_after_dynamic_init@Base 15 ++ __asan_alloca_poison@Base 15 ++ __asan_allocas_unpoison@Base 15 ++ __asan_backtrace_alloc@Base 15 ++ __asan_backtrace_close@Base 15 ++ __asan_backtrace_create_state@Base 15 ++ __asan_backtrace_dwarf_add@Base 15 ++ __asan_backtrace_free@Base 15 ++ __asan_backtrace_get_view@Base 15 ++ __asan_backtrace_initialize@Base 15 ++ __asan_backtrace_open@Base 15 ++ __asan_backtrace_pcinfo@Base 15 ++ __asan_backtrace_qsort@Base 15 ++ __asan_backtrace_release_view@Base 15 ++ __asan_backtrace_syminfo@Base 15 ++ __asan_backtrace_syminfo_to_full_callback@Base 15 ++ __asan_backtrace_syminfo_to_full_error_callback@Base 15 ++ __asan_backtrace_uncompress_lzma@Base 15 ++ __asan_backtrace_uncompress_zdebug@Base 15 ++ __asan_backtrace_uncompress_zstd@Base 15 ++ __asan_backtrace_vector_finish@Base 15 ++ __asan_backtrace_vector_grow@Base 15 ++ __asan_backtrace_vector_release@Base 15 ++ __asan_before_dynamic_init@Base 15 ++ __asan_cplus_demangle_builtin_types@Base 15 ++ __asan_cplus_demangle_fill_ctor@Base 15 ++ __asan_cplus_demangle_fill_dtor@Base 15 ++ __asan_cplus_demangle_fill_extended_operator@Base 15 ++ __asan_cplus_demangle_fill_name@Base 15 ++ __asan_cplus_demangle_init_info@Base 15 ++ __asan_cplus_demangle_mangled_name@Base 15 ++ __asan_cplus_demangle_operators@Base 15 ++ __asan_cplus_demangle_print@Base 15 ++ __asan_cplus_demangle_print_callback@Base 15 ++ __asan_cplus_demangle_type@Base 15 ++ __asan_cplus_demangle_v3@Base 15 ++ __asan_cplus_demangle_v3_callback@Base 15 ++ __asan_default_options@Base 15 ++ __asan_default_suppressions@Base 15 ++ __asan_describe_address@Base 15 ++ __asan_exp_load16@Base 15 ++ __asan_exp_load1@Base 15 ++ __asan_exp_load2@Base 15 ++ __asan_exp_load4@Base 15 ++ __asan_exp_load8@Base 15 ++ __asan_exp_loadN@Base 15 ++ __asan_exp_store16@Base 15 ++ __asan_exp_store1@Base 15 ++ __asan_exp_store2@Base 15 ++ __asan_exp_store4@Base 15 ++ __asan_exp_store8@Base 15 ++ __asan_exp_storeN@Base 15 ++ __asan_get_alloc_stack@Base 15 ++ __asan_get_current_fake_stack@Base 15 ++ __asan_get_free_stack@Base 15 ++ __asan_get_report_access_size@Base 15 ++ __asan_get_report_access_type@Base 15 ++ __asan_get_report_address@Base 15 ++ __asan_get_report_bp@Base 15 ++ __asan_get_report_description@Base 15 ++ __asan_get_report_pc@Base 15 ++ __asan_get_report_sp@Base 15 ++ __asan_get_shadow_mapping@Base 15 ++ __asan_handle_no_return@Base 15 ++ __asan_handle_vfork@Base 15 ++ __asan_init@Base 15 ++ __asan_internal_memcmp@Base 15 ++ __asan_internal_memcpy@Base 15 ++ __asan_internal_memset@Base 15 ++ __asan_internal_strcmp@Base 15 ++ __asan_internal_strlen@Base 15 ++ __asan_internal_strncmp@Base 15 ++ __asan_internal_strnlen@Base 15 ++ __asan_is_gnu_v3_mangled_ctor@Base 15 ++ __asan_is_gnu_v3_mangled_dtor@Base 15 ++ __asan_java_demangle_v3@Base 15 ++ __asan_java_demangle_v3_callback@Base 15 ++ __asan_load16@Base 15 ++ __asan_load16_noabort@Base 15 ++ __asan_load1@Base 15 ++ __asan_load1_noabort@Base 15 ++ __asan_load2@Base 15 ++ __asan_load2_noabort@Base 15 ++ __asan_load4@Base 15 ++ __asan_load4_noabort@Base 15 ++ __asan_load8@Base 15 ++ __asan_load8_noabort@Base 15 ++ __asan_loadN@Base 15 ++ __asan_loadN_noabort@Base 15 ++ __asan_load_cxx_array_cookie@Base 15 ++ __asan_locate_address@Base 15 ++ __asan_memcpy@Base 15 ++ __asan_memmove@Base 15 ++ __asan_memset@Base 15 ++ __asan_on_error@Base 15 ++ __asan_option_detect_stack_use_after_return@Base 15 ++ __asan_poison_cxx_array_cookie@Base 15 ++ __asan_poison_intra_object_redzone@Base 15 ++ __asan_poison_memory_region@Base 15 ++ __asan_poison_stack_memory@Base 15 ++ __asan_print_accumulated_stats@Base 15 ++ __asan_region_is_poisoned@Base 15 ++ __asan_register_elf_globals@Base 15 ++ __asan_register_globals@Base 15 ++ __asan_register_image_globals@Base 15 ++ __asan_report_error@Base 15 ++ __asan_report_exp_load16@Base 15 ++ __asan_report_exp_load1@Base 15 ++ __asan_report_exp_load2@Base 15 ++ __asan_report_exp_load4@Base 15 ++ __asan_report_exp_load8@Base 15 ++ __asan_report_exp_load_n@Base 15 ++ __asan_report_exp_store16@Base 15 ++ __asan_report_exp_store1@Base 15 ++ __asan_report_exp_store2@Base 15 ++ __asan_report_exp_store4@Base 15 ++ __asan_report_exp_store8@Base 15 ++ __asan_report_exp_store_n@Base 15 ++ __asan_report_load16@Base 15 ++ __asan_report_load16_noabort@Base 15 ++ __asan_report_load1@Base 15 ++ __asan_report_load1_noabort@Base 15 ++ __asan_report_load2@Base 15 ++ __asan_report_load2_noabort@Base 15 ++ __asan_report_load4@Base 15 ++ __asan_report_load4_noabort@Base 15 ++ __asan_report_load8@Base 15 ++ __asan_report_load8_noabort@Base 15 ++ __asan_report_load_n@Base 15 ++ __asan_report_load_n_noabort@Base 15 ++ __asan_report_present@Base 15 ++ __asan_report_store16@Base 15 ++ __asan_report_store16_noabort@Base 15 ++ __asan_report_store1@Base 15 ++ __asan_report_store1_noabort@Base 15 ++ __asan_report_store2@Base 15 ++ __asan_report_store2_noabort@Base 15 ++ __asan_report_store4@Base 15 ++ __asan_report_store4_noabort@Base 15 ++ __asan_report_store8@Base 15 ++ __asan_report_store8_noabort@Base 15 ++ __asan_report_store_n@Base 15 ++ __asan_report_store_n_noabort@Base 15 ++ __asan_rt_version@Base 15 ++ __asan_set_death_callback@Base 15 ++ __asan_set_error_report_callback@Base 15 ++ __asan_set_shadow_00@Base 15 ++ __asan_set_shadow_01@Base 15 ++ __asan_set_shadow_02@Base 15 ++ __asan_set_shadow_03@Base 15 ++ __asan_set_shadow_04@Base 15 ++ __asan_set_shadow_05@Base 15 ++ __asan_set_shadow_06@Base 15 ++ __asan_set_shadow_07@Base 15 ++ __asan_set_shadow_f1@Base 15 ++ __asan_set_shadow_f2@Base 15 ++ __asan_set_shadow_f3@Base 15 ++ __asan_set_shadow_f5@Base 15 ++ __asan_set_shadow_f8@Base 15 ++ __asan_shadow_memory_dynamic_address@Base 15 ++ __asan_stack_free_0@Base 15 ++ __asan_stack_free_10@Base 15 ++ __asan_stack_free_1@Base 15 ++ __asan_stack_free_2@Base 15 ++ __asan_stack_free_3@Base 15 ++ __asan_stack_free_4@Base 15 ++ __asan_stack_free_5@Base 15 ++ __asan_stack_free_6@Base 15 ++ __asan_stack_free_7@Base 15 ++ __asan_stack_free_8@Base 15 ++ __asan_stack_free_9@Base 15 ++ __asan_stack_malloc_0@Base 15 ++ __asan_stack_malloc_10@Base 15 ++ __asan_stack_malloc_1@Base 15 ++ __asan_stack_malloc_2@Base 15 ++ __asan_stack_malloc_3@Base 15 ++ __asan_stack_malloc_4@Base 15 ++ __asan_stack_malloc_5@Base 15 ++ __asan_stack_malloc_6@Base 15 ++ __asan_stack_malloc_7@Base 15 ++ __asan_stack_malloc_8@Base 15 ++ __asan_stack_malloc_9@Base 15 ++ __asan_stack_malloc_always_0@Base 15 ++ __asan_stack_malloc_always_10@Base 15 ++ __asan_stack_malloc_always_1@Base 15 ++ __asan_stack_malloc_always_2@Base 15 ++ __asan_stack_malloc_always_3@Base 15 ++ __asan_stack_malloc_always_4@Base 15 ++ __asan_stack_malloc_always_5@Base 15 ++ __asan_stack_malloc_always_6@Base 15 ++ __asan_stack_malloc_always_7@Base 15 ++ __asan_stack_malloc_always_8@Base 15 ++ __asan_stack_malloc_always_9@Base 15 ++ __asan_store16@Base 15 ++ __asan_store16_noabort@Base 15 ++ __asan_store1@Base 15 ++ __asan_store1_noabort@Base 15 ++ __asan_store2@Base 15 ++ __asan_store2_noabort@Base 15 ++ __asan_store4@Base 15 ++ __asan_store4_noabort@Base 15 ++ __asan_store8@Base 15 ++ __asan_store8_noabort@Base 15 ++ __asan_storeN@Base 15 ++ __asan_storeN_noabort@Base 15 ++ __asan_test_only_reported_buggy_pointer@Base 15 ++ __asan_unpoison_intra_object_redzone@Base 15 ++ __asan_unpoison_memory_region@Base 15 ++ __asan_unpoison_stack_memory@Base 15 ++ __asan_unregister_elf_globals@Base 15 ++ __asan_unregister_globals@Base 15 ++ __asan_unregister_image_globals@Base 15 ++ __asan_update_allocation_context@Base 15 ++ __asan_version_mismatch_check_v8@Base 15 ++ __b64_ntop@Base 15 ++ __b64_pton@Base 15 ++ __bzero@Base 15 ++ __cxa_atexit@Base 15 ++ __cxa_throw@Base 15 ++ __fprintf_chk@Base 15 ++ __getdelim@Base 15 ++ __interceptor__Unwind_RaiseException@Base 15 ++ (arch=armhf)__interceptor___aeabi_memclr4@Base 15 ++ (arch=armhf)__interceptor___aeabi_memclr8@Base 15 ++ (arch=armhf)__interceptor___aeabi_memclr@Base 15 ++ (arch=armhf)__interceptor___aeabi_memcpy4@Base 15 ++ (arch=armhf)__interceptor___aeabi_memcpy8@Base 15 ++ (arch=armhf)__interceptor___aeabi_memcpy@Base 15 ++ (arch=armhf)__interceptor___aeabi_memmove4@Base 15 ++ (arch=armhf)__interceptor___aeabi_memmove8@Base 15 ++ (arch=armhf)__interceptor___aeabi_memmove@Base 15 ++ (arch=armhf)__interceptor___aeabi_memset4@Base 15 ++ (arch=armhf)__interceptor___aeabi_memset8@Base 15 ++ (arch=armhf)__interceptor___aeabi_memset@Base 15 ++ __interceptor___b64_ntop@Base 15 ++ __interceptor___b64_pton@Base 15 ++ __interceptor___bzero@Base 15 ++ __interceptor___cxa_atexit@Base 15 ++ __interceptor___cxa_throw@Base 15 ++ __interceptor___fprintf_chk@Base 15 ++ __interceptor___getdelim@Base 15 ++ __interceptor___isoc23_fscanf@Base 15 ++ __interceptor___isoc23_scanf@Base 15 ++ __interceptor___isoc23_sscanf@Base 15 ++ __interceptor___isoc23_strtoimax@Base 15 ++ __interceptor___isoc23_strtol@Base 15 ++ __interceptor___isoc23_strtoll@Base 15 ++ __interceptor___isoc23_strtoumax@Base 15 ++ __interceptor___isoc23_vfscanf@Base 15 ++ __interceptor___isoc23_vscanf@Base 15 ++ __interceptor___isoc23_vsscanf@Base 15 ++ __interceptor___isoc99_fprintf@Base 15 ++ __interceptor___isoc99_fscanf@Base 15 ++ __interceptor___isoc99_printf@Base 15 ++ __interceptor___isoc99_scanf@Base 15 ++ __interceptor___isoc99_snprintf@Base 15 ++ __interceptor___isoc99_sprintf@Base 15 ++ __interceptor___isoc99_sscanf@Base 15 ++ __interceptor___isoc99_vfprintf@Base 15 ++ __interceptor___isoc99_vfscanf@Base 15 ++ __interceptor___isoc99_vprintf@Base 15 ++ __interceptor___isoc99_vscanf@Base 15 ++ __interceptor___isoc99_vsnprintf@Base 15 ++ __interceptor___isoc99_vsprintf@Base 15 ++ __interceptor___isoc99_vsscanf@Base 15 ++ __interceptor___libc_memalign@Base 15 ++ __interceptor___longjmp_chk@Base 15 ++ __interceptor___lxstat64@Base 15 ++ __interceptor___lxstat@Base 15 ++ __interceptor___overflow@Base 15 ++ __interceptor___snprintf_chk@Base 15 ++ __interceptor___sprintf_chk@Base 15 ++ __interceptor___strdup@Base 15 ++ __interceptor___strndup@Base 15 ++ __interceptor___strxfrm_l@Base 15 ++ (arch=!s390x)__interceptor___tls_get_addr@Base 15 ++ (arch=s390x)__interceptor___tls_get_addr_internal@Base 15 ++ (arch=powerpc ppc64 ppc64el)__interceptor___tls_get_addr_opt@Base 15 ++ (arch=s390x)__interceptor___tls_get_offset@Base 15 ++ __interceptor___uflow@Base 15 ++ __interceptor___underflow@Base 15 ++ __interceptor___vsnprintf_chk@Base 15 ++ __interceptor___vsprintf_chk@Base 15 ++ __interceptor___wcsxfrm_l@Base 15 ++ __interceptor___woverflow@Base 15 ++ __interceptor___wuflow@Base 15 ++ __interceptor___wunderflow@Base 15 ++ __interceptor___xpg_strerror_r@Base 15 ++ __interceptor___xstat64@Base 15 ++ __interceptor___xstat@Base 15 ++ __interceptor__exit@Base 15 ++ __interceptor__longjmp@Base 15 ++ __interceptor__obstack_begin@Base 15 ++ __interceptor__obstack_begin_1@Base 15 ++ __interceptor__obstack_newchunk@Base 15 ++ __interceptor_accept4@Base 15 ++ __interceptor_accept@Base 15 ++ __interceptor_aligned_alloc@Base 15 ++ __interceptor_argp_parse@Base 15 ++ __interceptor_asctime@Base 15 ++ __interceptor_asctime_r@Base 15 ++ __interceptor_asprintf@Base 15 ++ __interceptor_atoi@Base 15 ++ __interceptor_atol@Base 15 ++ __interceptor_atoll@Base 15 ++ __interceptor_backtrace@Base 15 ++ __interceptor_backtrace_symbols@Base 15 ++ __interceptor_bcmp@Base 15 ++ __interceptor_bsearch@Base 15 ++ __interceptor_bzero@Base 15 ++ __interceptor_calloc@Base 15 ++ __interceptor_canonicalize_file_name@Base 15 ++ __interceptor_capget@Base 15 ++ __interceptor_capset@Base 15 ++ (arch=!riscv64)__interceptor_cfree@Base 15 ++ __interceptor_clock_getcpuclockid@Base 15 ++ __interceptor_clock_getres@Base 15 ++ __interceptor_clock_gettime@Base 15 ++ __interceptor_clock_settime@Base 15 ++ __interceptor_confstr@Base 15 ++ __interceptor_ctermid@Base 15 ++ __interceptor_ctime@Base 15 ++ __interceptor_ctime_r@Base 15 ++ __interceptor_dlclose@Base 15 ++ __interceptor_dlopen@Base 15 ++ __interceptor_dn_comp@Base 15 ++ __interceptor_dn_expand@Base 15 ++ __interceptor_drand48_r@Base 15 ++ __interceptor_endgrent@Base 15 ++ __interceptor_endpwent@Base 15 ++ __interceptor_ether_aton@Base 15 ++ __interceptor_ether_aton_r@Base 15 ++ __interceptor_ether_hostton@Base 15 ++ __interceptor_ether_line@Base 15 ++ __interceptor_ether_ntoa@Base 15 ++ __interceptor_ether_ntoa_r@Base 15 ++ __interceptor_ether_ntohost@Base 15 ++ __interceptor_eventfd_read@Base 15 ++ __interceptor_eventfd_write@Base 15 ++ __interceptor_fclose@Base 15 ++ __interceptor_fdopen@Base 15 ++ __interceptor_fflush@Base 15 ++ __interceptor_fgetgrent@Base 15 ++ __interceptor_fgetgrent_r@Base 15 ++ __interceptor_fgetpwent@Base 15 ++ __interceptor_fgetpwent_r@Base 15 ++ __interceptor_fgets@Base 15 ++ __interceptor_fgetxattr@Base 15 ++ __interceptor_flistxattr@Base 15 ++ __interceptor_fmemopen@Base 15 ++ __interceptor_fopen64@Base 15 ++ __interceptor_fopen@Base 15 ++ __interceptor_fopencookie@Base 15 ++ __interceptor_fprintf@Base 15 ++ __interceptor_fputs@Base 15 ++ __interceptor_fread@Base 15 ++ __interceptor_free@Base 15 ++ __interceptor_freopen64@Base 15 ++ __interceptor_freopen@Base 15 ++ __interceptor_frexp@Base 15 ++ __interceptor_frexpf@Base 15 ++ __interceptor_frexpl@Base 15 ++ __interceptor_fscanf@Base 15 ++ __interceptor_fstatfs64@Base 15 ++ __interceptor_fstatfs@Base 15 ++ __interceptor_fstatvfs64@Base 15 ++ __interceptor_fstatvfs@Base 15 ++ __interceptor_ftime@Base 15 ++ __interceptor_fwrite@Base 15 ++ __interceptor_get_current_dir_name@Base 15 ++ __interceptor_getaddrinfo@Base 15 ++ __interceptor_getcwd@Base 15 ++ __interceptor_getdelim@Base 15 ++ __interceptor_getentropy@Base 15 ++ __interceptor_getgrent@Base 15 ++ __interceptor_getgrent_r@Base 15 ++ __interceptor_getgrgid@Base 15 ++ __interceptor_getgrgid_r@Base 15 ++ __interceptor_getgrnam@Base 15 ++ __interceptor_getgrnam_r@Base 15 ++ __interceptor_getgrouplist@Base 15 ++ __interceptor_getgroups@Base 15 ++ __interceptor_gethostbyaddr@Base 15 ++ __interceptor_gethostbyaddr_r@Base 15 ++ __interceptor_gethostbyname2@Base 15 ++ __interceptor_gethostbyname2_r@Base 15 ++ __interceptor_gethostbyname@Base 15 ++ __interceptor_gethostbyname_r@Base 15 ++ __interceptor_gethostent@Base 15 ++ __interceptor_gethostent_r@Base 15 ++ __interceptor_getifaddrs@Base 15 ++ __interceptor_getitimer@Base 15 ++ __interceptor_getline@Base 15 ++ __interceptor_getloadavg@Base 15 ++ __interceptor_getmntent@Base 15 ++ __interceptor_getmntent_r@Base 15 ++ __interceptor_getnameinfo@Base 15 ++ __interceptor_getnetbyaddr@Base 15 ++ __interceptor_getnetbyname@Base 15 ++ __interceptor_getnetent@Base 15 ++ __interceptor_getpass@Base 15 ++ __interceptor_getpeername@Base 15 ++ __interceptor_getprotobyname@Base 15 ++ __interceptor_getprotobyname_r@Base 15 ++ __interceptor_getprotobynumber@Base 15 ++ __interceptor_getprotobynumber_r@Base 15 ++ __interceptor_getprotoent@Base 15 ++ __interceptor_getprotoent_r@Base 15 ++ __interceptor_getpwent@Base 15 ++ __interceptor_getpwent_r@Base 15 ++ __interceptor_getpwnam@Base 15 ++ __interceptor_getpwnam_r@Base 15 ++ __interceptor_getpwuid@Base 15 ++ __interceptor_getpwuid_r@Base 15 ++ __interceptor_getrandom@Base 15 ++ __interceptor_getresgid@Base 15 ++ __interceptor_getresuid@Base 15 ++ __interceptor_getsockname@Base 15 ++ __interceptor_getsockopt@Base 15 ++ __interceptor_getusershell@Base 15 ++ __interceptor_getutent@Base 15 ++ __interceptor_getutid@Base 15 ++ __interceptor_getutline@Base 15 ++ __interceptor_getutxent@Base 15 ++ __interceptor_getutxid@Base 15 ++ __interceptor_getutxline@Base 15 ++ __interceptor_getxattr@Base 15 ++ __interceptor_glob64@Base 15 ++ __interceptor_glob@Base 15 ++ __interceptor_gmtime@Base 15 ++ __interceptor_gmtime_r@Base 15 ++ __interceptor_iconv@Base 15 ++ __interceptor_if_indextoname@Base 15 ++ __interceptor_if_nametoindex@Base 15 ++ __interceptor_index@Base 15 ++ __interceptor_inet_aton@Base 15 ++ __interceptor_inet_ntop@Base 15 ++ __interceptor_inet_pton@Base 15 ++ __interceptor_initgroups@Base 15 ++ __interceptor_ioctl@Base 15 ++ __interceptor_lgamma@Base 15 ++ __interceptor_lgamma_r@Base 15 ++ __interceptor_lgammaf@Base 15 ++ __interceptor_lgammaf_r@Base 15 ++ __interceptor_lgammal@Base 15 ++ __interceptor_lgammal_r@Base 15 ++ __interceptor_lgetxattr@Base 15 ++ __interceptor_listxattr@Base 15 ++ __interceptor_llistxattr@Base 15 ++ __interceptor_localtime@Base 15 ++ __interceptor_localtime_r@Base 15 ++ __interceptor_longjmp@Base 15 ++ __interceptor_lrand48_r@Base 15 ++ __interceptor_lstat64@Base 15 ++ __interceptor_lstat@Base 15 ++ __interceptor_makecontext@Base 15 ++ __interceptor_mallinfo@Base 15 ++ __interceptor_malloc@Base 15 ++ __interceptor_malloc_stats@Base 15 ++ __interceptor_malloc_usable_size@Base 15 ++ __interceptor_mallopt@Base 15 ++ __interceptor_mbsnrtowcs@Base 15 ++ __interceptor_mbsrtowcs@Base 15 ++ __interceptor_mbstowcs@Base 15 ++ __interceptor_mcheck@Base 15 ++ __interceptor_mcheck_pedantic@Base 15 ++ __interceptor_memalign@Base 15 ++ __interceptor_memchr@Base 15 ++ __interceptor_memcmp@Base 15 ++ __interceptor_memcpy@Base 15 ++ __interceptor_memmem@Base 15 ++ __interceptor_memmove@Base 15 ++ __interceptor_memrchr@Base 15 ++ __interceptor_memset@Base 15 ++ __interceptor_mincore@Base 15 ++ __interceptor_mktime@Base 15 ++ __interceptor_mlock@Base 15 ++ __interceptor_mlockall@Base 15 ++ __interceptor_mmap64@Base 15 ++ __interceptor_mmap@Base 15 ++ __interceptor_modf@Base 15 ++ __interceptor_modff@Base 15 ++ __interceptor_modfl@Base 15 ++ __interceptor_mprobe@Base 15 ++ __interceptor_mprotect@Base 15 ++ __interceptor_msgrcv@Base 15 ++ __interceptor_msgsnd@Base 15 ++ __interceptor_munlock@Base 15 ++ __interceptor_munlockall@Base 15 ++ __interceptor_munmap@Base 15 ++ __interceptor_name_to_handle_at@Base 15 ++ __interceptor_open_by_handle_at@Base 15 ++ __interceptor_open_memstream@Base 15 ++ __interceptor_open_wmemstream@Base 15 ++ __interceptor_opendir@Base 15 ++ __interceptor_pclose@Base 15 ++ __interceptor_poll@Base 15 ++ __interceptor_popen@Base 15 ++ __interceptor_posix_memalign@Base 15 ++ __interceptor_posix_spawn@Base 15 ++ __interceptor_posix_spawnp@Base 15 ++ __interceptor_ppoll@Base 15 ++ __interceptor_prctl@Base 15 ++ __interceptor_pread64@Base 15 ++ __interceptor_pread@Base 15 ++ __interceptor_preadv2@Base 15 ++ __interceptor_preadv64@Base 15 ++ __interceptor_preadv@Base 15 ++ __interceptor_printf@Base 15 ++ __interceptor_process_vm_readv@Base 15 ++ __interceptor_process_vm_writev@Base 15 ++ __interceptor_pthread_attr_getaffinity_np@Base 15 ++ __interceptor_pthread_attr_getdetachstate@Base 15 ++ __interceptor_pthread_attr_getguardsize@Base 15 ++ __interceptor_pthread_attr_getinheritsched@Base 15 ++ __interceptor_pthread_attr_getschedparam@Base 15 ++ __interceptor_pthread_attr_getschedpolicy@Base 15 ++ __interceptor_pthread_attr_getscope@Base 15 ++ __interceptor_pthread_attr_getstack@Base 15 ++ __interceptor_pthread_attr_getstacksize@Base 15 ++ __interceptor_pthread_barrierattr_getpshared@Base 15 ++ __interceptor_pthread_condattr_getclock@Base 15 ++ __interceptor_pthread_condattr_getpshared@Base 15 ++ __interceptor_pthread_create@Base 15 ++ __interceptor_pthread_detach@Base 15 ++ __interceptor_pthread_exit@Base 15 ++ __interceptor_pthread_getaffinity_np@Base 15 ++ __interceptor_pthread_getcpuclockid@Base 15 ++ __interceptor_pthread_getname_np@Base 15 ++ __interceptor_pthread_getschedparam@Base 15 ++ __interceptor_pthread_join@Base 15 ++ __interceptor_pthread_mutexattr_getprioceiling@Base 15 ++ __interceptor_pthread_mutexattr_getprotocol@Base 15 ++ __interceptor_pthread_mutexattr_getpshared@Base 15 ++ __interceptor_pthread_mutexattr_getrobust@Base 15 ++ __interceptor_pthread_mutexattr_getrobust_np@Base 15 ++ __interceptor_pthread_mutexattr_gettype@Base 15 ++ __interceptor_pthread_rwlockattr_getkind_np@Base 15 ++ __interceptor_pthread_rwlockattr_getpshared@Base 15 ++ __interceptor_pthread_setcancelstate@Base 15 ++ __interceptor_pthread_setcanceltype@Base 15 ++ __interceptor_pthread_setname_np@Base 15 ++ __interceptor_pthread_sigmask@Base 15 ++ __interceptor_pthread_timedjoin_np@Base 15 ++ __interceptor_pthread_tryjoin_np@Base 15 ++ (arch=!powerpc)__interceptor_ptrace@Base 15 ++ __interceptor_ptsname@Base 15 ++ __interceptor_ptsname_r@Base 15 ++ __interceptor_puts@Base 15 ++ __interceptor_pututxline@Base 15 ++ __interceptor_pvalloc@Base 15 ++ __interceptor_pwrite64@Base 15 ++ __interceptor_pwrite@Base 15 ++ __interceptor_pwritev2@Base 15 ++ __interceptor_pwritev64@Base 15 ++ __interceptor_pwritev@Base 15 ++ __interceptor_qsort@Base 15 ++ __interceptor_qsort_r@Base 15 ++ __interceptor_rand_r@Base 15 ++ __interceptor_random_r@Base 15 ++ __interceptor_read@Base 15 ++ __interceptor_readdir64@Base 15 ++ __interceptor_readdir64_r@Base 15 ++ __interceptor_readdir@Base 15 ++ __interceptor_readdir_r@Base 15 ++ __interceptor_readlink@Base 15 ++ __interceptor_readlinkat@Base 15 ++ __interceptor_readv@Base 15 ++ __interceptor_realloc@Base 15 ++ __interceptor_reallocarray@Base 15 ++ __interceptor_realpath@Base 15 ++ __interceptor_recv@Base 15 ++ __interceptor_recvfrom@Base 15 ++ __interceptor_recvmmsg@Base 15 ++ __interceptor_recvmsg@Base 15 ++ __interceptor_regcomp@Base 15 ++ __interceptor_regerror@Base 15 ++ __interceptor_regexec@Base 15 ++ __interceptor_regfree@Base 15 ++ __interceptor_remquo@Base 15 ++ __interceptor_remquof@Base 15 ++ __interceptor_remquol@Base 15 ++ __interceptor_scandir64@Base 15 ++ __interceptor_scandir@Base 15 ++ __interceptor_scanf@Base 15 ++ __interceptor_sched_getaffinity@Base 15 ++ __interceptor_sched_getparam@Base 15 ++ __interceptor_sem_destroy@Base 15 ++ __interceptor_sem_getvalue@Base 15 ++ __interceptor_sem_init@Base 15 ++ __interceptor_sem_open@Base 15 ++ __interceptor_sem_post@Base 15 ++ __interceptor_sem_timedwait@Base 15 ++ __interceptor_sem_trywait@Base 15 ++ __interceptor_sem_unlink@Base 15 ++ __interceptor_sem_wait@Base 15 ++ __interceptor_send@Base 15 ++ __interceptor_sendmmsg@Base 15 ++ __interceptor_sendmsg@Base 15 ++ __interceptor_sendto@Base 15 ++ __interceptor_setbuf@Base 15 ++ __interceptor_setbuffer@Base 15 ++ __interceptor_setgrent@Base 15 ++ __interceptor_setitimer@Base 15 ++ __interceptor_setlinebuf@Base 15 ++ __interceptor_setlocale@Base 15 ++ __interceptor_setpwent@Base 15 ++ __interceptor_setvbuf@Base 15 ++ (arch=!armhf !i386 !powerpc !x32)__interceptor_shmctl@Base 15 ++ __interceptor_sigaction@Base 15 ++ __interceptor_sigaltstack@Base 15 ++ __interceptor_sigandset@Base 15 ++ __interceptor_sigemptyset@Base 15 ++ __interceptor_sigfillset@Base 15 ++ __interceptor_siglongjmp@Base 15 ++ __interceptor_signal@Base 15 ++ __interceptor_sigorset@Base 15 ++ __interceptor_sigpending@Base 15 ++ __interceptor_sigprocmask@Base 15 ++ __interceptor_sigtimedwait@Base 15 ++ __interceptor_sigwait@Base 15 ++ __interceptor_sigwaitinfo@Base 15 ++ __interceptor_sincos@Base 15 ++ __interceptor_sincosf@Base 15 ++ __interceptor_sincosl@Base 15 ++ __interceptor_snprintf@Base 15 ++ __interceptor_sprintf@Base 15 ++ __interceptor_sscanf@Base 15 ++ __interceptor_stat64@Base 15 ++ __interceptor_stat@Base 15 ++ __interceptor_statfs64@Base 15 ++ __interceptor_statfs@Base 15 ++ __interceptor_statvfs64@Base 15 ++ __interceptor_statvfs@Base 15 ++ __interceptor_strcasecmp@Base 15 ++ __interceptor_strcasestr@Base 15 ++ __interceptor_strcat@Base 15 ++ __interceptor_strchr@Base 15 ++ __interceptor_strchrnul@Base 15 ++ __interceptor_strcmp@Base 15 ++ __interceptor_strcpy@Base 15 ++ __interceptor_strcspn@Base 15 ++ __interceptor_strdup@Base 15 ++ __interceptor_strerror@Base 15 ++ __interceptor_strerror_r@Base 15 ++ __interceptor_strlen@Base 15 ++ __interceptor_strncasecmp@Base 15 ++ __interceptor_strncat@Base 15 ++ __interceptor_strncmp@Base 15 ++ __interceptor_strncpy@Base 15 ++ __interceptor_strndup@Base 15 ++ __interceptor_strnlen@Base 15 ++ __interceptor_strpbrk@Base 15 ++ __interceptor_strptime@Base 15 ++ __interceptor_strrchr@Base 15 ++ __interceptor_strspn@Base 15 ++ __interceptor_strstr@Base 15 ++ __interceptor_strtoimax@Base 15 ++ __interceptor_strtok@Base 15 ++ __interceptor_strtol@Base 15 ++ __interceptor_strtoll@Base 15 ++ __interceptor_strtoumax@Base 15 ++ __interceptor_strxfrm@Base 15 ++ __interceptor_strxfrm_l@Base 15 ++ __interceptor_swapcontext@Base 15 ++ __interceptor_sysinfo@Base 15 ++ __interceptor_tcgetattr@Base 15 ++ __interceptor_tempnam@Base 15 ++ __interceptor_textdomain@Base 15 ++ __interceptor_time@Base 15 ++ __interceptor_timerfd_gettime@Base 15 ++ __interceptor_timerfd_settime@Base 15 ++ __interceptor_times@Base 15 ++ __interceptor_tmpnam@Base 15 ++ __interceptor_tmpnam_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__Unwind_RaiseException@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memclr4@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memclr8@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memclr@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memcpy4@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memcpy8@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memcpy@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memmove4@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memmove8@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memmove@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memset4@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memset8@Base 15 ++ (arch=armhf)__interceptor_trampoline___aeabi_memset@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___b64_ntop@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___b64_pton@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___bzero@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___cxa_atexit@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___cxa_throw@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___fprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___getdelim@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_fscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_scanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_sscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoimax@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtol@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoll@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_strtoumax@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vfscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc23_vsscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_fprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_fscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_printf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_scanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_snprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_sprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_sscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vfprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vfscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsnprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___isoc99_vsscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___libc_memalign@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___longjmp_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___lxstat64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___lxstat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___overflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___snprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___sprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strdup@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strndup@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___strxfrm_l@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___tls_get_addr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___uflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___underflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___vsnprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___vsprintf_chk@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wcsxfrm_l@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___woverflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wuflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___wunderflow@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xpg_strerror_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xstat64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline___xstat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__exit@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__longjmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_begin@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_begin_1@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline__obstack_newchunk@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_accept4@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_accept@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_aligned_alloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_argp_parse@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asctime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asctime_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_asprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atoi@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atol@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_atoll@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_backtrace@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_backtrace_symbols@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bcmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bsearch@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_bzero@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_calloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_canonicalize_file_name@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_capget@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_capset@Base 15 ++ (arch=amd64 armhf x32)__interceptor_trampoline_cfree@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_getcpuclockid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_getres@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_gettime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_clock_settime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_confstr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctermid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ctime_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dlclose@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dlopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dn_comp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_dn_expand@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_drand48_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_endgrent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_endpwent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_aton@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_aton_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_hostton@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_line@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntoa@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntoa_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ether_ntohost@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_eventfd_read@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_eventfd_write@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fclose@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fdopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fflush@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetgrent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetgrent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetpwent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetpwent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgets@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fgetxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_flistxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fmemopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopen64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fopencookie@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fputs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fread@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_free@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_freopen64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_freopen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexpf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_frexpl@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatfs64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatfs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatvfs64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fstatvfs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ftime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_fwrite@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_get_current_dir_name@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getaddrinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getcwd@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getdelim@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getentropy@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrgid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrgid_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrnam@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrnam_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgrouplist@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getgroups@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyaddr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyaddr_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname2@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname2_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostbyname_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gethostent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getifaddrs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getitimer@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getline@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getloadavg@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getmntent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getmntent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnameinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetbyaddr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetbyname@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getnetent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpass@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpeername@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobyname@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobyname_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobynumber@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotobynumber_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotoent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getprotoent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwent_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwnam@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwnam_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwuid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getpwuid_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getrandom@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getresgid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getresuid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getsockname@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getsockopt@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getusershell@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutline@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getutxline@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_getxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_glob64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_glob@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gmtime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_gmtime_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_iconv@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_if_indextoname@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_if_nametoindex@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_index@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_aton@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_ntop@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_inet_pton@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_initgroups@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ioctl@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgamma@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgamma_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammaf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammaf_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammal@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgammal_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lgetxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_listxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_llistxattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_localtime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_localtime_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_longjmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lrand48_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lstat64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_lstat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_makecontext@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mallinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc_stats@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_malloc_usable_size@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mallopt@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbsnrtowcs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbsrtowcs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mbstowcs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mcheck@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mcheck_pedantic@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memalign@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memchr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memcmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memcpy@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memmem@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memmove@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memrchr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_memset@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mincore@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mktime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mlock@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mlockall@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mmap64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mmap@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modff@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_modfl@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mprobe@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_mprotect@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_msgrcv@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_msgsnd@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munlock@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munlockall@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_munmap@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_name_to_handle_at@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_by_handle_at@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_memstream@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_open_wmemstream@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_opendir@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pclose@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_poll@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_popen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_memalign@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_spawn@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_posix_spawnp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ppoll@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_prctl@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pread64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pread@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv2@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_preadv@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_printf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_process_vm_readv@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_process_vm_writev@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getscope@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getstack@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_condattr_getclock@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_create@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_detach@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_exit@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getaffinity_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getcpuclockid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getname_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_getschedparam@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_join@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setcancelstate@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setcanceltype@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_setname_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_sigmask@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_timedjoin_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pthread_tryjoin_np@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptrace@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptsname@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ptsname_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_puts@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pututxline@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pvalloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwrite64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwrite@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev2@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_pwritev@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_qsort@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_qsort_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_rand_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_random_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_read@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir64_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readdir_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readlink@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readlinkat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_readv@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_realloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_reallocarray@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_realpath@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recv@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvfrom@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvmmsg@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_recvmsg@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regcomp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regerror@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regexec@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_regfree@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquo@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquof@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_remquol@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scandir64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scandir@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_scanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sched_getaffinity@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sched_getparam@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_destroy@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_getvalue@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_init@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_open@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_post@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_timedwait@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_trywait@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_unlink@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sem_wait@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_send@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendmmsg@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendmsg@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sendto@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setbuf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setbuffer@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setgrent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setitimer@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setlinebuf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setlocale@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setpwent@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_setvbuf@Base 15 ++ (arch=amd64 riscv64)__interceptor_trampoline_shmctl@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigaction@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigaltstack@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigandset@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigemptyset@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigfillset@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_siglongjmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_signal@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigorset@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigpending@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigprocmask@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigtimedwait@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigwait@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sigwaitinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincos@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincosf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sincosl@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_snprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_stat64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_stat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statfs64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statfs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statvfs64@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_statvfs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcasecmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcasestr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strchr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strchrnul@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcpy@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strcspn@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strdup@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strerror@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strerror_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strlen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncasecmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncmp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strncpy@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strndup@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strnlen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strpbrk@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strptime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strrchr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strspn@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strstr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoimax@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtok@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtol@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoll@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strtoumax@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strxfrm@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_strxfrm_l@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_swapcontext@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_sysinfo@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tcgetattr@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tempnam@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_textdomain@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_time@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_timerfd_gettime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_timerfd_settime@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_times@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tmpnam@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tmpnam_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_tsearch@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ttyname@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_ttyname_r@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_uname@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_valloc@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vasprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfork@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vfscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsnprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsprintf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_vsscanf@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait3@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait4@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wait@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_waitid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_waitpid@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcrtomb@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcscat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsdup@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcslen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsncat@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsnlen@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsnrtombs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsrtombs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcstombs@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsxfrm@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wcsxfrm_l@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wctomb@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_wordexp@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_write@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_writev@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_bool@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_bytes@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_char@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_destroy@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_double@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_enum@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_float@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_hyper@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int16_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int32_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int64_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int8_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_int@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_long@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_longlong_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_quad_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_short@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_string@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_char@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_hyper@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_int@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_long@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_longlong_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_quad_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_u_short@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint16_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint32_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint64_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdr_uint8_t@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrmem_create@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrrec_create@Base 15 ++ (arch=amd64 armhf riscv64 x32)__interceptor_trampoline_xdrstdio_create@Base 15 ++ __interceptor_tsearch@Base 15 ++ __interceptor_ttyname@Base 15 ++ __interceptor_ttyname_r@Base 15 ++ __interceptor_uname@Base 15 ++ __interceptor_valloc@Base 15 ++ __interceptor_vasprintf@Base 15 ++ (arch=amd64 armhf i386 riscv64 x32)__interceptor_vfork@Base 15 ++ __interceptor_vfprintf@Base 15 ++ __interceptor_vfscanf@Base 15 ++ __interceptor_vprintf@Base 15 ++ __interceptor_vscanf@Base 15 ++ __interceptor_vsnprintf@Base 15 ++ __interceptor_vsprintf@Base 15 ++ __interceptor_vsscanf@Base 15 ++ __interceptor_wait3@Base 15 ++ __interceptor_wait4@Base 15 ++ __interceptor_wait@Base 15 ++ __interceptor_waitid@Base 15 ++ __interceptor_waitpid@Base 15 ++ __interceptor_wcrtomb@Base 15 ++ __interceptor_wcscat@Base 15 ++ __interceptor_wcsdup@Base 15 ++ __interceptor_wcslen@Base 15 ++ __interceptor_wcsncat@Base 15 ++ __interceptor_wcsnlen@Base 15 ++ __interceptor_wcsnrtombs@Base 15 ++ __interceptor_wcsrtombs@Base 15 ++ __interceptor_wcstombs@Base 15 ++ __interceptor_wcsxfrm@Base 15 ++ __interceptor_wcsxfrm_l@Base 15 ++ __interceptor_wctomb@Base 15 ++ __interceptor_wordexp@Base 15 ++ __interceptor_write@Base 15 ++ __interceptor_writev@Base 15 ++ __interceptor_xdr_bool@Base 15 ++ __interceptor_xdr_bytes@Base 15 ++ __interceptor_xdr_char@Base 15 ++ __interceptor_xdr_destroy@Base 15 ++ __interceptor_xdr_double@Base 15 ++ __interceptor_xdr_enum@Base 15 ++ __interceptor_xdr_float@Base 15 ++ __interceptor_xdr_hyper@Base 15 ++ __interceptor_xdr_int16_t@Base 15 ++ __interceptor_xdr_int32_t@Base 15 ++ __interceptor_xdr_int64_t@Base 15 ++ __interceptor_xdr_int8_t@Base 15 ++ __interceptor_xdr_int@Base 15 ++ __interceptor_xdr_long@Base 15 ++ __interceptor_xdr_longlong_t@Base 15 ++ __interceptor_xdr_quad_t@Base 15 ++ __interceptor_xdr_short@Base 15 ++ __interceptor_xdr_string@Base 15 ++ __interceptor_xdr_u_char@Base 15 ++ __interceptor_xdr_u_hyper@Base 15 ++ __interceptor_xdr_u_int@Base 15 ++ __interceptor_xdr_u_long@Base 15 ++ __interceptor_xdr_u_longlong_t@Base 15 ++ __interceptor_xdr_u_quad_t@Base 15 ++ __interceptor_xdr_u_short@Base 15 ++ __interceptor_xdr_uint16_t@Base 15 ++ __interceptor_xdr_uint32_t@Base 15 ++ __interceptor_xdr_uint64_t@Base 15 ++ __interceptor_xdr_uint8_t@Base 15 ++ __interceptor_xdrmem_create@Base 15 ++ __interceptor_xdrrec_create@Base 15 ++ __interceptor_xdrstdio_create@Base 15 ++ __isoc23_fscanf@Base 15 ++ __isoc23_scanf@Base 15 ++ __isoc23_sscanf@Base 15 ++ __isoc23_strtoimax@Base 15 ++ __isoc23_strtol@Base 15 ++ __isoc23_strtoll@Base 15 ++ __isoc23_strtoumax@Base 15 ++ __isoc23_vfscanf@Base 15 ++ __isoc23_vscanf@Base 15 ++ __isoc23_vsscanf@Base 15 ++ __isoc99_fprintf@Base 15 ++ __isoc99_fscanf@Base 15 ++ __isoc99_printf@Base 15 ++ __isoc99_scanf@Base 15 ++ __isoc99_snprintf@Base 15 ++ __isoc99_sprintf@Base 15 ++ __isoc99_sscanf@Base 15 ++ __isoc99_vfprintf@Base 15 ++ __isoc99_vfscanf@Base 15 ++ __isoc99_vprintf@Base 15 ++ __isoc99_vscanf@Base 15 ++ __isoc99_vsnprintf@Base 15 ++ __isoc99_vsprintf@Base 15 ++ __isoc99_vsscanf@Base 15 ++ __libc_memalign@Base 15 ++ __longjmp_chk@Base 15 ++ __lsan_default_options@Base 15 ++ __lsan_disable@Base 15 ++ __lsan_do_leak_check@Base 15 ++ __lsan_do_recoverable_leak_check@Base 15 ++ __lsan_enable@Base 15 ++ __lsan_ignore_object@Base 15 ++ __lsan_register_root_region@Base 15 ++ __lsan_unregister_root_region@Base 15 ++ __lxstat64@Base 15 ++ __lxstat@Base 15 ++ __overflow@Base 15 ++ __sancov_default_options@Base 15 ++ __sancov_lowest_stack@Base 15 ++ __sanitizer_acquire_crash_state@Base 15 ++ __sanitizer_annotate_contiguous_container@Base 15 ++ __sanitizer_annotate_double_ended_contiguous_container@Base 15 ++ __sanitizer_contiguous_container_find_bad_address@Base 15 ++ __sanitizer_copy_contiguous_container_annotations@Base 15 ++ __sanitizer_cov_8bit_counters_init@Base 15 ++ __sanitizer_cov_bool_flag_init@Base 15 ++ __sanitizer_cov_dump@Base 15 ++ __sanitizer_cov_load16@Base 15 ++ __sanitizer_cov_load1@Base 15 ++ __sanitizer_cov_load2@Base 15 ++ __sanitizer_cov_load4@Base 15 ++ __sanitizer_cov_load8@Base 15 ++ __sanitizer_cov_pcs_init@Base 15 ++ __sanitizer_cov_reset@Base 15 ++ __sanitizer_cov_store16@Base 15 ++ __sanitizer_cov_store1@Base 15 ++ __sanitizer_cov_store2@Base 15 ++ __sanitizer_cov_store4@Base 15 ++ __sanitizer_cov_store8@Base 15 ++ __sanitizer_cov_trace_cmp1@Base 15 ++ __sanitizer_cov_trace_cmp2@Base 15 ++ __sanitizer_cov_trace_cmp4@Base 15 ++ __sanitizer_cov_trace_cmp8@Base 15 ++ __sanitizer_cov_trace_cmp@Base 15 ++ __sanitizer_cov_trace_const_cmp1@Base 15 ++ __sanitizer_cov_trace_const_cmp2@Base 15 ++ __sanitizer_cov_trace_const_cmp4@Base 15 ++ __sanitizer_cov_trace_const_cmp8@Base 15 ++ __sanitizer_cov_trace_div4@Base 15 ++ __sanitizer_cov_trace_div8@Base 15 ++ __sanitizer_cov_trace_gep@Base 15 ++ __sanitizer_cov_trace_pc_guard@Base 15 ++ __sanitizer_cov_trace_pc_guard_init@Base 15 ++ __sanitizer_cov_trace_pc_indir@Base 15 ++ __sanitizer_cov_trace_switch@Base 15 ++ __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 ++ __sanitizer_dump_coverage@Base 15 ++ __sanitizer_dump_trace_pc_guard_coverage@Base 15 ++ __sanitizer_finish_switch_fiber@Base 15 ++ __sanitizer_free_hook@Base 15 ++ __sanitizer_get_allocated_begin@Base 15 ++ __sanitizer_get_allocated_size@Base 15 ++ __sanitizer_get_allocated_size_fast@Base 15 ++ __sanitizer_get_current_allocated_bytes@Base 15 ++ __sanitizer_get_dtls_size@Base 15 ++ __sanitizer_get_estimated_allocated_size@Base 15 ++ __sanitizer_get_free_bytes@Base 15 ++ __sanitizer_get_heap_size@Base 15 ++ __sanitizer_get_module_and_offset_for_pc@Base 15 ++ __sanitizer_get_ownership@Base 15 ++ __sanitizer_get_report_path@Base 15 ++ __sanitizer_get_unmapped_bytes@Base 15 ++ __sanitizer_ignore_free_hook@Base 15 ++ __sanitizer_install_malloc_and_free_hooks@Base 15 ++ __sanitizer_internal_memcpy@Base 15 ++ __sanitizer_internal_memmove@Base 15 ++ __sanitizer_internal_memset@Base 15 ++ __sanitizer_malloc_hook@Base 15 ++ __sanitizer_on_print@Base 15 ++ __sanitizer_print_memory_profile@Base 15 ++ __sanitizer_print_stack_trace@Base 15 ++ __sanitizer_ptr_cmp@Base 15 ++ __sanitizer_ptr_sub@Base 15 ++ __sanitizer_purge_allocator@Base 15 ++ __sanitizer_report_error_summary@Base 15 ++ __sanitizer_sandbox_on_notify@Base 15 ++ __sanitizer_set_death_callback@Base 15 ++ __sanitizer_set_report_fd@Base 15 ++ __sanitizer_set_report_path@Base 15 ++ __sanitizer_start_switch_fiber@Base 15 ++ __sanitizer_symbolize_global@Base 15 ++ __sanitizer_symbolize_pc@Base 15 ++ __sanitizer_syscall_post_impl_accept4@Base 15 ++ __sanitizer_syscall_post_impl_accept@Base 15 ++ __sanitizer_syscall_post_impl_access@Base 15 ++ __sanitizer_syscall_post_impl_acct@Base 15 ++ __sanitizer_syscall_post_impl_add_key@Base 15 ++ __sanitizer_syscall_post_impl_adjtimex@Base 15 ++ __sanitizer_syscall_post_impl_alarm@Base 15 ++ __sanitizer_syscall_post_impl_bdflush@Base 15 ++ __sanitizer_syscall_post_impl_bind@Base 15 ++ __sanitizer_syscall_post_impl_brk@Base 15 ++ __sanitizer_syscall_post_impl_capget@Base 15 ++ __sanitizer_syscall_post_impl_capset@Base 15 ++ __sanitizer_syscall_post_impl_chdir@Base 15 ++ __sanitizer_syscall_post_impl_chmod@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_chown16@Base 15 ++ __sanitizer_syscall_post_impl_chown@Base 15 ++ __sanitizer_syscall_post_impl_chroot@Base 15 ++ __sanitizer_syscall_post_impl_clock_adjtime@Base 15 ++ __sanitizer_syscall_post_impl_clock_getres@Base 15 ++ __sanitizer_syscall_post_impl_clock_gettime@Base 15 ++ __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 ++ __sanitizer_syscall_post_impl_clock_settime@Base 15 ++ __sanitizer_syscall_post_impl_close@Base 15 ++ __sanitizer_syscall_post_impl_connect@Base 15 ++ __sanitizer_syscall_post_impl_creat@Base 15 ++ __sanitizer_syscall_post_impl_delete_module@Base 15 ++ __sanitizer_syscall_post_impl_dup2@Base 15 ++ __sanitizer_syscall_post_impl_dup3@Base 15 ++ __sanitizer_syscall_post_impl_dup@Base 15 ++ __sanitizer_syscall_post_impl_epoll_create1@Base 15 ++ __sanitizer_syscall_post_impl_epoll_create@Base 15 ++ __sanitizer_syscall_post_impl_epoll_ctl@Base 15 ++ __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 ++ __sanitizer_syscall_post_impl_epoll_pwait@Base 15 ++ __sanitizer_syscall_post_impl_epoll_wait@Base 15 ++ __sanitizer_syscall_post_impl_eventfd2@Base 15 ++ __sanitizer_syscall_post_impl_eventfd@Base 15 ++ __sanitizer_syscall_post_impl_exit@Base 15 ++ __sanitizer_syscall_post_impl_exit_group@Base 15 ++ __sanitizer_syscall_post_impl_faccessat@Base 15 ++ __sanitizer_syscall_post_impl_fchdir@Base 15 ++ __sanitizer_syscall_post_impl_fchmod@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_fchown16@Base 15 ++ __sanitizer_syscall_post_impl_fchown@Base 15 ++ __sanitizer_syscall_post_impl_fchownat@Base 15 ++ __sanitizer_syscall_post_impl_fcntl64@Base 15 ++ __sanitizer_syscall_post_impl_fcntl@Base 15 ++ __sanitizer_syscall_post_impl_fdatasync@Base 15 ++ __sanitizer_syscall_post_impl_fgetxattr@Base 15 ++ __sanitizer_syscall_post_impl_flistxattr@Base 15 ++ __sanitizer_syscall_post_impl_flock@Base 15 ++ __sanitizer_syscall_post_impl_fork@Base 15 ++ __sanitizer_syscall_post_impl_fremovexattr@Base 15 ++ __sanitizer_syscall_post_impl_fsetxattr@Base 15 ++ __sanitizer_syscall_post_impl_fstat64@Base 15 ++ __sanitizer_syscall_post_impl_fstat@Base 15 ++ __sanitizer_syscall_post_impl_fstatat64@Base 15 ++ __sanitizer_syscall_post_impl_fstatfs64@Base 15 ++ __sanitizer_syscall_post_impl_fstatfs@Base 15 ++ __sanitizer_syscall_post_impl_fsync@Base 15 ++ __sanitizer_syscall_post_impl_ftruncate@Base 15 ++ __sanitizer_syscall_post_impl_futex@Base 15 ++ __sanitizer_syscall_post_impl_futimesat@Base 15 ++ __sanitizer_syscall_post_impl_get_mempolicy@Base 15 ++ __sanitizer_syscall_post_impl_get_robust_list@Base 15 ++ __sanitizer_syscall_post_impl_getcpu@Base 15 ++ __sanitizer_syscall_post_impl_getcwd@Base 15 ++ __sanitizer_syscall_post_impl_getdents64@Base 15 ++ __sanitizer_syscall_post_impl_getdents@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getegid16@Base 15 ++ __sanitizer_syscall_post_impl_getegid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_geteuid16@Base 15 ++ __sanitizer_syscall_post_impl_geteuid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getgid16@Base 15 ++ __sanitizer_syscall_post_impl_getgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getgroups16@Base 15 ++ __sanitizer_syscall_post_impl_getgroups@Base 15 ++ __sanitizer_syscall_post_impl_gethostname@Base 15 ++ __sanitizer_syscall_post_impl_getitimer@Base 15 ++ __sanitizer_syscall_post_impl_getpeername@Base 15 ++ __sanitizer_syscall_post_impl_getpgid@Base 15 ++ __sanitizer_syscall_post_impl_getpgrp@Base 15 ++ __sanitizer_syscall_post_impl_getpid@Base 15 ++ __sanitizer_syscall_post_impl_getppid@Base 15 ++ __sanitizer_syscall_post_impl_getpriority@Base 15 ++ __sanitizer_syscall_post_impl_getrandom@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getresgid16@Base 15 ++ __sanitizer_syscall_post_impl_getresgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getresuid16@Base 15 ++ __sanitizer_syscall_post_impl_getresuid@Base 15 ++ __sanitizer_syscall_post_impl_getrlimit@Base 15 ++ __sanitizer_syscall_post_impl_getrusage@Base 15 ++ __sanitizer_syscall_post_impl_getsid@Base 15 ++ __sanitizer_syscall_post_impl_getsockname@Base 15 ++ __sanitizer_syscall_post_impl_getsockopt@Base 15 ++ __sanitizer_syscall_post_impl_gettid@Base 15 ++ __sanitizer_syscall_post_impl_gettimeofday@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_getuid16@Base 15 ++ __sanitizer_syscall_post_impl_getuid@Base 15 ++ __sanitizer_syscall_post_impl_getxattr@Base 15 ++ __sanitizer_syscall_post_impl_init_module@Base 15 ++ __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 ++ __sanitizer_syscall_post_impl_inotify_init1@Base 15 ++ __sanitizer_syscall_post_impl_inotify_init@Base 15 ++ __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 ++ __sanitizer_syscall_post_impl_io_cancel@Base 15 ++ __sanitizer_syscall_post_impl_io_destroy@Base 15 ++ __sanitizer_syscall_post_impl_io_getevents@Base 15 ++ __sanitizer_syscall_post_impl_io_setup@Base 15 ++ __sanitizer_syscall_post_impl_io_submit@Base 15 ++ __sanitizer_syscall_post_impl_ioctl@Base 15 ++ __sanitizer_syscall_post_impl_ioperm@Base 15 ++ __sanitizer_syscall_post_impl_ioprio_get@Base 15 ++ __sanitizer_syscall_post_impl_ioprio_set@Base 15 ++ __sanitizer_syscall_post_impl_ipc@Base 15 ++ __sanitizer_syscall_post_impl_kexec_load@Base 15 ++ __sanitizer_syscall_post_impl_keyctl@Base 15 ++ __sanitizer_syscall_post_impl_kill@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_lchown16@Base 15 ++ __sanitizer_syscall_post_impl_lchown@Base 15 ++ __sanitizer_syscall_post_impl_lgetxattr@Base 15 ++ __sanitizer_syscall_post_impl_link@Base 15 ++ __sanitizer_syscall_post_impl_linkat@Base 15 ++ __sanitizer_syscall_post_impl_listen@Base 15 ++ __sanitizer_syscall_post_impl_listxattr@Base 15 ++ __sanitizer_syscall_post_impl_llistxattr@Base 15 ++ __sanitizer_syscall_post_impl_llseek@Base 15 ++ __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 ++ __sanitizer_syscall_post_impl_lremovexattr@Base 15 ++ __sanitizer_syscall_post_impl_lseek@Base 15 ++ __sanitizer_syscall_post_impl_lsetxattr@Base 15 ++ __sanitizer_syscall_post_impl_lstat64@Base 15 ++ __sanitizer_syscall_post_impl_lstat@Base 15 ++ __sanitizer_syscall_post_impl_madvise@Base 15 ++ __sanitizer_syscall_post_impl_mbind@Base 15 ++ __sanitizer_syscall_post_impl_migrate_pages@Base 15 ++ __sanitizer_syscall_post_impl_mincore@Base 15 ++ __sanitizer_syscall_post_impl_mkdir@Base 15 ++ __sanitizer_syscall_post_impl_mkdirat@Base 15 ++ __sanitizer_syscall_post_impl_mknod@Base 15 ++ __sanitizer_syscall_post_impl_mknodat@Base 15 ++ __sanitizer_syscall_post_impl_mlock@Base 15 ++ __sanitizer_syscall_post_impl_mlockall@Base 15 ++ __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 ++ __sanitizer_syscall_post_impl_mount@Base 15 ++ __sanitizer_syscall_post_impl_move_pages@Base 15 ++ __sanitizer_syscall_post_impl_mprotect@Base 15 ++ __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 ++ __sanitizer_syscall_post_impl_mq_notify@Base 15 ++ __sanitizer_syscall_post_impl_mq_open@Base 15 ++ __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 ++ __sanitizer_syscall_post_impl_mq_timedsend@Base 15 ++ __sanitizer_syscall_post_impl_mq_unlink@Base 15 ++ __sanitizer_syscall_post_impl_mremap@Base 15 ++ __sanitizer_syscall_post_impl_msgctl@Base 15 ++ __sanitizer_syscall_post_impl_msgget@Base 15 ++ __sanitizer_syscall_post_impl_msgrcv@Base 15 ++ __sanitizer_syscall_post_impl_msgsnd@Base 15 ++ __sanitizer_syscall_post_impl_msync@Base 15 ++ __sanitizer_syscall_post_impl_munlock@Base 15 ++ __sanitizer_syscall_post_impl_munlockall@Base 15 ++ __sanitizer_syscall_post_impl_munmap@Base 15 ++ __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 ++ __sanitizer_syscall_post_impl_nanosleep@Base 15 ++ __sanitizer_syscall_post_impl_newfstat@Base 15 ++ __sanitizer_syscall_post_impl_newfstatat@Base 15 ++ __sanitizer_syscall_post_impl_newlstat@Base 15 ++ __sanitizer_syscall_post_impl_newstat@Base 15 ++ __sanitizer_syscall_post_impl_newuname@Base 15 ++ __sanitizer_syscall_post_impl_ni_syscall@Base 15 ++ __sanitizer_syscall_post_impl_nice@Base 15 ++ __sanitizer_syscall_post_impl_old_getrlimit@Base 15 ++ __sanitizer_syscall_post_impl_old_mmap@Base 15 ++ __sanitizer_syscall_post_impl_old_readdir@Base 15 ++ __sanitizer_syscall_post_impl_old_select@Base 15 ++ __sanitizer_syscall_post_impl_oldumount@Base 15 ++ __sanitizer_syscall_post_impl_olduname@Base 15 ++ __sanitizer_syscall_post_impl_open@Base 15 ++ __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 ++ __sanitizer_syscall_post_impl_openat@Base 15 ++ __sanitizer_syscall_post_impl_pause@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_read@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_write@Base 15 ++ __sanitizer_syscall_post_impl_perf_event_open@Base 15 ++ __sanitizer_syscall_post_impl_personality@Base 15 ++ __sanitizer_syscall_post_impl_pipe2@Base 15 ++ __sanitizer_syscall_post_impl_pipe@Base 15 ++ __sanitizer_syscall_post_impl_pivot_root@Base 15 ++ __sanitizer_syscall_post_impl_poll@Base 15 ++ __sanitizer_syscall_post_impl_ppoll@Base 15 ++ __sanitizer_syscall_post_impl_pread64@Base 15 ++ __sanitizer_syscall_post_impl_preadv@Base 15 ++ __sanitizer_syscall_post_impl_prlimit64@Base 15 ++ __sanitizer_syscall_post_impl_process_vm_readv@Base 15 ++ __sanitizer_syscall_post_impl_process_vm_writev@Base 15 ++ __sanitizer_syscall_post_impl_pselect6@Base 15 ++ __sanitizer_syscall_post_impl_ptrace@Base 15 ++ __sanitizer_syscall_post_impl_pwrite64@Base 15 ++ __sanitizer_syscall_post_impl_pwritev@Base 15 ++ __sanitizer_syscall_post_impl_quotactl@Base 15 ++ __sanitizer_syscall_post_impl_read@Base 15 ++ __sanitizer_syscall_post_impl_readlink@Base 15 ++ __sanitizer_syscall_post_impl_readlinkat@Base 15 ++ __sanitizer_syscall_post_impl_readv@Base 15 ++ __sanitizer_syscall_post_impl_reboot@Base 15 ++ __sanitizer_syscall_post_impl_recv@Base 15 ++ __sanitizer_syscall_post_impl_recvfrom@Base 15 ++ __sanitizer_syscall_post_impl_recvmmsg@Base 15 ++ __sanitizer_syscall_post_impl_recvmsg@Base 15 ++ __sanitizer_syscall_post_impl_remap_file_pages@Base 15 ++ __sanitizer_syscall_post_impl_removexattr@Base 15 ++ __sanitizer_syscall_post_impl_rename@Base 15 ++ __sanitizer_syscall_post_impl_renameat@Base 15 ++ __sanitizer_syscall_post_impl_request_key@Base 15 ++ __sanitizer_syscall_post_impl_restart_syscall@Base 15 ++ __sanitizer_syscall_post_impl_rmdir@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigaction@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigpending@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 ++ __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 ++ __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 ++ __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 ++ __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 ++ __sanitizer_syscall_post_impl_sched_getparam@Base 15 ++ __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 ++ __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 ++ __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 ++ __sanitizer_syscall_post_impl_sched_setparam@Base 15 ++ __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 ++ __sanitizer_syscall_post_impl_sched_yield@Base 15 ++ __sanitizer_syscall_post_impl_select@Base 15 ++ __sanitizer_syscall_post_impl_semctl@Base 15 ++ __sanitizer_syscall_post_impl_semget@Base 15 ++ __sanitizer_syscall_post_impl_semop@Base 15 ++ __sanitizer_syscall_post_impl_semtimedop@Base 15 ++ __sanitizer_syscall_post_impl_send@Base 15 ++ __sanitizer_syscall_post_impl_sendfile64@Base 15 ++ __sanitizer_syscall_post_impl_sendfile@Base 15 ++ __sanitizer_syscall_post_impl_sendmmsg@Base 15 ++ __sanitizer_syscall_post_impl_sendmsg@Base 15 ++ __sanitizer_syscall_post_impl_sendto@Base 15 ++ __sanitizer_syscall_post_impl_set_mempolicy@Base 15 ++ __sanitizer_syscall_post_impl_set_robust_list@Base 15 ++ __sanitizer_syscall_post_impl_set_tid_address@Base 15 ++ __sanitizer_syscall_post_impl_setdomainname@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setfsgid16@Base 15 ++ __sanitizer_syscall_post_impl_setfsgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setfsuid16@Base 15 ++ __sanitizer_syscall_post_impl_setfsuid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setgid16@Base 15 ++ __sanitizer_syscall_post_impl_setgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setgroups16@Base 15 ++ __sanitizer_syscall_post_impl_setgroups@Base 15 ++ __sanitizer_syscall_post_impl_sethostname@Base 15 ++ __sanitizer_syscall_post_impl_setitimer@Base 15 ++ __sanitizer_syscall_post_impl_setns@Base 15 ++ __sanitizer_syscall_post_impl_setpgid@Base 15 ++ __sanitizer_syscall_post_impl_setpriority@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setregid16@Base 15 ++ __sanitizer_syscall_post_impl_setregid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setresgid16@Base 15 ++ __sanitizer_syscall_post_impl_setresgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setresuid16@Base 15 ++ __sanitizer_syscall_post_impl_setresuid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setreuid16@Base 15 ++ __sanitizer_syscall_post_impl_setreuid@Base 15 ++ __sanitizer_syscall_post_impl_setrlimit@Base 15 ++ __sanitizer_syscall_post_impl_setsid@Base 15 ++ __sanitizer_syscall_post_impl_setsockopt@Base 15 ++ __sanitizer_syscall_post_impl_settimeofday@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_post_impl_setuid16@Base 15 ++ __sanitizer_syscall_post_impl_setuid@Base 15 ++ __sanitizer_syscall_post_impl_setxattr@Base 15 ++ __sanitizer_syscall_post_impl_sgetmask@Base 15 ++ __sanitizer_syscall_post_impl_shmat@Base 15 ++ __sanitizer_syscall_post_impl_shmctl@Base 15 ++ __sanitizer_syscall_post_impl_shmdt@Base 15 ++ __sanitizer_syscall_post_impl_shmget@Base 15 ++ __sanitizer_syscall_post_impl_shutdown@Base 15 ++ __sanitizer_syscall_post_impl_sigaction@Base 15 ++ __sanitizer_syscall_post_impl_sigaltstack@Base 15 ++ __sanitizer_syscall_post_impl_signal@Base 15 ++ __sanitizer_syscall_post_impl_signalfd4@Base 15 ++ __sanitizer_syscall_post_impl_signalfd@Base 15 ++ __sanitizer_syscall_post_impl_sigpending@Base 15 ++ __sanitizer_syscall_post_impl_sigprocmask@Base 15 ++ __sanitizer_syscall_post_impl_socket@Base 15 ++ __sanitizer_syscall_post_impl_socketcall@Base 15 ++ __sanitizer_syscall_post_impl_socketpair@Base 15 ++ __sanitizer_syscall_post_impl_splice@Base 15 ++ __sanitizer_syscall_post_impl_spu_create@Base 15 ++ __sanitizer_syscall_post_impl_spu_run@Base 15 ++ __sanitizer_syscall_post_impl_ssetmask@Base 15 ++ __sanitizer_syscall_post_impl_stat64@Base 15 ++ __sanitizer_syscall_post_impl_stat@Base 15 ++ __sanitizer_syscall_post_impl_statfs64@Base 15 ++ __sanitizer_syscall_post_impl_statfs@Base 15 ++ __sanitizer_syscall_post_impl_stime@Base 15 ++ __sanitizer_syscall_post_impl_swapoff@Base 15 ++ __sanitizer_syscall_post_impl_swapon@Base 15 ++ __sanitizer_syscall_post_impl_symlink@Base 15 ++ __sanitizer_syscall_post_impl_symlinkat@Base 15 ++ __sanitizer_syscall_post_impl_sync@Base 15 ++ __sanitizer_syscall_post_impl_syncfs@Base 15 ++ __sanitizer_syscall_post_impl_sysctl@Base 15 ++ __sanitizer_syscall_post_impl_sysfs@Base 15 ++ __sanitizer_syscall_post_impl_sysinfo@Base 15 ++ __sanitizer_syscall_post_impl_syslog@Base 15 ++ __sanitizer_syscall_post_impl_tee@Base 15 ++ __sanitizer_syscall_post_impl_tgkill@Base 15 ++ __sanitizer_syscall_post_impl_time@Base 15 ++ __sanitizer_syscall_post_impl_timer_create@Base 15 ++ __sanitizer_syscall_post_impl_timer_delete@Base 15 ++ __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 ++ __sanitizer_syscall_post_impl_timer_gettime@Base 15 ++ __sanitizer_syscall_post_impl_timer_settime@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_create@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_settime@Base 15 ++ __sanitizer_syscall_post_impl_times@Base 15 ++ __sanitizer_syscall_post_impl_tkill@Base 15 ++ __sanitizer_syscall_post_impl_truncate@Base 15 ++ __sanitizer_syscall_post_impl_umask@Base 15 ++ __sanitizer_syscall_post_impl_umount@Base 15 ++ __sanitizer_syscall_post_impl_uname@Base 15 ++ __sanitizer_syscall_post_impl_unlink@Base 15 ++ __sanitizer_syscall_post_impl_unlinkat@Base 15 ++ __sanitizer_syscall_post_impl_unshare@Base 15 ++ __sanitizer_syscall_post_impl_uselib@Base 15 ++ __sanitizer_syscall_post_impl_ustat@Base 15 ++ __sanitizer_syscall_post_impl_utime@Base 15 ++ __sanitizer_syscall_post_impl_utimensat@Base 15 ++ __sanitizer_syscall_post_impl_utimes@Base 15 ++ __sanitizer_syscall_post_impl_vfork@Base 15 ++ __sanitizer_syscall_post_impl_vhangup@Base 15 ++ __sanitizer_syscall_post_impl_vmsplice@Base 15 ++ __sanitizer_syscall_post_impl_wait4@Base 15 ++ __sanitizer_syscall_post_impl_waitid@Base 15 ++ __sanitizer_syscall_post_impl_waitpid@Base 15 ++ __sanitizer_syscall_post_impl_write@Base 15 ++ __sanitizer_syscall_post_impl_writev@Base 15 ++ __sanitizer_syscall_pre_impl_accept4@Base 15 ++ __sanitizer_syscall_pre_impl_accept@Base 15 ++ __sanitizer_syscall_pre_impl_access@Base 15 ++ __sanitizer_syscall_pre_impl_acct@Base 15 ++ __sanitizer_syscall_pre_impl_add_key@Base 15 ++ __sanitizer_syscall_pre_impl_adjtimex@Base 15 ++ __sanitizer_syscall_pre_impl_alarm@Base 15 ++ __sanitizer_syscall_pre_impl_bdflush@Base 15 ++ __sanitizer_syscall_pre_impl_bind@Base 15 ++ __sanitizer_syscall_pre_impl_brk@Base 15 ++ __sanitizer_syscall_pre_impl_capget@Base 15 ++ __sanitizer_syscall_pre_impl_capset@Base 15 ++ __sanitizer_syscall_pre_impl_chdir@Base 15 ++ __sanitizer_syscall_pre_impl_chmod@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_chown16@Base 15 ++ __sanitizer_syscall_pre_impl_chown@Base 15 ++ __sanitizer_syscall_pre_impl_chroot@Base 15 ++ __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 ++ __sanitizer_syscall_pre_impl_clock_getres@Base 15 ++ __sanitizer_syscall_pre_impl_clock_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 ++ __sanitizer_syscall_pre_impl_clock_settime@Base 15 ++ __sanitizer_syscall_pre_impl_close@Base 15 ++ __sanitizer_syscall_pre_impl_connect@Base 15 ++ __sanitizer_syscall_pre_impl_creat@Base 15 ++ __sanitizer_syscall_pre_impl_delete_module@Base 15 ++ __sanitizer_syscall_pre_impl_dup2@Base 15 ++ __sanitizer_syscall_pre_impl_dup3@Base 15 ++ __sanitizer_syscall_pre_impl_dup@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_create1@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_create@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_wait@Base 15 ++ __sanitizer_syscall_pre_impl_eventfd2@Base 15 ++ __sanitizer_syscall_pre_impl_eventfd@Base 15 ++ __sanitizer_syscall_pre_impl_exit@Base 15 ++ __sanitizer_syscall_pre_impl_exit_group@Base 15 ++ __sanitizer_syscall_pre_impl_faccessat@Base 15 ++ __sanitizer_syscall_pre_impl_fchdir@Base 15 ++ __sanitizer_syscall_pre_impl_fchmod@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_fchown16@Base 15 ++ __sanitizer_syscall_pre_impl_fchown@Base 15 ++ __sanitizer_syscall_pre_impl_fchownat@Base 15 ++ __sanitizer_syscall_pre_impl_fcntl64@Base 15 ++ __sanitizer_syscall_pre_impl_fcntl@Base 15 ++ __sanitizer_syscall_pre_impl_fdatasync@Base 15 ++ __sanitizer_syscall_pre_impl_fgetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_flistxattr@Base 15 ++ __sanitizer_syscall_pre_impl_flock@Base 15 ++ __sanitizer_syscall_pre_impl_fork@Base 15 ++ __sanitizer_syscall_pre_impl_fremovexattr@Base 15 ++ __sanitizer_syscall_pre_impl_fsetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_fstat64@Base 15 ++ __sanitizer_syscall_pre_impl_fstat@Base 15 ++ __sanitizer_syscall_pre_impl_fstatat64@Base 15 ++ __sanitizer_syscall_pre_impl_fstatfs64@Base 15 ++ __sanitizer_syscall_pre_impl_fstatfs@Base 15 ++ __sanitizer_syscall_pre_impl_fsync@Base 15 ++ __sanitizer_syscall_pre_impl_ftruncate@Base 15 ++ __sanitizer_syscall_pre_impl_futex@Base 15 ++ __sanitizer_syscall_pre_impl_futimesat@Base 15 ++ __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 ++ __sanitizer_syscall_pre_impl_get_robust_list@Base 15 ++ __sanitizer_syscall_pre_impl_getcpu@Base 15 ++ __sanitizer_syscall_pre_impl_getcwd@Base 15 ++ __sanitizer_syscall_pre_impl_getdents64@Base 15 ++ __sanitizer_syscall_pre_impl_getdents@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getegid16@Base 15 ++ __sanitizer_syscall_pre_impl_getegid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_geteuid16@Base 15 ++ __sanitizer_syscall_pre_impl_geteuid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getgid16@Base 15 ++ __sanitizer_syscall_pre_impl_getgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getgroups16@Base 15 ++ __sanitizer_syscall_pre_impl_getgroups@Base 15 ++ __sanitizer_syscall_pre_impl_gethostname@Base 15 ++ __sanitizer_syscall_pre_impl_getitimer@Base 15 ++ __sanitizer_syscall_pre_impl_getpeername@Base 15 ++ __sanitizer_syscall_pre_impl_getpgid@Base 15 ++ __sanitizer_syscall_pre_impl_getpgrp@Base 15 ++ __sanitizer_syscall_pre_impl_getpid@Base 15 ++ __sanitizer_syscall_pre_impl_getppid@Base 15 ++ __sanitizer_syscall_pre_impl_getpriority@Base 15 ++ __sanitizer_syscall_pre_impl_getrandom@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getresgid16@Base 15 ++ __sanitizer_syscall_pre_impl_getresgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getresuid16@Base 15 ++ __sanitizer_syscall_pre_impl_getresuid@Base 15 ++ __sanitizer_syscall_pre_impl_getrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_getrusage@Base 15 ++ __sanitizer_syscall_pre_impl_getsid@Base 15 ++ __sanitizer_syscall_pre_impl_getsockname@Base 15 ++ __sanitizer_syscall_pre_impl_getsockopt@Base 15 ++ __sanitizer_syscall_pre_impl_gettid@Base 15 ++ __sanitizer_syscall_pre_impl_gettimeofday@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_getuid16@Base 15 ++ __sanitizer_syscall_pre_impl_getuid@Base 15 ++ __sanitizer_syscall_pre_impl_getxattr@Base 15 ++ __sanitizer_syscall_pre_impl_init_module@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_init1@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_init@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 ++ __sanitizer_syscall_pre_impl_io_cancel@Base 15 ++ __sanitizer_syscall_pre_impl_io_destroy@Base 15 ++ __sanitizer_syscall_pre_impl_io_getevents@Base 15 ++ __sanitizer_syscall_pre_impl_io_setup@Base 15 ++ __sanitizer_syscall_pre_impl_io_submit@Base 15 ++ __sanitizer_syscall_pre_impl_ioctl@Base 15 ++ __sanitizer_syscall_pre_impl_ioperm@Base 15 ++ __sanitizer_syscall_pre_impl_ioprio_get@Base 15 ++ __sanitizer_syscall_pre_impl_ioprio_set@Base 15 ++ __sanitizer_syscall_pre_impl_ipc@Base 15 ++ __sanitizer_syscall_pre_impl_kexec_load@Base 15 ++ __sanitizer_syscall_pre_impl_keyctl@Base 15 ++ __sanitizer_syscall_pre_impl_kill@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_lchown16@Base 15 ++ __sanitizer_syscall_pre_impl_lchown@Base 15 ++ __sanitizer_syscall_pre_impl_lgetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_link@Base 15 ++ __sanitizer_syscall_pre_impl_linkat@Base 15 ++ __sanitizer_syscall_pre_impl_listen@Base 15 ++ __sanitizer_syscall_pre_impl_listxattr@Base 15 ++ __sanitizer_syscall_pre_impl_llistxattr@Base 15 ++ __sanitizer_syscall_pre_impl_llseek@Base 15 ++ __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 ++ __sanitizer_syscall_pre_impl_lremovexattr@Base 15 ++ __sanitizer_syscall_pre_impl_lseek@Base 15 ++ __sanitizer_syscall_pre_impl_lsetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_lstat64@Base 15 ++ __sanitizer_syscall_pre_impl_lstat@Base 15 ++ __sanitizer_syscall_pre_impl_madvise@Base 15 ++ __sanitizer_syscall_pre_impl_mbind@Base 15 ++ __sanitizer_syscall_pre_impl_migrate_pages@Base 15 ++ __sanitizer_syscall_pre_impl_mincore@Base 15 ++ __sanitizer_syscall_pre_impl_mkdir@Base 15 ++ __sanitizer_syscall_pre_impl_mkdirat@Base 15 ++ __sanitizer_syscall_pre_impl_mknod@Base 15 ++ __sanitizer_syscall_pre_impl_mknodat@Base 15 ++ __sanitizer_syscall_pre_impl_mlock@Base 15 ++ __sanitizer_syscall_pre_impl_mlockall@Base 15 ++ __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 ++ __sanitizer_syscall_pre_impl_mount@Base 15 ++ __sanitizer_syscall_pre_impl_move_pages@Base 15 ++ __sanitizer_syscall_pre_impl_mprotect@Base 15 ++ __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 ++ __sanitizer_syscall_pre_impl_mq_notify@Base 15 ++ __sanitizer_syscall_pre_impl_mq_open@Base 15 ++ __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 ++ __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 ++ __sanitizer_syscall_pre_impl_mq_unlink@Base 15 ++ __sanitizer_syscall_pre_impl_mremap@Base 15 ++ __sanitizer_syscall_pre_impl_msgctl@Base 15 ++ __sanitizer_syscall_pre_impl_msgget@Base 15 ++ __sanitizer_syscall_pre_impl_msgrcv@Base 15 ++ __sanitizer_syscall_pre_impl_msgsnd@Base 15 ++ __sanitizer_syscall_pre_impl_msync@Base 15 ++ __sanitizer_syscall_pre_impl_munlock@Base 15 ++ __sanitizer_syscall_pre_impl_munlockall@Base 15 ++ __sanitizer_syscall_pre_impl_munmap@Base 15 ++ __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 ++ __sanitizer_syscall_pre_impl_nanosleep@Base 15 ++ __sanitizer_syscall_pre_impl_newfstat@Base 15 ++ __sanitizer_syscall_pre_impl_newfstatat@Base 15 ++ __sanitizer_syscall_pre_impl_newlstat@Base 15 ++ __sanitizer_syscall_pre_impl_newstat@Base 15 ++ __sanitizer_syscall_pre_impl_newuname@Base 15 ++ __sanitizer_syscall_pre_impl_ni_syscall@Base 15 ++ __sanitizer_syscall_pre_impl_nice@Base 15 ++ __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_old_mmap@Base 15 ++ __sanitizer_syscall_pre_impl_old_readdir@Base 15 ++ __sanitizer_syscall_pre_impl_old_select@Base 15 ++ __sanitizer_syscall_pre_impl_oldumount@Base 15 ++ __sanitizer_syscall_pre_impl_olduname@Base 15 ++ __sanitizer_syscall_pre_impl_open@Base 15 ++ __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 ++ __sanitizer_syscall_pre_impl_openat@Base 15 ++ __sanitizer_syscall_pre_impl_pause@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 ++ __sanitizer_syscall_pre_impl_perf_event_open@Base 15 ++ __sanitizer_syscall_pre_impl_personality@Base 15 ++ __sanitizer_syscall_pre_impl_pipe2@Base 15 ++ __sanitizer_syscall_pre_impl_pipe@Base 15 ++ __sanitizer_syscall_pre_impl_pivot_root@Base 15 ++ __sanitizer_syscall_pre_impl_poll@Base 15 ++ __sanitizer_syscall_pre_impl_ppoll@Base 15 ++ __sanitizer_syscall_pre_impl_pread64@Base 15 ++ __sanitizer_syscall_pre_impl_preadv@Base 15 ++ __sanitizer_syscall_pre_impl_prlimit64@Base 15 ++ __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 ++ __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 ++ __sanitizer_syscall_pre_impl_pselect6@Base 15 ++ __sanitizer_syscall_pre_impl_ptrace@Base 15 ++ __sanitizer_syscall_pre_impl_pwrite64@Base 15 ++ __sanitizer_syscall_pre_impl_pwritev@Base 15 ++ __sanitizer_syscall_pre_impl_quotactl@Base 15 ++ __sanitizer_syscall_pre_impl_read@Base 15 ++ __sanitizer_syscall_pre_impl_readlink@Base 15 ++ __sanitizer_syscall_pre_impl_readlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_readv@Base 15 ++ __sanitizer_syscall_pre_impl_reboot@Base 15 ++ __sanitizer_syscall_pre_impl_recv@Base 15 ++ __sanitizer_syscall_pre_impl_recvfrom@Base 15 ++ __sanitizer_syscall_pre_impl_recvmmsg@Base 15 ++ __sanitizer_syscall_pre_impl_recvmsg@Base 15 ++ __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 ++ __sanitizer_syscall_pre_impl_removexattr@Base 15 ++ __sanitizer_syscall_pre_impl_rename@Base 15 ++ __sanitizer_syscall_pre_impl_renameat@Base 15 ++ __sanitizer_syscall_pre_impl_request_key@Base 15 ++ __sanitizer_syscall_pre_impl_restart_syscall@Base 15 ++ __sanitizer_syscall_pre_impl_rmdir@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 ++ __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 ++ __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 ++ __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getparam@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 ++ __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setparam@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 ++ __sanitizer_syscall_pre_impl_sched_yield@Base 15 ++ __sanitizer_syscall_pre_impl_select@Base 15 ++ __sanitizer_syscall_pre_impl_semctl@Base 15 ++ __sanitizer_syscall_pre_impl_semget@Base 15 ++ __sanitizer_syscall_pre_impl_semop@Base 15 ++ __sanitizer_syscall_pre_impl_semtimedop@Base 15 ++ __sanitizer_syscall_pre_impl_send@Base 15 ++ __sanitizer_syscall_pre_impl_sendfile64@Base 15 ++ __sanitizer_syscall_pre_impl_sendfile@Base 15 ++ __sanitizer_syscall_pre_impl_sendmmsg@Base 15 ++ __sanitizer_syscall_pre_impl_sendmsg@Base 15 ++ __sanitizer_syscall_pre_impl_sendto@Base 15 ++ __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 ++ __sanitizer_syscall_pre_impl_set_robust_list@Base 15 ++ __sanitizer_syscall_pre_impl_set_tid_address@Base 15 ++ __sanitizer_syscall_pre_impl_setdomainname@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setfsgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setfsgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setfsuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setfsuid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setgroups16@Base 15 ++ __sanitizer_syscall_pre_impl_setgroups@Base 15 ++ __sanitizer_syscall_pre_impl_sethostname@Base 15 ++ __sanitizer_syscall_pre_impl_setitimer@Base 15 ++ __sanitizer_syscall_pre_impl_setns@Base 15 ++ __sanitizer_syscall_pre_impl_setpgid@Base 15 ++ __sanitizer_syscall_pre_impl_setpriority@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setregid16@Base 15 ++ __sanitizer_syscall_pre_impl_setregid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setresgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setresgid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setresuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setresuid@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setreuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setreuid@Base 15 ++ __sanitizer_syscall_pre_impl_setrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_setsid@Base 15 ++ __sanitizer_syscall_pre_impl_setsockopt@Base 15 ++ __sanitizer_syscall_pre_impl_settimeofday@Base 15 ++ (arch=armhf sparc64 x32)__sanitizer_syscall_pre_impl_setuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setuid@Base 15 ++ __sanitizer_syscall_pre_impl_setxattr@Base 15 ++ __sanitizer_syscall_pre_impl_sgetmask@Base 15 ++ __sanitizer_syscall_pre_impl_shmat@Base 15 ++ __sanitizer_syscall_pre_impl_shmctl@Base 15 ++ __sanitizer_syscall_pre_impl_shmdt@Base 15 ++ __sanitizer_syscall_pre_impl_shmget@Base 15 ++ __sanitizer_syscall_pre_impl_shutdown@Base 15 ++ __sanitizer_syscall_pre_impl_sigaction@Base 15 ++ __sanitizer_syscall_pre_impl_sigaltstack@Base 15 ++ __sanitizer_syscall_pre_impl_signal@Base 15 ++ __sanitizer_syscall_pre_impl_signalfd4@Base 15 ++ __sanitizer_syscall_pre_impl_signalfd@Base 15 ++ __sanitizer_syscall_pre_impl_sigpending@Base 15 ++ __sanitizer_syscall_pre_impl_sigprocmask@Base 15 ++ __sanitizer_syscall_pre_impl_socket@Base 15 ++ __sanitizer_syscall_pre_impl_socketcall@Base 15 ++ __sanitizer_syscall_pre_impl_socketpair@Base 15 ++ __sanitizer_syscall_pre_impl_splice@Base 15 ++ __sanitizer_syscall_pre_impl_spu_create@Base 15 ++ __sanitizer_syscall_pre_impl_spu_run@Base 15 ++ __sanitizer_syscall_pre_impl_ssetmask@Base 15 ++ __sanitizer_syscall_pre_impl_stat64@Base 15 ++ __sanitizer_syscall_pre_impl_stat@Base 15 ++ __sanitizer_syscall_pre_impl_statfs64@Base 15 ++ __sanitizer_syscall_pre_impl_statfs@Base 15 ++ __sanitizer_syscall_pre_impl_stime@Base 15 ++ __sanitizer_syscall_pre_impl_swapoff@Base 15 ++ __sanitizer_syscall_pre_impl_swapon@Base 15 ++ __sanitizer_syscall_pre_impl_symlink@Base 15 ++ __sanitizer_syscall_pre_impl_symlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_sync@Base 15 ++ __sanitizer_syscall_pre_impl_syncfs@Base 15 ++ __sanitizer_syscall_pre_impl_sysctl@Base 15 ++ __sanitizer_syscall_pre_impl_sysfs@Base 15 ++ __sanitizer_syscall_pre_impl_sysinfo@Base 15 ++ __sanitizer_syscall_pre_impl_syslog@Base 15 ++ __sanitizer_syscall_pre_impl_tee@Base 15 ++ __sanitizer_syscall_pre_impl_tgkill@Base 15 ++ __sanitizer_syscall_pre_impl_time@Base 15 ++ __sanitizer_syscall_pre_impl_timer_create@Base 15 ++ __sanitizer_syscall_pre_impl_timer_delete@Base 15 ++ __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 ++ __sanitizer_syscall_pre_impl_timer_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_timer_settime@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_create@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 ++ __sanitizer_syscall_pre_impl_times@Base 15 ++ __sanitizer_syscall_pre_impl_tkill@Base 15 ++ __sanitizer_syscall_pre_impl_truncate@Base 15 ++ __sanitizer_syscall_pre_impl_umask@Base 15 ++ __sanitizer_syscall_pre_impl_umount@Base 15 ++ __sanitizer_syscall_pre_impl_uname@Base 15 ++ __sanitizer_syscall_pre_impl_unlink@Base 15 ++ __sanitizer_syscall_pre_impl_unlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_unshare@Base 15 ++ __sanitizer_syscall_pre_impl_uselib@Base 15 ++ __sanitizer_syscall_pre_impl_ustat@Base 15 ++ __sanitizer_syscall_pre_impl_utime@Base 15 ++ __sanitizer_syscall_pre_impl_utimensat@Base 15 ++ __sanitizer_syscall_pre_impl_utimes@Base 15 ++ __sanitizer_syscall_pre_impl_vfork@Base 15 ++ __sanitizer_syscall_pre_impl_vhangup@Base 15 ++ __sanitizer_syscall_pre_impl_vmsplice@Base 15 ++ __sanitizer_syscall_pre_impl_wait4@Base 15 ++ __sanitizer_syscall_pre_impl_waitid@Base 15 ++ __sanitizer_syscall_pre_impl_waitpid@Base 15 ++ __sanitizer_syscall_pre_impl_write@Base 15 ++ __sanitizer_syscall_pre_impl_writev@Base 15 ++ __sanitizer_unaligned_load16@Base 15 ++ __sanitizer_unaligned_load32@Base 15 ++ __sanitizer_unaligned_load64@Base 15 ++ __sanitizer_unaligned_store16@Base 15 ++ __sanitizer_unaligned_store32@Base 15 ++ __sanitizer_unaligned_store64@Base 15 ++ __sanitizer_verify_contiguous_container@Base 15 ++ __sanitizer_verify_double_ended_contiguous_container@Base 15 ++ __sanitizer_weak_hook_memcmp@Base 15 ++ __sanitizer_weak_hook_memmem@Base 15 ++ __sanitizer_weak_hook_strcasecmp@Base 15 ++ __sanitizer_weak_hook_strcasestr@Base 15 ++ __sanitizer_weak_hook_strcmp@Base 15 ++ __sanitizer_weak_hook_strncasecmp@Base 15 ++ __sanitizer_weak_hook_strncmp@Base 15 ++ __sanitizer_weak_hook_strstr@Base 15 ++ __snprintf_chk@Base 15 ++ __sprintf_chk@Base 15 ++ __strdup@Base 15 ++ __strndup@Base 15 ++ __strxfrm_l@Base 15 ++ (arch=!powerpc !ppc64 !ppc64el !s390x)__tls_get_addr@Base 15 ++ (arch=s390x)__tls_get_addr_internal@Base 15 ++ (arch=powerpc ppc64 ppc64el)__tls_get_addr_opt@Base 15 ++ (arch=s390x)__tls_get_offset@Base 15 ++ __uflow@Base 15 ++ __underflow@Base 15 ++ __vsnprintf_chk@Base 15 ++ __vsprintf_chk@Base 15 ++ __wcsxfrm_l@Base 15 ++ __woverflow@Base 15 ++ __wuflow@Base 15 ++ __wunderflow@Base 15 ++ __xpg_strerror_r@Base 15 ++ __xstat64@Base 15 ++ __xstat@Base 15 ++ _exit@Base 15 ++ _longjmp@Base 15 ++ _obstack_begin@Base 15 ++ _obstack_begin_1@Base 15 ++ _obstack_newchunk@Base 15 ++ accept4@Base 15 ++ accept@Base 15 ++ aligned_alloc@Base 15 ++ argp_parse@Base 15 ++ asctime@Base 15 ++ asctime_r@Base 15 ++ asprintf@Base 15 ++ atoi@Base 15 ++ atol@Base 15 ++ atoll@Base 15 ++ backtrace@Base 15 ++ backtrace_symbols@Base 15 ++ bcmp@Base 15 ++ bsearch@Base 15 ++ bzero@Base 15 ++ calloc@Base 15 ++ canonicalize_file_name@Base 15 ++ capget@Base 15 ++ capset@Base 15 ++ (arch=!riscv64)cfree@Base 15 ++ clock_getcpuclockid@Base 15 ++ clock_getres@Base 15 ++ clock_gettime@Base 15 ++ clock_settime@Base 15 ++ confstr@Base 15 ++ ctermid@Base 15 ++ ctime@Base 15 ++ ctime_r@Base 15 ++ dlclose@Base 15 ++ dlopen@Base 15 ++ dn_comp@Base 15 ++ dn_expand@Base 15 ++ drand48_r@Base 15 ++ endgrent@Base 15 ++ endpwent@Base 15 ++ ether_aton@Base 15 ++ ether_aton_r@Base 15 ++ ether_hostton@Base 15 ++ ether_line@Base 15 ++ ether_ntoa@Base 15 ++ ether_ntoa_r@Base 15 ++ ether_ntohost@Base 15 ++ eventfd_read@Base 15 ++ eventfd_write@Base 15 ++ fclose@Base 15 ++ fdopen@Base 15 ++ fflush@Base 15 ++ fgetgrent@Base 15 ++ fgetgrent_r@Base 15 ++ fgetpwent@Base 15 ++ fgetpwent_r@Base 15 ++ fgets@Base 15 ++ fgetxattr@Base 15 ++ flistxattr@Base 15 ++ fmemopen@Base 15 ++ fopen64@Base 15 ++ fopen@Base 15 ++ fopencookie@Base 15 ++ fprintf@Base 15 ++ fputs@Base 15 ++ fread@Base 15 ++ free@Base 15 ++ freopen64@Base 15 ++ freopen@Base 15 ++ frexp@Base 15 ++ frexpf@Base 15 ++ frexpl@Base 15 ++ fscanf@Base 15 ++ fstatfs64@Base 15 ++ fstatfs@Base 15 ++ fstatvfs64@Base 15 ++ fstatvfs@Base 15 ++ ftime@Base 15 ++ fwrite@Base 15 ++ get_current_dir_name@Base 15 ++ getaddrinfo@Base 15 ++ getcwd@Base 15 ++ getdelim@Base 15 ++ getentropy@Base 15 ++ getgrent@Base 15 ++ getgrent_r@Base 15 ++ getgrgid@Base 15 ++ getgrgid_r@Base 15 ++ getgrnam@Base 15 ++ getgrnam_r@Base 15 ++ getgrouplist@Base 15 ++ getgroups@Base 15 ++ gethostbyaddr@Base 15 ++ gethostbyaddr_r@Base 15 ++ gethostbyname2@Base 15 ++ gethostbyname2_r@Base 15 ++ gethostbyname@Base 15 ++ gethostbyname_r@Base 15 ++ gethostent@Base 15 ++ gethostent_r@Base 15 ++ getifaddrs@Base 15 ++ getitimer@Base 15 ++ getline@Base 15 ++ getloadavg@Base 15 ++ getmntent@Base 15 ++ getmntent_r@Base 15 ++ getnameinfo@Base 15 ++ getnetbyaddr@Base 15 ++ getnetbyname@Base 15 ++ getnetent@Base 15 ++ getpass@Base 15 ++ getpeername@Base 15 ++ getprotobyname@Base 15 ++ getprotobyname_r@Base 15 ++ getprotobynumber@Base 15 ++ getprotobynumber_r@Base 15 ++ getprotoent@Base 15 ++ getprotoent_r@Base 15 ++ getpwent@Base 15 ++ getpwent_r@Base 15 ++ getpwnam@Base 15 ++ getpwnam_r@Base 15 ++ getpwuid@Base 15 ++ getpwuid_r@Base 15 ++ getrandom@Base 15 ++ getresgid@Base 15 ++ getresuid@Base 15 ++ getsockname@Base 15 ++ getsockopt@Base 15 ++ getusershell@Base 15 ++ getutent@Base 15 ++ getutid@Base 15 ++ getutline@Base 15 ++ getutxent@Base 15 ++ getutxid@Base 15 ++ getutxline@Base 15 ++ getxattr@Base 15 ++ glob64@Base 15 ++ glob@Base 15 ++ gmtime@Base 15 ++ gmtime_r@Base 15 ++ iconv@Base 15 ++ if_indextoname@Base 15 ++ if_nametoindex@Base 15 ++ index@Base 15 ++ inet_aton@Base 15 ++ inet_ntop@Base 15 ++ inet_pton@Base 15 ++ initgroups@Base 15 ++ ioctl@Base 15 ++ lgamma@Base 15 ++ lgamma_r@Base 15 ++ lgammaf@Base 15 ++ lgammaf_r@Base 15 ++ lgammal@Base 15 ++ lgammal_r@Base 15 ++ lgetxattr@Base 15 ++ listxattr@Base 15 ++ llistxattr@Base 15 ++ localtime@Base 15 ++ localtime_r@Base 15 ++ longjmp@Base 15 ++ lrand48_r@Base 15 ++ lstat64@Base 15 ++ lstat@Base 15 ++ makecontext@Base 15 ++ mallinfo@Base 15 ++ malloc@Base 15 ++ malloc_stats@Base 15 ++ malloc_usable_size@Base 15 ++ mallopt@Base 15 ++ mbsnrtowcs@Base 15 ++ mbsrtowcs@Base 15 ++ mbstowcs@Base 15 ++ mcheck@Base 15 ++ mcheck_pedantic@Base 15 ++ memalign@Base 15 ++ memchr@Base 15 ++ memcmp@Base 15 ++ memcpy@Base 15 ++ memmem@Base 15 ++ memmove@Base 15 ++ memrchr@Base 15 ++ memset@Base 15 ++ mincore@Base 15 ++ mktime@Base 15 ++ mlock@Base 15 ++ mlockall@Base 15 ++ mmap64@Base 15 ++ mmap@Base 15 ++ modf@Base 15 ++ modff@Base 15 ++ modfl@Base 15 ++ mprobe@Base 15 ++ mprotect@Base 15 ++ msgrcv@Base 15 ++ msgsnd@Base 15 ++ munlock@Base 15 ++ munlockall@Base 15 ++ munmap@Base 15 ++ name_to_handle_at@Base 15 ++ open_by_handle_at@Base 15 ++ open_memstream@Base 15 ++ open_wmemstream@Base 15 ++ opendir@Base 15 ++ pclose@Base 15 ++ poll@Base 15 ++ popen@Base 15 ++ posix_memalign@Base 15 ++ posix_spawn@Base 15 ++ posix_spawnp@Base 15 ++ ppoll@Base 15 ++ prctl@Base 15 ++ pread64@Base 15 ++ pread@Base 15 ++ preadv2@Base 15 ++ preadv64@Base 15 ++ preadv@Base 15 ++ printf@Base 15 ++ process_vm_readv@Base 15 ++ process_vm_writev@Base 15 ++ pthread_attr_getaffinity_np@Base 15 ++ pthread_attr_getdetachstate@Base 15 ++ pthread_attr_getguardsize@Base 15 ++ pthread_attr_getinheritsched@Base 15 ++ pthread_attr_getschedparam@Base 15 ++ pthread_attr_getschedpolicy@Base 15 ++ pthread_attr_getscope@Base 15 ++ pthread_attr_getstack@Base 15 ++ pthread_attr_getstacksize@Base 15 ++ pthread_barrierattr_getpshared@Base 15 ++ pthread_condattr_getclock@Base 15 ++ pthread_condattr_getpshared@Base 15 ++ pthread_create@Base 15 ++ pthread_detach@Base 15 ++ pthread_exit@Base 15 ++ pthread_getaffinity_np@Base 15 ++ pthread_getcpuclockid@Base 15 ++ pthread_getname_np@Base 15 ++ pthread_getschedparam@Base 15 ++ pthread_join@Base 15 ++ pthread_mutexattr_getprioceiling@Base 15 ++ pthread_mutexattr_getprotocol@Base 15 ++ pthread_mutexattr_getpshared@Base 15 ++ pthread_mutexattr_getrobust@Base 15 ++ pthread_mutexattr_getrobust_np@Base 15 ++ pthread_mutexattr_gettype@Base 15 ++ pthread_rwlockattr_getkind_np@Base 15 ++ pthread_rwlockattr_getpshared@Base 15 ++ pthread_setcancelstate@Base 15 ++ pthread_setcanceltype@Base 15 ++ pthread_setname_np@Base 15 ++ pthread_sigmask@Base 15 ++ pthread_timedjoin_np@Base 15 ++ pthread_tryjoin_np@Base 15 ++ (arch=!powerpc)ptrace@Base 15 ++ ptsname@Base 15 ++ ptsname_r@Base 15 ++ puts@Base 15 ++ pututxline@Base 15 ++ pvalloc@Base 15 ++ pwrite64@Base 15 ++ pwrite@Base 15 ++ pwritev2@Base 15 ++ pwritev64@Base 15 ++ pwritev@Base 15 ++ qsort@Base 15 ++ qsort_r@Base 15 ++ rand_r@Base 15 ++ random_r@Base 15 ++ read@Base 15 ++ readdir64@Base 15 ++ readdir64_r@Base 15 ++ readdir@Base 15 ++ readdir_r@Base 15 ++ readlink@Base 15 ++ readlinkat@Base 15 ++ readv@Base 15 ++ realloc@Base 15 ++ reallocarray@Base 15 ++ realpath@Base 15 ++ recv@Base 15 ++ recvfrom@Base 15 ++ recvmmsg@Base 15 ++ recvmsg@Base 15 ++ regcomp@Base 15 ++ regerror@Base 15 ++ regexec@Base 15 ++ regfree@Base 15 ++ remquo@Base 15 ++ remquof@Base 15 ++ remquol@Base 15 ++ scandir64@Base 15 ++ scandir@Base 15 ++ scanf@Base 15 ++ sched_getaffinity@Base 15 ++ sched_getparam@Base 15 ++ sem_destroy@Base 15 ++ sem_getvalue@Base 15 ++ sem_init@Base 15 ++ sem_open@Base 15 ++ sem_post@Base 15 ++ sem_timedwait@Base 15 ++ sem_trywait@Base 15 ++ sem_unlink@Base 15 ++ sem_wait@Base 15 ++ send@Base 15 ++ sendmmsg@Base 15 ++ sendmsg@Base 15 ++ sendto@Base 15 ++ setbuf@Base 15 ++ setbuffer@Base 15 ++ setgrent@Base 15 ++ setitimer@Base 15 ++ setlinebuf@Base 15 ++ setlocale@Base 15 ++ setpwent@Base 15 ++ setvbuf@Base 15 ++ (arch=!armhf !i386 !powerpc !x32)shmctl@Base 15 ++ sigaction@Base 15 ++ sigaltstack@Base 15 ++ sigandset@Base 15 ++ sigemptyset@Base 15 ++ sigfillset@Base 15 ++ siglongjmp@Base 15 ++ signal@Base 15 ++ sigorset@Base 15 ++ sigpending@Base 15 ++ sigprocmask@Base 15 ++ sigtimedwait@Base 15 ++ sigwait@Base 15 ++ sigwaitinfo@Base 15 ++ sincos@Base 15 ++ sincosf@Base 15 ++ sincosl@Base 15 ++ snprintf@Base 15 ++ sprintf@Base 15 ++ sscanf@Base 15 ++ stat64@Base 15 ++ stat@Base 15 ++ statfs64@Base 15 ++ statfs@Base 15 ++ statvfs64@Base 15 ++ statvfs@Base 15 ++ strcasecmp@Base 15 ++ strcasestr@Base 15 ++ strcat@Base 15 ++ strchr@Base 15 ++ strchrnul@Base 15 ++ strcmp@Base 15 ++ strcpy@Base 15 ++ strcspn@Base 15 ++ strdup@Base 15 ++ strerror@Base 15 ++ strerror_r@Base 15 ++ strlen@Base 15 ++ strncasecmp@Base 15 ++ strncat@Base 15 ++ strncmp@Base 15 ++ strncpy@Base 15 ++ strndup@Base 15 ++ strnlen@Base 15 ++ strpbrk@Base 15 ++ strptime@Base 15 ++ strrchr@Base 15 ++ strspn@Base 15 ++ strstr@Base 15 ++ strtoimax@Base 15 ++ strtok@Base 15 ++ strtol@Base 15 ++ strtoll@Base 15 ++ strtoumax@Base 15 ++ strxfrm@Base 15 ++ strxfrm_l@Base 15 ++ swapcontext@Base 15 ++ sysinfo@Base 15 ++ tcgetattr@Base 15 ++ tempnam@Base 15 ++ textdomain@Base 15 ++ time@Base 15 ++ timerfd_gettime@Base 15 ++ timerfd_settime@Base 15 ++ times@Base 15 ++ tmpnam@Base 15 ++ tmpnam_r@Base 15 ++ tsearch@Base 15 ++ ttyname@Base 15 ++ ttyname_r@Base 15 ++ uname@Base 15 ++ valloc@Base 15 ++ vasprintf@Base 15 ++ (arch=amd64 armhf i386 riscv64 x32)vfork@Base 15 ++ vfprintf@Base 15 ++ vfscanf@Base 15 ++ vprintf@Base 15 ++ vscanf@Base 15 ++ vsnprintf@Base 15 ++ vsprintf@Base 15 ++ vsscanf@Base 15 ++ wait3@Base 15 ++ wait4@Base 15 ++ wait@Base 15 ++ waitid@Base 15 ++ waitpid@Base 15 ++ wcrtomb@Base 15 ++ wcscat@Base 15 ++ wcsdup@Base 15 ++ wcslen@Base 15 ++ wcsncat@Base 15 ++ wcsnlen@Base 15 ++ wcsnrtombs@Base 15 ++ wcsrtombs@Base 15 ++ wcstombs@Base 15 ++ wcsxfrm@Base 15 ++ wcsxfrm_l@Base 15 ++ wctomb@Base 15 ++ wordexp@Base 15 ++ write@Base 15 ++ writev@Base 15 ++ xdr_bool@Base 15 ++ xdr_bytes@Base 15 ++ xdr_char@Base 15 ++ xdr_destroy@Base 15 ++ xdr_double@Base 15 ++ xdr_enum@Base 15 ++ xdr_float@Base 15 ++ xdr_hyper@Base 15 ++ xdr_int16_t@Base 15 ++ xdr_int32_t@Base 15 ++ xdr_int64_t@Base 15 ++ xdr_int8_t@Base 15 ++ xdr_int@Base 15 ++ xdr_long@Base 15 ++ xdr_longlong_t@Base 15 ++ xdr_quad_t@Base 15 ++ xdr_short@Base 15 ++ xdr_string@Base 15 ++ xdr_u_char@Base 15 ++ xdr_u_hyper@Base 15 ++ xdr_u_int@Base 15 ++ xdr_u_long@Base 15 ++ xdr_u_longlong_t@Base 15 ++ xdr_u_quad_t@Base 15 ++ xdr_u_short@Base 15 ++ xdr_uint16_t@Base 15 ++ xdr_uint32_t@Base 15 ++ xdr_uint64_t@Base 15 ++ xdr_uint8_t@Base 15 ++ xdrmem_create@Base 15 ++ xdrrec_create@Base 15 ++ xdrstdio_create@Base 15 diff --cc debian/libatomic.symbols index 0000000,0000000..f50770d new file mode 100644 --- /dev/null +++ b/debian/libatomic.symbols @@@ -1,0 -1,0 +1,4 @@@ ++libatomic.so.1 #PACKAGE# #MINVER# ++ (symver)LIBATOMIC_1.0 4.8 ++ (symver)LIBATOMIC_1.1 4.9 ++ (symver)LIBATOMIC_1.2 6 diff --cc debian/libcc1-0.symbols index 0000000,0000000..d351798 new file mode 100644 --- /dev/null +++ b/debian/libcc1-0.symbols @@@ -1,0 -1,0 +1,62 @@@ ++# SymbolsHelper-Confirmed: 15 amd64 ++libcc1.so.0 libcc1-0 #MINVER# ++ (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJRKS5_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJS5_EEEvDpOT_@Base 15 ++ (optional=templinst|subst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructILb1EEEvPKc{size_t}@Base 15 ++ _xexit_cleanup@Base 15 ++ concat@Base 15 ++ concat_copy2@Base 15 ++ concat_copy@Base 15 ++ concat_length@Base 15 ++ gcc_c_fe_context@Base 15 ++ gcc_cp_fe_context@Base 15 ++ htab_clear_slot@Base 15 ++ htab_collisions@Base 15 ++ htab_create@Base 15 ++ htab_create_alloc@Base 15 ++ htab_create_alloc_ex@Base 15 ++ htab_create_typed_alloc@Base 15 ++ htab_delete@Base 15 ++ htab_elements@Base 15 ++ htab_empty@Base 15 ++ htab_eq_pointer@Base 15 ++ htab_eq_string@Base 15 ++ htab_find@Base 15 ++ htab_find_slot@Base 15 ++ htab_find_slot_with_hash@Base 15 ++ htab_find_with_hash@Base 15 ++ htab_hash_pointer@Base 15 ++ htab_hash_string@Base 15 ++ htab_remove_elt@Base 15 ++ htab_remove_elt_with_hash@Base 15 ++ htab_set_functions_ex@Base 15 ++ htab_size@Base 15 ++ htab_traverse@Base 15 ++ htab_traverse_noresize@Base 15 ++ htab_try_create@Base 15 ++ iterative_hash@Base 15 ++ libiberty_concat_ptr@Base 15 ++ reconcat@Base 15 ++ xcalloc@Base 15 ++ xexit@Base 15 ++ xmalloc@Base 15 ++ xmalloc_failed@Base 15 ++ xmalloc_set_program_name@Base 15 ++ xre_comp@Base 15 ++ xre_compile_fastmap@Base 15 ++ xre_compile_pattern@Base 15 ++ xre_exec@Base 15 ++ xre_match@Base 15 ++ xre_match_2@Base 15 ++ xre_max_failures@Base 15 ++ xre_search@Base 15 ++ xre_search_2@Base 15 ++ xre_set_registers@Base 15 ++ xre_set_syntax@Base 15 ++ xre_syntax_options@Base 15 ++ xrealloc@Base 15 ++ xregcomp@Base 15 ++ xregerror@Base 15 ++ xregexec@Base 15 ++ xregfree@Base 15 ++ xstrdup@Base 15 diff --cc debian/libga68.symbols index 0000000,0000000..18d7c2c new file mode 100644 --- /dev/null +++ b/debian/libga68.symbols @@@ -1,0 -1,0 +1,51 @@@ ++libga68.so.1 #PACKAGE# #MINVER# ++ _libga68_abort@Base 15 ++ _libga68_argc@Base 15 ++ _libga68_argv@Base 15 ++ _libga68_assert@Base 15 ++ _libga68_bitsboundserror@Base 15 ++ _libga68_bounds@Base 15 ++ _libga68_bounds_mismatch@Base 15 ++ _libga68_derefnil@Base 15 ++ _libga68_dim@Base 15 ++ _libga68_free_internal@Base 15 ++ _libga68_init_heap@Base 15 ++ _libga68_invalidcharerror@Base 15 ++ _libga68_longlongrandom@Base 15 ++ _libga68_longrandom@Base 15 ++ _libga68_lower_bound@Base 15 ++ _libga68_malloc@Base 15 ++ _libga68_malloc_internal@Base 15 ++ _libga68_posixargc@Base 15 ++ _libga68_posixargv@Base 15 ++ _libga68_posixclose@Base 15 ++ _libga68_posixcreat@Base 15 ++ _libga68_posixerrno@Base 15 ++ _libga68_posixfconnect@Base 15 ++ _libga68_posixfgetc@Base 15 ++ _libga68_posixfgets@Base 15 ++ _libga68_posixfopen@Base 15 ++ _libga68_posixfputc@Base 15 ++ _libga68_posixfputs@Base 15 ++ _libga68_posixfsize@Base 15.2 ++ _libga68_posixgetchar@Base 15 ++ _libga68_posixgetenv@Base 15 ++ _libga68_posixgets@Base 15 ++ _libga68_posixlseek@Base 15 ++ _libga68_posixperror@Base 15 ++ _libga68_posixputchar@Base 15 ++ _libga68_posixputs@Base 15 ++ _libga68_posixstrerror@Base 15 ++ _libga68_random@Base 15 ++ _libga68_realloc@Base 15 ++ _libga68_realloc_unchecked@Base 15 ++ _libga68_set_exit_status@Base 15 ++ _libga68_u32_cmp2@Base 15 ++ _libga68_u32_cmp@Base 15 ++ _libga68_u32_to_u8@Base 15 ++ _libga68_u8_mbtouc@Base 15 ++ _libga68_u8_to_u32@Base 15 ++ _libga68_u8_uctomb@Base 15 ++ _libga68_unreachable@Base 15 ++ _libga68_upper_bound@Base 15 ++ main@Base 15 diff --cc debian/libgcc-s.symbols index 0000000,0000000..21e5f7f new file mode 100644 --- /dev/null +++ b/debian/libgcc-s.symbols @@@ -1,0 -1,0 +1,31 @@@ ++libgcc_s.so.1 #PACKAGE# #MINVER# ++ (symver)GCC_3.0 3.0 ++ (symver)GCC_3.3 3.3 ++ (symver)GCC_3.3.1 3.3.1 ++# __gcc_personality_sj0, __gcc_personality_v0 ++ (symver|arch=ia64)GCC_3.3.2 3.3.2 ++ (symver|arch=arc armel armhf loong64 mips mipsel mipsn32 mipsn32el mips64 mips64el powerpc sh4)GCC_3.3.4 3.3.4 ++ (symver)GCC_3.4 3.4 ++ (symver)GCC_3.4.2 3.4.2 ++#(symver|arch-bits=32)GCC_3.4.4 3.4.4 ++ (symver|arch=!arc !armel !armhf !any-i386 !mips !mipsel !powerpc !s390 !sh4 !sparc)GCC_3.4.4 3.4.4 ++ (symver|arch=armel armhf|ignore-blacklist)GCC_3.5 3.5 ++ (symver)GCC_4.0.0 4.0 ++ (symver|arch=powerpc s390 s390x)GCC_4.1.0 4.1 ++ (symver)GCC_4.2.0 4.2 ++ (symver)GCC_4.3.0 4.3 ++ (symver|arch=any-i386 ia64 mips mipsel mipsn32 mipsn32el mips64 mips64el riscv64 sh4)GCC_4.4.0 4.4 ++ (symver|arch=arm64 any-i386 loong64 mipsn32 mipsn32el mips64 mips64el riscv64)GCC_4.5.0 4.5 ++#(symver|optional)GCC_4.6.0 4.6 ++ (symver)GCC_4.7.0 4.7 ++ (symver|arch=any-amd64 any-i386 x32)GCC_4.8.0 4.8 ++ (symver|arch=!arc !any-amd64 !x32 !sparc64 !s390x !sh4)GLIBC_2.0 4.2 ++ (symver|arch=s390x sh4 sparc64)GLIBC_2.2 4.2 ++ (symver|arch=sparc)GCC_LDBL_3.0 3.0 ++ (symver|arch=alpha sparc)GCC_LDBL_4.0.0 4.0 ++ (symver)GCC_7.0.0 7 ++ (symver|arch=arm64)GCC_11.0 11 ++ (symver|arch=amd64 i386 x32 hurd-amd64 hurd-i386)GCC_12.0.0 12 ++ (symver|arch=amd64 arm64 i386 x32 hurd-amd64 hurd-i386)GCC_13.0.0 13 ++ (symver|arch=arm64)GCC_14.0 14 ++ (symver)GCC_14.0.0 14 diff --cc debian/libgcc-s2.symbols.m68k index 0000000,0000000..d43214d new file mode 100644 --- /dev/null +++ b/debian/libgcc-s2.symbols.m68k @@@ -1,0 -1,0 +1,169 @@@ ++libgcc_s.so.2 libgcc-s2 #MINVER# ++ GCC_14.0.0@GCC_14.0.0 14 ++ GCC_3.0@GCC_3.0 4.2.1 ++ GCC_3.3.1@GCC_3.3.1 4.2.1 ++ GCC_3.3.4@GCC_3.3.4 4.4.5 ++ GCC_3.3@GCC_3.3 4.2.1 ++ GCC_3.4.2@GCC_3.4.2 4.2.1 ++ GCC_3.4@GCC_3.4 4.2.1 ++ GCC_4.0.0@GCC_4.0.0 4.2.1 ++ GCC_4.2.0@GCC_4.2.0 4.2.1 ++ GCC_4.3.0@GCC_4.3.0 4.3.0 ++ GCC_4.5.0@GCC_4.5.0 4.5 ++ GCC_4.7.0@GCC_4.7.0 4.7 ++ GCC_7.0.0@GCC_7.0.0 7.0 ++ GLIBC_2.0@GLIBC_2.0 4.2.1 ++ _Unwind_Backtrace@GCC_3.3 4.2.1 ++ _Unwind_DeleteException@GCC_3.0 4.2.1 ++ _Unwind_FindEnclosingFunction@GCC_3.3 4.2.1 ++ _Unwind_Find_FDE@GCC_3.0 4.2.1 ++ _Unwind_ForcedUnwind@GCC_3.0 4.2.1 ++ _Unwind_GetCFA@GCC_3.3 4.2.1 ++ _Unwind_GetDataRelBase@GCC_3.0 4.2.1 ++ _Unwind_GetGR@GCC_3.0 4.2.1 ++ _Unwind_GetIP@GCC_3.0 4.2.1 ++ _Unwind_GetIPInfo@GCC_4.2.0 4.2.1 ++ _Unwind_GetLanguageSpecificData@GCC_3.0 4.2.1 ++ _Unwind_GetRegionStart@GCC_3.0 4.2.1 ++ _Unwind_GetTextRelBase@GCC_3.0 4.2.1 ++ _Unwind_RaiseException@GCC_3.0 4.2.1 ++ _Unwind_Resume@GCC_3.0 4.2.1 ++ _Unwind_Resume_or_Rethrow@GCC_3.3 4.2.1 ++ _Unwind_SetGR@GCC_3.0 4.2.1 ++ _Unwind_SetIP@GCC_3.0 4.2.1 ++ __absvdi2@GCC_3.0 4.2.1 ++ __absvsi2@GCC_3.0 4.2.1 ++ __adddf3@GCC_3.0 4.4.5 ++ __addsf3@GCC_3.0 4.4.5 ++ __addvdi3@GCC_3.0 4.2.1 ++ __addvsi3@GCC_3.0 4.2.1 ++ __addxf3@GCC_3.0 4.4.5 ++ __ashldi3@GCC_3.0 4.2.1 ++ __ashrdi3@GCC_3.0 4.2.1 ++ __bswapdi2@GCC_4.3.0 4.3.0 ++ __bswapsi2@GCC_4.3.0 4.3.0 ++ __clear_cache@GCC_3.0 4.2.1 ++ __clrsbdi2@GCC_4.7.0 4.7 ++ __clrsbsi2@GCC_4.7.0 4.7 ++ __clzdi2@GCC_3.4 4.2.1 ++ __clzsi2@GCC_3.4 4.2.1 ++ __cmpdi2@GCC_3.0 4.2.1 ++ __ctzdi2@GCC_3.4 4.2.1 ++ __ctzsi2@GCC_3.4 4.2.1 ++ __deregister_frame@GLIBC_2.0 4.2.1 ++ __deregister_frame_info@GLIBC_2.0 4.2.1 ++ __deregister_frame_info_bases@GCC_3.0 4.2.1 ++ __divdc3@GCC_4.0.0 4.2.1 ++ __divdf3@GCC_3.0 4.4.5 ++ __divdi3@GLIBC_2.0 4.2.1 ++ __divmoddi4@GCC_7.0.0 7.0 ++ __divsc3@GCC_4.0.0 4.2.1 ++ __divsf3@GCC_3.0 4.4.5 ++ __divsi3@GCC_3.0 4.4.5 ++ __divxc3@GCC_4.0.0 4.2.1 ++ __divxf3@GCC_3.0 4.4.5 ++ __emutls_get_address@GCC_4.3.0 4.3.0 ++ __emutls_register_common@GCC_4.3.0 4.3.0 ++ __enable_execute_stack@GCC_3.4.2 4.2.1 ++ __eqdf2@GCC_3.0 4.4.5 ++ __eqsf2@GCC_3.0 4.4.5 ++ __eqxf2@GCC_3.0 4.4.5 ++ __extenddfxf2@GCC_3.0 4.4.5 ++ __extendsfdf2@GCC_3.0 4.4.5 ++ __extendsfxf2@GCC_3.0 4.4.5 ++ __ffsdi2@GCC_3.0 4.2.1 ++ __ffssi2@GCC_4.3.0 4.3.0 ++ __fixdfdi@GCC_3.0 4.2.1 ++ __fixdfsi@GCC_3.0 4.4.5 ++ __fixsfdi@GCC_3.0 4.2.1 ++ __fixsfsi@GCC_3.0 4.4.5 ++ __fixunsdfdi@GCC_3.0 4.2.1 ++ __fixunsdfsi@GCC_3.0 4.2.1 ++ __fixunssfdi@GCC_3.0 4.2.1 ++ __fixunssfsi@GCC_3.0 4.2.1 ++ __fixunsxfdi@GCC_3.0 4.2.1 ++ __fixunsxfsi@GCC_3.0 4.2.1 ++ __fixxfdi@GCC_3.0 4.2.1 ++ __fixxfsi@GCC_3.0 4.4.5 ++ __floatdidf@GCC_3.0 4.2.1 ++ __floatdisf@GCC_3.0 4.2.1 ++ __floatdixf@GCC_3.0 4.2.1 ++ __floatsidf@GCC_3.0 4.4.5 ++ __floatsisf@GCC_3.0 4.4.5 ++ __floatsixf@GCC_3.0 4.4.5 ++ __floatundidf@GCC_4.2.0 4.2.1 ++ __floatundisf@GCC_4.2.0 4.2.1 ++ __floatundixf@GCC_4.2.0 4.2.1 ++ __floatunsidf@GCC_4.2.0 4.4.5 ++ __floatunsisf@GCC_4.2.0 4.4.5 ++ __floatunsixf@GCC_4.2.0 4.4.5 ++ __frame_state_for@GLIBC_2.0 4.2.1 ++ __gcc_personality_v0@GCC_3.3.1 4.2.1 ++ __gedf2@GCC_3.0 4.4.5 ++ __gesf2@GCC_3.0 4.4.5 ++ __gexf2@GCC_3.0 4.4.5 ++ __gtdf2@GCC_3.0 4.4.5 ++ __gtsf2@GCC_3.0 4.4.5 ++ __gtxf2@GCC_3.0 4.4.5 ++ __hardcfr_check@GCC_14.0.0 14 ++ __ledf2@GCC_3.0 4.4.5 ++ __lesf2@GCC_3.0 4.4.5 ++ __lexf2@GCC_3.0 4.4.5 ++ __lshrdi3@GCC_3.0 4.2.1 ++ __ltdf2@GCC_3.0 4.4.5 ++ __ltsf2@GCC_3.0 4.4.5 ++ __ltxf2@GCC_3.0 4.4.5 ++ __moddi3@GLIBC_2.0 4.2.1 ++ __modsi3@GCC_3.0 4.4.5 ++ __muldc3@GCC_4.0.0 4.2.1 ++ __muldf3@GCC_3.0 4.4.5 ++ __muldi3@GCC_3.0 4.2.1 ++ __mulsc3@GCC_4.0.0 4.2.1 ++ __mulsf3@GCC_3.0 4.4.5 ++ __mulsi3@GCC_3.0 4.4.5 ++ __mulvdi3@GCC_3.0 4.2.1 ++ __mulvsi3@GCC_3.0 4.2.1 ++ __mulxc3@GCC_4.0.0 4.2.1 ++ __mulxf3@GCC_3.0 4.4.5 ++ __nedf2@GCC_3.0 4.4.5 ++ __negdf2@GCC_3.0 4.4.5 ++ __negdi2@GCC_3.0 4.2.1 ++ __negsf2@GCC_3.0 4.4.5 ++ __negvdi2@GCC_3.0 4.2.1 ++ __negvsi2@GCC_3.0 4.2.1 ++ __negxf2@GCC_3.0 4.4.5 ++ __nesf2@GCC_3.0 4.4.5 ++ __nexf2@GCC_3.0 4.4.5 ++ __paritydi2@GCC_3.4 4.2.1 ++ __paritysi2@GCC_3.4 4.2.1 ++ __popcountdi2@GCC_3.4 4.2.1 ++ __popcountsi2@GCC_3.4 4.2.1 ++ __powidf2@GCC_4.0.0 4.2.1 ++ __powisf2@GCC_4.0.0 4.2.1 ++ __powixf2@GCC_4.0.0 4.2.1 ++ __register_frame@GLIBC_2.0 4.2.1 ++ __register_frame_info@GLIBC_2.0 4.2.1 ++ __register_frame_info_bases@GCC_3.0 4.2.1 ++ __register_frame_info_table@GLIBC_2.0 4.2.1 ++ __register_frame_info_table_bases@GCC_3.0 4.2.1 ++ __register_frame_table@GLIBC_2.0 4.2.1 ++ __strub_enter@GCC_14.0.0 14 ++ __strub_leave@GCC_14.0.0 14 ++ __strub_update@GCC_14.0.0 14 ++ __subdf3@GCC_3.0 4.4.5 ++ __subsf3@GCC_3.0 4.4.5 ++ __subvdi3@GCC_3.0 4.2.1 ++ __subvsi3@GCC_3.0 4.2.1 ++ __subxf3@GCC_3.0 4.4.5 ++ __truncdfsf2@GCC_3.0 4.4.5 ++ __truncxfdf2@GCC_3.0 4.4.5 ++ __truncxfsf2@GCC_3.0 4.4.5 ++ __ucmpdi2@GCC_3.0 4.2.1 ++ __udivdi3@GLIBC_2.0 4.2.1 ++ __udivmoddi4@GCC_3.0 4.2.1 ++ __udivsi3@GCC_3.0 4.4.5 ++ __umoddi3@GLIBC_2.0 4.2.1 ++ __umodsi3@GCC_3.0 4.4.5 ++ __unorddf2@GCC_3.3.4 4.4.5 ++ __unordsf2@GCC_3.3.4 4.4.5 ++ __unordxf2@GCC_4.5.0 4.7 diff --cc debian/libgcc-s4.symbols.hppa index 0000000,0000000..b3d17c8 new file mode 100644 --- /dev/null +++ b/debian/libgcc-s4.symbols.hppa @@@ -1,0 -1,0 +1,103 @@@ ++libgcc_s.so.4 libgcc-s4 #MINVER# ++ GCC_14.0.0@GCC_14.0.0 14 ++ GCC_3.0@GCC_3.0 4.1.1 ++ GCC_3.3.1@GCC_3.3.1 4.1.1 ++ GCC_3.3@GCC_3.3 4.1.1 ++ GCC_3.4.2@GCC_3.4.2 4.1.1 ++ GCC_3.4@GCC_3.4 4.1.1 ++ GCC_4.0.0@GCC_4.0.0 4.1.1 ++ GCC_4.2.0@GCC_4.2.0 4.1.1 ++ GCC_4.3.0@GCC_4.3.0 4.3 ++ GCC_4.7.0@GCC_4.7.0 4.7 ++ GCC_7.0.0@GCC_7.0.0 7.0 ++ GLIBC_2.0@GLIBC_2.0 4.1.1 ++ _Unwind_Backtrace@GCC_3.3 4.1.1 ++ _Unwind_DeleteException@GCC_3.0 4.1.1 ++ _Unwind_FindEnclosingFunction@GCC_3.3 4.1.1 ++ _Unwind_Find_FDE@GCC_3.0 4.1.1 ++ _Unwind_ForcedUnwind@GCC_3.0 4.1.1 ++ _Unwind_GetCFA@GCC_3.3 4.1.1 ++ _Unwind_GetDataRelBase@GCC_3.0 4.1.1 ++ _Unwind_GetGR@GCC_3.0 4.1.1 ++ _Unwind_GetIP@GCC_3.0 4.1.1 ++ _Unwind_GetIPInfo@GCC_4.2.0 4.1.1 ++ _Unwind_GetLanguageSpecificData@GCC_3.0 4.1.1 ++ _Unwind_GetRegionStart@GCC_3.0 4.1.1 ++ _Unwind_GetTextRelBase@GCC_3.0 4.1.1 ++ _Unwind_RaiseException@GCC_3.0 4.1.1 ++ _Unwind_Resume@GCC_3.0 4.1.1 ++ _Unwind_Resume_or_Rethrow@GCC_3.3 4.1.1 ++ _Unwind_SetGR@GCC_3.0 4.1.1 ++ _Unwind_SetIP@GCC_3.0 4.1.1 ++ __absvdi2@GCC_3.0 4.1.1 ++ __absvsi2@GCC_3.0 4.1.1 ++ __addvdi3@GCC_3.0 4.1.1 ++ __addvsi3@GCC_3.0 4.1.1 ++ __ashldi3@GCC_3.0 4.1.1 ++ __ashrdi3@GCC_3.0 4.1.1 ++ __bswapdi2@GCC_4.3.0 4.3 ++ __bswapsi2@GCC_4.3.0 4.3 ++ __clear_cache@GCC_3.0 4.1.1 ++ __clrsbdi2@GCC_4.7.0 4.7 ++ __clrsbsi2@GCC_4.7.0 4.7 ++ __clzdi2@GCC_3.4 4.1.1 ++ __clzsi2@GCC_3.4 4.1.1 ++ __cmpdi2@GCC_3.0 4.1.1 ++ __ctzdi2@GCC_3.4 4.1.1 ++ __ctzsi2@GCC_3.4 4.1.1 ++ __deregister_frame@GLIBC_2.0 4.1.1 ++ __deregister_frame_info@GLIBC_2.0 4.1.1 ++ __deregister_frame_info_bases@GCC_3.0 4.1.1 ++ __divdc3@GCC_4.0.0 4.1.1 ++ __divdi3@GLIBC_2.0 4.1.1 ++ __divmoddi4@GCC_7.0.0 7.0 ++ __divsc3@GCC_4.0.0 4.1.1 ++ __emutls_get_address@GCC_4.3.0 4.3 ++ __emutls_register_common@GCC_4.3.0 4.3 ++ __enable_execute_stack@GCC_3.4.2 4.1.1 ++ __ffsdi2@GCC_3.0 4.1.1 ++ __ffssi2@GCC_4.3.0 4.3 ++ __fixdfdi@GCC_3.0 4.1.1 ++ __fixsfdi@GCC_3.0 4.1.1 ++ __fixunsdfdi@GCC_3.0 4.1.1 ++ __fixunsdfsi@GCC_3.0 4.1.1 ++ __fixunssfdi@GCC_3.0 4.1.1 ++ __fixunssfsi@GCC_3.0 4.1.1 ++ __floatdidf@GCC_3.0 4.1.1 ++ __floatdisf@GCC_3.0 4.1.1 ++ __floatundidf@GCC_4.2.0 4.2.1 ++ __floatundisf@GCC_4.2.0 4.2.1 ++ __frame_state_for@GLIBC_2.0 4.1.1 ++ __gcc_personality_v0@GCC_3.3.1 4.1.1 ++ __hardcfr_check@GCC_14.0.0 14 ++ __lshrdi3@GCC_3.0 4.1.1 ++ __moddi3@GLIBC_2.0 4.1.1 ++ __muldc3@GCC_4.0.0 4.1.1 ++ __muldi3@GCC_3.0 4.1.1 ++ __mulsc3@GCC_4.0.0 4.1.1 ++ __mulvdi3@GCC_3.0 4.1.1 ++ __mulvsi3@GCC_3.0 4.1.1 ++ __negdi2@GCC_3.0 4.1.1 ++ __negvdi2@GCC_3.0 4.1.1 ++ __negvsi2@GCC_3.0 4.1.1 ++ __paritydi2@GCC_3.4 4.1.1 ++ __paritysi2@GCC_3.4 4.1.1 ++ __popcountdi2@GCC_3.4 4.1.1 ++ __popcountsi2@GCC_3.4 4.1.1 ++ __powidf2@GCC_4.0.0 4.1.1 ++ __powisf2@GCC_4.0.0 4.1.1 ++ __register_frame@GLIBC_2.0 4.1.1 ++ __register_frame_info@GLIBC_2.0 4.1.1 ++ __register_frame_info_bases@GCC_3.0 4.1.1 ++ __register_frame_info_table@GLIBC_2.0 4.1.1 ++ __register_frame_info_table_bases@GCC_3.0 4.1.1 ++ __register_frame_table@GLIBC_2.0 4.1.1 ++ __strub_enter@GCC_14.0.0 14 ++ __strub_leave@GCC_14.0.0 14 ++ __strub_update@GCC_14.0.0 14 ++ __subvdi3@GCC_3.0 4.1.1 ++ __subvsi3@GCC_3.0 4.1.1 ++ __ucmpdi2@GCC_3.0 4.1.1 ++ __udivdi3@GLIBC_2.0 4.1.1 ++ __udivmoddi4@GCC_3.0 4.1.1 ++ __umoddi3@GLIBC_2.0 4.1.1 diff --cc debian/libgcc.symbols.aeabi index 0000000,0000000..9e70dc2 new file mode 100644 --- /dev/null +++ b/debian/libgcc.symbols.aeabi @@@ -1,0 -1,0 +1,69 @@@ ++ __aeabi_cdcmpeq@GCC_3.5 3.5 ++ __aeabi_cdcmple@GCC_3.5 3.5 ++ __aeabi_cdrcmple@GCC_3.5 3.5 ++ __aeabi_cfcmpeq@GCC_3.5 3.5 ++ __aeabi_cfcmple@GCC_3.5 3.5 ++ __aeabi_cfrcmple@GCC_3.5 3.5 ++ __aeabi_d2f@GCC_3.5 3.5 ++ __aeabi_d2iz@GCC_3.5 3.5 ++ __aeabi_d2lz@GCC_3.5 3.5 ++ __aeabi_d2uiz@GCC_3.5 3.5 ++ __aeabi_d2ulz@GCC_3.5 3.5 ++ __aeabi_dadd@GCC_3.5 3.5 ++ __aeabi_dcmpeq@GCC_3.5 3.5 ++ __aeabi_dcmpge@GCC_3.5 3.5 ++ __aeabi_dcmpgt@GCC_3.5 3.5 ++ __aeabi_dcmple@GCC_3.5 3.5 ++ __aeabi_dcmplt@GCC_3.5 3.5 ++ __aeabi_dcmpun@GCC_3.5 3.5 ++ __aeabi_ddiv@GCC_3.5 3.5 ++ __aeabi_dmul@GCC_3.5 3.5 ++ __aeabi_dneg@GCC_3.5 3.5 ++ __aeabi_drsub@GCC_3.5 3.5 ++ __aeabi_dsub@GCC_3.5 3.5 ++ __aeabi_f2d@GCC_3.5 3.5 ++ __aeabi_f2iz@GCC_3.5 3.5 ++ __aeabi_f2lz@GCC_3.5 3.5 ++ __aeabi_f2uiz@GCC_3.5 3.5 ++ __aeabi_f2ulz@GCC_3.5 3.5 ++ __aeabi_fadd@GCC_3.5 3.5 ++ __aeabi_fcmpeq@GCC_3.5 3.5 ++ __aeabi_fcmpge@GCC_3.5 3.5 ++ __aeabi_fcmpgt@GCC_3.5 3.5 ++ __aeabi_fcmple@GCC_3.5 3.5 ++ __aeabi_fcmplt@GCC_3.5 3.5 ++ __aeabi_fcmpun@GCC_3.5 3.5 ++ __aeabi_fdiv@GCC_3.5 3.5 ++ __aeabi_fmul@GCC_3.5 3.5 ++ __aeabi_fneg@GCC_3.5 3.5 ++ __aeabi_frsub@GCC_3.5 3.5 ++ __aeabi_fsub@GCC_3.5 3.5 ++ __aeabi_i2d@GCC_3.5 3.5 ++ __aeabi_i2f@GCC_3.5 3.5 ++ __aeabi_idiv@GCC_3.5 3.5 ++ __aeabi_idiv0@GCC_3.5 1:4.5.0 ++ __aeabi_idivmod@GCC_3.5 3.5 ++ __aeabi_l2d@GCC_3.5 3.5 ++ __aeabi_l2f@GCC_3.5 3.5 ++ __aeabi_lasr@GCC_3.5 3.5 ++ __aeabi_lcmp@GCC_3.5 3.5 ++ __aeabi_ldivmod@GCC_3.5 3.5 ++ __aeabi_ldiv0@GCC_3.5 1:4.5.0 ++ __aeabi_llsl@GCC_3.5 3.5 ++ __aeabi_llsr@GCC_3.5 3.5 ++ __aeabi_lmul@GCC_3.5 3.5 ++ __aeabi_ui2d@GCC_3.5 3.5 ++ __aeabi_ui2f@GCC_3.5 3.5 ++ __aeabi_uidiv@GCC_3.5 3.5 ++ __aeabi_uidivmod@GCC_3.5 3.5 ++ __aeabi_ul2d@GCC_3.5 3.5 ++ __aeabi_ul2f@GCC_3.5 3.5 ++ __aeabi_ulcmp@GCC_3.5 3.5 ++ __aeabi_uldivmod@GCC_3.5 3.5 ++ __aeabi_unwind_cpp_pr0@GCC_3.5 3.5 ++ __aeabi_unwind_cpp_pr1@GCC_3.5 3.5 ++ __aeabi_unwind_cpp_pr2@GCC_3.5 3.5 ++ __aeabi_uread4@GCC_3.5 3.5 ++ __aeabi_uread8@GCC_3.5 3.5 ++ __aeabi_uwrite4@GCC_3.5 3.5 ++ __aeabi_uwrite8@GCC_3.5 3.5 diff --cc debian/libgccjit0.symbols index 0000000,0000000..9db8ff3 new file mode 100644 --- /dev/null +++ b/debian/libgccjit0.symbols @@@ -1,0 -1,0 +1,36 @@@ ++libgccjit.so.0 #PACKAGE# #MINVER# ++ (symver)LIBGCCJIT_ABI_0 5.1 ++ (symver)LIBGCCJIT_ABI_1 5.1 ++ (symver)LIBGCCJIT_ABI_2 5.1 ++ (symver)LIBGCCJIT_ABI_3 5.1 ++ (symver)LIBGCCJIT_ABI_4 6 ++ (symver)LIBGCCJIT_ABI_5 6 ++ (symver)LIBGCCJIT_ABI_6 7 ++ (symver)LIBGCCJIT_ABI_7 8 ++ (symver)LIBGCCJIT_ABI_8 8 ++ (symver)LIBGCCJIT_ABI_9 8 ++ (symver)LIBGCCJIT_ABI_10 8 ++ (symver)LIBGCCJIT_ABI_11 8 ++ (symver)LIBGCCJIT_ABI_12 10 ++ (symver)LIBGCCJIT_ABI_13 10 ++ (symver)LIBGCCJIT_ABI_14 11 ++ (symver)LIBGCCJIT_ABI_15 11 ++ (symver)LIBGCCJIT_ABI_16 12 ++ (symver)LIBGCCJIT_ABI_17 12 ++ (symver)LIBGCCJIT_ABI_18 12 ++ (symver)LIBGCCJIT_ABI_19 12 ++ (symver)LIBGCCJIT_ABI_20 12 ++ (symver)LIBGCCJIT_ABI_21 12 ++ (symver)LIBGCCJIT_ABI_22 12 ++ (symver)LIBGCCJIT_ABI_23 12 ++ (symver)LIBGCCJIT_ABI_24 12 ++ (symver)LIBGCCJIT_ABI_25 14 ++ (symver)LIBGCCJIT_ABI_26 14 ++ (symver)LIBGCCJIT_ABI_27 14.2 ++ (symver)LIBGCCJIT_ABI_28 15 ++ (symver)LIBGCCJIT_ABI_29 15 ++ (symver)LIBGCCJIT_ABI_30 15 ++ (symver)LIBGCCJIT_ABI_31 15 ++ (symver)LIBGCCJIT_ABI_32 15 ++ (symver)LIBGCCJIT_ABI_33 15 ++ (symver)LIBGCCJIT_ABI_34 15 diff --cc debian/libgcobol.symbols index 0000000,0000000..4471d96 new file mode 100644 --- /dev/null +++ b/debian/libgcobol.symbols @@@ -1,0 -1,0 +1,456 @@@ ++# SymbolsHelper-Confirmed: 15 amd64 arm64 ppc64el riscv64 ++libgcobol.so.1 libgcobol1 #MINVER# ++ _Z11__gg__abortPKc@Base 15 ++ _Z12__gg__mabortv@Base 15 ++ _Z14gcobol_fileopsv@Base 15 ++ _Z18__gg__file_stashedv@Base 15 ++ (optional=templinst)_Z23enabled_exception_matchISt23_Rb_tree_const_iteratorI23cbl_enabled_exception_tEET_S3_S3_9ec_type_tm@Base 15 ++ _Z7flipperv@Base 15 ++ _ZGVZNK17cbl_declarative_t10match_fileEmE4pend@Base 15 ++ _ZN11ec_status_t16copy_environmentEv@Base 15 ++ _ZN11ec_status_t6updateEv@Base 15 ++ (arch=riscv64)_ZN11ec_status_tC1ERKS_@Base 15 ++ (arch=riscv64)_ZN11ec_status_tC2ERKS_@Base 15 ++ _ZN11ec_status_tD1Ev@Base 15 ++ _ZN11ec_status_tD2Ev@Base 15 ++ _ZN24cbl_enabled_exceptions_t6decodeERKSt6vectorImSaImEE@Base 15 ++ _ZN24cbl_enabled_exceptions_tD1Ev@Base 15 ++ _ZN24cbl_enabled_exceptions_tD2Ev@Base 15 ++ _ZNK11ec_status_t17reset_environmentEv@Base 15 ++ _ZNK11ec_status_t8is_fatalEv@Base 15 ++ _ZNK23cbl_enabled_exception_t4dumpEi@Base 15 ++ _ZNK24cbl_enabled_exceptions_t4dumpEPKc@Base 15 ++ _ZNK24cbl_enabled_exceptions_t5matchE9ec_type_tm@Base 15 ++ (optional=templinst)_ZNKSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 ++ (optional=templinst)_ZNSt10_HashtableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS5_PvESaIS9_ENSt8__detail10_Select1stESt8equal_toIS5_ESt4hashIS5_ENSB_18_Mod_range_hashingENSB_20_Default_ranged_hashENSB_20_Prime_rehash_policyENSB_17_Hashtable_traitsILb1ELb0ELb1EEEE4findERS7_@Base 15 ++ (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPFvvEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS8_10_Hash_nodeIS6_Lb0EEEm@Base 15 ++ (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPFvvEESaIS6_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS8_18_Mod_range_hashingENS8_20_Default_ranged_hashENS8_20_Prime_rehash_policyENS8_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 ++ (optional=templinst)_ZNSt10_HashtableIiSt4pairIKiPPPcESaIS5_ENSt8__detail10_Select1stESt8equal_toIiESt4hashIiENS7_18_Mod_range_hashingENS7_20_Default_ranged_hashENS7_20_Prime_rehash_policyENS7_17_Hashtable_traitsILb0ELb0ELb1EEEE21_M_insert_unique_nodeEmmPNS7_10_Hash_nodeIS5_Lb0EEEm@Base 15 ++ (optional=templinst)_ZNSt10_HashtableImSt4pairIKm14alphabet_stateESaIS3_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS5_18_Mod_range_hashingENS5_20_Default_ranged_hashENS5_20_Prime_rehash_policyENS5_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 ++ (optional=templinst)_ZNSt10_HashtableImSt4pairIKmmESaIS2_ENSt8__detail10_Select1stESt8equal_toImESt4hashImENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEE4findERS1_@Base 15 ++ (optional=templinst)_ZNSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEED1Ev@Base 15 ++ (optional=templinst)_ZNSt10_HashtableItSt4pairIKthESaIS2_ENSt8__detail10_Select1stESt8equal_toItESt4hashItENS4_18_Mod_range_hashingENS4_20_Default_ranged_hashENS4_20_Prime_rehash_policyENS4_17_Hashtable_traitsILb0ELb0ELb1EEEED2Ev@Base 15 ++ (optional=templinst)_ZNSt12_Vector_baseI11id_2_resultSaIS0_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt12_Vector_baseI11id_2_resultSaIS0_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt12_Vector_baseISt17_Rb_tree_iteratorISt4pairIKSt6vectorIhSaIhEElEESaIS7_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt12_Vector_baseISt17_Rb_tree_iteratorISt4pairIKSt6vectorIhSaIhEElEESaIS7_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt12_Vector_baseIhSaIhEED1Ev@Base 15 ++ (optional=templinst)_ZNSt12_Vector_baseIhSaIhEED2Ev@Base 15 ++ (optional=templinst)_ZNSt12_Vector_baseImSaImEED1Ev@Base 15 ++ (optional=templinst)_ZNSt12_Vector_baseImSaImEED2Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPvSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S6_EEED1Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPvSt4hashIS5_ESt8equal_toIS5_ESaISt4pairIKS5_S6_EEED2Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapIiPPPFvvESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEED1Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapIiPPPFvvESt4hashIiESt8equal_toIiESaISt4pairIKiS3_EEED2Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapIiPPPcSt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED1Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapIiPPPcSt4hashIiESt8equal_toIiESaISt4pairIKiS2_EEED2Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapIm14alphabet_stateSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED1Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapIm14alphabet_stateSt4hashImESt8equal_toImESaISt4pairIKmS0_EEED2Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapImSt6vectorImSaImEESt4hashImESt8equal_toImESaISt4pairIKmS2_EEED1Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapImSt6vectorImSaImEESt4hashImESt8equal_toImESaISt4pairIKmS2_EEED2Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapImmSt4hashImESt8equal_toImESaISt4pairIKmmEEED1Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapImmSt4hashImESt8equal_toImESaISt4pairIKmmEEED2Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapIthSt4hashItESt8equal_toItESaISt4pairIKthEEED1Ev@Base 15 ++ (optional=templinst)_ZNSt13unordered_mapIthSt4hashItESt8equal_toItESaISt4pairIKthEEED2Ev@Base 15 ++ (optional=templinst)_ZNSt3setImSt4lessImESaImEED1Ev@Base 15 ++ (optional=templinst)_ZNSt3setImSt4lessImESaImEED2Ev@Base 15 ++ (optional=templinst)_ZNSt5dequeI11ec_status_tSaIS0_EE16_M_push_back_auxIJRKS0_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt5dequeI11ec_status_tSaIS0_EE17_M_reallocate_mapEmb@Base 15 ++ (optional=templinst)_ZNSt5stackI11ec_status_tSt5dequeIS0_SaIS0_EEED1Ev@Base 15 ++ (optional=templinst)_ZNSt5stackI11ec_status_tSt5dequeIS0_SaIS0_EEED2Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI11file_hole_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorI12file_index_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI13program_stateSaIS0_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI17cbl_declarative_tSaIS0_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI7LV_DATASaIS0_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI7LV_DATASaIS0_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI9comparandSaIS0_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI9ec_type_tSaIS0_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorI9ec_type_tSaIS0_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EE17_M_realloc_appendIJS5_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESaIS5_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorIPvSaIS0_EE17_M_default_appendEm@Base 15 ++ (optional=templinst)_ZNSt6vectorIPvSaIS0_EE17_M_realloc_appendIJRKS0_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorIPvSaIS0_EED1Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorIPvSaIS0_EED2Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorISt17_Rb_tree_iteratorISt4pairIKS_IhSaIhEElEESaIS6_EE17_M_realloc_appendIJRKS6_EEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorIhSaIhEE17_M_realloc_appendIJRKhEEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorIiSaIiEE17_M_realloc_appendIJRKiEEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorImSaImEE17_M_realloc_appendIJRKmEEEvDpOT_@Base 15 ++ (optional=templinst)_ZNSt6vectorImSaImEED1Ev@Base 15 ++ (optional=templinst)_ZNSt6vectorImSaImEED2Ev@Base 15 ++ (optional=templinst)_ZNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEE12_M_constructILb1EEEvPKcm@Base 15 ++ (optional=templinst)_ZNSt8_Rb_treeISt6vectorIhSaIhEESt4pairIKS2_lESt10_Select1stIS5_ESt4lessIS2_ESaIS5_EE11equal_rangeERS4_@Base 15 ++ (optional=templinst)_ZNSt8_Rb_treeImmSt9_IdentityImESt4lessImESaImEE16_M_insert_uniqueIRKmEESt4pairISt17_Rb_tree_iteratorImEbEOT_@Base 15 ++ (optional=templinst)_ZNSt8__detail9_Map_baseINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEESt4pairIKS6_PvESaISA_ENS_10_Select1stESt8equal_toIS6_ESt4hashIS6_ENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb1ELb0ELb1EEELb1EEixEOS6_@Base 15 ++ (optional=templinst)_ZNSt8__detail9_Map_baseImSt4pairIKm14alphabet_stateESaIS4_ENS_10_Select1stESt8equal_toImESt4hashImENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_@Base 15 ++ (optional=templinst)_ZNSt8__detail9_Map_baseImSt4pairIKmSt6vectorImSaImEEESaIS6_ENS_10_Select1stESt8equal_toImESt4hashImENS_18_Mod_range_hashingENS_20_Default_ranged_hashENS_20_Prime_rehash_policyENS_17_Hashtable_traitsILb0ELb0ELb1EEELb1EEixERS2_@Base 15 ++ (optional=templinst)_ZSt13__adjust_heapIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEElmNS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_T0_SD_T1_T2_@Base 15 ++ (optional=templinst)_ZSt16__insertion_sortIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEENS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_SC_T0_@Base 15 ++ (optional=templinst)_ZSt16__introsort_loopIN9__gnu_cxx17__normal_iteratorIPmSt6vectorImSaImEEEElNS0_5__ops15_Iter_comp_iterIPFimmEEEEvT_SC_T0_T1_@Base 15 ++ _ZZNK17cbl_declarative_t10match_fileEmE4pend@Base 15 ++ __gg___14_linage_counter6@Base 15 ++ __gg___data_dev_null@Base 15 ++ __gg___data_dev_stderr@Base 15 ++ __gg___data_dev_stdin@Base 15 ++ __gg___data_dev_stdout@Base 15 ++ __gg___dev_null@Base 15 ++ __gg___dev_stderr@Base 15 ++ __gg___dev_stdin@Base 15 ++ __gg___dev_stdout@Base 15 ++ __gg___file_status@Base 15 ++ __gg__abs@Base 15 ++ __gg__accept@Base 15 ++ __gg__accept_arg_value@Base 15 ++ __gg__accept_envar@Base 15 ++ __gg__acos@Base 15 ++ __gg__add_fixed_phase1@Base 15 ++ __gg__add_float_phase1@Base 15 ++ __gg__addf1_fixed_phase2@Base 15 ++ __gg__addf1_float_phase2@Base 15 ++ __gg__addf3@Base 15 ++ __gg__adjust_dest_size@Base 15 ++ __gg__allocate@Base 15 ++ __gg__alphabet_create@Base 15 ++ __gg__alphabet_states@Base 15 ++ __gg__alphabet_use@Base 15 ++ __gg__annuity@Base 15 ++ __gg__arithmetic_rounds@Base 15 ++ __gg__arithmetic_rounds_size@Base 15 ++ __gg__ascii_to_ascii@Base 15 ++ __gg__ascii_to_ascii_chr@Base 15 ++ __gg__ascii_to_console@Base 15 ++ __gg__ascii_to_ebcdic@Base 15 ++ __gg__ascii_to_ebcdic_chr@Base 15 ++ __gg__ascii_to_internal@Base 15 ++ __gg__ascii_to_internal_chr@Base 15 ++ __gg__ascii_to_internal_field@Base 15 ++ __gg__ascii_to_internal_str@Base 15 ++ __gg__asin@Base 15 ++ __gg__assign_value_from_stack@Base 15 ++ __gg__atan@Base 15 ++ __gg__binary_to_string@Base 15 ++ __gg__binary_to_string_internal@Base 15 ++ __gg__binary_value_from_field@Base 15 ++ __gg__binary_value_from_qualified_field@Base 15 ++ __gg__bitop@Base 15 ++ __gg__bitwise_op@Base 15 ++ __gg__byte_length@Base 15 ++ __gg__call_parameter_count@Base 15 ++ __gg__call_parameter_lengths@Base 15 ++ __gg__call_parameter_signature@Base 15 ++ __gg__char@Base 15 ++ __gg__check_fatal_exception@Base 15 ++ __gg__classify@Base 15 ++ __gg__clear_exception@Base 15 ++ __gg__clock_gettime@Base 15 ++ __gg__codeset_figurative_constants@Base 15 ++ __gg__combined_datetime@Base 15 ++ __gg__compare@Base 15 ++ __gg__compare_2@Base 15 ++ __gg__concat@Base 15 ++ __gg__console_to_ascii@Base 15 ++ __gg__console_to_ebcdic@Base 15 ++ __gg__console_to_internal@Base 15 ++ __gg__console_to_internal_cm@Base 15 ++ __gg__copy_as_big_endian@Base 15 ++ __gg__cos@Base 15 ++ __gg__cp1140_to_cp1252_values@Base 15 ++ __gg__cp1252_to_cp1140_values@Base 15 ++ __gg__cp1252_to_ebcdic_collation@Base 15 ++ __gg__ct_currency_signs@Base 15 ++ __gg__currency_sign@Base 15 ++ __gg__currency_sign_init@Base 15 ++ __gg__currency_signs@Base 15 ++ __gg__current_date@Base 15 ++ __gg__data__file_status@Base 15 ++ __gg__data_high_values@Base 15 ++ __gg__data_linage_counter@Base 15 ++ __gg__data_low_values@Base 15 ++ __gg__data_nulls@Base 15 ++ __gg__data_quotes@Base 15 ++ __gg__data_return_code@Base 15 ++ __gg__data_space@Base 15 ++ __gg__data_upsi_0@Base 15 ++ __gg__data_zeros@Base 15 ++ __gg__date_of_integer@Base 15 ++ __gg__date_to_yyyymmdd@Base 15 ++ __gg__day_of_integer@Base 15 ++ __gg__day_to_yyyyddd@Base 15 ++ __gg__deallocate@Base 15 ++ __gg__decimal_point@Base 15 ++ __gg__decimal_point_is_comma@Base 15 ++ __gg__decimal_separator@Base 15 ++ __gg__default_compute_error@Base 15 ++ __gg__default_currency_sign@Base 15 ++ __gg__dirty_to_binary_internal@Base 15 ++ __gg__dirty_to_binary_source@Base 15 ++ __gg__dirty_to_float@Base 15 ++ __gg__display@Base 15 ++ __gg__display_clean@Base 15 ++ __gg__display_int128@Base 15 ++ __gg__display_string@Base 15 ++ __gg__dividef1_phase2@Base 15 ++ __gg__dividef23@Base 15 ++ __gg__dividef45@Base 15 ++ __gg__double_to_target@Base 15 ++ __gg__e@Base 15 ++ __gg__ebcdic_codeset_in_use@Base 15 ++ __gg__ebcdic_to_ascii@Base 15 ++ __gg__ebcdic_to_console@Base 15 ++ __gg__ebcdic_to_cp1252_collation@Base 15 ++ __gg__entry_location@Base 15 ++ __gg__exception_code@Base 15 ++ __gg__exception_file_name@Base 15 ++ __gg__exception_file_status@Base 15 ++ __gg__exception_line_number@Base 15 ++ __gg__exception_paragraph@Base 15 ++ __gg__exception_pop@Base 15 ++ __gg__exception_program_id@Base 15 ++ __gg__exception_push@Base 15 ++ __gg__exception_section@Base 15 ++ __gg__exception_source_file@Base 15 ++ __gg__exception_statement@Base 15 ++ __gg__exception_table@Base 15 ++ __gg__exception_table_end@Base 15 ++ __gg__exit_address@Base 15 ++ __gg__exp10@Base 15 ++ __gg__exp@Base 15 ++ __gg__factorial@Base 15 ++ __gg__fetch_call_by_value_value@Base 15 ++ __gg__file_close@Base 15 ++ __gg__file_delete@Base 15 ++ __gg__file_init@Base 15 ++ __gg__file_open@Base 15 ++ __gg__file_read@Base 15 ++ __gg__file_reopen@Base 15 ++ __gg__file_rewrite@Base 15 ++ __gg__file_sort_ff_input@Base 15 ++ __gg__file_sort_ff_output@Base 15 ++ __gg__file_start@Base 15 ++ __gg__file_stash@Base 15 ++ __gg__file_status_word@Base 15 ++ __gg__file_write@Base 15 ++ __gg__fixed_phase2_assign_to_c@Base 15 ++ __gg__float128_from_field@Base 15 ++ __gg__float128_from_int128@Base 15 ++ __gg__float128_from_location@Base 15 ++ __gg__float128_from_qualified_field@Base 15 ++ __gg__float128_to_field@Base 15 ++ __gg__float128_to_qualified_field@Base 15 ++ __gg__float32_from_128@Base 15 ++ __gg__float32_from_64@Base 15 ++ __gg__float32_from_int128@Base 15 ++ __gg__float64_from_128@Base 15 ++ __gg__float64_from_int128@Base 15 ++ __gg__float_phase2_assign_to_c@Base 15 ++ __gg__formatted_current_date@Base 15 ++ __gg__formatted_date@Base 15 ++ __gg__formatted_datetime@Base 15 ++ __gg__formatted_time@Base 15 ++ __gg__fourplet_flags@Base 15 ++ __gg__fourplet_flags_size@Base 15 ++ __gg__fprintf_stderr@Base 15 ++ __gg__fraction_part@Base 15 ++ __gg__func_exception_file@Base 15 ++ __gg__func_exception_location@Base 15 ++ __gg__func_exception_statement@Base 15 ++ __gg__func_exception_status@Base 15 ++ __gg__function_handle_from_cobpath@Base 15 ++ __gg__function_handle_from_literal@Base 15 ++ __gg__function_handle_from_name@Base 15 ++ __gg__get_argc@Base 15 ++ __gg__get_argv@Base 15 ++ __gg__get_command_line@Base 15 ++ __gg__get_date_dow@Base 15 ++ __gg__get_date_hhmmssff@Base 15 ++ __gg__get_date_yyddd@Base 15 ++ __gg__get_date_yymmdd@Base 15 ++ __gg__get_date_yyyymmdd@Base 15 ++ __gg__get_decimal_point@Base 15 ++ __gg__get_decimal_separator@Base 15 ++ __gg__get_default_currency_string@Base 15 ++ __gg__get_env_name@Base 15 ++ __gg__get_env_value@Base 15 ++ __gg__get_figconst_data@Base 15 ++ __gg__get_file_descriptor@Base 15 ++ __gg__get_integer_binary_value@Base 15 ++ __gg__get_yyyyddd@Base 15 ++ __gg__globals_are_initialized@Base 15 ++ __gg__handle_error@Base 15 ++ __gg__hex_of@Base 15 ++ __gg__high_value_character@Base 15 ++ __gg__high_values@Base 15 ++ __gg__highest_algebraic@Base 15 ++ __gg__init_program_state@Base 15 ++ __gg__initialize_variable@Base 15 ++ __gg__initialize_variable_clean@Base 15 ++ __gg__inspect_format_1@Base 15 ++ __gg__inspect_format_2@Base 15 ++ __gg__inspect_format_4@Base 15 ++ __gg__int128_to_field@Base 15 ++ __gg__int128_to_qualified_field@Base 15 ++ __gg__integer@Base 15 ++ __gg__integer_from_float128@Base 15 ++ __gg__integer_from_qualified_field@Base 15 ++ __gg__integer_of_date@Base 15 ++ __gg__integer_of_day@Base 15 ++ __gg__integer_of_formatted_date@Base 15 ++ __gg__integer_part@Base 15 ++ __gg__internal_codeset_map@Base 15 ++ __gg__internal_to_ascii@Base 15 ++ __gg__internal_to_console_cm@Base 15 ++ __gg__internal_to_console_in_place@Base 15 ++ __gg__is_canceled@Base 15 ++ __gg__is_float_infinite@Base 15 ++ __gg__just_mangle_name@Base 15 ++ __gg__literaln_alpha_compare@Base 15 ++ __gg__locale_compare@Base 15 ++ __gg__locale_date@Base 15 ++ __gg__locale_time@Base 15 ++ __gg__locale_time_from_seconds@Base 15 ++ __gg__log10@Base 15 ++ __gg__log@Base 15 ++ __gg__low_value_character@Base 15 ++ __gg__low_values@Base 15 ++ __gg__lower_case@Base 15 ++ __gg__lowest_algebraic@Base 15 ++ __gg__main_called@Base 15 ++ __gg__match_exception@Base 15 ++ __gg__max@Base 15 ++ __gg__mean@Base 15 ++ __gg__median@Base 15 ++ __gg__merge_files@Base 15 ++ __gg__midrange@Base 15 ++ __gg__min@Base 15 ++ __gg__mirror_range@Base 15 ++ __gg__mod@Base 15 ++ __gg__module_name@Base 15 ++ __gg__module_name_pop@Base 15 ++ __gg__module_name_push@Base 15 ++ __gg__move@Base 15 ++ __gg__move_literala@Base 15 ++ __gg__multiplyf1_phase1@Base 15 ++ __gg__multiplyf1_phase2@Base 15 ++ __gg__multiplyf2@Base 15 ++ __gg__nop@Base 15 ++ __gg__nulls@Base 15 ++ __gg__numval@Base 15 ++ __gg__numval_c@Base 15 ++ __gg__numval_f@Base 15 ++ __gg__one_to_one_values@Base 15 ++ __gg__ord@Base 15 ++ __gg__ord_max@Base 15 ++ __gg__ord_min@Base 15 ++ __gg__parser_set_conditional@Base 15 ++ __gg__pi@Base 15 ++ __gg__pop_local_variables@Base 15 ++ __gg__pop_program_state@Base 15 ++ __gg__pow@Base 15 ++ __gg__power_of_ten@Base 15 ++ __gg__present_value@Base 15 ++ __gg__process_compute_error@Base 15 ++ __gg__pseudo_return_bookmark@Base 15 ++ __gg__pseudo_return_flush@Base 15 ++ __gg__pseudo_return_pop@Base 15 ++ __gg__pseudo_return_push@Base 15 ++ __gg__psz_to_alpha_move@Base 15 ++ __gg__push_local_variable@Base 15 ++ __gg__push_program_state@Base 15 ++ __gg__quote_character@Base 15 ++ __gg__quotes@Base 15 ++ __gg__random@Base 15 ++ __gg__random_next@Base 15 ++ __gg__range@Base 15 ++ __gg__raw_to_ascii@Base 15 ++ __gg__raw_to_ebcdic@Base 15 ++ __gg__raw_to_internal@Base 15 ++ __gg__rdigits@Base 15 ++ __gg__realloc_if_necessary@Base 15 ++ __gg__rem@Base 15 ++ __gg__remove_trailing_zeroes@Base 15 ++ __gg__resize_int_p@Base 15 ++ __gg__resize_treeplet@Base 15 ++ __gg__return_code@Base 15 ++ __gg__reverse@Base 15 ++ __gg__routine_to_call@Base 15 ++ __gg__scale_by_power_of_ten_1@Base 15 ++ __gg__scale_by_power_of_ten_2@Base 15 ++ __gg__seconds_from_formatted_time@Base 15 ++ __gg__seconds_past_midnight@Base 15 ++ __gg__set_arg_num@Base 15 ++ __gg__set_env_name@Base 15 ++ __gg__set_env_value@Base 15 ++ __gg__set_envar@Base 15 ++ __gg__set_exception_code@Base 15 ++ __gg__set_exception_environment@Base 15 ++ __gg__set_exception_file@Base 15 ++ __gg__set_initial_switch_value@Base 15 ++ __gg__set_internal_codeset@Base 15 ++ __gg__set_pointer@Base 15 ++ __gg__set_program_list@Base 15 ++ __gg__set_program_name@Base 15 ++ __gg__set_truncation_mode@Base 15 ++ __gg__set_user_status@Base 15 ++ __gg__setop_compare@Base 15 ++ __gg__sign@Base 15 ++ __gg__sin@Base 15 ++ __gg__sleep@Base 15 ++ __gg__sort_table@Base 15 ++ __gg__sort_workfile@Base 15 ++ __gg__space@Base 15 ++ __gg__spaces@Base 15 ++ __gg__sqrt@Base 15 ++ __gg__standard_deviation@Base 15 ++ __gg__stash_argc_argv@Base 15 ++ __gg__string@Base 15 ++ __gg__string_to_alpha_edited@Base 15 ++ __gg__string_to_alpha_edited_ascii@Base 15 ++ __gg__string_to_numeric_edited@Base 15 ++ __gg__substitute@Base 15 ++ __gg__subtractf1_fixed_phase2@Base 15 ++ __gg__subtractf1_float_phase2@Base 15 ++ __gg__subtractf2_fixed_phase1@Base 15 ++ __gg__subtractf2_float_phase1@Base 15 ++ __gg__subtractf3@Base 15 ++ __gg__sum@Base 15 ++ __gg__tan@Base 15 ++ __gg__test_date_yyyymmdd@Base 15 ++ __gg__test_day_yyyyddd@Base 15 ++ __gg__test_formatted_datetime@Base 15 ++ __gg__test_numval@Base 15 ++ __gg__test_numval_c@Base 15 ++ __gg__test_numval_f@Base 15 ++ __gg__text_conversion_override@Base 15 ++ __gg__to_be_canceled@Base 15 ++ __gg__treeplet_1f@Base 15 ++ __gg__treeplet_1o@Base 15 ++ __gg__treeplet_1s@Base 15 ++ __gg__treeplet_2f@Base 15 ++ __gg__treeplet_2o@Base 15 ++ __gg__treeplet_2s@Base 15 ++ __gg__treeplet_3f@Base 15 ++ __gg__treeplet_3o@Base 15 ++ __gg__treeplet_3s@Base 15 ++ __gg__treeplet_4f@Base 15 ++ __gg__treeplet_4o@Base 15 ++ __gg__treeplet_4s@Base 15 ++ __gg__trim@Base 15 ++ __gg__unique_prog_id@Base 15 ++ __gg__unstring@Base 15 ++ __gg__upper_case@Base 15 ++ __gg__upsi@Base 15 ++ __gg__variables_to_init@Base 15 ++ __gg__variance@Base 15 ++ __gg__when_compiled@Base 15 ++ __gg__year_to_yyyy@Base 15 ++ __gg__zeros@Base 15 ++ _from_ctype@Base 15 ++ _to_ctype@Base 15 diff --cc debian/libgdiagnostics0.symbols index 0000000,0000000..7b2059b new file mode 100644 --- /dev/null +++ b/debian/libgdiagnostics0.symbols @@@ -1,0 -1,0 +1,2 @@@ ++libgdiagnostics.so.0 #PACKAGE# #MINVER# ++ (symver)LIBGDIAGNOSTICS_ABI_0 15 diff --cc debian/libgfortran.symbols index 0000000,0000000..27d5dfb new file mode 100644 --- /dev/null +++ b/debian/libgfortran.symbols @@@ -1,0 -1,0 +1,13 @@@ ++libgfortran.so.5 #PACKAGE# #MINVER# ++ (symver)GFORTRAN_8 8 ++ (symver)GFORTRAN_9 9 ++ (symver)GFORTRAN_9.2 9.1 ++ (symver)GFORTRAN_10 10 ++ (symver)GFORTRAN_10.2 10.2 ++ (symver)GFORTRAN_12 11.2 ++ (symver)GFORTRAN_13 13 ++ (symver)GFORTRAN_14 15 ++ (symver)GFORTRAN_15 15 ++ (symver)GFORTRAN_15.2 15.2 ++ (symver)GFORTRAN_C99_8 8 ++ (symver)GFORTRAN_F2C_8 8 diff --cc debian/libgm2.symbols index 0000000,0000000..39758b6 new file mode 100644 --- /dev/null +++ b/debian/libgm2.symbols @@@ -1,0 -1,0 +1,1644 @@@ ++libm2cor.so.19 #PACKAGE# #MINVER# ++ Debug_DebugString@Base 10 ++ Debug_Halt@Base 10 ++ Debug_PushOutput@Base 10 ++ Executive_DebugProcess@Base 10 ++ Executive_GetCurrentProcess@Base 10 ++ Executive_InitProcess@Base 10 ++ Executive_InitSemaphore@Base 10 ++ Executive_KillProcess@Base 10 ++ Executive_ProcessName@Base 10 ++ Executive_Ps@Base 10 ++ Executive_Resume@Base 10 ++ Executive_RotateRunQueue@Base 10 ++ Executive_Signal@Base 10 ++ Executive_Suspend@Base 10 ++ Executive_Wait@Base 10 ++ Executive_WaitForIO@Base 10 ++ KeyBoardLEDs_SwitchCaps@Base 10 ++ KeyBoardLEDs_SwitchLeds@Base 10 ++ KeyBoardLEDs_SwitchNum@Base 10 ++ KeyBoardLEDs_SwitchScroll@Base 10 ++ SYSTEM_IOTRANSFER@Base 10 ++ SYSTEM_LISTEN@Base 10 ++ SYSTEM_ListenLoop@Base 10 ++ SYSTEM_NEWPROCESS@Base 10 ++ SYSTEM_RotateLeft@Base 10 ++ SYSTEM_RotateRight@Base 10 ++ SYSTEM_RotateVal@Base 10 ++ SYSTEM_ShiftLeft@Base 10 ++ SYSTEM_ShiftRight@Base 10 ++ SYSTEM_ShiftVal@Base 10 ++ SYSTEM_TRANSFER@Base 10 ++ SYSTEM_TurnInterrupts@Base 10 ++ TimerHandler_ArmEvent@Base 10 ++ TimerHandler_Cancel@Base 10 ++ TimerHandler_GetTicks@Base 10 ++ TimerHandler_ReArmEvent@Base 10 ++ TimerHandler_Sleep@Base 10 ++ TimerHandler_WaitOn@Base 10 ++ _M2_Debug_finish@Base 10 ++ _M2_Debug_init@Base 10 ++ _M2_Executive_finish@Base 10 ++ _M2_Executive_init@Base 10 ++ _M2_KeyBoardLEDs_finish@Base 10 ++ _M2_KeyBoardLEDs_init@Base 10 ++ _M2_SYSTEM_finish@Base 10 ++ _M2_SYSTEM_init@Base 10 ++ _M2_TimerHandler_finish@Base 10 ++ _M2_TimerHandler_init@Base 10 ++libm2iso.so.18 #PACKAGE# #MINVER# ++ COROUTINES_ATTACH@Base 10 ++ COROUTINES_CURRENT@Base 10 ++ COROUTINES_DETACH@Base 10 ++ COROUTINES_HANDLER@Base 10 ++ COROUTINES_IOTRANSFER@Base 10 ++ COROUTINES_IsATTACHED@Base 10 ++ COROUTINES_LISTEN@Base 10 ++ COROUTINES_NEWCOROUTINE@Base 10 ++ COROUTINES_PROT@Base 10 ++ COROUTINES_TRANSFER@Base 10 ++ COROUTINES_TurnInterrupts@Base 10 ++ CharClass_IsControl@Base 10 ++ CharClass_IsLetter@Base 10 ++ CharClass_IsLower@Base 10 ++ CharClass_IsNumeric@Base 10 ++ CharClass_IsUpper@Base 10 ++ CharClass_IsWhiteSpace@Base 10 ++ ClientSocket_Close@Base 10 ++ ClientSocket_IsSocket@Base 10 ++ ClientSocket_OpenSocket@Base 10 ++ ComplexMath_IsCMathException@Base 10 ++ ComplexMath_abs@Base 10 ++ ComplexMath_arccos@Base 10 ++ ComplexMath_arcsin@Base 10 ++ ComplexMath_arctan@Base 10 ++ ComplexMath_arg@Base 10 ++ ComplexMath_conj@Base 10 ++ ComplexMath_cos@Base 10 ++ ComplexMath_exp@Base 10 ++ ComplexMath_ln@Base 10 ++ ComplexMath_polarToComplex@Base 10 ++ ComplexMath_power@Base 10 ++ ComplexMath_scalarMult@Base 10 ++ ComplexMath_sin@Base 10 ++ ComplexMath_sqrt@Base 10 ++ ComplexMath_tan@Base 10 ++ ConvStringLong_RealToEngString@Base 10 ++ ConvStringLong_RealToFixedString@Base 10 ++ ConvStringLong_RealToFloatString@Base 10 ++ ConvStringReal_RealToEngString@Base 10 ++ ConvStringReal_RealToFixedString@Base 10 ++ ConvStringReal_RealToFloatString@Base 10 ++ EXCEPTIONS_AllocateSource@Base 10 ++ EXCEPTIONS_CurrentNumber@Base 10 ++ EXCEPTIONS_GetMessage@Base 10 ++ EXCEPTIONS_IsCurrentSource@Base 10 ++ EXCEPTIONS_IsExceptionalExecution@Base 10 ++ EXCEPTIONS_RAISE@Base 10 ++ ErrnoCategory_GetOpenResults@Base 10 ++ ErrnoCategory_IsErrnoHard@Base 10 ++ ErrnoCategory_IsErrnoSoft@Base 10 ++ ErrnoCategory_UnAvailable@Base 10 ++ GeneralUserExceptions_GeneralException@Base 10 ++ GeneralUserExceptions_IsGeneralException@Base 10 ++ GeneralUserExceptions_RaiseGeneralException@Base 10 ++ IOChan_ChanException@Base 10 ++ IOChan_CurrentFlags@Base 10 ++ IOChan_DeviceError@Base 10 ++ IOChan_Flush@Base 10 ++ IOChan_GetName@Base 10 ++ IOChan_InvalidChan@Base 10 ++ IOChan_IsChanException@Base 10 ++ IOChan_Look@Base 10 ++ IOChan_RawRead@Base 10 ++ IOChan_RawWrite@Base 10 ++ IOChan_ReadResult@Base 10 ++ IOChan_Reset@Base 10 ++ IOChan_SetReadResult@Base 10 ++ IOChan_Skip@Base 10 ++ IOChan_SkipLook@Base 10 ++ IOChan_TextRead@Base 10 ++ IOChan_TextWrite@Base 10 ++ IOChan_WriteLn@Base 10 ++ IOLink_AllocateDeviceId@Base 10 ++ IOLink_DeviceTablePtrValue@Base 10 ++ IOLink_IOException@Base 10 ++ IOLink_IsDevice@Base 10 ++ IOLink_IsIOException@Base 10 ++ IOLink_MakeChan@Base 10 ++ IOLink_RAISEdevException@Base 10 ++ IOLink_UnMakeChan@Base 10 ++ IOResult_ReadResult@Base 10 ++ LongComplexMath_IsCMathException@Base 10 ++ LongComplexMath_abs@Base 10 ++ LongComplexMath_arccos@Base 10 ++ LongComplexMath_arcsin@Base 10 ++ LongComplexMath_arctan@Base 10 ++ LongComplexMath_arg@Base 10 ++ LongComplexMath_conj@Base 10 ++ LongComplexMath_cos@Base 10 ++ LongComplexMath_exp@Base 10 ++ LongComplexMath_ln@Base 10 ++ LongComplexMath_polarToComplex@Base 10 ++ LongComplexMath_power@Base 10 ++ LongComplexMath_scalarMult@Base 10 ++ LongComplexMath_sin@Base 10 ++ LongComplexMath_sqrt@Base 10 ++ LongComplexMath_tan@Base 10 ++ LongConv_FormatReal@Base 10 ++ LongConv_IsRConvException@Base 10 ++ LongConv_LengthEngReal@Base 10 ++ LongConv_LengthFixedReal@Base 10 ++ LongConv_LengthFloatReal@Base 10 ++ LongConv_ScanReal@Base 10 ++ LongConv_ValueReal@Base 10 ++ LongIO_ReadReal@Base 10 ++ LongIO_WriteEng@Base 10 ++ LongIO_WriteFixed@Base 10 ++ LongIO_WriteFloat@Base 10 ++ LongIO_WriteReal@Base 10 ++ LongMath_IsRMathException@Base 10 ++ LongMath_arccos@Base 10 ++ LongMath_arcsin@Base 10 ++ LongMath_arctan@Base 10 ++ LongMath_cos@Base 10 ++ LongMath_exp@Base 10 ++ LongMath_ln@Base 10 ++ LongMath_power@Base 10 ++ LongMath_round@Base 10 ++ LongMath_sin@Base 10 ++ LongMath_sqrt@Base 10 ++ LongMath_tan@Base 10 ++ LongStr_RealToEng@Base 10 ++ LongStr_RealToFixed@Base 10 ++ LongStr_RealToFloat@Base 10 ++ LongStr_RealToStr@Base 10 ++ LongStr_StrToReal@Base 10 ++ LongWholeIO_ReadCard@Base 10 ++ LongWholeIO_ReadInt@Base 10 ++ LongWholeIO_WriteCard@Base 10 ++ LongWholeIO_WriteInt@Base 10 ++ LowLong_IsLowException@Base 10 ++ LowLong_currentMode@Base 10 ++ LowLong_exponent@Base 10 ++ LowLong_fraction@Base 10 ++ LowLong_fractpart@Base 10 ++ LowLong_intpart@Base 10 ++ LowLong_pred@Base 10 ++ LowLong_round@Base 10 ++ LowLong_scale@Base 10 ++ LowLong_setMode@Base 10 ++ LowLong_sign@Base 10 ++ LowLong_succ@Base 10 ++ LowLong_synthesize@Base 10 ++ LowLong_trunc@Base 10 ++ LowLong_ulp@Base 10 ++ LowReal_IsLowException@Base 10 ++ LowReal_currentMode@Base 10 ++ LowReal_exponent@Base 10 ++ LowReal_fraction@Base 10 ++ LowReal_fractpart@Base 10 ++ LowReal_intpart@Base 10 ++ LowReal_pred@Base 10 ++ LowReal_round@Base 10 ++ LowReal_scale@Base 10 ++ LowReal_setMode@Base 10 ++ LowReal_sign@Base 10 ++ LowReal_succ@Base 10 ++ LowReal_synthesize@Base 10 ++ LowReal_trunc@Base 10 ++ LowReal_ulp@Base 10 ++ LowShort_IsLowException@Base 10 ++ LowShort_currentMode@Base 10 ++ LowShort_exponent@Base 10 ++ LowShort_fraction@Base 10 ++ LowShort_fractpart@Base 10 ++ LowShort_intpart@Base 10 ++ LowShort_pred@Base 10 ++ LowShort_round@Base 10 ++ LowShort_scale@Base 10 ++ LowShort_setMode@Base 10 ++ LowShort_sign@Base 10 ++ LowShort_succ@Base 10 ++ LowShort_synthesize@Base 10 ++ LowShort_trunc@Base 10 ++ LowShort_ulp@Base 10 ++ M2EXCEPTION_IsM2Exception@Base 10 ++ M2EXCEPTION_M2Exception@Base 10 ++ M2RTS_AssignmentException@Base 10 ++ M2RTS_CaseException@Base 10 ++ M2RTS_DecException@Base 10 ++ M2RTS_DynamicArraySubscriptException@Base 10 ++ M2RTS_ErrorMessage@Base 10 ++ M2RTS_ExclException@Base 10 ++ M2RTS_ExecuteInitialProcedures@Base 10 ++ M2RTS_ExecuteTerminationProcedures@Base 10 ++ M2RTS_ExitOnHalt@Base 10 ++ M2RTS_ForLoopBeginException@Base 10 ++ M2RTS_ForLoopEndException@Base 10 ++ M2RTS_ForLoopToException@Base 10 ++ M2RTS_HALT@Base 10 ++ M2RTS_Halt@Base 10 ++ M2RTS_HasHalted@Base 10 ++ M2RTS_IncException@Base 10 ++ M2RTS_InclException@Base 10 ++ M2RTS_InstallInitialProcedure@Base 10 ++ M2RTS_InstallTerminationProcedure@Base 10 ++ M2RTS_IsTerminating@Base 10 ++ M2RTS_Length@Base 10 ++ M2RTS_NoException@Base 10 ++ M2RTS_NoReturnException@Base 10 ++ M2RTS_ParameterException@Base 10 ++ M2RTS_PointerNilException@Base 10 ++ M2RTS_RealValueException@Base 10 ++ M2RTS_ReturnException@Base 10 ++ M2RTS_RotateException@Base 10 ++ M2RTS_ShiftException@Base 10 ++ M2RTS_StaticArraySubscriptException@Base 10 ++ M2RTS_WholeNonPosDivException@Base 10 ++ M2RTS_WholeNonPosModException@Base 10 ++ M2RTS_WholeValueException@Base 10 ++ M2RTS_WholeZeroDivException@Base 10 ++ M2RTS_WholeZeroRemException@Base 10 ++ MemStream_Close@Base 10 ++ MemStream_IsMem@Base 10 ++ MemStream_OpenRead@Base 10 ++ MemStream_OpenWrite@Base 10 ++ MemStream_Reread@Base 10 ++ MemStream_Rewrite@Base 10 ++ Processes_Activate@Base 10 ++ Processes_Attach@Base 10 ++ Processes_Create@Base 10 ++ Processes_Detach@Base 10 ++ Processes_Handler@Base 10 ++ Processes_IsAttached@Base 10 ++ Processes_IsProcessesException@Base 10 ++ Processes_Me@Base 10 ++ Processes_MyParam@Base 10 ++ Processes_ProcessesException@Base 10 ++ Processes_Start@Base 10 ++ Processes_StopMe@Base 10 ++ Processes_SuspendMe@Base 10 ++ Processes_SuspendMeAndActivate@Base 10 ++ Processes_Switch@Base 10 ++ Processes_UrgencyOf@Base 10 ++ Processes_Wait@Base 10 ++ ProgramArgs_ArgChan@Base 10 ++ ProgramArgs_IsArgPresent@Base 10 ++ ProgramArgs_NextArg@Base 10 ++ RTco_currentInterruptLevel@Base 10 ++ RTco_currentThread@Base 10 ++ RTco_init@Base 10 ++ RTco_initSemaphore@Base 10 ++ RTco_initThread@Base 10 ++ RTco_select@Base 10 ++ RTco_signal@Base 10 ++ RTco_signalThread@Base 10 ++ RTco_transfer@Base 10 ++ RTco_turnInterrupts@Base 10 ++ RTco_wait@Base 10 ++ RTco_waitThread@Base 10 ++ RTdata_GetData@Base 10 ++ RTdata_InitData@Base 10 ++ RTdata_KillData@Base 10 ++ RTdata_MakeModuleId@Base 10 ++ RTentity_DelKey@Base 10 ++ RTentity_GetKey@Base 10 ++ RTentity_InitGroup@Base 10 ++ RTentity_IsIn@Base 10 ++ RTentity_KillGroup@Base 10 ++ RTentity_PutKey@Base 10 ++ RTfio_dogeterrno@Base 10 ++ RTfio_dorbytes@Base 10 ++ RTfio_doreadchar@Base 10 ++ RTfio_dounreadchar@Base 10 ++ RTfio_dowbytes@Base 10 ++ RTfio_dowriteln@Base 10 ++ RTfio_iseof@Base 10 ++ RTfio_iseoln@Base 10 ++ RTfio_iserror@Base 10 ++ RTgen_InitChanDev@Base 10 ++ RTgen_KillChanDev@Base 10 ++ RTgen_RaiseEOFinLook@Base 10 ++ RTgen_RaiseEOFinSkip@Base 10 ++ RTgen_checkErrno@Base 10 ++ RTgen_doLook@Base 10 ++ RTgen_doReadLocs@Base 10 ++ RTgen_doReadText@Base 10 ++ RTgen_doSkip@Base 10 ++ RTgen_doSkipLook@Base 10 ++ RTgen_doWriteLn@Base 10 ++ RTgen_doWriteLocs@Base 10 ++ RTgen_doWriteText@Base 10 ++ RTgenif_InitGenDevIF@Base 10 ++ RTgenif_KillGenDevIF@Base 10 ++ RTgenif_doGetErrno@Base 10 ++ RTgenif_doRBytes@Base 10 ++ RTgenif_doReadChar@Base 10 ++ RTgenif_doUnReadChar@Base 10 ++ RTgenif_doWBytes@Base 10 ++ RTgenif_doWrLn@Base 10 ++ RTgenif_getDID@Base 10 ++ RTgenif_isEOF@Base 10 ++ RTgenif_isEOLN@Base 10 ++ RTgenif_isError@Base 10 ++ RTio_GetDeviceId@Base 10 ++ RTio_GetDevicePtr@Base 10 ++ RTio_GetFile@Base 10 ++ RTio_InitChanId@Base 10 ++ RTio_KillChanId@Base 10 ++ RTio_NilChanId@Base 10 ++ RTio_SetDeviceId@Base 10 ++ RTio_SetDevicePtr@Base 10 ++ RTio_SetFile@Base 10 ++ RandomNumber_RandomBytes@Base 10 ++ RandomNumber_RandomCard@Base 10 ++ RandomNumber_RandomInit@Base 10 ++ RandomNumber_RandomInt@Base 10 ++ RandomNumber_RandomLongCard@Base 10 ++ RandomNumber_RandomLongInt@Base 10 ++ RandomNumber_RandomLongReal@Base 10 ++ RandomNumber_RandomReal@Base 10 ++ RandomNumber_RandomShortCard@Base 10 ++ RandomNumber_RandomShortInt@Base 10 ++ RandomNumber_RandomShortReal@Base 10 ++ RandomNumber_Randomize@Base 10 ++ RawIO_Read@Base 10 ++ RawIO_Write@Base 10 ++ RealConv_FormatReal@Base 10 ++ RealConv_IsRConvException@Base 10 ++ RealConv_LengthEngReal@Base 10 ++ RealConv_LengthFixedReal@Base 10 ++ RealConv_LengthFloatReal@Base 10 ++ RealConv_ScanReal@Base 10 ++ RealConv_ValueReal@Base 10 ++ RealIO_ReadReal@Base 10 ++ RealIO_WriteEng@Base 10 ++ RealIO_WriteFixed@Base 10 ++ RealIO_WriteFloat@Base 10 ++ RealIO_WriteReal@Base 10 ++ RealMath_IsRMathException@Base 10 ++ RealMath_arccos@Base 10 ++ RealMath_arcsin@Base 10 ++ RealMath_arctan@Base 10 ++ RealMath_cos@Base 10 ++ RealMath_exp@Base 10 ++ RealMath_ln@Base 10 ++ RealMath_power@Base 10 ++ RealMath_round@Base 10 ++ RealMath_sin@Base 10 ++ RealMath_sqrt@Base 10 ++ RealMath_tan@Base 10 ++ RealStr_RealToEng@Base 10 ++ RealStr_RealToFixed@Base 10 ++ RealStr_RealToFloat@Base 10 ++ RealStr_RealToStr@Base 10 ++ RealStr_StrToReal@Base 10 ++ RndFile_Close@Base 10 ++ RndFile_CurrentPos@Base 10 ++ RndFile_EndPos@Base 10 ++ RndFile_IsRndFile@Base 10 ++ RndFile_IsRndFileException@Base 10 ++ RndFile_NewPos@Base 10 ++ RndFile_OpenClean@Base 10 ++ RndFile_OpenOld@Base 10 ++ RndFile_SetPos@Base 10 ++ RndFile_StartPos@Base 10 ++ SIOResult_ReadResult@Base 10 ++ SLongIO_ReadReal@Base 10 ++ SLongIO_WriteEng@Base 10 ++ SLongIO_WriteFixed@Base 10 ++ SLongIO_WriteFloat@Base 10 ++ SLongIO_WriteReal@Base 10 ++ SLongWholeIO_ReadCard@Base 10 ++ SLongWholeIO_ReadInt@Base 10 ++ SLongWholeIO_WriteCard@Base 10 ++ SLongWholeIO_WriteInt@Base 10 ++ SRawIO_Read@Base 10 ++ SRawIO_Write@Base 10 ++ SRealIO_ReadReal@Base 10 ++ SRealIO_WriteEng@Base 10 ++ SRealIO_WriteFixed@Base 10 ++ SRealIO_WriteFloat@Base 10 ++ SRealIO_WriteReal@Base 10 ++ SShortIO_ReadReal@Base 10 ++ SShortIO_WriteEng@Base 10 ++ SShortIO_WriteFixed@Base 10 ++ SShortIO_WriteFloat@Base 10 ++ SShortIO_WriteReal@Base 10 ++ SShortWholeIO_ReadCard@Base 10 ++ SShortWholeIO_ReadInt@Base 10 ++ SShortWholeIO_WriteCard@Base 10 ++ SShortWholeIO_WriteInt@Base 10 ++ STextIO_ReadChar@Base 10 ++ STextIO_ReadRestLine@Base 10 ++ STextIO_ReadString@Base 10 ++ STextIO_ReadToken@Base 10 ++ STextIO_SkipLine@Base 10 ++ STextIO_WriteChar@Base 10 ++ STextIO_WriteLn@Base 10 ++ STextIO_WriteString@Base 10 ++ SWholeIO_ReadCard@Base 10 ++ SWholeIO_ReadInt@Base 10 ++ SWholeIO_WriteCard@Base 10 ++ SWholeIO_WriteInt@Base 10 ++ SYSTEM_RotateLeft@Base 10 ++ SYSTEM_RotateRight@Base 10 ++ SYSTEM_RotateVal@Base 10 ++ SYSTEM_ShiftLeft@Base 10 ++ SYSTEM_ShiftRight@Base 10 ++ SYSTEM_ShiftVal@Base 10 ++ Semaphores_Claim@Base 10 ++ Semaphores_CondClaim@Base 10 ++ Semaphores_Create@Base 10 ++ Semaphores_Destroy@Base 10 ++ Semaphores_Release@Base 10 ++ SeqFile_Close@Base 10 ++ SeqFile_IsSeqFile@Base 10 ++ SeqFile_OpenAppend@Base 10 ++ SeqFile_OpenRead@Base 10 ++ SeqFile_OpenWrite@Base 10 ++ SeqFile_Reread@Base 10 ++ SeqFile_Rewrite@Base 10 ++ ServerSocket_Close@Base 10 ++ ServerSocket_IsSocket@Base 10 ++ ServerSocket_OpenAccept@Base 10 ++ ServerSocket_OpenSocketBindListen@Base 10 ++ ShortComplexMath_IsCMathException@Base 10 ++ ShortComplexMath_abs@Base 10 ++ ShortComplexMath_arccos@Base 10 ++ ShortComplexMath_arcsin@Base 10 ++ ShortComplexMath_arctan@Base 10 ++ ShortComplexMath_arg@Base 10 ++ ShortComplexMath_conj@Base 10 ++ ShortComplexMath_cos@Base 10 ++ ShortComplexMath_exp@Base 10 ++ ShortComplexMath_ln@Base 10 ++ ShortComplexMath_polarToComplex@Base 10 ++ ShortComplexMath_power@Base 10 ++ ShortComplexMath_scalarMult@Base 10 ++ ShortComplexMath_sin@Base 10 ++ ShortComplexMath_sqrt@Base 10 ++ ShortComplexMath_tan@Base 10 ++ ShortIO_ReadReal@Base 10 ++ ShortIO_WriteEng@Base 10 ++ ShortIO_WriteFixed@Base 10 ++ ShortIO_WriteFloat@Base 10 ++ ShortIO_WriteReal@Base 10 ++ ShortWholeIO_ReadCard@Base 10 ++ ShortWholeIO_ReadInt@Base 10 ++ ShortWholeIO_WriteCard@Base 10 ++ ShortWholeIO_WriteInt@Base 10 ++ SimpleCipher_InsertCipherLayer@Base 10 ++ SimpleCipher_RemoveCipherLayer@Base 10 ++ StdChans_ErrChan@Base 10 ++ StdChans_InChan@Base 10 ++ StdChans_NullChan@Base 10 ++ StdChans_OutChan@Base 10 ++ StdChans_SetErrChan@Base 10 ++ StdChans_SetInChan@Base 10 ++ StdChans_SetOutChan@Base 10 ++ StdChans_StdErrChan@Base 10 ++ StdChans_StdInChan@Base 10 ++ StdChans_StdOutChan@Base 10 ++ Storage_ALLOCATE@Base 10 ++ Storage_DEALLOCATE@Base 10 ++ Storage_IsStorageException@Base 10 ++ Storage_REALLOCATE@Base 10 ++ Storage_StorageException@Base 10 ++ StreamFile_Close@Base 10 ++ StreamFile_IsStreamFile@Base 10 ++ StreamFile_Open@Base 10 ++ StringChan_writeFieldWidth@Base 10 ++ StringChan_writeString@Base 10 ++ Strings_Append@Base 10 ++ Strings_Assign@Base 10 ++ Strings_CanAppendAll@Base 10 ++ Strings_CanAssignAll@Base 10 ++ Strings_CanConcatAll@Base 10 ++ Strings_CanDeleteAll@Base 10 ++ Strings_CanExtractAll@Base 10 ++ Strings_CanInsertAll@Base 10 ++ Strings_CanReplaceAll@Base 10 ++ Strings_Capitalize@Base 10 ++ Strings_Compare@Base 10 ++ Strings_Concat@Base 10 ++ Strings_Delete@Base 10 ++ Strings_Equal@Base 10 ++ Strings_Extract@Base 10 ++ Strings_FindDiff@Base 10 ++ Strings_FindNext@Base 10 ++ Strings_FindPrev@Base 10 ++ Strings_Insert@Base 10 ++ Strings_Length@Base 10 ++ Strings_Replace@Base 10 ++ SysClock_CanGetClock@Base 10 ++ SysClock_CanSetClock@Base 10 ++ SysClock_GetClock@Base 10 ++ SysClock_IsValidDateTime@Base 10 ++ SysClock_SetClock@Base 10 ++ TERMINATION_HasHalted@Base 10 ++ TERMINATION_IsTerminating@Base 10 ++ TermFile_Close@Base 10 ++ TermFile_IsTermFile@Base 10 ++ TermFile_Open@Base 10 ++ TextIO_ReadChar@Base 10 ++ TextIO_ReadRestLine@Base 10 ++ TextIO_ReadString@Base 10 ++ TextIO_ReadToken@Base 10 ++ TextIO_SkipLine@Base 10 ++ TextIO_WriteChar@Base 10 ++ TextIO_WriteLn@Base 10 ++ TextIO_WriteString@Base 10 ++ WholeConv_FormatCard@Base 10 ++ WholeConv_FormatInt@Base 10 ++ WholeConv_IsWholeConvException@Base 10 ++ WholeConv_LengthCard@Base 10 ++ WholeConv_LengthInt@Base 10 ++ WholeConv_ScanCard@Base 10 ++ WholeConv_ScanInt@Base 10 ++ WholeConv_ValueCard@Base 10 ++ WholeConv_ValueInt@Base 10 ++ WholeIO_ReadCard@Base 10 ++ WholeIO_ReadInt@Base 10 ++ WholeIO_WriteCard@Base 10 ++ WholeIO_WriteInt@Base 10 ++ WholeStr_CardToStr@Base 10 ++ WholeStr_IntToStr@Base 10 ++ WholeStr_StrToCard@Base 10 ++ WholeStr_StrToInt@Base 10 ++ _M2_COROUTINES_finish@Base 10 ++ _M2_COROUTINES_init@Base 10 ++ _M2_ChanConsts_finish@Base 10 ++ _M2_ChanConsts_init@Base 10 ++ _M2_CharClass_finish@Base 10 ++ _M2_CharClass_init@Base 10 ++ _M2_ClientSocket_finish@Base 10 ++ _M2_ClientSocket_init@Base 10 ++ _M2_ComplexMath_finish@Base 10 ++ _M2_ComplexMath_init@Base 10 ++ _M2_ConvStringLong_finish@Base 10 ++ _M2_ConvStringLong_init@Base 10 ++ _M2_ConvStringReal_finish@Base 10 ++ _M2_ConvStringReal_init@Base 10 ++ _M2_ConvTypes_finish@Base 10 ++ _M2_ConvTypes_init@Base 10 ++ _M2_EXCEPTIONS_finish@Base 10 ++ _M2_EXCEPTIONS_init@Base 10 ++ _M2_ErrnoCategory_finish@Base 10 ++ _M2_ErrnoCategory_init@Base 10 ++ _M2_GeneralUserExceptions_finish@Base 10 ++ _M2_GeneralUserExceptions_init@Base 10 ++ _M2_IOChan_finish@Base 10 ++ _M2_IOChan_init@Base 10 ++ _M2_IOConsts_finish@Base 10 ++ _M2_IOConsts_init@Base 10 ++ _M2_IOLink_finish@Base 10 ++ _M2_IOLink_init@Base 10 ++ _M2_IOResult_finish@Base 10 ++ _M2_IOResult_init@Base 10 ++ _M2_LongComplexMath_finish@Base 10 ++ _M2_LongComplexMath_init@Base 10 ++ _M2_LongConv_finish@Base 10 ++ _M2_LongConv_init@Base 10 ++ _M2_LongIO_finish@Base 10 ++ _M2_LongIO_init@Base 10 ++ _M2_LongMath_finish@Base 10 ++ _M2_LongMath_init@Base 10 ++ _M2_LongStr_finish@Base 10 ++ _M2_LongStr_init@Base 10 ++ _M2_LongWholeIO_finish@Base 10 ++ _M2_LongWholeIO_init@Base 10 ++ _M2_LowLong_finish@Base 10 ++ _M2_LowLong_init@Base 10 ++ _M2_LowReal_finish@Base 10 ++ _M2_LowReal_init@Base 10 ++ _M2_LowShort_finish@Base 10 ++ _M2_LowShort_init@Base 10 ++ _M2_M2EXCEPTION_finish@Base 10 ++ _M2_M2EXCEPTION_init@Base 10 ++ _M2_M2RTS_finish@Base 10 ++ _M2_M2RTS_init@Base 10 ++ _M2_MemStream_finish@Base 10 ++ _M2_MemStream_init@Base 10 ++ _M2_Processes_finish@Base 10 ++ _M2_Processes_init@Base 10 ++ _M2_ProgramArgs_finish@Base 10 ++ _M2_ProgramArgs_init@Base 10 ++ _M2_RTco_finish@Base 10 ++ _M2_RTco_init@Base 10 ++ _M2_RTdata_finish@Base 10 ++ _M2_RTdata_init@Base 10 ++ _M2_RTentity_finish@Base 10 ++ _M2_RTentity_init@Base 10 ++ _M2_RTfio_finish@Base 10 ++ _M2_RTfio_init@Base 10 ++ _M2_RTgen_finish@Base 10 ++ _M2_RTgen_init@Base 10 ++ _M2_RTgenif_finish@Base 10 ++ _M2_RTgenif_init@Base 10 ++ _M2_RTio_finish@Base 10 ++ _M2_RTio_init@Base 10 ++ _M2_RandomNumber_finish@Base 10 ++ _M2_RandomNumber_init@Base 10 ++ _M2_RawIO_finish@Base 10 ++ _M2_RawIO_init@Base 10 ++ _M2_RealConv_finish@Base 10 ++ _M2_RealConv_init@Base 10 ++ _M2_RealIO_finish@Base 10 ++ _M2_RealIO_init@Base 10 ++ _M2_RealMath_finish@Base 10 ++ _M2_RealMath_init@Base 10 ++ _M2_RealStr_finish@Base 10 ++ _M2_RealStr_init@Base 10 ++ _M2_RndFile_finish@Base 10 ++ _M2_RndFile_init@Base 10 ++ _M2_SIOResult_finish@Base 10 ++ _M2_SIOResult_init@Base 10 ++ _M2_SLongIO_finish@Base 10 ++ _M2_SLongIO_init@Base 10 ++ _M2_SLongWholeIO_finish@Base 10 ++ _M2_SLongWholeIO_init@Base 10 ++ _M2_SRawIO_finish@Base 10 ++ _M2_SRawIO_init@Base 10 ++ _M2_SRealIO_finish@Base 10 ++ _M2_SRealIO_init@Base 10 ++ _M2_SShortIO_finish@Base 10 ++ _M2_SShortIO_init@Base 10 ++ _M2_SShortWholeIO_finish@Base 10 ++ _M2_SShortWholeIO_init@Base 10 ++ _M2_STextIO_finish@Base 10 ++ _M2_STextIO_init@Base 10 ++ _M2_SWholeIO_finish@Base 10 ++ _M2_SWholeIO_init@Base 10 ++ _M2_SYSTEM_finish@Base 10 ++ _M2_SYSTEM_init@Base 10 ++ _M2_Semaphores_finish@Base 10 ++ _M2_Semaphores_init@Base 10 ++ _M2_SeqFile_finish@Base 10 ++ _M2_SeqFile_init@Base 10 ++ _M2_ServerSocket_finish@Base 10 ++ _M2_ServerSocket_init@Base 10 ++ _M2_ShortComplexMath_finish@Base 10 ++ _M2_ShortComplexMath_init@Base 10 ++ _M2_ShortIO_finish@Base 10 ++ _M2_ShortIO_init@Base 10 ++ _M2_ShortWholeIO_finish@Base 10 ++ _M2_ShortWholeIO_init@Base 10 ++ _M2_SimpleCipher_finish@Base 10 ++ _M2_SimpleCipher_init@Base 10 ++ _M2_StdChans_finish@Base 10 ++ _M2_StdChans_init@Base 10 ++ _M2_Storage_finish@Base 10 ++ _M2_Storage_init@Base 10 ++ _M2_StreamFile_finish@Base 10 ++ _M2_StreamFile_init@Base 10 ++ _M2_StringChan_finish@Base 10 ++ _M2_StringChan_init@Base 10 ++ _M2_Strings_finish@Base 10 ++ _M2_Strings_init@Base 10 ++ _M2_SysClock_finish@Base 10 ++ _M2_SysClock_init@Base 10 ++ _M2_TERMINATION_finish@Base 10 ++ _M2_TERMINATION_init@Base 10 ++ _M2_TermFile_finish@Base 10 ++ _M2_TermFile_init@Base 10 ++ _M2_TextIO_finish@Base 10 ++ _M2_TextIO_init@Base 10 ++ _M2_WholeConv_finish@Base 10 ++ _M2_WholeConv_init@Base 10 ++ _M2_WholeIO_finish@Base 10 ++ _M2_WholeIO_init@Base 10 ++ _M2_WholeStr_finish@Base 10 ++ _M2_WholeStr_init@Base 10 ++ _M2_wrapsock_finish@Base 10 ++ _M2_wrapsock_init@Base 10 ++ _M2_wraptime_finish@Base 10 ++ _M2_wraptime_init@Base 10 ++ currentThread@Base 10 ++ wrapsock_clientOpen@Base 10 ++ wrapsock_clientOpenIP@Base 10 ++ wrapsock_getClientHostname@Base 10 ++ wrapsock_getClientIP@Base 10 ++ wrapsock_getClientPortNo@Base 10 ++ wrapsock_getClientSocketFd@Base 10 ++ wrapsock_getPushBackChar@Base 10 ++ wrapsock_getSizeOfClientInfo@Base 10 ++ wrapsock_setPushBackChar@Base 10 ++ wraptime_GetDST@Base 10 ++ wraptime_GetDay@Base 10 ++ wraptime_GetFractions@Base 10 ++ wraptime_GetHour@Base 10 ++ wraptime_GetMinute@Base 10 ++ wraptime_GetMonth@Base 10 ++ wraptime_GetSecond@Base 10 ++ wraptime_GetSummerTime@Base 10 ++ wraptime_GetYear@Base 10 ++ wraptime_InitTM@Base 10 ++ wraptime_InitTimeval@Base 10 ++ wraptime_InitTimezone@Base 10 ++ wraptime_KillTM@Base 10 ++ wraptime_KillTimeval@Base 10 ++ wraptime_KillTimezone@Base 10 ++ wraptime_SetTimeval@Base 10 ++ wraptime_SetTimezone@Base 10 ++ wraptime_gettimeofday@Base 10 ++ wraptime_localtime_r@Base 10 ++ wraptime_settimeofday@Base 10 ++libm2log.so.18 #PACKAGE# #MINVER# ++ BitBlockOps_BlockAnd@Base 10 ++ BitBlockOps_BlockNot@Base 10 ++ BitBlockOps_BlockOr@Base 10 ++ BitBlockOps_BlockRol@Base 10 ++ BitBlockOps_BlockRor@Base 10 ++ BitBlockOps_BlockShl@Base 10 ++ BitBlockOps_BlockShr@Base 10 ++ BitBlockOps_BlockXor@Base 10 ++ BitByteOps_ByteAnd@Base 10 ++ BitByteOps_ByteNot@Base 10 ++ BitByteOps_ByteOr@Base 10 ++ BitByteOps_ByteRol@Base 10 ++ BitByteOps_ByteRor@Base 10 ++ BitByteOps_ByteSar@Base 10 ++ BitByteOps_ByteShl@Base 10 ++ BitByteOps_ByteShr@Base 10 ++ BitByteOps_ByteXor@Base 10 ++ BitByteOps_GetBits@Base 10 ++ BitByteOps_HighNibble@Base 10 ++ BitByteOps_LowNibble@Base 10 ++ BitByteOps_SetBits@Base 10 ++ BitByteOps_Swap@Base 10 ++ BitWordOps_GetBits@Base 10 ++ BitWordOps_HighByte@Base 10 ++ BitWordOps_LowByte@Base 10 ++ BitWordOps_SetBits@Base 10 ++ BitWordOps_Swap@Base 10 ++ BitWordOps_WordAnd@Base 10 ++ BitWordOps_WordNot@Base 10 ++ BitWordOps_WordOr@Base 10 ++ BitWordOps_WordRol@Base 10 ++ BitWordOps_WordRor@Base 10 ++ BitWordOps_WordSar@Base 10 ++ BitWordOps_WordShl@Base 10 ++ BitWordOps_WordShr@Base 10 ++ BitWordOps_WordXor@Base 10 ++ BlockOps_BlockClear@Base 10 ++ BlockOps_BlockEqual@Base 10 ++ BlockOps_BlockMoveBackward@Base 10 ++ BlockOps_BlockMoveForward@Base 10 ++ BlockOps_BlockPosition@Base 10 ++ BlockOps_BlockSet@Base 10 ++ Break_DisableBreak@Base 10 ++ Break_EnableBreak@Base 10 ++ Break_InstallBreak@Base 10 ++ Break_UnInstallBreak@Base 10 ++ CardinalIO_Done@Base 10 ++ CardinalIO_ReadCardinal@Base 10 ++ CardinalIO_ReadHex@Base 10 ++ CardinalIO_ReadLongCardinal@Base 10 ++ CardinalIO_ReadLongHex@Base 10 ++ CardinalIO_ReadShortCardinal@Base 10 ++ CardinalIO_ReadShortHex@Base 10 ++ CardinalIO_WriteCardinal@Base 10 ++ CardinalIO_WriteHex@Base 10 ++ CardinalIO_WriteLongCardinal@Base 10 ++ CardinalIO_WriteLongHex@Base 10 ++ CardinalIO_WriteShortCardinal@Base 10 ++ CardinalIO_WriteShortHex@Base 10 ++ Conversions_ConvertCardinal@Base 10 ++ Conversions_ConvertHex@Base 10 ++ Conversions_ConvertInteger@Base 10 ++ Conversions_ConvertLongInt@Base 10 ++ Conversions_ConvertOctal@Base 10 ++ Conversions_ConvertShortInt@Base 10 ++ Delay_Delay@Base 10 ++ Display_Write@Base 10 ++ ErrorCode_ExitToOS@Base 10 ++ ErrorCode_GetErrorCode@Base 10 ++ ErrorCode_SetErrorCode@Base 10 ++ FileSystem_Close@Base 10 ++ FileSystem_Create@Base 10 ++ FileSystem_Delete@Base 10 ++ FileSystem_Doio@Base 10 ++ FileSystem_GetPos@Base 10 ++ FileSystem_Length@Base 10 ++ FileSystem_Lookup@Base 10 ++ FileSystem_ReadByte@Base 10 ++ FileSystem_ReadChar@Base 10 ++ FileSystem_ReadNBytes@Base 10 ++ FileSystem_ReadWord@Base 10 ++ FileSystem_Rename@Base 10 ++ FileSystem_Reset@Base 10 ++ FileSystem_SetModify@Base 10 ++ FileSystem_SetOpen@Base 10 ++ FileSystem_SetPos@Base 10 ++ FileSystem_SetRead@Base 10 ++ FileSystem_SetWrite@Base 10 ++ FileSystem_WriteByte@Base 10 ++ FileSystem_WriteChar@Base 10 ++ FileSystem_WriteNBytes@Base 10 ++ FileSystem_WriteWord@Base 10 ++ FloatingUtilities_Float@Base 10 ++ FloatingUtilities_Floatl@Base 10 ++ FloatingUtilities_Frac@Base 10 ++ FloatingUtilities_Fracl@Base 10 ++ FloatingUtilities_Round@Base 10 ++ FloatingUtilities_Roundl@Base 10 ++ FloatingUtilities_Trunc@Base 10 ++ FloatingUtilities_Truncl@Base 10 ++ InOut_CloseInput@Base 10 ++ InOut_CloseOutput@Base 10 ++ InOut_Done@Base 10 ++ InOut_OpenInput@Base 10 ++ InOut_OpenOutput@Base 10 ++ InOut_Read@Base 10 ++ InOut_ReadCard@Base 10 ++ InOut_ReadInt@Base 10 ++ InOut_ReadS@Base 10 ++ InOut_ReadString@Base 10 ++ InOut_Write@Base 10 ++ InOut_WriteCard@Base 10 ++ InOut_WriteHex@Base 10 ++ InOut_WriteInt@Base 10 ++ InOut_WriteLn@Base 10 ++ InOut_WriteOct@Base 10 ++ InOut_WriteS@Base 10 ++ InOut_WriteString@Base 10 ++ InOut_termCH@Base 10 ++ Keyboard_KeyPressed@Base 10 ++ Keyboard_Read@Base 10 ++ LongIO_Done@Base 10 ++ LongIO_ReadLongInt@Base 10 ++ LongIO_WriteLongInt@Base 10 ++ Random_RandomBytes@Base 10 ++ Random_RandomCard@Base 10 ++ Random_RandomInit@Base 10 ++ Random_RandomInt@Base 10 ++ Random_RandomLongReal@Base 10 ++ Random_RandomReal@Base 10 ++ Random_Randomize@Base 10 ++ RealConversions_LongRealToString@Base 10 ++ RealConversions_RealToString@Base 10 ++ RealConversions_SetNoOfExponentDigits@Base 10 ++ RealConversions_StringToLongReal@Base 10 ++ RealConversions_StringToReal@Base 10 ++ RealInOut_Done@Base 10 ++ RealInOut_ReadLongReal@Base 10 ++ RealInOut_ReadReal@Base 10 ++ RealInOut_ReadShortReal@Base 10 ++ RealInOut_SetNoOfDecimalPlaces@Base 10 ++ RealInOut_WriteLongReal@Base 10 ++ RealInOut_WriteLongRealOct@Base 10 ++ RealInOut_WriteReal@Base 10 ++ RealInOut_WriteRealOct@Base 10 ++ RealInOut_WriteShortReal@Base 10 ++ RealInOut_WriteShortRealOct@Base 10 ++ Strings_Assign@Base 10 ++ Strings_CompareStr@Base 10 ++ Strings_ConCat@Base 10 ++ Strings_Copy@Base 10 ++ Strings_Delete@Base 10 ++ Strings_Insert@Base 10 ++ Strings_Length@Base 10 ++ Strings_Pos@Base 10 ++ Termbase_AssignRead@Base 10 ++ Termbase_AssignWrite@Base 10 ++ Termbase_KeyPressed@Base 10 ++ Termbase_Read@Base 10 ++ Termbase_UnAssignRead@Base 10 ++ Termbase_UnAssignWrite@Base 10 ++ Termbase_Write@Base 10 ++ Terminal_KeyPressed@Base 10 ++ Terminal_Read@Base 10 ++ Terminal_ReadAgain@Base 10 ++ Terminal_ReadString@Base 10 ++ Terminal_Write@Base 10 ++ Terminal_WriteLn@Base 10 ++ Terminal_WriteString@Base 10 ++ TimeDate_CompareTime@Base 10 ++ TimeDate_GetTime@Base 10 ++ TimeDate_SetTime@Base 10 ++ TimeDate_TimeToString@Base 10 ++ TimeDate_TimeToZero@Base 10 ++ _M2_BitBlockOps_finish@Base 10 ++ _M2_BitBlockOps_init@Base 10 ++ _M2_BitByteOps_finish@Base 10 ++ _M2_BitByteOps_init@Base 10 ++ _M2_BitWordOps_finish@Base 10 ++ _M2_BitWordOps_init@Base 10 ++ _M2_BlockOps_finish@Base 10 ++ _M2_BlockOps_init@Base 10 ++ _M2_CardinalIO_finish@Base 10 ++ _M2_CardinalIO_init@Base 10 ++ _M2_Conversions_finish@Base 10 ++ _M2_Conversions_init@Base 10 ++ _M2_DebugPMD_finish@Base 10 ++ _M2_DebugPMD_init@Base 10 ++ _M2_DebugTrace_finish@Base 10 ++ _M2_DebugTrace_init@Base 10 ++ _M2_Delay_finish@Base 10 ++ _M2_Delay_init@Base 10 ++ _M2_Display_finish@Base 10 ++ _M2_Display_init@Base 10 ++ _M2_ErrorCode_finish@Base 10 ++ _M2_ErrorCode_init@Base 10 ++ _M2_FileSystem_finish@Base 10 ++ _M2_FileSystem_init@Base 10 ++ _M2_FloatingUtilities_finish@Base 10 ++ _M2_FloatingUtilities_init@Base 10 ++ _M2_InOut_finish@Base 10 ++ _M2_InOut_init@Base 10 ++ _M2_Keyboard_finish@Base 10 ++ _M2_Keyboard_init@Base 10 ++ _M2_LongIO_finish@Base 10 ++ _M2_LongIO_init@Base 10 ++ _M2_NumberConversion_finish@Base 10 ++ _M2_NumberConversion_init@Base 10 ++ _M2_Random_finish@Base 10 ++ _M2_Random_init@Base 10 ++ _M2_RealConversions_finish@Base 10 ++ _M2_RealConversions_init@Base 10 ++ _M2_RealInOut_finish@Base 10 ++ _M2_RealInOut_init@Base 10 ++ _M2_Strings_finish@Base 10 ++ _M2_Strings_init@Base 10 ++ _M2_Termbase_finish@Base 10 ++ _M2_Termbase_init@Base 10 ++ _M2_Terminal_finish@Base 10 ++ _M2_Terminal_init@Base 10 ++ _M2_TimeDate_finish@Base 10 ++ _M2_TimeDate_init@Base 10 ++libm2min.so.18 #PACKAGE# #MINVER# ++ M2RTS_ExecuteInitialProcedures@Base 10 ++ M2RTS_ExecuteTerminationProcedures@Base 10 ++ M2RTS_HALT@Base 10 ++ M2RTS_NoException@Base 10 ++ _M2_M2RTS_finish@Base 10 ++ _M2_M2RTS_init@Base 10 ++ _M2_SYSTEM_finish@Base 10 ++ _M2_SYSTEM_init@Base 10 ++ abort@Base 10 ++ exit@Base 10 ++libm2pim.so.18 #PACKAGE# #MINVER# ++ Args_GetArg@Base 10 ++ Args_Narg@Base 10 ++ Assertion_Assert@Base 10 ++ Builtins_alloca@Base 10 ++ Builtins_alloca_trace@Base 10 ++ Builtins_atan2@Base 10 ++ Builtins_atan2f@Base 10 ++ Builtins_atan2l@Base 10 ++ Builtins_cabs@Base 10 ++ Builtins_cabsf@Base 10 ++ Builtins_cabsl@Base 10 ++ Builtins_carccos@Base 10 ++ Builtins_carccosf@Base 10 ++ Builtins_carccosl@Base 10 ++ Builtins_carcsin@Base 10 ++ Builtins_carcsinf@Base 10 ++ Builtins_carcsinl@Base 10 ++ Builtins_carctan@Base 10 ++ Builtins_carctanf@Base 10 ++ Builtins_carctanl@Base 10 ++ Builtins_carg@Base 10 ++ Builtins_cargf@Base 10 ++ Builtins_cargl@Base 10 ++ Builtins_ccos@Base 10 ++ Builtins_ccosf@Base 10 ++ Builtins_ccosl@Base 10 ++ Builtins_cexp@Base 10 ++ Builtins_cexpf@Base 10 ++ Builtins_cexpl@Base 10 ++ Builtins_cln@Base 10 ++ Builtins_clnf@Base 10 ++ Builtins_clnl@Base 10 ++ Builtins_conj@Base 10 ++ Builtins_conjf@Base 10 ++ Builtins_conjl@Base 10 ++ Builtins_cos@Base 10 ++ Builtins_cosf@Base 10 ++ Builtins_cosl@Base 10 ++ Builtins_cpower@Base 10 ++ Builtins_cpowerf@Base 10 ++ Builtins_cpowerl@Base 10 ++ Builtins_csin@Base 10 ++ Builtins_csinf@Base 10 ++ Builtins_csinl@Base 10 ++ Builtins_csqrt@Base 10 ++ Builtins_csqrtf@Base 10 ++ Builtins_csqrtl@Base 10 ++ Builtins_ctan@Base 10 ++ Builtins_ctanf@Base 10 ++ Builtins_ctanl@Base 10 ++ Builtins_exp10@Base 10 ++ Builtins_exp10f@Base 10 ++ Builtins_exp10l@Base 10 ++ Builtins_exp@Base 10 ++ Builtins_expf@Base 10 ++ Builtins_expl@Base 10 ++ Builtins_fabs@Base 10 ++ Builtins_fabsf@Base 10 ++ Builtins_fabsl@Base 10 ++ Builtins_frame_address@Base 10 ++ Builtins_huge_val@Base 10 ++ Builtins_huge_valf@Base 10 ++ Builtins_huge_vall@Base 10 ++ Builtins_ilogb@Base 10 ++ Builtins_ilogbf@Base 10 ++ Builtins_ilogbl@Base 10 ++ Builtins_index@Base 10 ++ Builtins_isfinite@Base 10 ++ Builtins_isfinitef@Base 10 ++ Builtins_isfinitel@Base 10 ++ Builtins_log10@Base 10 ++ Builtins_log10f@Base 10 ++ Builtins_log10l@Base 10 ++ Builtins_log@Base 10 ++ Builtins_logf@Base 10 ++ Builtins_logl@Base 10 ++ Builtins_longjmp@Base 10 ++ Builtins_memcmp@Base 10 ++ Builtins_memcpy@Base 10 ++ Builtins_memmove@Base 10 ++ Builtins_memset@Base 10 ++ Builtins_modf@Base 10 ++ Builtins_modff@Base 10 ++ Builtins_modfl@Base 10 ++ Builtins_nextafter@Base 10 ++ Builtins_nextafterf@Base 10 ++ Builtins_nextafterl@Base 10 ++ Builtins_nexttoward@Base 10 ++ Builtins_nexttowardf@Base 10 ++ Builtins_nexttowardl@Base 10 ++ Builtins_return_address@Base 10 ++ Builtins_rindex@Base 10 ++ Builtins_scalb@Base 10 ++ Builtins_scalbf@Base 10 ++ Builtins_scalbl@Base 10 ++ Builtins_scalbln@Base 10 ++ Builtins_scalblnf@Base 10 ++ Builtins_scalblnl@Base 10 ++ Builtins_scalbn@Base 10 ++ Builtins_scalbnf@Base 10 ++ Builtins_scalbnl@Base 10 ++ Builtins_setjmp@Base 10 ++ Builtins_signbit@Base 10 ++ Builtins_signbitf@Base 10 ++ Builtins_signbitl@Base 10 ++ Builtins_significand@Base 10 ++ Builtins_significandf@Base 10 ++ Builtins_significandl@Base 10 ++ Builtins_sin@Base 10 ++ Builtins_sinf@Base 10 ++ Builtins_sinl@Base 10 ++ Builtins_sqrt@Base 10 ++ Builtins_sqrtf@Base 10 ++ Builtins_sqrtl@Base 10 ++ Builtins_strcat@Base 10 ++ Builtins_strchr@Base 10 ++ Builtins_strcmp@Base 10 ++ Builtins_strcpy@Base 10 ++ Builtins_strcspn@Base 10 ++ Builtins_strlen@Base 10 ++ Builtins_strncat@Base 10 ++ Builtins_strncmp@Base 10 ++ Builtins_strncpy@Base 10 ++ Builtins_strpbrk@Base 10 ++ Builtins_strrchr@Base 10 ++ Builtins_strspn@Base 10 ++ Builtins_strstr@Base 10 ++ CmdArgs_GetArg@Base 10 ++ CmdArgs_Narg@Base 10 ++ Debug_DebugString@Base 10 ++ Debug_Halt@Base 10 ++ DynamicStrings_Add@Base 10 ++ DynamicStrings_Assign@Base 10 ++ DynamicStrings_ConCat@Base 10 ++ DynamicStrings_ConCatChar@Base 10 ++ DynamicStrings_CopyOut@Base 10 ++ DynamicStrings_Dup@Base 10 ++ DynamicStrings_DupDB@Base 10 ++ DynamicStrings_Equal@Base 10 ++ DynamicStrings_EqualArray@Base 10 ++ DynamicStrings_EqualCharStar@Base 10 ++ DynamicStrings_Fin@Base 10 ++ DynamicStrings_Index@Base 10 ++ DynamicStrings_InitString@Base 10 ++ DynamicStrings_InitStringChar@Base 10 ++ DynamicStrings_InitStringCharDB@Base 10 ++ DynamicStrings_InitStringCharStar@Base 10 ++ DynamicStrings_InitStringCharStarDB@Base 10 ++ DynamicStrings_InitStringDB@Base 10 ++ DynamicStrings_KillString@Base 10 ++ DynamicStrings_Length@Base 10 ++ DynamicStrings_Mark@Base 10 ++ DynamicStrings_Mult@Base 10 ++ DynamicStrings_MultDB@Base 10 ++ DynamicStrings_PopAllocation@Base 10 ++ DynamicStrings_PopAllocationExemption@Base 10 ++ DynamicStrings_PushAllocation@Base 10 ++ DynamicStrings_RIndex@Base 10 ++ DynamicStrings_RemoveComment@Base 10 ++ DynamicStrings_RemoveWhitePostfix@Base 10 ++ DynamicStrings_RemoveWhitePrefix@Base 10 ++ DynamicStrings_Slice@Base 10 ++ DynamicStrings_SliceDB@Base 10 ++ DynamicStrings_ToLower@Base 10 ++ DynamicStrings_ToUpper@Base 10 ++ DynamicStrings_char@Base 10 ++ DynamicStrings_string@Base 10 ++ Environment_GetEnvironment@Base 10 ++ FIO_Close@Base 10 ++ FIO_EOF@Base 10 ++ FIO_EOLN@Base 10 ++ FIO_Exists@Base 10 ++ FIO_FindPosition@Base 10 ++ FIO_FlushBuffer@Base 10 ++ FIO_FlushOutErr@Base 10 ++ FIO_GetFileName@Base 10 ++ FIO_GetUnixFileDescriptor@Base 10 ++ FIO_IsActive@Base 10 ++ FIO_IsNoError@Base 10 ++ FIO_OpenForRandom@Base 10 ++ FIO_OpenToRead@Base 10 ++ FIO_OpenToWrite@Base 10 ++ FIO_ReadCardinal@Base 10 ++ FIO_ReadChar@Base 10 ++ FIO_ReadNBytes@Base 10 ++ FIO_ReadString@Base 10 ++ FIO_SetPositionFromBeginning@Base 10 ++ FIO_SetPositionFromEnd@Base 10 ++ FIO_StdErr@Base 10 ++ FIO_StdIn@Base 10 ++ FIO_StdOut@Base 10 ++ FIO_UnReadChar@Base 10 ++ FIO_WasEOLN@Base 10 ++ FIO_WriteCardinal@Base 10 ++ FIO_WriteChar@Base 10 ++ FIO_WriteLine@Base 10 ++ FIO_WriteNBytes@Base 10 ++ FIO_WriteString@Base 10 ++ FIO_exists@Base 10 ++ FIO_getFileName@Base 10 ++ FIO_getFileNameLength@Base 10 ++ FIO_openForRandom@Base 10 ++ FIO_openToRead@Base 10 ++ FIO_openToWrite@Base 10 ++ FormatStrings_HandleEscape@Base 10 ++ FormatStrings_Sprintf0@Base 10 ++ FormatStrings_Sprintf1@Base 10 ++ FormatStrings_Sprintf2@Base 10 ++ FormatStrings_Sprintf3@Base 10 ++ FormatStrings_Sprintf4@Base 10 ++ FpuIO_LongIntToStr@Base 10 ++ FpuIO_LongRealToStr@Base 10 ++ FpuIO_ReadLongInt@Base 10 ++ FpuIO_ReadLongReal@Base 10 ++ FpuIO_ReadReal@Base 10 ++ FpuIO_RealToStr@Base 10 ++ FpuIO_StrToLongInt@Base 10 ++ FpuIO_StrToLongReal@Base 10 ++ FpuIO_StrToReal@Base 10 ++ FpuIO_WriteLongInt@Base 10 ++ FpuIO_WriteLongReal@Base 10 ++ FpuIO_WriteReal@Base 10 ++ GetOpt_AddLongOption@Base 10 ++ GetOpt_GetOpt@Base 10 ++ GetOpt_GetOptLong@Base 10 ++ GetOpt_GetOptLongOnly@Base 10 ++ GetOpt_InitLongOptions@Base 10 ++ GetOpt_KillLongOptions@Base 10 ++ IO_BufferedMode@Base 10 ++ IO_EchoOff@Base 10 ++ IO_EchoOn@Base 10 ++ IO_Error@Base 10 ++ IO_Read@Base 10 ++ IO_UnBufferedMode@Base 10 ++ IO_Write@Base 10 ++ Indexing_DebugIndex@Base 10 ++ Indexing_DeleteIndice@Base 10 ++ Indexing_ForeachIndiceInIndexDo@Base 10 ++ Indexing_GetIndice@Base 10 ++ Indexing_HighIndice@Base 10 ++ Indexing_InBounds@Base 10 ++ Indexing_IncludeIndiceIntoIndex@Base 10 ++ Indexing_InitIndex@Base 10 ++ Indexing_IsIndiceInIndex@Base 10 ++ Indexing_KillIndex@Base 10 ++ Indexing_LowIndice@Base 10 ++ Indexing_PutIndice@Base 10 ++ Indexing_RemoveIndiceFromIndex@Base 10 ++ LMathLib0_arctan@Base 10 ++ LMathLib0_cos@Base 10 ++ LMathLib0_entier@Base 10 ++ LMathLib0_exp@Base 10 ++ LMathLib0_ln@Base 10 ++ LMathLib0_sin@Base 10 ++ LMathLib0_sqrt@Base 10 ++ LMathLib0_tan@Base 10 ++ M2EXCEPTION_IsM2Exception@Base 10 ++ M2EXCEPTION_M2Exception@Base 10 ++ M2RTS_AssignmentException@Base 10 ++ M2RTS_CaseException@Base 10 ++ M2RTS_DecException@Base 10 ++ M2RTS_DynamicArraySubscriptException@Base 10 ++ M2RTS_ErrorMessage@Base 10 ++ M2RTS_ExclException@Base 10 ++ M2RTS_ExecuteInitialProcedures@Base 10 ++ M2RTS_ExecuteTerminationProcedures@Base 10 ++ M2RTS_ExitOnHalt@Base 10 ++ M2RTS_ForLoopBeginException@Base 10 ++ M2RTS_ForLoopEndException@Base 10 ++ M2RTS_ForLoopToException@Base 10 ++ M2RTS_HALT@Base 10 ++ M2RTS_Halt@Base 10 ++ M2RTS_IncException@Base 10 ++ M2RTS_InclException@Base 10 ++ M2RTS_InstallInitialProcedure@Base 10 ++ M2RTS_InstallTerminationProcedure@Base 10 ++ M2RTS_Length@Base 10 ++ M2RTS_NoException@Base 10 ++ M2RTS_NoReturnException@Base 10 ++ M2RTS_ParameterException@Base 10 ++ M2RTS_PointerNilException@Base 10 ++ M2RTS_RealValueException@Base 10 ++ M2RTS_ReturnException@Base 10 ++ M2RTS_RotateException@Base 10 ++ M2RTS_ShiftException@Base 10 ++ M2RTS_StaticArraySubscriptException@Base 10 ++ M2RTS_Terminate@Base 10 ++ M2RTS_WholeNonPosDivException@Base 10 ++ M2RTS_WholeNonPosModException@Base 10 ++ M2RTS_WholeValueException@Base 10 ++ M2RTS_WholeZeroDivException@Base 10 ++ M2RTS_WholeZeroRemException@Base 10 ++ MathLib0_arctan@Base 10 ++ MathLib0_cos@Base 10 ++ MathLib0_entier@Base 10 ++ MathLib0_exp@Base 10 ++ MathLib0_ln@Base 10 ++ MathLib0_sin@Base 10 ++ MathLib0_sqrt@Base 10 ++ MathLib0_tan@Base 10 ++ MemUtils_MemCopy@Base 10 ++ MemUtils_MemZero@Base 10 ++ NumberIO_BinToStr@Base 10 ++ NumberIO_CardToStr@Base 10 ++ NumberIO_HexToStr@Base 10 ++ NumberIO_IntToStr@Base 10 ++ NumberIO_OctToStr@Base 10 ++ NumberIO_ReadBin@Base 10 ++ NumberIO_ReadCard@Base 10 ++ NumberIO_ReadHex@Base 10 ++ NumberIO_ReadInt@Base 10 ++ NumberIO_ReadOct@Base 10 ++ NumberIO_StrToBin@Base 10 ++ NumberIO_StrToBinInt@Base 10 ++ NumberIO_StrToCard@Base 10 ++ NumberIO_StrToHex@Base 10 ++ NumberIO_StrToHexInt@Base 10 ++ NumberIO_StrToInt@Base 10 ++ NumberIO_StrToOct@Base 10 ++ NumberIO_StrToOctInt@Base 10 ++ NumberIO_WriteBin@Base 10 ++ NumberIO_WriteCard@Base 10 ++ NumberIO_WriteHex@Base 10 ++ NumberIO_WriteInt@Base 10 ++ NumberIO_WriteOct@Base 10 ++ OptLib_ConCat@Base 10 ++ OptLib_Dup@Base 10 ++ OptLib_GetArgc@Base 10 ++ OptLib_GetArgv@Base 10 ++ OptLib_IndexStrCmp@Base 10 ++ OptLib_IndexStrNCmp@Base 10 ++ OptLib_InitOption@Base 10 ++ OptLib_KillOption@Base 10 ++ OptLib_Slice@Base 10 ++ PushBackInput_Close@Base 10 ++ PushBackInput_Error@Base 10 ++ PushBackInput_GetCh@Base 10 ++ PushBackInput_GetColumnPosition@Base 10 ++ PushBackInput_GetCurrentLine@Base 10 ++ PushBackInput_GetExitStatus@Base 10 ++ PushBackInput_Open@Base 10 ++ PushBackInput_PutCh@Base 10 ++ PushBackInput_PutString@Base 10 ++ PushBackInput_SetDebug@Base 10 ++ PushBackInput_WarnError@Base 10 ++ PushBackInput_WarnString@Base 10 ++ RTExceptions_BaseExceptionsThrow@Base 10 ++ RTExceptions_DefaultErrorCatch@Base 10 ++ RTExceptions_GetBaseExceptionBlock@Base 10 ++ RTExceptions_GetExceptionBlock@Base 10 ++ RTExceptions_GetExceptionSource@Base 10 ++ RTExceptions_GetNumber@Base 10 ++ RTExceptions_GetTextBuffer@Base 10 ++ RTExceptions_GetTextBufferSize@Base 10 ++ RTExceptions_InitExceptionBlock@Base 10 ++ RTExceptions_IsInExceptionState@Base 10 ++ RTExceptions_KillExceptionBlock@Base 10 ++ RTExceptions_PopHandler@Base 10 ++ RTExceptions_PushHandler@Base 10 ++ RTExceptions_Raise@Base 10 ++ RTExceptions_SetExceptionBlock@Base 10 ++ RTExceptions_SetExceptionSource@Base 10 ++ RTExceptions_SetExceptionState@Base 10 ++ RTExceptions_SwitchExceptionState@Base 10 ++ RTint_AttachVector@Base 10 ++ RTint_ExcludeVector@Base 10 ++ RTint_GetTimeVector@Base 10 ++ RTint_IncludeVector@Base 10 ++ RTint_Init@Base 10 ++ RTint_InitInputVector@Base 10 ++ RTint_InitOutputVector@Base 10 ++ RTint_InitTimeVector@Base 10 ++ RTint_Listen@Base 10 ++ RTint_ReArmTimeVector@Base 10 ++ SArgs_GetArg@Base 10 ++ SArgs_Narg@Base 10 ++ SCmdArgs_GetArg@Base 10 ++ SCmdArgs_Narg@Base 10 ++ SEnvironment_GetEnvironment@Base 10 ++ SFIO_Exists@Base 10 ++ SFIO_OpenForRandom@Base 10 ++ SFIO_OpenToRead@Base 10 ++ SFIO_OpenToWrite@Base 10 ++ SFIO_ReadS@Base 10 ++ SFIO_WriteS@Base 10 ++ SMathLib0_arctan@Base 10 ++ SMathLib0_cos@Base 10 ++ SMathLib0_entier@Base 10 ++ SMathLib0_exp@Base 10 ++ SMathLib0_ln@Base 10 ++ SMathLib0_sin@Base 10 ++ SMathLib0_sqrt@Base 10 ++ SMathLib0_tan@Base 10 ++ Scan_CloseSource@Base 10 ++ Scan_DefineComments@Base 10 ++ Scan_GetNextSymbol@Base 10 ++ Scan_OpenSource@Base 10 ++ Scan_TerminateOnError@Base 10 ++ Scan_WriteError@Base 10 ++ Selective_FdClr@Base 10 ++ Selective_FdIsSet@Base 10 ++ Selective_FdSet@Base 10 ++ Selective_FdZero@Base 10 ++ Selective_GetTime@Base 10 ++ Selective_GetTimeOfDay@Base 10 ++ Selective_InitSet@Base 10 ++ Selective_InitTime@Base 10 ++ Selective_KillSet@Base 10 ++ Selective_KillTime@Base 10 ++ Selective_MaxFdsPlusOne@Base 10 ++ Selective_ReadCharRaw@Base 10 ++ Selective_Select@Base 10 ++ Selective_SetTime@Base 10 ++ Selective_WriteCharRaw@Base 10 ++ StdIO_GetCurrentInput@Base 10 ++ StdIO_GetCurrentOutput@Base 10 ++ StdIO_PopInput@Base 10 ++ StdIO_PopOutput@Base 10 ++ StdIO_PushInput@Base 10 ++ StdIO_PushOutput@Base 10 ++ StdIO_Read@Base 10 ++ StdIO_Write@Base 10 ++ Storage_ALLOCATE@Base 10 ++ Storage_Available@Base 10 ++ Storage_DEALLOCATE@Base 10 ++ Storage_REALLOCATE@Base 10 ++ StrCase_Cap@Base 10 ++ StrCase_Lower@Base 10 ++ StrCase_StrToLowerCase@Base 10 ++ StrCase_StrToUpperCase@Base 10 ++ StrIO_ReadString@Base 10 ++ StrIO_WriteLn@Base 10 ++ StrIO_WriteString@Base 10 ++ StrLib_IsSubString@Base 10 ++ StrLib_StrConCat@Base 10 ++ StrLib_StrCopy@Base 10 ++ StrLib_StrEqual@Base 10 ++ StrLib_StrLen@Base 10 ++ StrLib_StrLess@Base 10 ++ StrLib_StrRemoveWhitePrefix@Base 10 ++ StringConvert_CardinalToString@Base 10 ++ StringConvert_IntegerToString@Base 10 ++ StringConvert_LongCardinalToString@Base 10 ++ StringConvert_LongIntegerToString@Base 10 ++ StringConvert_LongrealToString@Base 10 ++ StringConvert_ShortCardinalToString@Base 10 ++ StringConvert_StringToCardinal@Base 10 ++ StringConvert_StringToInteger@Base 10 ++ StringConvert_StringToLongCardinal@Base 10 ++ StringConvert_StringToLongInteger@Base 10 ++ StringConvert_StringToLongreal@Base 10 ++ StringConvert_StringToShortCardinal@Base 10 ++ StringConvert_ToSigFig@Base 10 ++ StringConvert_bstoc@Base 10 ++ StringConvert_bstoi@Base 10 ++ StringConvert_ctos@Base 10 ++ StringConvert_hstoc@Base 10 ++ StringConvert_hstoi@Base 10 ++ StringConvert_itos@Base 10 ++ StringConvert_ostoc@Base 10 ++ StringConvert_ostoi@Base 10 ++ StringConvert_stoc@Base 10 ++ StringConvert_stoi@Base 10 ++ StringConvert_stolr@Base 10 ++ StringConvert_stor@Base 10 ++ SysExceptions_InitExceptionHandlers@Base 10 ++ SysStorage_ALLOCATE@Base 10 ++ SysStorage_Available@Base 10 ++ SysStorage_DEALLOCATE@Base 10 ++ SysStorage_Init@Base 10 ++ SysStorage_REALLOCATE@Base 10 ++ TimeString_GetTimeString@Base 10 ++ UnixArgs_ArgC@Base 10 ++ UnixArgs_ArgV@Base 10 ++ _M2_ASCII_finish@Base 10 ++ _M2_ASCII_init@Base 10 ++ _M2_Args_finish@Base 10 ++ _M2_Args_init@Base 10 ++ _M2_Assertion_finish@Base 10 ++ _M2_Assertion_init@Base 10 ++ _M2_Break_finish@Base 10 ++ _M2_Break_init@Base 10 ++ _M2_Builtins_finish@Base 10 ++ _M2_Builtins_init@Base 10 ++ _M2_COROUTINES_finish@Base 10 ++ _M2_COROUTINES_init@Base 10 ++ _M2_CmdArgs_finish@Base 10 ++ _M2_CmdArgs_init@Base 10 ++ _M2_Debug_finish@Base 10 ++ _M2_Debug_init@Base 10 ++ _M2_DynamicStrings_finish@Base 10 ++ _M2_DynamicStrings_init@Base 10 ++ _M2_Environment_finish@Base 10 ++ _M2_Environment_init@Base 10 ++ _M2_FIO_finish@Base 10 ++ _M2_FIO_init@Base 10 ++ _M2_FormatStrings_finish@Base 10 ++ _M2_FormatStrings_init@Base 10 ++ _M2_FpuIO_finish@Base 10 ++ _M2_FpuIO_init@Base 10 ++ _M2_GetOpt_finish@Base 10 ++ _M2_GetOpt_init@Base 10 ++ _M2_IO_finish@Base 10 ++ _M2_IO_init@Base 10 ++ _M2_Indexing_finish@Base 10 ++ _M2_Indexing_init@Base 10 ++ _M2_LMathLib0_finish@Base 10 ++ _M2_LMathLib0_init@Base 10 ++ _M2_LegacyReal_finish@Base 10 ++ _M2_LegacyReal_init@Base 10 ++ _M2_M2EXCEPTION_finish@Base 10 ++ _M2_M2EXCEPTION_init@Base 10 ++ _M2_M2RTS_finish@Base 10 ++ _M2_M2RTS_init@Base 10 ++ _M2_MathLib0_finish@Base 10 ++ _M2_MathLib0_init@Base 10 ++ _M2_MemUtils_finish@Base 10 ++ _M2_MemUtils_init@Base 10 ++ _M2_NumberIO_finish@Base 10 ++ _M2_NumberIO_init@Base 10 ++ _M2_OptLib_finish@Base 10 ++ _M2_OptLib_init@Base 10 ++ _M2_PushBackInput_finish@Base 10 ++ _M2_PushBackInput_init@Base 10 ++ _M2_RTExceptions_finish@Base 10 ++ _M2_RTExceptions_init@Base 10 ++ _M2_RTint_finish@Base 10 ++ _M2_RTint_init@Base 10 ++ _M2_SArgs_finish@Base 10 ++ _M2_SArgs_init@Base 10 ++ _M2_SCmdArgs_finish@Base 10 ++ _M2_SCmdArgs_init@Base 10 ++ _M2_SEnvironment_finish@Base 10 ++ _M2_SEnvironment_init@Base 10 ++ _M2_SFIO_finish@Base 10 ++ _M2_SFIO_init@Base 10 ++ _M2_SMathLib0_finish@Base 10 ++ _M2_SMathLib0_init@Base 10 ++ _M2_SYSTEM_finish@Base 10 ++ _M2_SYSTEM_init@Base 10 ++ _M2_Scan_finish@Base 10 ++ _M2_Scan_init@Base 10 ++ _M2_Selective_finish@Base 10 ++ _M2_Selective_init@Base 10 ++ _M2_StdIO_finish@Base 10 ++ _M2_StdIO_init@Base 10 ++ _M2_Storage_finish@Base 10 ++ _M2_Storage_init@Base 10 ++ _M2_StrCase_finish@Base 10 ++ _M2_StrCase_init@Base 10 ++ _M2_StrIO_finish@Base 10 ++ _M2_StrIO_init@Base 10 ++ _M2_StrLib_finish@Base 10 ++ _M2_StrLib_init@Base 10 ++ _M2_StringConvert_finish@Base 10 ++ _M2_StringConvert_init@Base 10 ++ _M2_SysExceptions_finish@Base 10 ++ _M2_SysExceptions_init@Base 10 ++ _M2_SysStorage_finish@Base 10 ++ _M2_SysStorage_init@Base 10 ++ _M2_TimeString_finish@Base 10 ++ _M2_TimeString_init@Base 10 ++ _M2_UnixArgs_finish@Base 10 ++ _M2_UnixArgs_init@Base 10 ++ _M2_dtoa_finish@Base 10 ++ _M2_dtoa_init@Base 10 ++ _M2_errno_finish@Base 10 ++ _M2_errno_init@Base 10 ++ _M2_gdbif_finish@Base 10 ++ _M2_gdbif_init@Base 10 ++ _M2_getopt_finish@Base 10 ++ _M2_getopt_init@Base 10 ++ _M2_ldtoa_finish@Base 10 ++ _M2_ldtoa_init@Base 10 ++ _M2_sckt_finish@Base 10 ++ _M2_sckt_init@Base 10 ++ _M2_termios_finish@Base 10 ++ _M2_termios_init@Base 10 ++ _M2_wrapc_finish@Base 10 ++ _M2_wrapc_init@Base 10 ++ connectSpin@Base 10 ++ doSetUnset@Base 10 ++ dtoa_calcdecimal@Base 10 ++ dtoa_calcmaxsig@Base 10 ++ dtoa_calcsign@Base 10 ++ dtoa_dtoa@Base 10 ++ dtoa_strtod@Base 10 ++ errno_geterrno@Base 10 ++ exp10@Base 10 ++ exp10f@Base 10 ++ exp10l@Base 10 ++ finishSpin@Base 10 ++ getLocalIP@Base 10 ++ getopt_GetLongOptionArray@Base 10 ++ getopt_InitOptions@Base 10 ++ getopt_KillOptions@Base 10 ++ getopt_SetOption@Base 10 ++ getopt_getopt@Base 10 ++ getopt_getopt_long@Base 10 ++ getopt_getopt_long_only@Base 10 ++ getopt_optarg@Base 10 ++ getopt_opterr@Base 10 ++ getopt_optind@Base 10 ++ getopt_optopt@Base 10 ++ ldtoa_ldtoa@Base 10 ++ ldtoa_strtold@Base 10 ++ localExit@Base 10 ++ sleepSpin@Base 10 ++ tcpClientConnect@Base 10 ++ tcpClientIP@Base 10 ++ tcpClientPortNo@Base 10 ++ tcpClientSocket@Base 10 ++ tcpClientSocketFd@Base 10 ++ tcpClientSocketIP@Base 10 ++ tcpServerAccept@Base 10 ++ tcpServerClientIP@Base 10 ++ tcpServerClientPortNo@Base 10 ++ tcpServerEstablish@Base 10 ++ tcpServerEstablishPort@Base 10 ++ tcpServerIP@Base 10 ++ tcpServerPortNo@Base 10 ++ tcpServerSocketFd@Base 10 ++ termios_GetChar@Base 10 ++ termios_GetFlag@Base 10 ++ termios_InitTermios@Base 10 ++ termios_KillTermios@Base 10 ++ termios_SetChar@Base 10 ++ termios_SetFlag@Base 10 ++ termios_cfgetispeed@Base 10 ++ termios_cfgetospeed@Base 10 ++ termios_cfmakeraw@Base 10 ++ termios_cfsetispeed@Base 10 ++ termios_cfsetospeed@Base 10 ++ termios_cfsetspeed@Base 10 ++ termios_tcdrain@Base 10 ++ termios_tcflowoffi@Base 10 ++ termios_tcflowoffo@Base 10 ++ termios_tcflowoni@Base 10 ++ termios_tcflowono@Base 10 ++ termios_tcflushi@Base 10 ++ termios_tcflushio@Base 10 ++ termios_tcflusho@Base 10 ++ termios_tcgetattr@Base 10 ++ termios_tcsdrain@Base 10 ++ termios_tcsendbreak@Base 10 ++ termios_tcsetattr@Base 10 ++ termios_tcsflush@Base 10 ++ termios_tcsnow@Base 10 ++ wrapc_fileinode@Base 10 ++ wrapc_filemtime@Base 10 ++ wrapc_filesize@Base 10 ++ wrapc_getnameuidgid@Base 10 ++ wrapc_getrand@Base 10 ++ wrapc_getusername@Base 10 ++ wrapc_isfinite@Base 10 ++ wrapc_isfinitef@Base 10 ++ wrapc_isfinitel@Base 10 ++ wrapc_signbit@Base 10 ++ wrapc_signbitf@Base 10 ++ wrapc_signbitl@Base 10 ++ wrapc_strtime@Base 10 diff --cc debian/libgomp.symbols index 0000000,0000000..8b17283 new file mode 100644 --- /dev/null +++ b/debian/libgomp.symbols @@@ -1,0 -1,0 +1,39 @@@ ++libgomp.so.1 #PACKAGE# #MINVER# ++ (symver)GOACC_2.0 5 ++ (symver)GOACC_2.0.1 6 ++ (symver)GOACC_2.0.2 12 ++ (symver)GOMP_1.0 4.2.1 ++ (symver)GOMP_2.0 4.4 ++ (symver)GOMP_3.0 4.7 ++ (symver)GOMP_4.0 4.9 ++ (symver)GOMP_4.0.1 5 ++ (symver)GOMP_4.5 6 ++ (symver)GOMP_5.0 9 ++ (symver)GOMP_5.0.1 11 ++ (symver)GOMP_5.1 12 ++ (symver)GOMP_5.1.1 13 ++ (symver)GOMP_5.1.2 14 ++ (symver)GOMP_5.1.3 15 ++ (symver)GOMP_6.0 15 ++ (symver)GOMP_PLUGIN_1.0 5 ++ (symver)GOMP_PLUGIN_1.1 6 ++ (symver)GOMP_PLUGIN_1.2 9 ++ (symver)GOMP_PLUGIN_1.3 10 ++ (symver)GOMP_PLUGIN_1.4 13 ++ (symver)OACC_2.0 5 ++ (symver)OACC_2.0.1 8 ++ (symver)OACC_2.5 9 ++ (symver)OACC_2.5.1 10 ++ (symver)OACC_2.6 10 ++ (symver)OMP_1.0 4.2.1 ++ (symver)OMP_2.0 4.2.1 ++ (symver)OMP_3.0 4.4 ++ (symver)OMP_3.1 4.7 ++ (symver)OMP_4.0 4.9 ++ (symver)OMP_4.5 6 ++ (symver)OMP_5.0 9 ++ (symver)OMP_5.0.1 11 ++ (symver)OMP_5.0.2 12 ++ (symver)OMP_5.1 12 ++ (symver)OMP_5.1.1 13 ++ (symver)OMP_5.2 13 diff --cc debian/libgphobos.symbols index 0000000,0000000..4ad7c7e new file mode 100644 --- /dev/null +++ b/debian/libgphobos.symbols @@@ -1,0 -1,0 +1,2 @@@ ++libgdruntime.so.6 #PACKAGE# #MINVER# ++libgphobos.so.6 #PACKAGE# #MINVER# diff --cc debian/libgphobos6.symbols.amd64 index 0000000,0000000..963be83 new file mode 100644 --- /dev/null +++ b/debian/libgphobos6.symbols.amd64 @@@ -1,0 -1,0 +1,22107 @@@ ++libgdruntime.so.6 libgphobos6 #MINVER# ++ CPU_ALLOC@Base 15 ++ CPU_ALLOC_SIZE@Base 15 ++ CPU_COUNT@Base 15 ++ CPU_COUNT_S@Base 15 ++ CPU_FREE@Base 15 ++ CPU_ISSET@Base 15 ++ CPU_SET@Base 15 ++ LOG_MASK@Base 15 ++ LOG_UPTO@Base 15 ++ SIGRTMAX@Base 15 ++ SIGRTMIN@Base 15 ++ S_TYPEISMQ@Base 15 ++ S_TYPEISSEM@Base 15 ++ S_TYPEISSHM@Base 15 ++ TPACKET_ALIGN@Base 15 ++ _D101TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 ++ _D101TypeInfo_S4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D102TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 ++ _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 ++ _D105TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10IsDelegate6__initZ@Base 15 ++ _D10TypeInfo_a6__initZ@Base 15 ++ _D10TypeInfo_a6__vtblZ@Base 15 ++ _D10TypeInfo_a7__ClassZ@Base 15 ++ _D10TypeInfo_b6__initZ@Base 15 ++ _D10TypeInfo_b6__vtblZ@Base 15 ++ _D10TypeInfo_b7__ClassZ@Base 15 ++ _D10TypeInfo_c6__initZ@Base 15 ++ _D10TypeInfo_c6__vtblZ@Base 15 ++ _D10TypeInfo_c7__ClassZ@Base 15 ++ _D10TypeInfo_d6__initZ@Base 15 ++ _D10TypeInfo_d6__vtblZ@Base 15 ++ _D10TypeInfo_d7__ClassZ@Base 15 ++ _D10TypeInfo_e6__initZ@Base 15 ++ _D10TypeInfo_e6__vtblZ@Base 15 ++ _D10TypeInfo_e7__ClassZ@Base 15 ++ _D10TypeInfo_f6__initZ@Base 15 ++ _D10TypeInfo_f6__vtblZ@Base 15 ++ _D10TypeInfo_f7__ClassZ@Base 15 ++ _D10TypeInfo_g6__initZ@Base 15 ++ _D10TypeInfo_g6__vtblZ@Base 15 ++ _D10TypeInfo_g7__ClassZ@Base 15 ++ _D10TypeInfo_h6__initZ@Base 15 ++ _D10TypeInfo_h6__vtblZ@Base 15 ++ _D10TypeInfo_h7__ClassZ@Base 15 ++ _D10TypeInfo_i6__initZ@Base 15 ++ _D10TypeInfo_i6__vtblZ@Base 15 ++ _D10TypeInfo_i7__ClassZ@Base 15 ++ _D10TypeInfo_j6__initZ@Base 15 ++ _D10TypeInfo_j6__vtblZ@Base 15 ++ _D10TypeInfo_j7__ClassZ@Base 15 ++ _D10TypeInfo_k6__initZ@Base 15 ++ _D10TypeInfo_k6__vtblZ@Base 15 ++ _D10TypeInfo_k7__ClassZ@Base 15 ++ _D10TypeInfo_l6__initZ@Base 15 ++ _D10TypeInfo_l6__vtblZ@Base 15 ++ _D10TypeInfo_l7__ClassZ@Base 15 ++ _D10TypeInfo_m6__initZ@Base 15 ++ _D10TypeInfo_m6__vtblZ@Base 15 ++ _D10TypeInfo_m7__ClassZ@Base 15 ++ _D10TypeInfo_n6__initZ@Base 15 ++ _D10TypeInfo_n6__vtblZ@Base 15 ++ _D10TypeInfo_n7__ClassZ@Base 15 ++ _D10TypeInfo_o6__initZ@Base 15 ++ _D10TypeInfo_o6__vtblZ@Base 15 ++ _D10TypeInfo_o7__ClassZ@Base 15 ++ _D10TypeInfo_p6__initZ@Base 15 ++ _D10TypeInfo_p6__vtblZ@Base 15 ++ _D10TypeInfo_p7__ClassZ@Base 15 ++ _D10TypeInfo_q6__initZ@Base 15 ++ _D10TypeInfo_q6__vtblZ@Base 15 ++ _D10TypeInfo_q7__ClassZ@Base 15 ++ _D10TypeInfo_r6__initZ@Base 15 ++ _D10TypeInfo_r6__vtblZ@Base 15 ++ _D10TypeInfo_r7__ClassZ@Base 15 ++ _D10TypeInfo_s6__initZ@Base 15 ++ _D10TypeInfo_s6__vtblZ@Base 15 ++ _D10TypeInfo_s7__ClassZ@Base 15 ++ _D10TypeInfo_t6__initZ@Base 15 ++ _D10TypeInfo_t6__vtblZ@Base 15 ++ _D10TypeInfo_t7__ClassZ@Base 15 ++ _D10TypeInfo_u6__initZ@Base 15 ++ _D10TypeInfo_u6__vtblZ@Base 15 ++ _D10TypeInfo_u7__ClassZ@Base 15 ++ _D10TypeInfo_v6__initZ@Base 15 ++ _D10TypeInfo_v6__vtblZ@Base 15 ++ _D10TypeInfo_v7__ClassZ@Base 15 ++ _D10TypeInfo_w6__initZ@Base 15 ++ _D10TypeInfo_w6__vtblZ@Base 15 ++ _D10TypeInfo_w7__ClassZ@Base 15 ++ _D113TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D115TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 ++ _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 ++ _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 ++ _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 ++ _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 ++ _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 ++ _D11TypeInfo_Aa6__initZ@Base 15 ++ _D11TypeInfo_Aa6__vtblZ@Base 15 ++ _D11TypeInfo_Aa7__ClassZ@Base 15 ++ _D11TypeInfo_Ab6__initZ@Base 15 ++ _D11TypeInfo_Ab6__vtblZ@Base 15 ++ _D11TypeInfo_Ab7__ClassZ@Base 15 ++ _D11TypeInfo_Ac6__initZ@Base 15 ++ _D11TypeInfo_Ac6__vtblZ@Base 15 ++ _D11TypeInfo_Ac7__ClassZ@Base 15 ++ _D11TypeInfo_Ad6__initZ@Base 15 ++ _D11TypeInfo_Ad6__vtblZ@Base 15 ++ _D11TypeInfo_Ad7__ClassZ@Base 15 ++ _D11TypeInfo_Ae6__initZ@Base 15 ++ _D11TypeInfo_Ae6__vtblZ@Base 15 ++ _D11TypeInfo_Ae7__ClassZ@Base 15 ++ _D11TypeInfo_Af6__initZ@Base 15 ++ _D11TypeInfo_Af6__vtblZ@Base 15 ++ _D11TypeInfo_Af7__ClassZ@Base 15 ++ _D11TypeInfo_Ag6__initZ@Base 15 ++ _D11TypeInfo_Ag6__vtblZ@Base 15 ++ _D11TypeInfo_Ag7__ClassZ@Base 15 ++ _D11TypeInfo_Ah6__initZ@Base 15 ++ _D11TypeInfo_Ah6__vtblZ@Base 15 ++ _D11TypeInfo_Ah7__ClassZ@Base 15 ++ _D11TypeInfo_Ai6__initZ@Base 15 ++ _D11TypeInfo_Ai6__vtblZ@Base 15 ++ _D11TypeInfo_Ai7__ClassZ@Base 15 ++ _D11TypeInfo_Aj6__initZ@Base 15 ++ _D11TypeInfo_Aj6__vtblZ@Base 15 ++ _D11TypeInfo_Aj7__ClassZ@Base 15 ++ _D11TypeInfo_Ak6__initZ@Base 15 ++ _D11TypeInfo_Ak6__vtblZ@Base 15 ++ _D11TypeInfo_Ak7__ClassZ@Base 15 ++ _D11TypeInfo_Al6__initZ@Base 15 ++ _D11TypeInfo_Al6__vtblZ@Base 15 ++ _D11TypeInfo_Al7__ClassZ@Base 15 ++ _D11TypeInfo_Am6__initZ@Base 15 ++ _D11TypeInfo_Am6__vtblZ@Base 15 ++ _D11TypeInfo_Am7__ClassZ@Base 15 ++ _D11TypeInfo_Ao6__initZ@Base 15 ++ _D11TypeInfo_Ao6__vtblZ@Base 15 ++ _D11TypeInfo_Ao7__ClassZ@Base 15 ++ _D11TypeInfo_Ap6__initZ@Base 15 ++ _D11TypeInfo_Ap6__vtblZ@Base 15 ++ _D11TypeInfo_Ap7__ClassZ@Base 15 ++ _D11TypeInfo_Aq6__initZ@Base 15 ++ _D11TypeInfo_Aq6__vtblZ@Base 15 ++ _D11TypeInfo_Aq7__ClassZ@Base 15 ++ _D11TypeInfo_Ar6__initZ@Base 15 ++ _D11TypeInfo_Ar6__vtblZ@Base 15 ++ _D11TypeInfo_Ar7__ClassZ@Base 15 ++ _D11TypeInfo_As6__initZ@Base 15 ++ _D11TypeInfo_As6__vtblZ@Base 15 ++ _D11TypeInfo_As7__ClassZ@Base 15 ++ _D11TypeInfo_At6__initZ@Base 15 ++ _D11TypeInfo_At6__vtblZ@Base 15 ++ _D11TypeInfo_At7__ClassZ@Base 15 ++ _D11TypeInfo_Au6__initZ@Base 15 ++ _D11TypeInfo_Au6__vtblZ@Base 15 ++ _D11TypeInfo_Au7__ClassZ@Base 15 ++ _D11TypeInfo_Av6__initZ@Base 15 ++ _D11TypeInfo_Av6__vtblZ@Base 15 ++ _D11TypeInfo_Av7__ClassZ@Base 15 ++ _D11TypeInfo_Aw6__initZ@Base 15 ++ _D11TypeInfo_Aw6__vtblZ@Base 15 ++ _D11TypeInfo_Aw7__ClassZ@Base 15 ++ _D11TypeInfo_Oa6__initZ@Base 15 ++ _D11TypeInfo_Ou6__initZ@Base 15 ++ _D11TypeInfo_xa6__initZ@Base 15 ++ _D11TypeInfo_xb6__initZ@Base 15 ++ _D11TypeInfo_xd6__initZ@Base 15 ++ _D11TypeInfo_xe6__initZ@Base 15 ++ _D11TypeInfo_xf6__initZ@Base 15 ++ _D11TypeInfo_xh6__initZ@Base 15 ++ _D11TypeInfo_xi6__initZ@Base 15 ++ _D11TypeInfo_xk6__initZ@Base 15 ++ _D11TypeInfo_xm6__initZ@Base 15 ++ _D11TypeInfo_xt6__initZ@Base 15 ++ _D11TypeInfo_xv6__initZ@Base 15 ++ _D11TypeInfo_ya6__initZ@Base 15 ++ _D11TypeInfo_yk6__initZ@Base 15 ++ _D120TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 ++ _D12TypeInfo_AOa6__initZ@Base 15 ++ _D12TypeInfo_AOu6__initZ@Base 15 ++ _D12TypeInfo_Axa6__initZ@Base 15 ++ _D12TypeInfo_Axa6__vtblZ@Base 15 ++ _D12TypeInfo_Axa7__ClassZ@Base 15 ++ _D12TypeInfo_Axv6__initZ@Base 15 ++ _D12TypeInfo_Aya6__initZ@Base 15 ++ _D12TypeInfo_Aya6__vtblZ@Base 15 ++ _D12TypeInfo_Aya7__ClassZ@Base 15 ++ _D12TypeInfo_G8h6__initZ@Base 15 ++ _D12TypeInfo_Oxk6__initZ@Base 15 ++ _D12TypeInfo_Pxh6__initZ@Base 15 ++ _D12TypeInfo_Pxv6__initZ@Base 15 ++ _D12TypeInfo_xAa6__initZ@Base 15 ++ _D12TypeInfo_xAv6__initZ@Base 15 ++ _D12TypeInfo_xPh6__initZ@Base 15 ++ _D12TypeInfo_xPv6__initZ@Base 15 ++ _D12TypeInfo_yAa6__initZ@Base 15 ++ _D13TypeInfo_AAya6__initZ@Base 15 ++ _D13TypeInfo_AxPv6__initZ@Base 15 ++ _D13TypeInfo_AyAa6__initZ@Base 15 ++ _D13TypeInfo_Enum6__initZ@Base 15 ++ _D13TypeInfo_Enum6__vtblZ@Base 15 ++ _D13TypeInfo_Enum7__ClassZ@Base 15 ++ _D13TypeInfo_G12a6__initZ@Base 15 ++ _D13TypeInfo_G48a6__initZ@Base 15 ++ _D13TypeInfo_xAPv6__initZ@Base 15 ++ _D13TypeInfo_xAya6__initZ@Base 15 ++ _D13TypeInfo_xG8h6__initZ@Base 15 ++ _D14TypeInfo_Array6__initZ@Base 15 ++ _D14TypeInfo_Array6__vtblZ@Base 15 ++ _D14TypeInfo_Array7__ClassZ@Base 15 ++ _D14TypeInfo_AxAya6__initZ@Base 15 ++ _D14TypeInfo_Class6__initZ@Base 15 ++ _D14TypeInfo_Class6__vtblZ@Base 15 ++ _D14TypeInfo_Class7__ClassZ@Base 15 ++ _D14TypeInfo_Const6__initZ@Base 15 ++ _D14TypeInfo_Const6__vtblZ@Base 15 ++ _D14TypeInfo_Const7__ClassZ@Base 15 ++ _D14TypeInfo_HAxam6__initZ@Base 15 ++ _D14TypeInfo_Inout6__initZ@Base 15 ++ _D14TypeInfo_Inout6__vtblZ@Base 15 ++ _D14TypeInfo_Inout7__ClassZ@Base 15 ++ _D14TypeInfo_Tuple6__initZ@Base 15 ++ _D14TypeInfo_Tuple6__vtblZ@Base 15 ++ _D14TypeInfo_Tuple7__ClassZ@Base 15 ++ _D14TypeInfo_xAAya6__initZ@Base 15 ++ _D14TypeInfo_xG12a6__initZ@Base 15 ++ _D14TypeInfo_xG48a6__initZ@Base 15 ++ _D15TypeInfo_Shared6__initZ@Base 15 ++ _D15TypeInfo_Shared6__vtblZ@Base 15 ++ _D15TypeInfo_Shared7__ClassZ@Base 15 ++ _D15TypeInfo_Struct6__initZ@Base 15 ++ _D15TypeInfo_Struct6__vtblZ@Base 15 ++ _D15TypeInfo_Struct7__ClassZ@Base 15 ++ _D15TypeInfo_Vector6__initZ@Base 15 ++ _D15TypeInfo_Vector6__vtblZ@Base 15 ++ _D15TypeInfo_Vector7__ClassZ@Base 15 ++ _D16TypeInfo_HPxvAya6__initZ@Base 15 ++ _D16TypeInfo_Pointer6__initZ@Base 15 ++ _D16TypeInfo_Pointer6__vtblZ@Base 15 ++ _D16TypeInfo_Pointer7__ClassZ@Base 15 ++ _D17TypeInfo_Delegate6__initZ@Base 15 ++ _D17TypeInfo_Delegate6__vtblZ@Base 15 ++ _D17TypeInfo_Delegate7__ClassZ@Base 15 ++ _D17TypeInfo_Function6__initZ@Base 15 ++ _D17TypeInfo_Function6__vtblZ@Base 15 ++ _D17TypeInfo_Function7__ClassZ@Base 15 ++ _D18TypeInfo_FNbMxPvZm6__initZ@Base 15 ++ _D18TypeInfo_Interface6__initZ@Base 15 ++ _D18TypeInfo_Interface6__vtblZ@Base 15 ++ _D18TypeInfo_Interface7__ClassZ@Base 15 ++ _D18TypeInfo_Invariant6__initZ@Base 15 ++ _D18TypeInfo_Invariant6__vtblZ@Base 15 ++ _D18TypeInfo_Invariant7__ClassZ@Base 15 ++ _D18TypeInfo_xC6Object6__initZ@Base 15 ++ _D19TypeInfo_DFNbMxPvZm6__initZ@Base 15 ++ _D20TypeInfo_S2rt3aaA2AA6__initZ@Base 15 ++ _D20TypeInfo_S6object2AA6__initZ@Base 15 ++ _D20TypeInfo_StaticArray6__initZ@Base 15 ++ _D20TypeInfo_StaticArray6__vtblZ@Base 15 ++ _D20TypeInfo_StaticArray7__ClassZ@Base 15 ++ _D20TypeInfo_xDFNbMxPvZm6__initZ@Base 15 ++ _D22TypeInfo_FNbC6ObjectZv6__initZ@Base 15 ++ _D22TypeInfo_S2rt3aaA4Impl6__initZ@Base 15 ++ _D23TypeInfo_DFNbC6ObjectZv6__initZ@Base 15 ++ _D23TypeInfo_S2rt3aaA5Range6__initZ@Base 15 ++ _D24TypeInfo_S2rt3aaA6Bucket6__initZ@Base 15 ++ _D24TypeInfo_S2rt5tlsgc4Data6__initZ@Base 15 ++ _D24TypeInfo_xDFNbC6ObjectZv6__initZ@Base 15 ++ _D25TypeInfo_AssociativeArray6__initZ@Base 15 ++ _D25TypeInfo_AssociativeArray6__vtblZ@Base 15 ++ _D25TypeInfo_AssociativeArray7__ClassZ@Base 15 ++ _D25TypeInfo_AxDFNbC6ObjectZv6__initZ@Base 15 ++ _D25TypeInfo_S4core6memory2GC6__initZ@Base 15 ++ _D25TypeInfo_S6object7AARange6__initZ@Base 15 ++ _D25TypeInfo_xADFNbC6ObjectZv6__initZ@Base 15 ++ _D25TypeInfo_xS2rt3aaA6Bucket6__initZ@Base 15 ++ _D26TypeInfo_AxS2rt3aaA6Bucket6__initZ@Base 15 ++ _D26TypeInfo_S2rt6dmain25CArgs6__initZ@Base 15 ++ _D26TypeInfo_xAS2rt3aaA6Bucket6__initZ@Base 15 ++ _D27TypeInfo_S4core6int1284Cent6__initZ@Base 15 ++ _D27TypeInfo_S6object9Interface6__initZ@Base 15 ++ _D28TypeInfo_E2rt3aaA4Impl5Flags6__initZ@Base 15 ++ _D29TypeInfo_S2rt9profilegc5Entry6__initZ@Base 15 ++ _D29TypeInfo_S4core4time8Duration6__initZ@Base 15 ++ _D29TypeInfo_S4core5bitop7Split646__initZ@Base 15 ++ _D29TypeInfo_S4core7runtime5CArgs6__initZ@Base 15 ++ _D29TypeInfo_S6object10ModuleInfo6__initZ@Base 15 ++ _D29TypeInfo_xE2rt3aaA4Impl5Flags6__initZ@Base 15 ++ _D2rt10invariant_11__moduleRefZ@Base 15.2 ++ _D2rt10invariant_12__ModuleInfoZ@Base 15.2 ++ _D2rt10invariant_12_d_invariantFC6ObjectZv@Base 15.2 ++ _D2rt19sections_elf_shared18pinLoadedLibrariesFNbNiZPv@Base 15.2 ++ _D2rt19sections_elf_shared20unpinLoadedLibrariesFNbNiPvZv@Base 15.2 ++ _D2rt19sections_elf_shared22cleanupLoadedLibrariesFNbNiZv@Base 15.2 ++ _D2rt19sections_elf_shared22inheritLoadedLibrariesFNbNiPvZv@Base 15.2 ++ _D2rt19sections_elf_shared9sizeOfTLSFNbNiZm@Base 15.2 ++ _D2rt3aaA10allocEntryFMxPSQyQx4ImplMxPvZPv@Base 15 ++ _D2rt3aaA11__moduleRefZ@Base 15 ++ _D2rt3aaA12__ModuleInfoZ@Base 15 ++ _D2rt3aaA12allocBucketsFNaNbNemZASQBgQBg6Bucket@Base 15 ++ _D2rt3aaA2AA5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D2rt3aaA2AA6__initZ@Base 15 ++ _D2rt3aaA3mixFNaNbNiNfmZm@Base 15 ++ _D2rt3aaA4Impl11__xopEqualsMxFKxSQBfQBfQBeZb@Base 15 ++ _D2rt3aaA4Impl14findSlotInsertMNgFNaNbNimZPNgSQBsQBs6Bucket@Base 15 ++ _D2rt3aaA4Impl14findSlotLookupMNgFmMxPvMxC8TypeInfoZPNgSQCcQCc6Bucket@Base 15 ++ _D2rt3aaA4Impl3dimMxFNaNbNdNiNfZm@Base 15 ++ _D2rt3aaA4Impl4growMFNaNbMxC8TypeInfoZv@Base 15 ++ _D2rt3aaA4Impl4maskMxFNaNbNdNiZm@Base 15 ++ _D2rt3aaA4Impl5clearMFNaNbNeZv@Base 15 ++ _D2rt3aaA4Impl6__ctorMFNbNcMxC25TypeInfo_AssociativeArraymZSQCgQCgQCf@Base 15 ++ _D2rt3aaA4Impl6__initZ@Base 15 ++ _D2rt3aaA4Impl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D2rt3aaA4Impl6resizeMFNaNbmZv@Base 15 ++ _D2rt3aaA4Impl6shrinkMFNaNbMxC8TypeInfoZv@Base 15 ++ _D2rt3aaA4Impl9__xtoHashFNbNeKxSQBeQBeQBdZm@Base 15 ++ _D2rt3aaA5Range6__initZ@Base 15 ++ _D2rt3aaA6Bucket5emptyMxFNaNbNdNiZb@Base 15 ++ _D2rt3aaA6Bucket6__initZ@Base 15 ++ _D2rt3aaA6Bucket6filledMxFNaNbNdNiNfZb@Base 15 ++ _D2rt3aaA6Bucket7deletedMxFNaNbNdNiZb@Base 15 ++ _D2rt3aaA6talignFNaNbNiNfmmZm@Base 15 ++ _D2rt3aaA7hasDtorFNaNbxC8TypeInfoZb@Base 15 ++ _D2rt3aaA8calcHashFNbMxPvMxPSQBbQBb4ImplZm@Base 15 ++ _D2rt3aaA8nextpow2FNaNbNixmZm@Base 15 ++ _D2rt3aaA9getRTInfoFNaNbxC8TypeInfoZPyv@Base 15 ++ _D2rt3adi11__moduleRefZ@Base 15 ++ _D2rt3adi12__ModuleInfoZ@Base 15 ++ _D2rt3deh11__moduleRefZ@Base 15 ++ _D2rt3deh12__ModuleInfoZ@Base 15 ++ _D2rt4util7utility10safeAssertFNbNiNfbMAyaMQemZv@Base 15 ++ _D2rt4util7utility11__moduleRefZ@Base 15 ++ _D2rt4util7utility12__ModuleInfoZ@Base 15 ++ _D2rt4util7utility__T8_ComplexTdZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTdZQBzZb@Base 15 ++ _D2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 ++ _D2rt4util7utility__T8_ComplexTdZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTdZQByZm@Base 15 ++ _D2rt4util7utility__T8_ComplexTeZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTeZQBzZb@Base 15 ++ _D2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 ++ _D2rt4util7utility__T8_ComplexTeZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTeZQByZm@Base 15 ++ _D2rt4util7utility__T8_ComplexTfZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTfZQBzZb@Base 15 ++ _D2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 ++ _D2rt4util7utility__T8_ComplexTfZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTfZQByZm@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_c8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_j8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n4swapMxFNaNbNiNfPvQcZv@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n6equalsMxFNaNbNiNfIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n7compareMxFNaNbNiNfIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n7getHashMxFNaNbNiNfMxPvZm@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n8toStringMxFNaNbNiNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_o8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_p8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_q8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_r8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_v5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_v7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_v8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Ac8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Aj8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Ao8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Ap8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Aq8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Ar8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Av4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Av8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11__moduleRefZ@Base 15 ++ _D2rt4util8typeinfo12TypeInfo_Aya8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo12__ModuleInfoZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNeZ1cyG1EQEeQEeQCrQCm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNeZ1cyG1EQEfQEfQCsQCn@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNeZ1cyG1EQEgQEgQCtQCo@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNeZ1cyG1a@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNeZ1cyG1d@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNeZ1cyG1e@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNeZ1cyG1f@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNeZ1cyG1u@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNeZ1cyG1w@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8toStringMxFNbNfZAya@Base 15 ++ _D2rt5cast_11__moduleRefZ@Base 15 ++ _D2rt5cast_12__ModuleInfoZ@Base 15 ++ _D2rt5cast_18areClassInfosEqualFNaNbNiNfMxC14TypeInfo_ClassMxQtZb@Base 15 ++ _D2rt5minfo11ModuleGroup11__xopEqualsMxFKxSQBpQBpQBmZb@Base 15 ++ _D2rt5minfo11ModuleGroup11runTlsCtorsMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup11runTlsDtorsMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup12genCyclePathMFNbmmAAiZAm@Base 15 ++ _D2rt5minfo11ModuleGroup4freeMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup6__ctorMFNbNcNiAyPS6object10ModuleInfoZSQCkQCkQCh@Base 15 ++ _D2rt5minfo11ModuleGroup6__initZ@Base 15 ++ _D2rt5minfo11ModuleGroup7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 ++ _D2rt5minfo11ModuleGroup8runCtorsMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup8runDtorsMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup9__xtoHashFNbNeKxSQBoQBoQBlZm@Base 15 ++ _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 ++ _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZv@Base 15 ++ _D2rt5minfo11ModuleGroup9sortCtorsMFZv@Base 15 ++ _D2rt5minfo11__moduleRefZ@Base 15 ++ _D2rt5minfo12__ModuleInfoZ@Base 15 ++ _D2rt5minfo17moduleinfos_applyFMDFyPS6object10ModuleInfoZiZi@Base 15 ++ _D2rt5tlsgc11__moduleRefZ@Base 15 ++ _D2rt5tlsgc12__ModuleInfoZ@Base 15 ++ _D2rt5tlsgc4Data6__initZ@Base 15 ++ _D2rt5tlsgc4initFNbNiZPv@Base 15 ++ _D2rt5tlsgc4scanFNbPvMDFNbQhQjZvZv@Base 15 ++ _D2rt5tlsgc7destroyFNbNiPvZv@Base 15 ++ _D2rt6aApply11__moduleRefZ@Base 15 ++ _D2rt6aApply12__ModuleInfoZ@Base 15 ++ _D2rt6config11__moduleRefZ@Base 15 ++ _D2rt6config12__ModuleInfoZ@Base 15 ++ _D2rt6config13rt_linkOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 ++ _D2rt6config15rt_configOptionFNbNiAyaMDFNbNiQkZQnbZQr@Base 15 ++ _D2rt6config16rt_cmdlineOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 ++ _D2rt6config16rt_envvarsOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 ++ _D2rt6dmain210_initCountOm@Base 15 ++ _D2rt6dmain211__moduleRefZ@Base 15 ++ _D2rt6dmain212__ModuleInfoZ@Base 15 ++ _D2rt6dmain212traceHandlerPFPvZC6object9Throwable9TraceInfo@Base 15 ++ _D2rt6dmain214UnitTestResult6__initZ@Base 15 ++ _D2rt6dmain215formatThrowableFC6object9ThrowableMDFNbIAaZvZv@Base 15 ++ _D2rt6dmain216traceDeallocatorPFNbC6object9Throwable9TraceInfoZv@Base 15 ++ _D2rt6dmain220isRuntimeInitializedFNbNiZb@Base 15 ++ _D2rt6dmain221parseExceptionOptionsFNbNiZb@Base 15 ++ _D2rt6dmain25CArgs6__initZ@Base 15 ++ _D2rt6dmain26_cArgsSQsQr5CArgs@Base 15 ++ _D2rt6dmain27_d_argsAAya@Base 15 ++ _D2rt6memory11__moduleRefZ@Base 15 ++ _D2rt6memory12__ModuleInfoZ@Base 15 ++ _D2rt6memory16initStaticDataGCFZv@Base 15 ++ _D2rt7aApplyR11__moduleRefZ@Base 15 ++ _D2rt7aApplyR12__ModuleInfoZ@Base 15 ++ _D2rt7ehalloc11__moduleRefZ@Base 15 ++ _D2rt7ehalloc12__ModuleInfoZ@Base 15 ++ _D2rt8arraycat11__moduleRefZ@Base 15 ++ _D2rt8arraycat12__ModuleInfoZ@Base 15 ++ _D2rt8lifetime11__moduleRefZ@Base 15 ++ _D2rt8lifetime11__typeAttrsFNaNbMxC8TypeInfoPvZk@Base 15 ++ _D2rt8lifetime11hasPostblitFNaNbIC8TypeInfoZb@Base 15 ++ _D2rt8lifetime11newCapacityFmmZ9multTableyG64m@Base 15 ++ _D2rt8lifetime11newCapacityFmmZm@Base 15 ++ _D2rt8lifetime12__ModuleInfoZ@Base 15 ++ _D2rt8lifetime12__doPostblitFPvmxC8TypeInfoZv@Base 15 ++ _D2rt8lifetime14collectHandlerPFC6ObjectZb@Base 15 ++ _D2rt8lifetime14finalize_arrayFPvmxC15TypeInfo_StructZv@Base 15 ++ _D2rt8lifetime15finalize_structFNbPvC15TypeInfo_StructZv@Base 15 ++ _D2rt8lifetime19_d_arraysetlengthiTUxC8TypeInfomPAvZ12doInitializeFNaNbNiPvQcxAvZv@Base 15 ++ _D2rt8lifetime9unqualifyFNaNbNiNkMNgC8TypeInfoZNgQn@Base 15 ++ _D2rt8monitor_10getMonitorFNaNbNiC6ObjectZPOSQBrQBr7Monitor@Base 15 ++ _D2rt8monitor_10setMonitorFNaNbNiC6ObjectPOSQBqQBq7MonitorZv@Base 15 ++ _D2rt8monitor_11__moduleRefZ@Base 15 ++ _D2rt8monitor_11unlockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 ++ _D2rt8monitor_12__ModuleInfoZ@Base 15 ++ _D2rt8monitor_12destroyMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 ++ _D2rt8monitor_12disposeEventFNbPSQBfQBf7MonitorC6ObjectZv@Base 15 ++ _D2rt8monitor_13deleteMonitorFNbNiPSQBiQBi7MonitorZv@Base 15 ++ _D2rt8monitor_13ensureMonitorFNbC6ObjectZPOSQBqQBq7Monitor@Base 15 ++ _D2rt8monitor_4gmtxS4core3sys5posixQk5types15pthread_mutex_t@Base 15 ++ _D2rt8monitor_5gattrS4core3sys5posixQk5types19pthread_mutexattr_t@Base 15 ++ _D2rt8monitor_7Monitor11__xopEqualsMxFKxSQBnQBnQBhZb@Base 15 ++ _D2rt8monitor_7Monitor6__initZ@Base 15 ++ _D2rt8monitor_7Monitor9__xtoHashFNbNeKxSQBmQBmQBgZm@Base 15 ++ _D2rt8monitor_7monitorFNaNbNcNdNiNkMC6ObjectZOPSQBuQBu7Monitor@Base 15 ++ _D2rt8monitor_9initMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 ++ _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 ++ _D2rt8sections11__moduleRefZ@Base 15 ++ _D2rt8sections12__ModuleInfoZ@Base 15 ++ _D2rt8sections20scanDataSegPreciselyFNbNiZ3errC6object5Error@Base 15 ++ _D2rt8sections20scanDataSegPreciselyFNbNiZb@Base 15 ++ _D2rt9critical_11__moduleRefZ@Base 15 ++ _D2rt9critical_11ensureMutexFNbPOSQBgQBg18D_CRITICAL_SECTIONZv@Base 15 ++ _D2rt9critical_12__ModuleInfoZ@Base 15 ++ _D2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 ++ _D2rt9critical_3gcsOSQtQs18D_CRITICAL_SECTION@Base 15 ++ _D2rt9critical_4headOPSQvQu18D_CRITICAL_SECTION@Base 15 ++ _D2rt9profilegc10accumulateFNbNiAyakQeQgmZv@Base 15 ++ _D2rt9profilegc11__moduleRefZ@Base 15 ++ _D2rt9profilegc11logfilenameAya@Base 15 ++ _D2rt9profilegc12__ModuleInfoZ@Base 15 ++ _D2rt9profilegc15globalNewCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQDcQDc5EntryZQBb@Base 15 ++ _D2rt9profilegc18_staticDtor_L93_C1FZ11__critsec20OPv@Base 15.2 ++ _D2rt9profilegc18_staticDtor_L93_C1FZv@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result11__xopEqualsMxFKxSQCqQCqQCjFZQBlZb@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9__xtoHashFNbNeKxSQCpQCpQCiFZQBkZm@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9qsort_cmpUNbNiMxPvMxQeZi@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZv@Base 15.2 ++ _D2rt9profilegc5Entry6__initZ@Base 15 ++ _D2rt9profilegc6bufferAa@Base 15 ++ _D2rt9profilegc9newCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQCvQCv5EntryZQBb@Base 15 ++ _D30TypeInfo_E4core4time9ClockType6__initZ@Base 15 ++ _D30TypeInfo_S2rt8monitor_7Monitor6__initZ@Base 15 ++ _D30TypeInfo_S4core5bitop8BitRange6__initZ@Base 15 ++ _D30TypeInfo_xS2rt9profilegc5Entry6__initZ@Base 15 ++ _D30TypeInfo_yS6object10ModuleInfo6__initZ@Base 15 ++ _D31TypeInfo_C3gcc3deh11CxxTypeInfo6__initZ@Base 15 ++ _D31TypeInfo_PyS6object10ModuleInfo6__initZ@Base 15 ++ _D31TypeInfo_S3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D31TypeInfo_S4core5cpuid9CacheInfo6__initZ@Base 15 ++ _D31TypeInfo_S4core6memory2GC5Stats6__initZ@Base 15 ++ _D31TypeInfo_S4core6memory8BlkInfo_6__initZ@Base 15 ++ _D31TypeInfo_S4core7runtime7Runtime6__initZ@Base 15 ++ _D31TypeInfo_S4core8demangle6Buffer6__initZ@Base 15 ++ _D31TypeInfo_yPS6object10ModuleInfo6__initZ@Base 15 ++ _D32TypeInfo_AyPS6object10ModuleInfo6__initZ@Base 15 ++ _D32TypeInfo_C6object6Object7Monitor6__initZ@Base 15 ++ _D32TypeInfo_S2rt5minfo11ModuleGroup6__initZ@Base 15 ++ _D32TypeInfo_S4core2gc6config6Config6__initZ@Base 15 ++ _D32TypeInfo_S4core4stdc4fenv6fenv_t6__initZ@Base 15 ++ _D32TypeInfo_S4core4sync5event5Event6__initZ@Base 15 ++ _D32TypeInfo_S4core8demangle7NoHooks6__initZ@Base 15 ++ _D32TypeInfo_S6object13__va_list_tag6__initZ@Base 15 ++ _D32TypeInfo_xPyS6object10ModuleInfo6__initZ@Base 15 ++ _D32TypeInfo_xS3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D32TypeInfo_xS4core8demangle6Buffer6__initZ@Base 15 ++ _D32TypeInfo_yS4core5cpuid9CacheInfo6__initZ@Base 15 ++ _D33TypeInfo_AxPyS6object10ModuleInfo6__initZ@Base 15 ++ _D33TypeInfo_E4core6memory2GC7BlkAttr6__initZ@Base 15 ++ _D33TypeInfo_E4core8demangle8TypeCtor6__initZ@Base 15 ++ _D33TypeInfo_E4core9attribute7mustuse6__initZ@Base 15 ++ _D33TypeInfo_OC4core4sync5mutex5Mutex6__initZ@Base 15 ++ _D33TypeInfo_PxS3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D33TypeInfo_S4core2gc8registry5Entry6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf32_Lib6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf32_Rel6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf32_Sym6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf64_Lib6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf64_Rel6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf64_Sym6__initZ@Base 15 ++ _D33TypeInfo_S4core4stdc5stdio6fpos_t6__initZ@Base 15 ++ _D33TypeInfo_S4core4stdc6locale5lconv6__initZ@Base 15 ++ _D33TypeInfo_S4core4stdc6stdlib5div_t6__initZ@Base 15 ++ _D33TypeInfo_S4core8demangle8BufSlice6__initZ@Base 15 ++ _D33TypeInfo_S6object14OffsetTypeInfo6__initZ@Base 15 ++ _D33TypeInfo_xAPyS6object10ModuleInfo6__initZ@Base 15 ++ _D33TypeInfo_xAyPS6object10ModuleInfo6__initZ@Base 15 ++ _D33TypeInfo_xC6object6Object7Monitor6__initZ@Base 15 ++ _D33TypeInfo_xPS3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D33TypeInfo_xS2rt5minfo11ModuleGroup6__initZ@Base 15 ++ _D33TypeInfo_xS4core4sync5event5Event6__initZ@Base 15 ++ _D33TypeInfo_xS4core8demangle7NoHooks6__initZ@Base 15 ++ _D34TypeInfo_C4core2gc11gcinterface2GC6__initZ@Base 15 ++ _D34TypeInfo_E3gcc6config11ThreadModel6__initZ@Base 15 ++ _D34TypeInfo_S4core3sys5posix6direntQh6__initZ@Base 15 ++ _D34TypeInfo_S4core4stdc6stdlib6ldiv_t6__initZ@Base 15 ++ _D34TypeInfo_S4core4time12TickDuration6__initZ@Base 15 ++ _D34TypeInfo_S4core5cpuid11CpuFeatures6__initZ@Base 15 ++ _D35TypeInfo_E4core6atomic11MemoryOrder6__initZ@Base 15 ++ _D35TypeInfo_S3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Move6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Phdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Rela6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Shdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Move6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Phdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Rela6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Shdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys5linux7ifaddrsQi6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys5posix3aio5aiocb6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys5posix3grp5group6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys5posix7termiosQi6__initZ@Base 15 ++ _D35TypeInfo_S4core4stdc5stdio8_IO_FILE6__initZ@Base 15 ++ _D35TypeInfo_S4core4stdc6stdlib7lldiv_t6__initZ@Base 15 ++ _D35TypeInfo_S4core8internal5newaa4Impl6__initZ@Base 15 ++ _D35TypeInfo_S4core9attribute9gnuAbiTag6__initZ@Base 15 ++ _D36TypeInfo_E4core4stdc6config8__c_long6__initZ@Base 15 ++ _D36TypeInfo_FZC4core2gc11gcinterface2GC6__initZ@Base 15 ++ _D36TypeInfo_S2rt6dmain214UnitTestResult6__initZ@Base 15 ++ _D36TypeInfo_S3gcc9backtrace10SymbolInfo6__initZ@Base 15 ++ _D36TypeInfo_S4core2gc11gcinterface4Root6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys3elf11Elf32_gptab6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys3elf11Elf_Options6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys5linux2fs7fsxattr6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys5posix3pwd6passwd6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys5posix6dirent3DIR6__initZ@Base 15 ++ _D36TypeInfo_xS3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D37TypeInfo_C6object9Throwable9TraceInfo6__initZ@Base 15 ++ _D37TypeInfo_E4core4stdc6config9__c_ulong6__initZ@Base 15 ++ _D37TypeInfo_E4core9attribute10standalone6__initZ@Base 15 ++ _D37TypeInfo_PFZC4core2gc11gcinterface2GC6__initZ@Base 15 ++ _D37TypeInfo_PxS3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D37TypeInfo_S3gcc8sections3elf9ThreadDSO6__initZ@Base 15 ++ _D37TypeInfo_S3gcc8sections3elf9tls_index6__initZ@Base 15 ++ _D37TypeInfo_S4core2gc11gcinterface5Range6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys3elf12Elf32_Verdef6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys3elf12Elf64_Verdef6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posix3aio7aiocb646__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posix4poll6pollfd6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posix5fcntl5flock6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posixQk3uio5iovec6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posixQk7utsnameQi6__initZ@Base 15 ++ _D37TypeInfo_S4core4stdc6wchar_9mbstate_t6__initZ@Base 15 ++ _D37TypeInfo_S4core6stdcpp4new_9nothrow_t6__initZ@Base 15 ++ _D37TypeInfo_S4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D37TypeInfo_xPS3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D38TypeInfo_S3gcc3deh18CxaExceptionHeader6__initZ@Base 15 ++ _D38TypeInfo_S4core2gc6config11PrettyBytes6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_Verneed6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf64_Verneed6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5linux4link7r_debug6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5posix4stdc4time2tm6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5posix5netdb6netent6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5posix6locale5lconv6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 ++ _D38TypeInfo_S4core8internal5newaa7AAShell6__initZ@Base 15 ++ _D38TypeInfo_S4core8internal7convert5Float6__initZ@Base 15 ++ _D38TypeInfo_xPFZC4core2gc11gcinterface2GC6__initZ@Base 15 ++ _D38TypeInfo_xS4core2gc11gcinterface5Range6__initZ@Base 15 ++ _D38TypeInfo_xS4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D39TypeInfo_AC4core6thread8osthread6Thread6__initZ@Base 15 ++ _D39TypeInfo_AxS4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D39TypeInfo_S3gcc9backtrace13SymbolOrError6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5linux4link8link_map6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix4time8timespec6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix5netdb7hostent6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix5netdb7servent6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix5utime7utimbuf6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix6signal6sigval6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posixQk3msg7msginfo6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posixQk4stat6stat_t6__initZ@Base 15 ++ _D39TypeInfo_S4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 ++ _D39TypeInfo_S4core6memory2GC12ProfileStats6__initZ@Base 15 ++ _D39TypeInfo_S4core6thread7context8Callable6__initZ@Base 15 ++ _D39TypeInfo_S4core7runtime14UnitTestResult6__initZ@Base 15 ++ _D39TypeInfo_S4core8internal2gc4bits6GCBits6__initZ@Base 15 ++ _D39TypeInfo_xAS4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D3etc8valgrindQj11__moduleRefZ@Base 15 ++ _D3etc8valgrindQj12__ModuleInfoZ@Base 15 ++ _D3gcc10attributes11__moduleRefZ@Base 15 ++ _D3gcc10attributes12__ModuleInfoZ@Base 15 ++ _D3gcc12libbacktrace11__moduleRefZ@Base 15 ++ _D3gcc12libbacktrace12__ModuleInfoZ@Base 15 ++ _D3gcc12libbacktrace15backtrace_state6__initZ@Base 15 ++ _D3gcc3deh11CxxTypeInfo11__InterfaceZ@Base 15 ++ _D3gcc3deh11__moduleRefZ@Base 15 ++ _D3gcc3deh12__ModuleInfoZ@Base 15 ++ _D3gcc3deh12getClassInfoFNiPSQBb6unwind7generic17_Unwind_ExceptionPxhZC14TypeInfo_Class@Base 15 ++ _D3gcc3deh15ExceptionHeader11__xopEqualsMxFKxSQBsQBrQBqZb@Base 15 ++ _D3gcc3deh15ExceptionHeader17toExceptionHeaderFNiPSQBx6unwind7generic17_Unwind_ExceptionZPSQDlQDkQDj@Base 15 ++ _D3gcc3deh15ExceptionHeader3popFNiZPSQBjQBiQBh@Base 15 ++ _D3gcc3deh15ExceptionHeader4freeFNiPSQBjQBiQBhZv@Base 15 ++ _D3gcc3deh15ExceptionHeader4pushMFNiZv@Base 15 ++ _D3gcc3deh15ExceptionHeader4saveFNiPSQBj6unwind7generic17_Unwind_ExceptionmiPxhmZv@Base 15 ++ _D3gcc3deh15ExceptionHeader5stackPSQBhQBgQBf@Base 15 ++ _D3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D3gcc3deh15ExceptionHeader6createFNiC6object9ThrowableZPSQCeQCdQCc@Base 15 ++ _D3gcc3deh15ExceptionHeader7restoreFNiPSQBm6unwind7generic17_Unwind_ExceptionJiJPxhJmJmZv@Base 15 ++ _D3gcc3deh15ExceptionHeader9__xtoHashFNbNeKxSQBrQBqQBpZm@Base 15 ++ _D3gcc3deh15ExceptionHeader9ehstorageSQBkQBjQBi@Base 15 ++ _D3gcc3deh17__gdc_personalityFimPSQBg6unwind7generic17_Unwind_ExceptionPSQCtQBnQBj15_Unwind_ContextZk@Base 15 ++ _D3gcc3deh17actionTableLookupFiPSQBf6unwind7generic17_Unwind_ExceptionPxhQdmmQhhJbJbZi@Base 15 ++ _D3gcc3deh18CONTINUE_UNWINDINGFPSQBf6unwind7generic17_Unwind_ExceptionPSQCsQBnQBj15_Unwind_ContextZk@Base 15 ++ _D3gcc3deh18CxaExceptionHeader14getAdjustedPtrFPSQBv6unwind7generic17_Unwind_ExceptionCQDhQDg11CxxTypeInfoZPv@Base 15 ++ _D3gcc3deh18CxaExceptionHeader17toExceptionHeaderFNiPSQCa6unwind7generic17_Unwind_ExceptionZPSQDoQDnQDm@Base 15 ++ _D3gcc3deh18CxaExceptionHeader4saveFNiPSQBm6unwind7generic17_Unwind_ExceptionPvZv@Base 15 ++ _D3gcc3deh18CxaExceptionHeader6__initZ@Base 15 ++ _D3gcc3deh19isGdcExceptionClassFNimZb@Base 15 ++ _D3gcc3deh19isGxxExceptionClassFNimZb@Base 15 ++ _D3gcc3deh20isDependentExceptionFNimZb@Base 15 ++ _D3gcc3deh8_d_throwUC6object9ThrowableZ17exception_cleanupUNikPSQCk6unwind7generic17_Unwind_ExceptionZv@Base 15 ++ _D3gcc3deh8scanLSDAFPxhmiPSQz6unwind7generic17_Unwind_ExceptionPSQClQBnQBj15_Unwind_ContextmJmJiZk@Base 15 ++ _D3gcc3deh9terminateFNiAyakZ11terminatingb@Base 15 ++ _D3gcc3deh9terminateFNiAyakZv@Base 15 ++ _D3gcc4simd11__moduleRefZ@Base 15 ++ _D3gcc4simd12__ModuleInfoZ@Base 15 ++ _D3gcc6config11__moduleRefZ@Base 15 ++ _D3gcc6config12__ModuleInfoZ@Base 15 ++ _D3gcc6emutls11__moduleRefZ@Base 15 ++ _D3gcc6emutls12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind10arm_common11__moduleRefZ@Base 15 ++ _D3gcc6unwind10arm_common12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind11__moduleRefZ@Base 15 ++ _D3gcc6unwind12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind2pe11__moduleRefZ@Base 15 ++ _D3gcc6unwind2pe12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind2pe12read_sleb128FNiKPxhZl@Base 15 ++ _D3gcc6unwind2pe12read_uleb128FNiKPxhZm@Base 15 ++ _D3gcc6unwind2pe18read_encoded_valueFNiPSQBnQBm7generic15_Unwind_ContexthKPxhZm@Base 15 ++ _D3gcc6unwind2pe21base_of_encoded_valueFNihPSQBrQBq7generic15_Unwind_ContextZm@Base 15 ++ _D3gcc6unwind2pe21size_of_encoded_valueFNihZk@Base 15 ++ _D3gcc6unwind2pe28read_encoded_value_with_baseFNihmKPxhZm@Base 15 ++ _D3gcc6unwind3arm11__moduleRefZ@Base 15 ++ _D3gcc6unwind3arm12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind3c6x11__moduleRefZ@Base 15 ++ _D3gcc6unwind3c6x12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind7generic11__moduleRefZ@Base 15 ++ _D3gcc6unwind7generic12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 ++ _D3gcc7gthread11__moduleRefZ@Base 15 ++ _D3gcc7gthread12__ModuleInfoZ@Base 15 ++ _D3gcc7gthread18__gthread_active_pFNbNiZi@Base 15 ++ _D3gcc8builtins11__moduleRefZ@Base 15 ++ _D3gcc8builtins12__ModuleInfoZ@Base 15 ++ _D3gcc8builtins13__va_list_tag6__initZ@Base 15 ++ _D3gcc8sections11__moduleRefZ@Base 15 ++ _D3gcc8sections12__ModuleInfoZ@Base 15 ++ _D3gcc8sections3elf10_rtLoadingb@Base 15 ++ _D3gcc8sections3elf11__moduleRefZ@Base 15 ++ _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZ1xS4core8internal9container5array__T5ArrayTSQDgQDfQCz9ThreadDSOZQBc@Base 15 ++ _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZS4core8internal9container5array__T5ArrayTSQDeQDdQCx9ThreadDSOZQBc@Base 15 ++ _D3gcc8sections3elf11getTLSRangeFNbNimmZAv@Base 15 ++ _D3gcc8sections3elf12__ModuleInfoZ@Base 15 ++ _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZ1xS4core8internal9container7hashtab__T7HashTabTPvTPSQDpQDoQDi3DSOZQBc@Base 15 ++ _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZS4core8internal9container7hashtab__T7HashTabTPvTPSQDnQDmQDg3DSOZQBc@Base 15 ++ _D3gcc8sections3elf12decThreadRefFPSQBiQBhQBb3DSObZv@Base 15 ++ _D3gcc8sections3elf12dsoForHandleFNbNiPvZPSQBpQBoQBi3DSO@Base 15 ++ _D3gcc8sections3elf12finiSectionsFNbNiZv@Base 15 ++ _D3gcc8sections3elf12incThreadRefFPSQBiQBhQBb3DSObZv@Base 15 ++ _D3gcc8sections3elf12initSectionsFNbNiZv@Base 15 ++ _D3gcc8sections3elf12scanSegmentsFNbNiKxS4core3sys5linux4link12dl_phdr_infoPSQCxQCwQCq3DSOZv@Base 15 ++ _D3gcc8sections3elf13findThreadDSOFNbNiPSQBnQBmQBg3DSOZPSQCdQCcQBw9ThreadDSO@Base 15 ++ _D3gcc8sections3elf13finiTLSRangesFNbNiPS4core8internal9container5array__T5ArrayTSQDcQDbQCv9ThreadDSOZQBcZv@Base 15 ++ _D3gcc8sections3elf13handleForAddrFNbNiPvZQd@Base 15 ++ _D3gcc8sections3elf13handleForNameFNbNixPaZPv@Base 15 ++ _D3gcc8sections3elf13initTLSRangesFNbNiZPS4core8internal9container5array__T5ArrayTSQDdQDcQCw9ThreadDSOZQBc@Base 15 ++ _D3gcc8sections3elf13runFinalizersFPSQBjQBiQBc3DSOZv@Base 15 ++ _D3gcc8sections3elf13scanTLSRangesFNbPS4core8internal9container5array__T5ArrayTSQDaQCzQCt9ThreadDSOZQBcMDFNbPvQcZvZv@Base 15 ++ _D3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 ++ _D3gcc8sections3elf15getDependenciesFNbNiKxS4core3sys5linux4link12dl_phdr_infoKSQBk8internal9container5array__T5ArrayTPSQEoQEnQEh3DSOZQxZv@Base 15 ++ _D3gcc8sections3elf15setDSOForHandleFNbNiPSQBpQBoQBi3DSOPvZv@Base 15 ++ _D3gcc8sections3elf16linkMapForHandleFNbNiPvZPS4core3sys5linux4link8link_map@Base 15 ++ _D3gcc8sections3elf16registerGCRangesFNbNiPSQBqQBpQBj3DSOZv@Base 15 ++ _D3gcc8sections3elf17_handleToDSOMutexS4core3sys5posixQk5types15pthread_mutex_t@Base 15 ++ _D3gcc8sections3elf17unsetDSOForHandleFNbNiPSQBrQBqQBk3DSOPvZv@Base 15 ++ _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 ++ _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ8callbackUNbNiQBzmPvZi@Base 15 ++ _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZb@Base 15 ++ _D3gcc8sections3elf18findSegmentForAddrFNbNiKxS4core3sys5linux4link12dl_phdr_infoIPvPSQBnQBlQCz10Elf64_PhdrZb@Base 15 ++ _D3gcc8sections3elf18unregisterGCRangesFNbNiPSQBsQBrQBl3DSOZv@Base 15 ++ _D3gcc8sections3elf20runModuleDestructorsFPSQBqQBpQBj3DSObZv@Base 15 ++ _D3gcc8sections3elf21runModuleConstructorsFPSQBrQBqQBk3DSObZv@Base 15 ++ _D3gcc8sections3elf3DSO11__fieldDtorMFNbNiZv@Base 15 ++ _D3gcc8sections3elf3DSO11__invariantMxFZv@Base 15 ++ _D3gcc8sections3elf3DSO11__xopEqualsMxFKxSQBoQBnQBhQBgZb@Base 15 ++ _D3gcc8sections3elf3DSO11moduleGroupMNgFNbNcNdNiNjZNgS2rt5minfo11ModuleGroup@Base 15 ++ _D3gcc8sections3elf3DSO12__invariant0MxFZv@Base 15 ++ _D3gcc8sections3elf3DSO14opApplyReverseFMDFKSQBrQBqQBkQBjZiZi@Base 15 ++ _D3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D3gcc8sections3elf3DSO7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 ++ _D3gcc8sections3elf3DSO7opApplyFMDFKSQBjQBiQBcQBbZiZi@Base 15 ++ _D3gcc8sections3elf3DSO8gcRangesMNgFNbNdNiZANgAv@Base 15 ++ _D3gcc8sections3elf3DSO8opAssignMFNbNcNiNjSQBpQBoQBiQBhZQo@Base 15 ++ _D3gcc8sections3elf3DSO8tlsRangeMxFNbNiZAv@Base 15 ++ _D3gcc8sections3elf3DSO9__xtoHashFNbNeKxSQBnQBmQBgQBfZm@Base 15 ++ _D3gcc8sections3elf7freeDSOFNbNiPSQBgQBfQz3DSOZv@Base 15 ++ _D3gcc8sections3elf9ThreadDSO11__xopEqualsMxFKxSQBuQBtQBnQBmZb@Base 15 ++ _D3gcc8sections3elf9ThreadDSO14updateTLSRangeMFNbNiZv@Base 15 ++ _D3gcc8sections3elf9ThreadDSO6__initZ@Base 15 ++ _D3gcc8sections3elf9ThreadDSO9__xtoHashFNbNeKxSQBtQBsQBmQBlZm@Base 15 ++ _D3gcc8sections3elf9finiLocksFNbNiZv@Base 15 ++ _D3gcc8sections3elf9initLocksFNbNiZv@Base 15 ++ _D3gcc8sections3elf9tls_index6__initZ@Base 15 ++ _D3gcc8sections3elf__T7toRangeTyPS6object10ModuleInfoZQBgFNaNbNiPyQBiQfZAyQBq@Base 15 ++ _D3gcc8sections5macho11__moduleRefZ@Base 15 ++ _D3gcc8sections5macho12__ModuleInfoZ@Base 15 ++ _D3gcc8sections6common10safeAssertFNbNiNfbMAyaMQemZv@Base 15 ++ _D3gcc8sections6common11__moduleRefZ@Base 15 ++ _D3gcc8sections6common12__ModuleInfoZ@Base 15 ++ _D3gcc8sections6pecoff11__moduleRefZ@Base 15 ++ _D3gcc8sections6pecoff12__ModuleInfoZ@Base 15 ++ _D3gcc9attribute11__moduleRefZ@Base 15 ++ _D3gcc9attribute12__ModuleInfoZ@Base 15 ++ _D3gcc9backtrace10SymbolInfo6__initZ@Base 15 ++ _D3gcc9backtrace10formatLineFxSQBdQBc10SymbolInfoNkKG1536aZAa@Base 15 ++ _D3gcc9backtrace11__moduleRefZ@Base 15 ++ _D3gcc9backtrace12LibBacktrace11initializedb@Base 15 ++ _D3gcc9backtrace12LibBacktrace16initLibBacktraceFNiZv@Base 15 ++ _D3gcc9backtrace12LibBacktrace5statePSQBk12libbacktrace15backtrace_state@Base 15 ++ _D3gcc9backtrace12LibBacktrace6__ctorMFNiiZCQBqQBpQBi@Base 15 ++ _D3gcc9backtrace12LibBacktrace6__initZ@Base 15 ++ _D3gcc9backtrace12LibBacktrace6__vtblZ@Base 15 ++ _D3gcc9backtrace12LibBacktrace7__ClassZ@Base 15 ++ _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKSQBuQBt13SymbolOrErrorZiZi@Base 15 ++ _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 ++ _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 ++ _D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 ++ _D3gcc9backtrace12__ModuleInfoZ@Base 15 ++ _D3gcc9backtrace13SymbolOrError6__initZ@Base 15 ++ _D3gcc9backtrace18SymbolCallbackInfo5resetMFZv@Base 15 ++ _D3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 ++ _D3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 ++ _D40TypeInfo_E4core6stdcpp4new_11align_val_t6__initZ@Base 15 ++ _D40TypeInfo_E4core8demangle14FuncAttributes6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5linux4tipc9tipc_name6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5linux5input8input_id6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posix5netdb8addrinfo6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posix5netdb8protoent6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posix6signal7stack_t6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk4time7timeval6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk5ioctl6termio6__initZ@Base 15 ++ _D41TypeInfo_E4core3sys5posixQk4wait8idtype_t6__initZ@Base 15 ++ _D41TypeInfo_E4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 ++ _D41TypeInfo_E4core4stdc6config12__c_longlong6__initZ@Base 15 ++ _D41TypeInfo_E4core8internal5newaa4Impl5Flags6__initZ@Base 15 ++ _D41TypeInfo_OC4core4sync9condition9Condition6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux5input9ff_effect6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux5input9ff_replay6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posix6signal8sigevent6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posix6signal8sigset_t6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posix6signal8sigstack6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posix9semaphore5sem_t6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posixQk6select6fd_set6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posixQk6socket6linger6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posixQk6socket6msghdr6__initZ@Base 15 ++ _D42TypeInfo_E4core4stdc6config13__c_ulonglong6__initZ@Base 15 ++ _D42TypeInfo_HC4core6thread8osthread6ThreadQBd6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5linux2fs12fstrim_range6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5linux4tipc10tipc_event6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posix4time10itimerspec6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posix6signal9siginfo_t6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posixQk4time9itimerval6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posixQk5ioctl8termios26__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 ++ _D42TypeInfo_S4core8demangle16ManglingFlagInfo6__initZ@Base 15 ++ _D42TypeInfo_S4core8internal8spinlock8SpinLock6__initZ@Base 15 ++ _D42TypeInfo_xE4core8internal5newaa4Impl5Flags6__initZ@Base 15 ++ _D43TypeInfo_E4core6thread10threadbase8ScanType6__initZ@Base 15 ++ _D43TypeInfo_E4core8internal2gc2os11ChildStatus6__initZ@Base 15 ++ _D43TypeInfo_OS4core8internal8spinlock8SpinLock6__initZ@Base 15 ++ _D43TypeInfo_S2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 ++ _D43TypeInfo_S2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 ++ _D43TypeInfo_S2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 ++ _D43TypeInfo_S2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5input10ff_trigger6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5input10input_mask6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5input9ff_effect1U6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posixQk8resource6rlimit6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posixQk8resource6rusage6__initZ@Base 15 ++ _D43TypeInfo_S4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 ++ _D43TypeInfo_S4core6thread5types13ll_ThreadData6__initZ@Base 15 ++ _D44TypeInfo_E2rt4util7utility16__c_complex_real6__initZ@Base 15 ++ _D44TypeInfo_E4core4stdc9stdatomic12memory_order6__initZ@Base 15 ++ _D44TypeInfo_E4core6thread7context8Callable4Call6__initZ@Base 15 ++ _D44TypeInfo_OS2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 ++ _D44TypeInfo_S3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 ++ _D44TypeInfo_S3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linux5epoll11epoll_event6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linux5input11ff_envelope6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linux5input11input_event6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5posix5sched11sched_param6__initZ@Base 15 ++ _D44TypeInfo_S4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 ++ _D44TypeInfo_S4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 ++ _D44TypeInfo_S4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 ++ _D44TypeInfo_S4core6thread7context12StackContext6__initZ@Base 15 ++ _D44TypeInfo_xS2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 ++ _D44TypeInfo_xS2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 ++ _D44TypeInfo_xS2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 ++ _D45TypeInfo_E2rt4util7utility17__c_complex_float6__initZ@Base 15 ++ _D45TypeInfo_E4core4stdc6config16__c_complex_real6__initZ@Base 15 ++ _D45TypeInfo_E4core8internal2gc8blkcache8IsMarked6__initZ@Base 15 ++ _D45TypeInfo_E4core8internal7convert11FloatFormat6__initZ@Base 15 ++ _D45TypeInfo_E6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 ++ _D45TypeInfo_S3gcc12libbacktrace15backtrace_state6__initZ@Base 15 ++ _D45TypeInfo_S3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5posix6signal11sigaction_t6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 ++ _D45TypeInfo_S4core8internal12parseoptions6MemVal6__initZ@Base 15 ++ _D45TypeInfo_S4core8internal9container5treap4Rand6__initZ@Base 15 ++ _D46TypeInfo_E2rt4util7utility18__c_complex_double6__initZ@Base 15 ++ _D46TypeInfo_E4core4stdc6config17__c_complex_float6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5linux2fs16file_clone_range6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5linux5input13input_absinfo6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 ++ _D46TypeInfo_S4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 ++ _D46TypeInfo_S4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 ++ _D47TypeInfo_AC4core6thread10threadbase10ThreadBase6__initZ@Base 15 ++ _D47TypeInfo_E4core4stdc6config18__c_complex_double6__initZ@Base 15 ++ _D47TypeInfo_E4core6stdcpp6string16DefaultConstruct6__initZ@Base 15 ++ _D47TypeInfo_E4core6stdcpp6vector16DefaultConstruct6__initZ@Base 15 ++ _D47TypeInfo_E4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 ++ _D47TypeInfo_E6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 ++ _D47TypeInfo_S4core6thread8osthread6Thread8Priority6__initZ@Base 15 ++ _D47TypeInfo_S6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 ++ _D48TypeInfo_S3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 ++ _D49TypeInfo_E4core3sys5linux10perf_event10perf_hw_id6__initZ@Base 15 ++ _D49TypeInfo_E4core6thread5fiber4base9FiberBase5State6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 ++ _D49TypeInfo_xS3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 ++ _D4core10checkedint11__moduleRefZ@Base 15 ++ _D4core10checkedint12__ModuleInfoZ@Base 15 ++ _D4core13interpolation11__moduleRefZ@Base 15 ++ _D4core13interpolation12__ModuleInfoZ@Base 15 ++ _D4core13interpolation16__getEmptyStringFNaNbNiNfZAya@Base 15 ++ _D4core13interpolation19InterpolationFooter6__initZ@Base 15 ++ _D4core13interpolation19InterpolationHeader6__initZ@Base 15 ++ _D4core2gc11gcinterface11__moduleRefZ@Base 15 ++ _D4core2gc11gcinterface12__ModuleInfoZ@Base 15 ++ _D4core2gc11gcinterface2GC11__InterfaceZ@Base 15 ++ _D4core2gc11gcinterface4Root6__initZ@Base 15 ++ _D4core2gc11gcinterface5Range11__xopEqualsMxFKxSQBuQBsQBsQBiZb@Base 15 ++ _D4core2gc11gcinterface5Range6__initZ@Base 15 ++ _D4core2gc11gcinterface5Range8opEqualsMxFNbMxSQBsQBqQBqQBgZb@Base 15 ++ _D4core2gc11gcinterface5Range9__xtoHashFNbNeKxSQBtQBrQBrQBhZm@Base 15 ++ _D4core2gc6config11PrettyBytes6__initZ@Base 15 ++ _D4core2gc6config11__moduleRefZ@Base 15 ++ _D4core2gc6config11prettyBytesFNaNbNiKmZa@Base 15 ++ _D4core2gc6config12__ModuleInfoZ@Base 15 ++ _D4core2gc6config18bytes2prettyStructFNaNbNimZSQBtQBrQBr11PrettyBytes@Base 15 ++ _D4core2gc6config6Config10initializeMFNbNiZb@Base 15 ++ _D4core2gc6config6Config11__xopEqualsMxFKxSQBpQBnQBnQBjZb@Base 15 ++ _D4core2gc6config6Config4helpMFNbNiZv@Base 15 ++ _D4core2gc6config6Config6__initZ@Base 15 ++ _D4core2gc6config6Config9__xtoHashFNbNeKxSQBoQBmQBmQBiZm@Base 15 ++ _D4core2gc6config6Config9errorNameMFNbNiZAya@Base 15 ++ _D4core2gc6configQhSQsQpQo6Config@Base 15 ++ _D4core2gc8registry11__moduleRefZ@Base 15 ++ _D4core2gc8registry12__ModuleInfoZ@Base 15 ++ _D4core2gc8registry16createGCInstanceFAyaZCQBpQBn11gcinterface2GC@Base 15 ++ _D4core2gc8registry17registerGCFactoryFNbNiAyaPFZCQBwQBu11gcinterface2GCZv@Base 15 ++ _D4core2gc8registry21registeredGCFactoriesFNbNiMiZxASQBzQBxQBx5Entry@Base 15 ++ _D4core2gc8registry5Entry11__xopEqualsMxFKxSQBqQBoQBoQBiZb@Base 15 ++ _D4core2gc8registry5Entry6__initZ@Base 15 ++ _D4core2gc8registry5Entry9__xtoHashFNbNeKxSQBpQBnQBnQBhZm@Base 15 ++ _D4core2gc8registry7entriesASQBbQzQy5Entry@Base 15 ++ _D4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf32_Move6__initZ@Base 15 ++ _D4core3sys3elf10Elf32_Phdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf32_Rela6__initZ@Base 15 ++ _D4core3sys3elf10Elf32_Shdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Move6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Phdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Rela6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Shdr6__initZ@Base 15 ++ _D4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 ++ _D4core3sys3elf11Elf32_gptab6__initZ@Base 15 ++ _D4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 ++ _D4core3sys3elf11Elf_Options6__initZ@Base 15 ++ _D4core3sys3elf11__moduleRefZ@Base 15 ++ _D4core3sys3elf12Elf32_Verdef6__initZ@Base 15 ++ _D4core3sys3elf12Elf64_Verdef6__initZ@Base 15 ++ _D4core3sys3elf12__ModuleInfoZ@Base 15 ++ _D4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 ++ _D4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 ++ _D4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 ++ _D4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 ++ _D4core3sys3elf13Elf32_Verneed6__initZ@Base 15 ++ _D4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 ++ _D4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 ++ _D4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 ++ _D4core3sys3elf13Elf64_Verneed6__initZ@Base 15 ++ _D4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 ++ _D4core3sys3elf9Elf32_Lib6__initZ@Base 15 ++ _D4core3sys3elf9Elf32_Rel6__initZ@Base 15 ++ _D4core3sys3elf9Elf32_Sym6__initZ@Base 15 ++ _D4core3sys3elf9Elf64_Lib6__initZ@Base 15 ++ _D4core3sys3elf9Elf64_Rel6__initZ@Base 15 ++ _D4core3sys3elf9Elf64_Sym6__initZ@Base 15 ++ _D4core3sys5linux10perf_event11__moduleRefZ@Base 15 ++ _D4core3sys5linux10perf_event12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10namespacesMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10namespacesMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14context_switchMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14context_switchMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4commMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4commMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4freqMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4freqMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4mmapMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4mmapMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4taskMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4taskMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr5mmap2MUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr5mmap2MxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr6pinnedMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr6pinnedMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr7inheritMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr7inheritMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr8disabledMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr8disabledMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9comm_execMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9comm_execMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9watermarkMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9watermarkMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry4typeMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry4typeMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry5abortMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry5abortMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry5in_txMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry5in_txMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry7mispredMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry7mispredMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry8reservedMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry8reservedMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry9predictedMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry9predictedMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 ++ _D4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 ++ _D4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 ++ _D4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 ++ _D4core3sys5linux17input_event_codes11__moduleRefZ@Base 15 ++ _D4core3sys5linux17input_event_codes12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux2fs11__moduleRefZ@Base 15 ++ _D4core3sys5linux2fs12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux2fs12fstrim_range6__initZ@Base 15 ++ _D4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 ++ _D4core3sys5linux2fs16file_clone_range6__initZ@Base 15 ++ _D4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 ++ _D4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 ++ _D4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 ++ _D4core3sys5linux2fs7fsxattr6__initZ@Base 15 ++ _D4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 ++ _D4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 ++ _D4core3sys5linux3elf11__moduleRefZ@Base 15 ++ _D4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 ++ _D4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 ++ _D4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 ++ _D4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 ++ _D4core3sys5linux3elf12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 ++ _D4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 ++ _D4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 ++ _D4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 ++ _D4core3sys5linux3err11__moduleRefZ@Base 15 ++ _D4core3sys5linux3err12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux4link11__moduleRefZ@Base 15 ++ _D4core3sys5linux4link12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 ++ _D4core3sys5linux4link7r_debug6__initZ@Base 15 ++ _D4core3sys5linux4link8link_map6__initZ@Base 15 ++ _D4core3sys5linux4time11__moduleRefZ@Base 15 ++ _D4core3sys5linux4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux4tipc10tipc_event6__initZ@Base 15 ++ _D4core3sys5linux4tipc11__moduleRefZ@Base 15 ++ _D4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 ++ _D4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 ++ _D4core3sys5linux4tipc12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 ++ _D4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 ++ _D4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 ++ _D4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 ++ _D4core3sys5linux4tipc9tipc_name6__initZ@Base 15 ++ _D4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 ++ _D4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 ++ _D4core3sys5linux5dlfcn11__moduleRefZ@Base 15 ++ _D4core3sys5linux5dlfcn12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5epoll11__moduleRefZ@Base 15 ++ _D4core3sys5linux5epoll11epoll_event6__initZ@Base 15 ++ _D4core3sys5linux5epoll12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 ++ _D4core3sys5linux5errno11__moduleRefZ@Base 15 ++ _D4core3sys5linux5errno12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5fcntl11__moduleRefZ@Base 15 ++ _D4core3sys5linux5fcntl12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5input10ff_trigger6__initZ@Base 15 ++ _D4core3sys5linux5input10input_mask6__initZ@Base 15 ++ _D4core3sys5linux5input11__moduleRefZ@Base 15 ++ _D4core3sys5linux5input11ff_envelope6__initZ@Base 15 ++ _D4core3sys5linux5input11input_event6__initZ@Base 15 ++ _D4core3sys5linux5input12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5input13input_absinfo6__initZ@Base 15 ++ _D4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 ++ _D4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 ++ _D4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 ++ _D4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 ++ _D4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 ++ _D4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 ++ _D4core3sys5linux5input8input_id6__initZ@Base 15 ++ _D4core3sys5linux5input9ff_effect1U6__initZ@Base 15 ++ _D4core3sys5linux5input9ff_effect6__initZ@Base 15 ++ _D4core3sys5linux5input9ff_replay6__initZ@Base 15 ++ _D4core3sys5linux5sched11__moduleRefZ@Base 15 ++ _D4core3sys5linux5sched12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 ++ _D4core3sys5linux5stdio11__moduleRefZ@Base 15 ++ _D4core3sys5linux5stdio12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 ++ _D4core3sys5linux6config11__moduleRefZ@Base 15 ++ _D4core3sys5linux6config12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux6string11__moduleRefZ@Base 15 ++ _D4core3sys5linux6string12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux6uinput11__moduleRefZ@Base 15 ++ _D4core3sys5linux6uinput12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 ++ _D4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 ++ _D4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 ++ _D4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 ++ _D4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 ++ _D4core3sys5linux6unistd11__moduleRefZ@Base 15 ++ _D4core3sys5linux6unistd12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7ifaddrs11__moduleRefZ@Base 15 ++ _D4core3sys5linux7ifaddrs12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7ifaddrsQi6__initZ@Base 15 ++ _D4core3sys5linux7netinet3in_11IN_BADCLASSFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_11__moduleRefZ@Base 15 ++ _D4core3sys5linux7netinet3in_12IN_MULTICASTFNbNikZb@Base 15 ++ _D4core3sys5linux7netinet3in_12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7netinet3in_15IN_EXPERIMENTALFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_18IN6_ARE_ADDR_EQUALFNaNbNiNfPSQCgQCe5posixQCdQBy8in6_addrQBdZb@Base 15 ++ _D4core3sys5linux7netinet3in_9IN_CLASSAFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_9IN_CLASSBFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_9IN_CLASSCFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_9IN_CLASSDFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3tcp11__moduleRefZ@Base 15 ++ _D4core3sys5linux7netinet3tcp12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7termios11__moduleRefZ@Base 15 ++ _D4core3sys5linux7termios12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7timerfd11__moduleRefZ@Base 15 ++ _D4core3sys5linux7timerfd12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux8execinfo11__moduleRefZ@Base 15 ++ _D4core3sys5linux8execinfo12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux8io_uring11__moduleRefZ@Base 15 ++ _D4core3sys5linux8io_uring12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 ++ _D4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 ++ _D4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 ++ _D4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 ++ _D4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 ++ _D4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 ++ _D4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 ++ _D4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 ++ _D4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 ++ _D4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 ++ _D4core3sys5linuxQg6if_arp11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQg6if_arp12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 ++ _D4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 ++ _D4core3sys5linuxQk4auxv11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk4auxv12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk4file11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk4file12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk4mman11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk4mman12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk4time10timerclearFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZv@Base 15 ++ _D4core3sys5linuxQk4time10timerissetFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZi@Base 15 ++ _D4core3sys5linuxQk4time11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk4time8timeraddFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 ++ _D4core3sys5linuxQk4time8timersubFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 ++ _D4core3sys5linuxQk5mount11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk5mount12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk5prctl11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk5prctl12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 ++ _D4core3sys5linuxQk5xattr11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk5xattr12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk6procfs11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk6procfs12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk6socket11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk6socket12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk7eventfd11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk7eventfd12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk7inotify11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk7inotify12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk7inotify13inotify_event14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 ++ _D4core3sys5linuxQk7inotify13inotify_event8opAssignMFNaNbNcNiNjNeSQCmQCkQCjQCqQChQCcZQu@Base 15 ++ _D4core3sys5linuxQk7sysinfo11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk7sysinfo12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 ++ _D4core3sys5linuxQk8signalfd11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk8signalfd12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 ++ _D4core3sys5posix3aio11__moduleRefZ@Base 15 ++ _D4core3sys5posix3aio12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix3aio5aiocb6__initZ@Base 15 ++ _D4core3sys5posix3aio7aiocb646__initZ@Base 15 ++ _D4core3sys5posix3grp11__moduleRefZ@Base 15 ++ _D4core3sys5posix3grp12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix3grp5group6__initZ@Base 15 ++ _D4core3sys5posix3net3if_11__moduleRefZ@Base 15 ++ _D4core3sys5posix3net3if_12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 ++ _D4core3sys5posix3pwd11__moduleRefZ@Base 15 ++ _D4core3sys5posix3pwd12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix3pwd6passwd6__initZ@Base 15 ++ _D4core3sys5posix4arpa4inet11__moduleRefZ@Base 15 ++ _D4core3sys5posix4arpa4inet12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 ++ _D4core3sys5posix4poll11__moduleRefZ@Base 15 ++ _D4core3sys5posix4poll12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix4poll6pollfd6__initZ@Base 15 ++ _D4core3sys5posix4stdc4time11__moduleRefZ@Base 15 ++ _D4core3sys5posix4stdc4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix4stdc4time2tm6__initZ@Base 15 ++ _D4core3sys5posix4time10itimerspec6__initZ@Base 15 ++ _D4core3sys5posix4time11__moduleRefZ@Base 15 ++ _D4core3sys5posix4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix4time8timespec6__initZ@Base 15 ++ _D4core3sys5posix5dlfcn11__moduleRefZ@Base 15 ++ _D4core3sys5posix5dlfcn12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 ++ _D4core3sys5posix5fcntl11__moduleRefZ@Base 15 ++ _D4core3sys5posix5fcntl12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5fcntl5flock6__initZ@Base 15 ++ _D4core3sys5posix5iconv11__moduleRefZ@Base 15 ++ _D4core3sys5posix5iconv12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5netdb11__moduleRefZ@Base 15 ++ _D4core3sys5posix5netdb12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5netdb6netent6__initZ@Base 15 ++ _D4core3sys5posix5netdb7hostent6__initZ@Base 15 ++ _D4core3sys5posix5netdb7hostent6h_addrMUNdZPa@Base 15 ++ _D4core3sys5posix5netdb7servent6__initZ@Base 15 ++ _D4core3sys5posix5netdb8addrinfo6__initZ@Base 15 ++ _D4core3sys5posix5netdb8protoent6__initZ@Base 15 ++ _D4core3sys5posix5sched11__moduleRefZ@Base 15 ++ _D4core3sys5posix5sched11sched_param6__initZ@Base 15 ++ _D4core3sys5posix5sched12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5spawn11__moduleRefZ@Base 15 ++ _D4core3sys5posix5spawn12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 ++ _D4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 ++ _D4core3sys5posix5stdio11__moduleRefZ@Base 15 ++ _D4core3sys5posix5stdio12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5utime11__moduleRefZ@Base 15 ++ _D4core3sys5posix5utime12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5utime7utimbuf6__initZ@Base 15 ++ _D4core3sys5posix6config11__moduleRefZ@Base 15 ++ _D4core3sys5posix6config12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6dirent11__moduleRefZ@Base 15 ++ _D4core3sys5posix6dirent12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6dirent3DIR6__initZ@Base 15 ++ _D4core3sys5posix6direntQh6__initZ@Base 15 ++ _D4core3sys5posix6libgen11__moduleRefZ@Base 15 ++ _D4core3sys5posix6libgen12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6locale11__moduleRefZ@Base 15 ++ _D4core3sys5posix6locale12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6locale5lconv6__initZ@Base 15 ++ _D4core3sys5posix6mqueue11__moduleRefZ@Base 15 ++ _D4core3sys5posix6mqueue12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 ++ _D4core3sys5posix6setjmp11__moduleRefZ@Base 15 ++ _D4core3sys5posix6setjmp12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 ++ _D4core3sys5posix6signal11__moduleRefZ@Base 15 ++ _D4core3sys5posix6signal11sigaction_t6__initZ@Base 15 ++ _D4core3sys5posix6signal12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6signal6sigval6__initZ@Base 15 ++ _D4core3sys5posix6signal7stack_t6__initZ@Base 15 ++ _D4core3sys5posix6signal8SIGRTMAXUNbNdNiZ3sigi@Base 15 ++ _D4core3sys5posix6signal8SIGRTMINUNbNdNiZ3sigi@Base 15 ++ _D4core3sys5posix6signal8sigevent6__initZ@Base 15 ++ _D4core3sys5posix6signal8sigset_t6__initZ@Base 15 ++ _D4core3sys5posix6signal8sigstack6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t6si_pidMUNbNcNdNiNjZi@Base 15 ++ _D4core3sys5posix6signal9siginfo_t6si_uidMUNbNcNdNiNjZk@Base 15 ++ _D4core3sys5posix6signal9siginfo_t7si_addrMUNbNcNdNiNjZPv@Base 15 ++ _D4core3sys5posix6signal9siginfo_t7si_bandMUNbNcNdNiNjZl@Base 15 ++ _D4core3sys5posix6signal9siginfo_t8si_valueMUNbNcNdNiNjZSQCdQCbQCaQBx6sigval@Base 15 ++ _D4core3sys5posix6signal9siginfo_t9si_statusMUNbNcNdNiNjZi@Base 15 ++ _D4core3sys5posix6stdlib11__moduleRefZ@Base 15 ++ _D4core3sys5posix6stdlib12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6string11__moduleRefZ@Base 15 ++ _D4core3sys5posix6string12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6syslog11__moduleRefZ@Base 15 ++ _D4core3sys5posix6syslog12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6unistd11__moduleRefZ@Base 15 ++ _D4core3sys5posix6unistd12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7netinet3in_11__moduleRefZ@Base 15 ++ _D4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 ++ _D4core3sys5posix7netinet3in_12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 ++ _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_LOOPBACKFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4COMPATFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4MAPPEDFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_LINKLOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MC_GLOBALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MULTICASTFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_SITELOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_MC_ORGLOCALFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_UNSPECIFIEDFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_LINKLOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_NODELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_SITELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 ++ _D4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 ++ _D4core3sys5posix7netinet3tcp11__moduleRefZ@Base 15 ++ _D4core3sys5posix7netinet3tcp12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7pthread11__moduleRefZ@Base 15 ++ _D4core3sys5posix7pthread12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 ++ _D4core3sys5posix7pthread15pthread_cleanup__T3popZQfMFNbiZv@Base 15 ++ _D4core3sys5posix7pthread15pthread_cleanup__T4pushHTPUNaNbNiPvZvZQuMFNbNiQvQpZv@Base 15 ++ _D4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 ++ _D4core3sys5posix7strings11__moduleRefZ@Base 15 ++ _D4core3sys5posix7strings12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7termios11__moduleRefZ@Base 15 ++ _D4core3sys5posix7termios12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7termiosQi6__initZ@Base 15 ++ _D4core3sys5posix8inttypes11__moduleRefZ@Base 15 ++ _D4core3sys5posix8inttypes12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 ++ _D4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 ++ _D4core3sys5posix8ucontext11__moduleRefZ@Base 15 ++ _D4core3sys5posix8ucontext12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 ++ _D4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 ++ _D4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 ++ _D4core3sys5posix9semaphore11__moduleRefZ@Base 15 ++ _D4core3sys5posix9semaphore12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 ++ _D4core3sys5posix9semaphore5sem_t6__initZ@Base 15 ++ _D4core3sys5posixQk2un11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 ++ _D4core3sys5posixQk2un12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3ipc11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk3ipc12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 ++ _D4core3sys5posixQk3msg11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk3msg12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 ++ _D4core3sys5posixQk3msg7msginfo6__initZ@Base 15 ++ _D4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 ++ _D4core3sys5posixQk3shm11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk3shm12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 ++ _D4core3sys5posixQk3uio11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk3uio12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3uio5iovec6__initZ@Base 15 ++ _D4core3sys5posixQk4mman11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk4mman12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk4stat11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk4stat12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk4stat6stat_t6__initZ@Base 15 ++ _D4core3sys5posixQk4stat7S_ISBLKFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat7S_ISCHRFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat7S_ISDIRFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat7S_ISLNKFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat7S_ISREGFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat8S_ISFIFOFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat8S_ISSOCKFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat8S_ISTYPEFNbNikkZb@Base 15 ++ _D4core3sys5posixQk4time11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk4time7timeval6__initZ@Base 15 ++ _D4core3sys5posixQk4time9itimerval6__initZ@Base 15 ++ _D4core3sys5posixQk4wait10WIFSTOPPEDFNaNbNiNfiZb@Base 15 ++ _D4core3sys5posixQk4wait10__WTERMSIGFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait11WEXITSTATUSFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait11WIFSIGNALEDFNaNbNiNfiZb@Base 15 ++ _D4core3sys5posixQk4wait11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk4wait12WIFCONTINUEDFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk4wait8WSTOPSIGFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait8WTERMSIGFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait9WIFEXITEDFNaNbNiNfiZb@Base 15 ++ _D4core3sys5posixQk5filio11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk5filio12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk5ioctl11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk5ioctl12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk5ioctl3_IOFNbNiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl6termio6__initZ@Base 15 ++ _D4core3sys5posixQk5ioctl7_IOC_NRFNbNiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 ++ _D4core3sys5posixQk5ioctl8_IOC_DIRFNbNiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl8termios26__initZ@Base 15 ++ _D4core3sys5posixQk5ioctl9_IOC_SIZEFNbNiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl9_IOC_TYPEFNbNiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTG2kZQkFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTPaZQjFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTPmZQjFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTiZQiFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTkZQiFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTmZQiFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTnZQiFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTG2kZQkFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTPmZQjFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTiZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTkZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTmZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTG2kZQkFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTPaZQjFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTiZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTkZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTmZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput15uinput_ff_eraseZQBtFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput16uinput_ff_uploadZQBuFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5types11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk5types12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 ++ _D4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 ++ _D4core3sys5posixQk6ioccom11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk6ioccom12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk6select11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk6select12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk6select6FD_CLRFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 ++ _D4core3sys5posixQk6select6FD_SETFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 ++ _D4core3sys5posixQk6select6fd_set6__initZ@Base 15 ++ _D4core3sys5posixQk6select7FD_ZEROFNaNbNiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 ++ _D4core3sys5posixQk6select7__FDELTFNaNbNiNfiZk@Base 15 ++ _D4core3sys5posixQk6select8FD_ISSETFNaNbNiiPxSQBsQBqQBpQBwQBn6fd_setZb@Base 15 ++ _D4core3sys5posixQk6select8__FDMASKFNaNbNiNfiZl@Base 15 ++ _D4core3sys5posixQk6socket10CMSG_ALIGNFNaNbNimZm@Base 15 ++ _D4core3sys5posixQk6socket10CMSG_SPACEFNaNbNimZm@Base 15 ++ _D4core3sys5posixQk6socket11CMSG_NXTHDRFNaNbNiPNgSQBwQBuQBtQCaQBr6msghdrPNgSQCwQCuQCtQDaQCr7cmsghdrZQBc@Base 15 ++ _D4core3sys5posixQk6socket11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk6socket12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk6socket13CMSG_FIRSTHDRFNaNbNiPNgSQByQBwQBvQCcQBt6msghdrZPNgSQCzQCxQCwQDdQCu7cmsghdr@Base 15 ++ _D4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 ++ _D4core3sys5posixQk6socket6linger6__initZ@Base 15 ++ _D4core3sys5posixQk6socket6msghdr6__initZ@Base 15 ++ _D4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 ++ _D4core3sys5posixQk6socket8CMSG_LENFNaNbNimZm@Base 15 ++ _D4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 ++ _D4core3sys5posixQk6socket9CMSG_DATAFNaNbNiNkMPNgSQBwQBuQBtQCaQBr7cmsghdrZPNgh@Base 15 ++ _D4core3sys5posixQk6ttycom11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk6ttycom12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk7statvfs11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk7statvfs12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 ++ _D4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 ++ _D4core3sys5posixQk7utsname11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk7utsname12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk7utsnameQi6__initZ@Base 15 ++ _D4core3sys5posixQk8resource11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk8resource12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk8resource6rlimit6__initZ@Base 15 ++ _D4core3sys5posixQk8resource6rusage6__initZ@Base 15 ++ _D4core4math11__moduleRefZ@Base 15 ++ _D4core4math12__ModuleInfoZ@Base 15 ++ _D4core4simd11__moduleRefZ@Base 15 ++ _D4core4simd12__ModuleInfoZ@Base 15 ++ _D4core4stdc4fenv11__moduleRefZ@Base 15 ++ _D4core4stdc4fenv12__ModuleInfoZ@Base 15 ++ _D4core4stdc4fenv6fenv_t6__initZ@Base 15 ++ _D4core4stdc4math11__moduleRefZ@Base 15 ++ _D4core4stdc4math11islessequalFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math11islessequalFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math11islessequalFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math11isunorderedFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math11isunorderedFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math11isunorderedFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math12__ModuleInfoZ@Base 15 ++ _D4core4stdc4math13islessgreaterFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math13islessgreaterFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math13islessgreaterFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math14isgreaterequalFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math14isgreaterequalFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math14isgreaterequalFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math6islessFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math6islessFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math6islessFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math8isnormalFNaNbNiNedZi@Base 15 ++ _D4core4stdc4math8isnormalFNaNbNiNeeZi@Base 15 ++ _D4core4stdc4math8isnormalFNaNbNiNefZi@Base 15 ++ _D4core4stdc4math9isgreaterFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math9isgreaterFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math9isgreaterFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4time11__moduleRefZ@Base 15 ++ _D4core4stdc4time12__ModuleInfoZ@Base 15 ++ _D4core4stdc5ctype11__moduleRefZ@Base 15 ++ _D4core4stdc5ctype12__ModuleInfoZ@Base 15 ++ _D4core4stdc5errno11__moduleRefZ@Base 15 ++ _D4core4stdc5errno12__ModuleInfoZ@Base 15 ++ _D4core4stdc5stdio11__moduleRefZ@Base 15 ++ _D4core4stdc5stdio12__ModuleInfoZ@Base 15 ++ _D4core4stdc5stdio6fpos_t6__initZ@Base 15 ++ _D4core4stdc5stdio8_IO_FILE6__initZ@Base 15 ++ _D4core4stdc6config11__moduleRefZ@Base 15 ++ _D4core4stdc6config12__ModuleInfoZ@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZQx@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfdZSQCgQCeQCc__TQByTdZQCe@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfdZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTdZQByZm@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZQx@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfeZSQCgQCeQCc__TQByTeZQCe@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfeZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTeZQByZm@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZQx@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNffZSQCgQCeQCc__TQByTfZQCe@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNffZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTfZQByZm@Base 15 ++ _D4core4stdc6float_11__moduleRefZ@Base 15 ++ _D4core4stdc6float_12__ModuleInfoZ@Base 15 ++ _D4core4stdc6limits11__moduleRefZ@Base 15 ++ _D4core4stdc6limits12__ModuleInfoZ@Base 15 ++ _D4core4stdc6locale11__moduleRefZ@Base 15 ++ _D4core4stdc6locale12__ModuleInfoZ@Base 15 ++ _D4core4stdc6locale5lconv6__initZ@Base 15 ++ _D4core4stdc6signal11__moduleRefZ@Base 15 ++ _D4core4stdc6signal12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stdarg11__moduleRefZ@Base 15 ++ _D4core4stdc6stdarg12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stddef11__moduleRefZ@Base 15 ++ _D4core4stdc6stddef12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stdint11__moduleRefZ@Base 15 ++ _D4core4stdc6stdint12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stdint__T7_typifyTgZQlFNaNbNiNfgZg@Base 15 ++ _D4core4stdc6stdint__T7_typifyThZQlFNaNbNiNfhZh@Base 15 ++ _D4core4stdc6stdint__T7_typifyTiZQlFNaNbNiNfiZi@Base 15 ++ _D4core4stdc6stdint__T7_typifyTkZQlFNaNbNiNfkZk@Base 15 ++ _D4core4stdc6stdint__T7_typifyTlZQlFNaNbNiNflZl@Base 15 ++ _D4core4stdc6stdint__T7_typifyTmZQlFNaNbNiNfmZm@Base 15 ++ _D4core4stdc6stdint__T7_typifyTsZQlFNaNbNiNfsZs@Base 15 ++ _D4core4stdc6stdint__T7_typifyTtZQlFNaNbNiNftZt@Base 15 ++ _D4core4stdc6stdlib11__moduleRefZ@Base 15 ++ _D4core4stdc6stdlib12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stdlib5div_t6__initZ@Base 15 ++ _D4core4stdc6stdlib6ldiv_t6__initZ@Base 15 ++ _D4core4stdc6stdlib7lldiv_t6__initZ@Base 15 ++ _D4core4stdc6string11__moduleRefZ@Base 15 ++ _D4core4stdc6string12__ModuleInfoZ@Base 15 ++ _D4core4stdc6tgmath11__moduleRefZ@Base 15 ++ _D4core4stdc6tgmath12__ModuleInfoZ@Base 15 ++ _D4core4stdc6wchar_11__moduleRefZ@Base 15 ++ _D4core4stdc6wchar_12__ModuleInfoZ@Base 15 ++ _D4core4stdc6wchar_8getwcharFNbNiNeZw@Base 15 ++ _D4core4stdc6wchar_8putwcharFNbNiNewZw@Base 15 ++ _D4core4stdc6wchar_9mbstate_t6__initZ@Base 15 ++ _D4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 ++ _D4core4stdc6wctype11__moduleRefZ@Base 15 ++ _D4core4stdc6wctype12__ModuleInfoZ@Base 15 ++ _D4core4stdc7assert_11__moduleRefZ@Base 15 ++ _D4core4stdc7assert_12__ModuleInfoZ@Base 15 ++ _D4core4stdc7complex11__moduleRefZ@Base 15 ++ _D4core4stdc7complex12__ModuleInfoZ@Base 15 ++ _D4core4stdc8inttypes11__moduleRefZ@Base 15 ++ _D4core4stdc8inttypes12__ModuleInfoZ@Base 15 ++ _D4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 ++ _D4core4stdc9stdatomic11__moduleRefZ@Base 15 ++ _D4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 ++ _D4core4stdc9stdatomic12__ModuleInfoZ@Base 15 ++ _D4core4sync11__moduleRefZ@Base 15 ++ _D4core4sync12__ModuleInfoZ@Base 15 ++ _D4core4sync5event11__moduleRefZ@Base 15 ++ _D4core4sync5event12__ModuleInfoZ@Base 15 ++ _D4core4sync5event5Event10initializeMFNbNibbZv@Base 15 ++ _D4core4sync5event5Event14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core4sync5event5Event16setIfInitializedMFNbNiZv@Base 15 ++ _D4core4sync5event5Event3setMFNbNiZv@Base 15 ++ _D4core4sync5event5Event4waitMFNbNiSQBi4time8DurationZb@Base 15 ++ _D4core4sync5event5Event4waitMFNbNiZb@Base 15 ++ _D4core4sync5event5Event5resetMFNbNiZv@Base 15 ++ _D4core4sync5event5Event6__ctorMFNbNcNibbZSQBpQBnQBlQBi@Base 15 ++ _D4core4sync5event5Event6__dtorMFNbNiZv@Base 15 ++ _D4core4sync5event5Event6__initZ@Base 15 ++ _D4core4sync5event5Event9terminateMFNbNiZv@Base 15 ++ _D4core4sync5mutex11__moduleRefZ@Base 15 ++ _D4core4sync5mutex12__ModuleInfoZ@Base 15 ++ _D4core4sync5mutex5Mutex10handleAddrMFNiZPSQBp3sys5posixQk5types15pthread_mutex_t@Base 15 ++ _D4core4sync5mutex5Mutex12MonitorProxy11__xopEqualsMxFKxSQCdQCbQBzQBwQBtZb@Base 15 ++ _D4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 ++ _D4core4sync5mutex5Mutex12MonitorProxy9__xtoHashFNbNeKxSQCcQCaQByQBvQBsZm@Base 15 ++ _D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 ++ _D4core4sync5mutex5Mutex4lockMOFNeZv@Base 15 ++ _D4core4sync5mutex5Mutex6__ctorMFNbNiNeC6ObjectZCQBvQBtQBrQBo@Base 15 ++ _D4core4sync5mutex5Mutex6__ctorMFNbNiNeZCQBnQBlQBjQBg@Base 15 ++ _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeC6ObjectZOCQBxQBvQBtQBq@Base 15 ++ _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeZOCQBpQBnQBlQBi@Base 15 ++ _D4core4sync5mutex5Mutex6__dtorMFNbNiNlNeZv@Base 15 ++ _D4core4sync5mutex5Mutex6__initZ@Base 15 ++ _D4core4sync5mutex5Mutex6__vtblZ@Base 15 ++ _D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 ++ _D4core4sync5mutex5Mutex6unlockMOFNeZv@Base 15 ++ _D4core4sync5mutex5Mutex7__ClassZ@Base 15 ++ _D4core4sync5mutex5Mutex7tryLockMFNeZb@Base 15 ++ _D4core4sync5mutex5Mutex7tryLockMOFNeZb@Base 15 ++ _D4core4sync5mutex5Mutex__T12lock_nothrowTCQBpQBnQBlQBiZQBdMFNbNiNeZv@Base 15 ++ _D4core4sync5mutex5Mutex__T12lock_nothrowTOCQBqQBoQBmQBjZQBeMOFNbNiNeZv@Base 15 ++ _D4core4sync5mutex5Mutex__T14unlock_nothrowTCQBrQBpQBnQBkZQBfMFNbNiNeZv@Base 15 ++ _D4core4sync5mutex5Mutex__T14unlock_nothrowTOCQBsQBqQBoQBlZQBgMOFNbNiNeZv@Base 15 ++ _D4core4sync5mutex5Mutex__T15tryLock_nothrowTCQBsQBqQBoQBlZQBgMFNbNiNeZb@Base 15 ++ _D4core4sync5mutex5Mutex__T15tryLock_nothrowTOCQBtQBrQBpQBmZQBhMOFNbNiNeZb@Base 15 ++ _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNeC6ObjectbZQBi@Base 15 ++ _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNebZQBa@Base 15 ++ _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNeC6ObjectbZOQBk@Base 15 ++ _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNebZOQBc@Base 15 ++ _D4core4sync6config11__moduleRefZ@Base 15 ++ _D4core4sync6config12__ModuleInfoZ@Base 15 ++ _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 ++ _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecZv@Base 15 ++ _D4core4sync6config7mvtspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 ++ _D4core4sync7barrier11__moduleRefZ@Base 15 ++ _D4core4sync7barrier12__ModuleInfoZ@Base 15 ++ _D4core4sync7barrier7Barrier4waitMFZv@Base 15 ++ _D4core4sync7barrier7Barrier6__ctorMFkZCQBmQBkQBiQBd@Base 15 ++ _D4core4sync7barrier7Barrier6__initZ@Base 15 ++ _D4core4sync7barrier7Barrier6__vtblZ@Base 15 ++ _D4core4sync7barrier7Barrier7__ClassZ@Base 15 ++ _D4core4sync7rwmutex11__moduleRefZ@Base 15 ++ _D4core4sync7rwmutex12__ModuleInfoZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMOFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader6__vtblZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMOFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7__ClassZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeSQCc4time8DurationZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeSQCd4time8DurationZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMOFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer6__vtblZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMOFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7__ClassZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeSQCc4time8DurationZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeSQCd4time8DurationZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6__ctorMFNbNfEQBwQBuQBsQBn6PolicyZCQCrQCpQCnQCi@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6__ctorMOFNbNfEQBxQBvQBtQBo6PolicyZOCQCtQCrQCpQCk@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6__vtblZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6policyMFNbNdNfZEQBzQBxQBvQBq6Policy@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6policyMOFNbNdNfZEQCaQByQBwQBr6Policy@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6readerMFNbNdNfZCQBzQBxQBvQBq6Reader@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6readerMOFNbNdNfZOCQCbQBzQBxQBs6Reader@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6writerMFNbNdNfZCQBzQBxQBvQBq6Writer@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6writerMOFNbNdNfZOCQCbQBzQBxQBs6Writer@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex7__ClassZ@Base 15 ++ _D4core4sync9condition11__moduleRefZ@Base 15 ++ _D4core4sync9condition12__ModuleInfoZ@Base 15 ++ _D4core4sync9condition9Condition13mutex_nothrowMFNaNbNdNiNfZCQChQCf5mutex5Mutex@Base 15 ++ _D4core4sync9condition9Condition13mutex_nothrowMOFNaNbNdNiNfZOCQCjQCh5mutex5Mutex@Base 15 ++ _D4core4sync9condition9Condition4waitMFSQBm4time8DurationZb@Base 15 ++ _D4core4sync9condition9Condition4waitMFZv@Base 15 ++ _D4core4sync9condition9Condition4waitMOFSQBn4time8DurationZb@Base 15 ++ _D4core4sync9condition9Condition4waitMOFZv@Base 15 ++ _D4core4sync9condition9Condition5mutexMFNdZCQBqQBoQs5Mutex@Base 15 ++ _D4core4sync9condition9Condition5mutexMOFNdZOCQBsQBqQu5Mutex@Base 15 ++ _D4core4sync9condition9Condition6__ctorMFNbNiNfCQBuQBs5mutex5MutexZCQCoQCmQCkQCd@Base 15 ++ _D4core4sync9condition9Condition6__ctorMOFNbNiNfOCQBwQBu5mutex5MutexZOCQCrQCpQCnQCg@Base 15 ++ _D4core4sync9condition9Condition6__dtorMFNiNlZv@Base 15 ++ _D4core4sync9condition9Condition6__initZ@Base 15 ++ _D4core4sync9condition9Condition6__vtblZ@Base 15 ++ _D4core4sync9condition9Condition6notifyMFZv@Base 15 ++ _D4core4sync9condition9Condition6notifyMOFZv@Base 15 ++ _D4core4sync9condition9Condition7__ClassZ@Base 15 ++ _D4core4sync9condition9Condition9notifyAllMFZv@Base 15 ++ _D4core4sync9condition9Condition9notifyAllMOFZv@Base 15 ++ _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNiSQCi4time8DurationbZb@Base 15 ++ _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNibZv@Base 15 ++ _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNiSQCk4time8DurationbZb@Base 15 ++ _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNibZv@Base 15 ++ _D4core4sync9condition9Condition__T6__ctorTCQBqQBoQBmQBfTCQCeQCc5mutex5MutexZQBqMFNbNiNeQBfbZQBy@Base 15 ++ _D4core4sync9condition9Condition__T6__ctorTOCQBrQBpQBnQBgTOCQCgQCe5mutex5MutexZQBsMOFNbNiNeOQBhbZOQCc@Base 15 ++ _D4core4sync9condition9Condition__T6notifyTCQBqQBoQBmQBfZQwMFNbNibZv@Base 15 ++ _D4core4sync9condition9Condition__T6notifyTOCQBrQBpQBnQBgZQxMOFNbNibZv@Base 15 ++ _D4core4sync9condition9Condition__T9notifyAllTCQBtQBrQBpQBiZQzMFNbNibZv@Base 15 ++ _D4core4sync9condition9Condition__T9notifyAllTOCQBuQBsQBqQBjZQBaMOFNbNibZv@Base 15 ++ _D4core4sync9exception11__moduleRefZ@Base 15 ++ _D4core4sync9exception12__ModuleInfoZ@Base 15 ++ _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCtQCrQCpQCi@Base 15 ++ _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCtQCrQCpQCi@Base 15 ++ _D4core4sync9exception9SyncError6__initZ@Base 15 ++ _D4core4sync9exception9SyncError6__vtblZ@Base 15 ++ _D4core4sync9exception9SyncError7__ClassZ@Base 15 ++ _D4core4sync9semaphore11__moduleRefZ@Base 15 ++ _D4core4sync9semaphore12__ModuleInfoZ@Base 15 ++ _D4core4sync9semaphore9Semaphore4waitMFSQBm4time8DurationZb@Base 15 ++ _D4core4sync9semaphore9Semaphore4waitMFZv@Base 15 ++ _D4core4sync9semaphore9Semaphore6__ctorMFkZCQBqQBoQBmQBf@Base 15 ++ _D4core4sync9semaphore9Semaphore6__dtorMFNlZv@Base 15 ++ _D4core4sync9semaphore9Semaphore6__initZ@Base 15 ++ _D4core4sync9semaphore9Semaphore6__vtblZ@Base 15 ++ _D4core4sync9semaphore9Semaphore6notifyMFZv@Base 15 ++ _D4core4sync9semaphore9Semaphore7__ClassZ@Base 15 ++ _D4core4sync9semaphore9Semaphore7tryWaitMFZb@Base 15 ++ _D4core4time11__moduleRefZ@Base 15 ++ _D4core4time11_posixClockFNaNbNiNfEQBhQBf9ClockTypeZi@Base 15 ++ _D4core4time12TickDuration10TDRvalueOfFSQBmQBkQBiZQl@Base 15 ++ _D4core4time12TickDuration11ticksPerSecyl@Base 15 ++ _D4core4time12TickDuration14currSystemTickFNbNdNiNeZSQBzQBxQBv@Base 15 ++ _D4core4time12TickDuration16time_initializerFZv@Base 15 ++ _D4core4time12TickDuration3maxFNaNbNdNiNfZSQBpQBnQBl@Base 15 ++ _D4core4time12TickDuration3minFNaNbNdNiNfZSQBpQBnQBl@Base 15 ++ _D4core4time12TickDuration4zeroFNaNbNdNiNfZSQBqQBoQBm@Base 15 ++ _D4core4time12TickDuration5msecsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration5nsecsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration5opCmpMxFNaNbNiNfSQBqQBoQBmZi@Base 15 ++ _D4core4time12TickDuration5usecsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration6__ctorMFNaNbNcNiNflZSQBuQBsQBq@Base 15 ++ _D4core4time12TickDuration6__initZ@Base 15 ++ _D4core4time12TickDuration6hnsecsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration7secondsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration8__xopCmpMxFKxSQBnQBlQBjZi@Base 15 ++ _D4core4time12TickDuration9appOriginySQBkQBiQBg@Base 15 ++ _D4core4time12__ModuleInfoZ@Base 15 ++ _D4core4time12nsecsToTicksFNaNbNiNflZl@Base 15 ++ _D4core4time12ticksToNSecsFNaNbNiNflZl@Base 15 ++ _D4core4time13TimeException6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCoQCmQCk@Base 15 ++ _D4core4time13TimeException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCoQCmQCk@Base 15 ++ _D4core4time13TimeException6__initZ@Base 15 ++ _D4core4time13TimeException6__vtblZ@Base 15 ++ _D4core4time13TimeException7__ClassZ@Base 15 ++ _D4core4time13_clockTypeIdxFEQBbQz9ClockTypeZm@Base 15 ++ _D4core4time13convClockFreqFNaNbNiNflllZl@Base 15 ++ _D4core4time14_clockTypeNameFEQBcQBa9ClockTypeZAya@Base 15 ++ _D4core4time15_ticksPerSecondyG8l@Base 15 ++ _D4core4time25unitsAreInDescendingOrderFMAAyaZb@Base 15 ++ _D4core4time3absFNaNbNiNfSQyQv12TickDurationZQu@Base 15 ++ _D4core4time3absFNaNbNiNfSQyQv8DurationZQp@Base 15 ++ _D4core4time4_absFNaNbNiNfdZd@Base 15 ++ _D4core4time4_absFNaNbNiNflZl@Base 15 ++ _D4core4time8Duration10isNegativeMxFNaNbNdNiNfZb@Base 15 ++ _D4core4time8Duration3maxFNaNbNdNiNfZSQBkQBiQBg@Base 15 ++ _D4core4time8Duration3minFNaNbNdNiNfZSQBkQBiQBg@Base 15 ++ _D4core4time8Duration4zeroFNaNbNdNiNfZSQBlQBjQBh@Base 15 ++ _D4core4time8Duration5opCmpMxFNaNbNiNfSQBlQBjQBhZi@Base 15 ++ _D4core4time8Duration6__ctorMFNaNbNcNiNflZSQBpQBnQBl@Base 15 ++ _D4core4time8Duration6__initZ@Base 15 ++ _D4core4time8Duration8__xopCmpMxFKxSQBiQBgQBeZi@Base 15 ++ _D4core4time8Duration8toStringMxFNaNbNfZAya@Base 15 ++ _D4core4time8Duration__T10opOpAssignVAyaa1_2bZQwMFNaNbNcNiNfxSQCiQCgQCeZSQCtQCrQCp@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_6e73656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 ++ _D4core4time8Duration__T5totalVAyaa5_6d73656373ZQyMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time8Duration__T5totalVAyaa7_7365636f6e6473ZQBcMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time8Duration__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 ++ _D4core4time8Duration__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ10appListSepFNaNbNfQBqkbZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ5unitsyAAa@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa4_64617973ZQBcFNaNbNfQCmlZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_686f757273ZQBeFNaNbNfQColZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_6d73656373ZQBeFNaNbNfQColZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7573656373ZQBeFNaNbNfQColZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7765656b73ZQBeFNaNbNfQColZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa6_686e73656373ZQBgFNaNbNfQCqlZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_6d696e75746573ZQBiFNaNbNfQCslZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_7365636f6e6473ZQBiFNaNbNfQCslZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFNaNbNfMQBaZv@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj14ticksPerSecondFNaNbNdNiNfZl@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3maxFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3minFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj4zeroFNaNbNdNiNfZSQCrQCp__TQCnVQCci0ZQCx@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5opCmpMxFNaNbNiNfSQCrQCp__TQCnVQCci0ZQCxZi@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5ticksMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8__xopCmpMxFKxSQCoQCm__TQCkVQBzi0ZQCuZi@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8currTimeFNbNdNiNeZSQCtQCr__TQCpVQCei0ZQCz@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8toStringMxFNaNbNfZAya@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQDjQDh__TQDfVQCui0ZQDpZSQEhQEf8Duration@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa5_6d73656373ZQBoFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7573656373ZQBoFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7765656b73ZQBoFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T2toVAyaa5_6d73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T2toVAyaa5_6e73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T2toVAyaa5_7573656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T2toVAyaa6_686e73656373TlTxSQBoQBm12TickDurationZQBwFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T2toVAyaa7_7365636f6e6473TlTxSQBqQBo12TickDurationZQByFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T3durVAyaa4_64617973ZQuFNaNbNiNflZSQBvQBt8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_686f757273ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_6d73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_6e73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_7573656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_7765656b73ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa6_686e73656373ZQyFNaNbNiNflZSQBzQBx8Duration@Base 15 ++ _D4core4time__T3durVAyaa7_6d696e75746573ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 ++ _D4core4time__T3durVAyaa7_7365636f6e6473ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 ++ _D4core4time__T7convertVAyaa4_64617973VQpa6_686e73656373ZQBqFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_686f757273VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_6d73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_6e73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_7573656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_7765656b73VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta4_64617973ZQBqFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_686f757273ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_6d73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_6e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_7573656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_7765656b73ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta6_686e73656373ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta7_6d696e75746573ZQBwFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta7_7365636f6e6473ZQBwFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_6d696e75746573VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6d73656373ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6e73656373ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_7573656373ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva7_7365636f6e6473ZQByFNaNbNiNflZl@Base 15 ++ _D4core5bitop11__moduleRefZ@Base 15 ++ _D4core5bitop12__ModuleInfoZ@Base 15 ++ _D4core5bitop2btFNaNbNiMxPmmZi@Base 15 ++ _D4core5bitop3bsfFNaNbNiNfkZi@Base 15 ++ _D4core5bitop3bsfFNaNbNiNfmZi@Base 15 ++ _D4core5bitop3bsrFNaNbNiNfkZi@Base 15 ++ _D4core5bitop3bsrFNaNbNiNfmZi@Base 15 ++ _D4core5bitop6popcntFNaNbNiNfkZi@Base 15 ++ _D4core5bitop6popcntFNaNbNiNfmZi@Base 15 ++ _D4core5bitop7Split646__ctorMFNaNbNcNiNfmZSQBpQBnQBk@Base 15 ++ _D4core5bitop7Split646__initZ@Base 15 ++ _D4core5bitop7bitswapFNaNbNiNfkZk@Base 15 ++ _D4core5bitop7bitswapFNaNbNiNfmZm@Base 15 ++ _D4core5bitop8BitRange5emptyMxFNaNbNiNfZb@Base 15 ++ _D4core5bitop8BitRange5frontMFNaNbNiNfZm@Base 15 ++ _D4core5bitop8BitRange6__ctorMFNaNbNcNiPxmmZSQBrQBpQBm@Base 15 ++ _D4core5bitop8BitRange6__initZ@Base 15 ++ _D4core5bitop8BitRange8popFrontMFNaNbNiZv@Base 15 ++ _D4core5bitop8byteswapFNaNbNiNftZt@Base 15 ++ _D4core5bitop__T10softPopcntTkZQpFNaNbNiNfkZi@Base 15 ++ _D4core5bitop__T10softPopcntTmZQpFNaNbNiNfmZi@Base 15 ++ _D4core5bitop__T11softBitswapTkZQqFNaNbNiNfkZk@Base 15 ++ _D4core5bitop__T11softBitswapTmZQqFNaNbNiNfmZm@Base 15 ++ _D4core5bitop__T8softScanTkVbi0ZQqFNaNbNiNfkZi@Base 15 ++ _D4core5bitop__T8softScanTkVbi1ZQqFNaNbNiNfkZi@Base 15 ++ _D4core5bitop__T8softScanTmVbi0ZQqFNaNbNiNfmZi@Base 15 ++ _D4core5bitop__T8softScanTmVbi1ZQqFNaNbNiNfmZi@Base 15 ++ _D4core5cpuid10_hasPopcntyb@Base 15 ++ _D4core5cpuid10_hasRdrandyb@Base 15 ++ _D4core5cpuid10_hasRdseedyb@Base 15 ++ _D4core5cpuid10_isItaniumyb@Base 15 ++ _D4core5cpuid10_processoryAa@Base 15 ++ _D4core5cpuid10_x87onChipyb@Base 15 ++ _D4core5cpuid10dataCachesFNaNbNdNiNeZxG5SQBnQBl9CacheInfo@Base 15 ++ _D4core5cpuid11CpuFeatures11__xopEqualsMxFKxSQBrQBpQBmZb@Base 15 ++ _D4core5cpuid11CpuFeatures6__initZ@Base 15 ++ _D4core5cpuid11CpuFeatures9__xtoHashFNbNeKxSQBqQBoQBlZm@Base 15 ++ _D4core5cpuid11__moduleRefZ@Base 15 ++ _D4core5cpuid11_dataCachesyG5SQBcQBa9CacheInfo@Base 15 ++ _D4core5cpuid11amd3dnowExtFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid11cacheLevelsFNbNdNiNeZk@Base 15 ++ _D4core5cpuid11coresPerCPUFNaNbNdNiNeZk@Base 15 ++ _D4core5cpuid11cpuFeaturesSQzQw11CpuFeatures@Base 15 ++ _D4core5cpuid11hasLahfSahfFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid12__ModuleInfoZ@Base 15 ++ _D4core5cpuid12_amd3dnowExtyb@Base 15 ++ _D4core5cpuid12_coresPerCPUyk@Base 15 ++ _D4core5cpuid12_hasLahfSahfyb@Base 15 ++ _D4core5cpuid12getCpuInfo0BFNbNiNeZv@Base 15 ++ _D4core5cpuid12hasCmpxchg8bFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid12hasPclmulqdqFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid12preferAthlonFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid13_hasCmpxchg8byb@Base 15 ++ _D4core5cpuid13_hasPclmulqdqyb@Base 15 ++ _D4core5cpuid13_preferAthlonyb@Base 15 ++ _D4core5cpuid13hasCmpxchg16bFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid13hasVpclmulqdqFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid13threadsPerCPUFNaNbNdNiNeZk@Base 15 ++ _D4core5cpuid14_hasCmpxchg16byb@Base 15 ++ _D4core5cpuid14_hasVpclmulqdqyb@Base 15 ++ _D4core5cpuid14_threadsPerCPUyk@Base 15 ++ _D4core5cpuid14getCpuFeaturesFNbNiNeZPSQBlQBj11CpuFeatures@Base 15 ++ _D4core5cpuid14hyperThreadingFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid14numCacheLevelsk@Base 15 ++ _D4core5cpuid14preferPentium1FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid14preferPentium4FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid15_hyperThreadingyb@Base 15 ++ _D4core5cpuid15_preferPentium1yb@Base 15 ++ _D4core5cpuid15_preferPentium4yb@Base 15 ++ _D4core5cpuid15getAMDcacheinfoFNbNiNeZ8assocmapyAh@Base 15 ++ _D4core5cpuid15getAMDcacheinfoFNbNiNeZv@Base 15 ++ _D4core5cpuid16has3dnowPrefetchFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid17_has3dnowPrefetchyb@Base 15 ++ _D4core5cpuid17hyperThreadingBitFNbNdNiNeZb@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ3idsyG63h@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ4waysyG63h@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ5sizesyG63k@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZv@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID4FNbNiNeZv@Base 15 ++ _D4core5cpuid18hasSysEnterSysExitFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid18max_extended_cpuidk@Base 15 ++ _D4core5cpuid19_hasSysEnterSysExityb@Base 15 ++ _D4core5cpuid20cpuid_initializationFNbNiNeZv@Base 15 ++ _D4core5cpuid3aesFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3avxFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3fmaFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3hleFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3mmxFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3rtmFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3sseFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid4_aesyb@Base 15 ++ _D4core5cpuid4_avxyb@Base 15 ++ _D4core5cpuid4_fmayb@Base 15 ++ _D4core5cpuid4_hleyb@Base 15 ++ _D4core5cpuid4_mmxyb@Base 15 ++ _D4core5cpuid4_rtmyb@Base 15 ++ _D4core5cpuid4_sseyb@Base 15 ++ _D4core5cpuid4avx2FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid4sse2FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid4sse3FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid4vaesFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5_avx2yb@Base 15 ++ _D4core5cpuid5_sse2yb@Base 15 ++ _D4core5cpuid5_sse3yb@Base 15 ++ _D4core5cpuid5_vaesyb@Base 15 ++ _D4core5cpuid5fp16cFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5modelk@Base 15 ++ _D4core5cpuid5sse41FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5sse42FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5sse4aFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5ssse3FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid6_fp16cyb@Base 15 ++ _D4core5cpuid6_sse41yb@Base 15 ++ _D4core5cpuid6_sse42yb@Base 15 ++ _D4core5cpuid6_sse4ayb@Base 15 ++ _D4core5cpuid6_ssse3yb@Base 15 ++ _D4core5cpuid6amdMmxFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid6familyk@Base 15 ++ _D4core5cpuid6hasShaFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid6vendorFNaNbNdNiNeZAya@Base 15 ++ _D4core5cpuid7_amdMmxyb@Base 15 ++ _D4core5cpuid7_hasShayb@Base 15 ++ _D4core5cpuid7_vendoryAa@Base 15 ++ _D4core5cpuid7avx512fFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid7hasCmovFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid7hasFxsrFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8_avx512fyb@Base 15 ++ _D4core5cpuid8_hasCmovyb@Base 15 ++ _D4core5cpuid8_hasFxsryb@Base 15 ++ _D4core5cpuid8amd3dnowFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8cpuidX86FNbNiNeZv@Base 15 ++ _D4core5cpuid8hasCPUIDFNbNiNeZb@Base 15 ++ _D4core5cpuid8hasLzcntFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8hasRdtscFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8isX86_64FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8steppingk@Base 15 ++ _D4core5cpuid9CacheInfo6__initZ@Base 15 ++ _D4core5cpuid9_amd3dnowyb@Base 15 ++ _D4core5cpuid9_hasLzcntyb@Base 15 ++ _D4core5cpuid9_hasRdtscyb@Base 15 ++ _D4core5cpuid9_isX86_64yb@Base 15 ++ _D4core5cpuid9datacacheG5SQyQv9CacheInfo@Base 15 ++ _D4core5cpuid9hasPopcntFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid9hasRdrandFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid9hasRdseedFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid9isItaniumFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid9max_cpuidk@Base 15 ++ _D4core5cpuid9processorFNaNbNdNiNeZAya@Base 15 ++ _D4core5cpuid9x87onChipFNaNbNdNiNeZb@Base 15 ++ _D4core6atomic11__moduleRefZ@Base 15 ++ _D4core6atomic12__ModuleInfoZ@Base 15 ++ _D4core6atomic5pauseFNaNbNiNfZv@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKxmZm@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKOxPSQBpQBpQBjZQCc@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKxPOxSQBqQBqQBkZQCd@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC6ObjectZQBtFNaNbNiNeKOxCQyZOCQBd@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKOxPSQDuQBsQBqQBnZQCi@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKxPOxSQDvQBtQBrQBoZQCj@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKOxPQBnZQBs@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKxPQBmZQBr@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKxbZb@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKOxhZh@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKxhZh@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKOxiZi@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKxiZi@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKxkZk@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKxmZm@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKOxtZt@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKxtZt@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKObbZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKbbZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKOmiZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKmiZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKOPQBoQBtZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKQBoQBrZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKOPQCcQChZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKQCcQCfZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKOmmZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKmmZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKOPQChQBqZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKQCgQBoZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKOPQBmQBqZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKQBlQBoZv@Base 15 ++ _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 ++ _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 ++ _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 ++ _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 ++ _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 ++ _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 ++ _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 ++ _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOhZQBgFNaNbNiNfPOhZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOkZQBgFNaNbNiNfPOkZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOmZQBgFNaNbNiNfPOmZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOtZQBgFNaNbNiNfPOtZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedThZQBfFNaNbNiNfPhZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTkZQBfFNaNbNiNfPkZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTmZQBfFNaNbNiNfPmZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTtZQBfFNaNbNiNfPtZb@Base 15 ++ _D4core6atomic__T28atomicValueIsProperlyAlignedTOkZQBiFNaNbNiNeKOkZb@Base 15 ++ _D4core6atomic__T28atomicValueIsProperlyAlignedTOmZQBiFNaNbNiNeKOmZb@Base 15 ++ _D4core6atomic__T28atomicValueIsProperlyAlignedTkZQBhFNaNbNiNeKkZb@Base 15 ++ _D4core6atomic__T28atomicValueIsProperlyAlignedTmZQBhFNaNbNiNeKmZb@Base 15 ++ _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePOhhhZb@Base 15 ++ _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePhhhZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePOmmmZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePmmmZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePOtttZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePtttZb@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2d3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 ++ _D4core6int12811__moduleRefZ@Base 15 ++ _D4core6int12812__ModuleInfoZ@Base 15 ++ _D4core6int1282geFNaNbNiNfSQzQw4CentQkZb@Base 15 ++ _D4core6int1282gtFNaNbNiNfSQzQw4CentQkZb@Base 15 ++ _D4core6int1282leFNaNbNiNfSQzQw4CentQkZb@Base 15 ++ _D4core6int1282ltFNaNbNiNfSQzQw4CentQkZb@Base 15 ++ _D4core6int1282orFNaNbNiNfSQzQw4CentQkZQn@Base 15 ++ _D4core6int1283addFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283andFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283comFNaNbNiNfSQBaQy4CentZQm@Base 15 ++ _D4core6int1283decFNaNbNiNfSQBaQy4CentZQm@Base 15 ++ _D4core6int1283divFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283incFNaNbNiNfSQBaQy4CentZQm@Base 15 ++ _D4core6int1283mulFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283negFNaNbNiNfSQBaQy4CentZQm@Base 15 ++ _D4core6int1283rolFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283rorFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283sarFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283shlFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283shrFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283subFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283tstFNaNbNiNfSQBaQy4CentZb@Base 15 ++ _D4core6int1283ugeFNaNbNiNfSQBaQy4CentQlZb@Base 15 ++ _D4core6int1283ugtFNaNbNiNfSQBaQy4CentQlZb@Base 15 ++ _D4core6int1283uleFNaNbNiNfSQBaQy4CentQlZb@Base 15 ++ _D4core6int1283ultFNaNbNiNfSQBaQy4CentQlZb@Base 15 ++ _D4core6int1283xorFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1284Cent6__initZ@Base 15 ++ _D4core6int1284rol1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284ror1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284sar1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284shl1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284shr1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284udivFNaNbNiNfSQBbQz4CentQlZQo@Base 15 ++ _D4core6int1286divmodFNaNbNiNfSQBdQBb4CentQmJQpZQs@Base 15 ++ _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FNaNbNiNfQBqmJmZm@Base 15 ++ _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FQBimJmZ9udiv96_64FNaNbNiNfmkmZk@Base 15 ++ _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZQs@Base 15 ++ _D4core6memory10initializeFZv@Base 15 ++ _D4core6memory11__moduleRefZ@Base 15 ++ _D4core6memory12__ModuleInfoZ@Base 15 ++ _D4core6memory2GC12ProfileStats6__initZ@Base 15 ++ _D4core6memory2GC12profileStatsFNbNiNfZSQBmQBkQBg12ProfileStats@Base 15 ++ _D4core6memory2GC5Stats6__initZ@Base 15 ++ _D4core6memory2GC5queryFNaNbNkMPvZSQBhQBf8BlkInfo_@Base 15 ++ _D4core6memory2GC5queryFNbNkMxPvZSQBgQBe8BlkInfo_@Base 15 ++ _D4core6memory2GC5statsFNbNiNfZSQBeQBcQy5Stats@Base 15 ++ _D4core6memory2GC6__initZ@Base 15 ++ _D4core6memory2GC6addrOfFNaNbNiNePNgvZQf@Base 15 ++ _D4core6memory2GC6addrOfFNaNbNiNePvZQd@Base 15 ++ _D4core6memory2GC6sizeOfFNaNbNiPvZm@Base 15 ++ _D4core6memory2GC6sizeOfFNbNiMxPvZm@Base 15 ++ _D4core6memory2GC7clrAttrFNaNbPvkZk@Base 15 ++ _D4core6memory2GC7clrAttrFNbMxPvkZk@Base 15 ++ _D4core6memory2GC7getAttrFNaNbPvZk@Base 15 ++ _D4core6memory2GC7getAttrFNbMxPvZk@Base 15 ++ _D4core6memory2GC7setAttrFNaNbPvkZk@Base 15 ++ _D4core6memory2GC7setAttrFNbMxPvkZk@Base 15 ++ _D4core6memory8BlkInfo_6__initZ@Base 15 ++ _D4core6memory8pageSizeym@Base 15 ++ _D4core6memory__T8pureFreeZQkFNaNbNiPvZv@Base 15 ++ _D4core6stdcpp11string_view11__moduleRefZ@Base 15 ++ _D4core6stdcpp11string_view12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 ++ _D4core6stdcpp11type_traits11__moduleRefZ@Base 15 ++ _D4core6stdcpp11type_traits12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 ++ _D4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 ++ _D4core6stdcpp4new_11__moduleRefZ@Base 15 ++ _D4core6stdcpp4new_11align_val_t6__initZ@Base 15 ++ _D4core6stdcpp4new_11std_nothrowySQBgQBeQBa9nothrow_t@Base 15 ++ _D4core6stdcpp4new_12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp4new_9bad_alloc6__ctorMFNiZCQBoQBmQBiQBg@Base 15 ++ _D4core6stdcpp4new_9bad_alloc6__initZ@Base 15 ++ _D4core6stdcpp4new_9bad_alloc6__vtblZ@Base 15 ++ _D4core6stdcpp4new_9bad_alloc7__ClassZ@Base 15 ++ _D4core6stdcpp4new_9nothrow_t6__initZ@Base 15 ++ _D4core6stdcpp5array11__moduleRefZ@Base 15 ++ _D4core6stdcpp5array12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp6memory11__moduleRefZ@Base 15 ++ _D4core6stdcpp6memory12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp6string11__moduleRefZ@Base 15 ++ _D4core6stdcpp6string12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp6vector11__moduleRefZ@Base 15 ++ _D4core6stdcpp6vector12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp7utility11__moduleRefZ@Base 15 ++ _D4core6stdcpp7utility12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp8typeinfo10bad_typeid6__ctorMFNbNiZCQBwQBuQBqQBk@Base 15 ++ _D4core6stdcpp8typeinfo10bad_typeid6__initZ@Base 15 ++ _D4core6stdcpp8typeinfo10bad_typeid6__vtblZ@Base 15 ++ _D4core6stdcpp8typeinfo10bad_typeid7__ClassZ@Base 15 ++ _D4core6stdcpp8typeinfo11__moduleRefZ@Base 15 ++ _D4core6stdcpp8typeinfo12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp8typeinfo8bad_cast6__ctorMFNbNiZCQBtQBrQBnQBh@Base 15 ++ _D4core6stdcpp8typeinfo8bad_cast6__initZ@Base 15 ++ _D4core6stdcpp8typeinfo8bad_cast6__vtblZ@Base 15 ++ _D4core6stdcpp8typeinfo8bad_cast7__ClassZ@Base 15 ++ _D4core6stdcpp8typeinfo9type_info6__ctorMFNiPxaZCQBvQBtQBpQBj@Base 15 ++ _D4core6stdcpp8typeinfo9type_info6__initZ@Base 15 ++ _D4core6stdcpp8typeinfo9type_info6__vtblZ@Base 15 ++ _D4core6stdcpp8typeinfo9type_info7__ClassZ@Base 15 ++ _D4core6stdcpp8xutility11__moduleRefZ@Base 15 ++ _D4core6stdcpp8xutility12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 ++ _D4core6stdcpp9allocator11__moduleRefZ@Base 15 ++ _D4core6stdcpp9allocator12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp9exception11__moduleRefZ@Base 15 ++ _D4core6stdcpp9exception12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp9exception13bad_exception6__ctorMFNbNiPxaZCQCdQCbQBxQBq@Base 15 ++ _D4core6stdcpp9exception13bad_exception6__initZ@Base 15 ++ _D4core6stdcpp9exception13bad_exception6__vtblZ@Base 15 ++ _D4core6stdcpp9exception13bad_exception7__ClassZ@Base 15 ++ _D4core6stdcpp9exceptionQk6__ctorMFNbNiPxaiZCQBrQBpQBlQBo@Base 15 ++ _D4core6stdcpp9exceptionQk6__ctorMFNbNiZCQBnQBlQBhQBk@Base 15 ++ _D4core6stdcpp9exceptionQk6__initZ@Base 15 ++ _D4core6stdcpp9exceptionQk6__vtblZ@Base 15 ++ _D4core6stdcpp9exceptionQk7__ClassZ@Base 15 ++ _D4core6thread10threadbase10ThreadBase10popContextMFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase10topContextMFNbNiZPSQCfQCd7context12StackContext@Base 15 ++ _D4core6thread10threadbase10ThreadBase11pushContextMFNbNiPSQCfQCd7context12StackContextZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase12isMainThreadMFNbNdNiZb@Base 15 ++ _D4core6thread10threadbase10ThreadBase12registerThisFNbNiCQCeQCcQByQBpbZv@Base 15.2 ++ _D4core6thread10threadbase10ThreadBase13nAboutToStartm@Base 15 ++ _D4core6thread10threadbase10ThreadBase13pAboutToStartPCQCbQBzQBvQBm@Base 15 ++ _D4core6thread10threadbase10ThreadBase13tlsRTdataInitMFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase15initDataStorageMFNbZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase18destroyDataStorageMFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase18destructBeforeDtorMFNbNiZb@Base 15 ++ _D4core6thread10threadbase10ThreadBase21incrementAboutToStartFNbNiCQCnQClQChQByZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase25destroyDataStorageIfAvailMFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase2idMFNdNiNfZm@Base 15 ++ _D4core6thread10threadbase10ThreadBase3addFNbNiCQBuQBsQBoQBfbZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase3addFNbNiPSQBvQBt7context12StackContextZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase3runMFZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfAyaZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfZAya@Base 15 ++ _D4core6thread10threadbase10ThreadBase5slockFNbNdNiZCQBz4sync5mutex5Mutex@Base 15 ++ _D4core6thread10threadbase10ThreadBase5yieldFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNeDFZvmZCQCiQCgQCcQBt@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfPFZvmZCQCiQCgQCcQBt@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfmZCQCeQCcQByQBp@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__initZ@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__vtblZ@Base 15 ++ _D4core6thread10threadbase10ThreadBase6_slockG72v@Base 15 ++ _D4core6thread10threadbase10ThreadBase6getAllFZ6resizeFNaNbNfKACQCkQCiQCeQBvmZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase6getAllFZACQBvQBtQBpQBg@Base 15 ++ _D4core6thread10threadbase10ThreadBase6removeFNbNiCQBxQBvQBrQBiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase6removeFNbNiPSQByQBw7context12StackContextZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase7__ClassZ@Base 15 ++ _D4core6thread10threadbase10ThreadBase7getThisFNbNiNfZCQCbQBzQBvQBm@Base 15 ++ _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZ6resizeFNbNiKAQBemZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZi@Base 15 ++ _D4core6thread10threadbase10ThreadBase7setThisFNbNiCQByQBwQBsQBjZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_cbegPSQBuQBs7context12StackContext@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_mainCQBtQBrQBnQBe@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_tbegCQBtQBrQBnQBe@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_thisCQBtQBrQBnQBe@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_tlenm@Base 15 ++ _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfZb@Base 15 ++ _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfbZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase9initLocksFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase9isRunningMFNbNdNiZb@Base 15 ++ _D4core6thread10threadbase10ThreadBase9termLocksFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase9tlsGCDataMFNbNcNiZPv@Base 15 ++ _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn6getAllFZ6resizeFNaNbNfKACQDoQDmQDiQCzmZvZQCrFZQx@Base 15 ++ _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn7opApplyFMDFKCQDcQDaQCwQCnZiZ6resizeFNbNiKAQBemZvZQCzFNiZQp@Base 15 ++ _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDaQCwQCn@Base 15 ++ _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDaQCwQCn@Base 15 ++ _D4core6thread10threadbase11ThreadError6__initZ@Base 15 ++ _D4core6thread10threadbase11ThreadError6__vtblZ@Base 15 ++ _D4core6thread10threadbase11ThreadError7__ClassZ@Base 15 ++ _D4core6thread10threadbase11__moduleRefZ@Base 15 ++ _D4core6thread10threadbase11ll_nThreadsm@Base 15 ++ _D4core6thread10threadbase11ll_pThreadsPSQBnQBl5types13ll_ThreadData@Base 15 ++ _D4core6thread10threadbase12__ModuleInfoZ@Base 15 ++ _D4core6thread10threadbase12lowlevelLockFNbNdNiZCQBv4sync5mutex5Mutex@Base 15 ++ _D4core6thread10threadbase12suspendDepthk@Base 15 ++ _D4core6thread10threadbase13onThreadErrorFNbNiAyaZ5errorCQCdQCbQBx11ThreadError@Base 15 ++ _D4core6thread10threadbase13onThreadErrorFNbNiAyaZv@Base 15 ++ _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDgQDeQDaQCr@Base 15 ++ _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDgQDeQDaQCr@Base 15 ++ _D4core6thread10threadbase15ThreadException6__initZ@Base 15 ++ _D4core6thread10threadbase15ThreadException6__vtblZ@Base 15 ++ _D4core6thread10threadbase15ThreadException7__ClassZ@Base 15 ++ _D4core6thread10threadbase15ll_removeThreadFNbNimZv@Base 15 ++ _D4core6thread10threadbase15scanAllTypeImplFNbMDFNbEQByQBwQBs8ScanTypePvQcZvQgZv@Base 15 ++ _D4core6thread10threadbase17multiThreadedFlagb@Base 15 ++ _D4core6thread10threadbase17thread_findByAddrFmZCQBvQBtQBp10ThreadBase@Base 15 ++ _D4core6thread10threadbase18findLowLevelThreadFNbNimZb@Base 15 ++ _D4core6thread10threadbase19initLowlevelThreadsFNbNiZv@Base 15 ++ _D4core6thread10threadbase19termLowlevelThreadsFNbNiZv@Base 15 ++ _D4core6thread10threadbase23thread_processTLSGCDataFNbDFNbPvZQdZv@Base 15 ++ _D4core6thread10threadbase25_sharedStaticDtor_L971_C1FZv@Base 15.2 ++ _D4core6thread10threadbase7ll_lockG72v@Base 15 ++ _D4core6thread10threadbase__T15thread_term_tplTCQBuQBs8osthread6ThreadTG185vZQBwFNbNiKQpZv@Base 15 ++ _D4core6thread10threadbase__T21thread_attachThis_tplTCQCaQBy8osthread6ThreadZQBwFNbZQBf@Base 15 ++ _D4core6thread11__moduleRefZ@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup3addMFCQBtQBr8osthread6ThreadZv@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6__initZ@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6__vtblZ@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6createMFDFZvZCQCbQBz8osthread6Thread@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6createMFPFZvZCQCbQBz8osthread6Thread@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6removeMFCQBwQBu8osthread6ThreadZv@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup7__ClassZ@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup7joinAllMFbZv@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup7opApplyMFMDFKCQCbQBz8osthread6ThreadZiZi@Base 15 ++ _D4core6thread11threadgroup11__moduleRefZ@Base 15 ++ _D4core6thread11threadgroup12__ModuleInfoZ@Base 15 ++ _D4core6thread12__ModuleInfoZ@Base 15 ++ _D4core6thread5fiber11__moduleRefZ@Base 15 ++ _D4core6thread5fiber12__ModuleInfoZ@Base 15 ++ _D4core6thread5fiber4base11__moduleRefZ@Base 15 ++ _D4core6thread5fiber4base12__ModuleInfoZ@Base 15 ++ _D4core6thread5fiber4base9FiberBase13yieldAndThrowFNbNiC6object9ThrowableZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase3runMFZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase4callMFEQBpQBnQBjQBgQBe7RethrowZC6object9Throwable@Base 15 ++ _D4core6thread5fiber4base9FiberBase5resetMFNbNiDFZvZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase5resetMFNbNiPFZvZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase5resetMFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase5stateMxFNaNbNdNiNfZEQCcQCaQBwQBtQBr5State@Base 15 ++ _D4core6thread5fiber4base9FiberBase5yieldFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__ctorMFNbDFZvmmZCQCaQByQBuQBrQBp@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__ctorMFNbPFZvmmZCQCaQByQBuQBrQBp@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__dtorMFNbNiNlZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__initZ@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__vtblZ@Base 15 ++ _D4core6thread5fiber4base9FiberBase7__ClassZ@Base 15 ++ _D4core6thread5fiber4base9FiberBase7getThisFNbNiNfZCQByQBwQBsQBpQBn@Base 15 ++ _D4core6thread5fiber4base9FiberBase7setThisFNbNiCQBvQBtQBpQBmQBkZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase7sm_thisCQBqQBoQBkQBhQBf@Base 15 ++ _D4core6thread5fiber4base9FiberBase7sm_utxtSQBq3sys5posix8ucontext10ucontext_t@Base 15 ++ _D4core6thread5fiber4base9FiberBase8callImplMFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase8switchInMFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase9switchOutMFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi0ZQBhMFNbNiZC6object9Throwable@Base 15 ++ _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi1ZQBhMFNiZC6object9Throwable@Base 15 ++ _D4core6thread5fiber5Fiber10allocStackMFNbmmZv@Base 15 ++ _D4core6thread5fiber5Fiber19_staticCtor_L674_C9FZv@Base 15 ++ _D4core6thread5fiber5Fiber6__ctorMFNbDFZvmmZCQBrQBpQBlQBi@Base 15 ++ _D4core6thread5fiber5Fiber6__ctorMFNbPFZvmmZCQBrQBpQBlQBi@Base 15 ++ _D4core6thread5fiber5Fiber6__initZ@Base 15 ++ _D4core6thread5fiber5Fiber6__vtblZ@Base 15 ++ _D4core6thread5fiber5Fiber7__ClassZ@Base 15 ++ _D4core6thread5fiber5Fiber7getThisFNbNiNfZCQBpQBnQBjQBg@Base 15 ++ _D4core6thread5fiber5Fiber9freeStackMFNbNiZv@Base 15 ++ _D4core6thread5fiber5Fiber9initStackMFNbNiZv@Base 15 ++ _D4core6thread5types11__moduleRefZ@Base 15 ++ _D4core6thread5types12__ModuleInfoZ@Base 15 ++ _D4core6thread5types13ll_ThreadData6__initZ@Base 15 ++ _D4core6thread5types17PTHREAD_STACK_MINym@Base 15 ++ _D4core6thread5types24_sharedStaticCtor_L54_C1FZv@Base 15 ++ _D4core6thread7context11__moduleRefZ@Base 15 ++ _D4core6thread7context12StackContext6__initZ@Base 15 ++ _D4core6thread7context12__ModuleInfoZ@Base 15 ++ _D4core6thread7context8Callable6__initZ@Base 15 ++ _D4core6thread7context8Callable6opCallMFZv@Base 15 ++ _D4core6thread7context8Callable8opAssignMFNaNbNiNfDFZvZv@Base 15 ++ _D4core6thread7context8Callable8opAssignMFNaNbNiNfPFZvZv@Base 15 ++ _D4core6thread8osthread11__moduleRefZ@Base 15 ++ _D4core6thread8osthread11getStackTopFNbNiZPv@Base 15 ++ _D4core6thread8osthread11swapContextFNbNiPvZQd@Base 15 ++ _D4core6thread8osthread12__ModuleInfoZ@Base 15 ++ _D4core6thread8osthread12attachThreadFNbNiCQBpQBn10threadbase10ThreadBaseZQBg@Base 15 ++ _D4core6thread8osthread12suspendCountSQBk3sys5posix9semaphore5sem_t@Base 15 ++ _D4core6thread8osthread12thread_yieldFNbNiZv@Base 15 ++ _D4core6thread8osthread14getStackBottomFNbNiZPv@Base 15 ++ _D4core6thread8osthread15adjustStackSizeFNbNimZm@Base 15 ++ _D4core6thread8osthread16_mainThreadStoreG185v@Base 15 ++ _D4core6thread8osthread17thread_entryPointUNbPvZ21thread_cleanupHandlerUNaNbNiQBhZv@Base 15 ++ _D4core6thread8osthread18callWithStackShellFNbMDFNbPvZvZv@Base 15 ++ _D4core6thread8osthread18joinLowLevelThreadFNbNimZv@Base 15 ++ _D4core6thread8osthread18resumeSignalNumberi@Base 15 ++ _D4core6thread8osthread19suspendSignalNumberi@Base 15 ++ _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZ20thread_lowlevelEntryUNbPvZQd@Base 15 ++ _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZm@Base 15 ++ _D4core6thread8osthread6Thread12PRIORITY_MAXFNaNbNdNiNeZxi@Base 15 ++ _D4core6thread8osthread6Thread12PRIORITY_MINFNaNbNdNiNeZi@Base 15 ++ _D4core6thread8osthread6Thread14loadPrioritiesFNbNiNeZSQCbQBzQBvQBp8Priority@Base 15 ++ _D4core6thread8osthread6Thread16PRIORITY_DEFAULTFNaNbNdNiNeZi@Base 15 ++ _D4core6thread8osthread6Thread3runMFZv@Base 15 ++ _D4core6thread8osthread6Thread4joinMFbZC6object9Throwable@Base 15 ++ _D4core6thread8osthread6Thread5cacheOSQBkQBiQBeQy8Priority@Base 15 ++ _D4core6thread8osthread6Thread5sleepFNbNiNeSQBq4time8DurationZv@Base 15 ++ _D4core6thread8osthread6Thread5startMFNbZCQBoQBmQBiQBc@Base 15 ++ _D4core6thread8osthread6Thread5yieldFNbNiZv@Base 15 ++ _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfDFZvmZCQCaQByQBuQBo@Base 15 ++ _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfPFZvmZCQCaQByQBuQBo@Base 15 ++ _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfmZCQBwQBuQBqQBk@Base 15 ++ _D4core6thread8osthread6Thread6__dtorMFNbNiNlZv@Base 15 ++ _D4core6thread8osthread6Thread6__initZ@Base 15 ++ _D4core6thread8osthread6Thread6__vtblZ@Base 15 ++ _D4core6thread8osthread6Thread7__ClassZ@Base 15 ++ _D4core6thread8osthread6Thread7getThisFNbNiNfZCQBtQBrQBnQBh@Base 15 ++ _D4core6thread8osthread6Thread8Priority6__initZ@Base 15 ++ _D4core6thread8osthread6Thread8priorityMFNdZi@Base 15 ++ _D4core6thread8osthread6Thread8priorityMFNdiZv@Base 15 ++ _D4core6thread8osthread6Thread9isRunningMFNbNdNiZb@Base 15 ++ _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d4158ZQBtFNbNiNfZi@Base 15 ++ _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d494eZQBtFNbNiNfZi@Base 15 ++ _D4core6thread8osthread6Thread__T10loadGlobalVAyaa16_5052494f524954595f44454641554c54ZQCbFNbNiNfZi@Base 15 ++ _D4core6thread8osthread6resumeFNbNiCQBiQBg10threadbase10ThreadBaseZv@Base 15 ++ _D4core6thread8osthread7suspendFNbNiCQBjQBhQBd6ThreadZb@Base 15 ++ _D4core6thread8osthread8toThreadFNaNbNiNeNkMCQBrQBp10threadbase10ThreadBaseZCQCxQCvQCr6Thread@Base 15 ++ _D4core6vararg11__moduleRefZ@Base 15 ++ _D4core6vararg12__ModuleInfoZ@Base 15 ++ _D4core7factory11__moduleRefZ@Base 15 ++ _D4core7factory12__ModuleInfoZ@Base 15 ++ _D4core7runtime11__moduleRefZ@Base 15 ++ _D4core7runtime12__ModuleInfoZ@Base 15 ++ _D4core7runtime14UnitTestResult6__initZ@Base 15 ++ _D4core7runtime18runModuleUnitTestsUZ19unittestSegvHandlerUiPSQCi3sys5posix6signal9siginfo_tPvZv@Base 15 ++ _D4core7runtime19defaultTraceHandlerFPvZC6object9Throwable9TraceInfo@Base 15 ++ _D4core7runtime19defaultTraceHandlerFPvZ__T8allocateTC3gcc9backtrace12LibBacktraceTiZQBqFNiiZQBo@Base 15 ++ _D4core7runtime23defaultTraceDeallocatorFNbC6object9Throwable9TraceInfoZv@Base 15 ++ _D4core7runtime25_sharedStaticCtor_L121_C1FZv@Base 15.2 ++ _D4core7runtime5CArgs6__initZ@Base 15 ++ _D4core7runtime7Runtime10initializeFZb@Base 15 ++ _D4core7runtime7Runtime16moduleUnitTesterFNdPFZbZv@Base 15 ++ _D4core7runtime7Runtime16moduleUnitTesterFNdZPFZb@Base 15 ++ _D4core7runtime7Runtime19sm_moduleUnitTesterPFZb@Base 15 ++ _D4core7runtime7Runtime22sm_extModuleUnitTesterPFZSQBxQBv14UnitTestResult@Base 15 ++ _D4core7runtime7Runtime24extendedModuleUnitTesterFNdPFZSQCcQCa14UnitTestResultZv@Base 15 ++ _D4core7runtime7Runtime24extendedModuleUnitTesterFNdZPFZSQCdQCb14UnitTestResult@Base 15 ++ _D4core7runtime7Runtime6__initZ@Base 15 ++ _D4core7runtime7Runtime9terminateFZb@Base 15 ++ _D4core8builtins11__ctfeWriteFNaNbNiNfMAxaZv@Base 15 ++ _D4core8builtins11__moduleRefZ@Base 15 ++ _D4core8builtins12__ModuleInfoZ@Base 15 ++ _D4core8demangle11__moduleRefZ@Base 15 ++ _D4core8demangle11demangleCXXFNaNbNeNkMAxaPUNaNbNexPaPaPmPiZQhNkMAaZQd@Base 15 ++ _D4core8demangle12__ModuleInfoZ@Base 15 ++ _D4core8demangle12demangleTypeFNaNbNfAxaAaZQd@Base 15 ++ _D4core8demangle14__cxa_demangleOPUNaNbNexPaPaPmPiZQh@Base 15 ++ _D4core8demangle15getCXXDemanglerFNbNeZ1_UNaNbNiNexPaPaPmPiZQh@Base 15 ++ _D4core8demangle15getCXXDemanglerFNbNeZPUNaNbNexPaPaPmPiZQh@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks10parseLNameMFNaNbNlNeJAyaMKSQDkQDi__T8DemangleTSQEeQEcQDwFNaNbNfNkMQDiZQDiZQBmZb@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11__xopEqualsMxFKxSQDaQCyQCsFNaNbNfNkMQCeZQCeZb@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13encodeBackrefMFNaNbNlNfmZv@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13flushPositionMFNaNbNlNfKSQDiQDg__T8DemangleTSQEcQEaQDuFNaNbNfNkMQDgZQDgZQBmZv@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks16positionInResultMFNaNbNiNlNfmZm@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9__xtoHashFNbNeKxSQCzQCxQCrFNaNbNfNkMQCdZQCdZm@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9parseTypeMFNaNbNjNlNfJbKSQDhQDf__T8DemangleTSQEbQDzQDtFNaNbNfNkMQDfZQDfZQBmAaZQd@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZAa@Base 15 ++ _D4core8demangle15toStringConsumeFNaNbNiNfyASQBrQBp16ManglingFlagInfoKtZAya@Base 15 ++ _D4core8demangle16ManglingFlagInfo11__xopEqualsMxFKxSQBzQBxQBrZb@Base 15 ++ _D4core8demangle16ManglingFlagInfo6__initZ@Base 15 ++ _D4core8demangle16ManglingFlagInfo9__xtoHashFNbNeKxSQByQBwQBqZm@Base 15 ++ _D4core8demangle6Buffer11__xopEqualsMxFKxSQBoQBmQBgZb@Base 15 ++ _D4core8demangle6Buffer12bslice_emptyFNaNbNiNlNfZSQBwQBu8BufSlice@Base 15 ++ _D4core8demangle6Buffer18checkAndStretchBufMFNaNbNlNfmZv@Base 15 ++ _D4core8demangle6Buffer5shiftMFNaNbNjNlNfMxSQBqQBo8BufSliceZSQChQCfQr@Base 15 ++ _D4core8demangle6Buffer6__initZ@Base 15 ++ _D4core8demangle6Buffer6appendMFNaNbNlNfMAxaZv@Base 15 ++ _D4core8demangle6Buffer6bsliceMFNaNbNiNlNfmmZSQBsQBq8BufSlice@Base 15 ++ _D4core8demangle6Buffer6lengthMxFNaNbNiNlNfZm@Base 15 ++ _D4core8demangle6Buffer6removeMFNaNbNlNfMSQBoQBm8BufSliceZv@Base 15 ++ _D4core8demangle6Buffer7opSliceMFNaNbNiNjNlNfmmZSQBvQBt8BufSlice@Base 15 ++ _D4core8demangle6Buffer8containsFNaNbNfMAxaMxSQBsQBq8BufSliceZb@Base 15 ++ _D4core8demangle6Buffer9__xtoHashFNbNeKxSQBnQBlQBfZm@Base 15 ++ _D4core8demangle6Buffer9copyInputMFNaNbNjNlNfMAxaZAa@Base 15 ++ _D4core8demangle7NoHooks6__initZ@Base 15 ++ _D4core8demangle8BufSlice11__invariantMxFNaNbNfZv@Base 15 ++ _D4core8demangle8BufSlice11__xopEqualsMxFKxSQBqQBoQBiZb@Base 15 ++ _D4core8demangle8BufSlice12__invariant0MxFNaNbNfZv@Base 15 ++ _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAaZSQBzQBxQBr@Base 15 ++ _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAammbZSQCcQCaQBu@Base 15 ++ _D4core8demangle8BufSlice6__initZ@Base 15 ++ _D4core8demangle8BufSlice6lengthMxFNaNbNlNfZm@Base 15 ++ _D4core8demangle8BufSlice8getSliceMNgFNaNbNiNlNfZANga@Base 15 ++ _D4core8demangle8BufSlice9__xtoHashFNbNeKxSQBpQBnQBhZm@Base 15 ++ _D4core8demangle9funcAttrsyASQBbQz16ManglingFlagInfo@Base 15 ++ _D4core8demangle9typeCtorsyASQBbQz16ManglingFlagInfo@Base 15 ++ _D4core8demangleQjFNaNbNfNkMAxaNkMAaPUNaNbNexPaPaPmPiZQhZQx@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFMDFyPS6object10ModuleInfoZiZiTQBfZQByFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbMDFNbPvZvZvTQpZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiAyaMDFNbNiQkZQnbZQrTQzZQBrFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiAyakQeQgmZvTQrZQBjFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZQBkTQBtZQCmFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZvTQBrZQCkFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiPvZQdTQlZQBdFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiPvZvTQkZQBcFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiZPvTQjZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiZmTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiZvTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbPvMDFNbQhQjZvZvTQtZQBlFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEgQEe__TQDyTQDuZQEgFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEfQEd__TQDxTQDtZQEfFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDpQDn__TQDhTQDdZQDpFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDoQDm__TQDgTQDcZQDoFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEaQDy__TQDsTQDoZQEaFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDzQDx__TQDrTQDnZQDzFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDrQDp__TQDjTQDfZQDrFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDqQDo__TQDiTQDeZQDqFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEuQEs__TQEmTQEiZQEuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEtQEr__TQElTQEhZQEtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEsQEq__TQEkTQEgZQEsFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQErQEp__TQEjTQEfZQErFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDlQDj__TQDdTQCzZQDlFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDuQDs__TQDmTQDiZQDuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDtQDr__TQDlTQDhZQDtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10isHexDigitFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseLNameMFNaNbNlNfJAyaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbMSQEfQEd8BufSliceaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11__xopEqualsMxFKxSQDyQDw__TQDqTQDkZQDyZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11peekBackrefMFNaNbNiNfZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11sliceNumberMFNaNbNiNjNlNfZQBy@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbMQBzZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleNameMFNaNbNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleTypeMFNaNbNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseFuncAttrMFNaNbNiNfJbZt@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseModifierMFNaNbNiNfZt@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl15parseSymbolNameMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16isCallConventionFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseIntegerValueMFNaNbNlNfJbMSQEmQEk8BufSliceaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTypeFunctionMFNaNbNjNlNfJbEQEnQEl__TQEfTQDzZQEn10IsDelegateZSQFvQFt8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseCallConventionMFNaNbNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseMangledNameArgMFNaNbNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQEvQEt8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3eatMFNaNbNiNfaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3padMFNaNbNfQBiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMQBnZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMSQDxQDv8BufSliceZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4peekMFNaNbNiNfmZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4testMFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5emptyMFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5frontMFNaNbNdNiNfZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfQBmZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5shiftMFNaNbNjNlNfMxSQEaQDy8BufSliceZSQErQEpQr@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsEQEfQEd__TQDxTQDrZQEf7AddTypeNkMAaZSQFoQFm__TQFgTQFaZQFo@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsNkMAaZSQElQEj__TQEdTQDxZQEl@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isAlphaFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isDigitFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putAsHexMFNaNbNfmiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putCommaMFNaNbNfmZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9__xtoHashFNbNeKxSQDxQDv__TQDpTQDjZQDxZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9ascii2hexFNaNbNiNfJbaZh@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseRealMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZSQEfQEd8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleSQDvQDt__TQDnTQDhZQDv16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleS_DQDxQDv__TQDpTQDjZQDx9parseTypeMFNaNbNjNlNfJbZSQFrQFp8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10isHexDigitFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseLNameMFNaNbNlNfJAyaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbMSQCuQCs8BufSliceaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11__xopEqualsMxFKxSQCnQCl__TQCfTQBzZQCnZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11peekBackrefMFNaNbNiNfZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11sliceNumberMFNaNbNiNjNlNfZAxa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbMAxaZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleNameMFNaNbNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleTypeMFNaNbNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseFuncAttrMFNaNbNiNfJbZt@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseModifierMFNaNbNiNfZt@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa15parseSymbolNameMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16isCallConventionFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseIntegerValueMFNaNbNlNfJbMSQDbQCz8BufSliceaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTypeFunctionMFNaNbNjNlNfJbEQDcQDa__TQCuTQCoZQDc10IsDelegateZSQEkQEi8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseCallConventionMFNaNbNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseMangledNameArgMFNaNbNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQDkQDi8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3eatMFNaNbNiNfaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3padMFNaNbNfAxaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMAxaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMSQCmQCk8BufSliceZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4peekMFNaNbNiNfmZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4testMFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5emptyMFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5frontMFNaNbNdNiNfZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfAxaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5shiftMFNaNbNjNlNfMxSQCpQCn8BufSliceZSQDgQDeQr@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaEQCuQCs__TQCmTQCgZQCu7AddTypeNkMAaZSQEdQEb__TQDvTQDpZQEd@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaNkMAaZSQDaQCy__TQCsTQCmZQDa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isAlphaFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isDigitFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putAsHexMFNaNbNfmiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putCommaMFNaNbNfmZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9__xtoHashFNbNeKxSQCmQCk__TQCeTQByZQCmZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9ascii2hexFNaNbNiNfJbaZh@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseRealMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZSQCuQCs8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleSQCkQCi__TQCcTQBwZQCk16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleS_DQCmQCk__TQCeTQByZQCm9parseTypeMFNaNbNjNlNfJbZSQEgQEe8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 ++ _D4core8internal10attributes11__moduleRefZ@Base 15 ++ _D4core8internal10attributes12__ModuleInfoZ@Base 15 ++ _D4core8internal10entrypoint11__moduleRefZ@Base 15 ++ _D4core8internal10entrypoint12__ModuleInfoZ@Base 15 ++ _D4core8internal11destruction11__moduleRefZ@Base 15 ++ _D4core8internal11destruction12__ModuleInfoZ@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3gcc8sections3elf9ThreadDSOZQBvFNaNbNiNfKQBqZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface4RootZQBsFNaNbNiNfKQBnZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface5RangeZQBtFNaNbNiNfKQBoZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDnFNaNbNiNfKQDiZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 ++ _D4core8internal12parseoptions10parseErrorFNbNiMxAaMxQeMxQiAxaZb@Base 15 ++ _D4core8internal12parseoptions11__moduleRefZ@Base 15 ++ _D4core8internal12parseoptions12__ModuleInfoZ@Base 15 ++ _D4core8internal12parseoptions15overflowedErrorFNbNiMxAaMxQeZb@Base 15 ++ _D4core8internal12parseoptions3minFNbNimmZm@Base 15 ++ _D4core8internal12parseoptions5parseFNbNiAxaKANgaKQfQlZb@Base 15 ++ _D4core8internal12parseoptions5parseFNbNiAxaKANgaKbQkZb@Base 15 ++ _D4core8internal12parseoptions5parseFNbNiAxaKANgaKfQkZb@Base 15 ++ _D4core8internal12parseoptions6MemVal6__initZ@Base 15 ++ _D4core8internal12parseoptions8optErrorFNbNiMxAaMxQeAxaZb@Base 15 ++ _D4core8internal12parseoptions__T12parseOptionsTSQBv2gc6config6ConfigZQBlFNbNiKQBfAyaZb@Base 15 ++ _D4core8internal12parseoptions__T14rt_parseOptionTbZQtFNbNiAxaKANgaKbQkZb@Base 15 ++ _D4core8internal12parseoptions__T17initConfigOptionsTSQCa2gc6config6ConfigZQBqFNbNiKQBfAyaZb@Base 15 ++ _D4core8internal12parseoptions__T4skipX7isspaceZQpFNaNbNiNfANgaZQf@Base 15 ++ _D4core8internal12parseoptions__T5parseHThZQkFNbNiAxaKANgaKhQkbZb@Base 15 ++ _D4core8internal12parseoptions__T5parseHTkZQkFNbNiAxaKANgaKkQkbZb@Base 15 ++ _D4core8internal12parseoptions__T5parseHTmZQkFNbNiAxaKANgaKmQkbZb@Base 15 ++ _D4core8internal2gc2os10isLowOnMemFNbNimZb@Base 15 ++ _D4core8internal2gc2os10os_mem_mapFNbNimbZPv@Base 15 ++ _D4core8internal2gc2os11__moduleRefZ@Base 15 ++ _D4core8internal2gc2os12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc2os12os_mem_unmapFNbNiPvmZi@Base 15 ++ _D4core8internal2gc2os15os_physical_memFNbNibZm@Base 15 ++ _D4core8internal2gc2os8wait_pidFNbNiibZEQBmQBkQBeQBe11ChildStatus@Base 15 ++ _D4core8internal2gc4bits11__moduleRefZ@Base 15 ++ _D4core8internal2gc4bits12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc4bits6GCBits10clearWordsMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits10copyRangeZMFNbNimmPxmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits16copyWordsShiftedMFNbNimmmPxmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits18copyRangeRepeatingMFNbNimmPxmmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits3setMFNaNbNiNlNemZi@Base 15 ++ _D4core8internal2gc4bits6GCBits4DtorMFNbNibZv@Base 15 ++ _D4core8internal2gc4bits6GCBits4copyMFNbNiPSQBqQBoQBiQBiQBgZv@Base 15 ++ _D4core8internal2gc4bits6GCBits4testMxFNaNbNiNlNemZm@Base 15 ++ _D4core8internal2gc4bits6GCBits4zeroMFNbNiZv@Base 15 ++ _D4core8internal2gc4bits6GCBits5allocMFNbNimbZv@Base 15 ++ _D4core8internal2gc4bits6GCBits5clearMFNaNbNiNlNemZi@Base 15 ++ _D4core8internal2gc4bits6GCBits6__initZ@Base 15 ++ _D4core8internal2gc4bits6GCBits6nwordsMxFNaNbNdNiZm@Base 15 ++ _D4core8internal2gc4bits6GCBits6setAllMFNbNiZv@Base 15 ++ _D4core8internal2gc4bits6GCBits8clrRangeMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits8setRangeMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits8setWordsMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits9clrRangeZMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits9copyRangeMFNbNimmPxmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits9copyWordsMFNbNimmPxmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits9setLockedMFNaNbNiNlNemZm@Base 15 ++ _D4core8internal2gc4bits6GCBits9setRangeZMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10baseOffsetFNbNimEQCfQCdQBxQBxQBvQCg4BinsZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10extendTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10initializeFZCQCbQBq11gcinterface2GC@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10invalidateFNbNiAvhbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10mallocTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10numExtendsl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10numMallocsl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11__moduleRefZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11adjustAttrsFNbKkxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11calcBinBaseFZG15G256s@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11numReallocsl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11reallocTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector10initializeFNbPSQCrQCpQCjQCjQChQCs3GcxZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_mallocFNbPvmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_parentFNbPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector11log_collectFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector8log_freeFNbNiPvmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12maxPauseTimeSQCb4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12sentinel_addFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12sentinel_subFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw13maxPoolMemorym@Base 15 ++ _D4core8internal2gc4impl12conservativeQw13sentinel_initFNbNiPvmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw13sentinel_sizeFNbNixPvmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw13setupMetadataFNbAvkmmxC8TypeInfoZQr@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC10freeNoSyncMFNbNiPvZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11checkNoSyncMFNbPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZ2goFNbPSQDcQDaQCuQCuQCsQDd3GcxZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11queryNoSyncMFNbPvZSQCx6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12_inFinalizerb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12addrOfNoSyncMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12extendNoSyncMFNbPvmmxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12sizeOfNoSyncMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQt@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reserveNoSyncMFNbmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZ2goFNbPSQDiQDgQDaQDaQCyQDj3GcxMxQBjZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC14getStatsNoSyncMFNbNiNeJSQDc6memory2GC5StatsZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC4filePa@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC4linem@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC5checkMFNbPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__ctorMFZCQCnQClQCfQCfQCdQCoQBt@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__dtorMFNlZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__vtblZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZ2goFNaNbNiNfPSQDaQCyQCsQCsQCqQDb3GcxZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6gcLockOSQClQCj8spinlock15AlignedSpinLock@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6lockNRFNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7__ClassZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZ2goFNaNbNiNfPSQDbQCzQCtQCtQCrQDc3GcxZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZ2goFNbPSQCzQCxQCrQCrQCpQDa3GcxQBhZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZ2goFNbPSQCyQCwQCqQCqQCoQCz3GcxZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC9isPreciseb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy10freeNoSyncMFNbNiPvZbS_DQEmQEkQEeQEeQEcQEn8freeTimelS_DQFrQFpQFjQFjQFhQFs8numFreeslTQCpZQEtMFNbNiKQDdZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11checkNoSyncMFNbPvZvS_DQElQEjQEdQEdQEbQEm9otherTimelS_DQFrQFpQFjQFjQFhQFs9numOtherslTQCrZQEuMFNbKQDdZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11fullCollectMFNbZ2goFNbPSQEnQElQEfQEfQEdQEo3GcxZmTQBbZQDlMFNbKQBnZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11queryNoSyncMFNbPvZSQEi6memory8BlkInfo_S_DQFeQFcQEwQEwQEuQFf9otherTimelS_DQGkQGiQGcQGcQGaQGl9numOtherslTQDkZQFnMFNbKQDwZQDx@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12addrOfNoSyncMFNbNiPvZQdS_DQEpQEnQEhQEhQEfQEq9otherTimelS_DQFvQFtQFnQFnQFlQFw9numOtherslTQCsZQEyMFNbNiKQDgZQDk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12extendNoSyncMFNbPvmmxC8TypeInfoZmS_DQEzQExQErQErQEpQFa10extendTimelS_DQGhQGfQFzQFzQFxQGi10numExtendslTQDiTmTmTxQDmZQFvMFNbKQEdKmKmKxQEhZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTmTkTmTxQDlZQFuMFNbKmKkKmKxQEeZQDx@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTymTkTmTxQDmZQFvMFNbKymKkKmKxQEgZQDz@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12sizeOfNoSyncMFNbNiPvZmS_DQEoQEmQEgQEgQEeQEp9otherTimelS_DQFuQFsQFmQFmQFkQFv9numOtherslTQCrZQExMFNbNiKQDfZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQtS_DQFeQFcQEwQEwQEuQFf10mallocTimelS_DQGmQGkQGeQGeQGcQGn10numMallocslTQDmTmTkTmTxQDpZQGcMFNbKQEjKmKkKmKxQEmZQEy@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reserveNoSyncMFNbmZmS_DQEmQEkQEeQEeQEcQEn9otherTimelS_DQFsQFqQFkQFkQFiQFt9numOtherslTmZQEtMFNbKmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13runFinalizersMFNbMxAvZ2goFNbPSQEtQErQElQElQEjQEu3GcxMxQBjZvS_DQFzQFxQFrQFrQFpQGa9otherTimelS_DQHfQHdQGxQGxQGvQHg9numOtherslTQDsTxQEgZQGnMFNbKQEjKxQExZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy14getStatsNoSyncMFNbNiNeJSQEn6memory2GC5StatsZvS_DQFlQFjQFdQFdQFbQFm9otherTimelS_DQGrQGpQGjQGjQGhQGs9numOtherslTQDjZQFuMFNbNiNfKQDzZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy6enableMFZ2goFNaNbNiNfPSQElQEjQEdQEdQEbQEm3GcxZvS_DQFmQFkQFeQFeQFcQFn9otherTimelS_DQGsQGqQGkQGkQGiQGt9numOtherslTQDnZQFvMFNbNiNfKQEdZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7clrAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7disableMFZ2goFNaNbNiNfPSQEmQEkQEeQEeQEcQEn3GcxZvS_DQFnQFlQFfQFfQFdQFo9otherTimelS_DQGtQGrQGlQGlQGjQGu9numOtherslTQDnZQFwMFNbNiNfKQEdZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7getAttrMFNbPvZ2goFNbPSQEkQEiQEcQEcQEaQEl3GcxQBhZkS_DQFoQFmQFgQFgQFeQFp9otherTimelS_DQGuQGsQGmQGmQGkQGv9numOtherslTQDqTQEdZQGbMFNbKQEgKQEtZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7setAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy8minimizeMFNbZ2goFNbPSQEjQEhQEbQEbQDzQEk3GcxZvS_DQFkQFiQFcQFcQFaQFl9otherTimelS_DQGqQGoQGiQGiQGgQGr9numOtherslTQDnZQFtMFNbKQDzZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14SENTINEL_EXTRAxk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14baseOffsetBitsyG14G4m@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14bytesAllocatedm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14numCollectionsm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool10allocPagesMFNbmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool18setFreePageOffsetsMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getSizeMxFNbNimZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool8getPagesMxFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool9freePagesMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi0Vbi1ZQBfMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi1Vbi1ZQBfMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getSizeMxFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool9allocPageMFNbEQCsQCqQCkQCkQCiQCt4BinsZPSQDsQDqQDkQDkQDiQDt4List@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15gc_precise_ctorFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw17maxCollectionTimeSQCg4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw18initialize_preciseFZCQCjQBy11gcinterface2GC@Base 15 ++ _D4core8internal2gc4impl12conservativeQw18sentinel_InvariantFNbNixPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw20gc_conservative_ctorFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZ23atforkHandlersInstalledb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10removeRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10rootsApplyMFNbMDFNbKSQCnQCc11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10smallAllocMFNbmKmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11__fieldDtorMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11__xopEqualsMxFKxSQCjQChQCbQCbQBzQCkQBpZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11collectForkMFNbbZEQCkQCiQCc2os11ChildStatus@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11disableForkMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11fullcollectMFNbbbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11rangesApplyMFNbMDFNbKSQCoQCd11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11recoverPageMFNbPSQCjQChQCbQCbQBzQCk15SmallObjectPoolmEQDuQDsQDmQDmQDkQDv4BinsZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11removeRangeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx12collectRootsMFNbNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx12markParallelMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx14scanBackgroundMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx15collectAllRootsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx15fork_needs_lockb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx15recoverNextPageMFNbEQCmQCkQCeQCeQCcQCn4BinsZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx15stopScanThreadsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx16startScanThreadsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx17clearBlkCacheDataMFNbNlPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx17collectInProgressMxFNbNdZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx17pullFromScanStackMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx18maxParallelThreadsMFNbZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx18setNextRecoverPoolMFNbEQCpQCnQChQChQCfQCq4BinsmZPSQDqQDoQDiQDiQDgQDr15SmallObjectPool@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx19_d_gcx_atfork_childUZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx20_d_gcx_atfork_parentUZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx21_d_gcx_atfork_prepareUZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ11smoothDecayFNaNbNiNfffZf@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ3maxFNaNbNiNfffZf@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx4DtorMFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx5allocMFNbmKmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx5sweepMFNbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx6lowMemMxFNbNdZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7addRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7getInfoMFNbPvZSQCg6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7newPoolMFNbmbZPSQChQCfQBzQBzQBxQCi4Pool@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7prepareMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7reserveMFNbmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8addRangeMFNbNiPvQcxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8bigAllocMFNbmKmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8binTableyG2049EQCgQCeQByQByQBwQCh4Bins@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8ctfeBinsFNbZG2049EQCjQChQCbQCbQBzQCk4Bins@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8findBaseMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8findPoolMFNaNbNiPvZPSQCmQCkQCeQCeQCcQCn4Pool@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8findSizeMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8instancePSQCbQBzQBtQBtQBrQCcQBh@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8isMarkedMFNbNlPvZEQCjQChQCb8blkcache8IsMarked@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZ13wrap_delegateUPvZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZEQChQCfQBz2os11ChildStatus@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8minimizeMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx9InvariantMxFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx9__xtoHashFNbNeKxSQCiQCgQCaQCaQByQCjQBoZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx9allocPageMFNbEQCfQCdQBxQBxQBvQCg4BinsZPSQDfQDdQCxQCxQCvQDg4List@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr3popMFNaNbNiZQs@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4growMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4pushMFNbNiQqZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5clearMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5resetMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr7opIndexMNgFNaNbNcNimZNgPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr8opAssignMFNaNbNcNiNjNeSQDkQDiQDcQDcQDaQDlQCq__TQCpTQCfZQCxZQBl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr9popLockedMFNbNiKQwZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf3popMFNaNbNiZQCh@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4growMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4pushMFNbNiQCfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5clearMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5resetMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi0ZQDa@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf3popMFNaNbNiZQCh@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4growMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4pushMFNbNiQCfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5clearMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5resetMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi1ZQDa@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi0ZQsMFNbNiNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi1ZQsMFNbNiNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi0ZQxMFNbNiNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi1ZQxMFNbNiNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi0ZQBcMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi1ZQBcMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi0ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi1ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi0ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi1ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3setFNaNbNiKG4mmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool10initializeMFNbmbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool12freePageBitsMFNbmMKxG4mZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool15freeAllPageBitsMFNbmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool16setPointerBitmapMFNbPvmmxC8TypeInfokZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool21setPointerBitmapSmallMFNbPvmmkxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool4DtorMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool6isFreeMxFNaNbNdNiNlNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool7clrBitsMFNbNimkZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool7getBitsMFNbmZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool7setBitsMFNbmkZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool8findBaseMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool8numPagesFNbNimZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool9InvariantMxFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool9pagenumOfMxFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool9slGetInfoMFNbPvZSQCj6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool9slGetSizeMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw7binbaseyG15G256s@Base 15 ++ _D4core8internal2gc4impl12conservativeQw7binsizeyG15s@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8freeTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8lockTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8markTimeSQBw4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8numFreesl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8prepTimeSQBw4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw9numOthersl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw9otherTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw9pauseTimeSQBx4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw9sweepTimeSQBx4time8Duration@Base 15 ++ _D4core8internal2gc4impl5protoQo11__moduleRefZ@Base 15 ++ _D4core8internal2gc4impl5protoQo12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC10rootsApplyMFMDFNbKSQChQBw11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC11__fieldDtorMFNbNiNlZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC11rangesApplyMFMDFNbKSQCiQBx11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC22transferRangesAndRootsMFZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC4DtorMFZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6__ctorMFZCQBxQBvQBpQBpQBnQByQBl@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6__initZ@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6__vtblZ@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7__ClassZ@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl6manualQp10initializeFZCQBuQBj11gcinterface2GC@Base 15 ++ _D4core8internal2gc4impl6manualQp11__moduleRefZ@Base 15 ++ _D4core8internal2gc4impl6manualQp12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc4impl6manualQp14gc_manual_ctorFZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC10__aggrDtorMFNlZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC10rootsApplyMFMDFNbKSQCjQBy11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC11__fieldDtorMFNbNiNlZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC11rangesApplyMFMDFNbKSQCkQBz11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6__ctorMFZCQBzQBxQBrQBrQBpQCaQBm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6__dtorMFNlZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6__initZ@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6__vtblZ@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7__ClassZ@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc5proxy11__moduleRefZ@Base 15 ++ _D4core8internal2gc5proxy12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc5proxy12instanceLockOSQBnQBl8spinlock8SpinLock@Base 15 ++ _D4core8internal2gc5proxy14isInstanceInitb@Base 15 ++ _D4core8internal2gc5proxy8instanceFNbNiNeZCQBpQBe11gcinterface2GC@Base 15 ++ _D4core8internal2gc5proxy9_instanceCQBiQx11gcinterface2GC@Base 15 ++ _D4core8internal2gc5proxy9proxiedGCCQBiQx11gcinterface2GC@Base 15 ++ _D4core8internal2gc8blkcache10__blkcacheFNbNdNiZPSQBw6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc8blkcache11__moduleRefZ@Base 15 ++ _D4core8internal2gc8blkcache12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc8blkcache12__getBlkInfoFNbNiPvZPSQBy6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc8blkcache12__nextBlkIdxi@Base 15 ++ _D4core8internal2gc8blkcache14processGCMarksFNbPvMDFNbQhZEQCeQCcQBwQBw8IsMarkedZv@Base 15 ++ _D4core8internal2gc8blkcache18__blkcache_storagePSQBw6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc8blkcache19_staticDtor_L66_C13FZv@Base 15.2 ++ _D4core8internal2gc8blkcache20__insertBlkInfoCacheFNbNiSQCc6memory8BlkInfo_PQvZv@Base 15 ++ _D4core8internal2gc9blockmeta10__allocPadFNaNbNemkZm@Base 15 ++ _D4core8internal2gc9blockmeta10__arrayPadFNaNbNemxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc9blockmeta11__moduleRefZ@Base 15 ++ _D4core8internal2gc9blockmeta12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc9blockmeta13__trimExtentsFNaNbNiMKPvKmkZv@Base 15.2 ++ _D4core8internal2gc9blockmeta18__arrayAllocLengthFNaNbKSQCc6memory8BlkInfo_Zm@Base 15 ++ _D4core8internal2gc9blockmeta18structTypeInfoSizeFNaNbNixC8TypeInfoZm@Base 15 ++ _D4core8internal2gc9blockmeta20__arrayAllocCapacityFNaNbKSQCe6memory8BlkInfo_Zm@Base 15 ++ _D4core8internal2gc9blockmeta21__setArrayAllocLengthFNaNbKSQCf6memory8BlkInfo_mbxC8TypeInfomZb@Base 15 ++ _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_ZxC8TypeInfo@Base 15 ++ _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbPvmkZxC8TypeInfo@Base 15.2 ++ _D4core8internal2gc9blockmeta23__setBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_xC8TypeInfoZv@Base 15 ++ _D4core8internal2gc9blockmeta24__arrayAllocLengthAtomicFNaNbKSQCi6memory8BlkInfo_Zm@Base 15 ++ _D4core8internal2gc9blockmeta25__setArrayAllocLengthImplFNaNbKSQCj6memory8BlkInfo_mbmmZb@Base 15 ++ _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMPvmZQe@Base 15.2 ++ _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMSQCg6memory8BlkInfo_ZPv@Base 15 ++ _D4core8internal2gc9pooltable11__moduleRefZ@Base 15 ++ _D4core8internal2gc9pooltable12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx4DtorMFNbNiZv@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6insertMFNbNiPQCdZb@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6lengthMxFNaNbNdNiNlNfZm@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7maxAddrMxFNaNbNdNiNfZPxv@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7minAddrMxFNaNbNdNiNfZPxv@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opIndexMNgFNaNbNcNiNjNemZNgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNeZANgPSQEgQEeQDyQCqQCoQEhQCd@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNemmZANgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8findPoolMFNaNbNiPvZPQCk@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZ4swapFNaNbNiNfKPQCxKQfZv@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZAPQCj@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx9InvariantMxFNaNbNiZv@Base 15 ++ _D4core8internal3utf10UTF8strideyAi@Base 15 ++ _D4core8internal3utf10toUCSindexFNaNbNiNfMxAwmZm@Base 15 ++ _D4core8internal3utf10toUCSindexFNaNfMxAamZm@Base 15 ++ _D4core8internal3utf10toUCSindexFNaNfMxAumZm@Base 15 ++ _D4core8internal3utf10toUTFindexFNaNbNiNfMxAumZm@Base 15 ++ _D4core8internal3utf10toUTFindexFNaNbNiNfMxAwmZm@Base 15 ++ _D4core8internal3utf10toUTFindexFNaNfMxAamZm@Base 15 ++ _D4core8internal3utf11__moduleRefZ@Base 15 ++ _D4core8internal3utf12__ModuleInfoZ@Base 15 ++ _D4core8internal3utf12isValidDcharFNaNbNiNfwZb@Base 15 ++ _D4core8internal3utf6decodeFNaNfMxAaKmZw@Base 15 ++ _D4core8internal3utf6decodeFNaNfMxAuKmZw@Base 15 ++ _D4core8internal3utf6decodeFNaNfMxAwKmZw@Base 15 ++ _D4core8internal3utf6encodeFNaNbNfKAawZv@Base 15 ++ _D4core8internal3utf6encodeFNaNbNfKAuwZv@Base 15 ++ _D4core8internal3utf6encodeFNaNbNfKAwwZv@Base 15 ++ _D4core8internal3utf6strideFNaNbNiNfMxAamZk@Base 15 ++ _D4core8internal3utf6strideFNaNbNiNfMxAumZk@Base 15 ++ _D4core8internal3utf6strideFNaNbNiNfMxAwmZk@Base 15 ++ _D4core8internal3utf6toUTF8FNaNbNfNkMAyaZQe@Base 15 ++ _D4core8internal3utf6toUTF8FNaNbNiNfNkMAawZQe@Base 15 ++ _D4core8internal3utf6toUTF8FNaNeMxAuZAya@Base 15 ++ _D4core8internal3utf6toUTF8FNaNeMxAwZAya@Base 15 ++ _D4core8internal3utf7toUTF16FNaNbNeMxAwZAyu@Base 15 ++ _D4core8internal3utf7toUTF16FNaNbNfNkMAyuZQe@Base 15 ++ _D4core8internal3utf7toUTF16FNaNbNiNfNkMAuwZQe@Base 15 ++ _D4core8internal3utf7toUTF16FNaNeMxAaZAyu@Base 15 ++ _D4core8internal3utf7toUTF32FNaNbNfNkMAywZQe@Base 15 ++ _D4core8internal3utf7toUTF32FNaNeMxAaZAyw@Base 15 ++ _D4core8internal3utf7toUTF32FNaNeMxAuZAyw@Base 15 ++ _D4core8internal3utf8toUTF16zFNaNfMxAaZPxu@Base 15 ++ _D4core8internal3utf__T13isValidStringTAyaZQuFNaNbNfMxAyaZb@Base 15 ++ _D4core8internal3utf__T13isValidStringTAyuZQuFNaNbNfMxAyuZb@Base 15 ++ _D4core8internal3utf__T13isValidStringTAywZQuFNaNbNfMxAywZb@Base 15 ++ _D4core8internal4hash11__moduleRefZ@Base 15 ++ _D4core8internal4hash12__ModuleInfoZ@Base 15 ++ _D4core8internal4hash__T13coalesceFloatTdZQsFNaNbNiNfxdZd@Base 15 ++ _D4core8internal4hash__T13coalesceFloatTeZQsFNaNbNiNfxeZe@Base 15 ++ _D4core8internal4hash__T13coalesceFloatTfZQsFNaNbNiNfxfZf@Base 15 ++ _D4core8internal4hash__T6hashOfTAxE2rt4util7utility16__c_complex_realZQBuFNaNbNiNfQBymZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxE2rt4util7utility17__c_complex_floatZQBvFNaNbNiNfQBzmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxE2rt4util7utility18__c_complex_doubleZQBwFNaNbNiNfQCamZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxPvZQnFNaNbNiNfMxAQrmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxPyS6object10ModuleInfoZQBhFNaNbNiNfMxAQBmmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxaZQmFNaNbNiNfMxAamZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxdZQmFNaNbNiNfMxAdmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxeZQmFNaNbNiNfMxAemZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxfZQmFNaNbNiNfMxAfmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxhZQmFNaNbNiNfMxAhmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxkZQmFNaNbNiNfMxAkmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxmZQmFNaNbNiNfMxAmmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxtZQmFNaNbNiNfMxAtmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxvZQmFNaNbNiNfMxAvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAyaZQmFNaNbNiNfMxAyamZm@Base 15 ++ _D4core8internal4hash__T6hashOfTDFZvZQnFNaNbNiNeMxDQsmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTPvZQlFNaNbNiNeMxPvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTdZQmZQBrFNaNbNiNfQBvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTeZQmZQBrFNaNbNiNfQBvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTfZQmZQBrFNaNbNiNfQBvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdZm@Base 15 ++ _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxeZm@Base 15 ++ _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxemZm@Base 15 ++ _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfZm@Base 15 ++ _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfmZm@Base 15 ++ _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhZm@Base 15 ++ _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkZm@Base 15 ++ _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTtZQkFNaNbNiNeMxtZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxE2rt4util7utility16__c_complex_realZQBtFNaNbNiNfKxQBymZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxE2rt4util7utility17__c_complex_floatZQBuFNaNbNiNfKxQBzmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxE2rt4util7utility18__c_complex_doubleZQBvFNaNbNiNfKxQCamZm@Base 15 ++ _D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm@Base 15 ++ _D4core8internal4hash__T9bytesHashVbi1ZQpFNaNbNiNeMAxhmZm@Base 15 ++ _D4core8internal4hash__T9get32bitsZQlFNaNbNiMPxhZk@Base 15 ++ _D4core8internal4util4math11__moduleRefZ@Base 15 ++ _D4core8internal4util4math12__ModuleInfoZ@Base 15 ++ _D4core8internal4util4math__T3minTkZQhFNaNbNiNfkkZk@Base 15 ++ _D4core8internal4util5array10arrayToPtrFNbNexAvZm@Base 15 ++ _D4core8internal4util5array11__moduleRefZ@Base 15 ++ _D4core8internal4util5array12__ModuleInfoZ@Base 15 ++ _D4core8internal4util5array17_enforceNoOverlapFNbNfxAammxmZv@Base 15 ++ _D4core8internal4util5array18_enforceSameLengthFNbNfxAaxmxmZv@Base 15 ++ _D4core8internal4util5array21_enforceNoOverlapNogcFNbNfKxAammxmZv@Base 15 ++ _D4core8internal4util5array22_enforceSameLengthNogcFNbNfKxAaxmxmZv@Base 15 ++ _D4core8internal4util5array27enforceRawArraysConformableFNbNfxAaxmxAvxQdxbZv@Base 15 ++ _D4core8internal4util5array31enforceRawArraysConformableNogcFNbNfxAaxmxAvxQdxbZv@Base 15 ++ _D4core8internal4util5array6_storeG256a@Base 15 ++ _D4core8internal4util5array__T12errorMessageTxmTxmZQvFNbNiNeMxPaxAaxmxmZAa@Base 15 ++ _D4core8internal5abort11__moduleRefZ@Base 15 ++ _D4core8internal5abort12__ModuleInfoZ@Base 15 ++ _D4core8internal5abortQgFNbNiNfMAyaMQemZ8writeStrFNbNiNeAAxaXv@Base 15 ++ _D4core8internal5abortQgFNbNiNfMAyaMQemZv@Base 15 ++ _D4core8internal5array10comparison11__moduleRefZ@Base 15 ++ _D4core8internal5array10comparison12__ModuleInfoZ@Base 15 ++ _D4core8internal5array10comparison__T5__cmpTaZQjFNaNbNiNeMxAaMxQeZi@Base 15 ++ _D4core8internal5array10operations10isBinaryOpFNaNbNiNfMAyaZb@Base 15 ++ _D4core8internal5array10operations11__moduleRefZ@Base 15 ++ _D4core8internal5array10operations12__ModuleInfoZ@Base 15 ++ _D4core8internal5array10operations16isBinaryAssignOpFAyaZb@Base 15 ++ _D4core8internal5array10operations8toStringFmZAya@Base 15 ++ _D4core8internal5array10operations9isUnaryOpFNaNbNiNfMAyaZb@Base 15 ++ _D4core8internal5array11arrayassign11__moduleRefZ@Base 15 ++ _D4core8internal5array11arrayassign12__ModuleInfoZ@Base 15 ++ _D4core8internal5array11arrayassign27enforceRawArraysConformableFNaNbNiNexAaxmxAvxQdxbZv@Base 15 ++ _D4core8internal5array11duplication11__moduleRefZ@Base 15 ++ _D4core8internal5array11duplication12__ModuleInfoZ@Base 15 ++ _D4core8internal5array11duplication__T4_dupTaTyaZQlFNaNbNeMAaZAya@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxAyaTAyaZQpFNaNbNeMAxQuZAQu@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxaTaZQlFNaNbNeMAxaZAa@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTaTyaZQpFNaNbNfMAaZAya@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxAyaTAyaZQtFNaNbNfMAxQuZAQu@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxaTaZQpFNaNbNfMAxaZAa@Base 15 ++ _D4core8internal5array12construction11__moduleRefZ@Base 15 ++ _D4core8internal5array12construction12__ModuleInfoZ@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTbZQrFNaNbNembZAb@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTThZQrFNaNbNembZAh@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTAyaZQtFNaNbNembZAQr@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTaZQrFNaNbNembZAa@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTbZQrFNaNbNembZAb@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUThZQrFNaNbNembZAh@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTyaZQsFNaNbNembZAya@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTAyaZQBeFNaNbNembZAQs@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTaZQBcFNaNbNembZAa@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyaZQBdFNaNbNembZAya@Base 15 ++ _D4core8internal5array13concatenation11__moduleRefZ@Base 15 ++ _D4core8internal5array13concatenation12__ModuleInfoZ@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeTQkZQBeFNaNbNeQuQwQBbZQBf@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrKQuZQBa@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrQtZQz@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaQBdQBgQBjZQBn@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxKQBaQBdZQBh@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxQzQBbZQBf@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvQxZQBa@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuKQxZQBa@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuQwZQz@Base 15 ++ _D4core8internal5array5utils11__moduleRefZ@Base 15 ++ _D4core8internal5array5utils11gcStatsPureFNaNbZSQBu6memory2GC5Stats@Base 15 ++ _D4core8internal5array5utils12__ModuleInfoZ@Base 15 ++ _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZ12impureBypassFNbNiQBdiQBhQBkmZm@Base 15 ++ _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZm@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTAyaZQtFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTaZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTbZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocThZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array7casting11__moduleRefZ@Base 15 ++ _D4core8internal5array7casting12__ModuleInfoZ@Base 15 ++ _D4core8internal5array8capacity11__moduleRefZ@Base 15 ++ _D4core8internal5array8capacity12__ModuleInfoZ@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTACQCi6thread10threadbase10ThreadBaseTQBkZ18_d_arraysetlengthTFNaNbNeNkMKQCumZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAaTaZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAwTwZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAyaTyaZ18_d_arraysetlengthTFNaNbNeNkMKQBmmZm@Base 15 ++ _D4core8internal5array8equality11__moduleRefZ@Base 15 ++ _D4core8internal5array8equality12__ModuleInfoZ@Base 15 ++ _D4core8internal5array8equality__T7isEqualTPxvTQeZQqFNaNbNiMxPPvMxQfmZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTPyS6object10ModuleInfoTQxZQBjFNaNbNiMxPPyQBnMxQimZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTaTaZQnFNaNbNiMxPaMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTdTdZQnFNaNbNiMxPdMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTeTeZQnFNaNbNiMxPeMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTfTfZQnFNaNbNiMxPfMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualThThZQnFNaNbNiMxPhMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTkTkZQnFNaNbNiMxPkMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTmTmZQnFNaNbNiMxPmMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTtTtZQnFNaNbNiMxPtMxQemZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTPxvTQeZQrFNaNbNiNeMxAPvMxQfZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTPyS6object10ModuleInfoTQxZQBkFNaNbNiNeMxAPyQBpMxQiZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTdTdZQoFNaNbNiNeMxAdMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTeTeZQoFNaNbNiNeMxAeMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTfTfZQoFNaNbNiNeMxAfMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsThThZQoFNaNbNiNeMxAhMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTkTkZQoFNaNbNiNeMxAkMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTmTmZQoFNaNbNiNeMxAmMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTtTtZQoFNaNbNiNeMxAtMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxAyaTxQfZQtFNaNbNiNfMAxQwMQfZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxDFNbC6ObjectZvTxQqZQBeFNaNbNiNfMAxQBiMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility16__c_complex_realTxQBlZQCaFNaNbNiNfMAxQCeMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility17__c_complex_floatTxQBmZQCbFNaNbNiNfMAxQCfMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility18__c_complex_doubleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS2rt3aaA6BucketTxQrZQBfFNaNbNiNfMAxQBjMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxSQBs8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTxQCvZQDkFNaNbNiNfMAxQDoMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxSQBsQBq5newaa6BucketTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxvTxvZQqFNaNbNiNfMAxvMQeZb@Base 15 ++ _D4core8internal5array9appending11__moduleRefZ@Base 15 ++ _D4core8internal5array9appending12__ModuleInfoZ@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAOaTOaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAOuTOuZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAaTaZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAuTuZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAyaTyaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAAyaTQeZQBdFNaNbNcNeMNkKQymZQBc@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOaTOaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOuTOuZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTASQCe8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTQCuZQDuFNaNbNcNeMNkKQDpmZQDu@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAaTaZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAuTuZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAwTwZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyaTyaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 ++ _D4core8internal5newaa11__moduleRefZ@Base 15 ++ _D4core8internal5newaa12__ModuleInfoZ@Base 15 ++ _D4core8internal5newaa3mixFNaNbNiNfmZm@Base 15 ++ _D4core8internal5newaa4Impl11__xopEqualsMxFKxSQBsQBqQBkQBhZb@Base 15 ++ _D4core8internal5newaa4Impl6__initZ@Base 15 ++ _D4core8internal5newaa4Impl9__xtoHashFNbNeKxSQBrQBpQBjQBgZm@Base 15 ++ _D4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D4core8internal5newaa7AAShell6__initZ@Base 15 ++ _D4core8internal5qsort11__moduleRefZ@Base 15 ++ _D4core8internal5qsort12__ModuleInfoZ@Base 15 ++ _D4core8internal5qsort7_adSortUNkMAvC8TypeInfoZ3cmpUMxPvMxQeMPvZi@Base 15 ++ _D4core8internal6atomic11__moduleRefZ@Base 15 ++ _D4core8internal6atomic12__ModuleInfoZ@Base 15 ++ _D4core8internal6atomic12simpleFormatFAyaMAQfZQi@Base 15 ++ _D4core8internal6atomic5pauseFNaNbNiNeZv@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TmZQBmFNaNbNiNePNgmZNgm@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNePNgPONgSQBpQBpQBjZNgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC6ObjectZQBuFNaNbNiNePONgCQzZONgQh@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPOSQCl4stdc5stdio8_IO_FILEZQClFNaNbNiNePNgPONgSQEdQBsQBqQBnZNgQu@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNePNgPQBkZNgQh@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TbZQBmFNaNbNiNePNgbZNgb@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5ThZQBmFNaNbNiNePNghZNgh@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TiZQBmFNaNbNiNePNgiZNgi@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TkZQBmFNaNbNiNePNgkZNgk@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TmZQBmFNaNbNiNePNgmZNgm@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TtZQBmFNaNbNiNePNgtZNgt@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TbZQBnFNaNbNiNePbbZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TmZQBnFNaNbNiNePmmZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorZQCjFNaNbNiNePQBlQBoZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONZQCwFNaNbNiNePQByQCbZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TmZQBnFNaNbNiNePmmZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCgFNaNbNiNePQBiQBlZv@Base 15 ++ _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 ++ _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 ++ _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 ++ _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0ThZQCkFNaNbNiNePhQchZb@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TmZQCkFNaNbNiNePmQcmZb@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TtZQCkFNaNbNiNePtQctZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5ThZQCqFNaNbNiNePhxhhZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TmZQCqFNaNbNiNePmxmmZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TtZQCqFNaNbNiNePtxttZb@Base 15 ++ _D4core8internal6moving11__moduleRefZ@Base 15 ++ _D4core8internal6moving12__ModuleInfoZ@Base 15 ++ _D4core8internal6string11__moduleRefZ@Base 15 ++ _D4core8internal6string12__ModuleInfoZ@Base 15 ++ _D4core8internal6string__T17TempStringNoAllocVhi20ZQz3getMNgFNaNbNiNjNfZANga@Base 15 ++ _D4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 ++ _D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflZSQCnQClQCf__T17TempStringNoAllocVhi20ZQz@Base 15 ++ _D4core8internal6string__T20unsignedToTempStringVii10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 ++ _D4core8internal6string__T20unsignedToTempStringVii16Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 ++ _D4core8internal6string__T20unsignedToTempStringVki10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 ++ _D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmZSQCpQCnQCh__T17TempStringNoAllocVhi20ZQz@Base 15 ++ _D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi@Base 15 ++ _D4core8internal6string__T9numDigitsVki10ZQqFNaNbNiNfmZi@Base 15 ++ _D4core8internal6traits11__moduleRefZ@Base 15 ++ _D4core8internal6traits12__ModuleInfoZ@Base 15 ++ _D4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 ++ _D4core8internal6traits7hasDtorFAAyaZb@Base 15 ++ _D4core8internal7convert10ctfe_allocFNaNbNiNemZAh@Base 15 ++ _D4core8internal7convert11__moduleRefZ@Base 15 ++ _D4core8internal7convert11shiftrRoundFNaNbNiNfmZm@Base 15 ++ _D4core8internal7convert12__ModuleInfoZ@Base 15 ++ _D4core8internal7convert5Float6__initZ@Base 15 ++ _D4core8internal7convert7binPow2FNaNbNiNfiZ10binPosPow2FNaNbNiNfiZe@Base 15 ++ _D4core8internal7convert7binPow2FNaNbNiNfiZe@Base 15 ++ _D4core8internal7convert__T20denormalizedMantissaTeZQzFNaNbNiNfekZSQCnQClQCf5Float@Base 15 ++ _D4core8internal7convert__T5parseVbi0HTeZQoFNaNbNiNfeZSQCbQBzQBt5Float@Base 15 ++ _D4core8internal7convert__T5parseVbi0HTxeZQpFNaNbNiNfxeZSQCdQCbQBv5Float@Base 15 ++ _D4core8internal7convert__T7binLog2TeZQlFNaNbNiNfxeZk@Base 15 ++ _D4core8internal7convert__T7toUbyteTPxvZQnFNaNbNiNeNkMxAPvZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTPyS6object10ModuleInfoZQBgFNaNbNiNeNkMxAPyQBoZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTaZQlFNaNbNiNeNkMxAaZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTeZQlFNaNbNiNeMKxeZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteThZQlFNaNbNiNeNkMxAhZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeMKxkZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeNkMxAkZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeMKxmZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeNkMxAmZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeMKxtZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeNkMxAtZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTvZQlFNaNbNiNeNkMxAvZAxh@Base 15 ++ _D4core8internal7dassert11__moduleRefZ@Base 15 ++ _D4core8internal7dassert12__ModuleInfoZ@Base 15 ++ _D4core8internal7dassert15invertCompTokenFNaNbNiNfMAyaZQe@Base 15 ++ _D4core8internal7dassert16calcFieldOverlapFMxAmZAb@Base 15 ++ _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZ11formatTupleFNaNbNiNfMAaKmIQBpIbZv@Base 15 ++ _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZAya@Base 15 ++ _D4core8internal7dassert9pureAllocFNaNbNiNfmZAh@Base 15 ++ _D4core8internal7dassert9pureAllocFmZ5allocFNaNbNfmZAh@Base 15 ++ _D4core8internal7dassert__T20assumeFakeAttributesTPFNaNbNfmZAhZQBkFNaNbNiNeQzZPFNaNbNiNfmZQBe@Base 15 ++ _D4core8internal7switch_11__moduleRefZ@Base 15 ++ _D4core8internal7switch_12__ModuleInfoZ@Base 15 ++ _D4core8internal7switch___T14__switchSearchTyaZQuFNaNbNiNfMxAAyaMxQfZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274VxQza5_7072696e74VxQBqa6_69676e6f7265VxQCka9_646570726563617465ZQDxFNaNbNiNfMxQDxZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274ZQBmFNaNbNiNfMxQBmZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia7_70726563697365VxQBda12_636f6e736572766174697665ZQCxFNaNbNiNfMxQCxZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eVxQBfa9_746573742d6f6e6c79VxQCfa12_746573742d6f722d6d61696eZQDzFNaNbNiNfMxQDzZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eZQBsFNaNbNiNfMxQBsZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_ZQvFNaNbNiNfMxQuZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa12_636f6e736572766174697665ZQBuFNaNbNiNfMxQBuZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa12_746573742d6f722d6d61696eZQBuFNaNbNiNfMxQBuZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZ5casesyG10Aa@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZ5casesyG11Aa@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65VxQqa7_636f6c6c656374VxQBla8_66696e616c697a65ZQCwFNaNbNiNfMxQCwZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65ZQBdFNaNbNiNfMxQBdZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265VxQua9_646570726563617465ZQCgFNaNbNiNfMxQCgZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265ZQBhFNaNbNiNfMxQBhZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa8_66696e616c697a65ZQBlFNaNbNiNfMxQBlZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaZQnFNaNbNiNfMxAyaZi@Base 15 ++ _D4core8internal8lifetime11__moduleRefZ@Base 15 ++ _D4core8internal8lifetime12__ModuleInfoZ@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS2rt3aaA4ImplZQBjFNaNbNiNeMKQBcZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS2rt9critical_18D_CRITICAL_SECTIONZQCeFNaNbNiNeMKQBxZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3gcc8sections3elf9ThreadDSOZQByFNaNbNiNeMKQBrZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface4RootZQBvFNaNbNiNeMKQBoZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface5RangeZQBwFNaNbNiNeMKQBpZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBw6thread7context12StackContextZQCdFNaNbNiNeMKQBwZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNeMKQDjZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 ++ _D4core8internal8postblit11__moduleRefZ@Base 15 ++ _D4core8internal8postblit12__ModuleInfoZ@Base 15 ++ _D4core8internal8spinlock11__moduleRefZ@Base 15 ++ _D4core8internal8spinlock12__ModuleInfoZ@Base 15 ++ _D4core8internal8spinlock15AlignedSpinLock6__ctorMOFNbNcNiNeEQChQCfQBz8SpinLock10ContentionZOSQDoQDmQDgQDa@Base 15 ++ _D4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D4core8internal8spinlock8SpinLock4lockMOFNbNiNeZv@Base 15 ++ _D4core8internal8spinlock8SpinLock5yieldMOFNbNiNemZv@Base 15 ++ _D4core8internal8spinlock8SpinLock6__ctorMOFNbNcNiNeEQBzQBxQBrQBl10ContentionZOSQDaQCyQCsQCm@Base 15 ++ _D4core8internal8spinlock8SpinLock6__initZ@Base 15 ++ _D4core8internal8spinlock8SpinLock6unlockMOFNbNiNeZv@Base 15 ++ _D4core8internal9container5array11__moduleRefZ@Base 15 ++ _D4core8internal9container5array12__ModuleInfoZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk4backMNgFNaNbNcNdNiZNgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk4swapMFNaNbNiNfKSQCkQCiQCcQBv__TQBsTQBpZQCaZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk5frontMNgFNaNbNcNdNiNfZNgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk7opIndexMNgFNaNbNcNimZNgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNiZANgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNimmZANgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk8opAssignMFNbNcNiNjSQCnQClQCfQBy__TQBvTQBsZQCdZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk__T10insertBackZQnMFNbNiQBdZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4backMNgFNaNbNcNdNiZNgPSQBxQBwQBqQBp@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4swapMFNaNbNiNfKSQDgQDeQCyQCr__TQCoTQClZQCwZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5frontMNgFNaNbNcNdNiNfZNgPSQCaQBzQBtQBs@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opIndexMNgFNaNbNcNimZNgPSQBzQByQBsQBr@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNiZANgPSQBxQBwQBqQBp@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNimmZANgPSQBzQByQBsQBr@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf8opAssignMFNbNcNiNjSQDjQDhQDbQCu__TQCrTQCoZQCzZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf__T10insertBackZQnMFNbNiKQCaZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTQDfZQDwQCo@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4backMNgFNaNbNcNdNiZNgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4swapMFNaNbNiNfKSQExQEvQEpQEi__TQEfTQEcZQEnZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5frontMNgFNaNbNcNdNiNfZNgPSQFhQFfQEzQDr__TQDmTQDhTQDiZQDyQCo@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opIndexMNgFNaNbNcNimZNgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNiZANgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNimmZANgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw8opAssignMFNbNcNiNjSQFaQEyQEsQEl__TQEiTQEfZQEqZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTiZQDuQCm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4backMNgFNaNbNcNdNiZNgSQCcQCbQBvQBu@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4swapMFNaNbNiNfKSQDlQDjQDdQCw__TQCtTQCqZQDbZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5frontMNgFNaNbNcNdNiNfZNgSQCfQCeQByQBx@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opIndexMNgFNaNbNcNimZNgSQCeQCdQBxQBw@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNiZANgSQCcQCbQBvQBu@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNimmZANgSQCeQCdQBxQBw@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCwTQCtZQDeZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk__T10insertBackZQnMFNbNiQCeZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4backMNgFNaNbNcNdNiZNgSQDoQBzQBzQBp@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4swapMFNaNbNiNfKSQDiQDgQDaQCt__TQCqTQCnZQCyZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5frontMNgFNaNbNcNdNiNfZNgSQDrQCcQCcQBs@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opIndexMNgFNaNbNcNimZNgSQDqQCbQCbQBr@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNiZANgSQDoQBzQBzQBp@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNimmZANgSQDqQCbQCbQBr@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh__T10insertBackZQnMFNbNiQCbZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4backMNgFNaNbNcNdNiZNgSQDpQCaQCaQBq@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4swapMFNaNbNiNfKSQDjQDhQDbQCu__TQCrTQCoZQCzZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5frontMNgFNaNbNcNdNiNfZNgSQDsQCdQCdQBt@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opIndexMNgFNaNbNcNimZNgSQDrQCcQCcQBs@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNiZANgSQDpQCaQCaQBq@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNimmZANgSQDrQCcQCcQBs@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi__T10insertBackZQnMFNbNiQCcZv@Base 15 ++ _D4core8internal9container5treap11__moduleRefZ@Base 15 ++ _D4core8internal9container5treap12__ModuleInfoZ@Base 15 ++ _D4core8internal9container5treap4Rand5frontMFNaNbNdNiNfZk@Base 15 ++ _D4core8internal9container5treap4Rand6__initZ@Base 15 ++ _D4core8internal9container5treap4Rand6opCallMFNaNbNiNfZk@Base 15 ++ _D4core8internal9container5treap4Rand8popFrontMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh10initializeMFNaNbNiNfmZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh13opApplyHelperFNbxPSQDmQDkQDeQCx__TQCuTQCrZQDc4NodeMDFNbKxSQEzQDkQDkQDaZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZQBl@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiQBqZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeFNbNiPPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeMFNbNiQBqZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMFNbMDFNbKQBvZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMxFNbMDFNbKxSQDmQBxQBxQBnZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateLFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateRFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8freeNodeFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9allocNodeMFNbNiQBtZPSQDnQDlQDfQCy__TQCvTQCsZQDd4Node@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllMFNbNiZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi10initializeMFNaNbNiNfmZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi13opApplyHelperFNbxPSQDnQDlQDfQCy__TQCvTQCsZQDd4NodeMDFNbKxSQFaQDlQDlQDbZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node11__xopEqualsMxFKxSQDqQDoQDiQDb__TQCyTQCvZQDgQByZb@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node9__xtoHashFNbNeKxSQDpQDnQDhQDa__TQCxTQCuZQDfQBxZm@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZQBl@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiQBrZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeFNbNiPPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNiQBrZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMFNbMDFNbKQBwZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMxFNbMDFNbKxSQDnQByQByQBoZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateLFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateRFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8freeNodeFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9allocNodeMFNbNiQBuZPSQDoQDmQDgQCz__TQCwTQCtZQDe4Node@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllFNbNiPSQDjQDhQDbQCu__TQCrTQCoZQCz4NodeZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllMFNbNiZv@Base 15 ++ _D4core8internal9container6common11__moduleRefZ@Base 15 ++ _D4core8internal9container6common12__ModuleInfoZ@Base 15 ++ _D4core8internal9container6common7xmallocFNbNimZPv@Base 15 ++ _D4core8internal9container6common8xreallocFNbNiPvmZQe@Base 15 ++ _D4core8internal9container6common__T10initializeTAvZQqFNaNbNiNfKQpZv@Base 15 ++ _D4core8internal9container6common__T10initializeTPS3gcc8sections3elf3DSOZQBlFNaNbNiNfKQBlZv@Base 15 ++ _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 ++ _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDcFNaNbNiNfKQDcZv@Base 15 ++ _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 ++ _D4core8internal9container6common__T10initializeTS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface4RootZQBnFNaNbNiNfKQBnZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface5RangeZQBoFNaNbNiNfKQBoZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDbFNaNbNiNfKQDbZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 ++ _D4core8internal9container6common__T7destroyTAvZQmFNaNbNiNfKQpZv@Base 15 ++ _D4core8internal9container6common__T7destroyTPS3gcc8sections3elf3DSOZQBhFNaNbNiNfKQBlZv@Base 15 ++ _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 ++ _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCyFNaNbNiNfKQDcZv@Base 15 ++ _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 ++ _D4core8internal9container6common__T7destroyTS3gcc8sections3elf9ThreadDSOZQBmFNaNbNiNfKQBqZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface4RootZQBjFNaNbNiNfKQBnZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface5RangeZQBkFNaNbNiNfKQBoZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCxFNaNbNiNfKQDbZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 ++ _D4core8internal9container7hashtab11__moduleRefZ@Base 15 ++ _D4core8internal9container7hashtab12__ModuleInfoZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi10__aggrDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi11__fieldDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi13opIndexAssignMFNbNiQBtQCaZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi3getMFNbNiQBmZPQBn@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node11__xopEqualsMxFKxSQDsQDqQDkQDd__TQCyTQCtTQCtZQDkQCcZb@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node9__xtoHashFNbNeKxSQDrQDpQDjQDc__TQCxTQCsTQCsZQDjQCbZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4growMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4maskMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5resetMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6hashOfFNaNbNiNeMKxAaZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6removeMFNbNiIAaZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6shrinkMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opApplyMFMDFKQBqKQBqZiZi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opIndexMNgFNaNbNcNiQBwZNgSQByQByQBr@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTQCpZQDgZQBg@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxAaZPNgSQCxQCxQCq@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk10__aggrDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk11__fieldDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk13opIndexAssignMFNbNiQBwQCcZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk3getMFNbNiQBoZPQBq@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4growMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4maskMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5resetMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6hashOfFNaNbNiNeMKxPvZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6removeMFNbNiIPvZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6shrinkMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opApplyMFMDFKQBsKQBtZiZi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opIndexMNgFNaNbNcNiQByZNgPSQCbQCaQBuQBt@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk8opAssignMFNbNcNiNjSQDqQDoQDiQDb__TQCwTQCrTQCsZQDiZQBg@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPvZPNgPSQDaQCzQCtQCs@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi10__aggrDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi11__fieldDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi13opIndexAssignMFNbNiiQByZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi3getMFNbNiQBmZPi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4growMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4maskMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5resetMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6hashOfFNaNbNiNeMKxPyQBvZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6removeMFNbNiIPyQBqZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6shrinkMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opApplyMFMDFKQBqKiZiZi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opIndexMNgFNaNbNcNiQBwZNgi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTiZQDeZQBe@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPyQCvZPNgi@Base 15 ++ _D4core8lifetime11__moduleRefZ@Base 15 ++ _D4core8lifetime12__ModuleInfoZ@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS2rt3aaA4ImplZQBcFNaNbNeZPQBa@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS2rt9critical_18D_CRITICAL_SECTIONZQBxFNaNbNeZPQBv@Base 15 ++ _D4core8lifetime__T11_d_newitemTTSQBg6thread7context12StackContextZQBwFNaNbNeZPQBu@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3gcc9backtrace12LibBacktraceZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC6object5ErrorZQBeFNaNbNeZQBa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC9ExceptionZQBbFNaNbNeZQx@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync5mutex5MutexZQBlFNaNbNeZQBh@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6ReaderZQCeFNaNbNeZQCa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6WriterZQCeFNaNbNeZQCa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync9condition9ConditionZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync9exception9SyncErrorZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh6thread10threadbase15ThreadExceptionZQCeFNaNbNeZQCa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh6thread8osthread6ThreadZQBrFNaNbNeZQBn@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh9exception16UnicodeExceptionZQBwFNaNbNeZQBs@Base 15 ++ _D4core8lifetime__T12_d_newclassTTOCQBi4sync5mutex5MutexZQBmFNaNbNeZOQBi@Base 15 ++ _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6ReaderZQCfFNaNbNeZOQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6WriterZQCfFNaNbNeZOQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTOCQBi4sync9condition9ConditionZQBuFNaNbNeZOQBq@Base 15 ++ _D4core8lifetime__T7emplaceTC3gcc9backtrace12LibBacktraceTiZQBpFNiQBmKiZQBs@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiAvZQBh@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiNfQBgZQBk@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl12conservativeQw14ConservativeGCZQClFQCgZQCk@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl6manualQp8ManualGCZQBxFQBsZQBw@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception10RangeErrorTAyaTmTnZQBsFNaNbNiNfQBvKQyKmKQxZQCh@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTiZQBuFNaNbNiNfQBxKQzKQBcKiZQCk@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTmZQBuFNaNbNiNfQBxKQzKQBcKmZQCk@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTmZQBrFNaNbNiNfQBuKQwKmZQCd@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception11SwitchErrorTAyaTQeTmTnZQBwFNaNbNiNfQBzKQBbKQBfKmKQBcZQCr@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCxFNaNbNiNfQDaKQCaKQBtKQBeKmZQDs@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception15ArrayIndexErrorTmTmTAyaTmTnZQCbFNaNbNiNfQCeKmKmKQBcKmKQBcZQCw@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception15ArraySliceErrorTmTmTmTAyaTmTnZQCdFNaNbNiNfQCgKmKmKmKQBeKmKQBeZQDa@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTAyaTmZQBwFNaNbNiNfQBzKQwKmZQCi@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTbTAyaTmZQByFNaNbNiNfQCbKbKQyKmZQCm@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception27InvalidMemoryOperationErrorTAyaTmZQChFNaNbNiNfQCkKQwKmZQCt@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception9ForkErrorTAyaTmTnZQBqFNaNbNiNfQBtKQyKmKQxZQCf@Base 15 ++ _D4core8volatile11__moduleRefZ@Base 15 ++ _D4core8volatile12__ModuleInfoZ@Base 15 ++ _D4core9attribute11__moduleRefZ@Base 15 ++ _D4core9attribute12__ModuleInfoZ@Base 15 ++ _D4core9attribute9gnuAbiTag11__xopEqualsMxFKxSQBsQBqQBjZb@Base 15 ++ _D4core9attribute9gnuAbiTag6__ctorMFNaNbNcNfAAyaXSQBwQBuQBn@Base 15 ++ _D4core9attribute9gnuAbiTag6__initZ@Base 15 ++ _D4core9attribute9gnuAbiTag9__xtoHashFNbNeKxSQBrQBpQBiZm@Base 15 ++ _D4core9exception10RangeError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCsQCqQCj@Base 15 ++ _D4core9exception10RangeError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCqQCoQCh@Base 15 ++ _D4core9exception10RangeError6__initZ@Base 15 ++ _D4core9exception10RangeError6__vtblZ@Base 15 ++ _D4core9exception10RangeError7__ClassZ@Base 15 ++ _D4core9exception11AssertError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 ++ _D4core9exception11AssertError6__ctorMFNaNbNiNfAyamZCQBzQBxQBq@Base 15 ++ _D4core9exception11AssertError6__ctorMFNaNbNiNfC6object9ThrowableAyamZCQCrQCpQCi@Base 15 ++ _D4core9exception11AssertError6__initZ@Base 15 ++ _D4core9exception11AssertError6__vtblZ@Base 15 ++ _D4core9exception11AssertError7__ClassZ@Base 15 ++ _D4core9exception11SwitchError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 ++ _D4core9exception11SwitchError6__initZ@Base 15 ++ _D4core9exception11SwitchError6__vtblZ@Base 15 ++ _D4core9exception11SwitchError7__ClassZ@Base 15 ++ _D4core9exception11__moduleRefZ@Base 15 ++ _D4core9exception11rangeMsgPutFNaNbNiNfKAaMAxaZv@Base 15 ++ _D4core9exception12__ModuleInfoZ@Base 15 ++ _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoAyamC6object9ThrowableZCQDdQDbQCu@Base 15 ++ _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoC6object9ThrowableAyamZCQDdQDbQCu@Base 15 ++ _D4core9exception13FinalizeError6__initZ@Base 15 ++ _D4core9exception13FinalizeError6__vtblZ@Base 15 ++ _D4core9exception13FinalizeError7__ClassZ@Base 15 ++ _D4core9exception13FinalizeError8toStringMxFNfZAya@Base 15 ++ _D4core9exception13assertHandlerFNbNdNiNePFNbAyamQeZvZv@Base 15 ++ _D4core9exception13assertHandlerFNbNdNiNeZPFNbAyamQeZv@Base 15 ++ _D4core9exception14_assertHandlerPFNbAyamQeZv@Base 15 ++ _D4core9exception15ArrayIndexError6__ctorMFNaNbNiNfmmAyamC6object9ThrowableZCQCxQCvQCo@Base 15 ++ _D4core9exception15ArrayIndexError6__initZ@Base 15 ++ _D4core9exception15ArrayIndexError6__vtblZ@Base 15 ++ _D4core9exception15ArrayIndexError7__ClassZ@Base 15 ++ _D4core9exception15ArraySliceError6__ctorMFNaNbNiNfmmmAyamC6object9ThrowableZCQCyQCwQCp@Base 15 ++ _D4core9exception15ArraySliceError6__initZ@Base 15 ++ _D4core9exception15ArraySliceError6__vtblZ@Base 15 ++ _D4core9exception15ArraySliceError7__ClassZ@Base 15 ++ _D4core9exception16OutOfMemoryError13superToStringMFNeZAya@Base 15 ++ _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCwQCuQCn@Base 15 ++ _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfbAyamC6object9ThrowableZCQCxQCvQCo@Base 15 ++ _D4core9exception16OutOfMemoryError6__initZ@Base 15 ++ _D4core9exception16OutOfMemoryError6__vtblZ@Base 15 ++ _D4core9exception16OutOfMemoryError7__ClassZ@Base 15 ++ _D4core9exception16OutOfMemoryError8toStringMxFNeZAya@Base 15 ++ _D4core9exception16UnicodeException6__ctorMFNaNbNiNfAyamQemC6object9ThrowableZCQCzQCxQCq@Base 15 ++ _D4core9exception16UnicodeException6__initZ@Base 15 ++ _D4core9exception16UnicodeException6__vtblZ@Base 15 ++ _D4core9exception16UnicodeException7__ClassZ@Base 15 ++ _D4core9exception17SuppressTraceInfo6__initZ@Base 15 ++ _D4core9exception17SuppressTraceInfo6__vtblZ@Base 15 ++ _D4core9exception17SuppressTraceInfo7__ClassZ@Base 15 ++ _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 ++ _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 ++ _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZ2ityCQCgQCeQBx@Base 15 ++ _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZCQCcQCaQBt@Base 15 ++ _D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 ++ _D4core9exception27InvalidMemoryOperationError13superToStringMFNeZAya@Base 15 ++ _D4core9exception27InvalidMemoryOperationError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQDhQDfQCy@Base 15 ++ _D4core9exception27InvalidMemoryOperationError6__initZ@Base 15 ++ _D4core9exception27InvalidMemoryOperationError6__vtblZ@Base 15 ++ _D4core9exception27InvalidMemoryOperationError7__ClassZ@Base 15 ++ _D4core9exception27InvalidMemoryOperationError8toStringMxFNeZAya@Base 15 ++ _D4core9exception6_storeG256v@Base 15 ++ _D4core9exception9ForkError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCoQCmQCf@Base 15 ++ _D4core9exception9ForkError6__initZ@Base 15 ++ _D4core9exception9ForkError6__vtblZ@Base 15 ++ _D4core9exception9ForkError7__ClassZ@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFKQnKmQlZ3getFNbNiZQBy@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFNaNbNiKQtKmQrZQBu@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFNaNbNiQtQviZQBu@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFQnQpiZ3getFNbNiZQBy@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFKQoKQrKmZ3getFNbNiZQCb@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFNaNbNiKQuKQxKmZQBx@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFKQlKmZ3getFNbNiZQBv@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFNaNbNiKQrKmZQBr@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFNaNbNiQvKQyKmQtZQCa@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFQpKQsKmQnZ3getFNbNiZQCe@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFKQBpKQBiKQtKmZ3getFNbNiZQDj@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFNaNbNiKQBvKQBoKQzKmZQDf@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFKmKmKQrKmQpZ3getFNbNiZQCl@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFNaNbNiKmKmKQxKmQvZQCh@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFKmKmKmKQtKmQrZ3getFNbNiZQCp@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFNaNbNiKmKmKmKQzKmQxZQCl@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFKQlKmZ3getFNbNiZQCa@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFNaNbNiKQrKmZQBw@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFNaNbNibKQsKmZQBz@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFbKQmKmZ3getFNbNiZQCd@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFKQlKmZ3getFNbNiZQCl@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFNaNbNiKQrKmZQCh@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFKQnKmQlZ3getFNbNiZQBw@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFNaNbNiKQtKmQrZQBs@Base 15 ++ _D4core9exception__T15__switch_errorTZQsFNaNbNiNeAyamZv@Base 15 ++ _D50TypeInfo_E4core3sys5linux10perf_event11perf_sw_ids6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 ++ _D50TypeInfo_S4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D51TypeInfo_E4core3sys5linux10perf_event12perf_type_id6__initZ@Base 15 ++ _D51TypeInfo_E4core4sync7rwmutex14ReadWriteMutex6Policy6__initZ@Base 15 ++ _D51TypeInfo_E4core6thread5fiber4base9FiberBase7Rethrow6__initZ@Base 15 ++ _D51TypeInfo_OS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D51TypeInfo_S4core13interpolation19InterpolationFooter6__initZ@Base 15 ++ _D51TypeInfo_S4core13interpolation19InterpolationHeader6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 ++ _D51TypeInfo_xS4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 ++ _D51TypeInfo_xS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 ++ _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 ++ _D52TypeInfo_OxS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 ++ _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 ++ _D53TypeInfo_E4core8internal2gc4impl12conservativeQw4Bins6__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 ++ _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 ++ _D54TypeInfo_E4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 ++ _D54TypeInfo_E4core8internal8spinlock8SpinLock10Contention6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 ++ _D54TypeInfo_xS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D55TypeInfo_E4core3sys5linux10perf_event16perf_hw_cache_id6__initZ@Base 15 ++ _D55TypeInfo_E4core3sys5linuxQg9if_packet16tpacket_versions6__initZ@Base 15 ++ _D55TypeInfo_PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D55TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 ++ _D55TypeInfo_S4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 ++ _D55TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 ++ _D55TypeInfo_S4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 ++ _D55TypeInfo_S4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 ++ _D55TypeInfo_xPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D56TypeInfo_AxPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 ++ _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 ++ _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 ++ _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 ++ _D56TypeInfo_S4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 ++ _D56TypeInfo_S4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 ++ _D56TypeInfo_xS4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 ++ _D57TypeInfo_S4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 ++ _D57TypeInfo_S4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 ++ _D58TypeInfo_E2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ7OnCycle6__initZ@Base 15 ++ _D58TypeInfo_E4core3sys5linux10perf_event19perf_hw_cache_op_id6__initZ@Base 15 ++ _D58TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D58TypeInfo_S4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 ++ _D58TypeInfo_S4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 ++ _D58TypeInfo_S4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 ++ _D58TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D59TypeInfo_E4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 ++ _D59TypeInfo_E4core3sys5linux10perf_event20perf_sample_regs_abi6__initZ@Base 15 ++ _D59TypeInfo_S2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 ++ _D59TypeInfo_S4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 ++ _D59TypeInfo_S4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 ++ _D59TypeInfo_S4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 ++ _D61TypeInfo_E4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 ++ _D61TypeInfo_E4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 ++ _D61TypeInfo_E4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 ++ _D61TypeInfo_S4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 ++ _D61TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 ++ _D61TypeInfo_S4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 ++ _D61TypeInfo_S4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 ++ _D62TypeInfo_E4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 ++ _D62TypeInfo_S4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 ++ _D62TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 ++ _D63TypeInfo_E4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 ++ _D63TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 ++ _D64TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 ++ _D64TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 ++ _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 ++ _D65TypeInfo_E4core3sys5linux10perf_event26perf_hw_cache_op_result_id6__initZ@Base 15 ++ _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 ++ _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 ++ _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 ++ _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D65TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 ++ _D66TypeInfo_xS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D67TypeInfo_PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D67TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 ++ _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 ++ _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 ++ _D67TypeInfo_xPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D68TypeInfo_AxPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D68TypeInfo_E4core3sys5linux10perf_event29perf_branch_sample_type_shift6__initZ@Base 15 ++ _D68TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10IsDelegate6__initZ@Base 15 ++ _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 ++ _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 ++ _D68TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D69TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 ++ _D69TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D6Object6__initZ@Base 15 ++ _D6Object6__vtblZ@Base 15 ++ _D6Object7__ClassZ@Base 15 ++ _D6object10ModuleInfo11xgetMembersMxFNaNbNdNiZPv@Base 15 ++ _D6object10ModuleInfo12localClassesMxFNaNbNdNiNjZAC14TypeInfo_Class@Base 15 ++ _D6object10ModuleInfo15importedModulesMxFNaNbNdNiNjZAyPSQCcQBy@Base 15 ++ _D6object10ModuleInfo4ctorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo4dtorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo4nameMxFNaNbNdNiNjZAya@Base 15 ++ _D6object10ModuleInfo5flagsMxFNaNbNdNiZk@Base 15 ++ _D6object10ModuleInfo5ictorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo5indexMxFNaNbNdNiZk@Base 15 ++ _D6object10ModuleInfo6__initZ@Base 15 ++ _D6object10ModuleInfo6addrOfMxFNaNbNiNjiZPv@Base 15 ++ _D6object10ModuleInfo7opApplyFMDFPSQBhQBdZiZi@Base 15 ++ _D6object10ModuleInfo7tlsctorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo7tlsdtorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo8opAssignMFMxSQBhQBdZv@Base 15 ++ _D6object10ModuleInfo8unitTestMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10_xopEqualsFIPvIQdZb@Base 15 ++ _D6object10getElementFNaNbNeNkMNgC8TypeInfoZNgQn@Base 15 ++ _D6object11__moduleRefZ@Base 15 ++ _D6object12__ModuleInfoZ@Base 15 ++ _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZ15hasCustomToHashFNaNbNeMxQBrZb@Base 15 ++ _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZm@Base 15 ++ _D6object12setSameMutexFOC6ObjectOQjZv@Base 15 ++ _D6object13TypeInfo_Enum11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object13TypeInfo_Enum4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object13TypeInfo_Enum4swapMxFPvQcZv@Base 15 ++ _D6object13TypeInfo_Enum5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object13TypeInfo_Enum5offTiMxFZAxSQBj14OffsetTypeInfo@Base 15 ++ _D6object13TypeInfo_Enum5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object13TypeInfo_Enum6equalsMxFIPvIQdZb@Base 15 ++ _D6object13TypeInfo_Enum6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object13TypeInfo_Enum6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object13TypeInfo_Enum7compareMxFIPvIQdZi@Base 15 ++ _D6object13TypeInfo_Enum7destroyMxFPvZv@Base 15 ++ _D6object13TypeInfo_Enum7getHashMxFNbNfMxPvZm@Base 15 ++ _D6object13TypeInfo_Enum8opEqualsMFC6ObjectZb@Base 15 ++ _D6object13TypeInfo_Enum8postblitMxFPvZv@Base 15 ++ _D6object13TypeInfo_Enum8toStringMxFNaNbNfZAya@Base 15 ++ _D6object14OffsetTypeInfo11__xopEqualsMxFKxSQBqQBmZb@Base 15 ++ _D6object14OffsetTypeInfo6__initZ@Base 15 ++ _D6object14OffsetTypeInfo9__xtoHashFNbNeKxSQBpQBlZm@Base 15 ++ _D6object14TypeInfo_Array11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object14TypeInfo_Array4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object14TypeInfo_Array4swapMxFPvQcZv@Base 15 ++ _D6object14TypeInfo_Array5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object14TypeInfo_Array5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Array6equalsMxFIPvIQdZb@Base 15 ++ _D6object14TypeInfo_Array6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object14TypeInfo_Array6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Array7compareMxFIPvIQdZi@Base 15 ++ _D6object14TypeInfo_Array7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object14TypeInfo_Array8opEqualsMFC6ObjectZb@Base 15 ++ _D6object14TypeInfo_Array8toStringMxFNbNfZAya@Base 15 ++ _D6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 ++ _D6object14TypeInfo_Class11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object14TypeInfo_Class4findFMxAaZxCQBd@Base 15 ++ _D6object14TypeInfo_Class4infoMxFNaNbNdNiNlNjNfZxCQBp@Base 15 ++ _D6object14TypeInfo_Class5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object14TypeInfo_Class5offTiMxFNaNbNdZAxSQBq14OffsetTypeInfo@Base 15 ++ _D6object14TypeInfo_Class5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Class6createMxFZC6Object@Base 15 ++ _D6object14TypeInfo_Class6equalsMxFIPvIQdZb@Base 15 ++ _D6object14TypeInfo_Class6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object14TypeInfo_Class7compareMxFIPvIQdZi@Base 15 ++ _D6object14TypeInfo_Class7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object14TypeInfo_Class8isBaseOfMxFNaNbNiNeMxCQBnZb@Base 15 ++ _D6object14TypeInfo_Class8opEqualsMxFNbNfxC8TypeInfoZb@Base 15 ++ _D6object14TypeInfo_Class8toStringMxFNaNbNfZAya@Base 15 ++ _D6object14TypeInfo_Class8typeinfoMxFNaNbNdNiNlNjNfZxCQBt@Base 15 ++ _D6object14TypeInfo_Const11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object14TypeInfo_Const4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object14TypeInfo_Const4swapMxFPvQcZv@Base 15 ++ _D6object14TypeInfo_Const5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object14TypeInfo_Const5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Const6equalsMxFIPvIQdZb@Base 15 ++ _D6object14TypeInfo_Const6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Const7compareMxFIPvIQdZi@Base 15 ++ _D6object14TypeInfo_Const7getHashMxFNbNfMxPvZm@Base 15 ++ _D6object14TypeInfo_Const8opEqualsMFC6ObjectZb@Base 15 ++ _D6object14TypeInfo_Const8toStringMxFNbNfZAya@Base 15 ++ _D6object14TypeInfo_Inout8toStringMxFNbNfZAya@Base 15 ++ _D6object14TypeInfo_Tuple11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object14TypeInfo_Tuple4swapMxFPvQcZv@Base 15 ++ _D6object14TypeInfo_Tuple5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Tuple6equalsMxFIPvIQdZb@Base 15 ++ _D6object14TypeInfo_Tuple6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Tuple7compareMxFIPvIQdZi@Base 15 ++ _D6object14TypeInfo_Tuple7destroyMxFPvZv@Base 15 ++ _D6object14TypeInfo_Tuple7getHashMxFNbNfMxPvZm@Base 15 ++ _D6object14TypeInfo_Tuple8opEqualsMFC6ObjectZb@Base 15 ++ _D6object14TypeInfo_Tuple8postblitMxFPvZv@Base 15 ++ _D6object14TypeInfo_Tuple8toStringMxFNbNfZAya@Base 15 ++ _D6object15TypeInfo_Shared8toStringMxFNbNfZAya@Base 15 ++ _D6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 ++ _D6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 ++ _D6object15TypeInfo_Struct11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object15TypeInfo_Struct4nameMxFNbNdNeZ19demangledNamesCacheHPxvAya@Base 15 ++ _D6object15TypeInfo_Struct4nameMxFNbNdNeZAya@Base 15 ++ _D6object15TypeInfo_Struct5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object15TypeInfo_Struct5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object15TypeInfo_Struct6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D6object15TypeInfo_Struct6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object15TypeInfo_Struct6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object15TypeInfo_Struct6toHashMxFNbNfZm@Base 15 ++ _D6object15TypeInfo_Struct7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D6object15TypeInfo_Struct7destroyMxFPvZv@Base 15 ++ _D6object15TypeInfo_Struct7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D6object15TypeInfo_Struct8opEqualsMFC6ObjectZb@Base 15 ++ _D6object15TypeInfo_Struct8postblitMxFPvZv@Base 15 ++ _D6object15TypeInfo_Struct8toStringMxFNbNfZAya@Base 15 ++ _D6object15TypeInfo_Vector11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object15TypeInfo_Vector4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object15TypeInfo_Vector4swapMxFPvQcZv@Base 15 ++ _D6object15TypeInfo_Vector5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object15TypeInfo_Vector5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object15TypeInfo_Vector6equalsMxFIPvIQdZb@Base 15 ++ _D6object15TypeInfo_Vector6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object15TypeInfo_Vector7compareMxFIPvIQdZi@Base 15 ++ _D6object15TypeInfo_Vector7getHashMxFNbNfMxPvZm@Base 15 ++ _D6object15TypeInfo_Vector8opEqualsMFC6ObjectZb@Base 15 ++ _D6object15TypeInfo_Vector8toStringMxFNbNfZAya@Base 15 ++ _D6object16TypeInfo_Pointer11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object16TypeInfo_Pointer4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object16TypeInfo_Pointer4swapMxFPvQcZv@Base 15 ++ _D6object16TypeInfo_Pointer5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object16TypeInfo_Pointer5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object16TypeInfo_Pointer6equalsMxFIPvIQdZb@Base 15 ++ _D6object16TypeInfo_Pointer7compareMxFIPvIQdZi@Base 15 ++ _D6object16TypeInfo_Pointer7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object16TypeInfo_Pointer8opEqualsMFC6ObjectZb@Base 15 ++ _D6object16TypeInfo_Pointer8toStringMxFNbNfZAya@Base 15 ++ _D6object17TypeInfo_Delegate11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object17TypeInfo_Delegate5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object17TypeInfo_Delegate5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object17TypeInfo_Delegate6equalsMxFIPvIQdZb@Base 15 ++ _D6object17TypeInfo_Delegate6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object17TypeInfo_Delegate6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object17TypeInfo_Delegate7compareMxFIPvIQdZi@Base 15 ++ _D6object17TypeInfo_Delegate7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object17TypeInfo_Delegate8opEqualsMFC6ObjectZb@Base 15 ++ _D6object17TypeInfo_Delegate8toStringMxFNaNbNeZAya@Base 15 ++ _D6object17TypeInfo_Function11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object17TypeInfo_Function5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object17TypeInfo_Function6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object17TypeInfo_Function8opEqualsMFC6ObjectZb@Base 15 ++ _D6object17TypeInfo_Function8toStringMxFNaNbNeZAya@Base 15 ++ _D6object18TypeInfo_Interface11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object18TypeInfo_Interface5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object18TypeInfo_Interface5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object18TypeInfo_Interface6equalsMxFIPvIQdZb@Base 15 ++ _D6object18TypeInfo_Interface7compareMxFIPvIQdZi@Base 15 ++ _D6object18TypeInfo_Interface7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxC14TypeInfo_ClassZb@Base 15 ++ _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxCQBrZb@Base 15 ++ _D6object18TypeInfo_Interface8opEqualsMFC6ObjectZb@Base 15 ++ _D6object18TypeInfo_Interface8toStringMxFNaNbNfZAya@Base 15 ++ _D6object18TypeInfo_Invariant8toStringMxFNbNfZAya@Base 15 ++ _D6object19__cpp_type_info_ptr6__initZ@Base 15 ++ _D6object19__cpp_type_info_ptr6__vtblZ@Base 15 ++ _D6object19__cpp_type_info_ptr7__ClassZ@Base 15 ++ _D6object20TypeInfo_StaticArray11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object20TypeInfo_StaticArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object20TypeInfo_StaticArray4swapMxFPvQcZv@Base 15 ++ _D6object20TypeInfo_StaticArray5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object20TypeInfo_StaticArray5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object20TypeInfo_StaticArray6equalsMxFIPvIQdZb@Base 15 ++ _D6object20TypeInfo_StaticArray6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object20TypeInfo_StaticArray6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object20TypeInfo_StaticArray7compareMxFIPvIQdZi@Base 15 ++ _D6object20TypeInfo_StaticArray7destroyMxFPvZv@Base 15 ++ _D6object20TypeInfo_StaticArray7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object20TypeInfo_StaticArray8opEqualsMFC6ObjectZb@Base 15 ++ _D6object20TypeInfo_StaticArray8postblitMxFPvZv@Base 15 ++ _D6object20TypeInfo_StaticArray8toStringMxFNbNfZAya@Base 15 ++ _D6object25TypeInfo_AssociativeArray11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object25TypeInfo_AssociativeArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object25TypeInfo_AssociativeArray5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object25TypeInfo_AssociativeArray5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object25TypeInfo_AssociativeArray6equalsMxFNeIPvIQdZb@Base 15 ++ _D6object25TypeInfo_AssociativeArray6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object25TypeInfo_AssociativeArray7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object25TypeInfo_AssociativeArray8opEqualsMFC6ObjectZb@Base 15 ++ _D6object25TypeInfo_AssociativeArray8toStringMxFNbNfZAya@Base 15 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn11__xopEqualsMxFKxSQCtQCp__TQBrTQBoTmZQCbZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn9__xtoHashFNbNeKxSQCsQCo__TQBqTQBnTmZQCaZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp11__xopEqualsMxFKxSQDwQDs__TQCuTQCrTQCvZQDgZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp9__xtoHashFNbNeKxSQDvQDr__TQCtTQCqTQCuZQDfZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 ++ _D6object2AA6__initZ@Base 15 ++ _D6object5Error6__ctorMFNaNbNiNfAyaCQBi9ThrowableZCQBxQBt@Base 15 ++ _D6object5Error6__ctorMFNaNbNiNfAyaQdmCQBl9ThrowableZCQCaQBw@Base 15 ++ _D6object5Error6__initZ@Base 15 ++ _D6object5Error6__vtblZ@Base 15 ++ _D6object5Error7__ClassZ@Base 15 ++ _D6object6Object5opCmpMFCQqZi@Base 15 ++ _D6object6Object6toHashMFNbNeZm@Base 15 ++ _D6object6Object7Monitor11__InterfaceZ@Base 15 ++ _D6object6Object7factoryFAyaZCQv@Base 15 ++ _D6object6Object8opEqualsMFCQtZb@Base 15 ++ _D6object6Object8toStringMFZAya@Base 15 ++ _D6object7AARange6__initZ@Base 15 ++ _D6object7_xopCmpFIPvIQdZb@Base 15 ++ _D6object8TypeInfo4nextMNgFNaNbNdNiZNgCQBe@Base 15 ++ _D6object8TypeInfo4swapMxFPvQcZv@Base 15 ++ _D6object8TypeInfo5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object8TypeInfo5offTiMxFZAxSQBd14OffsetTypeInfo@Base 15 ++ _D6object8TypeInfo5opCmpMFC6ObjectZi@Base 15 ++ _D6object8TypeInfo5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object8TypeInfo6equalsMxFIPvIQdZb@Base 15 ++ _D6object8TypeInfo6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D6object8TypeInfo6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object8TypeInfo6toHashMxFNbNeZm@Base 15 ++ _D6object8TypeInfo7compareMxFIPvIQdZi@Base 15 ++ _D6object8TypeInfo7destroyMxFPvZv@Base 15 ++ _D6object8TypeInfo7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object8TypeInfo8opEqualsMFC6ObjectZb@Base 15 ++ _D6object8TypeInfo8opEqualsMxFNbNfxCQBbZb@Base 15 ++ _D6object8TypeInfo8postblitMxFPvZv@Base 15 ++ _D6object8TypeInfo8toStringMxFNbNfZAya@Base 15 ++ _D6object9Exception6__ctorMFNaNbNiNfAyaCQBm9ThrowableQrmZCQBx@Base 15 ++ _D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx@Base 15 ++ _D6object9Interface11__xopEqualsMxFKxSQBkQBgZb@Base 15 ++ _D6object9Interface6__initZ@Base 15 ++ _D6object9Interface9__xtoHashFNbNeKxSQBjQBfZm@Base 15 ++ _D6object9Throwable13chainTogetherFNaNbNiNkMCQBrQBnNkMQkZQn@Base 15 ++ _D6object9Throwable4nextMFNaNbNdNiNlNfCQBlQBhZv@Base 15 ++ _D6object9Throwable4nextMNgFNaNbNdNiNjNlNfZNgCQBsQBo@Base 15 ++ _D6object9Throwable6__ctorMFNaNbNiNfAyaCQBmQBiZQi@Base 15 ++ _D6object9Throwable6__ctorMFNaNbNiNfAyaQdmCQBpQBlZQi@Base 15 ++ _D6object9Throwable6__dtorMFNbNlNeZv@Base 15 ++ _D6object9Throwable6__initZ@Base 15 ++ _D6object9Throwable6__vtblZ@Base 15 ++ _D6object9Throwable7__ClassZ@Base 15 ++ _D6object9Throwable7messageMxFNbNfZAxa@Base 15 ++ _D6object9Throwable7opApplyMFMDFCQBfQBbZiZi@Base 15 ++ _D6object9Throwable8refcountMFNaNbNcNiNlNjZk@Base 15 ++ _D6object9Throwable8toStringMFZAya@Base 15 ++ _D6object9Throwable8toStringMxFMDFIAaZvZv@Base 15 ++ _D6object9Throwable9TraceInfo11__InterfaceZ@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i2048ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i4160ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i6824ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i11274ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i3ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i721ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i16424ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i21610ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i4ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i128i12ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i128i512ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i12i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i168i347816ZQBdyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i168i4244ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i16i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i16i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i16i3ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i184i8125584ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i185i8125584ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i212i2728ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i216i8011774ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i240i2728ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i3ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i4ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i5ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i6ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i7ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i256i8388608ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i272i2158144171ZQBhyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i10ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i11ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i13ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i14ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i15ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i4ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i5ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i7ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i8ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i9ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i15ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i18ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i20ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i22ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i24ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i28ZQyyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i40i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i30ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i44i12ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i24ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i31ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i32ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i42ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i44ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i56ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i59ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i63ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i123ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i21ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i40ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i64ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i84ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i10ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i134ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i9ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i138ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i256ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i4ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i5ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i248ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i516ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i84i680ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i1023ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i1154ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i2728ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i680ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA3i968i268435462i0ZQBiyG3m@Base 15 ++ _D6object__T10RTInfoImplVAmA4i1064i549755827528i0i16ZQBpyG4m@Base 15 ++ _D6object__T10RTInfoImplVAmA4i1152i144107491482206208i565149010231808i0ZQCiyG4m@Base 15 ++ _D6object__T3dupTAyaZQjFNaNbNdNfAxAyaZAQw@Base 15 ++ _D6object__T3dupTaZQhFNaNbNdNfAxaZAa@Base 15 ++ _D6object__T4idupTaZQiFNaNbNdNfAaZAya@Base 15 ++ _D6object__T4keysHTHC4core6thread8osthread6ThreadQBdTQBhTQBlZQBxFNaNbNdNfQCcZAQCg@Base 15 ++ _D6object__T7destroyVbi1TC4core2gc11gcinterface2GCZQBnFNbQBgZv@Base 15 ++ _D6object__T7destroyVbi1TC6ObjectZQwFNbQoZv@Base 15 ++ _D6object__T7destroyVbi1TS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 ++ _D6object__T7destroyVbi1TS4core2gc11gcinterface4RootZQBpFNaNbNiNfKQBpZv@Base 15 ++ _D6object__T7destroyVbi1TS4core2gc11gcinterface5RangeZQBqFNaNbNiNfKQBqZv@Base 15 ++ _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNfKQDoZv@Base 15 ++ _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNfKQDqZv@Base 15 ++ _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPySQCt10ModuleInfoTiZQBe4NodeZQDkFNaNbNiNfKQDkZv@Base 15 ++ _D6object__T7reserveTuZQlFNaNbNeKAumZm@Base 15 ++ _D6object__T8opEqualsTC14TypeInfo_ClassTQsZQBfFNbNfQBdQBgZb@Base 15 ++ _D6object__T8opEqualsTC6ObjectTQjZQwFQpQrZb@Base 15 ++ _D6object__T8opEqualsTC8TypeInfoTxCQmZQBaFNbNfQyxQpZb@Base 15 ++ _D6object__T8opEqualsTxC14TypeInfo_ClassTxQtZQBhFNbNfxQBfxQBjZb@Base 15 ++ _D6object__T8opEqualsTxC4core6thread8osthread6ThreadTxQBfZQBuFxQBoxQBsZb@Base 15.2 ++ _D6object__T8opEqualsTxC6ObjectTxQkZQyFxQrxQuZb@Base 15 ++ _D6object__T8opEqualsTxC8TypeInfoTxQmZQBaFNbNfxQyxQBbZb@Base 15 ++ _D6object__T8opEqualsTxCQw9ThrowableTxQpZQBdFxQxxQBaZb@Base 15 ++ _D70TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D70TypeInfo_PxS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D70TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D70TypeInfo_xPS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D70TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 ++ _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 ++ _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 ++ _D74TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 ++ _D75TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 ++ _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D77TypeInfo_S4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 ++ _D78TypeInfo_S4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D78TypeInfo_xS4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 ++ _D79TypeInfo_S2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 ++ _D79TypeInfo_S4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D79TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D79TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D80TypeInfo_S4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D80TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D80TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D80TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D81TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D82TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D82TypeInfo_S4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 ++ _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 ++ _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 ++ _D83TypeInfo_AS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D83TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D84TypeInfo_AxS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D84TypeInfo_S4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D84TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 ++ _D84TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 ++ _D84TypeInfo_xAS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D85TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D86TypeInfo_S4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D86TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D87TypeInfo_PxS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 ++ _D87TypeInfo_xPS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D88TypeInfo_xS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D89TypeInfo_PxS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D89TypeInfo_S4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D89TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 ++ _D89TypeInfo_xPS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D8TypeInfo6__initZ@Base 15 ++ _D8TypeInfo6__vtblZ@Base 15 ++ _D8TypeInfo7__ClassZ@Base 15 ++ _D91TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 ++ _D92TypeInfo_S4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 ++ _D93TypeInfo_S4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 ++ _D93TypeInfo_xS4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 ++ _D95TypeInfo_S3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 ++ _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 ++ _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 ++ _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 ++ _D95TypeInfo_S4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D9Exception6__initZ@Base 15 ++ _D9Exception6__vtblZ@Base 15 ++ _D9Exception7__ClassZ@Base 15 ++ _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 ++ _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 ++ _DTi16_D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 ++ _DTi16_D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 ++ _DTi16_D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 ++ _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 ++ _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 ++ _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 ++ _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 ++ _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 ++ _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 ++ _DTi16_D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 ++ _ZNKSt10bad_typeid4whatEv@Base 15 ++ _ZNKSt13bad_exception4whatEv@Base 15 ++ _ZNKSt8bad_cast4whatEv@Base 15 ++ _ZNKSt9exception4whatEv@Base 15 ++ _ZNKSt9type_info4nameEv@Base 15 ++ _ZNKSt9type_info6beforeEPKS_@Base 15 ++ _ZNSt9exceptionD1Ev@Base 15 ++ _ZNSt9type_infoD1Ev@Base 15 ++ __CPUELT@Base 15 ++ __CPUMASK@Base 15 ++ __CPU_ALLOC@Base 15 ++ __CPU_ALLOC_SIZE@Base 15 ++ __CPU_COUNT_S@Base 15 ++ __CPU_FREE@Base 15 ++ __CPU_ISSET_S@Base 15 ++ __CPU_SET_S@Base 15 ++ __atomic_add_fetch_16@Base 15 ++ __atomic_add_fetch_1@Base 15 ++ __atomic_add_fetch_2@Base 15 ++ __atomic_add_fetch_4@Base 15 ++ __atomic_add_fetch_8@Base 15 ++ __atomic_and_fetch_16@Base 15 ++ __atomic_and_fetch_1@Base 15 ++ __atomic_and_fetch_2@Base 15 ++ __atomic_and_fetch_4@Base 15 ++ __atomic_and_fetch_8@Base 15 ++ __atomic_compare_exchange@Base 15 ++ __atomic_compare_exchange_16@Base 15 ++ __atomic_compare_exchange_1@Base 15 ++ __atomic_compare_exchange_2@Base 15 ++ __atomic_compare_exchange_4@Base 15 ++ __atomic_compare_exchange_8@Base 15 ++ __atomic_exchange@Base 15 ++ __atomic_exchange_16@Base 15 ++ __atomic_exchange_1@Base 15 ++ __atomic_exchange_2@Base 15 ++ __atomic_exchange_4@Base 15 ++ __atomic_exchange_8@Base 15 ++ __atomic_feraiseexcept@Base 15 ++ __atomic_fetch_add_16@Base 15 ++ __atomic_fetch_add_1@Base 15 ++ __atomic_fetch_add_2@Base 15 ++ __atomic_fetch_add_4@Base 15 ++ __atomic_fetch_add_8@Base 15 ++ __atomic_fetch_and_16@Base 15 ++ __atomic_fetch_and_1@Base 15 ++ __atomic_fetch_and_2@Base 15 ++ __atomic_fetch_and_4@Base 15 ++ __atomic_fetch_and_8@Base 15 ++ __atomic_fetch_nand_16@Base 15 ++ __atomic_fetch_nand_1@Base 15 ++ __atomic_fetch_nand_2@Base 15 ++ __atomic_fetch_nand_4@Base 15 ++ __atomic_fetch_nand_8@Base 15 ++ __atomic_fetch_or_16@Base 15 ++ __atomic_fetch_or_1@Base 15 ++ __atomic_fetch_or_2@Base 15 ++ __atomic_fetch_or_4@Base 15 ++ __atomic_fetch_or_8@Base 15 ++ __atomic_fetch_sub_16@Base 15 ++ __atomic_fetch_sub_1@Base 15 ++ __atomic_fetch_sub_2@Base 15 ++ __atomic_fetch_sub_4@Base 15 ++ __atomic_fetch_sub_8@Base 15 ++ __atomic_fetch_xor_16@Base 15 ++ __atomic_fetch_xor_1@Base 15 ++ __atomic_fetch_xor_2@Base 15 ++ __atomic_fetch_xor_4@Base 15 ++ __atomic_fetch_xor_8@Base 15 ++ __atomic_is_lock_free@Base 15 ++ __atomic_load@Base 15 ++ __atomic_load_16@Base 15 ++ __atomic_load_1@Base 15 ++ __atomic_load_2@Base 15 ++ __atomic_load_4@Base 15 ++ __atomic_load_8@Base 15 ++ __atomic_nand_fetch_16@Base 15 ++ __atomic_nand_fetch_1@Base 15 ++ __atomic_nand_fetch_2@Base 15 ++ __atomic_nand_fetch_4@Base 15 ++ __atomic_nand_fetch_8@Base 15 ++ __atomic_or_fetch_16@Base 15 ++ __atomic_or_fetch_1@Base 15 ++ __atomic_or_fetch_2@Base 15 ++ __atomic_or_fetch_4@Base 15 ++ __atomic_or_fetch_8@Base 15 ++ __atomic_store@Base 15 ++ __atomic_store_16@Base 15 ++ __atomic_store_1@Base 15 ++ __atomic_store_2@Base 15 ++ __atomic_store_4@Base 15 ++ __atomic_store_8@Base 15 ++ __atomic_sub_fetch_16@Base 15 ++ __atomic_sub_fetch_1@Base 15 ++ __atomic_sub_fetch_2@Base 15 ++ __atomic_sub_fetch_4@Base 15 ++ __atomic_sub_fetch_8@Base 15 ++ __atomic_test_and_set_16@Base 15 ++ __atomic_test_and_set_1@Base 15 ++ __atomic_test_and_set_2@Base 15 ++ __atomic_test_and_set_4@Base 15 ++ __atomic_test_and_set_8@Base 15 ++ __atomic_xor_fetch_16@Base 15 ++ __atomic_xor_fetch_1@Base 15 ++ __atomic_xor_fetch_2@Base 15 ++ __atomic_xor_fetch_4@Base 15 ++ __atomic_xor_fetch_8@Base 15 ++ __gdc_begin_catch@Base 15 ++ __gdc_personality_v0@Base 15 ++ _aApplyRcd1@Base 15 ++ _aApplyRcd2@Base 15 ++ _aApplyRcw1@Base 15 ++ _aApplyRcw2@Base 15 ++ _aApplyRdc1@Base 15 ++ _aApplyRdc2@Base 15 ++ _aApplyRdw1@Base 15 ++ _aApplyRdw2@Base 15 ++ _aApplyRwc1@Base 15 ++ _aApplyRwc2@Base 15 ++ _aApplyRwd1@Base 15 ++ _aApplyRwd2@Base 15 ++ _aApplycd1@Base 15 ++ _aApplycd2@Base 15 ++ _aApplycw1@Base 15 ++ _aApplycw2@Base 15 ++ _aApplydc1@Base 15 ++ _aApplydc2@Base 15 ++ _aApplydw1@Base 15 ++ _aApplydw2@Base 15 ++ _aApplywc1@Base 15 ++ _aApplywc2@Base 15 ++ _aApplywd1@Base 15 ++ _aApplywd2@Base 15 ++ _aaApply2@Base 15 ++ _aaApply@Base 15 ++ _aaClear@Base 15 ++ _aaDelX@Base 15 ++ _aaEqual@Base 15 ++ _aaGetHash@Base 15 ++ _aaGetRvalueX@Base 15 ++ _aaGetX@Base 15 ++ _aaGetY@Base 15 ++ _aaInX@Base 15 ++ _aaKeys@Base 15 ++ _aaLen@Base 15 ++ _aaNew@Base 15 ++ _aaRange@Base 15 ++ _aaRangeEmpty@Base 15 ++ _aaRangeFrontKey@Base 15 ++ _aaRangeFrontValue@Base 15 ++ _aaRangePopFront@Base 15 ++ _aaRehash@Base 15 ++ _aaValues@Base 15 ++ _aaVersion@Base 15 ++ _adEq2@Base 15 ++ _adSort@Base 15 ++ _d_allocmemory@Base 15 ++ _d_arrayappendcTX@Base 15 ++ _d_arrayappendcd@Base 15 ++ _d_arrayappendwd@Base 15 ++ _d_arraybounds@Base 15 ++ _d_arraybounds_index@Base 15 ++ _d_arraybounds_indexp@Base 15 ++ _d_arraybounds_slice@Base 15 ++ _d_arraybounds_slicep@Base 15 ++ _d_arrayboundsp@Base 15 ++ _d_arraycopy@Base 15 ++ _d_arrayliteralTX@Base 15 ++ _d_arraysetcapacity@Base 15 ++ _d_arraysetlengthT@Base 15 ++ _d_arraysetlengthiT@Base 15 ++ _d_arrayshrinkfit@Base 15 ++ _d_assert@Base 15 ++ _d_assert_msg@Base 15 ++ _d_assertp@Base 15 ++ _d_assocarrayliteralTX@Base 15 ++ _d_callfinalizer@Base 15 ++ _d_callinterfacefinalizer@Base 15 ++ _d_class_cast@Base 15 ++ _d_createTrace@Base 15 ++ _d_critical_init@Base 15 ++ _d_critical_term@Base 15 ++ _d_criticalenter2@Base 15 ++ _d_criticalenter@Base 15 ++ _d_criticalexit@Base 15 ++ _d_delThrowable@Base 15 ++ _d_delclass@Base 15 ++ _d_delinterface@Base 15 ++ _d_delmemory@Base 15 ++ _d_dso_registry@Base 15 ++ _d_dynamic_cast@Base 15 ++ _d_eh_swapContext@Base 15 ++ _d_initMonoTime@Base 15 ++ _d_interface_cast@Base 15 ++ _d_isbaseof2@Base 15 ++ _d_isbaseof@Base 15 ++ _d_monitor_staticctor@Base 15 ++ _d_monitor_staticdtor@Base 15 ++ _d_monitordelete@Base 15 ++ _d_monitordelete_nogc@Base 15 ++ _d_monitorenter@Base 15 ++ _d_monitorexit@Base 15 ++ _d_newarrayT@Base 15 ++ _d_newarrayU@Base 15 ++ _d_newarrayiT@Base 15 ++ _d_newclass@Base 15 ++ _d_newitemU@Base 15 ++ _d_paint_cast@Base 15 ++ _d_print_throwable@Base 15 ++ _d_register_conservative_gc@Base 15 ++ _d_register_manual_gc@Base 15 ++ _d_register_precise_gc@Base 15 ++ _d_run_main2@Base 15 ++ _d_run_main@Base 15 ++ _d_setSameMutex@Base 15 ++ _d_throw@Base 15 ++ _d_toObject@Base 15 ++ _d_traceContext@Base 15 ++ _d_unittest@Base 15 ++ _d_unittest_msg@Base 15 ++ _d_unittestp@Base 15 ++ atomic_flag_clear@Base 15 ++ atomic_flag_clear_explicit@Base 15 ++ atomic_flag_test_and_set@Base 15 ++ atomic_flag_test_and_set_explicit@Base 15 ++ atomic_signal_fence@Base 15 ++ atomic_thread_fence@Base 15 ++ backtrace_alloc@Base 15 ++ backtrace_close@Base 15 ++ backtrace_create_state@Base 15 ++ backtrace_dwarf_add@Base 15 ++ backtrace_free@Base 15 ++ backtrace_full@Base 15 ++ backtrace_get_view@Base 15 ++ backtrace_initialize@Base 15 ++ backtrace_open@Base 15 ++ backtrace_pcinfo@Base 15 ++ backtrace_print@Base 15 ++ backtrace_qsort@Base 15 ++ backtrace_release_view@Base 15 ++ backtrace_simple@Base 15 ++ backtrace_syminfo@Base 15 ++ backtrace_syminfo_to_full_callback@Base 15 ++ backtrace_syminfo_to_full_error_callback@Base 15 ++ backtrace_uncompress_lzma@Base 15 ++ backtrace_uncompress_zdebug@Base 15 ++ backtrace_uncompress_zstd@Base 15 ++ backtrace_vector_finish@Base 15 ++ backtrace_vector_grow@Base 15 ++ backtrace_vector_release@Base 15 ++ cimag@Base 15 ++ cimagf@Base 15 ++ cimagl@Base 15 ++ creald@Base 15 ++ crealf@Base 15 ++ creall@Base 15 ++ fakePureErrnoImpl@Base 15 ++ fakePureReprintReal@Base 15 ++ fiber_entryPoint@Base 15 ++ fiber_switchContext@Base 15 ++ gc_addRange@Base 15 ++ gc_addRoot@Base 15 ++ gc_addrOf@Base 15 ++ gc_allocatedInCurrentThread@Base 15 ++ gc_calloc@Base 15 ++ gc_clrAttr@Base 15 ++ gc_clrProxy@Base 15 ++ gc_collect@Base 15 ++ gc_disable@Base 15 ++ gc_enable@Base 15 ++ gc_expandArrayUsed@Base 15 ++ gc_extend@Base 15 ++ gc_free@Base 15 ++ gc_getArrayUsed@Base 15 ++ gc_getAttr@Base 15 ++ gc_getProxy@Base 15 ++ gc_inFinalizer@Base 15 ++ gc_init@Base 15 ++ gc_init_nothrow@Base 15 ++ gc_malloc@Base 15 ++ gc_minimize@Base 15 ++ gc_profileStats@Base 15 ++ gc_qalloc@Base 15 ++ gc_query@Base 15 ++ gc_realloc@Base 15 ++ gc_removeRange@Base 15 ++ gc_removeRoot@Base 15 ++ gc_reserve@Base 15 ++ gc_reserveArrayCapacity@Base 15 ++ gc_runFinalizers@Base 15 ++ gc_setAttr@Base 15 ++ gc_setProxy@Base 15 ++ gc_shrinkArrayUsed@Base 15 ++ gc_sizeOf@Base 15 ++ gc_stats@Base 15 ++ gc_term@Base 15 ++ getErrno@Base 15 ++ libat_lock_n@Base 15 ++ libat_unlock_n@Base 15 ++ lifetime_init@Base 15 ++ onArrayIndexError@Base 15 ++ onArraySliceError@Base 15 ++ onAssertError@Base 15 ++ onAssertErrorMsg@Base 15 ++ onFinalizeError@Base 15 ++ onForkError@Base 15 ++ onInvalidMemoryOperationError@Base 15 ++ onOutOfMemoryError@Base 15 ++ onOutOfMemoryErrorNoGC@Base 15 ++ onRangeError@Base 15 ++ onUnicodeError@Base 15 ++ onUnittestErrorMsg@Base 15 ++ pcinfoCallback@Base 15 ++ pcinfoErrorCallback@Base 15 ++ perf_event_open@Base 15 ++ profilegc_setlogfilename@Base 15 ++ register_default_gcs@Base 15 ++ rt_args@Base 15 ++ rt_attachDisposeEvent@Base 15 ++ rt_cArgs@Base 15 ++ rt_cmdline_enabled@Base 15 ++ rt_detachDisposeEvent@Base 15 ++ rt_envvars_enabled@Base 15 ++ rt_finalize2@Base 15 ++ rt_finalize@Base 15 ++ rt_finalizeFromGC@Base 15 ++ rt_getCollectHandler@Base 15 ++ rt_getTraceDeallocator@Base 15 ++ rt_getTraceHandler@Base 15 ++ rt_hasFinalizerInSegment@Base 15 ++ rt_init@Base 15 ++ rt_loadLibrary@Base 15 ++ rt_moduleCtor@Base 15 ++ rt_moduleDtor@Base 15 ++ rt_moduleTlsCtor@Base 15 ++ rt_moduleTlsDtor@Base 15 ++ rt_options@Base 15 ++ rt_setCollectHandler@Base 15 ++ rt_setTraceHandler@Base 15 ++ rt_term@Base 15 ++ rt_trapExceptions@Base 15 ++ rt_unloadLibrary@Base 15 ++ runModuleUnitTests@Base 15 ++ setErrno@Base 15 ++ simpleCallback@Base 15 ++ simpleErrorCallback@Base 15 ++ syminfoCallback2@Base 15 ++ syminfoCallback@Base 15 ++ thread_attachThis@Base 15 ++ thread_detachByAddr@Base 15 ++ thread_detachInstance@Base 15 ++ thread_detachThis@Base 15 ++ thread_entryPoint@Base 15 ++ thread_init@Base 15 ++ thread_isMainThread@Base 15 ++ thread_joinAll@Base 15 ++ thread_postRestartTheWorld@Base 15 ++ thread_postSuspend@Base 15 ++ thread_preStopTheWorld@Base 15 ++ thread_preSuspend@Base 15 ++ thread_resumeAll@Base 15 ++ thread_resumeHandler@Base 15 ++ thread_scanAll@Base 15 ++ thread_scanAllType@Base 15 ++ thread_setGCSignals@Base 15 ++ thread_setThis@Base 15 ++ thread_stackBottom@Base 15 ++ thread_stackTop@Base 15 ++ thread_suspendAll@Base 15 ++ thread_suspendHandler@Base 15 ++ thread_term@Base 15 ++ tipc_addr@Base 15 ++ tipc_cluster@Base 15 ++ tipc_node@Base 15 ++ tipc_zone@Base 15 ++libgphobos.so.6 libgphobos6 #MINVER# ++ CPU_ALLOC@Base 15 ++ CPU_ALLOC_SIZE@Base 15 ++ CPU_COUNT@Base 15 ++ CPU_COUNT_S@Base 15 ++ CPU_FREE@Base 15 ++ CPU_ISSET@Base 15 ++ CPU_SET@Base 15 ++ LOG_MASK@Base 15 ++ LOG_UPTO@Base 15 ++ SIGRTMAX@Base 15 ++ SIGRTMIN@Base 15 ++ S_TYPEISMQ@Base 15 ++ S_TYPEISSEM@Base 15 ++ S_TYPEISSHM@Base 15 ++ TPACKET_ALIGN@Base 15 ++ _D101TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 ++ _D101TypeInfo_S3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6__initZ@Base 15 ++ _D101TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__initZ@Base 15 ++ _D101TypeInfo_S4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D101TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S6__initZ@Base 15 ++ _D102TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 ++ _D102TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 ++ _D102TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S6__initZ@Base 15 ++ _D102TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7AddType6__initZ@Base 15 ++ _D103TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb6__initZ@Base 15 ++ _D103TypeInfo_S4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 ++ _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 ++ _D103TypeInfo_S4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 ++ _D105TypeInfo_E4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10IsDelegate6__initZ@Base 15 ++ _D105TypeInfo_S3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__initZ@Base 15 ++ _D109TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__initZ@Base 15 ++ _D10TypeInfo_a6__initZ@Base 15 ++ _D10TypeInfo_a6__vtblZ@Base 15 ++ _D10TypeInfo_a7__ClassZ@Base 15 ++ _D10TypeInfo_b6__initZ@Base 15 ++ _D10TypeInfo_b6__vtblZ@Base 15 ++ _D10TypeInfo_b7__ClassZ@Base 15 ++ _D10TypeInfo_c6__initZ@Base 15 ++ _D10TypeInfo_c6__vtblZ@Base 15 ++ _D10TypeInfo_c7__ClassZ@Base 15 ++ _D10TypeInfo_d6__initZ@Base 15 ++ _D10TypeInfo_d6__vtblZ@Base 15 ++ _D10TypeInfo_d7__ClassZ@Base 15 ++ _D10TypeInfo_e6__initZ@Base 15 ++ _D10TypeInfo_e6__vtblZ@Base 15 ++ _D10TypeInfo_e7__ClassZ@Base 15 ++ _D10TypeInfo_f6__initZ@Base 15 ++ _D10TypeInfo_f6__vtblZ@Base 15 ++ _D10TypeInfo_f7__ClassZ@Base 15 ++ _D10TypeInfo_g6__initZ@Base 15 ++ _D10TypeInfo_g6__vtblZ@Base 15 ++ _D10TypeInfo_g7__ClassZ@Base 15 ++ _D10TypeInfo_h6__initZ@Base 15 ++ _D10TypeInfo_h6__vtblZ@Base 15 ++ _D10TypeInfo_h7__ClassZ@Base 15 ++ _D10TypeInfo_i6__initZ@Base 15 ++ _D10TypeInfo_i6__vtblZ@Base 15 ++ _D10TypeInfo_i7__ClassZ@Base 15 ++ _D10TypeInfo_j6__initZ@Base 15 ++ _D10TypeInfo_j6__vtblZ@Base 15 ++ _D10TypeInfo_j7__ClassZ@Base 15 ++ _D10TypeInfo_k6__initZ@Base 15 ++ _D10TypeInfo_k6__vtblZ@Base 15 ++ _D10TypeInfo_k7__ClassZ@Base 15 ++ _D10TypeInfo_l6__initZ@Base 15 ++ _D10TypeInfo_l6__vtblZ@Base 15 ++ _D10TypeInfo_l7__ClassZ@Base 15 ++ _D10TypeInfo_m6__initZ@Base 15 ++ _D10TypeInfo_m6__vtblZ@Base 15 ++ _D10TypeInfo_m7__ClassZ@Base 15 ++ _D10TypeInfo_n6__initZ@Base 15 ++ _D10TypeInfo_n6__vtblZ@Base 15 ++ _D10TypeInfo_n7__ClassZ@Base 15 ++ _D10TypeInfo_o6__initZ@Base 15 ++ _D10TypeInfo_o6__vtblZ@Base 15 ++ _D10TypeInfo_o7__ClassZ@Base 15 ++ _D10TypeInfo_p6__initZ@Base 15 ++ _D10TypeInfo_p6__vtblZ@Base 15 ++ _D10TypeInfo_p7__ClassZ@Base 15 ++ _D10TypeInfo_q6__initZ@Base 15 ++ _D10TypeInfo_q6__vtblZ@Base 15 ++ _D10TypeInfo_q7__ClassZ@Base 15 ++ _D10TypeInfo_r6__initZ@Base 15 ++ _D10TypeInfo_r6__vtblZ@Base 15 ++ _D10TypeInfo_r7__ClassZ@Base 15 ++ _D10TypeInfo_s6__initZ@Base 15 ++ _D10TypeInfo_s6__vtblZ@Base 15 ++ _D10TypeInfo_s7__ClassZ@Base 15 ++ _D10TypeInfo_t6__initZ@Base 15 ++ _D10TypeInfo_t6__vtblZ@Base 15 ++ _D10TypeInfo_t7__ClassZ@Base 15 ++ _D10TypeInfo_u6__initZ@Base 15 ++ _D10TypeInfo_u6__vtblZ@Base 15 ++ _D10TypeInfo_u7__ClassZ@Base 15 ++ _D10TypeInfo_v6__initZ@Base 15 ++ _D10TypeInfo_v6__vtblZ@Base 15 ++ _D10TypeInfo_v7__ClassZ@Base 15 ++ _D10TypeInfo_w6__initZ@Base 15 ++ _D10TypeInfo_w6__vtblZ@Base 15 ++ _D10TypeInfo_w7__ClassZ@Base 15 ++ _D110TypeInfo_S3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__initZ@Base 15 ++ _D111TypeInfo_S3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 ++ _D111TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__initZ@Base 15 ++ _D111TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__initZ@Base 15 ++ _D112TypeInfo_OS3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 ++ _D113TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D114TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 ++ _D114TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 ++ _D115TypeInfo_S4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 ++ _D115TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 ++ _D115TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 ++ _D115TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 ++ _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 ++ _D116TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 ++ _D118TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore6__initZ@Base 15 ++ _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 ++ _D118TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 ++ _D119TypeInfo_S3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__initZ@Base 15 ++ _D119TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 ++ _D119TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 ++ _D11TypeInfo_Aa6__initZ@Base 15 ++ _D11TypeInfo_Aa6__vtblZ@Base 15 ++ _D11TypeInfo_Aa7__ClassZ@Base 15 ++ _D11TypeInfo_Ab6__initZ@Base 15 ++ _D11TypeInfo_Ab6__vtblZ@Base 15 ++ _D11TypeInfo_Ab7__ClassZ@Base 15 ++ _D11TypeInfo_Ac6__initZ@Base 15 ++ _D11TypeInfo_Ac6__vtblZ@Base 15 ++ _D11TypeInfo_Ac7__ClassZ@Base 15 ++ _D11TypeInfo_Ad6__initZ@Base 15 ++ _D11TypeInfo_Ad6__vtblZ@Base 15 ++ _D11TypeInfo_Ad7__ClassZ@Base 15 ++ _D11TypeInfo_Ae6__initZ@Base 15 ++ _D11TypeInfo_Ae6__vtblZ@Base 15 ++ _D11TypeInfo_Ae7__ClassZ@Base 15 ++ _D11TypeInfo_Af6__initZ@Base 15 ++ _D11TypeInfo_Af6__vtblZ@Base 15 ++ _D11TypeInfo_Af7__ClassZ@Base 15 ++ _D11TypeInfo_Ag6__initZ@Base 15 ++ _D11TypeInfo_Ag6__vtblZ@Base 15 ++ _D11TypeInfo_Ag7__ClassZ@Base 15 ++ _D11TypeInfo_Ah6__initZ@Base 15 ++ _D11TypeInfo_Ah6__vtblZ@Base 15 ++ _D11TypeInfo_Ah7__ClassZ@Base 15 ++ _D11TypeInfo_Ai6__initZ@Base 15 ++ _D11TypeInfo_Ai6__vtblZ@Base 15 ++ _D11TypeInfo_Ai7__ClassZ@Base 15 ++ _D11TypeInfo_Aj6__initZ@Base 15 ++ _D11TypeInfo_Aj6__vtblZ@Base 15 ++ _D11TypeInfo_Aj7__ClassZ@Base 15 ++ _D11TypeInfo_Ak6__initZ@Base 15 ++ _D11TypeInfo_Ak6__vtblZ@Base 15 ++ _D11TypeInfo_Ak7__ClassZ@Base 15 ++ _D11TypeInfo_Al6__initZ@Base 15 ++ _D11TypeInfo_Al6__vtblZ@Base 15 ++ _D11TypeInfo_Al7__ClassZ@Base 15 ++ _D11TypeInfo_Am6__initZ@Base 15 ++ _D11TypeInfo_Am6__vtblZ@Base 15 ++ _D11TypeInfo_Am7__ClassZ@Base 15 ++ _D11TypeInfo_Ao6__initZ@Base 15 ++ _D11TypeInfo_Ao6__vtblZ@Base 15 ++ _D11TypeInfo_Ao7__ClassZ@Base 15 ++ _D11TypeInfo_Ap6__initZ@Base 15 ++ _D11TypeInfo_Ap6__vtblZ@Base 15 ++ _D11TypeInfo_Ap7__ClassZ@Base 15 ++ _D11TypeInfo_Aq6__initZ@Base 15 ++ _D11TypeInfo_Aq6__vtblZ@Base 15 ++ _D11TypeInfo_Aq7__ClassZ@Base 15 ++ _D11TypeInfo_Ar6__initZ@Base 15 ++ _D11TypeInfo_Ar6__vtblZ@Base 15 ++ _D11TypeInfo_Ar7__ClassZ@Base 15 ++ _D11TypeInfo_As6__initZ@Base 15 ++ _D11TypeInfo_As6__vtblZ@Base 15 ++ _D11TypeInfo_As7__ClassZ@Base 15 ++ _D11TypeInfo_At6__initZ@Base 15 ++ _D11TypeInfo_At6__vtblZ@Base 15 ++ _D11TypeInfo_At7__ClassZ@Base 15 ++ _D11TypeInfo_Au6__initZ@Base 15 ++ _D11TypeInfo_Au6__vtblZ@Base 15 ++ _D11TypeInfo_Au7__ClassZ@Base 15 ++ _D11TypeInfo_Av6__initZ@Base 15 ++ _D11TypeInfo_Av6__vtblZ@Base 15 ++ _D11TypeInfo_Av7__ClassZ@Base 15 ++ _D11TypeInfo_Aw6__initZ@Base 15 ++ _D11TypeInfo_Aw6__vtblZ@Base 15 ++ _D11TypeInfo_Aw7__ClassZ@Base 15 ++ _D11TypeInfo_Oa6__initZ@Base 15 ++ _D11TypeInfo_Ou6__initZ@Base 15 ++ _D11TypeInfo_Pa6__initZ@Base 15 ++ _D11TypeInfo_xa6__initZ@Base 15 ++ _D11TypeInfo_xb6__initZ@Base 15 ++ _D11TypeInfo_xd6__initZ@Base 15 ++ _D11TypeInfo_xe6__initZ@Base 15 ++ _D11TypeInfo_xf6__initZ@Base 15 ++ _D11TypeInfo_xh6__initZ@Base 15 ++ _D11TypeInfo_xi6__initZ@Base 15 ++ _D11TypeInfo_xk6__initZ@Base 15 ++ _D11TypeInfo_xl6__initZ@Base 15 ++ _D11TypeInfo_xm6__initZ@Base 15 ++ _D11TypeInfo_xt6__initZ@Base 15 ++ _D11TypeInfo_xu6__initZ@Base 15 ++ _D11TypeInfo_xv6__initZ@Base 15 ++ _D11TypeInfo_xw6__initZ@Base 15 ++ _D11TypeInfo_ya6__initZ@Base 15 ++ _D11TypeInfo_yb6__initZ@Base 15 ++ _D11TypeInfo_yh6__initZ@Base 15 ++ _D11TypeInfo_yi6__initZ@Base 15 ++ _D11TypeInfo_yk6__initZ@Base 15 ++ _D11TypeInfo_ym6__initZ@Base 15 ++ _D11TypeInfo_yu6__initZ@Base 15 ++ _D11TypeInfo_yw6__initZ@Base 15 ++ _D120TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 ++ _D120TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 ++ _D120TypeInfo_S4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 ++ _D121TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk6__initZ@Base 15 ++ _D122TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 ++ _D122TypeInfo_S3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 ++ _D123TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S6__initZ@Base 15 ++ _D124TypeInfo_S3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__initZ@Base 15 ++ _D125TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S6__initZ@Base 15 ++ _D126TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore6__initZ@Base 15 ++ _D127TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D127TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D128TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D128TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D129TypeInfo_G2S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D129TypeInfo_G2S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D129TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 ++ _D12TypeInfo_AOa6__initZ@Base 15 ++ _D12TypeInfo_AOu6__initZ@Base 15 ++ _D12TypeInfo_Axa6__initZ@Base 15 ++ _D12TypeInfo_Axa6__vtblZ@Base 15 ++ _D12TypeInfo_Axa7__ClassZ@Base 15 ++ _D12TypeInfo_Axf6__initZ@Base 15 ++ _D12TypeInfo_Axh6__initZ@Base 15 ++ _D12TypeInfo_Axk6__initZ@Base 15 ++ _D12TypeInfo_Axm6__initZ@Base 15 ++ _D12TypeInfo_Axu6__initZ@Base 15 ++ _D12TypeInfo_Axv6__initZ@Base 15 ++ _D12TypeInfo_Axw6__initZ@Base 15 ++ _D12TypeInfo_Aya6__initZ@Base 15 ++ _D12TypeInfo_Aya6__vtblZ@Base 15 ++ _D12TypeInfo_Aya7__ClassZ@Base 15 ++ _D12TypeInfo_Ayh6__initZ@Base 15 ++ _D12TypeInfo_Ayk6__initZ@Base 15 ++ _D12TypeInfo_Aym6__initZ@Base 15 ++ _D12TypeInfo_Ayu6__initZ@Base 15 ++ _D12TypeInfo_Ayw6__initZ@Base 15 ++ _D12TypeInfo_FZv6__initZ@Base 15 ++ _D12TypeInfo_G2m6__initZ@Base 15 ++ _D12TypeInfo_G3m6__initZ@Base 15 ++ _D12TypeInfo_G4a6__initZ@Base 15 ++ _D12TypeInfo_G4m6__initZ@Base 15 ++ _D12TypeInfo_G8h6__initZ@Base 15 ++ _D12TypeInfo_Oxk6__initZ@Base 15 ++ _D12TypeInfo_Pxa6__initZ@Base 15.2 ++ _D12TypeInfo_Pxd6__initZ@Base 15.2 ++ _D12TypeInfo_Pxh6__initZ@Base 15 ++ _D12TypeInfo_Pxk6__initZ@Base 15.2 ++ _D12TypeInfo_Pxv6__initZ@Base 15 ++ _D12TypeInfo_xAa6__initZ@Base 15 ++ _D12TypeInfo_xAf6__initZ@Base 15 ++ _D12TypeInfo_xAh6__initZ@Base 15 ++ _D12TypeInfo_xAk6__initZ@Base 15 ++ _D12TypeInfo_xAm6__initZ@Base 15 ++ _D12TypeInfo_xAu6__initZ@Base 15 ++ _D12TypeInfo_xAv6__initZ@Base 15 ++ _D12TypeInfo_xAw6__initZ@Base 15 ++ _D12TypeInfo_xPa6__initZ@Base 15.2 ++ _D12TypeInfo_xPd6__initZ@Base 15.2 ++ _D12TypeInfo_xPh6__initZ@Base 15 ++ _D12TypeInfo_xPk6__initZ@Base 15.2 ++ _D12TypeInfo_xPv6__initZ@Base 15 ++ _D12TypeInfo_yAa6__initZ@Base 15 ++ _D130TypeInfo_xG2S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D130TypeInfo_xG2S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D130TypeInfo_xS3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 ++ _D131TypeInfo_S3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 ++ _D131TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 ++ _D131TypeInfo_S3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd6__initZ@Base 15 ++ _D131TypeInfo_S3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl6__initZ@Base 15 ++ _D133TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 ++ _D133TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 ++ _D134TypeInfo_xS3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 ++ _D136TypeInfo_S3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 ++ _D138TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 ++ _D138TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 ++ _D139TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 ++ _D139TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__initZ@Base 15 ++ _D139TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__initZ@Base 15 ++ _D139TypeInfo_S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 ++ _D139TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 ++ _D139TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__initZ@Base 15 ++ _D139TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 ++ _D139TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 ++ _D13TypeInfo_AAya6__initZ@Base 15 ++ _D13TypeInfo_AxPv6__initZ@Base 15 ++ _D13TypeInfo_AyAa6__initZ@Base 15 ++ _D13TypeInfo_DFZv6__initZ@Base 15 ++ _D13TypeInfo_Enum6__initZ@Base 15 ++ _D13TypeInfo_Enum6__vtblZ@Base 15 ++ _D13TypeInfo_Enum7__ClassZ@Base 15 ++ _D13TypeInfo_G12a6__initZ@Base 15 ++ _D13TypeInfo_G48a6__initZ@Base 15 ++ _D13TypeInfo_xAPv6__initZ@Base 15 ++ _D13TypeInfo_xAya6__initZ@Base 15 ++ _D13TypeInfo_xAym6__initZ@Base 15 ++ _D13TypeInfo_xAyu6__initZ@Base 15 ++ _D13TypeInfo_xAyw6__initZ@Base 15 ++ _D13TypeInfo_xG2m6__initZ@Base 15 ++ _D13TypeInfo_xG3m6__initZ@Base 15 ++ _D13TypeInfo_xG4a6__initZ@Base 15 ++ _D13TypeInfo_xG4m6__initZ@Base 15 ++ _D13TypeInfo_xG8h6__initZ@Base 15 ++ _D140TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 ++ _D142TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo6__initZ@Base 15.2 ++ _D144TypeInfo_S3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__initZ@Base 15 ++ _D145TypeInfo_S3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__initZ@Base 15 ++ _D14TypeInfo_Array6__initZ@Base 15 ++ _D14TypeInfo_Array6__vtblZ@Base 15 ++ _D14TypeInfo_Array7__ClassZ@Base 15 ++ _D14TypeInfo_AxAya6__initZ@Base 15 ++ _D14TypeInfo_Class6__initZ@Base 15 ++ _D14TypeInfo_Class6__vtblZ@Base 15 ++ _D14TypeInfo_Class7__ClassZ@Base 15 ++ _D14TypeInfo_Const6__initZ@Base 15 ++ _D14TypeInfo_Const6__vtblZ@Base 15 ++ _D14TypeInfo_Const7__ClassZ@Base 15 ++ _D14TypeInfo_FPvZv6__initZ@Base 15 ++ _D14TypeInfo_HAxam6__initZ@Base 15 ++ _D14TypeInfo_Inout6__initZ@Base 15 ++ _D14TypeInfo_Inout6__vtblZ@Base 15 ++ _D14TypeInfo_Inout7__ClassZ@Base 15 ++ _D14TypeInfo_Tuple6__initZ@Base 15 ++ _D14TypeInfo_Tuple6__vtblZ@Base 15 ++ _D14TypeInfo_Tuple7__ClassZ@Base 15 ++ _D14TypeInfo_UPvZv6__initZ@Base 15.2 ++ _D14TypeInfo_xAAya6__initZ@Base 15 ++ _D14TypeInfo_xDFZv6__initZ@Base 15 ++ _D14TypeInfo_xG12a6__initZ@Base 15 ++ _D14TypeInfo_xG48a6__initZ@Base 15 ++ _D150TypeInfo_S3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__initZ@Base 15 ++ _D152TypeInfo_S3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__initZ@Base 15 ++ _D152TypeInfo_S3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__initZ@Base 15 ++ _D155TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D155TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D155TypeInfo_S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D155TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D155TypeInfo_S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D155TypeInfo_S3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__initZ@Base 15 ++ _D156TypeInfo_S3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__initZ@Base 15 ++ _D156TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D156TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D156TypeInfo_xS3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D156TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D156TypeInfo_xS3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D157TypeInfo_G3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D157TypeInfo_G3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D157TypeInfo_G3S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D157TypeInfo_G3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D157TypeInfo_G3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D157TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd6__initZ@Base 15 ++ _D157TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd6__initZ@Base 15 ++ _D157TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__initZ@Base 15 ++ _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D158TypeInfo_xG3S3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D158TypeInfo_xG3S3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D159TypeInfo_S3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__initZ@Base 15 ++ _D159TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 ++ _D15TypeInfo_HAyaQd6__initZ@Base 15 ++ _D15TypeInfo_PFPvZv6__initZ@Base 15 ++ _D15TypeInfo_PUPvZv6__initZ@Base 15.2 ++ _D15TypeInfo_Shared6__initZ@Base 15 ++ _D15TypeInfo_Shared6__vtblZ@Base 15 ++ _D15TypeInfo_Shared7__ClassZ@Base 15 ++ _D15TypeInfo_Struct6__initZ@Base 15 ++ _D15TypeInfo_Struct6__vtblZ@Base 15 ++ _D15TypeInfo_Struct7__ClassZ@Base 15 ++ _D15TypeInfo_Vector6__initZ@Base 15 ++ _D15TypeInfo_Vector6__vtblZ@Base 15 ++ _D15TypeInfo_Vector7__ClassZ@Base 15 ++ _D160TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 ++ _D161TypeInfo_S3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__initZ@Base 15 ++ _D163TypeInfo_S3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__initZ@Base 15 ++ _D164TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 ++ _D164TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 ++ _D164TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 ++ _D164TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 ++ _D165TypeInfo_S3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5State6__initZ@Base 15 ++ _D167TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__initZ@Base 15 ++ _D167TypeInfo_S3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__initZ@Base 15 ++ _D16TypeInfo_HAyaAQe6__initZ@Base 15 ++ _D16TypeInfo_HPxvAya6__initZ@Base 15 ++ _D16TypeInfo_Pointer6__initZ@Base 15 ++ _D16TypeInfo_Pointer6__vtblZ@Base 15 ++ _D16TypeInfo_Pointer7__ClassZ@Base 15 ++ _D16TypeInfo_xPFPvZv6__initZ@Base 15 ++ _D16TypeInfo_xPUPvZv6__initZ@Base 15.2 ++ _D175TypeInfo_S3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__initZ@Base 15 ++ _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 ++ _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 ++ _D177TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 ++ _D177TypeInfo_S3std9algorithm7sorting__T11TimSortImplSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh8sanitizeMFNfZ18__lambda_L2889_C15TSQErQDe__TQDdTQCrZQDl__T9IntervalsTAkZQoZ5Slice6__initZ@Base 15 ++ _D178TypeInfo_S3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__initZ@Base 15 ++ _D179TypeInfo_S3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__initZ@Base 15 ++ _D17TypeInfo_Delegate6__initZ@Base 15 ++ _D17TypeInfo_Delegate6__vtblZ@Base 15 ++ _D17TypeInfo_Delegate7__ClassZ@Base 15 ++ _D17TypeInfo_Function6__initZ@Base 15 ++ _D17TypeInfo_Function6__vtblZ@Base 15 ++ _D17TypeInfo_Function7__ClassZ@Base 15 ++ _D183TypeInfo_S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 ++ _D184TypeInfo_S3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 ++ _D184TypeInfo_xS3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 ++ _D185TypeInfo_G4S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 ++ _D185TypeInfo_S3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__initZ@Base 15 ++ _D185TypeInfo_S3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__initZ@Base 15 ++ _D185TypeInfo_S3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf6__initZ@Base 15 ++ _D185TypeInfo_xS3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 ++ _D186TypeInfo_xG4S3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 ++ _D188TypeInfo_S3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 ++ _D18TypeInfo_FNbMxPvZm6__initZ@Base 15 ++ _D18TypeInfo_HAyaAxAya6__initZ@Base 15.2 ++ _D18TypeInfo_Interface6__initZ@Base 15 ++ _D18TypeInfo_Interface6__vtblZ@Base 15 ++ _D18TypeInfo_Interface7__ClassZ@Base 15 ++ _D18TypeInfo_Invariant6__initZ@Base 15 ++ _D18TypeInfo_Invariant6__vtblZ@Base 15 ++ _D18TypeInfo_Invariant7__ClassZ@Base 15 ++ _D18TypeInfo_xC6Object6__initZ@Base 15 ++ _D190TypeInfo_S3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 ++ _D191TypeInfo_xS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 ++ _D192TypeInfo_AxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 ++ _D192TypeInfo_PxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 ++ _D192TypeInfo_S3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__initZ@Base 15 ++ _D192TypeInfo_S3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 ++ _D192TypeInfo_xAS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 ++ _D192TypeInfo_xPS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 ++ _D19TypeInfo_DFNbMxPvZm6__initZ@Base 15 ++ _D202TypeInfo_S3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__initZ@Base 15 ++ _D205TypeInfo_S3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__initZ@Base 15 ++ _D208TypeInfo_S3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5State6__initZ@Base 15 ++ _D20TypeInfo_S2rt3aaA2AA6__initZ@Base 15 ++ _D20TypeInfo_S6object2AA6__initZ@Base 15 ++ _D20TypeInfo_StaticArray6__initZ@Base 15 ++ _D20TypeInfo_StaticArray6__vtblZ@Base 15 ++ _D20TypeInfo_StaticArray7__ClassZ@Base 15 ++ _D20TypeInfo_xDFNbMxPvZm6__initZ@Base 15 ++ _D219TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__initZ@Base 15 ++ _D22TypeInfo_FNbC6ObjectZv6__initZ@Base 15 ++ _D22TypeInfo_S2rt3aaA4Impl6__initZ@Base 15 ++ _D230TypeInfo_S3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__initZ@Base 15 ++ _D23TypeInfo_DFNbC6ObjectZv6__initZ@Base 15 ++ _D23TypeInfo_E3std3uni4Mode6__initZ@Base 15 ++ _D23TypeInfo_S2rt3aaA5Range6__initZ@Base 15 ++ _D249TypeInfo_S3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result6__initZ@Base 15 ++ _D24TypeInfo_E3std6system2OS6__initZ@Base 15 ++ _D24TypeInfo_S2rt3aaA6Bucket6__initZ@Base 15 ++ _D24TypeInfo_S2rt5tlsgc4Data6__initZ@Base 15 ++ _D24TypeInfo_S3std4uuid4UUID6__initZ@Base 15 ++ _D24TypeInfo_xDFNbC6ObjectZv6__initZ@Base 15 ++ _D250TypeInfo_S3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6__initZ@Base 15 ++ _D251TypeInfo_S3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__initZ@Base 15 ++ _D25TypeInfo_AssociativeArray6__initZ@Base 15 ++ _D25TypeInfo_AssociativeArray6__vtblZ@Base 15 ++ _D25TypeInfo_AssociativeArray7__ClassZ@Base 15 ++ _D25TypeInfo_AxDFNbC6ObjectZv6__initZ@Base 15 ++ _D25TypeInfo_E3std6system3ISA6__initZ@Base 15 ++ _D25TypeInfo_S3etc1c4curl3_N26__initZ@Base 15 ++ _D25TypeInfo_S3std5stdio4File6__initZ@Base 15 ++ _D25TypeInfo_S4core6memory2GC6__initZ@Base 15 ++ _D25TypeInfo_S6object7AARange6__initZ@Base 15 ++ _D25TypeInfo_xADFNbC6ObjectZv6__initZ@Base 15 ++ _D25TypeInfo_xS2rt3aaA6Bucket6__initZ@Base 15 ++ _D261TypeInfo_S4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNiNeNkMAvZ5Array6__initZ@Base 15 ++ _D26TypeInfo_AxS2rt3aaA6Bucket6__initZ@Base 15 ++ _D26TypeInfo_S2rt6dmain25CArgs6__initZ@Base 15 ++ _D26TypeInfo_S3etc1c4curl4_N286__initZ@Base 15 ++ _D26TypeInfo_S3etc1c4curl4_N316__initZ@Base 15 ++ _D26TypeInfo_S3std3uni7unicode6__initZ@Base 15 ++ _D26TypeInfo_S3std5stdio5lines6__initZ@Base 15 ++ _D26TypeInfo_S3std8typecons2No6__initZ@Base 15 ++ _D26TypeInfo_xAS2rt3aaA6Bucket6__initZ@Base 15 ++ _D26TypeInfo_xS3std5stdio4File6__initZ@Base 15 ++ _D27TypeInfo_E3etc1c4curl5CurlM6__initZ@Base 15 ++ _D27TypeInfo_E3std6digest5Order6__initZ@Base 15 ++ _D27TypeInfo_E3std8encoding3BOM6__initZ@Base 15 ++ _D27TypeInfo_S3std3net4curl3FTP6__initZ@Base 15 ++ _D27TypeInfo_S3std3uni8GcPolicy6__initZ@Base 15 ++ _D27TypeInfo_S3std3uni8Grapheme6__initZ@Base 15 ++ _D27TypeInfo_S3std7process4Pipe6__initZ@Base 15 ++ _D27TypeInfo_S3std7sumtype4This6__initZ@Base 15 ++ _D27TypeInfo_S3std8typecons3Yes6__initZ@Base 15 ++ _D27TypeInfo_S4core6int1284Cent6__initZ@Base 15 ++ _D27TypeInfo_S6object9Interface6__initZ@Base 15 ++ _D28TypeInfo_C3std6digest6Digest6__initZ@Base 15 ++ _D28TypeInfo_E2rt3aaA4Impl5Flags6__initZ@Base 15 ++ _D28TypeInfo_E3std3csv9Malformed6__initZ@Base 15 ++ _D28TypeInfo_E3std4file8SpanMode6__initZ@Base 15 ++ _D28TypeInfo_E3std4json8JSONType6__initZ@Base 15 ++ _D28TypeInfo_E3std6getopt6config6__initZ@Base 15 ++ _D28TypeInfo_E3std6system6Endian6__initZ@Base 15 ++ _D28TypeInfo_S3std3net4curl4Curl6__initZ@Base 15 ++ _D28TypeInfo_S3std3net4curl4HTTP6__initZ@Base 15 ++ _D28TypeInfo_S3std3net4curl4SMTP6__initZ@Base 15 ++ _D28TypeInfo_S3std4file8DirEntry6__initZ@Base 15 ++ _D28TypeInfo_S3std6bigint6BigInt6__initZ@Base 15 ++ _D28TypeInfo_S3std6digest2md3MD56__initZ@Base 15 ++ _D28TypeInfo_S3std6getopt6Option6__initZ@Base 15 ++ _D28TypeInfo_S3std6int1286Int1286__initZ@Base 15 ++ _D28TypeInfo_S3std6socket6Linger6__initZ@Base 15 ++ _D29TypeInfo_AS3std4file8DirEntry6__initZ@Base 15 ++ _D29TypeInfo_E3etc1c4curl7CurlFtp6__initZ@Base 15 ++ _D29TypeInfo_E3etc1c4curl7CurlMsg6__initZ@Base 15 ++ _D29TypeInfo_E3etc1c4curl7CurlVer6__initZ@Base 15 ++ _D29TypeInfo_E3std5stdio8LockType6__initZ@Base 15 ++ _D29TypeInfo_S2rt9profilegc5Entry6__initZ@Base 15 ++ _D29TypeInfo_S3etc1c4curl7CURLMsg6__initZ@Base 15 ++ _D29TypeInfo_S3std4json9JSONValue6__initZ@Base 15 ++ _D29TypeInfo_S3std5range8NullSink6__initZ@Base 15 ++ _D29TypeInfo_S3std6socket7TimeVal6__initZ@Base 15 ++ _D29TypeInfo_S3std7process6Config6__initZ@Base 15 ++ _D29TypeInfo_S4core4time8Duration6__initZ@Base 15 ++ _D29TypeInfo_S4core5bitop7Split646__initZ@Base 15 ++ _D29TypeInfo_S4core7runtime5CArgs6__initZ@Base 15 ++ _D29TypeInfo_S6object10ModuleInfo6__initZ@Base 15 ++ _D29TypeInfo_xE2rt3aaA4Impl5Flags6__initZ@Base 15 ++ _D29TypeInfo_xE3std4file8SpanMode6__initZ@Base 15 ++ _D29TypeInfo_xS3std3net4curl4Curl6__initZ@Base 15 ++ _D29TypeInfo_xS3std4file8DirEntry6__initZ@Base 15 ++ _D29TypeInfo_xS3std6getopt6Option6__initZ@Base 15 ++ _D2rt10invariant_11__moduleRefZ@Base 15.2 ++ _D2rt10invariant_12__ModuleInfoZ@Base 15.2 ++ _D2rt10invariant_12_d_invariantFC6ObjectZv@Base 15.2 ++ _D2rt19sections_elf_shared18pinLoadedLibrariesFNbNiZPv@Base 15.2 ++ _D2rt19sections_elf_shared20unpinLoadedLibrariesFNbNiPvZv@Base 15.2 ++ _D2rt19sections_elf_shared22cleanupLoadedLibrariesFNbNiZv@Base 15.2 ++ _D2rt19sections_elf_shared22inheritLoadedLibrariesFNbNiPvZv@Base 15.2 ++ _D2rt19sections_elf_shared9sizeOfTLSFNbNiZm@Base 15.2 ++ _D2rt3aaA10allocEntryFMxPSQyQx4ImplMxPvZPv@Base 15 ++ _D2rt3aaA11__moduleRefZ@Base 15 ++ _D2rt3aaA12__ModuleInfoZ@Base 15 ++ _D2rt3aaA12allocBucketsFNaNbNemZASQBgQBg6Bucket@Base 15 ++ _D2rt3aaA2AA5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D2rt3aaA2AA6__initZ@Base 15 ++ _D2rt3aaA3mixFNaNbNiNfmZm@Base 15 ++ _D2rt3aaA4Impl11__xopEqualsMxFKxSQBfQBfQBeZb@Base 15 ++ _D2rt3aaA4Impl14findSlotInsertMNgFNaNbNimZPNgSQBsQBs6Bucket@Base 15 ++ _D2rt3aaA4Impl14findSlotLookupMNgFmMxPvMxC8TypeInfoZPNgSQCcQCc6Bucket@Base 15 ++ _D2rt3aaA4Impl3dimMxFNaNbNdNiNfZm@Base 15 ++ _D2rt3aaA4Impl4growMFNaNbMxC8TypeInfoZv@Base 15 ++ _D2rt3aaA4Impl4maskMxFNaNbNdNiZm@Base 15 ++ _D2rt3aaA4Impl5clearMFNaNbNeZv@Base 15 ++ _D2rt3aaA4Impl6__ctorMFNbNcMxC25TypeInfo_AssociativeArraymZSQCgQCgQCf@Base 15 ++ _D2rt3aaA4Impl6__initZ@Base 15 ++ _D2rt3aaA4Impl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D2rt3aaA4Impl6resizeMFNaNbmZv@Base 15 ++ _D2rt3aaA4Impl6shrinkMFNaNbMxC8TypeInfoZv@Base 15 ++ _D2rt3aaA4Impl9__xtoHashFNbNeKxSQBeQBeQBdZm@Base 15 ++ _D2rt3aaA5Range6__initZ@Base 15 ++ _D2rt3aaA6Bucket5emptyMxFNaNbNdNiZb@Base 15 ++ _D2rt3aaA6Bucket6__initZ@Base 15 ++ _D2rt3aaA6Bucket6filledMxFNaNbNdNiNfZb@Base 15 ++ _D2rt3aaA6Bucket7deletedMxFNaNbNdNiZb@Base 15 ++ _D2rt3aaA6talignFNaNbNiNfmmZm@Base 15 ++ _D2rt3aaA7hasDtorFNaNbxC8TypeInfoZb@Base 15 ++ _D2rt3aaA8calcHashFNbMxPvMxPSQBbQBb4ImplZm@Base 15 ++ _D2rt3aaA8nextpow2FNaNbNixmZm@Base 15 ++ _D2rt3aaA9getRTInfoFNaNbxC8TypeInfoZPyv@Base 15 ++ _D2rt3adi11__moduleRefZ@Base 15 ++ _D2rt3adi12__ModuleInfoZ@Base 15 ++ _D2rt3deh11__moduleRefZ@Base 15 ++ _D2rt3deh12__ModuleInfoZ@Base 15 ++ _D2rt4util7utility10safeAssertFNbNiNfbMAyaMQemZv@Base 15 ++ _D2rt4util7utility11__moduleRefZ@Base 15 ++ _D2rt4util7utility12__ModuleInfoZ@Base 15 ++ _D2rt4util7utility__T8_ComplexTdZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTdZQBzZb@Base 15 ++ _D2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 ++ _D2rt4util7utility__T8_ComplexTdZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTdZQByZm@Base 15 ++ _D2rt4util7utility__T8_ComplexTeZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTeZQBzZb@Base 15 ++ _D2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 ++ _D2rt4util7utility__T8_ComplexTeZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTeZQByZm@Base 15 ++ _D2rt4util7utility__T8_ComplexTfZQm11__xopEqualsMxFKxSQCaQCaQBy__TQBtTfZQBzZb@Base 15 ++ _D2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 ++ _D2rt4util7utility__T8_ComplexTfZQm9__xtoHashFNbNeKxSQBzQBzQBx__TQBsTfZQByZm@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_c8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_j8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n4swapMxFNaNbNiNfPvQcZv@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n6equalsMxFNaNbNiNfIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n7compareMxFNaNbNiNfIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n7getHashMxFNaNbNiNfMxPvZm@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_n8toStringMxFNaNbNiNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_o8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_p8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_q8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_r8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_v5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_v7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo10TypeInfo_v8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Ac8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Aj8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Ao8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Ap8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Aq8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Ar8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Av4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo11TypeInfo_Av8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo11__moduleRefZ@Base 15 ++ _D2rt4util8typeinfo12TypeInfo_Aya8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo12__ModuleInfoZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNeZ1cyG1EQEeQEeQCrQCm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility16__c_complex_realTQBiZQCe8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNeZ1cyG1EQEfQEfQCsQCn@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility17__c_complex_floatTQBjZQCf8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNeZ1cyG1EQEgQEgQCtQCo@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTEQBnQBn7utility18__c_complex_doubleTQBkZQCg8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNeZ1cyG1a@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTaThZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTbThZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNeZ1cyG1d@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTdTdZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNeZ1cyG1e@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTeTeZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNeZ1cyG1f@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5flagsMxFNaNbNdNiNeZk@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTfTfZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTgThZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericThThZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTiTkZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTkTkZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTlTmZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTmTmZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTsTtZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw4swapMxFNaNbNePvQcZv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw5tsizeMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw6talignMxFNaNbNdNiNeZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTtTtZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNeZ1cyG1u@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTuTtZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNeZ1cyG1w@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__initZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T15TypeInfoGenericTwTkZQw8toStringMxFNaNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility16__c_complex_realTQBiZQCj8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility17__c_complex_floatTQBjZQCk8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTEQBsQBs7utility18__c_complex_doubleTQBkZQCl8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTaThZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTbThZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTdTdZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTeTeZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTfTfZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTgThZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericThThZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTiTkZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTkTkZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTlTmZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTmTmZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTsTtZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTtTtZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTuTtZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTwTkZQBb8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTxaTxaZQBd8toStringMxFNbNfZAya@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__initZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6__vtblZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd6equalsMxFIPvIQdZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7__ClassZ@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7compareMxFIPvIQdZi@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd7getHashMxFNbNeMxPvZm@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8opEqualsMxFNbNfxC6ObjectZb@Base 15 ++ _D2rt4util8typeinfo__T20TypeInfoArrayGenericTyaTyaZQBd8toStringMxFNbNfZAya@Base 15 ++ _D2rt5cast_11__moduleRefZ@Base 15 ++ _D2rt5cast_12__ModuleInfoZ@Base 15 ++ _D2rt5cast_18areClassInfosEqualFNaNbNiNfMxC14TypeInfo_ClassMxQtZb@Base 15 ++ _D2rt5minfo11ModuleGroup11__xopEqualsMxFKxSQBpQBpQBmZb@Base 15 ++ _D2rt5minfo11ModuleGroup11runTlsCtorsMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup11runTlsDtorsMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup12genCyclePathMFNbmmAAiZAm@Base 15 ++ _D2rt5minfo11ModuleGroup4freeMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup6__ctorMFNbNcNiAyPS6object10ModuleInfoZSQCkQCkQCh@Base 15 ++ _D2rt5minfo11ModuleGroup6__initZ@Base 15 ++ _D2rt5minfo11ModuleGroup7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 ++ _D2rt5minfo11ModuleGroup8runCtorsMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup8runDtorsMFZv@Base 15 ++ _D2rt5minfo11ModuleGroup9__xtoHashFNbNeKxSQBoQBoQBlZm@Base 15 ++ _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 ++ _D2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZv@Base 15 ++ _D2rt5minfo11ModuleGroup9sortCtorsMFZv@Base 15 ++ _D2rt5minfo11__moduleRefZ@Base 15 ++ _D2rt5minfo12__ModuleInfoZ@Base 15 ++ _D2rt5minfo17moduleinfos_applyFMDFyPS6object10ModuleInfoZiZi@Base 15 ++ _D2rt5tlsgc11__moduleRefZ@Base 15 ++ _D2rt5tlsgc12__ModuleInfoZ@Base 15 ++ _D2rt5tlsgc4Data6__initZ@Base 15 ++ _D2rt5tlsgc4initFNbNiZPv@Base 15 ++ _D2rt5tlsgc4scanFNbPvMDFNbQhQjZvZv@Base 15 ++ _D2rt5tlsgc7destroyFNbNiPvZv@Base 15 ++ _D2rt6aApply11__moduleRefZ@Base 15 ++ _D2rt6aApply12__ModuleInfoZ@Base 15 ++ _D2rt6config11__moduleRefZ@Base 15 ++ _D2rt6config12__ModuleInfoZ@Base 15 ++ _D2rt6config13rt_linkOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 ++ _D2rt6config15rt_configOptionFNbNiAyaMDFNbNiQkZQnbZQr@Base 15 ++ _D2rt6config16rt_cmdlineOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 ++ _D2rt6config16rt_envvarsOptionFNbNiAyaMDFNbNiQkZQnZQq@Base 15 ++ _D2rt6dmain210_initCountOm@Base 15 ++ _D2rt6dmain211__moduleRefZ@Base 15 ++ _D2rt6dmain212__ModuleInfoZ@Base 15 ++ _D2rt6dmain212traceHandlerPFPvZC6object9Throwable9TraceInfo@Base 15 ++ _D2rt6dmain214UnitTestResult6__initZ@Base 15 ++ _D2rt6dmain215formatThrowableFC6object9ThrowableMDFNbIAaZvZv@Base 15 ++ _D2rt6dmain216traceDeallocatorPFNbC6object9Throwable9TraceInfoZv@Base 15 ++ _D2rt6dmain220isRuntimeInitializedFNbNiZb@Base 15 ++ _D2rt6dmain221parseExceptionOptionsFNbNiZb@Base 15 ++ _D2rt6dmain25CArgs6__initZ@Base 15 ++ _D2rt6dmain26_cArgsSQsQr5CArgs@Base 15 ++ _D2rt6dmain27_d_argsAAya@Base 15 ++ _D2rt6memory11__moduleRefZ@Base 15 ++ _D2rt6memory12__ModuleInfoZ@Base 15 ++ _D2rt6memory16initStaticDataGCFZv@Base 15 ++ _D2rt7aApplyR11__moduleRefZ@Base 15 ++ _D2rt7aApplyR12__ModuleInfoZ@Base 15 ++ _D2rt7ehalloc11__moduleRefZ@Base 15 ++ _D2rt7ehalloc12__ModuleInfoZ@Base 15 ++ _D2rt8arraycat11__moduleRefZ@Base 15 ++ _D2rt8arraycat12__ModuleInfoZ@Base 15 ++ _D2rt8lifetime11__moduleRefZ@Base 15 ++ _D2rt8lifetime11__typeAttrsFNaNbMxC8TypeInfoPvZk@Base 15 ++ _D2rt8lifetime11hasPostblitFNaNbIC8TypeInfoZb@Base 15 ++ _D2rt8lifetime11newCapacityFmmZ9multTableyG64m@Base 15 ++ _D2rt8lifetime11newCapacityFmmZm@Base 15 ++ _D2rt8lifetime12__ModuleInfoZ@Base 15 ++ _D2rt8lifetime12__doPostblitFPvmxC8TypeInfoZv@Base 15 ++ _D2rt8lifetime14collectHandlerPFC6ObjectZb@Base 15 ++ _D2rt8lifetime14finalize_arrayFPvmxC15TypeInfo_StructZv@Base 15 ++ _D2rt8lifetime15finalize_structFNbPvC15TypeInfo_StructZv@Base 15 ++ _D2rt8lifetime19_d_arraysetlengthiTUxC8TypeInfomPAvZ12doInitializeFNaNbNiPvQcxAvZv@Base 15 ++ _D2rt8lifetime9unqualifyFNaNbNiNkMNgC8TypeInfoZNgQn@Base 15 ++ _D2rt8monitor_10getMonitorFNaNbNiC6ObjectZPOSQBrQBr7Monitor@Base 15 ++ _D2rt8monitor_10setMonitorFNaNbNiC6ObjectPOSQBqQBq7MonitorZv@Base 15 ++ _D2rt8monitor_11__moduleRefZ@Base 15 ++ _D2rt8monitor_11unlockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 ++ _D2rt8monitor_12__ModuleInfoZ@Base 15 ++ _D2rt8monitor_12destroyMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 ++ _D2rt8monitor_12disposeEventFNbPSQBfQBf7MonitorC6ObjectZv@Base 15 ++ _D2rt8monitor_13deleteMonitorFNbNiPSQBiQBi7MonitorZv@Base 15 ++ _D2rt8monitor_13ensureMonitorFNbC6ObjectZPOSQBqQBq7Monitor@Base 15 ++ _D2rt8monitor_4gmtxS4core3sys5posixQk5types15pthread_mutex_t@Base 15 ++ _D2rt8monitor_5gattrS4core3sys5posixQk5types19pthread_mutexattr_t@Base 15 ++ _D2rt8monitor_7Monitor11__xopEqualsMxFKxSQBnQBnQBhZb@Base 15 ++ _D2rt8monitor_7Monitor6__initZ@Base 15 ++ _D2rt8monitor_7Monitor9__xtoHashFNbNeKxSQBmQBmQBgZm@Base 15 ++ _D2rt8monitor_7monitorFNaNbNcNdNiNkMC6ObjectZOPSQBuQBu7Monitor@Base 15 ++ _D2rt8monitor_9initMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 ++ _D2rt8monitor_9lockMutexFNbNiPS4core3sys5posixQk5types15pthread_mutex_tZv@Base 15 ++ _D2rt8sections11__moduleRefZ@Base 15 ++ _D2rt8sections12__ModuleInfoZ@Base 15 ++ _D2rt8sections20scanDataSegPreciselyFNbNiZ3errC6object5Error@Base 15 ++ _D2rt8sections20scanDataSegPreciselyFNbNiZb@Base 15 ++ _D2rt9critical_11__moduleRefZ@Base 15 ++ _D2rt9critical_11ensureMutexFNbPOSQBgQBg18D_CRITICAL_SECTIONZv@Base 15 ++ _D2rt9critical_12__ModuleInfoZ@Base 15 ++ _D2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 ++ _D2rt9critical_3gcsOSQtQs18D_CRITICAL_SECTION@Base 15 ++ _D2rt9critical_4headOPSQvQu18D_CRITICAL_SECTION@Base 15 ++ _D2rt9profilegc10accumulateFNbNiAyakQeQgmZv@Base 15 ++ _D2rt9profilegc11__moduleRefZ@Base 15 ++ _D2rt9profilegc11logfilenameAya@Base 15 ++ _D2rt9profilegc12__ModuleInfoZ@Base 15 ++ _D2rt9profilegc15globalNewCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQDcQDc5EntryZQBb@Base 15 ++ _D2rt9profilegc18_staticDtor_L93_C1FZ11__critsec20OPv@Base 15.2 ++ _D2rt9profilegc18_staticDtor_L93_C1FZv@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result11__xopEqualsMxFKxSQCqQCqQCjFZQBlZb@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9__xtoHashFNbNeKxSQCpQCpQCiFZQBkZm@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result9qsort_cmpUNbNiMxPvMxQeZi@Base 15.2 ++ _D2rt9profilegc25_sharedStaticDtor_L115_C1FZv@Base 15.2 ++ _D2rt9profilegc5Entry6__initZ@Base 15 ++ _D2rt9profilegc6bufferAa@Base 15 ++ _D2rt9profilegc9newCountsS4core8internal9container7hashtab__T7HashTabTAxaTSQCvQCv5EntryZQBb@Base 15 ++ _D30TypeInfo_AC3std6socket7Address6__initZ@Base 15 ++ _D30TypeInfo_AxS3std4file8DirEntry6__initZ@Base 15 ++ _D30TypeInfo_AxS3std6getopt6Option6__initZ@Base 15 ++ _D30TypeInfo_E3etc1c4curl8CurlAuth6__initZ@Base 15 ++ _D30TypeInfo_E3etc1c4curl8CurlForm6__initZ@Base 15 ++ _D30TypeInfo_E3etc1c4curl8CurlInfo6__initZ@Base 15 ++ _D30TypeInfo_E3etc1c4curl8CurlPoll6__initZ@Base 15 ++ _D30TypeInfo_E3etc1c4curl8CurlSeek6__initZ@Base 15 ++ _D30TypeInfo_E3std6socket8socket_t6__initZ@Base 15 ++ _D30TypeInfo_E3std6traits8Variadic6__initZ@Base 15 ++ _D30TypeInfo_E3std8compiler6Vendor6__initZ@Base 15 ++ _D30TypeInfo_E4core4time9ClockType6__initZ@Base 15 ++ _D30TypeInfo_S2rt8monitor_7Monitor6__initZ@Base 15 ++ _D30TypeInfo_S3etc1c4zlib8z_stream6__initZ@Base 15 ++ _D30TypeInfo_S3std5stdio4File4Impl6__initZ@Base 15 ++ _D30TypeInfo_S3std6format8NoOpSink6__initZ@Base 15 ++ _D30TypeInfo_S4core5bitop8BitRange6__initZ@Base 15 ++ _D30TypeInfo_xAS3std4file8DirEntry6__initZ@Base 15 ++ _D30TypeInfo_xAS3std6getopt6Option6__initZ@Base 15 ++ _D30TypeInfo_xS2rt9profilegc5Entry6__initZ@Base 15 ++ _D30TypeInfo_xS3std4json9JSONValue6__initZ@Base 15 ++ _D30TypeInfo_yS6object10ModuleInfo6__initZ@Base 15 ++ _D315TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 ++ _D315TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 ++ _D316TypeInfo_S3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__initZ@Base 15 ++ _D31TypeInfo_C3gcc3deh11CxxTypeInfo6__initZ@Base 15 ++ _D31TypeInfo_E3etc1c4curl9CurlError6__initZ@Base 15 ++ _D31TypeInfo_E3etc1c4curl9CurlIoCmd6__initZ@Base 15 ++ _D31TypeInfo_E3etc1c4curl9CurlPause6__initZ@Base 15 ++ _D31TypeInfo_E3etc1c4curl9CurlProto6__initZ@Base 15 ++ _D31TypeInfo_E3etc1c4curl9CurlProxy6__initZ@Base 15 ++ _D31TypeInfo_E3etc1c4curl9CurlRedir6__initZ@Base 15 ++ _D31TypeInfo_E3std3uni11GraphemeRet6__initZ@Base 15 ++ _D31TypeInfo_E3std7process8Redirect6__initZ@Base 15 ++ _D31TypeInfo_NgS3std4json9JSONValue6__initZ@Base 15.2 ++ _D31TypeInfo_PyS6object10ModuleInfo6__initZ@Base 15 ++ _D31TypeInfo_S3etc1c4zlib9gz_header6__initZ@Base 15 ++ _D31TypeInfo_S3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D31TypeInfo_S3std10checkedint4Warn6__initZ@Base 15 ++ _D31TypeInfo_S3std11concurrency3Tid6__initZ@Base 15 ++ _D31TypeInfo_S3std3net4curl7CurlAPI6__initZ@Base 15 ++ _D31TypeInfo_S3std8typecons7Ternary6__initZ@Base 15 ++ _D31TypeInfo_S4core5cpuid9CacheInfo6__initZ@Base 15 ++ _D31TypeInfo_S4core6memory2GC5Stats6__initZ@Base 15 ++ _D31TypeInfo_S4core6memory8BlkInfo_6__initZ@Base 15 ++ _D31TypeInfo_S4core7runtime7Runtime6__initZ@Base 15 ++ _D31TypeInfo_S4core8demangle6Buffer6__initZ@Base 15 ++ _D31TypeInfo_xS3std5stdio4File4Impl6__initZ@Base 15 ++ _D31TypeInfo_yPS6object10ModuleInfo6__initZ@Base 15 ++ _D32TypeInfo_AS3std11concurrency3Tid6__initZ@Base 15 ++ _D32TypeInfo_AyPS6object10ModuleInfo6__initZ@Base 15 ++ _D32TypeInfo_C6object6Object7Monitor6__initZ@Base 15 ++ _D32TypeInfo_E3std3uni12TransformRes6__initZ@Base 15 ++ _D32TypeInfo_E3std4json11JSONOptions6__initZ@Base 15 ++ _D32TypeInfo_E3std4uuid4UUID7Variant6__initZ@Base 15 ++ _D32TypeInfo_E3std4uuid4UUID7Version6__initZ@Base 15 ++ _D32TypeInfo_E3std5ascii10LetterCase6__initZ@Base 15 ++ _D32TypeInfo_PxS3std5stdio4File4Impl6__initZ@Base 15 ++ _D32TypeInfo_S2rt5minfo11ModuleGroup6__initZ@Base 15 ++ _D32TypeInfo_S3std10checkedint5Abort6__initZ@Base 15 ++ _D32TypeInfo_S3std10checkedint5Throw6__initZ@Base 15 ++ _D32TypeInfo_S3std3net4curl3FTP4Impl6__initZ@Base 15 ++ _D32TypeInfo_S3std3uni7unicode5block6__initZ@Base 15 ++ _D32TypeInfo_S3std3uni__T5StackTkZQj6__initZ@Base 15 ++ _D32TypeInfo_S3std5stdio10ChunksImpl6__initZ@Base 15 ++ _D32TypeInfo_S3std5stdio10LockedFile6__initZ@Base 15 ++ _D32TypeInfo_S3std8bitmanip8BitArray6__initZ@Base 15 ++ _D32TypeInfo_S4core2gc6config6Config6__initZ@Base 15 ++ _D32TypeInfo_S4core4stdc4fenv6fenv_t6__initZ@Base 15 ++ _D32TypeInfo_S4core4sync5event5Event6__initZ@Base 15 ++ _D32TypeInfo_S4core8demangle7NoHooks6__initZ@Base 15 ++ _D32TypeInfo_S6object13__va_list_tag6__initZ@Base 15 ++ _D32TypeInfo_xE3std7process8Redirect6__initZ@Base 15 ++ _D32TypeInfo_xPS3std5stdio4File4Impl6__initZ@Base 15 ++ _D32TypeInfo_xPyS6object10ModuleInfo6__initZ@Base 15 ++ _D32TypeInfo_xS3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D32TypeInfo_xS3std11concurrency3Tid6__initZ@Base 15 ++ _D32TypeInfo_xS4core8demangle6Buffer6__initZ@Base 15 ++ _D32TypeInfo_yS4core5cpuid9CacheInfo6__initZ@Base 15 ++ _D33TypeInfo_AxPyS6object10ModuleInfo6__initZ@Base 15 ++ _D33TypeInfo_E3etc1c4curl10CurlFtpSSL6__initZ@Base 15 ++ _D33TypeInfo_E3etc1c4curl10CurlGlobal6__initZ@Base 15 ++ _D33TypeInfo_E3etc1c4curl10CurlKHStat6__initZ@Base 15 ++ _D33TypeInfo_E3etc1c4curl10CurlKHType6__initZ@Base 15 ++ _D33TypeInfo_E3etc1c4curl10CurlOption6__initZ@Base 15 ++ _D33TypeInfo_E3etc1c4curl10CurlUseSSL6__initZ@Base 15 ++ _D33TypeInfo_E3std3uni13GraphemeState6__initZ@Base 15 ++ _D33TypeInfo_E3std4zlib12HeaderFormat6__initZ@Base 15 ++ _D33TypeInfo_E3std5ascii11ControlChar6__initZ@Base 15 ++ _D33TypeInfo_E3std6mmfile6MmFile4Mode6__initZ@Base 15 ++ _D33TypeInfo_E3std6socket10SocketType6__initZ@Base 15 ++ _D33TypeInfo_E3std8encoding9AsciiChar6__initZ@Base 15 ++ _D33TypeInfo_E4core6memory2GC7BlkAttr6__initZ@Base 15 ++ _D33TypeInfo_E4core8demangle8TypeCtor6__initZ@Base 15 ++ _D33TypeInfo_E4core9attribute7mustuse6__initZ@Base 15 ++ _D33TypeInfo_HAyaS3std4json9JSONValue6__initZ@Base 15 ++ _D33TypeInfo_HS3std11concurrency3Tidb6__initZ@Base 15.2 ++ _D33TypeInfo_OC4core4sync5mutex5Mutex6__initZ@Base 15 ++ _D33TypeInfo_PxS3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D33TypeInfo_S3etc1c4curl10curl_forms6__initZ@Base 15 ++ _D33TypeInfo_S3etc1c4curl10curl_khkey6__initZ@Base 15 ++ _D33TypeInfo_S3etc1c4curl10curl_slist6__initZ@Base 15 ++ _D33TypeInfo_S3etc1c7sqlite38fts5_api6__initZ@Base 15.2 ++ _D33TypeInfo_S3std3net4curl4HTTP4Impl6__initZ@Base 15 ++ _D33TypeInfo_S3std3net4curl4SMTP4Impl6__initZ@Base 15 ++ _D33TypeInfo_S3std3uni13ReallocPolicy6__initZ@Base 15 ++ _D33TypeInfo_S3std3uni7unicode6script6__initZ@Base 15 ++ _D33TypeInfo_S3std8datetime4date4Date6__initZ@Base 15 ++ _D33TypeInfo_S4core2gc8registry5Entry6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf32_Lib6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf32_Rel6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf32_Sym6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf64_Lib6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf64_Rel6__initZ@Base 15 ++ _D33TypeInfo_S4core3sys3elf9Elf64_Sym6__initZ@Base 15 ++ _D33TypeInfo_S4core4stdc5stdio6fpos_t6__initZ@Base 15 ++ _D33TypeInfo_S4core4stdc6locale5lconv6__initZ@Base 15 ++ _D33TypeInfo_S4core4stdc6stdlib5div_t6__initZ@Base 15 ++ _D33TypeInfo_S4core8demangle8BufSlice6__initZ@Base 15 ++ _D33TypeInfo_S6object14OffsetTypeInfo6__initZ@Base 15 ++ _D33TypeInfo_xAPyS6object10ModuleInfo6__initZ@Base 15 ++ _D33TypeInfo_xAyPS6object10ModuleInfo6__initZ@Base 15 ++ _D33TypeInfo_xC6object6Object7Monitor6__initZ@Base 15 ++ _D33TypeInfo_xPS3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D33TypeInfo_xS2rt5minfo11ModuleGroup6__initZ@Base 15 ++ _D33TypeInfo_xS3std3net4curl3FTP4Impl6__initZ@Base 15 ++ _D33TypeInfo_xS3std3uni__T5StackTkZQj6__initZ@Base 15 ++ _D33TypeInfo_xS4core4sync5event5Event6__initZ@Base 15 ++ _D33TypeInfo_xS4core8demangle7NoHooks6__initZ@Base 15 ++ _D34TypeInfo_AC3std3zip13ArchiveMember6__initZ@Base 15 ++ _D34TypeInfo_AE3std8encoding9AsciiChar6__initZ@Base 15 ++ _D34TypeInfo_C4core2gc11gcinterface2GC6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlCSelect6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlFormAdd6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlFtpAuth6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlIoError6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlKHMatch6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlMOption6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlRtspReq6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlSeekPos6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlShError6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlSshAuth6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlTlsAuth6__initZ@Base 15 ++ _D34TypeInfo_E3etc1c4curl11CurlVersion6__initZ@Base 15 ++ _D34TypeInfo_E3gcc6config11ThreadModel6__initZ@Base 15 ++ _D34TypeInfo_E3std4path13CaseSensitive6__initZ@Base 15 ++ _D34TypeInfo_E3std5range12SearchPolicy6__initZ@Base 15 ++ _D34TypeInfo_E3std6socket11SocketFlags6__initZ@Base 15 ++ _D34TypeInfo_E3std8datetime4date5Month6__initZ@Base 15 ++ _D34TypeInfo_S3std10checkedint7WithNaN6__initZ@Base 15 ++ _D34TypeInfo_S3std3uni14MatcherConcept6__initZ@Base 15 ++ _D34TypeInfo_S3std6socket11AddressInfo6__initZ@Base 15 ++ _D34TypeInfo_S4core3sys5posix6direntQh6__initZ@Base 15 ++ _D34TypeInfo_S4core4stdc6stdlib6ldiv_t6__initZ@Base 15 ++ _D34TypeInfo_S4core4time12TickDuration6__initZ@Base 15 ++ _D34TypeInfo_S4core5cpuid11CpuFeatures6__initZ@Base 15 ++ _D34TypeInfo_xC3std3zip13ArchiveMember6__initZ@Base 15 ++ _D34TypeInfo_xE3std6socket10SocketType6__initZ@Base 15 ++ _D34TypeInfo_xS3etc1c4curl10curl_slist6__initZ@Base 15 ++ _D34TypeInfo_xS3std3net4curl4HTTP4Impl6__initZ@Base 15 ++ _D35TypeInfo_AC4core6thread5fiber5Fiber6__initZ@Base 15 ++ _D35TypeInfo_AS3std6socket11AddressInfo6__initZ@Base 15 ++ _D35TypeInfo_AxC3std3zip13ArchiveMember6__initZ@Base 15 ++ _D35TypeInfo_C3std8typecons10Structural6__initZ@Base 15 ++ _D35TypeInfo_E3etc1c4curl12CurlFileType6__initZ@Base 15 ++ _D35TypeInfo_E3etc1c4curl12CurlLockData6__initZ@Base 15 ++ _D35TypeInfo_E3etc1c4curl12CurlReadFunc6__initZ@Base 15 ++ _D35TypeInfo_E3etc1c4curl12CurlShOption6__initZ@Base 15 ++ _D35TypeInfo_E3etc1c4curl12CurlSockType6__initZ@Base 15 ++ _D35TypeInfo_E3etc1c4curl12CurlTimeCond6__initZ@Base 15 ++ _D35TypeInfo_E3std11concurrency7MsgType6__initZ@Base 15 ++ _D35TypeInfo_E3std3net4curl4HTTP6Method6__initZ@Base 15 ++ _D35TypeInfo_E3std5regex8internal2ir2IR6__initZ@Base 15 ++ _D35TypeInfo_E3std5stdio13StdFileHandle6__initZ@Base 15 ++ _D35TypeInfo_E3std6logger4core8LogLevel6__initZ@Base 15 ++ _D35TypeInfo_E3std6socket12ProtocolType6__initZ@Base 15 ++ _D35TypeInfo_E3std6socket12SocketOption6__initZ@Base 15 ++ _D35TypeInfo_E3std7process6Config5Flags6__initZ@Base 15 ++ _D35TypeInfo_E3std8encoding10Latin1Char6__initZ@Base 15 ++ _D35TypeInfo_E3std8encoding10Latin2Char6__initZ@Base 15 ++ _D35TypeInfo_E4core6atomic11MemoryOrder6__initZ@Base 15 ++ _D35TypeInfo_HAyaS3std11concurrency3Tid6__initZ@Base 15 ++ _D35TypeInfo_PxS3etc1c4curl10curl_slist6__initZ@Base 15 ++ _D35TypeInfo_S3etc1c4odbc8sqltypes4GUID6__initZ@Base 15.2 ++ _D35TypeInfo_S3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D35TypeInfo_S3std10checkedint8Saturate6__initZ@Base 15 ++ _D35TypeInfo_S3std11concurrency7Message6__initZ@Base 15 ++ _D35TypeInfo_S3std3net4curl7CurlAPI3API6__initZ@Base 15 ++ _D35TypeInfo_S3std4json9JSONValue5Store6__initZ@Base 15 ++ _D35TypeInfo_S3std5range__T6RepeatTaZQk6__initZ@Base 15 ++ _D35TypeInfo_S3std6getopt12GetoptResult6__initZ@Base 15 ++ _D35TypeInfo_S3std6logger4core8MsgRange6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Move6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Phdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Rela6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf32_Shdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Move6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Phdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Rela6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys3elf10Elf64_Shdr6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys5linux7ifaddrsQi6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys5posix3aio5aiocb6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys5posix3grp5group6__initZ@Base 15 ++ _D35TypeInfo_S4core3sys5posix7termiosQi6__initZ@Base 15 ++ _D35TypeInfo_S4core4stdc5stdio8_IO_FILE6__initZ@Base 15 ++ _D35TypeInfo_S4core4stdc6stdlib7lldiv_t6__initZ@Base 15 ++ _D35TypeInfo_S4core8internal5newaa4Impl6__initZ@Base 15 ++ _D35TypeInfo_S4core9attribute9gnuAbiTag6__initZ@Base 15 ++ _D35TypeInfo_xAC3std3zip13ArchiveMember6__initZ@Base 15 ++ _D35TypeInfo_xPS3etc1c4curl10curl_slist6__initZ@Base 15 ++ _D35TypeInfo_xS3std6socket11AddressInfo6__initZ@Base 15 ++ _D36TypeInfo_AE3std8encoding10Latin1Char6__initZ@Base 15 ++ _D36TypeInfo_AE3std8encoding10Latin2Char6__initZ@Base 15 ++ _D36TypeInfo_AxS3std6socket11AddressInfo6__initZ@Base 15 ++ _D36TypeInfo_E3etc1c4curl13CurlFtpMethod6__initZ@Base 15 ++ _D36TypeInfo_E3etc1c4curl13CurlIpResolve6__initZ@Base 15 ++ _D36TypeInfo_E3std3net7isemail9EmailPart6__initZ@Base 15 ++ _D36TypeInfo_E3std5range14StoppingPolicy6__initZ@Base 15 ++ _D36TypeInfo_E3std6socket13AddressFamily6__initZ@Base 15 ++ _D36TypeInfo_E4core4stdc6config8__c_long6__initZ@Base 15 ++ _D36TypeInfo_FZC4core2gc11gcinterface2GC6__initZ@Base 15 ++ _D36TypeInfo_HS3std11concurrency3TidAAya6__initZ@Base 15 ++ _D36TypeInfo_S2rt6dmain214UnitTestResult6__initZ@Base 15 ++ _D36TypeInfo_S3etc1c4curl13curl_certinfo6__initZ@Base 15 ++ _D36TypeInfo_S3etc1c4curl13curl_fileinfo6__initZ@Base 15 ++ _D36TypeInfo_S3etc1c4curl13curl_httppost6__initZ@Base 15 ++ _D36TypeInfo_S3etc1c4curl13curl_sockaddr6__initZ@Base 15 ++ _D36TypeInfo_S3gcc9backtrace10SymbolInfo6__initZ@Base 15 ++ _D36TypeInfo_S3std4file15DirIteratorImpl6__initZ@Base 15 ++ _D36TypeInfo_S3std5range__T6ChunksTAhZQl6__initZ@Base 15 ++ _D36TypeInfo_S3std5stdio14ReadlnAppender6__initZ@Base 15 ++ _D36TypeInfo_S3std6getopt13configuration6__initZ@Base 15 ++ _D36TypeInfo_S3std7process12ProcessPipes6__initZ@Base 15 ++ _D36TypeInfo_S4core2gc11gcinterface4Root6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys3elf11Elf32_gptab6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys3elf11Elf_Options6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys5linux2fs7fsxattr6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys5posix3pwd6passwd6__initZ@Base 15 ++ _D36TypeInfo_S4core3sys5posix6dirent3DIR6__initZ@Base 15 ++ _D36TypeInfo_xAS3std6socket11AddressInfo6__initZ@Base 15 ++ _D36TypeInfo_xE3std11concurrency7MsgType6__initZ@Base 15 ++ _D36TypeInfo_xE3std3net4curl4HTTP6Method6__initZ@Base 15 ++ _D36TypeInfo_xE3std6logger4core8LogLevel6__initZ@Base 15 ++ _D36TypeInfo_xE3std6socket12ProtocolType6__initZ@Base 15 ++ _D36TypeInfo_xS3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D36TypeInfo_xS3std11concurrency7Message6__initZ@Base 15 ++ _D375TypeInfo_S3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__initZ@Base 15 ++ _D37TypeInfo_C3std11concurrency9Scheduler6__initZ@Base 15 ++ _D37TypeInfo_C6object9Throwable9TraceInfo6__initZ@Base 15 ++ _D37TypeInfo_E3etc1c4curl14CurlLockAccess6__initZ@Base 15 ++ _D37TypeInfo_E3etc1c4curl14CurlSslVersion6__initZ@Base 15 ++ _D37TypeInfo_E3std3uni17NormalizationForm6__initZ@Base 15 ++ _D37TypeInfo_E3std3zip17CompressionMethod6__initZ@Base 15 ++ _D37TypeInfo_E3std4json16JSONFloatLiteral6__initZ@Base 15 ++ _D37TypeInfo_E3std4math9algebraic7PowType6__initZ@Base 15 ++ _D37TypeInfo_E3std6socket14SocketShutdown6__initZ@Base 15 ++ _D37TypeInfo_E3std7process13InternalError6__initZ@Base 15 ++ _D37TypeInfo_E3std8internal4test3uda4Attr6__initZ@Base 15 ++ _D37TypeInfo_E3std8typecons12TypeModifier6__initZ@Base 15 ++ _D37TypeInfo_E4core4stdc6config9__c_ulong6__initZ@Base 15 ++ _D37TypeInfo_E4core9attribute10standalone6__initZ@Base 15 ++ _D37TypeInfo_HAyaC3std3zip13ArchiveMember6__initZ@Base 15 ++ _D37TypeInfo_PFZC4core2gc11gcinterface2GC6__initZ@Base 15 ++ _D37TypeInfo_PxS3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D37TypeInfo_S3etc1c7sqlite311sqlite3_vfs6__initZ@Base 15.2 ++ _D37TypeInfo_S3gcc8sections3elf9ThreadDSO6__initZ@Base 15 ++ _D37TypeInfo_S3gcc8sections3elf9tls_index6__initZ@Base 15 ++ _D37TypeInfo_S3std3net4curl12AutoProtocol6__initZ@Base 15 ++ _D37TypeInfo_S3std3uni17CodepointInterval6__initZ@Base 15 ++ _D37TypeInfo_S3std8datetime4date8DateTime6__initZ@Base 15 ++ _D37TypeInfo_S3std9container5dlist6DRange6__initZ@Base 15 ++ _D37TypeInfo_S4core2gc11gcinterface5Range6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys3elf12Elf32_Verdef6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys3elf12Elf64_Verdef6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posix3aio7aiocb646__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posix4poll6pollfd6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posix5fcntl5flock6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posixQk3uio5iovec6__initZ@Base 15 ++ _D37TypeInfo_S4core3sys5posixQk7utsnameQi6__initZ@Base 15 ++ _D37TypeInfo_S4core4stdc6wchar_9mbstate_t6__initZ@Base 15 ++ _D37TypeInfo_S4core6stdcpp4new_9nothrow_t6__initZ@Base 15 ++ _D37TypeInfo_S4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D37TypeInfo_xE3std6socket13AddressFamily6__initZ@Base 15 ++ _D37TypeInfo_xPS3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D37TypeInfo_xS3std4file15DirIteratorImpl6__initZ@Base 15 ++ _D37TypeInfo_xS4core3sys5posix6dirent3DIR6__initZ@Base 15 ++ _D38TypeInfo_AS3std3uni17CodepointInterval6__initZ@Base 15 ++ _D38TypeInfo_E3etc1c4curl15CurlClosePolicy6__initZ@Base 15 ++ _D38TypeInfo_E3etc1c4curl15CurlFnMAtchFunc6__initZ@Base 15 ++ _D38TypeInfo_E3etc1c4curl15CurlHttpVersion6__initZ@Base 15 ++ _D38TypeInfo_E3etc1c4curl15CurlNetRcOption6__initZ@Base 15 ++ _D38TypeInfo_E3std3net7isemail10AsciiToken6__initZ@Base 15 ++ _D38TypeInfo_E3std4math6traits10RealFormat6__initZ@Base 15 ++ _D38TypeInfo_E3std5stdio4File11Orientation6__initZ@Base 15 ++ _D38TypeInfo_E3std8datetime4date9DayOfWeek6__initZ@Base 15 ++ _D38TypeInfo_PxS4core3sys5posix6dirent3DIR6__initZ@Base 15 ++ _D38TypeInfo_S3etc1c7sqlite312sqlite3_file6__initZ@Base 15.2 ++ _D38TypeInfo_S3etc1c7sqlite312sqlite3_vtab6__initZ@Base 15.2 ++ _D38TypeInfo_S3gcc3deh18CxaExceptionHeader6__initZ@Base 15 ++ _D38TypeInfo_S3std3zip10ZipArchive7Segment6__initZ@Base 15 ++ _D38TypeInfo_S3std4math8hardware9IeeeFlags6__initZ@Base 15 ++ _D38TypeInfo_S3std5stdio4File11ByChunkImpl6__initZ@Base 15 ++ _D38TypeInfo_S3std6digest6ripemd9RIPEMD1606__initZ@Base 15 ++ _D38TypeInfo_S3std7complex__T7ComplexTeZQl6__initZ@Base 15 ++ _D38TypeInfo_S3std7numeric__T6StrideTAfZQl6__initZ@Base 15 ++ _D38TypeInfo_S3std8datetime4date9TimeOfDay6__initZ@Base 15 ++ _D38TypeInfo_S4core2gc6config11PrettyBytes6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf32_Verneed6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys3elf13Elf64_Verneed6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5linux4link7r_debug6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5posix4stdc4time2tm6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5posix5netdb6netent6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5posix6locale5lconv6__initZ@Base 15 ++ _D38TypeInfo_S4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 ++ _D38TypeInfo_S4core8internal5newaa7AAShell6__initZ@Base 15 ++ _D38TypeInfo_S4core8internal7convert5Float6__initZ@Base 15 ++ _D38TypeInfo_xPFZC4core2gc11gcinterface2GC6__initZ@Base 15 ++ _D38TypeInfo_xPS4core3sys5posix6dirent3DIR6__initZ@Base 15 ++ _D38TypeInfo_xS3std3uni17CodepointInterval6__initZ@Base 15 ++ _D38TypeInfo_xS4core2gc11gcinterface5Range6__initZ@Base 15 ++ _D38TypeInfo_xS4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D39TypeInfo_AC4core6thread8osthread6Thread6__initZ@Base 15 ++ _D39TypeInfo_AS3std3zip10ZipArchive7Segment6__initZ@Base 15 ++ _D39TypeInfo_AxS3std3uni17CodepointInterval6__initZ@Base 15 ++ _D39TypeInfo_AxS4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D39TypeInfo_E3etc1c4curl16CurlCallbackInfo6__initZ@Base 15 ++ _D39TypeInfo_E3etc1c4curl16CurlChunkBgnFunc6__initZ@Base 15 ++ _D39TypeInfo_E3etc1c4curl16CurlChunkEndFunc6__initZ@Base 15 ++ _D39TypeInfo_E3std11concurrency10OnCrowding6__initZ@Base 15 ++ _D39TypeInfo_E3std11parallelism10TaskStatus6__initZ@Base 15 ++ _D39TypeInfo_E3std5range17TransverseOptions6__initZ@Base 15 ++ _D39TypeInfo_E3std6socket16AddressInfoFlags6__initZ@Base 15 ++ _D39TypeInfo_S3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 ++ _D39TypeInfo_S3gcc9backtrace13SymbolOrError6__initZ@Base 15 ++ _D39TypeInfo_S3std11concurrency10ThreadInfo6__initZ@Base 15 ++ _D39TypeInfo_S3std3net7isemail11EmailStatus6__initZ@Base 15 ++ _D39TypeInfo_S3std5array__T8AppenderTAxaZQo6__initZ@Base 15 ++ _D39TypeInfo_S3std5array__T8AppenderTAyaZQo6__initZ@Base 15 ++ _D39TypeInfo_S3std5array__T8AppenderTAyuZQo6__initZ@Base 15 ++ _D39TypeInfo_S3std5array__T8AppenderTAywZQo6__initZ@Base 15 ++ _D39TypeInfo_S3std5array__T8AppenderTyAaZQo6__initZ@Base 15 ++ _D39TypeInfo_S3std5stdio17LockingTextReader6__initZ@Base 15 ++ _D39TypeInfo_S3std7variant15FakeComplexReal6__initZ@Base 15 ++ _D39TypeInfo_S3std8bitmanip__T7BitsSetTmZQl6__initZ@Base 15 ++ _D39TypeInfo_S3std8datetime7systime7SysTime6__initZ@Base 15 ++ _D39TypeInfo_S3std8typecons__T5TupleTbTiZQl6__initZ@Base 15 ++ _D39TypeInfo_S3std8typecons__T5TupleTbTkZQl6__initZ@Base 15 ++ _D39TypeInfo_S3std8typecons__T5TupleTkTmZQl6__initZ@Base 15 ++ _D39TypeInfo_S3std8typecons__T5TupleTmTmZQl6__initZ@Base 15 ++ _D39TypeInfo_S3std8typecons__T5TupleTuTaZQl6__initZ@Base 15 ++ _D39TypeInfo_S3std9container5dlist8BaseNode6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5linux4link8link_map6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix4time8timespec6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix5netdb7hostent6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix5netdb7servent6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix5utime7utimbuf6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posix6signal6sigval6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posixQk3msg7msginfo6__initZ@Base 15 ++ _D39TypeInfo_S4core3sys5posixQk4stat6stat_t6__initZ@Base 15 ++ _D39TypeInfo_S4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 ++ _D39TypeInfo_S4core6memory2GC12ProfileStats6__initZ@Base 15 ++ _D39TypeInfo_S4core6thread7context8Callable6__initZ@Base 15 ++ _D39TypeInfo_S4core7runtime14UnitTestResult6__initZ@Base 15 ++ _D39TypeInfo_S4core8internal2gc4bits6GCBits6__initZ@Base 15 ++ _D39TypeInfo_xAS3std3uni17CodepointInterval6__initZ@Base 15 ++ _D39TypeInfo_xAS4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D3etc1c4curl10CurlGlobal6__initZ@Base 15 ++ _D3etc1c4curl10CurlOption6__initZ@Base 15 ++ _D3etc1c4curl10curl_forms6__initZ@Base 15 ++ _D3etc1c4curl10curl_khkey6__initZ@Base 15 ++ _D3etc1c4curl10curl_slist6__initZ@Base 15 ++ _D3etc1c4curl11CurlCSelect6__initZ@Base 15 ++ _D3etc1c4curl11CurlMOption6__initZ@Base 15 ++ _D3etc1c4curl11CurlSshAuth6__initZ@Base 15 ++ _D3etc1c4curl11CurlVersion6__initZ@Base 15 ++ _D3etc1c4curl11__moduleRefZ@Base 15 ++ _D3etc1c4curl12CurlReadFunc6__initZ@Base 15 ++ _D3etc1c4curl12__ModuleInfoZ@Base 15 ++ _D3etc1c4curl13curl_certinfo6__initZ@Base 15 ++ _D3etc1c4curl13curl_fileinfo6__initZ@Base 15 ++ _D3etc1c4curl13curl_httppost6__initZ@Base 15 ++ _D3etc1c4curl13curl_sockaddr6__initZ@Base 15 ++ _D3etc1c4curl18CurlFInfoFlagKnown6__initZ@Base 15 ++ _D3etc1c4curl3_N26__initZ@Base 15 ++ _D3etc1c4curl4_N286__initZ@Base 15 ++ _D3etc1c4curl4_N316__initZ@Base 15 ++ _D3etc1c4curl5CurlM6__initZ@Base 15 ++ _D3etc1c4curl7CURLMsg6__initZ@Base 15 ++ _D3etc1c4curl9CurlPause6__initZ@Base 15 ++ _D3etc1c4curl9CurlProto6__initZ@Base 15 ++ _D3etc1c4odbc11__moduleRefZ@Base 15.2 ++ _D3etc1c4odbc12__ModuleInfoZ@Base 15.2 ++ _D3etc1c4odbc3sql11__moduleRefZ@Base 15.2 ++ _D3etc1c4odbc3sql12__ModuleInfoZ@Base 15.2 ++ _D3etc1c4odbc6odbc3210tagSQLGUID6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3211SQLINTERVAL6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3211__moduleRefZ@Base 15.2 ++ _D3etc1c4odbc6odbc3212__ModuleInfoZ@Base 15.2 ++ _D3etc1c4odbc6odbc3214tagDATE_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3214tagTIME_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3217tagSQL_DAY_SECOND6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3217tagSQL_YEAR_MONTH6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3219tagTIMESTAMP_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3221tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3228tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc3233tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6410tagSQLGUID6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6411SQLINTERVAL6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6411__moduleRefZ@Base 15.2 ++ _D3etc1c4odbc6odbc6412__ModuleInfoZ@Base 15.2 ++ _D3etc1c4odbc6odbc6414tagDATE_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6414tagTIME_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6417tagSQL_DAY_SECOND6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6417tagSQL_YEAR_MONTH6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6419tagTIMESTAMP_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6421tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6428tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6odbc6433tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc6sqlext11__moduleRefZ@Base 15.2 ++ _D3etc1c4odbc6sqlext12__ModuleInfoZ@Base 15.2 ++ _D3etc1c4odbc6sqlext15SQL_SPEC_STRINGxAa@Base 15.2 ++ _D3etc1c4odbc6sqlext17SQL_ODBC_KEYWORDSxAa@Base 15.2 ++ _D3etc1c4odbc8sqltypes11DATE_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes11SQLINTERVAL6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes11TIME_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes11__moduleRefZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes12__ModuleInfoZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes16TIMESTAMP_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes18SQL_NUMERIC_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT7_intval6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes21SQL_DAY_SECOND_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes21SQL_YEAR_MONTH_STRUCT6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqltypes4GUID6__initZ@Base 15.2 ++ _D3etc1c4odbc8sqlucode11__moduleRefZ@Base 15.2 ++ _D3etc1c4odbc8sqlucode12__ModuleInfoZ@Base 15.2 ++ _D3etc1c4zlib11ZLIB_VERNUMyi@Base 15 ++ _D3etc1c4zlib11__moduleRefZ@Base 15 ++ _D3etc1c4zlib12ZLIB_VERSIONyAa@Base 15 ++ _D3etc1c4zlib12__ModuleInfoZ@Base 15 ++ _D3etc1c4zlib6Z_NULLyPv@Base 15 ++ _D3etc1c4zlib8z_stream6__initZ@Base 15 ++ _D3etc1c4zlib9gz_header6__initZ@Base 15 ++ _D3etc1c7sqlite311__moduleRefZ@Base 15.2 ++ _D3etc1c7sqlite311sqlite3_vfs6__initZ@Base 15.2 ++ _D3etc1c7sqlite312__ModuleInfoZ@Base 15.2 ++ _D3etc1c7sqlite312sqlite3_file6__initZ@Base 15.2 ++ _D3etc1c7sqlite312sqlite3_vtab6__initZ@Base 15.2 ++ _D3etc1c7sqlite314Fts5PhraseIter6__initZ@Base 15.2 ++ _D3etc1c7sqlite314fts5_tokenizer6__initZ@Base 15.2 ++ _D3etc1c7sqlite314sqlite3_module6__initZ@Base 15.2 ++ _D3etc1c7sqlite316Fts5ExtensionApi6__initZ@Base 15.2 ++ _D3etc1c7sqlite316sqlite3_snapshot6__initZ@Base 15.2 ++ _D3etc1c7sqlite318sqlite3_index_info11__xopEqualsMxFKxSQCbQCaQCbQBwZb@Base 15.2 ++ _D3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 ++ _D3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 ++ _D3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 ++ _D3etc1c7sqlite318sqlite3_index_info6__initZ@Base 15.2 ++ _D3etc1c7sqlite318sqlite3_index_info9__xtoHashFNbNeKxSQCaQBzQCaQBvZm@Base 15.2 ++ _D3etc1c7sqlite318sqlite3_io_methods6__initZ@Base 15.2 ++ _D3etc1c7sqlite319sqlite3_mem_methods6__initZ@Base 15.2 ++ _D3etc1c7sqlite319sqlite3_pcache_page6__initZ@Base 15.2 ++ _D3etc1c7sqlite319sqlite3_vtab_cursor6__initZ@Base 15.2 ++ _D3etc1c7sqlite321sqlite3_mutex_methods6__initZ@Base 15.2 ++ _D3etc1c7sqlite322sqlite3_pcache_methods6__initZ@Base 15.2 ++ _D3etc1c7sqlite322sqlite3_rtree_geometry6__initZ@Base 15.2 ++ _D3etc1c7sqlite323sqlite3_pcache_methods26__initZ@Base 15.2 ++ _D3etc1c7sqlite324sqlite3_rtree_query_info11__xopEqualsMxFKxSQChQCgQChQCcZb@Base 15.2 ++ _D3etc1c7sqlite324sqlite3_rtree_query_info6__initZ@Base 15.2 ++ _D3etc1c7sqlite324sqlite3_rtree_query_info9__xtoHashFNbNeKxSQCgQCfQCgQCbZm@Base 15.2 ++ _D3etc1c7sqlite38fts5_api6__initZ@Base 15.2 ++ _D3etc8valgrindQj11__moduleRefZ@Base 15 ++ _D3etc8valgrindQj12__ModuleInfoZ@Base 15 ++ _D3gcc10attributes11__moduleRefZ@Base 15 ++ _D3gcc10attributes12__ModuleInfoZ@Base 15 ++ _D3gcc12libbacktrace11__moduleRefZ@Base 15 ++ _D3gcc12libbacktrace12__ModuleInfoZ@Base 15 ++ _D3gcc12libbacktrace15backtrace_state6__initZ@Base 15 ++ _D3gcc3deh11CxxTypeInfo11__InterfaceZ@Base 15 ++ _D3gcc3deh11__moduleRefZ@Base 15 ++ _D3gcc3deh12__ModuleInfoZ@Base 15 ++ _D3gcc3deh12getClassInfoFNiPSQBb6unwind7generic17_Unwind_ExceptionPxhZC14TypeInfo_Class@Base 15 ++ _D3gcc3deh15ExceptionHeader11__xopEqualsMxFKxSQBsQBrQBqZb@Base 15 ++ _D3gcc3deh15ExceptionHeader17toExceptionHeaderFNiPSQBx6unwind7generic17_Unwind_ExceptionZPSQDlQDkQDj@Base 15 ++ _D3gcc3deh15ExceptionHeader3popFNiZPSQBjQBiQBh@Base 15 ++ _D3gcc3deh15ExceptionHeader4freeFNiPSQBjQBiQBhZv@Base 15 ++ _D3gcc3deh15ExceptionHeader4pushMFNiZv@Base 15 ++ _D3gcc3deh15ExceptionHeader4saveFNiPSQBj6unwind7generic17_Unwind_ExceptionmiPxhmZv@Base 15 ++ _D3gcc3deh15ExceptionHeader5stackPSQBhQBgQBf@Base 15 ++ _D3gcc3deh15ExceptionHeader6__initZ@Base 15 ++ _D3gcc3deh15ExceptionHeader6createFNiC6object9ThrowableZPSQCeQCdQCc@Base 15 ++ _D3gcc3deh15ExceptionHeader7restoreFNiPSQBm6unwind7generic17_Unwind_ExceptionJiJPxhJmJmZv@Base 15 ++ _D3gcc3deh15ExceptionHeader9__xtoHashFNbNeKxSQBrQBqQBpZm@Base 15 ++ _D3gcc3deh15ExceptionHeader9ehstorageSQBkQBjQBi@Base 15 ++ _D3gcc3deh17__gdc_personalityFimPSQBg6unwind7generic17_Unwind_ExceptionPSQCtQBnQBj15_Unwind_ContextZk@Base 15 ++ _D3gcc3deh17actionTableLookupFiPSQBf6unwind7generic17_Unwind_ExceptionPxhQdmmQhhJbJbZi@Base 15 ++ _D3gcc3deh18CONTINUE_UNWINDINGFPSQBf6unwind7generic17_Unwind_ExceptionPSQCsQBnQBj15_Unwind_ContextZk@Base 15 ++ _D3gcc3deh18CxaExceptionHeader14getAdjustedPtrFPSQBv6unwind7generic17_Unwind_ExceptionCQDhQDg11CxxTypeInfoZPv@Base 15 ++ _D3gcc3deh18CxaExceptionHeader17toExceptionHeaderFNiPSQCa6unwind7generic17_Unwind_ExceptionZPSQDoQDnQDm@Base 15 ++ _D3gcc3deh18CxaExceptionHeader4saveFNiPSQBm6unwind7generic17_Unwind_ExceptionPvZv@Base 15 ++ _D3gcc3deh18CxaExceptionHeader6__initZ@Base 15 ++ _D3gcc3deh19isGdcExceptionClassFNimZb@Base 15 ++ _D3gcc3deh19isGxxExceptionClassFNimZb@Base 15 ++ _D3gcc3deh20isDependentExceptionFNimZb@Base 15 ++ _D3gcc3deh8_d_throwUC6object9ThrowableZ17exception_cleanupUNikPSQCk6unwind7generic17_Unwind_ExceptionZv@Base 15 ++ _D3gcc3deh8scanLSDAFPxhmiPSQz6unwind7generic17_Unwind_ExceptionPSQClQBnQBj15_Unwind_ContextmJmJiZk@Base 15 ++ _D3gcc3deh9terminateFNiAyakZ11terminatingb@Base 15 ++ _D3gcc3deh9terminateFNiAyakZv@Base 15 ++ _D3gcc4simd11__moduleRefZ@Base 15 ++ _D3gcc4simd12__ModuleInfoZ@Base 15 ++ _D3gcc6config11__moduleRefZ@Base 15 ++ _D3gcc6config12__ModuleInfoZ@Base 15 ++ _D3gcc6emutls11__moduleRefZ@Base 15 ++ _D3gcc6emutls12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind10arm_common11__moduleRefZ@Base 15 ++ _D3gcc6unwind10arm_common12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind11__moduleRefZ@Base 15 ++ _D3gcc6unwind12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind2pe11__moduleRefZ@Base 15 ++ _D3gcc6unwind2pe12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind2pe12read_sleb128FNiKPxhZl@Base 15 ++ _D3gcc6unwind2pe12read_uleb128FNiKPxhZm@Base 15 ++ _D3gcc6unwind2pe18read_encoded_valueFNiPSQBnQBm7generic15_Unwind_ContexthKPxhZm@Base 15 ++ _D3gcc6unwind2pe21base_of_encoded_valueFNihPSQBrQBq7generic15_Unwind_ContextZm@Base 15 ++ _D3gcc6unwind2pe21size_of_encoded_valueFNihZk@Base 15 ++ _D3gcc6unwind2pe28read_encoded_value_with_baseFNihmKPxhZm@Base 15 ++ _D3gcc6unwind3arm11__moduleRefZ@Base 15 ++ _D3gcc6unwind3arm12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind3c6x11__moduleRefZ@Base 15 ++ _D3gcc6unwind3c6x12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind7generic11__moduleRefZ@Base 15 ++ _D3gcc6unwind7generic12__ModuleInfoZ@Base 15 ++ _D3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 ++ _D3gcc7gthread11__moduleRefZ@Base 15 ++ _D3gcc7gthread12__ModuleInfoZ@Base 15 ++ _D3gcc7gthread18__gthread_active_pFNbNiZi@Base 15 ++ _D3gcc8builtins11__moduleRefZ@Base 15 ++ _D3gcc8builtins12__ModuleInfoZ@Base 15 ++ _D3gcc8builtins13__va_list_tag6__initZ@Base 15 ++ _D3gcc8sections11__moduleRefZ@Base 15 ++ _D3gcc8sections12__ModuleInfoZ@Base 15 ++ _D3gcc8sections3elf10_rtLoadingb@Base 15 ++ _D3gcc8sections3elf11__moduleRefZ@Base 15 ++ _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZ1xS4core8internal9container5array__T5ArrayTSQDgQDfQCz9ThreadDSOZQBc@Base 15 ++ _D3gcc8sections3elf11_loadedDSOsFNbNcNdNiZS4core8internal9container5array__T5ArrayTSQDeQDdQCx9ThreadDSOZQBc@Base 15 ++ _D3gcc8sections3elf11getTLSRangeFNbNimmZAv@Base 15 ++ _D3gcc8sections3elf12__ModuleInfoZ@Base 15 ++ _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZ1xS4core8internal9container7hashtab__T7HashTabTPvTPSQDpQDoQDi3DSOZQBc@Base 15 ++ _D3gcc8sections3elf12_handleToDSOFNbNcNdNiZS4core8internal9container7hashtab__T7HashTabTPvTPSQDnQDmQDg3DSOZQBc@Base 15 ++ _D3gcc8sections3elf12decThreadRefFPSQBiQBhQBb3DSObZv@Base 15 ++ _D3gcc8sections3elf12dsoForHandleFNbNiPvZPSQBpQBoQBi3DSO@Base 15 ++ _D3gcc8sections3elf12finiSectionsFNbNiZv@Base 15 ++ _D3gcc8sections3elf12incThreadRefFPSQBiQBhQBb3DSObZv@Base 15 ++ _D3gcc8sections3elf12initSectionsFNbNiZv@Base 15 ++ _D3gcc8sections3elf12scanSegmentsFNbNiKxS4core3sys5linux4link12dl_phdr_infoPSQCxQCwQCq3DSOZv@Base 15 ++ _D3gcc8sections3elf13findThreadDSOFNbNiPSQBnQBmQBg3DSOZPSQCdQCcQBw9ThreadDSO@Base 15 ++ _D3gcc8sections3elf13finiTLSRangesFNbNiPS4core8internal9container5array__T5ArrayTSQDcQDbQCv9ThreadDSOZQBcZv@Base 15 ++ _D3gcc8sections3elf13handleForAddrFNbNiPvZQd@Base 15 ++ _D3gcc8sections3elf13handleForNameFNbNixPaZPv@Base 15 ++ _D3gcc8sections3elf13initTLSRangesFNbNiZPS4core8internal9container5array__T5ArrayTSQDdQDcQCw9ThreadDSOZQBc@Base 15 ++ _D3gcc8sections3elf13runFinalizersFPSQBjQBiQBc3DSOZv@Base 15 ++ _D3gcc8sections3elf13scanTLSRangesFNbPS4core8internal9container5array__T5ArrayTSQDaQCzQCt9ThreadDSOZQBcMDFNbPvQcZvZv@Base 15 ++ _D3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 ++ _D3gcc8sections3elf15getDependenciesFNbNiKxS4core3sys5linux4link12dl_phdr_infoKSQBk8internal9container5array__T5ArrayTPSQEoQEnQEh3DSOZQxZv@Base 15 ++ _D3gcc8sections3elf15setDSOForHandleFNbNiPSQBpQBoQBi3DSOPvZv@Base 15 ++ _D3gcc8sections3elf16linkMapForHandleFNbNiPvZPS4core3sys5linux4link8link_map@Base 15 ++ _D3gcc8sections3elf16registerGCRangesFNbNiPSQBqQBpQBj3DSOZv@Base 15 ++ _D3gcc8sections3elf17_handleToDSOMutexS4core3sys5posixQk5types15pthread_mutex_t@Base 15 ++ _D3gcc8sections3elf17unsetDSOForHandleFNbNiPSQBrQBqQBk3DSOPvZv@Base 15 ++ _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 ++ _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ8callbackUNbNiQBzmPvZi@Base 15 ++ _D3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZb@Base 15 ++ _D3gcc8sections3elf18findSegmentForAddrFNbNiKxS4core3sys5linux4link12dl_phdr_infoIPvPSQBnQBlQCz10Elf64_PhdrZb@Base 15 ++ _D3gcc8sections3elf18unregisterGCRangesFNbNiPSQBsQBrQBl3DSOZv@Base 15 ++ _D3gcc8sections3elf20runModuleDestructorsFPSQBqQBpQBj3DSObZv@Base 15 ++ _D3gcc8sections3elf21runModuleConstructorsFPSQBrQBqQBk3DSObZv@Base 15 ++ _D3gcc8sections3elf3DSO11__fieldDtorMFNbNiZv@Base 15 ++ _D3gcc8sections3elf3DSO11__invariantMxFZv@Base 15 ++ _D3gcc8sections3elf3DSO11__xopEqualsMxFKxSQBoQBnQBhQBgZb@Base 15 ++ _D3gcc8sections3elf3DSO11moduleGroupMNgFNbNcNdNiNjZNgS2rt5minfo11ModuleGroup@Base 15 ++ _D3gcc8sections3elf3DSO12__invariant0MxFZv@Base 15 ++ _D3gcc8sections3elf3DSO14opApplyReverseFMDFKSQBrQBqQBkQBjZiZi@Base 15 ++ _D3gcc8sections3elf3DSO6__initZ@Base 15 ++ _D3gcc8sections3elf3DSO7modulesMxFNbNdNiZAyPS6object10ModuleInfo@Base 15 ++ _D3gcc8sections3elf3DSO7opApplyFMDFKSQBjQBiQBcQBbZiZi@Base 15 ++ _D3gcc8sections3elf3DSO8gcRangesMNgFNbNdNiZANgAv@Base 15 ++ _D3gcc8sections3elf3DSO8opAssignMFNbNcNiNjSQBpQBoQBiQBhZQo@Base 15 ++ _D3gcc8sections3elf3DSO8tlsRangeMxFNbNiZAv@Base 15 ++ _D3gcc8sections3elf3DSO9__xtoHashFNbNeKxSQBnQBmQBgQBfZm@Base 15 ++ _D3gcc8sections3elf7freeDSOFNbNiPSQBgQBfQz3DSOZv@Base 15 ++ _D3gcc8sections3elf9ThreadDSO11__xopEqualsMxFKxSQBuQBtQBnQBmZb@Base 15 ++ _D3gcc8sections3elf9ThreadDSO14updateTLSRangeMFNbNiZv@Base 15 ++ _D3gcc8sections3elf9ThreadDSO6__initZ@Base 15 ++ _D3gcc8sections3elf9ThreadDSO9__xtoHashFNbNeKxSQBtQBsQBmQBlZm@Base 15 ++ _D3gcc8sections3elf9finiLocksFNbNiZv@Base 15 ++ _D3gcc8sections3elf9initLocksFNbNiZv@Base 15 ++ _D3gcc8sections3elf9tls_index6__initZ@Base 15 ++ _D3gcc8sections3elf__T7toRangeTyPS6object10ModuleInfoZQBgFNaNbNiPyQBiQfZAyQBq@Base 15 ++ _D3gcc8sections5macho11__moduleRefZ@Base 15 ++ _D3gcc8sections5macho12__ModuleInfoZ@Base 15 ++ _D3gcc8sections6common10safeAssertFNbNiNfbMAyaMQemZv@Base 15 ++ _D3gcc8sections6common11__moduleRefZ@Base 15 ++ _D3gcc8sections6common12__ModuleInfoZ@Base 15 ++ _D3gcc8sections6pecoff11__moduleRefZ@Base 15 ++ _D3gcc8sections6pecoff12__ModuleInfoZ@Base 15 ++ _D3gcc9attribute11__moduleRefZ@Base 15 ++ _D3gcc9attribute12__ModuleInfoZ@Base 15 ++ _D3gcc9backtrace10SymbolInfo6__initZ@Base 15 ++ _D3gcc9backtrace10formatLineFxSQBdQBc10SymbolInfoNkKG1536aZAa@Base 15 ++ _D3gcc9backtrace11__moduleRefZ@Base 15 ++ _D3gcc9backtrace12LibBacktrace11initializedb@Base 15 ++ _D3gcc9backtrace12LibBacktrace16initLibBacktraceFNiZv@Base 15 ++ _D3gcc9backtrace12LibBacktrace5statePSQBk12libbacktrace15backtrace_state@Base 15 ++ _D3gcc9backtrace12LibBacktrace6__ctorMFNiiZCQBqQBpQBi@Base 15 ++ _D3gcc9backtrace12LibBacktrace6__initZ@Base 15 ++ _D3gcc9backtrace12LibBacktrace6__vtblZ@Base 15 ++ _D3gcc9backtrace12LibBacktrace7__ClassZ@Base 15 ++ _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKSQBuQBt13SymbolOrErrorZiZi@Base 15 ++ _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 ++ _D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 ++ _D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 ++ _D3gcc9backtrace12__ModuleInfoZ@Base 15 ++ _D3gcc9backtrace13SymbolOrError6__initZ@Base 15 ++ _D3gcc9backtrace18SymbolCallbackInfo5resetMFZv@Base 15 ++ _D3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 ++ _D3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 ++ _D3std10checkedint11__moduleRefZ@Base 15 ++ _D3std10checkedint12__ModuleInfoZ@Base 15 ++ _D3std10checkedint13ProperCompare6__initZ@Base 15 ++ _D3std10checkedint13ProperCompare__T9hookOpCmpTmTmZQpFNaNbNiNfmmZi@Base 15 ++ _D3std10checkedint4Warn13trustedStderrFNbNcNdNiNeZSQBx5stdio4File@Base 15 ++ _D3std10checkedint4Warn6__initZ@Base 15 ++ _D3std10checkedint4Warn__T10onOverflowVAyaa1_2bTmTxlZQBbFNfmxlZm@Base 15 ++ _D3std10checkedint4Warn__T10onOverflowVAyaa1_2bTmTxmZQBbFNfmxmZm@Base 15 ++ _D3std10checkedint4Warn__T10onOverflowVAyaa1_2dTxmTmZQBbFNfxmmZm@Base 15 ++ _D3std10checkedint4Warn__T12hookOpEqualsTxmTxmZQvFNfxmxmZb@Base 15 ++ _D3std10checkedint4Warn__T9hookOpCmpTmTxmZQqFNfmxmZi@Base 15 ++ _D3std10checkedint5Abort6__initZ@Base 15 ++ _D3std10checkedint5Abort__T10onOverflowVAyaa1_2bTmTxlZQBbFNfmxlZm@Base 15 ++ _D3std10checkedint5Abort__T10onOverflowVAyaa1_2bTmTxmZQBbFNfmxmZm@Base 15 ++ _D3std10checkedint5Abort__T10onOverflowVAyaa1_2dTxmTmZQBbFNfxmmZm@Base 15 ++ _D3std10checkedint5Abort__T12hookOpEqualsTxmTxmZQvFNfxmxmZb@Base 15 ++ _D3std10checkedint5Abort__T9hookOpCmpTmTxmZQqFNfmxmZi@Base 15 ++ _D3std10checkedint5Throw12CheckFailure6__initZ@Base 15 ++ _D3std10checkedint5Throw12CheckFailure6__vtblZ@Base 15 ++ _D3std10checkedint5Throw12CheckFailure7__ClassZ@Base 15 ++ _D3std10checkedint5Throw6__initZ@Base 15 ++ _D3std10checkedint7WithNaN6__initZ@Base 15 ++ _D3std10checkedint8Saturate6__initZ@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz11__xopEqualsMxFKxSQCnQCm__TQCdTmTQByZQCnZb@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz3getMNgFNaNbNiNfZNgm@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6__initZ@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz8__xopCmpMxFKxSQCjQCi__TQBzTmTQBuZQCjZi@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T10opOpAssignVAyaa1_2bTlZQyMFNcNjNfxlZSQDjQDi__TQCzTmTQCuZQDj@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T12opBinaryImplVAyaa1_2bTlTSQCyQCx__TQCoTmTQCjZQCyZQByMFNfxlZQBi@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T12opBinaryImplVAyaa1_2bTmTSQCyQCx__TQCoTmTQCjZQCyZQByMFNfxmZQBi@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T13opBinaryRightVAyaa1_2dTmZQBbMFNfxmZSQDjQDi__TQCzTmTQCuZQDj@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T17opBinaryRightImplVAyaa1_2dTmTSQDdQDc__TQCtTmTQCoZQDdZQCdMFNfxmZQBi@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T5opCmpTmTQBcTxSQCmQCl__TQCcTmTQBxZQCmZQBmMxFNaNbNiNfSQDyQDx__TQDoTmTQDjZQDyZi@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T5opCmpTmTSQChQCg__TQBxTmTQBsZQChZQBhMFNfxmZi@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T6__ctorTmZQkMFNaNbNcNiNfmZSQCyQCx__TQCoTmTQCjZQCy@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T6__ctorTxmZQlMFNaNbNcNiNfxmZSQDaQCz__TQCqTmTQClZQDa@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opBinaryVAyaa1_2bTlZQvMFNfxlZSQDcQDb__TQCsTmTQCnZQDc@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opBinaryVAyaa1_2bTmZQvMFNfxmZSQDcQDb__TQCsTmTQCnZQDc@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opEqualsTxSQCjQCi__TQBzTmTQBuZQCjTxQzZQBnMxFNfxQBlZb@Base 15 ++ _D3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz__T8opEqualsTxmTxSQCmQCl__TQCcTmTQBxZQCmZQBmMxFNfxmZb@Base 15 ++ _D3std10checkedint__T7checkedTSQBdQBc5AbortTmZQzFNaNbNiNfxmZSQChQCg__T7CheckedTmTQBzZQp@Base 15 ++ _D3std10checkedint__T9opCheckedVAyaa1_2bTmTlZQyFNaNbNiNfxmxlKbZm@Base 15 ++ _D3std10checkedint__T9opCheckedVAyaa1_2bTmTmZQyFNaNbNiNfxmxmKbZm@Base 15 ++ _D3std10checkedint__T9opCheckedVAyaa1_2dTmTmZQyFNaNbNiNfxmxmKbZm@Base 15 ++ _D3std10checkedint__T9opCheckedVAyaa2_3d3dTmTmZQBaFNaNbNiNfxmxmKbZb@Base 15 ++ _D3std10checkedint__T9opCheckedVAyaa3_636d70TmTmZQBcFNaNbNiNfxmxmKbZi@Base 15 ++ _D3std10functional11__moduleRefZ@Base 15 ++ _D3std10functional11_ctfeSkipOpFKAyaZk@Base 15 ++ _D3std10functional12__ModuleInfoZ@Base 15 ++ _D3std10functional13_ctfeSkipNameFKAyaQdZk@Base 15 ++ _D3std10functional15_ctfeMatchUnaryFAyaQdZk@Base 15 ++ _D3std10functional16_ctfeMatchBinaryFAyaQdQfZk@Base 15 ++ _D3std10functional16_ctfeSkipIntegerFKAyaZk@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTiTmZQoFNaNbNiNfimZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTiZQoFNaNbNiNfmiZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTlZQoFNaNbNiNfmlZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTmTyiZQpFNaNbNiNfmyiZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__T8unsafeOpTyiTmZQpFNaNbNiNfyimZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTiTmZQBbFNaNbNiNfKiKmZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTiZQBbFNaNbNiNfKmKiZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTlZQBbFNaNbNiNfKmKlZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTyiZQBcFNaNbNiNfKmKyiZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTmTymZQBcFNaNbNiNfKmKymZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTyiTmZQBcFNaNbNiNfKyiKmZb@Base 15 ++ _D3std10functional__T6safeOpVAyaa1_3cZ__TQuTymTmZQBcFNaNbNiNfKymKmZb@Base 15 ++ _D3std10functional__T8unaryFunVAyaa11_615b305d203e2030783830VQBea1_61Z__TQCaTxSQCz3uni17CodepointIntervalZQDhFNaNbNiNfKxQBqZb@Base 15 ++ _D3std10functional__T8unaryFunVAyaa4_615b305dVQpa1_61Z__TQBkTSQCi3uni17CodepointIntervalZQCqFNaNbNiNfQBoZk@Base 15 ++ _D3std10functional__T8unaryFunVAyaa4_615b315dVQpa1_61Z__TQBkTSQCi3uni17CodepointIntervalZQCqFNaNbNiNfQBoZk@Base 15 ++ _D3std10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61Z__TQBoTySQCn8internal14unicode_tables15UnicodePropertyZQDoFNaNbNiNfKyQCjZyAa@Base 15 ++ _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10LeapSecondTylZQEqFNaNbNiNfKyQCpKylZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10TransitionTlZQEpFNaNbNiNfKyQCoKlZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa11_62203c20612e74696d6554VQBea1_61VQBna1_62Z__TQCkTySQDj8datetime8timezone13PosixTimeZone10TransitionTylZQEqFNaNbNiNfKyQCpKylZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa15_612e6e616d65203c20622e6e616d65VQBma1_61VQBva1_62Z__TQCsTSQDq5regex8internal2ir10NamedGroupTQBjZQEjFNaNbNiNfKQCaKQCeZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62Z__TQCwTSQDu8datetime8timezone13PosixTimeZone10LeapSecondTQByZQFcFNaNbNiNfKQCpKQCtZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62Z__TQCwTSQDu8datetime8timezone13PosixTimeZone14TempTransitionTQCcZQFgFNaNbNiNfKQCtKQCxZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTQBoTQBsZQChFNaNbNiNfKQCjKQCnZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTkTiZQCdFNaNbNiNfKkKiZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62Z__TQBvTywTwZQCeFNaNbNiNfKywKwZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62Z__TQByTkTkZQCgFNaNbNiNfKkKkZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62Z__TQByTxkTkZQChFNaNbNiNfKxkKkZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTQBrTQBvZQCkFNaNbNiNfKQCmKQCqZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTSQCw3uni__T13InversionListTSQDxQBb8GcPolicyZQBhTQBwZQEcFNaNbNiNfKQCnKQCrZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTaTaZQCgFNaNbNiNfaaZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByThThZQCgFNaNbNiNfKhKhZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTwTaZQCgFNaNbNiNfKwKaZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTxSQCx8typecons__T5TupleTQCpVQCta3_6b6579TSQEl4json9JSONValueVQEaa5_76616c7565ZQCjTxQDeZQFlFNaNbNiNfKxQDwKxQEbZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTxhTxhZQCiFNaNbNiNfKxhKxhZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyAaTQBvZQCkFNaNbNiNfKyQvKQCqZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTwZQChFNaNbNiNfKyhKwZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTwZQChFNaNbNiNfKyhwZb@Base 15 ++ _D3std10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62Z__TQByTyhTxhZQCiFNaNbNiNfKyhKxhZb@Base 15 ++ _D3std11__moduleRefZ@Base 15 ++ _D3std11concurrency10MessageBox10setMaxMsgsMFNaNiNfmPFSQCbQCa3TidZbZv@Base 15 ++ _D3std11concurrency10MessageBox12isControlMsgMFNaNbNiNfKSQCdQCc7MessageZb@Base 15 ++ _D3std11concurrency10MessageBox13isLinkDeadMsgMFNaNbNiNfKSQCeQCd7MessageZb@Base 15 ++ _D3std11concurrency10MessageBox13isPriorityMsgMFNaNbNiNfKSQCeQCd7MessageZb@Base 15 ++ _D3std11concurrency10MessageBox14updateMsgCountMFNaNbNiNfZv@Base 15 ++ _D3std11concurrency10MessageBox3putMFKSQBlQBk7MessageZv@Base 15 ++ _D3std11concurrency10MessageBox5closeMFZ13onLinkDeadMsgFKSQCeQCd7MessageZv@Base 15 ++ _D3std11concurrency10MessageBox5closeMFZ5sweepFKSQBvQBu__T4ListTSQClQCk7MessageZQwZv@Base 15 ++ _D3std11concurrency10MessageBox5closeMFZv@Base 15 ++ _D3std11concurrency10MessageBox6__ctorMFNbNeZCQBsQBrQBh@Base 15 ++ _D3std11concurrency10MessageBox6__initZ@Base 15 ++ _D3std11concurrency10MessageBox6__vtblZ@Base 15 ++ _D3std11concurrency10MessageBox7__ClassZ@Base 15 ++ _D3std11concurrency10MessageBox8isClosedMFNaNdNiNfZb@Base 15 ++ _D3std11concurrency10MessageBox8mboxFullMFNaNbNiNfZb@Base 15 ++ _D3std11concurrency10ThreadInfo11__xopEqualsMxFKxSQBwQBvQBlZb@Base 15 ++ _D3std11concurrency10ThreadInfo6__initZ@Base 15 ++ _D3std11concurrency10ThreadInfo7cleanupMFZv@Base 15 ++ _D3std11concurrency10ThreadInfo8thisInfoFNbNcNdNiNfZSQBzQByQBo@Base 15 ++ _D3std11concurrency10ThreadInfo8thisInfoFNbNcNdZ3valSQBzQByQBo@Base 15 ++ _D3std11concurrency10ThreadInfo9__xtoHashFNbNeKxSQBvQBuQBkZm@Base 15 ++ _D3std11concurrency10namesByTidHSQBfQBe3TidAAya@Base 15 ++ _D3std11concurrency10unregisterFAyaZb@Base 15 ++ _D3std11concurrency11IsGenerator11__InterfaceZ@Base 15 ++ _D3std11concurrency11MailboxFull6__ctorMFNaNbNiNfSQBwQBv3TidAyaZCQClQCkQCa@Base 15 ++ _D3std11concurrency11MailboxFull6__initZ@Base 15 ++ _D3std11concurrency11MailboxFull6__vtblZ@Base 15 ++ _D3std11concurrency11MailboxFull7__ClassZ@Base 15 ++ _D3std11concurrency11__moduleRefZ@Base 15 ++ _D3std11concurrency12__ModuleInfoZ@Base 15 ++ _D3std11concurrency12initOnceLockFNdZ4lockOC4core4sync5mutex5Mutex@Base 15 ++ _D3std11concurrency12initOnceLockFNdZOC4core4sync5mutex5Mutex@Base 15 ++ _D3std11concurrency12registryLockFNdZ4implC4core4sync5mutex5Mutex@Base 15 ++ _D3std11concurrency12registryLockFNdZC4core4sync5mutex5Mutex@Base 15 ++ _D3std11concurrency12unregisterMeFKSQBiQBh10ThreadInfoZv@Base 15 ++ _D3std11concurrency14FiberScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition13switchContextMFNbZv@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition4waitMFNbS4core4time8DurationZb@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition4waitMFNbZv@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition6__ctorMFNbC4core4sync5mutex5MutexZCQDhQDgQCwQCj@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition6__initZ@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition6__vtblZ@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition6notifyMFNbZv@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition7__ClassZ@Base 15 ++ _D3std11concurrency14FiberScheduler14FiberCondition9notifyAllMFNbZv@Base 15 ++ _D3std11concurrency14FiberScheduler5spawnMFNbDFZvZv@Base 15 ++ _D3std11concurrency14FiberScheduler5startMFDFZvZv@Base 15 ++ _D3std11concurrency14FiberScheduler5yieldMFNbZv@Base 15 ++ _D3std11concurrency14FiberScheduler6__initZ@Base 15 ++ _D3std11concurrency14FiberScheduler6__vtblZ@Base 15 ++ _D3std11concurrency14FiberScheduler6createMFNbDFZvZv@Base 15 ++ _D3std11concurrency14FiberScheduler7__ClassZ@Base 15 ++ _D3std11concurrency14FiberScheduler8dispatchMFZv@Base 15 ++ _D3std11concurrency14FiberScheduler8thisInfoMFNbNcNdZSQCaQBz10ThreadInfo@Base 15 ++ _D3std11concurrency14FiberScheduler9InfoFiber6__ctorMFNbDFZvZCQCiQChQBxQBk@Base 15 ++ _D3std11concurrency14FiberScheduler9InfoFiber6__ctorMFNbDFZvmZCQCjQCiQByQBl@Base 15 ++ _D3std11concurrency14FiberScheduler9InfoFiber6__initZ@Base 15 ++ _D3std11concurrency14FiberScheduler9InfoFiber6__vtblZ@Base 15 ++ _D3std11concurrency14FiberScheduler9InfoFiber7__ClassZ@Base 15 ++ _D3std11concurrency14LinkTerminated6__ctorMFNaNbNiNfSQBzQBy3TidAyaZCQCoQCnQCd@Base 15 ++ _D3std11concurrency14LinkTerminated6__initZ@Base 15 ++ _D3std11concurrency14LinkTerminated6__vtblZ@Base 15 ++ _D3std11concurrency14LinkTerminated7__ClassZ@Base 15 ++ _D3std11concurrency15MessageMismatch6__ctorMFNaNbNiNfAyaZCQCeQCdQBt@Base 15 ++ _D3std11concurrency15MessageMismatch6__initZ@Base 15 ++ _D3std11concurrency15MessageMismatch6__vtblZ@Base 15 ++ _D3std11concurrency15MessageMismatch7__ClassZ@Base 15 ++ _D3std11concurrency15OwnerTerminated6__ctorMFNaNbNiNfSQCaQBz3TidAyaZCQCpQCoQCe@Base 15 ++ _D3std11concurrency15OwnerTerminated6__initZ@Base 15 ++ _D3std11concurrency15OwnerTerminated6__vtblZ@Base 15 ++ _D3std11concurrency15OwnerTerminated7__ClassZ@Base 15 ++ _D3std11concurrency15ThreadScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 ++ _D3std11concurrency15ThreadScheduler5spawnMFDFZvZv@Base 15 ++ _D3std11concurrency15ThreadScheduler5startMFDFZvZv@Base 15 ++ _D3std11concurrency15ThreadScheduler5yieldMFNbZv@Base 15 ++ _D3std11concurrency15ThreadScheduler6__initZ@Base 15 ++ _D3std11concurrency15ThreadScheduler6__vtblZ@Base 15 ++ _D3std11concurrency15ThreadScheduler7__ClassZ@Base 15 ++ _D3std11concurrency15ThreadScheduler8thisInfoMFNbNcNdZSQCbQCa10ThreadInfo@Base 15 ++ _D3std11concurrency15onCrowdingBlockFNaNbNiNfSQBsQBr3TidZb@Base 15 ++ _D3std11concurrency15onCrowdingThrowFNaNfSQBoQBn3TidZb@Base 15 ++ _D3std11concurrency16onCrowdingIgnoreFNaNbNiNfSQBtQBs3TidZb@Base 15 ++ _D3std11concurrency17setMaxMailboxSizeFNaNfSQBqQBp3TidmEQCcQCb10OnCrowdingZv@Base 15 ++ _D3std11concurrency17setMaxMailboxSizeFSQBmQBl3TidmPFQoZbZv@Base 15 ++ _D3std11concurrency19TidMissingException6__initZ@Base 15 ++ _D3std11concurrency19TidMissingException6__vtblZ@Base 15 ++ _D3std11concurrency19TidMissingException7__ClassZ@Base 15 ++ _D3std11concurrency19TidMissingException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDmQDlQDb@Base 15 ++ _D3std11concurrency19TidMissingException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDmQDlQDb@Base 15 ++ _D3std11concurrency19_staticDtor_L270_C1FZv@Base 15 ++ _D3std11concurrency24PriorityMessageException11__fieldDtorMFNlNeZv@Base 15 ++ _D3std11concurrency24PriorityMessageException6__ctorMFSQCb7variant__T8VariantNVmi32ZQpZCQDiQDhQCx@Base 15 ++ _D3std11concurrency24PriorityMessageException6__initZ@Base 15 ++ _D3std11concurrency24PriorityMessageException6__vtblZ@Base 15 ++ _D3std11concurrency24PriorityMessageException7__ClassZ@Base 15 ++ _D3std11concurrency3Tid11__xopEqualsMxFKxSQBoQBnQBdZb@Base 15 ++ _D3std11concurrency3Tid6__ctorMFNaNbNcNiNfCQBpQBo10MessageBoxZSQCjQCiQBy@Base 15 ++ _D3std11concurrency3Tid6__initZ@Base 15 ++ _D3std11concurrency3Tid9__xtoHashFNbNeKxSQBnQBmQBcZm@Base 15 ++ _D3std11concurrency3Tid__T8toStringTSQBj5array__T8AppenderTAyaZQoZQBoMxFNaNfKQBpZv@Base 15 ++ _D3std11concurrency5yieldFNbZv@Base 15 ++ _D3std11concurrency6locateFAyaZSQBeQBd3Tid@Base 15 ++ _D3std11concurrency7Message11__fieldDtorMFNeZv@Base 15 ++ _D3std11concurrency7Message11__xopEqualsMxFKxSQBsQBrQBhZb@Base 15 ++ _D3std11concurrency7Message15__fieldPostblitMFNlZv@Base 15 ++ _D3std11concurrency7Message6__initZ@Base 15 ++ _D3std11concurrency7Message8opAssignMFNcNjNfSQBrQBqQBgZQl@Base 15 ++ _D3std11concurrency7Message9__xtoHashFNbNeKxSQBrQBqQBgZm@Base 15 ++ _D3std11concurrency7Message__T10convertsToTSQBqQBp3TidZQzMFNdZb@Base 15 ++ _D3std11concurrency7Message__T3getTSQBiQBh3TidZQrMFNdZQt@Base 15 ++ _D3std11concurrency7Message__T6__ctorTSQBlQBk3TidZQuMFNcEQCdQCc7MsgTypeQBhZSQCwQCvQCl@Base 15 ++ _D3std11concurrency7thisTidFNdNfZ4trusFNeZSQBpQBo3Tid@Base 15 ++ _D3std11concurrency7thisTidFNdNfZSQBgQBf3Tid@Base 15 ++ _D3std11concurrency8ownerTidFNdZSQBfQBe3Tid@Base 15 ++ _D3std11concurrency8registerFAyaSQBfQBe3TidZb@Base 15 ++ _D3std11concurrency8thisInfoFNbNcNdZSQBjQBi10ThreadInfo@Base 15 ++ _D3std11concurrency9Scheduler11__InterfaceZ@Base 15 ++ _D3std11concurrency9schedulerCQBcQBb9Scheduler@Base 15 ++ _D3std11concurrency9tidByNameHAyaSQBgQBf3Tid@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFNaNbNiNfKSQCiQCh__TQBxTQBvZQCfZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFNaNbNiNfPSQCiQCh__TQBxTQBvZQCf4NodeZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw3putMFQyZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node11__fieldDtorMFNeZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node11__xopEqualsMxFKxSQCqQCp__TQCfTQCdZQCnQBsZb@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node15__fieldPostblitMFNlZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__ctorMFNcQBiZSQCnQCm__TQCcTQCaZQCkQBp@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node8opAssignMFNcNjNfSQCpQCo__TQCeTQCcZQCmQBrZQz@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node9__xtoHashFNbNeKxSQCpQCo__TQCeTQCcZQCmQBrZm@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5frontMFNaNcNdNfZQBp@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range5frontMFNdQBiZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__ctorMFNaNbNcNiNfPSQCtQCs__TQCiTQCgZQCq4NodeZSQDuQDt__TQDjTQDhZQDrQCw@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__initZ@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range8popFrontMFNaNfZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5clearMFNaNbNiNfZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw6__initZ@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7newNodeMFQBcZPSQCiQCh__TQBxTQBvZQCf4Node@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7opSliceMFNaNbNiZSQCkQCj__TQBzTQBxZQCh5Range@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7sm_headOPSQCdQCc__TQBsTQBqZQCa4Node@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw7sm_lockOSQCcQCb__TQBrTQBpZQBz8SpinLock@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock4lockMOFNbNiZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6unlockMOFNaNbNiNfZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8freeNodeMFPSQCfQCe__TQBuTQBsZQCc4NodeZv@Base 15 ++ _D3std11concurrency__T4ListTSQBbQBa7MessageZQw8removeAtMFSQCeQCd__TQBtTQBrZQCb5RangeZv@Base 15 ++ _D3std11concurrency__T5_sendTSQBcQBb3TidZQtFEQBrQBq7MsgTypeQBeQBhZv@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyOC4core4sync5mutex5MutexZ4flagOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyOC4core4sync5mutex5MutexZQBz@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg11parallelism8taskPoolFNdNeZ4poolCQCrQBl8TaskPoolZQCnFNcLQyZQBb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcLOQBnOC4core4sync5mutex5MutexZ4flagOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcLOQBnZOQBs@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg12experimental9allocator17_processAllocatorOSQDcQBwQBl18RCISharedAllocatorZQDmFNcNfLOQBpOC4core4sync5mutex5MutexZOQCs@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkOC4core4sync5mutex5MutexZ4flagOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkOC4core4sync5mutex5MutexZQBl@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg3net4curl7CurlAPI7_handlePvZQBrFNcLQkZQn@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcLOQBaOCQCj4sync5mutex5MutexZ4flagOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcLOQBaZOQBf@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg6logger4core22stdSharedDefaultLoggerOCQCvQBpQBl6LoggerZQCsFNcNfLOQBcOCQCl4sync5mutex5MutexZOQCd@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcLObOC4core4sync5mutex5MutexZ4flagOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcLObZOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg8datetime8timezone9LocalTime9singletonFNeZ5guardObZQCoFNcNfLObOC4core4sync5mutex5MutexZOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcLObOC4core4sync5mutex5MutexZ4flagOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcLObZOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBg8encoding14EncodingScheme6createFAyaZ11initializedObZQCqFNcNfLObOC4core4sync5mutex5MutexZOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfOCQBjQBhQBfQBcZ4flagOb@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfOCQBjQBhQBfQBcZQBx@Base 15 ++ _D3std11concurrency__T8initOnceS_DQBgQBf12registryLockFNdZ4implC4core4sync5mutex5MutexZQCnFNcLQBfZQBj@Base 15 ++ _D3std11mathspecial11__moduleRefZ@Base 15 ++ _D3std11mathspecial11logmdigammaFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial12__ModuleInfoZ@Base 15 ++ _D3std11mathspecial14betaIncompleteFNaNbNiNfeeeZe@Base 15 ++ _D3std11mathspecial15gammaIncompleteFNaNbNiNfeeZe@Base 15 ++ _D3std11mathspecial18logmdigammaInverseFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial18normalDistributionFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial20gammaIncompleteComplFNaNbNiNfeeZe@Base 15 ++ _D3std11mathspecial21betaIncompleteInverseFNaNbNiNfeeeZe@Base 15 ++ _D3std11mathspecial25normalDistributionInverseFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial27gammaIncompleteComplInverseFNaNbNiNfeeZe@Base 15 ++ _D3std11mathspecial3erfFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial4betaFNaNbNiNfeeZe@Base 15 ++ _D3std11mathspecial4erfcFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial5gammaFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial7digammaFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial8logGammaFNaNbNiNfeZe@Base 15 ++ _D3std11mathspecial8sgnGammaFNaNbNiNfeZe@Base 15 ++ _D3std11parallelism10foreachErrFZv@Base 15 ++ _D3std11parallelism11__moduleRefZ@Base 15 ++ _D3std11parallelism12AbstractTask11__xopEqualsMxFKxSQByQBxQBnZb@Base 15 ++ _D3std11parallelism12AbstractTask3jobMFZv@Base 15 ++ _D3std11parallelism12AbstractTask4doneMFNdZb@Base 15 ++ _D3std11parallelism12AbstractTask6__initZ@Base 15 ++ _D3std11parallelism12AbstractTask9__xtoHashFNbNeKxSQBxQBwQBmZm@Base 15 ++ _D3std11parallelism12__ModuleInfoZ@Base 15 ++ _D3std11parallelism13totalCPUsImplFNbNiNeZk@Base 15 ++ _D3std11parallelism16submitAndExecuteFCQBlQBk8TaskPoolMDFZvZv@Base 15 ++ _D3std11parallelism17ParallelismThread6__ctorMFDFZvZCQBzQByQBo@Base 15 ++ _D3std11parallelism17ParallelismThread6__initZ@Base 15 ++ _D3std11parallelism17ParallelismThread6__vtblZ@Base 15 ++ _D3std11parallelism17ParallelismThread7__ClassZ@Base 15 ++ _D3std11parallelism17cacheLineSizeImplFNbNiNeZm@Base 15 ++ _D3std11parallelism18defaultPoolThreadsFNdNeZk@Base 15 ++ _D3std11parallelism18defaultPoolThreadsFNdNekZv@Base 15 ++ _D3std11parallelism19_defaultPoolThreadsOk@Base 15 ++ _D3std11parallelism20ParallelForeachError6__ctorMFZCQByQBxQBn@Base 15 ++ _D3std11parallelism20ParallelForeachError6__initZ@Base 15 ++ _D3std11parallelism20ParallelForeachError6__vtblZ@Base 15 ++ _D3std11parallelism20ParallelForeachError7__ClassZ@Base 15 ++ _D3std11parallelism26_sharedStaticDtor_L1089_C1FZv@Base 15 ++ _D3std11parallelism8TaskPool10deleteItemMFPSQBqQBp12AbstractTaskZb@Base 15 ++ _D3std11parallelism8TaskPool10waiterLockMFZv@Base 15 ++ _D3std11parallelism8TaskPool11abstractPutMFPSQBrQBq12AbstractTaskZv@Base 15 ++ _D3std11parallelism8TaskPool11queueUnlockMFZv@Base 15 ++ _D3std11parallelism8TaskPool11threadIndexm@Base 15 ++ _D3std11parallelism8TaskPool11workerIndexMxFNbNdNfZm@Base 15 ++ _D3std11parallelism8TaskPool12doSingleTaskMFZv@Base 15 ++ _D3std11parallelism8TaskPool12waiterUnlockMFZv@Base 15 ++ _D3std11parallelism8TaskPool13notifyWaitersMFZv@Base 15 ++ _D3std11parallelism8TaskPool13startWorkLoopMFZv@Base 15 ++ _D3std11parallelism8TaskPool15executeWorkLoopMFZv@Base 15 ++ _D3std11parallelism8TaskPool16deleteItemNoSyncMFPSQBwQBv12AbstractTaskZb@Base 15 ++ _D3std11parallelism8TaskPool16tryDeleteExecuteMFPSQBwQBv12AbstractTaskZv@Base 15 ++ _D3std11parallelism8TaskPool17abstractPutNoSyncMFPSQBxQBw12AbstractTaskZv@Base 15 ++ _D3std11parallelism8TaskPool17nextInstanceIndexm@Base 15 ++ _D3std11parallelism8TaskPool19defaultWorkUnitSizeMxFNaNbNfmZm@Base 15 ++ _D3std11parallelism8TaskPool19waitUntilCompletionMFZv@Base 15 ++ _D3std11parallelism8TaskPool22abstractPutGroupNoSyncMFPSQCcQCb12AbstractTaskQwZv@Base 15 ++ _D3std11parallelism8TaskPool3popMFZPSQBjQBi12AbstractTask@Base 15 ++ _D3std11parallelism8TaskPool4sizeMxFNaNbNdNfZm@Base 15 ++ _D3std11parallelism8TaskPool4stopMFNeZv@Base 15 ++ _D3std11parallelism8TaskPool4waitMFZv@Base 15 ++ _D3std11parallelism8TaskPool5doJobMFPSQBkQBj12AbstractTaskZv@Base 15 ++ _D3std11parallelism8TaskPool6__ctorMFNeZCQBnQBmQBc@Base 15 ++ _D3std11parallelism8TaskPool6__ctorMFNemZCQBoQBnQBd@Base 15 ++ _D3std11parallelism8TaskPool6__ctorMFPSQBlQBk12AbstractTaskiZCQCiQChQBx@Base 15 ++ _D3std11parallelism8TaskPool6__initZ@Base 15 ++ _D3std11parallelism8TaskPool6__vtblZ@Base 15 ++ _D3std11parallelism8TaskPool6finishMFNebZv@Base 15 ++ _D3std11parallelism8TaskPool6notifyMFZv@Base 15 ++ _D3std11parallelism8TaskPool7__ClassZ@Base 15 ++ _D3std11parallelism8TaskPool8isDaemonMFNdNeZb@Base 15 ++ _D3std11parallelism8TaskPool8isDaemonMFNdNebZv@Base 15 ++ _D3std11parallelism8TaskPool8priorityMFNdNeZi@Base 15 ++ _D3std11parallelism8TaskPool8priorityMFNdNeiZv@Base 15 ++ _D3std11parallelism8TaskPool9notifyAllMFZv@Base 15 ++ _D3std11parallelism8TaskPool9popNoSyncMFZPSQBpQBo12AbstractTask@Base 15 ++ _D3std11parallelism8TaskPool9queueLockMFZv@Base 15 ++ _D3std11parallelism8taskPoolFNdNeZ18__lambda_L3589_C26FNfZCQCfQCe8TaskPool@Base 15 ++ _D3std11parallelism8taskPoolFNdNeZ4poolCQBmQBl8TaskPool@Base 15 ++ _D3std11parallelism8taskPoolFNdNeZCQBhQBg8TaskPool@Base 15 ++ _D3std11parallelism__T10scopedTaskTDFZvZQsFMQjZSQBuQBt__T4TaskSQCjQCi3runTQBnZQv@Base 15 ++ _D3std11parallelism__T14atomicCasUbyteTEQBmQBl8TaskPool9PoolStateZQBsFNaNbNiKQBmQBpQBsZb@Base 15 ++ _D3std11parallelism__T14atomicSetUbyteTEQBmQBl8TaskPool9PoolStateZQBsFNaNbNiKQBmQBpZv@Base 15 ++ _D3std11parallelism__T14atomicSetUbyteThZQtFNaNbNiKhhZv@Base 15 ++ _D3std11parallelism__T15atomicReadUbyteTEQBnQBm8TaskPool9PoolStateZQBtFNaNbNiKQBmZh@Base 15 ++ _D3std11parallelism__T15atomicReadUbyteThZQuFNaNbNiKhZh@Base 15 ++ _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNbNdNiNfZyk@Base 15 ++ _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbNiNfZyk@Base 15 ++ _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbZ3tlsk@Base 15 ++ _D3std11parallelism__T27__lazilyInitializedConstantTykVki4294967295S_DQCqQCp13totalCPUsImplFNbNiNeZkZQDbFNaNdZ4implFNbZ6resultOk@Base 15 ++ _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNbNdNiNfZym@Base 15 ++ _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbNiNfZym@Base 15 ++ _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbZ3tlsm@Base 15 ++ _D3std11parallelism__T27__lazilyInitializedConstantTymVmN1S_DQChQCg17cacheLineSizeImplFNbNiNeZmZQCwFNaNdZ4implFNbZ6resultOm@Base 15 ++ _D3std11parallelism__T3runTDFZvZQkFQiZv@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv10yieldForceMFNcNdNeZv@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv11__xopEqualsMxFKxSQCkQCj__TQBzSQCxQCwQByTQBxZQCrZb@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv11enforcePoolMFNaNfZv@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv18executeInNewThreadMFNeZv@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv18executeInNewThreadMFNeiZv@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv4doneMFNdNeZb@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv4implFPvZv@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__ctorMFNaNbNcNiNfQBaZSQCpQCo__TQCeSQDcQDbQCdTQCcZQCw@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__dtorMFNfZv@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__initZ@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv7basePtrMFNaNbNdNiNfZPSQCoQCn12AbstractTask@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv8opAssignMFNfSQCfQCe__TQBuSQCsQCrQBtTQBsZQCmZQBg@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9__xtoHashFNbNeKxSQCjQCi__TQBySQCwQCvQBxTQBwZQCqZm@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9spinForceMFNcNdNeZv@Base 15 ++ _D3std11parallelism__T4TaskSQBaQz3runTDFZvZQv9workForceMFNcNdNeZv@Base 15 ++ _D3std12__ModuleInfoZ@Base 15 ++ _D3std12experimental10checkedint11__moduleRefZ@Base 15 ++ _D3std12experimental10checkedint12__ModuleInfoZ@Base 15 ++ _D3std12experimental6logger10filelogger11__moduleRefZ@Base 15 ++ _D3std12experimental6logger10filelogger12__ModuleInfoZ@Base 15 ++ _D3std12experimental6logger10nulllogger11__moduleRefZ@Base 15 ++ _D3std12experimental6logger10nulllogger12__ModuleInfoZ@Base 15 ++ _D3std12experimental6logger11__moduleRefZ@Base 15 ++ _D3std12experimental6logger11multilogger11__moduleRefZ@Base 15 ++ _D3std12experimental6logger11multilogger12__ModuleInfoZ@Base 15 ++ _D3std12experimental6logger12__ModuleInfoZ@Base 15 ++ _D3std12experimental6logger4core11__moduleRefZ@Base 15 ++ _D3std12experimental6logger4core12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator10IAllocator11__InterfaceZ@Base 15 ++ _D3std12experimental9allocator10mallocator10Mallocator10deallocateMOxFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator10mallocator10Mallocator10reallocateMOxFNaNbNiKAvmZb@Base 15 ++ _D3std12experimental9allocator10mallocator10Mallocator6__initZ@Base 15 ++ _D3std12experimental9allocator10mallocator10Mallocator8allocateMOxFNaNbNiNemZAv@Base 15 ++ _D3std12experimental9allocator10mallocator10Mallocator8instanceOSQClQCkQBzQBsQBj@Base 15 ++ _D3std12experimental9allocator10mallocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator10mallocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator10mallocator17AlignedMallocator10deallocateMOFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator10mallocator17AlignedMallocator10reallocateMOFNaNbNiKAvmZb@Base 15 ++ _D3std12experimental9allocator10mallocator17AlignedMallocator15alignedAllocateMOFNaNbNiNemkZAv@Base 15 ++ _D3std12experimental9allocator10mallocator17AlignedMallocator17alignedReallocateMOFNaNbNiKAvmkZb@Base 15 ++ _D3std12experimental9allocator10mallocator17AlignedMallocator6__initZ@Base 15 ++ _D3std12experimental9allocator10mallocator17AlignedMallocator8allocateMOFNaNbNiNemZAv@Base 15 ++ _D3std12experimental9allocator10mallocator17AlignedMallocator8instanceOSQCsQCrQCgQBzQBq@Base 15 ++ _D3std12experimental9allocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator12RCIAllocator10__postblitMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator12RCIAllocator10deallocateMFNbAvZb@Base 15 ++ _D3std12experimental9allocator12RCIAllocator10reallocateMFNbKAvmZb@Base 15 ++ _D3std12experimental9allocator12RCIAllocator11__xopEqualsMxFKxSQCjQCiQBxQBqZb@Base 15 ++ _D3std12experimental9allocator12RCIAllocator11allocateAllMFNbZAv@Base 15 ++ _D3std12experimental9allocator12RCIAllocator13deallocateAllMFNbZb@Base 15 ++ _D3std12experimental9allocator12RCIAllocator13goodAllocSizeMFNbmZm@Base 15 ++ _D3std12experimental9allocator12RCIAllocator15alignedAllocateMFNbmkZAv@Base 15 ++ _D3std12experimental9allocator12RCIAllocator17alignedReallocateMFNbKAvmkZb@Base 15 ++ _D3std12experimental9allocator12RCIAllocator22resolveInternalPointerMFNbxPvKAvZSQDa8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator12RCIAllocator4ownsMFNbAvZSQCd8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator12RCIAllocator5emptyMFNbZSQCc8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator12RCIAllocator6__dtorMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator12RCIAllocator6__initZ@Base 15 ++ _D3std12experimental9allocator12RCIAllocator6expandMFNbKAvmZb@Base 15 ++ _D3std12experimental9allocator12RCIAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 ++ _D3std12experimental9allocator12RCIAllocator9__xtoHashFNbNeKxSQCiQChQBwQBpZm@Base 15 ++ _D3std12experimental9allocator12RCIAllocator9alignmentMFNbNdZk@Base 15 ++ _D3std12experimental9allocator12RCIAllocator__T6__ctorTSQCcQCbQBqQBjZQwMFNaNbNcNiNfCQDeQDdQCs10IAllocatorZQBz@Base 15 ++ _D3std12experimental9allocator12RCIAllocator__T6isNullTSQCcQCbQBqQBjZQwMFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator12RCIAllocator__T8opAssignZQkMFNaNbNcNiNfSQCsQCrQCgQBzZQo@Base 15 ++ _D3std12experimental9allocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator10deallocateMOxFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator10reallocateMOxFNaNbKAvmZb@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator13goodAllocSizeMOxFNaNbNiNfmZm@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator22resolveInternalPointerMOxFNaNbNiNexPvKAvZSQDv8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator6__initZ@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator6expandMOxFNaNbNeKAvmZb@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator7collectMOxFNbNeZv@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator8allocateMOxFNaNbNemZAv@Base 15 ++ _D3std12experimental9allocator12gc_allocator11GCAllocator8instanceOxSQCpQCoQCdQBwQBl@Base 15 ++ _D3std12experimental9allocator12gc_allocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator12gc_allocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator12theAllocatorFNbNcNdNiNfZSQCdQCcQBr12RCIAllocator@Base 15 ++ _D3std12experimental9allocator12theAllocatorFNbNdNiSQByQBxQBm12RCIAllocatorZv@Base 15 ++ _D3std12experimental9allocator14mmap_allocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator14mmap_allocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator14mmap_allocator13MmapAllocator10deallocateMOxFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator14mmap_allocator13MmapAllocator6__initZ@Base 15 ++ _D3std12experimental9allocator14mmap_allocator13MmapAllocator8allocateMOxFNaNbNiNfmZ16__lambda_L37_C32FNaNbNiNeZi@Base 15 ++ _D3std12experimental9allocator14mmap_allocator13MmapAllocator8allocateMOxFNaNbNiNfmZAv@Base 15 ++ _D3std12experimental9allocator14mmap_allocator13MmapAllocator8instanceOxSQCtQCsQChQCaQBn@Base 15 ++ _D3std12experimental9allocator15building_blocks10bucketizer11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks10bucketizer12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks10segregator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks10segregator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe10deallocateMFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe11__xopEqualsMxFKxSQHmQHlQHaQGtQGf__TQFsTQFgTQDpZQGeZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe12addAllocatorMFNaNbNimZPSQHtQHsQHhQHaQGm__TQFzTQFnTQDwZQGl4Node@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe13deallocateAllMFNaNbNiZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe14moveAllocatorsMFNaNbNiAvZv@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe15alignedAllocateMFNaNbNimkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node11__fieldDtorMFNaNbNiZv@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node6unusedMxFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node8opAssignMFNaNbNcNiNjSQHuQHtQHiQHbQGn__TQGaTQFoTQDxZQGmQCiZQBm@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4Node9setUnusedMFNaNbNiZv@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4makeMFNaNbNimZSQHjQHiQGxQGq6region__T6RegionTSQIoQInQIc14mmap_allocator13MmapAllocatorVki16VEQKj8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4ownsMFNaNbNiNfAvZSQHm8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe5emptyMxFNaNbNiNfZSQHm8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__ctorMFNaNbNcNiNfKQElZSQHsQHrQHgQGzQGl__TQFyTQFmTQDvZQGk@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__ctorMFNaNbNcNiNfQEkZSQHrQHqQHfQGyQGk__TQFxTQFlTQDuZQGj@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__dtorMFNaNbNiZv@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe6expandMFNaNbNiNfKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe8allocateMFNaNbNimZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe8opAssignMFNaNbNcNiNjSQHpQHoQHdQGwQGi__TQFvTQFjTQDsZQGhZQBj@Base 15 ++ _D3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe9__xtoHashFNbNeKxSQHlQHkQGzQGsQGe__TQFrTQFfTQDoZQGdZm@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator10deallocateMOFNaNbNiNfAvZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator10reallocateMOFNaNbNiNfKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator11allocateAllMOFNaNbNiNfZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator13deallocateAllMOFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator15alignedAllocateMOFNaNbNiNfmkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator17alignedReallocateMOFNaNbNiNfKAvmkZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator22resolveInternalPointerMOxFNaNbNiNfxPvKAvZSQEq8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator4ownsMOxFNaNbNiNfxAvZSQDu8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator5emptyMOxFNaNbNiNfZSQDs8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6expandMOFNaNbNiNfKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator8allocateMOFNaNbNiNfmZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks14null_allocator13NullAllocator8instanceOSQDjQDiQCxQCqQCcQBp@Base 15 ++ _D3std12experimental9allocator15building_blocks15affix_allocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15affix_allocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block11leadingOnesFNaNbNiNfmZk@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block13setBitsIfZeroFNaNbNiNfKmkkZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block14findContigOnesFNaNbNiNfmkZk@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block7setBitsFNaNbNiNfKmkkZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector11__xopEqualsMxFKxSQDnQDmQDbQCuQCgQBsZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13find1BackwardMFNaNbNiNfmZm@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opIndexAssignMFNaNbNiNfbmZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opSliceAssignMFNaNbNiNfbZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector13opSliceAssignMFNaNbNiNfbmmZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector5find1MFNaNbNiNfmZm@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__ctorMFNaNbNcNiNfAmZSQDrQDqQDfQCyQCkQBw@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6lengthMxFNaNbNiNfZm@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7allAre0MxFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7allAre1MxFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector7opIndexMFNaNbNiNfmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector9__xtoHashFNbNeKxSQDmQDlQDaQCtQCfQBrZm@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9BitVector9findZerosMFNaNbNiNfymmZm@Base 15 ++ _D3std12experimental9allocator15building_blocks15bitmapped_block9resetBitsFNaNbNiNfKmkkZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector7Options6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq10deallocateMFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq10reallocateMFNaNbNiKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq11__fieldDtorMFNaNbNiZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq13deallocateAllMFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq15alignedAllocateMFNaNbNiNfmkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq4ownsMFNaNbNiNfAvZSQJzQDu7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq5emptyMFNaNbNiNfZSQJyQDt7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6defineFNaNbNfQCuAQCyXQDc@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq6expandMFNaNbNiNfKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq8allocateMFNaNbNiNfmZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq8opAssignMFNaNbNcNiNjSQKcQKbQJqQJjQIv__TQIhTQHuVmi4096Vmi0ZQJaZQBq@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq9bytesUsedMxFNaNbNiNfZxm@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa13_6e756d4465616c6c6f63617465VQEna15_6279746573436f6e74726163746564ZQDqMFNaNbNiNfAmXv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa13_6e756d5265616c6c6f63617465VQEna15_6e756d5265616c6c6f636174654f4bVQFza20_6e756d5265616c6c6f63617465496e506c616365VQHva13_62797465734e6f744d6f766564VQJda13_6279746573457870616e646564VQKla15_6279746573436f6e74726163746564VQLxa10_62797465734d6f766564ZQKqMFNaNbNiNfAmXv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa16_6e756d4465616c6c6f63617465416c6cZQCkMFNaNbNiNfAmXv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa7_6e756d4f776e73ZQBrMFNaNbNiNfAmXv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVki0VQDfa9_6e756d457870616e64VQEea11_6e756d457870616e644f4bVQFia13_6279746573457870616e646564VQGqa14_6279746573416c6c6f6361746564ZQFrMFNaNbNiNfAmXv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVmi0VQDfa11_6e756d416c6c6f63617465VQEja13_6e756d416c6c6f636174654f4bVQFra14_6279746573416c6c6f6361746564ZQEsMFNaNbNiNfAmXv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10addPerCallVQCwnVmi0VQDfa18_6e756d416c69676e6564416c6c6f63617465VQExa20_6e756d416c69676e6564416c6c6f636174654f6bVQGta14_6279746573416c6c6f6361746564ZQFuMFNaNbNiNfAmXv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T10expandImplVnnVii0ZQuMFNaNbNiNfKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T12allocateImplVnnVii0ZQwMFNaNbNiNfmZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T14deallocateImplVnnVii0ZQyMFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T14reallocateImplVnnVii0ZQyMFNaNbNiKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T17deallocateAllImplVnnVii0ZQBbMFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T19alignedAllocateImplVnnVii0ZQBdMFNaNbNiNfmkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna11_6e756d416c6c6f63617465ZQBiMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna11_6e756d457870616e644f4bZQBiMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna13_6e756d4465616c6c6f63617465ZQBmMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna13_6e756d5265616c6c6f63617465ZQBmMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna15_6e756d5265616c6c6f636174654f4bZQBqMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna16_6e756d4465616c6c6f63617465416c6cZQBsMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna18_6e756d416c69676e6564416c6c6f63617465ZQBwMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna20_6e756d5265616c6c6f63617465496e506c616365ZQCaMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna7_6e756d4f776e73ZQzMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T2upVQCna9_6e756d457870616e64ZQBdMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa10_62797465734d6f766564ZQBhMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa10_6279746573536c61636bZQBhMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa11_6e756d416c6c6f63617465ZQBjMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa11_6e756d457870616e644f4bZQBjMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6279746573457870616e646564ZQBnMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_62797465734e6f744d6f766564ZQBnMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d416c6c6f636174654f4bZQBnMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d4465616c6c6f63617465ZQBnMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa13_6e756d5265616c6c6f63617465ZQBnMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa14_6279746573416c6c6f6361746564ZQBpMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa15_6279746573436f6e74726163746564ZQBrMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa15_6e756d5265616c6c6f636174654f4bZQBrMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa16_6e756d4465616c6c6f63617465416c6cZQBtMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa18_6e756d416c69676e6564416c6c6f63617465ZQBxMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa20_6e756d416c69676e6564416c6c6f636174654f6bZQCbMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa20_6e756d5265616c6c6f63617465496e506c616365ZQCbMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa7_6e756d4f776e73ZQBaMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa9_627974657355736564ZQBeMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T3addVQCoa9_6e756d457870616e64ZQBeMFNaNbNiNflZv@Base 15 ++ _D3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGq__T8ownsImplVnnVii0ZQrMFNaNbNiNfAvZSQKqQEl7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks16scoped_allocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks16scoped_allocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks17kernighan_ritchie11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks17kernighan_ritchie12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks18aligned_block_list11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks18aligned_block_list12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks18fallback_allocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks18fallback_allocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator15alignedAllocateMFNbNimkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator5emptyMFNbNiZSQEf8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__dtorMFNbNiZv@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator6expandMFNbNiKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator8allocateMFNbNimZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator8opAssignMFNbNcNiNjSQElQEkQDzQDsQDeQChZQu@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1510deallocateMFNbNiAvZb@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1513deallocateAllMFNbNiZb@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1513goodAllocSizeMFNbNimZm@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1516getAvailableSizeMFNbNiZm@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin1522extendMemoryProtectionMFNbNiPvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin154ownsMFNbNiAvZSQEq8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator22AscendingPageAllocator9__mixin156__ctorMFNbNcNimZSQEtQEsQEhQEaQDmQCp@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator12allocateImplMOFNbNimkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator15alignedAllocateMOFNbNimkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator6expandMOFNbNiKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator8allocateMOFNbNimZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1510deallocateMOFNbNiAvZb@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1513deallocateAllMOFNbNiZb@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1513goodAllocSizeMOFNbNimZm@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1516getAvailableSizeMOFNbNiZm@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin1522extendMemoryProtectionMOFNbNiPvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin154ownsMOFNbNiAvZSQEx8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks24ascending_page_allocator28SharedAscendingPageAllocator9__mixin156__ctorMOFNbNcNimZOSQFbQFaQEpQEiQDuQCx@Base 15 ++ _D3std12experimental9allocator15building_blocks6region11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks6region12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg10deallocateMFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg10roundedEndMxFNaNbNiNeZPv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg11allocateAllMFNaNbNiNeZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg12roundedBeginMxFNaNbNiNeZPv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg13deallocateAllMFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg13goodAllocSizeMxFNaNbNiNfmZm@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg15alignedAllocateMFNaNbNiNemkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg4ownsMxFNaNbNiNexAvZSQGhQDh7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg5emptyMxFNaNbNiNfZSQGfQDf7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__ctorMFNaNbNcNiAhZSQGhQGgQFvQFoQFa__TQEwVki16VQEji0ZQFl@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg6expandMFNaNbNiNfKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg8allocateMFNaNbNiNemZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T14BorrowedRegionVki16VEQDa8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQDg9availableMxFNaNbNiNfZm@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn10deallocateMFNaNbNiAvZb@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn10roundedEndMxFNaNbNiNeZPv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn11allocateAllMFNaNbNiNeZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn12roundedBeginMxFNaNbNiNeZPv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn13deallocateAllMFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn13goodAllocSizeMxFNaNbNiNfmZm@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn15alignedAllocateMFNaNbNiNemkZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn4ownsMxFNaNbNiNexAvZSQHoQDh7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn5emptyMxFNaNbNiNfZSQHmQDf7Ternary@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__ctorMFNaNbNcNiAhZSQHoQHnQHcQGvQGh__TQGdTQFzVki16VQEni0ZQGw@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__ctorMFNaNbNcNimZSQHnQHmQHbQGuQGg__TQGcTQFyVki16VQEmi0ZQGv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__dtorMFNaNbNiZv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6__initZ@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn6expandMFNaNbNiNfKAvmZb@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn8allocateMFNaNbNiNemZAv@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn8opAssignMFNaNbNcNiNjSQHpQHoQHdQGwQGi__TQGeTQGaVki16VQEoi0ZQGxZQBq@Base 15 ++ _D3std12experimental9allocator15building_blocks6region__T6RegionTSQCmQClQCa14mmap_allocator13MmapAllocatorVki16VEQEh8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn9availableMxFNaNbNiNfZm@Base 15 ++ _D3std12experimental9allocator15building_blocks9free_list11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks9free_list12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks9free_tree11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks9free_tree12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator15building_blocks9quantizer11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator15building_blocks9quantizer12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator16ISharedAllocator11__InterfaceZ@Base 15 ++ _D3std12experimental9allocator16_threadAllocatorSQBvQBuQBj12RCIAllocator@Base 15 ++ _D3std12experimental9allocator16processAllocatorFNbNcNdNiNeZ15forceAttributesFZPOSQDcQDbQCq18RCISharedAllocator@Base 15 ++ _D3std12experimental9allocator16processAllocatorFNbNcNdNiNeZOSQCiQChQBw18RCISharedAllocator@Base 15 ++ _D3std12experimental9allocator16processAllocatorFNbNdNiKOSQCeQCdQBs18RCISharedAllocatorZv@Base 15 ++ _D3std12experimental9allocator17_processAllocatorOSQBxQBwQBl18RCISharedAllocator@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator10__postblitMOFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator10deallocateMOFNbAvZb@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator10reallocateMOFNbKAvmZb@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator11__xopEqualsMxFKOxSQCqQCpQCeQBxZb@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator11allocateAllMOFNbZAv@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator13deallocateAllMOFNbZb@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator13goodAllocSizeMOFNbmZm@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator15alignedAllocateMOFNbmkZAv@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator17alignedReallocateMOFNbKAvmkZb@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator22resolveInternalPointerMOFNbxPvKAvZSQDh8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator4ownsMOFNbAvZSQCk8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator5emptyMOFNbZSQCj8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator6__ctorMOFNaNbNcNiNfOCQCsQCrQCg16ISharedAllocatorZOSQDwQDvQDkQDd@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator6__dtorMOFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator6expandMOFNbKAvmZb@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator8allocateMOFNbmC8TypeInfoZAv@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator9__xtoHashFNbNeKOxSQCpQCoQCdQBwZm@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator9alignmentMOFNbNdZk@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator__T6isNullTOSQCjQCiQBxQBqZQxMOFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator18RCISharedAllocator__T8opAssignZQkMOFNaNbNcNiNfOSQDaQCzQCoQChZOQp@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10deallocateMFNbAvZb@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10reallocateMFNbKAvmZb@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11__fieldDtorMFNaNbNiNlNeZv@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11allocateAllMFNbZAv@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13deallocateAllMFNbZb@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13goodAllocSizeMFNbmZm@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator15alignedAllocateMFNbmkZAv@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator17alignedReallocateMFNbKAvmkZb@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator22resolveInternalPointerMFNbxPvKAvZSQEj8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator4ownsMFNbAvZSQDm8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator5emptyMFNbZSQDl8typecons7Ternary@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__ctorMFNaNbNiNfKOSQDtQDsQDh18RCISharedAllocatorZCQEyQExQEmQEfFNbNcNiNfZQDm@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__initZ@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6__vtblZ@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6decRefMFNaNbNiNfZb@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6expandMFNbKAvmZb@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6incRefMFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator7__ClassZ@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator9alignmentMFNbNdZk@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ17__lambda_L1010_C5FNbNiNeZv@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ21_threadAllocatorStateG4m@Base 15 ++ _D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZSQCjQCiQBx12RCIAllocator@Base 15 ++ _D3std12experimental9allocator5typed11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator5typed12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator6common11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator6common11alignDownToFNaNbNiNkMPvkZQe@Base 15 ++ _D3std12experimental9allocator6common12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator6common13divideRoundUpFNaNbNiNfmmZm@Base 15 ++ _D3std12experimental9allocator6common13trailingZerosFNaNbNiNfmZk@Base 15 ++ _D3std12experimental9allocator6common15forwardToMemberFAyaAQeXQh@Base 15 ++ _D3std12experimental9allocator6common17roundUpToPowerOf2FNaNbNiNfmZm@Base 15 ++ _D3std12experimental9allocator6common18effectiveAlignmentFNaNbNiPvZm@Base 15 ++ _D3std12experimental9allocator6common18roundUpToAlignmentFNaNbNiAvkZQe@Base 15 ++ _D3std12experimental9allocator6common18roundUpToAlignmentFNaNbNiNfmkZm@Base 15 ++ _D3std12experimental9allocator6common19roundUpToMultipleOfFNaNbNiNfmkZm@Base 15 ++ _D3std12experimental9allocator6common20roundDownToAlignmentFNaNbNiNfmkZm@Base 15 ++ _D3std12experimental9allocator6common21isGoodStaticAlignmentFNaNbNiNfkZb@Base 15 ++ _D3std12experimental9allocator6common22isGoodDynamicAlignmentFNaNbNiNfkZb@Base 15 ++ _D3std12experimental9allocator6common22roundStartToMultipleOfFNaNbNiAvkZQe@Base 15 ++ _D3std12experimental9allocator6common9alignUpToFNaNbNiNkMPvkZQe@Base 15 ++ _D3std12experimental9allocator6common__T10reallocateTSQCaQBzQBo15building_blocks6region__T6RegionTSQDtQDsQDh14mmap_allocator13MmapAllocatorVki16VEQFo8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnZQGpFNaNbNiKQGnKAvmZb@Base 15 ++ _D3std12experimental9allocator6common__T13goodAllocSizeTSQCdQCcQBr15building_blocks15stats_collector__T14StatsCollectorTSQEpQEoQEdQCm6region__T6RegionTSQFuQFtQFi14mmap_allocator13MmapAllocatorVki16VEQHp8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJfFNaNbNiNfKQJcmZm@Base 15 ++ _D3std12experimental9allocator6common__T9alignedAtTvZQnFNaNbNiNfPvkZb@Base 15 ++ _D3std12experimental9allocator8showcase11__moduleRefZ@Base 15 ++ _D3std12experimental9allocator8showcase12__ModuleInfoZ@Base 15 ++ _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__ctorMFNcmZSQDaQCzQCoQChQCbFmZQBo@Base 15 ++ _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 ++ _D3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6opCallMFNaNbNimZSQDeQDdQCs15building_blocks6region__T6RegionTSQExQEwQEl14mmap_allocator13MmapAllocatorVki16VEQGs8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEn@Base 15 ++ _D3std12experimental9allocator8showcase14mmapRegionListFmZSQCfQCeQBt15building_blocks14allocator_list__T13AllocatorListTSQEpQEoQEdQDwQDqFmZ7FactoryTSQFrQFqQFfQDm14null_allocator13NullAllocatorZQDl@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10deallocateMOFNbAvZb@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10reallocateMOFNbKAvmZb@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk11allocateAllMOFNbZAv@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13deallocateAllMOFNbZb@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13goodAllocSizeMOFNbmZm@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk15alignedAllocateMOFNbmkZAv@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk17alignedReallocateMOFNbKAvmkZb@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk22resolveInternalPointerMOFNbxPvKAvZSQHdQDm7Ternary@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk4ownsMOFNbAvZSQGgQCp7Ternary@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk5emptyMOFNbZSQGfQCo7Ternary@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6__initZ@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6__vtblZ@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6decRefMOFNaNbNiNeZb@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6expandMOFNbKAvmZb@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6incRefMOFNaNbNiNfZv@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk7__ClassZ@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk8allocateMOFNbmC8TypeInfoZAv@Base 15 ++ _D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk9alignmentMOFNbNdZk@Base 15 ++ _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbKOxQBvZ5stateOG3m@Base 15 ++ _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbKOxQBvZ6resultOSQEnQEmQEb18RCISharedAllocator@Base 15 ++ _D3std12experimental9allocator__T21sharedAllocatorObjectTOxSQCgQCfQBu12gc_allocator11GCAllocatorZQCmFNbNiKOxQBxZOSQEiQEhQDw18RCISharedAllocator@Base 15 ++ _D3std3csv11__moduleRefZ@Base 15 ++ _D3std3csv12CSVException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCnQCmQCl@Base 15 ++ _D3std3csv12CSVException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl@Base 15 ++ _D3std3csv12CSVException6__ctorMFNaNbNiNfAyammC6object9ThrowableQxmZCQCpQCoQCn@Base 15 ++ _D3std3csv12CSVException6__initZ@Base 15 ++ _D3std3csv12CSVException6__vtblZ@Base 15 ++ _D3std3csv12CSVException7__ClassZ@Base 15 ++ _D3std3csv12CSVException8toStringMxFNaNfZAya@Base 15 ++ _D3std3csv12__ModuleInfoZ@Base 15 ++ _D3std3csv23HeaderMismatchException6__initZ@Base 15 ++ _D3std3csv23HeaderMismatchException6__vtblZ@Base 15 ++ _D3std3csv23HeaderMismatchException7__ClassZ@Base 15 ++ _D3std3csv23HeaderMismatchException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDhQDgQDf@Base 15 ++ _D3std3csv23HeaderMismatchException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDhQDgQDf@Base 15 ++ _D3std3csv23IncompleteCellException6__initZ@Base 15 ++ _D3std3csv23IncompleteCellException6__vtblZ@Base 15 ++ _D3std3csv23IncompleteCellException7__ClassZ@Base 15 ++ _D3std3csv23IncompleteCellException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDhQDgQDf@Base 15 ++ _D3std3csv23IncompleteCellException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDhQDgQDf@Base 15 ++ _D3std3net4curl11__moduleRefZ@Base 15 ++ _D3std3net4curl12AutoProtocol6__initZ@Base 15 ++ _D3std3net4curl12__ModuleInfoZ@Base 15 ++ _D3std3net4curl13CurlException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCrQCqQCpQCn@Base 15 ++ _D3std3net4curl13CurlException6__initZ@Base 15 ++ _D3std3net4curl13CurlException6__vtblZ@Base 15 ++ _D3std3net4curl13CurlException7__ClassZ@Base 15 ++ _D3std3net4curl19HTTPStatusException6__ctorMFNaNbNfiAyaQdmC6object9ThrowableZCQCyQCxQCwQCu@Base 15 ++ _D3std3net4curl19HTTPStatusException6__initZ@Base 15 ++ _D3std3net4curl19HTTPStatusException6__vtblZ@Base 15 ++ _D3std3net4curl19HTTPStatusException7__ClassZ@Base 15 ++ _D3std3net4curl20CurlTimeoutException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCyQCxQCwQCu@Base 15 ++ _D3std3net4curl20CurlTimeoutException6__initZ@Base 15 ++ _D3std3net4curl20CurlTimeoutException6__vtblZ@Base 15 ++ _D3std3net4curl20CurlTimeoutException7__ClassZ@Base 15 ++ _D3std3net4curl3FTP10addCommandMFAxaZv@Base 15 ++ _D3std3net4curl3FTP10initializeMFZv@Base 15 ++ _D3std3net4curl3FTP11__fieldDtorMFZv@Base 15 ++ _D3std3net4curl3FTP13clearCommandsMFZv@Base 15 ++ _D3std3net4curl3FTP13contentLengthMFNdmZv@Base 15 ++ _D3std3net4curl3FTP15__fieldPostblitMFNaNbNiNlZv@Base 15 ++ _D3std3net4curl3FTP3dupMFZSQzQxQvQs@Base 15 ++ _D3std3net4curl3FTP3urlMFNdAxaZv@Base 15 ++ _D3std3net4curl3FTP4Impl11__xopEqualsMxFKxSQBpQBoQBnQBlQBkZb@Base 15 ++ _D3std3net4curl3FTP4Impl6__dtorMFZv@Base 15 ++ _D3std3net4curl3FTP4Impl6__initZ@Base 15 ++ _D3std3net4curl3FTP4Impl8opAssignMFNcNjSQBmQBlQBkQBiQBhZQr@Base 15 ++ _D3std3net4curl3FTP4Impl9__xtoHashFNbNeKxSQBoQBnQBmQBkQBjZm@Base 15 ++ _D3std3net4curl3FTP6__initZ@Base 15 ++ _D3std3net4curl3FTP6opCallFAxaZSQBeQBdQBcQBa@Base 15 ++ _D3std3net4curl3FTP6opCallFZSQBbQBaQzQw@Base 15 ++ _D3std3net4curl3FTP7performMFEQBc8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 ++ _D3std3net4curl3FTP8encodingMFNdAyaZv@Base 15 ++ _D3std3net4curl3FTP8encodingMFNdZAya@Base 15 ++ _D3std3net4curl3FTP8opAssignMFNcNjSQBhQBgQBfQBdZQo@Base 15 ++ _D3std3net4curl3FTP9__mixin1910dnsTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1910onProgressMFNdDFmmmmZiZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1910setNoProxyMFAyaZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1910tcpNoDelayMFNdbZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1910verifyHostMFNdbZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1910verifyPeerMFNdbZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1911dataTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdAxaZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdCQBu6socket15InternetAddressZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1912netInterfaceMFNdxG4hZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1914connectTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1914localPortRangeMFNdtZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1916operationTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1917setAuthenticationMFAxaQdQfZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1922setProxyAuthenticationMFAxaQdZv@Base 15 ++ _D3std3net4curl3FTP9__mixin1928defaultAsyncStringBufferSizek@Base 15 ++ _D3std3net4curl3FTP9__mixin195proxyMFNdAxaZv@Base 15 ++ _D3std3net4curl3FTP9__mixin196handleMFNcNdNjZSQBsQBrQBq4Curl@Base 15 ++ _D3std3net4curl3FTP9__mixin196onSendMFNdDFAvZmZv@Base 15 ++ _D3std3net4curl3FTP9__mixin197verboseMFNdbZv@Base 15 ++ _D3std3net4curl3FTP9__mixin198shutdownMFZv@Base 15 ++ _D3std3net4curl3FTP9__mixin199isStoppedMFNdZb@Base 15 ++ _D3std3net4curl3FTP9__mixin199localPortMFNdtZv@Base 15 ++ _D3std3net4curl3FTP9__mixin199onReceiveMFNdDFAhZmZv@Base 15 ++ _D3std3net4curl3FTP9__mixin199proxyPortMFNdtZv@Base 15 ++ _D3std3net4curl3FTP9__mixin199proxyTypeMFNdE3etc1cQBo9CurlProxyZv@Base 15 ++ _D3std3net4curl3FTP9getTimingMFE3etc1cQBc8CurlInfoKdZi@Base 15 ++ _D3std3net4curl4Curl10initializeMFZv@Base 15 ++ _D3std3net4curl4Curl10onProgressMFNdDFmmmmZiZv@Base 15 ++ _D3std3net4curl4Curl11errorStringMFiZAya@Base 15 ++ _D3std3net4curl4Curl13_seekCallbackUPvliZi@Base 15 ++ _D3std3net4curl4Curl13_sendCallbackUPammPvZm@Base 15 ++ _D3std3net4curl4Curl14onSocketOptionMFNdDFEQBp6socket8socket_tE3etc1cQCh12CurlSockTypeZiZv@Base 15 ++ _D3std3net4curl4Curl14throwOnStoppedMFAyaZv@Base 15 ++ _D3std3net4curl4Curl15onReceiveHeaderMFNdDFIAaZvZv@Base 15 ++ _D3std3net4curl4Curl16_receiveCallbackUxPammPvZm@Base 15 ++ _D3std3net4curl4Curl16clearIfSupportedMFE3etc1cQBl10CurlOptionZv@Base 15 ++ _D3std3net4curl4Curl17_progressCallbackUPvddddZi@Base 15 ++ _D3std3net4curl4Curl21_socketOptionCallbackUPvEQBt6socket8socket_tiZi@Base 15 ++ _D3std3net4curl4Curl22_receiveHeaderCallbackUxPammPvZm@Base 15 ++ _D3std3net4curl4Curl3dupMFZSQBaQzQxQu@Base 15 ++ _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionAxaZv@Base 15 ++ _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionPvZv@Base 15 ++ _D3std3net4curl4Curl3setMFE3etc1cQx10CurlOptionlZv@Base 15 ++ _D3std3net4curl4Curl5clearMFE3etc1cQz10CurlOptionZv@Base 15 ++ _D3std3net4curl4Curl5pauseMFbbZv@Base 15 ++ _D3std3net4curl4Curl6__initZ@Base 15 ++ _D3std3net4curl4Curl6_checkMFiZv@Base 15 ++ _D3std3net4curl4Curl6onSeekMFNdDFlE3etc1cQBf11CurlSeekPosZEQyQwQCb8CurlSeekZv@Base 15 ++ _D3std3net4curl4Curl6onSendMFNdDFAvZmZv@Base 15 ++ _D3std3net4curl4Curl7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 ++ _D3std3net4curl4Curl7stoppedMxFNdZb@Base 15 ++ _D3std3net4curl4Curl8shutdownMFZv@Base 15 ++ _D3std3net4curl4Curl9getTimingMFE3etc1cQBd8CurlInfoKdZi@Base 15 ++ _D3std3net4curl4Curl9onReceiveMFNdDFAhZmZv@Base 15 ++ _D3std3net4curl4CurlQkFNcNdZSQBbQBaQz7CurlAPI3API@Base 15 ++ _D3std3net4curl4HTTP10StatusLine11__xopEqualsMxFKxSQBxQBwQBvQBtQBrZb@Base 15 ++ _D3std3net4curl4HTTP10StatusLine5resetMFNfZv@Base 15 ++ _D3std3net4curl4HTTP10StatusLine6__initZ@Base 15 ++ _D3std3net4curl4HTTP10StatusLine8toStringMxFZAya@Base 15 ++ _D3std3net4curl4HTTP10StatusLine9__xtoHashFNbNeKxSQBwQBvQBuQBsQBqZm@Base 15 ++ _D3std3net4curl4HTTP10initializeMFZv@Base 15 ++ _D3std3net4curl4HTTP10statusLineMFNdZSQBkQBjQBiQBg10StatusLine@Base 15 ++ _D3std3net4curl4HTTP11__fieldDtorMFZv@Base 15 ++ _D3std3net4curl4HTTP11setPostDataMFAxvAyaZv@Base 15 ++ _D3std3net4curl4HTTP12maxRedirectsMFNdkZv@Base 15 ++ _D3std3net4curl4HTTP12setCookieJarMFAxaZv@Base 15 ++ _D3std3net4curl4HTTP12setUserAgentMFAxaZv@Base 15 ++ _D3std3net4curl4HTTP13contentLengthMFNdmZv@Base 15 ++ _D3std3net4curl4HTTP14flushCookieJarMFZv@Base 15 ++ _D3std3net4curl4HTTP15__fieldPostblitMFNaNbNiNlZv@Base 15 ++ _D3std3net4curl4HTTP15clearAllCookiesMFZv@Base 15 ++ _D3std3net4curl4HTTP15onReceiveHeaderMFNdDFIAaIQdZvZv@Base 15 ++ _D3std3net4curl4HTTP15parseStatusLineFNfxAaJSQBrQBqQBpQBn10StatusLineZb@Base 15 ++ _D3std3net4curl4HTTP15responseHeadersMFNdZHAyaQd@Base 15 ++ _D3std3net4curl4HTTP16addRequestHeaderMFAxaQdZv@Base 15 ++ _D3std3net4curl4HTTP16defaultUserAgentFNdZ3bufG63a@Base 15 ++ _D3std3net4curl4HTTP16defaultUserAgentFNdZ9userAgentAya@Base 15 ++ _D3std3net4curl4HTTP16defaultUserAgentFNdZAya@Base 15 ++ _D3std3net4curl4HTTP16setTimeConditionMFE3etc1cQBl12CurlTimeCondSQCl8datetime7systime7SysTimeZv@Base 15 ++ _D3std3net4curl4HTTP19clearRequestHeadersMFZv@Base 15 ++ _D3std3net4curl4HTTP19clearSessionCookiesMFZv@Base 15 ++ _D3std3net4curl4HTTP19defaultMaxRedirectsk@Base 15 ++ _D3std3net4curl4HTTP19onReceiveStatusLineMFNdDFSQBuQBtQBsQBq10StatusLineZvZv@Base 15 ++ _D3std3net4curl4HTTP20authenticationMethodMFNdE3etc1cQBr8CurlAuthZv@Base 15 ++ _D3std3net4curl4HTTP3dupMFZSQBaQzQxQu@Base 15 ++ _D3std3net4curl4HTTP3urlMFNdAxaZv@Base 15 ++ _D3std3net4curl4HTTP4Impl11__xopEqualsMxFKxSQBqQBpQBoQBmQBkZb@Base 15 ++ _D3std3net4curl4HTTP4Impl15onReceiveHeaderMFNdDFIAaIQdZvZv@Base 15 ++ _D3std3net4curl4HTTP4Impl6__dtorMFZv@Base 15 ++ _D3std3net4curl4HTTP4Impl6__initZ@Base 15 ++ _D3std3net4curl4HTTP4Impl8opAssignMFNcNjSQBnQBmQBlQBjQBhZQr@Base 15 ++ _D3std3net4curl4HTTP4Impl9__xtoHashFNbNeKxSQBpQBoQBnQBlQBjZm@Base 15 ++ _D3std3net4curl4HTTP6__initZ@Base 15 ++ _D3std3net4curl4HTTP6caInfoMFNdAxaZv@Base 15 ++ _D3std3net4curl4HTTP6methodMFNdEQBeQBdQBcQBa6MethodZv@Base 15 ++ _D3std3net4curl4HTTP6methodMFNdZEQBfQBeQBdQBb6Method@Base 15 ++ _D3std3net4curl4HTTP6opCallFAxaZSQBfQBeQBdQBb@Base 15 ++ _D3std3net4curl4HTTP6opCallFZSQBcQBbQBaQy@Base 15 ++ _D3std3net4curl4HTTP7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 ++ _D3std3net4curl4HTTP8opAssignMFNcNjSQBiQBhQBgQBeZQo@Base 15 ++ _D3std3net4curl4HTTP8postDataMFNdAxaZv@Base 15 ++ _D3std3net4curl4HTTP8postDataMFNdAxvZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4610dnsTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4610onProgressMFNdDFmmmmZiZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4610setNoProxyMFAyaZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4610tcpNoDelayMFNdbZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4610verifyHostMFNdbZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4610verifyPeerMFNdbZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4611dataTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdAxaZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdCQBv6socket15InternetAddressZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4612netInterfaceMFNdxG4hZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4614connectTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4614localPortRangeMFNdtZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4616operationTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4617setAuthenticationMFAxaQdQfZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4622setProxyAuthenticationMFAxaQdZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin4628defaultAsyncStringBufferSizek@Base 15 ++ _D3std3net4curl4HTTP9__mixin465proxyMFNdAxaZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin466handleMFNcNdNjZSQBtQBsQBr4Curl@Base 15 ++ _D3std3net4curl4HTTP9__mixin466onSendMFNdDFAvZmZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin467verboseMFNdbZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin468shutdownMFZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin469isStoppedMFNdZb@Base 15 ++ _D3std3net4curl4HTTP9__mixin469localPortMFNdtZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin469onReceiveMFNdDFAhZmZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin469proxyPortMFNdtZv@Base 15 ++ _D3std3net4curl4HTTP9__mixin469proxyTypeMFNdE3etc1cQBp9CurlProxyZv@Base 15 ++ _D3std3net4curl4HTTP9getTimingMFE3etc1cQBd8CurlInfoKdZi@Base 15 ++ _D3std3net4curl4HTTP9setCookieMFAxaZv@Base 15 ++ _D3std3net4curl4SMTP10initializeMFZv@Base 15 ++ _D3std3net4curl4SMTP11__fieldDtorMFZv@Base 15 ++ _D3std3net4curl4SMTP15__fieldPostblitMFNaNbNiNlZv@Base 15 ++ _D3std3net4curl4SMTP3urlMFNdAxaZv@Base 15 ++ _D3std3net4curl4SMTP4Impl6__dtorMFZv@Base 15 ++ _D3std3net4curl4SMTP4Impl6__initZ@Base 15 ++ _D3std3net4curl4SMTP4Impl7messageMFNdAyaZv@Base 15 ++ _D3std3net4curl4SMTP4Impl8opAssignMFNcNjSQBnQBmQBlQBjQBhZQr@Base 15 ++ _D3std3net4curl4SMTP6__initZ@Base 15 ++ _D3std3net4curl4SMTP6opCallFAxaZSQBfQBeQBdQBb@Base 15 ++ _D3std3net4curl4SMTP6opCallFZSQBcQBbQBaQy@Base 15 ++ _D3std3net4curl4SMTP7messageMFNdAyaZv@Base 15 ++ _D3std3net4curl4SMTP7performMFEQBd8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBmZi@Base 15 ++ _D3std3net4curl4SMTP8opAssignMFNcNjSQBiQBhQBgQBeZQo@Base 15 ++ _D3std3net4curl4SMTP9__mixin1310dnsTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1310onProgressMFNdDFmmmmZiZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1310setNoProxyMFAyaZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1310tcpNoDelayMFNdbZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1310verifyHostMFNdbZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1310verifyPeerMFNdbZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1311dataTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdAxaZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdCQBv6socket15InternetAddressZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1312netInterfaceMFNdxG4hZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1314connectTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1314localPortRangeMFNdtZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1316operationTimeoutMFNdS4core4time8DurationZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1317setAuthenticationMFAxaQdQfZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1322setProxyAuthenticationMFAxaQdZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin1328defaultAsyncStringBufferSizek@Base 15 ++ _D3std3net4curl4SMTP9__mixin135proxyMFNdAxaZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin136handleMFNcNdNjZSQBtQBsQBr4Curl@Base 15 ++ _D3std3net4curl4SMTP9__mixin136onSendMFNdDFAvZmZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin137verboseMFNdbZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin138shutdownMFZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin139isStoppedMFNdZb@Base 15 ++ _D3std3net4curl4SMTP9__mixin139localPortMFNdtZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin139onReceiveMFNdDFAhZmZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin139proxyPortMFNdtZv@Base 15 ++ _D3std3net4curl4SMTP9__mixin139proxyTypeMFNdE3etc1cQBp9CurlProxyZv@Base 15 ++ _D3std3net4curl7CurlAPI3API6__initZ@Base 15 ++ _D3std3net4curl7CurlAPI4_apiSQBbQBaQzQw3API@Base 15 ++ _D3std3net4curl7CurlAPI6__initZ@Base 15 ++ _D3std3net4curl7CurlAPI7_handlePv@Base 15 ++ _D3std3net4curl7CurlAPI7loadAPIFZ5namesyAAa@Base 15 ++ _D3std3net4curl7CurlAPI7loadAPIFZ7cleanupUZv@Base 15 ++ _D3std3net4curl7CurlAPI7loadAPIFZPv@Base 15 ++ _D3std3net4curl7CurlAPI8instanceFNcNdZSQBlQBkQBjQBh3API@Base 15 ++ _D3std3net4curl8isFTPUrlFAxaZb@Base 15 ++ _D3std3net7isemail10AsciiToken6__initZ@Base 15 ++ _D3std3net7isemail11EmailStatus10domainPartMxFNaNbNdNiNjNlNfZAya@Base 15 ++ _D3std3net7isemail11EmailStatus10statusCodeMxFNaNbNdNiNlNfZEQCgQCfQCe15EmailStatusCode@Base 15 ++ _D3std3net7isemail11EmailStatus11__xopEqualsMxFKxSQBwQBvQBuQBpZb@Base 15 ++ _D3std3net7isemail11EmailStatus5validMxFNaNbNdNiNlNfZb@Base 15 ++ _D3std3net7isemail11EmailStatus6__ctorMFNaNbNcNiNfbAyaQdEQCdQCcQCb15EmailStatusCodeZSQDfQDeQDdQCy@Base 15 ++ _D3std3net7isemail11EmailStatus6__initZ@Base 15 ++ _D3std3net7isemail11EmailStatus6statusMxFNaNbNdNiNlNfZAya@Base 15 ++ _D3std3net7isemail11EmailStatus8toStringMxFNaNlNfZAya@Base 15 ++ _D3std3net7isemail11EmailStatus9__xtoHashFNbNeKxSQBvQBuQBtQBoZm@Base 15 ++ _D3std3net7isemail11EmailStatus9localPartMxFNaNbNdNiNjNlNfZAya@Base 15 ++ _D3std3net7isemail11__moduleRefZ@Base 15 ++ _D3std3net7isemail12__ModuleInfoZ@Base 15 ++ _D3std3net7isemail15EmailStatusCode6__initZ@Base 15 ++ _D3std3net7isemail21statusCodeDescriptionFNaNbNiNfEQBxQBwQBv15EmailStatusCodeZAya@Base 15 ++ _D3std3uni10compressToFNaNbNfkMKAhZv@Base 15 ++ _D3std3uni10isAlphaNumFNaNbNiNfwZb@Base 15 ++ _D3std3uni10nfkcQCTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni10nfkcQCTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni10nfkdQCTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni10nfkdQCTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni10numberTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi7Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi7ZQCvZQFf@Base 15 ++ _D3std3uni10numberTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi7Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi7ZQCvZQFf@Base 15 ++ _D3std3uni10safeRead24FNaNbNiMxPhmZk@Base 15 ++ _D3std3uni10symbolTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi7Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi7ZQCvZQFf@Base 15 ++ _D3std3uni10symbolTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi7Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi7ZQCvZQFf@Base 15 ++ _D3std3uni10toLowerTabFNaNbNiNemZw@Base 15 ++ _D3std3uni10toTitleTabFNaNbNiNemZw@Base 15 ++ _D3std3uni10toUpperTabFNaNbNiNemZw@Base 15 ++ _D3std3uni10xpictoTrieFNaNbNdNiNfZ3resySQBmQBl__T4TrieTSQCcQCb__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDsQDr__T9sliceBitsVmi13Vmi21ZQvTSQFaQEz__TQBiVmi8Vmi13ZQBvTSQGbQGa__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni10xpictoTrieFNaNbNdNiNfZySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni11__moduleRefZ@Base 15 ++ _D3std3uni11caseEncloseFNaNfSQBbQBa__T13InversionListTSQCbQCa8GcPolicyZQBhZQBv@Base 15 ++ _D3std3uni11composeJamoFNaNbNiNfwwwZw@Base 15 ++ _D3std3uni11isGraphicalFNaNbNiNfwZb@Base 15 ++ _D3std3uni11isSurrogateFNaNbNiNfwZb@Base 15 ++ _D3std3uni11prependTrieFNaNbNdNiNfZ3resySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni11prependTrieFNaNbNdNiNfZySQBjQBi__T4TrieTSQBzQBy__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDpQDo__T9sliceBitsVmi13Vmi21ZQvTSQExQEw__TQBiVmi8Vmi13ZQBvTSQFyQFx__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni11safeWrite24FNaNbNiMPhkmZv@Base 15 ++ _D3std3uni11toTitlecaseFNaNbNiNfwZw@Base 15 ++ _D3std3uni12__ModuleInfoZ@Base 15 ++ _D3std3uni12fullCaseTrieFNaNbNdNiNfZ3resySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni12fullCaseTrieFNaNbNdNiNfZySQBkQBj__T4TrieTtTwVmi1114112TSQCoQCn__T9sliceBitsVmi13Vmi21ZQvTSQDwQDv__TQBiVmi6Vmi13ZQBvTSQExQEw__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni12isPow2OrZeroFNaNbNiNfmZb@Base 15 ++ _D3std3uni12isPrivateUseFNaNbNiNfwZb@Base 15 ++ _D3std3uni12toLowerIndexFNaNbNiNewZt@Base 15 ++ _D3std3uni12toTitleIndexFNaNbNiNewZt@Base 15 ++ _D3std3uni12toUpperIndexFNaNbNiNewZt@Base 15 ++ _D3std3uni13ReallocPolicy6__initZ@Base 15 ++ _D3std3uni13ReallocPolicy__T5allocTkZQjFNaNbNiNemZAk@Base 15 ++ _D3std3uni13ReallocPolicy__T6appendTkTiZQmFNaNbNiNfKAkiZv@Base 15 ++ _D3std3uni13ReallocPolicy__T7destroyTkZQlFNaNbNiNeMKAkZv@Base 15 ++ _D3std3uni13ReallocPolicy__T7reallocTkZQlFNaNbNiNeNkMAkmZQe@Base 15 ++ _D3std3uni13getUnicodeSetFNfMxAabbZSQBiQBh__T13InversionListTSQCiQCh8GcPolicyZQBh@Base 15 ++ _D3std3uni13graphicalTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni13graphicalTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni13isPunctuationFNaNbNiNfwZb@Base 15 ++ _D3std3uni13isSurrogateHiFNaNbNiNfwZb@Base 15 ++ _D3std3uni13isSurrogateLoFNaNbNiNfwZb@Base 15 ++ _D3std3uni13lowerCaseTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni13lowerCaseTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni13upperCaseTrieFNaNbNdNiNfZ3resySQBpQBo__T4TrieTSQCfQCe__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDvQDu__T9sliceBitsVmi13Vmi21ZQvTSQFdQFc__TQBiVmi8Vmi13ZQBvTSQGeQGd__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni13upperCaseTrieFNaNbNdNiNfZySQBlQBk__T4TrieTSQCbQCa__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDrQDq__T9sliceBitsVmi13Vmi21ZQvTSQEzQEy__TQBiVmi8Vmi13ZQBvTSQGaQFz__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni13wordCharacterFNdNfZSQBeQBd__T13InversionListTSQCeQCd8GcPolicyZQBh@Base 15 ++ _D3std3uni14MatcherConcept6__initZ@Base 15 ++ _D3std3uni14combiningClassFNaNbNiNfwZh@Base 15 ++ _D3std3uni14decompressFromFNaNfMAxhKmZk@Base 15 ++ _D3std3uni14isNonCharacterFNaNbNiNfwZb@Base 15 ++ _D3std3uni14simpleCaseTrieFNaNbNdNiNfZ3resySQBqQBp__T4TrieTtTwVmi1114112TSQCuQCt__T9sliceBitsVmi13Vmi21ZQvTSQEcQEb__TQBiVmi6Vmi13ZQBvTSQFdQFc__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni14simpleCaseTrieFNaNbNdNiNfZySQBmQBl__T4TrieTtTwVmi1114112TSQCqQCp__T9sliceBitsVmi13Vmi21ZQvTSQDyQDx__TQBiVmi6Vmi13ZQBvTSQEzQEy__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni14toLowerInPlaceFNaNfKAaZv@Base 15 ++ _D3std3uni14toLowerInPlaceFNaNfKAuZv@Base 15 ++ _D3std3uni14toLowerInPlaceFNaNfKAwZv@Base 15 ++ _D3std3uni14toUpperInPlaceFNaNfKAaZv@Base 15 ++ _D3std3uni14toUpperInPlaceFNaNfKAuZv@Base 15 ++ _D3std3uni14toUpperInPlaceFNaNfKAwZv@Base 15 ++ _D3std3uni15decomposeHangulFNaNbNfwZSQBjQBi8Grapheme@Base 15 ++ _D3std3uni15hangulRecomposeFNaNbNiNfMAwZv@Base 15 ++ _D3std3uni15punctuationTrieFNaNbNdNiNfZ3resySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni15punctuationTrieFNaNbNdNiNfZySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni15spacingMarkTrieFNaNbNdNiNfZ3resySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni15spacingMarkTrieFNaNbNdNiNfZySQBnQBm__T4TrieTSQCdQCc__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDtQDs__T9sliceBitsVmi13Vmi21ZQvTSQFbQFa__TQBiVmi8Vmi13ZQBvTSQGcQGb__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni15unalignedRead24FNaNbNiMxPhmZk@Base 15 ++ _D3std3uni16canonMappingTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi5Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi5ZQCvZQEd@Base 15 ++ _D3std3uni16canonMappingTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi5Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi5ZQCvZQEd@Base 15 ++ _D3std3uni16nonCharacterTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTSQCiQCh__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDyQDx__T9sliceBitsVmi14Vmi21ZQvTSQFgQFf__TQBiVmi10Vmi14ZQBwTSQGiQGh__TQCkVmi6Vmi10ZQCxTSQHjQHi__TQDlVmi0Vmi6ZQDxZQGh@Base 15 ++ _D3std3uni16nonCharacterTrieFNaNbNdNiNfZySQBoQBn__T4TrieTSQCeQCd__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDuQDt__T9sliceBitsVmi14Vmi21ZQvTSQFcQFb__TQBiVmi10Vmi14ZQBwTSQGeQGd__TQCkVmi6Vmi10ZQCxTSQHfQHe__TQDlVmi0Vmi6ZQDxZQGh@Base 15 ++ _D3std3uni16toLowerIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni16toLowerIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni16toTitleIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni16toTitleIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni16toUpperIndexTrieFNaNbNdNiNfZ3resySQBsQBr__T4TrieTtTwVmi1114112TSQCwQCv__T9sliceBitsVmi13Vmi21ZQvTSQEeQEd__TQBiVmi6Vmi13ZQBvTSQFfQFe__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni16toUpperIndexTrieFNaNbNdNiNfZySQBoQBn__T4TrieTtTwVmi1114112TSQCsQCr__T9sliceBitsVmi13Vmi21ZQvTSQEaQDz__TQBiVmi6Vmi13ZQBvTSQFbQFa__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni16unalignedWrite24FNaNbNiMPhkmZv@Base 15 ++ _D3std3uni17CodepointInterval11__xopEqualsMxFKxSQBuQBtQBsZb@Base 15 ++ _D3std3uni17CodepointInterval1aMNgFNaNbNcNdNiNjNfZNgk@Base 15 ++ _D3std3uni17CodepointInterval1bMNgFNaNbNcNdNiNjNfZNgk@Base 15 ++ _D3std3uni17CodepointInterval6__ctorMFNaNbNcNiNfkkZSQByQBxQBw@Base 15 ++ _D3std3uni17CodepointInterval6__initZ@Base 15 ++ _D3std3uni17CodepointInterval__T8opEqualsTxSQBqQBpQBoZQwMxFNaNbNiNfxQzZb@Base 15 ++ _D3std3uni17compatMappingTrieFNaNbNdNiNfZ3resySQBtQBs__T4TrieTtTwVmi1114112TSQCxQCw__T9sliceBitsVmi13Vmi21ZQvTSQEfQEe__TQBiVmi5Vmi13ZQBvTSQFgQFf__TQCjVmi0Vmi5ZQCvZQEd@Base 15 ++ _D3std3uni17compatMappingTrieFNaNbNdNiNfZySQBpQBo__T4TrieTtTwVmi1114112TSQCtQCs__T9sliceBitsVmi13Vmi21ZQvTSQEbQEa__TQBiVmi5Vmi13ZQBvTSQFcQFb__TQCjVmi0Vmi5ZQCvZQEd@Base 15 ++ _D3std3uni18combiningClassTrieFNaNbNdNiNfZ3resySQBuQBt__T4TrieThTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi5Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi5ZQCvZQEd@Base 15 ++ _D3std3uni18combiningClassTrieFNaNbNdNiNfZySQBqQBp__T4TrieThTwVmi1114112TSQCuQCt__T9sliceBitsVmi13Vmi21ZQvTSQEcQEb__TQBiVmi5Vmi13ZQBvTSQFdQFc__TQCjVmi0Vmi5ZQCvZQEd@Base 15 ++ _D3std3uni18graphemeExtendTrieFNaNbNdNiNfZ3resySQBuQBt__T4TrieTSQCkQCj__T9BitPackedTbVmi1ZQrTwVmi1114112TSQEaQDz__T9sliceBitsVmi13Vmi21ZQvTSQFiQFh__TQBiVmi8Vmi13ZQBvTSQGjQGi__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni18graphemeExtendTrieFNaNbNdNiNfZySQBqQBp__T4TrieTSQCgQCf__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDwQDv__T9sliceBitsVmi13Vmi21ZQvTSQFeQFd__TQBiVmi8Vmi13ZQBvTSQGfQGe__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni18graphemeTransformsyAPFNaNbNiNfKEQBqQBp13GraphemeStatewZEQCoQCn12TransformRes@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNaNbNiNfwZSQBoQBnQBmFNfwZ5Range@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNfwZ5Range5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNfwZ5Range5frontMxFNaNbNdNiNfZw@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__ctorMFNaNbNcNiNfkkZSQCkQCjQCiFNfwZQBr@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__ctorMFNaNbNcNiNfwZSQCjQCiQChFNfwZQBq@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNfwZ5Range6__initZ@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNfwZ5Range6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNfwZ5Range7isSmallMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni18simpleCaseFoldingsFNfwZ5Range8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3uni18toLowerSimpleIndexFNaNbNiNewZt@Base 15 ++ _D3std3uni18toTitleSimpleIndexFNaNbNiNewZt@Base 15 ++ _D3std3uni18toUpperSimpleIndexFNaNbNiNewZt@Base 15 ++ _D3std3uni19compositionJumpTrieFNaNbNdNiNfZ3resySQBvQBu__T4TrieTtTwVmi1114112TSQCzQCy__T9sliceBitsVmi9Vmi21ZQuTSQEgQEf__TQBhVmi0Vmi9ZQBtZQDb@Base 15 ++ _D3std3uni19compositionJumpTrieFNaNbNdNiNfZySQBrQBq__T4TrieTtTwVmi1114112TSQCvQCu__T9sliceBitsVmi9Vmi21ZQuTSQEcQEb__TQBhVmi0Vmi9ZQBtZQDb@Base 15 ++ _D3std3uni19decompressIntervalsFNaNfAxhZSQBnQBm21DecompressedIntervals@Base 15 ++ _D3std3uni19graphemeControlTrieFNaNbNdNiNfZ3resySQBvQBu__T4TrieTSQClQCk__T9BitPackedTbVmi1ZQrTwVmi1114112TSQEbQEa__T9sliceBitsVmi13Vmi21ZQvTSQFjQFi__TQBiVmi8Vmi13ZQBvTSQGkQGj__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni19graphemeControlTrieFNaNbNdNiNfZySQBrQBq__T4TrieTSQChQCg__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDxQDw__T9sliceBitsVmi13Vmi21ZQvTSQFfQFe__TQBiVmi8Vmi13ZQBvTSQGgQGf__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni19hangulSyllableIndexFNaNbNiNfwZi@Base 15 ++ _D3std3uni19isRegionalIndicatorFNaNbNiNfwZb@Base 15 ++ _D3std3uni21DecompressedIntervals11__xopEqualsMxFKxSQByQBxQBwZb@Base 15 ++ _D3std3uni21DecompressedIntervals4saveMFNaNdNjNlNfZSQByQBxQBw@Base 15 ++ _D3std3uni21DecompressedIntervals5emptyMxFNaNdNfZb@Base 15 ++ _D3std3uni21DecompressedIntervals5frontMFNaNdNfZSQBvQBu17CodepointInterval@Base 15 ++ _D3std3uni21DecompressedIntervals6__ctorMFNaNcNfAxhZSQBzQByQBx@Base 15 ++ _D3std3uni21DecompressedIntervals6__initZ@Base 15 ++ _D3std3uni21DecompressedIntervals8popFrontMFNaNfZv@Base 15 ++ _D3std3uni21DecompressedIntervals9__xtoHashFNbNeKxSQBxQBwQBvZm@Base 15 ++ _D3std3uni22toLowerSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni22toLowerSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni22toTitleSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni22toTitleSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni22toUpperSimpleIndexTrieFNaNbNdNiNfZ3resySQByQBx__T4TrieTtTwVmi1114112TSQDcQDb__T9sliceBitsVmi13Vmi21ZQvTSQEkQEj__TQBiVmi6Vmi13ZQBvTSQFlQFk__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni22toUpperSimpleIndexTrieFNaNbNdNiNfZySQBuQBt__T4TrieTtTwVmi1114112TSQCyQCx__T9sliceBitsVmi13Vmi21ZQvTSQEgQEf__TQBiVmi6Vmi13ZQBvTSQFhQFg__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni23genUnrolledSwitchSearchFNaNbNfmZAya@Base 15 ++ _D3std3uni4icmpFNaNbNiNfAxaQdZi@Base 15 ++ _D3std3uni4icmpFNaNbNiNfAxuQdZi@Base 15 ++ _D3std3uni4icmpFNaNbNiNfAxwQdZi@Base 15 ++ _D3std3uni5asSetFNaNfAxhZSQyQw__T13InversionListTSQBwQBv8GcPolicyZQBh@Base 15 ++ _D3std3uni5low_8FNaNbNiNfkZk@Base 15 ++ _D3std3uni5sicmpFNaNbNiNfMAxaMQeZi@Base 15 ++ _D3std3uni5sicmpFNaNbNiNfMAxuMQeZi@Base 15 ++ _D3std3uni5sicmpFNaNbNiNfMAxwMQeZi@Base 15 ++ _D3std3uni6hangLVFNaNbNdNiNfZ3resySQBhQBg__T4TrieTSQBxQBw__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDnQDm__T9sliceBitsVmi13Vmi21ZQvTSQEvQEu__TQBiVmi8Vmi13ZQBvTSQFwQFv__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni6hangLVFNaNbNdNiNfZySQBdQBc__T4TrieTSQBtQBs__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDjQDi__T9sliceBitsVmi13Vmi21ZQvTSQErQEq__TQBiVmi8Vmi13ZQBvTSQFsQFr__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni6isMarkFNaNbNiNfwZb@Base 15 ++ _D3std3uni6read24FNaNbNiMxPhmZk@Base 15 ++ _D3std3uni7composeFNaNbNfwwZw@Base 15 ++ _D3std3uni7hangLVTFNaNbNdNiNfZ3resySQBiQBh__T4TrieTSQByQBx__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDoQDn__T9sliceBitsVmi13Vmi21ZQvTSQEwQEv__TQBiVmi8Vmi13ZQBvTSQFxQFw__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni7hangLVTFNaNbNdNiNfZySQBeQBd__T4TrieTSQBuQBt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDkQDj__T9sliceBitsVmi13Vmi21ZQvTSQEsQEr__TQBiVmi8Vmi13ZQBvTSQFtQFs__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni7isAlphaFNaNbNiNfwZb@Base 15 ++ _D3std3uni7isJamoLFNaNbNiNfwZb@Base 15 ++ _D3std3uni7isJamoTFNaNbNiNfwZb@Base 15 ++ _D3std3uni7isJamoVFNaNbNiNfwZb@Base 15 ++ _D3std3uni7isLowerFNaNbNiNfwZb@Base 15 ++ _D3std3uni7isSpaceFNaNbNiNfwZb@Base 15 ++ _D3std3uni7isUpperFNaNbNiNfwZb@Base 15 ++ _D3std3uni7isWhiteFNaNbNiNfwZb@Base 15 ++ _D3std3uni7toLowerFNaNbNiNfwZw@Base 15 ++ _D3std3uni7toLowerFNaNfNkMAyaZQe@Base 15 ++ _D3std3uni7toLowerFNaNfNkMAyuZQe@Base 15 ++ _D3std3uni7toLowerFNaNfNkMAywZQe@Base 15 ++ _D3std3uni7toUpperFNaNbNiNfwZw@Base 15 ++ _D3std3uni7toUpperFNaNfNkMAyaZQe@Base 15 ++ _D3std3uni7toUpperFNaNfNkMAyuZQe@Base 15 ++ _D3std3uni7toUpperFNaNfNkMAywZQe@Base 15 ++ _D3std3uni7unicode18hangulSyllableType6__initZ@Base 15 ++ _D3std3uni7unicode5block6__initZ@Base 15 ++ _D3std3uni7unicode6__initZ@Base 15 ++ _D3std3uni7unicode6script6__initZ@Base 15 ++ _D3std3uni7unicode7findAnyFNfAyaZb@Base 15 ++ _D3std3uni7unicode__T10opDispatchVAyaa10_416c7068616265746963ZQBpFNaNdNfZSQCuQCt__T13InversionListTSQDuQDt8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T10opDispatchVAyaa2_4c43ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T10opDispatchVAyaa2_4d63ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T10opDispatchVAyaa2_4d65ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T10opDispatchVAyaa2_4d6eZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T10opDispatchVAyaa2_4e64ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T10opDispatchVAyaa2_5063ZQyFNaNdNfZSQCcQCb__T13InversionListTSQDcQDb8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T10opDispatchVAyaa5_4153434949ZQBeFNaNdNfZSQCjQCi__T13InversionListTSQDjQDi8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T6opCallTaZQkFNaNfMxAaZSQBqQBp__T13InversionListTSQCqQCp8GcPolicyZQBh@Base 15 ++ _D3std3uni7unicode__T7loadAnyTSQBdQBc__T13InversionListTSQCdQCc8GcPolicyZQBhTaZQCgFNaNfMxAaZQCk@Base 15 ++ _D3std3uni7write24FNaNbNiMPhkmZv@Base 15 ++ _D3std3uni8GcPolicy6__initZ@Base 15 ++ _D3std3uni8GcPolicy__T5allocTkZQjFNaNbNfmZAk@Base 15 ++ _D3std3uni8GcPolicy__T6appendTkTiZQmFNaNbNfKAkiZv@Base 15 ++ _D3std3uni8GcPolicy__T7destroyTAkZQmFNaNbNiNfKQpZv@Base 15 ++ _D3std3uni8GcPolicy__T7reallocTkZQlFNaNbNfAkmZQe@Base 15 ++ _D3std3uni8Grapheme10__postblitMFNaNbNiNeZv@Base 15 ++ _D3std3uni8Grapheme11__xopEqualsMxFKxSQBkQBjQBiZb@Base 15 ++ _D3std3uni8Grapheme11smallLengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni8Grapheme12convertToBigMFNaNbNiNeZv@Base 15 ++ _D3std3uni8Grapheme13opIndexAssignMFNaNbNiNewmZv@Base 15 ++ _D3std3uni8Grapheme5isBigMxFNaNbNdNiNfZh@Base 15 ++ _D3std3uni8Grapheme6__dtorMFNaNbNiNeZv@Base 15 ++ _D3std3uni8Grapheme6__initZ@Base 15 ++ _D3std3uni8Grapheme6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni8Grapheme6setBigMFNaNbNiNfZv@Base 15 ++ _D3std3uni8Grapheme6toHashMxFNeZm@Base 15 ++ _D3std3uni8Grapheme7opIndexMxFNaNbNiNemZw@Base 15 ++ _D3std3uni8Grapheme7opSliceMFNaNbNiNjNfZSQBnQBm__T16SliceOverIndexedTSQCqQCpQCoZQBe@Base 15 ++ _D3std3uni8Grapheme7opSliceMFNaNbNiNjNfmmZSQBpQBo__T16SliceOverIndexedTSQCsQCrQCqZQBe@Base 15 ++ _D3std3uni8Grapheme8opAssignMFNaNbNcNiNjNeSQBpQBoQBnZQl@Base 15 ++ _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eTAxiZQBaMFNaNbNcNiNfMQuZSQCoQCnQCm@Base 15 ++ _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eTAxwZQBaMFNaNbNcNiNfMQuZSQCoQCnQCm@Base 15 ++ _D3std3uni8Grapheme__T10opOpAssignVAyaa1_7eZQwMFNaNbNcNiNewZSQChQCgQCf@Base 15 ++ _D3std3uni8Grapheme__T6__ctorTiZQkMFNaNbNcNiNfxAiXSQBxQBwQBv@Base 15 ++ _D3std3uni8Grapheme__T6__ctorTwZQkMFNaNbNcNiNfxAwXSQBxQBwQBv@Base 15 ++ _D3std3uni8Grapheme__T8opEqualsTSQBfQBeQBdZQvMxFNaNbNiNeKxSQCfQCeQCdZb@Base 15 ++ _D3std3uni8encodeToFNaNbNiNeMAamwZm@Base 15 ++ _D3std3uni8encodeToFNaNbNiNeMAwmwZm@Base 15 ++ _D3std3uni8encodeToFNaNeMAumwZm@Base 15 ++ _D3std3uni8isFormatFNaNbNiNfwZb@Base 15 ++ _D3std3uni8isNumberFNaNbNiNfwZb@Base 15 ++ _D3std3uni8isSymbolFNaNbNiNfwZb@Base 15 ++ _D3std3uni8markTrieFNaNbNdNiNfZ3resySQBjQBi__T4TrieTSQBzQBy__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDpQDo__T9sliceBitsVmi13Vmi21ZQvTSQExQEw__TQBiVmi8Vmi13ZQBvTSQFyQFx__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni8markTrieFNaNbNdNiNfZySQBfQBe__T4TrieTSQBvQBu__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDlQDk__T9sliceBitsVmi13Vmi21ZQvTSQEtQEs__TQBiVmi8Vmi13ZQBvTSQFuQFt__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni8midlow_8FNaNbNiNfkZk@Base 15 ++ _D3std3uni9alphaTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni9alphaTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni9isControlFNaNbNiNfwZb@Base 15 ++ _D3std3uni9nfcQCTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni9nfcQCTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni9nfdQCTrieFNaNbNdNiNfZ3resySQBkQBj__T4TrieTSQCaQBz__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDqQDp__T9sliceBitsVmi13Vmi21ZQvTSQEyQEx__TQBiVmi8Vmi13ZQBvTSQFzQFy__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni9nfdQCTrieFNaNbNdNiNfZySQBgQBf__T4TrieTSQBwQBv__T9BitPackedTbVmi1ZQrTwVmi1114112TSQDmQDl__T9sliceBitsVmi13Vmi21ZQvTSQEuQEt__TQBiVmi8Vmi13ZQBvTSQFvQFu__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni9recomposeFNaNbNfmMAwMAhZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs11__xopEqualsMxFKxSQCzQCy__TQCxTQCoTtZQDhZb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__ctorMFNaNbNcNfAmXSQDbQDa__TQCzTQCqTtZQDj@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQDrQDq__TQDpTQDgTtZQDz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs9__xtoHashFNbNeKxSQCyQCx__TQCwTQCnTtZQDgZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQDkQDj__T13PackedPtrImplTQDlVmi16ZQz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQDkQDj__T13PackedPtrImplTtVmi16ZQx@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQDmQDl__T19PackedArrayViewImplTQDtVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQDmQDl__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi1ZQmMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo11__xopEqualsMxFKxSQDvQDu__TQDtTQDkTQClZQEfZb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__ctorMFNaNbNcNfAmXSQDxQDw__TQDvTQDmTQCnZQEh@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEnQEm__TQElTQEcTQDdZQEx@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo9__xtoHashFNbNeKxSQDuQDt__TQDsTQDjTQCkZQEeZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEiQEh__T19PackedArrayViewImplTQEpVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEiQEh__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi1ZQmMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTQFhTQEjTQDoTQCtZQGkZb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__ctorMFNaNbNcNfAmXSQFuQFt__TQFsTQFjTQElTQDqTQCvZQGm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQGkQGj__TQGiTQFzTQFbTQEgTQDlZQHc@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl6__initZ@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTQFgTQEiTQDnTQCsZQGjZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQGeVmi8ZQy@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQFcVmi16ZQz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQEdVmi16ZQz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T3ptrVmi3ZQjMNgFNaNbNdNiZNgSQGdQGc__T13PackedPtrImplTQDeVmi1ZQy@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQGmVmi8ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQFkVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T5sliceVmi3ZQlMNgFNaNbNdNiZNgSQGfQGe__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi2ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi3ZQmMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T6lengthVmi3ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi7ZQrTSQCbQCa__TQBeTkVmi11ZQBpTSQDaQCz__TQCdTkVmi15ZQCoTSQDzQDy__TQDcTbVmi1ZQDmZQEl__T7raw_ptrVmi3ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm11__xopEqualsMxFKxSQEtQEs__TQErTQEiTQDkTQCpZQFhZb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMFNaNbNcNfAmXSQEvQEu__TQEtTQEkTQDmTQCrZQFj@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQFlQFk__TQFjTQFaTQEcTQDhZQFz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm9__xtoHashFNbNeKxSQEsQEr__TQEqTQEhTQDjTQCoZQFgZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQFfVmi8ZQy@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQEdVmi16ZQz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQDeVmi1ZQy@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQFnVmi8ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi13ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm11__xopEqualsMxFKxSQEtQEs__TQErTQEiTQDkTQCpZQFhZb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMFNaNbNcNfAmXSQEvQEu__TQEtTQEkTQDmTQCrZQFj@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQFlQFk__TQFjTQFaTQEcTQDhZQFz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm6__initZ@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm9__xtoHashFNbNeKxSQEsQEr__TQEqTQEhTQDjTQCoZQFgZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQFfVmi8ZQy@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQEdVmi16ZQz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQFeQFd__T13PackedPtrImplTQDeVmi1ZQy@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQFnVmi8ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQElVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQFgQFf__T19PackedArrayViewImplTQDmVmi1ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi14ZQBpTSQDaQCz__TQCdTbVmi1ZQCnZQDm__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoTtZQEjZb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqTtZQEl@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgTtZQFb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnTtZQEiZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQEjVmi8ZQy@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQDhVmi16ZQz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTtVmi16ZQx@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoThZQEjZb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqThZQEl@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgThZQFb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnThZQEiZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi0ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQEjVmi8ZQy@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi1ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplTQDhVmi16ZQz@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T3ptrVmi2ZQjMNgFNaNbNdNiZNgSQEiQEh__T13PackedPtrImplThVmi8ZQw@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplThVmi8ZQBc@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq11__xopEqualsMxFKxSQDxQDw__TQDvTQDmTQCoTtZQEjZb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__ctorMFNaNbNcNfAmXSQDzQDy__TQDxTQDoTQCqTtZQEl@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__ctorMxFNaNbNcNiNjNlNfAxmQdNkMQiZxSQEpQEo__TQEnTQEeTQDgTtZQFb@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq9__xtoHashFNbNeKxSQDwQDv__TQDuTQDlTQCnTtZQEiZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi0ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQErVmi8ZQBe@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi1ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTQDpVmi16ZQBf@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T5sliceVmi2ZQlMNgFNaNbNdNiZNgSQEkQEj__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi0ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi0ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi1ZQmMFNaNbNdmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi1ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi2ZQmMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T6lengthVmi2ZQmMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi0ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi1ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq__T7raw_ptrVmi2ZQnMNgFNaNbNdNiZPNgm@Base 15 ++ _D3std3uni__T10assumeSizeS_DQBaQz5low_8FNaNbNiNfkZkVmi8ZQBr6__initZ@Base 15 ++ _D3std3uni__T10assumeSizeS_DQBaQz8midlow_8FNaNbNiNfkZkVmi8ZQBu6__initZ@Base 15 ++ _D3std3uni__T10sharMethodSQyQw23switchUniformLowerBoundZ__TQBuVAyaa6_61203c3d2062TAxkTkZQCxFNaNbNiNfQskZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl10putRangeAtMFNaNbNemmbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTbTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTSQGfQGe__T9BitPackedTbVmi1ZQrTwVmi1114112TQGhTQFdTQEgZQCi@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl5putAtMFNaNbNembZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__ctorMFNaNbNcNebZSQFtQFs__TQFrTbTwVii1114112TQFhTQEdTQDgZQGv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl8putRangeMFNaNewwbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl8putValueMFNaNewbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTbTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi14ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi14ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi14ZQsZQBtMFNaNbNeQBqmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi7Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi7ZQCvZQEl__T8addValueVmi2TbZQqMFNaNbNebmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl10putRangeAtMFNaNbNemmbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTbTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTSQGfQGe__T9BitPackedTbVmi1ZQrTwVmi1114112TQGhTQFdTQEgZQCi@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl5putAtMFNaNbNembZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__ctorMFNaNbNcNebZSQFtQFs__TQFrTbTwVii1114112TQFhTQEdTQDgZQGv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl8putRangeMFNaNewwbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl8putValueMFNaNewbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTbTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi13ZQsZQBtMFNaNbNeQBqmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi8Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi8ZQCvZQEl__T8addValueVmi2TbZQqMFNaNbNebmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn10putRangeAtMFNaNbNemmbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn11__xopEqualsMxFKxSQGuQGt__TQGsTbTwVii1114112TQGiTQFeTQEgTQDjZQIaZb@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn14ConstructState6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn5buildMFNaNbNeZSQGrQGq__T4TrieTSQHhQHg__T9BitPackedTbVmi1ZQrTwVmi1114112TQHjTQGfTQFhTQEkZQCm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn5putAtMFNaNbNembZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__ctorMFNaNbNcNebZSQGvQGu__TQGtTbTwVii1114112TQGjTQFfTQEhTQDkZQIb@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn8putRangeMFNaNewwbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn8putValueMFNaNewbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn9__xtoHashFNbNeKxSQGtQGs__TQGrTbTwVii1114112TQGhTQFdTQEfTQDiZQHzZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T14deduceMaxIndexTQFiTQEeTQDgTQCjZQBhFNaNbNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi0TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi7ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi1TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi11ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi2TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T15spillToNextPageVmi3TSQHbQHa__T19PackedArrayViewImplTSQIhQIg__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi1TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTkVmi11ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi2TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T19spillToNextPageImplVmi3TSQHfQHe__T19PackedArrayViewImplTSQIlQIk__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T3idxVmi3ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi0TSQGtQGs__T9BitPackedTkVmi7ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi1TSQGtQGs__T9BitPackedTkVmi11ZQsZQBtMFNaNbNeQBqmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi2TSQGtQGs__T9BitPackedTkVmi15ZQsZQBtMFNaNbNeQBqmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi14Vmi21ZQvTSQCwQCv__TQBiVmi10Vmi14ZQBwTSQDyQDx__TQCkVmi6Vmi10ZQCxTSQEzQEy__TQDlVmi0Vmi6ZQDxZQFn__T8addValueVmi3TbZQqMFNaNbNebmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj10putRangeAtMFNaNbNemmbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj11__xopEqualsMxFKxSQEqQEp__TQEoTbTwVii1114112TQEeTQDbZQFoZb@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj5buildMFNaNbNeZSQEnQEm__T4TrieTSQFdQFc__T9BitPackedTbVmi1ZQrTwVmi1114112TQFfTQEcZQCe@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj5putAtMFNaNbNembZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__ctorMFNaNbNcNebZSQErQEq__TQEpTbTwVii1114112TQEfTQDcZQFp@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj8putRangeMFNaNewwbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj8putValueMFNaNewbZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj9__xtoHashFNbNeKxSQEpQEo__TQEnTbTwVii1114112TQEdTQDaZQFnZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T14deduceMaxIndexTQDeTQCbZQzFNaNbNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T15spillToNextPageVmi0TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTkVmi13ZQsVmi16ZQCgZQDqMFNaNbNiNeKQDiZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T15spillToNextPageVmi1TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDoMFNaNbNeKQDeZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T19spillToNextPageImplVmi1TSQFbQFa__T19PackedArrayViewImplTSQGhQGg__T9BitPackedTbVmi1ZQrVmi1ZQCeZQDsMFNaNbNeKQDeZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T8addValueVmi0TSQEpQEo__T9BitPackedTkVmi13ZQsZQBtMFNaNbNiNeQBsmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTbTwVii1114112TSQBoQBn__T9sliceBitsVmi8Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi8ZQBtZQDj__T8addValueVmi1TbZQqMFNaNbNebmZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl10putRangeAtMFNaNbNemmhZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqThTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieThTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5putAtMFNaNbNemhZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__ctorMFNaNbNcNehZSQFtQFs__TQFrThTwVii1114112TQFhTQEdTQDgZQGv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putRangeMFNaNewwhZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putValueMFNaNewhZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpThTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplThVmi8ZQBcZQCmMFNaNbNeKQCcZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplThVmi8ZQBcZQCqMFNaNbNeKQCcZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi16ZQsZQBtMFNaNbNeQBqmZv@Base 15 ++ _D3std3uni__T11TrieBuilderThTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi2ThZQqMFNaNbNehmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl10putRangeAtMFNaNbNemmtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTtTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTtTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl5putAtMFNaNbNemtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__ctorMFNaNbNcNetZSQFtQFs__TQFrTtTwVii1114112TQFhTQEdTQDgZQGv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putRangeMFNaNewwtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl8putValueMFNaNewtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTtTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi16ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi16ZQsZQBtMFNaNbNeQBqmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi5Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi5ZQCvZQEl__T8addValueVmi2TtZQqMFNaNbNetmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl10putRangeAtMFNaNbNemmtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl11__xopEqualsMxFKxSQFsQFr__TQFqTtTwVii1114112TQFgTQEcTQDfZQGuZb@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl14ConstructState6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl5buildMFNaNbNeZSQFpQFo__T4TrieTtTwVmi1114112TQFfTQEbTQDeZQBg@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl5putAtMFNaNbNemtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__ctorMFNaNbNcNetZSQFtQFs__TQFrTtTwVii1114112TQFhTQEdTQDgZQGv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl8putRangeMFNaNewwtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl8putValueMFNaNewtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl9__xtoHashFNbNeKxSQFrQFq__TQFpTtTwVii1114112TQFfTQEbTQDeZQGtZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T14deduceMaxIndexTQEgTQDcTQCfZQBdFNaNbNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi0TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi8ZQrVmi8ZQCeZQDoMFNaNbNiNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi1TSQFzQFy__T19PackedArrayViewImplTSQHfQHe__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDqMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T15spillToNextPageVmi2TSQFzQFy__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T19spillToNextPageImplVmi1TSQGdQGc__T19PackedArrayViewImplTSQHjQHi__T9BitPackedTkVmi15ZQsVmi16ZQCgZQDuMFNaNbNeKQDgZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T19spillToNextPageImplVmi2TSQGdQGc__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T3idxVmi2ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi0TSQFrQFq__T9BitPackedTkVmi8ZQrZQBsMFNaNbNiNeQBrmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi1TSQFrQFq__T9BitPackedTkVmi15ZQsZQBtMFNaNbNeQBqmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi13Vmi21ZQvTSQCwQCv__TQBiVmi6Vmi13ZQBvTSQDxQDw__TQCjVmi0Vmi6ZQCvZQEl__T8addValueVmi2TtZQqMFNaNbNetmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj10putRangeAtMFNaNbNemmtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj11__xopEqualsMxFKxSQEqQEp__TQEoTtTwVii1114112TQEeTQDbZQFoZb@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj14ConstructState6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj5buildMFNaNbNeZSQEnQEm__T4TrieTtTwVmi1114112TQEdTQDaZQBc@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj5putAtMFNaNbNemtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__ctorMFNaNbNcNetZSQErQEq__TQEpTtTwVii1114112TQEfTQDcZQFp@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj6__initZ@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj8putRangeMFNaNewwtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj8putValueMFNaNewtZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj9__xtoHashFNbNeKxSQEpQEo__TQEnTtTwVii1114112TQEdTQDaZQFnZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T14deduceMaxIndexTQDeTQCbZQzFNaNbNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T15spillToNextPageVmi0TSQExQEw__T19PackedArrayViewImplTSQGdQGc__T9BitPackedTkVmi12ZQsVmi16ZQCgZQDqMFNaNbNiNeKQDiZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T15spillToNextPageVmi1TSQExQEw__T19PackedArrayViewImplTtVmi16ZQBdZQCnMFNaNbNeKQCdZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T19spillToNextPageImplVmi1TSQFbQFa__T19PackedArrayViewImplTtVmi16ZQBdZQCrMFNaNbNeKQCdZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T3idxVmi0ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T3idxVmi1ZQjMFNaNbNcNdNiNeZm@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T8addValueVmi0TSQEpQEo__T9BitPackedTkVmi12ZQsZQBtMFNaNbNiNeQBsmZv@Base 15 ++ _D3std3uni__T11TrieBuilderTtTwVii1114112TSQBoQBn__T9sliceBitsVmi9Vmi21ZQuTSQCvQCu__TQBhVmi0Vmi9ZQBtZQDj__T8addValueVmi1TtZQqMFNaNbNetmZv@Base 15 ++ _D3std3uni__T11copyForwardTiTkZQsFNaNbNiNfAiAkZv@Base 15 ++ _D3std3uni__T11copyForwardTkTkZQsFNaNbNiNfAkQcZv@Base 15 ++ _D3std3uni__T11copyForwardTmTmZQsFNaNbNiNfAmQcZv@Base 15 ++ _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables6blocks3tabFNaNdNfZAySQCzQByQBs15UnicodePropertyTaZQDrFNaNfMxAaZb@Base 15 ++ _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables7scripts3tabFNaNdNfZAySQDaQBzQBt15UnicodePropertyTaZQDsFNaNfMxAaZb@Base 15 ++ _D3std3uni__T11findSetNameS_DQBb8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDbQCaQBu15UnicodePropertyTaZQDtFNaNfMxAaZb@Base 15 ++ _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFNfZSQIpQIo__T13InversionListTSQJpQJo8GcPolicyZQBh@Base 15 ++ _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFZ11initializedb@Base 15 ++ _D3std3uni__T11memoizeExprVAyaa91_756e69636f64652e416c7068616265746963207c20756e69636f64652e4d6e207c20756e69636f64652e4d630a20202020202020207c20756e69636f64652e4d65207c20756e69636f64652e4e64207c20756e69636f64652e5063ZQHwFZ4slotSQIsQIr__T13InversionListTSQJsQJr8GcPolicyZQBh@Base 15 ++ _D3std3uni__T12fullCasedCmpTAxwZQtFNaNbNiNfwwKQsZi@Base 15 ++ _D3std3uni__T12fullCasedCmpTSQBb3utf__T5byUTFTwVEQBv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQEyQDx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultZQHcFNaNbNiNfwwKQHcZi@Base 15 ++ _D3std3uni__T12fullCasedCmpTSQBb3utf__T5byUTFTwVEQBv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQEyQDx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultZQHcFNaNbNiNfwwKQHcZi@Base 15 ++ _D3std3uni__T12loadPropertyTSQBbQBa__T13InversionListTSQCbQCa8GcPolicyZQBhTaZQCmFNaNfMxAaKQCkZb@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi5Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi5ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi5Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi5ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi6Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi6ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi6Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi6ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi7Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi7ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi7Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi7ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi8Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi8ZQCvZ__TQEbTiZQEhFNaNbNiNfiZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi13Vmi21ZQvTSQCjQCi__TQBiVmi8Vmi13ZQBvTSQDkQDj__TQCjVmi0Vmi8ZQCvZ__TQEbTwZQEhFNaNbNiNfwZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi14Vmi21ZQvTSQCjQCi__TQBiVmi10Vmi14ZQBwTSQDlQDk__TQCkVmi6Vmi10ZQCxTSQEmQEl__TQDlVmi0Vmi6ZQDxZ__TQFdTiZQFjFNaNbNiNfiZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi14Vmi21ZQvTSQCjQCi__TQBiVmi10Vmi14ZQBwTSQDlQDk__TQCkVmi6Vmi10ZQCxTSQEmQEl__TQDlVmi0Vmi6ZQDxZ__TQFdTwZQFjFNaNbNiNfwZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi8Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi8ZQBtZ__TQCzTiZQDfFNaNbNiNfiZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi8Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi8ZQBtZ__TQCzTwZQDfFNaNbNiNfwZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi9Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi9ZQBtZ__TQCzTiZQDfFNaNbNiNfiZm@Base 15 ++ _D3std3uni__T12mapTrieIndexTSQBbQBa__T9sliceBitsVmi9Vmi21ZQuTSQCiQCh__TQBhVmi0Vmi9ZQBtZ__TQCzTwZQDfFNaNbNiNfwZm@Base 15 ++ _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTaZQDvFNaNfMxAaZm@Base 15 ++ _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTuZQDvFNaNfMxAuZm@Base 15 ++ _D3std3uni__T12toCaseLengthS_DQBcQBb12toLowerIndexFNaNbNiNewZtVki1460S_DQCsQCr10toLowerTabFNaNbNiNemZwZ__TQDpTwZQDvFNaNfMxAwZm@Base 15 ++ _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTaZQDvFNaNfMxAaZm@Base 15 ++ _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTuZQDvFNaNfMxAuZm@Base 15 ++ _D3std3uni__T12toCaseLengthS_DQBcQBb12toUpperIndexFNaNbNiNewZtVki1477S_DQCsQCr10toUpperTabFNaNbNiNemZwZ__TQDpTwZQDvFNaNfMxAwZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh10byIntervalMFNaNbNdNlNfZSQCvQCu__TQCtTQChZQDb__T9IntervalsTAkZQo@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11__fieldDtorMFNaNbNiNeZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11__xopEqualsMxFKxSQCoQCn__TQCmTQCaZQCuZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11addIntervalMFNaNbNlNfiimZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNaNbNdNfZSQCuQCt__TQCsTQCgZQDaQBtMFNdNfZ14CodepointRange@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange11__xopEqualsMxFKxSQDyQDx__TQDwTQDkZQEeQCxMFNdNfZQCnZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange5frontMxFNaNbNdNiNfZw@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__ctorMFNaNbNcNfSQDxQDw__TQDvTQDjZQEdZSQEtQEs__TQErTQEfZQEzQDsMFNdNfZQDi@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__initZ@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange9__xtoHashFNbNeKxSQDxQDw__TQDvTQDjZQEdQCwMFNdNfZQCmZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZQe@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T11binaryScopeTQBxZQsFNfQCgQBhZQBl@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T11linearScopeTQBxZQsFNaNfQCiQBjZQBn@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeFNfAxSQCpQCo17CodepointIntervalAyaZ__T6bisectTQBrZQmFNfQCamQBcZQBg@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh12toSourceCodeMFNfAyaZQe@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6lengthMFNaNbNdNfZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh7opIndexMxFNaNbNiNfkZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh7subCharMFNaNbNcNfwZSQCqQCp__TQCoTQCcZQCw@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8dropUpToMFNaNbNfkmZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8invertedMFNaNbNdNfZSQCqQCp__TQCoTQCcZQCw@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8opAssignMFNaNbNcNiNjNeSQCtQCs__TQCrTQCfZQCzZQw@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8sanitizeMFNaNfZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh8skipUpToMFNaNbNfkmZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh9__xtoHashFNbNeKxSQCnQCm__TQClTQBzZQCtZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh9intervalsMxFNaNbNdNfZAxSQCuQCt17CodepointInterval@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_26TSQCvQCu__TQCtTQChZQDbZQBsMFNaNbNcNfQBjZQBn@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_7cTSQCvQCu__TQCtTQChZQDbZQBsMFNaNbNcNfQBjZQBn@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T10opOpAssignVAyaa1_7cTwZQyMFNaNbNcNfwZSQDlQDk__TQDjTQCxZQDr@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T13fromIntervalsTSQCpQCo21DecompressedIntervalsZQBvFNaNfQBnZSQEgQEf__TQEeTQDsZQEm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T13fromIntervalsZQqFNaNbNfAkXSQDbQDa__TQCzTQCnZQDh@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T3addTSQCeQCd__TQCcTQBqZQCkZQBbMFNaNbNcNfQBjZQBn@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T6__ctorTSQChQCg__TQCfTQBtZQCnZQBeMFNaNbNcNfQBjZQBn@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T8opBinaryVAyaa1_26TSQCsQCr__TQCqTQCeZQCyZQBpMFNaNbNfQBhZQBl@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T8opBinaryVAyaa1_7cTSQCsQCr__TQCqTQCeZQCyZQBpMFNaNbNfQBhZQBl@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo11__xopEqualsMxFKxSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCoZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo13opIndexAssignMFNaNbNiNfSQDoQDn17CodepointIntervalmZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4backMFNaNbNdNiNfSQDgQDf17CodepointIntervalZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4backMxFNaNbNdNiNfZSQDiQDh17CodepointInterval@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo4saveMFNaNbNdNiNfZSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCo@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5frontMFNaNbNdNiNfSQDhQDg17CodepointIntervalZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo5frontMxFNaNbNdNiNfZSQDjQDi17CodepointInterval@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__ctorMFNaNbNcNiNlNfQBaZSQDoQDn__TQDmTQDaZQDu__TQCnTQCgZQCv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__ctorMFNaNbNcNiNlNfQBammZSQDqQDp__TQDoTQDcZQDw__TQCpTQCiZQCx@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7opIndexMxFNaNbNiNfmZSQDkQDj17CodepointInterval@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7opSliceMFNaNbNiNfmmZSQDkQDj__TQDiTQCwZQDq__TQCjTQCcZQCr@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo9__xtoHashFNbNeKxSQDgQDf__TQDeTQCsZQDm__TQCfTQByZQCnZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp11__xopEqualsMxFKxSQDiQDh__TQDgTQCuZQDo__TQChTQCaZQCpZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp4backMxFNaNbNdNiNfZSQDjQDi17CodepointInterval@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp4saveMFNaNbNdNiNfZSQDiQDh__TQDgTQCuZQDo__TQChTQCaZQCp@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp5frontMxFNaNbNdNiNfZSQDkQDj17CodepointInterval@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__ctorMFNaNbNcNiNlNfQBbZSQDpQDo__TQDnTQDbZQDv__TQCoTQChZQCw@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__ctorMFNaNbNcNiNlNfQBbmmZSQDrQDq__TQDpTQDdZQDx__TQCqTQCjZQCy@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__initZ@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7opIndexMxFNaNbNiNfmZSQDlQDk17CodepointInterval@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7opSliceMFNaNbNiNfmmZSQDlQDk__TQDjTQCxZQDr__TQCkTQCdZQCs@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp9__xtoHashFNbNeKxSQDhQDg__TQDfTQCtZQDn__TQCgTQBzZQCoZm@Base 15 ++ _D3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9intersectTSQCkQCj__TQCiTQBwZQCqZQBhMFNaNbNcNfQBjZQBn@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy11simpleWriteMFNaNbNibmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy13opIndexAssignMFNaNbNibmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi1ZQDz@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa11simpleIndexMNgFNaNbNimZQCm@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa11simpleWriteMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__ctorMNgFNaNbNcNiNfPNgmZNgSQDrQDq__TQDpTQDdVmi16ZQEc@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy11simpleWriteMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi8ZQDz@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy11simpleIndexMNgFNaNbNimZQCk@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy11simpleWriteMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy13opIndexAssignMFNaNbNiQCimZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__ctorMNgFNaNbNcNiNfPNgmZNgSQDpQDo__TQDnTQDbVmi8ZQDz@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy7opIndexMNgFNaNbNimZQCf@Base 15 ++ _D3std3uni__T13PackedPtrImplThVmi8ZQw11simpleIndexMNgFNaNbNimZh@Base 15 ++ _D3std3uni__T13PackedPtrImplThVmi8ZQw11simpleWriteMFNaNbNihmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplThVmi8ZQw13opIndexAssignMFNaNbNihmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplThVmi8ZQw6__ctorMNgFNaNbNcNiNfPNgmZNgSQCmQCl__TQCkThVmi8ZQCu@Base 15 ++ _D3std3uni__T13PackedPtrImplThVmi8ZQw6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplThVmi8ZQw7opIndexMNgFNaNbNimZh@Base 15 ++ _D3std3uni__T13PackedPtrImplTtVmi16ZQx11simpleIndexMNgFNaNbNimZt@Base 15 ++ _D3std3uni__T13PackedPtrImplTtVmi16ZQx11simpleWriteMFNaNbNitmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTtVmi16ZQx13opIndexAssignMFNaNbNitmZv@Base 15 ++ _D3std3uni__T13PackedPtrImplTtVmi16ZQx6__ctorMNgFNaNbNcNiNfPNgmZNgSQCnQCm__TQClTtVmi16ZQCw@Base 15 ++ _D3std3uni__T13PackedPtrImplTtVmi16ZQx6__initZ@Base 15 ++ _D3std3uni__T13PackedPtrImplTtVmi16ZQx7opIndexMNgFNaNbNimZt@Base 15 ++ _D3std3uni__T13copyBackwardsTkTkZQuFNaNbNiNfAkQcZv@Base 15 ++ _D3std3uni__T13copyBackwardsTmTmZQuFNaNbNiNfAmQcZv@Base 15 ++ _D3std3uni__T13replicateBitsVmi1Vmi64ZQzFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T13replicateBitsVmi2Vmi32ZQzFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T13replicateBitsVmi4Vmi16ZQzFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T13replicateBitsVmi64Vmi1ZQzFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T13replicateBitsVmi8Vmi8ZQyFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTaZQDpFNaNeKAaZ6moveToFNaNbNiNfQtmmmZm@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTaZQDpFNaNeKAaZv@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTuZQDpFNaNeKAuZ6moveToFNaNbNiNfQtmmmZm@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTuZQDpFNaNeKAuZv@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTwZQDpFNaNeKAwZ6moveToFNaNbNiNfQtmmmZm@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toLowerIndexFNaNbNiNewZtVii1460S_DQCtQCs10toLowerTabFNaNbNiNemZwTwZQDpFNaNeKAwZv@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTaZQDpFNaNeKAaZ6moveToFNaNbNiNfQtmmmZm@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTaZQDpFNaNeKAaZv@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTuZQDpFNaNeKAuZ6moveToFNaNbNiNfQtmmmZm@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTuZQDpFNaNeKAuZv@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTwZQDpFNaNeKAwZ6moveToFNaNbNiNfQtmmmZm@Base 15 ++ _D3std3uni__T13toCaseInPlaceS_DQBdQBc12toUpperIndexFNaNbNiNewZtVii1477S_DQCtQCs10toUpperTabFNaNbNiNemZwTwZQDpFNaNeKAwZv@Base 15 ++ _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables6blocks3tabFNaNdNfZAySQDcQByQBs15UnicodePropertyTaZQDuFNaNfMxAaZl@Base 15 ++ _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables7scripts3tabFNaNdNfZAySQDdQBzQBt15UnicodePropertyTaZQDvFNaNfMxAaZl@Base 15 ++ _D3std3uni__T14findUnicodeSetS_DQBe8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDeQCaQBu15UnicodePropertyTaZQDwFNaNfMxAaZl@Base 15 ++ _D3std3uni__T14genericReplaceTvTSQBfQBe__T8CowArrayTSQBzQBy8GcPolicyZQBbTAiZQClFNaNbNeKQCdmmQtZm@Base 15 ++ _D3std3uni__T14genericReplaceTvTSQBfQBe__T8CowArrayTSQBzQBy8GcPolicyZQBbTAkZQClFNaNbNeKQCdmmQtZm@Base 15 ++ _D3std3uni__T14graphemeStrideTaZQtFNaNfMxAamZm@Base 15 ++ _D3std3uni__T14graphemeStrideTuZQtFNaNfMxAumZm@Base 15 ++ _D3std3uni__T14graphemeStrideTwZQtFNaNbNiNfMxAwmZm@Base 15 ++ _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables6blocks3tabFNaNdNfZAySQDcQByQBs15UnicodePropertyTSQEeQEd__T13InversionListTSQFeQFd8GcPolicyZQBhTaZQFpFNaNfMxAaKQCkZb@Base 15 ++ _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables7scripts3tabFNaNdNfZAySQDdQBzQBt15UnicodePropertyTSQEfQEe__T13InversionListTSQFfQFe8GcPolicyZQBhTaZQFqFNaNfMxAaKQCkZb@Base 15 ++ _D3std3uni__T14loadUnicodeSetS_DQBe8internal14unicode_tables8uniProps3tabFNaNdNfZAySQDeQCaQBu15UnicodePropertyTSQEgQEf__T13InversionListTSQFgQFf8GcPolicyZQBhTaZQFrFNaNfMxAaKQCkZb@Base 15 ++ _D3std3uni__T14toLowerInPlaceTaZQtFNaNeKAaZv@Base 15 ++ _D3std3uni__T14toLowerInPlaceTuZQtFNaNeKAuZv@Base 15 ++ _D3std3uni__T14toLowerInPlaceTwZQtFNaNeKAwZv@Base 15 ++ _D3std3uni__T14toUpperInPlaceTaZQtFNaNeKAaZv@Base 15 ++ _D3std3uni__T14toUpperInPlaceTuZQtFNaNeKAuZv@Base 15 ++ _D3std3uni__T14toUpperInPlaceTwZQtFNaNeKAwZv@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTbVmi1ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi1ZQBe@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi11ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi12ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi13ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi14ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi15ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi16ZQsZQBxFNaNbNiNfPNgmmZNgSQDdQDc__T19PackedArrayViewImplTQDfVmi16ZQBf@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi7ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi8ZQBe@Base 15 ++ _D3std3uni__T15packedArrayViewTSQBeQBd__T9BitPackedTkVmi8ZQrZQBwFNaNbNiNfPNgmmZNgSQDcQDb__T19PackedArrayViewImplTQDeVmi8ZQBe@Base 15 ++ _D3std3uni__T15packedArrayViewThZQuFNaNbNiNfPNgmmZNgSQBzQBy__T19PackedArrayViewImplThVmi8ZQBc@Base 15 ++ _D3std3uni__T15packedArrayViewTtZQuFNaNbNiNfPNgmmZNgSQBzQBy__T19PackedArrayViewImplTtVmi16ZQBd@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk11__xopEqualsMxFKxSQCrQCq__TQCpTQCaZQCxZb@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk13opIndexAssignMFNaNbNiNfwmZv@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4backMFNaNbNdNiNfwZv@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4backMxFNaNbNdNiNfZw@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk4saveMNgFNaNbNdNiNfZNgSQCvQCu__TQCtTQCeZQDb@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5frontMFNaNbNdNiNfwZv@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk5frontMxFNaNbNdNiNfZw@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6__initZ@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opIndexMxFNaNbNiNfmZw@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opSliceMFNaNbNiNfZSQCsQCr__TQCqTQCbZQCy@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCdZQDa@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk__T8opEqualsTxSQCnQCm__TQClTQBwZQCtZQBhMxFNaNbNiNfKxQBmZb@Base 15 ++ _D3std3uni__T16codepointSetTrieVii13Vii8Z__TQBfTSQBvQBu__T13InversionListTSQCvQCu8GcPolicyZQBhZQDeFNaNfQCdZSQEcQEb__T4TrieTSQEsQEr__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGiQGh__T9sliceBitsVmi8Vmi21ZQuTSQHpQHo__TQBhVmi0Vmi8ZQBtZQEd@Base 15 ++ _D3std3uni__T16propertyNameLessTaTaZQxFNaNfAxaQdZb@Base 15 ++ _D3std3uni__T16sliceOverIndexedTSQBfQBe8GraphemeZQBkFNaNbNiNfmmPQBgZSQCpQCo__T16SliceOverIndexedTQCnZQx@Base 15 ++ _D3std3uni__T18__lambda_L7012_C26TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7035_C23TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7044_C23TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7054_C22TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7074_C22TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7089_C24TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7101_C26TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7124_C29TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7133_C28TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18__lambda_L7146_C24TEQBhQBg13GraphemeStateTwZQBuFNaNbNiNfKQBmwZEQCyQCx12TransformRes@Base 15 ++ _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTaZQEbFNaNeKAammZv@Base 15 ++ _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTuZQEbFNaNeKAummZv@Base 15 ++ _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toLowerIndexFNaNbNiNewZtVki1460S_DQCyQCx10toLowerTabFNaNbNiNemZwZ__TQDvTwZQEbFNaNeKAwmmZv@Base 15 ++ _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTaZQEbFNaNeKAammZv@Base 15 ++ _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTuZQEbFNaNeKAummZv@Base 15 ++ _D3std3uni__T18toCaseInPlaceAllocS_DQBiQBh12toUpperIndexFNaNbNiNewZtVki1477S_DQCyQCx10toUpperTabFNaNbNiNemZwZ__TQDvTwZQEbFNaNeKAwmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi1ZQDvZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opIndexAssignMFNaNbNibmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe13opSliceAssignMFNaNbNibmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi1ZQEh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi1ZQDw@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi1ZQEc@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi1ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg11__xopEqualsMxFKxSQDnQDm__TQDlTQCtVmi16ZQDyZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opIndexAssignMFNaNbNiQCkmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opSliceAssignMFNaNbNiQCkmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg13opSliceAssignMFNaNbNikmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDzQDy__TQDxTQDfVmi16ZQEk@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opIndexMNgFNaNbNimZQCh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opSliceMFNaNbNiNfZSQDoQDn__TQDmTQCuVmi16ZQDz@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg7opSliceMNgFNaNbNiNfmmZNgSQDuQDt__TQDsTQDaVmi16ZQEf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T8opEqualsTxSQDjQDi__TQDhTQCpVmi16ZQDuZQBmMxFNaNbNiKxQBpZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi8ZQDvZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe13opSliceAssignMFNaNbNikmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi8ZQEh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi8ZQDw@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi8ZQEc@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi8ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe11__xopEqualsMxFKxSQDlQDk__TQDjTQCrVmi8ZQDvZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opIndexAssignMFNaNbNiQCimZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opIndexAssignMFNaNbNikmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opSliceAssignMFNaNbNiQCimmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe13opSliceAssignMFNaNbNikmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQDxQDw__TQDvTQDdVmi8ZQEh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opIndexMNgFNaNbNimZQCf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opSliceMFNaNbNiNfZSQDmQDl__TQDkTQCsVmi8ZQDw@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe7opSliceMNgFNaNbNiNfmmZNgSQDsQDr__TQDqTQCyVmi8ZQEc@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T8opEqualsTxSQDhQDg__TQDfTQCnVmi8ZQDrZQBlMxFNaNbNiKxQBoZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc11__xopEqualsMxFKxSQCjQCi__TQChThVmi8ZQCrZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc13opIndexAssignMFNaNbNihmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc13opSliceAssignMFNaNbNihmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQCvQCu__TQCtThVmi8ZQDd@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opIndexMNgFNaNbNimZh@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opSliceMFNaNbNiNfZSQCkQCj__TQCiThVmi8ZQCs@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc7opSliceMNgFNaNbNiNfmmZNgSQCqQCp__TQCoThVmi8ZQCy@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T8opEqualsTxSQCfQCe__TQCdThVmi8ZQCnZQBjMxFNaNbNiKxQBmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplThVmi8ZQBc__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd11__xopEqualsMxFKxSQCkQCj__TQCiTtVmi16ZQCtZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd13opIndexAssignMFNaNbNitmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd13opSliceAssignMFNaNbNitmmZv@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd5zerosMFNaNbNimmZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__ctorMNgFNaNbNcNiNfPNgmmmZNgSQCwQCv__TQCuTtVmi16ZQDf@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__initZ@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opIndexMNgFNaNbNimZt@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opSliceMFNaNbNiNfZSQClQCk__TQCjTtVmi16ZQCu@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd7opSliceMNgFNaNbNiNfmmZNgSQCrQCq__TQCpTtVmi16ZQDa@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T7roundUpZQjMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T8opEqualsTxSQCgQCf__TQCeTtVmi16ZQCpZQBkMxFNaNbNiKxQBnZb@Base 15 ++ _D3std3uni__T19PackedArrayViewImplTtVmi16ZQBd__T9roundDownZQlMFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZb@Base 15 ++ _D3std3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZi@Base 15 ++ _D3std3uni__T20isPrettyPropertyNameTaZQzFNaNfMxAaZb@Base 15 ++ _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxaZQCgFNaNfKQnZv@Base 15 ++ _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxuZQCgFNaNfKQnZv@Base 15 ++ _D3std3uni__T21genericDecodeGraphemeVEQBkQBj11GraphemeReti0Z__TQByTAxwZQCgFNaNbNiNfKQrZv@Base 15 ++ _D3std3uni__T23switchUniformLowerBoundSQBl10functional__T9binaryFunVAyaa6_61203c3d2062VQta1_61VQBba1_62ZQBvTAxkTkZQDxFNaNbNiNfQskZm@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd11__xopEqualsMxFKxSQGkQGj__TQGiTQGgTwVmi1114112TQFiTQEeTQDhZQHoZb@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd6__initZ@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd9__xtoHashFNbNeKxSQGjQGi__TQGhTQGfTwVmi1114112TQFhTQEdTQDgZQHnZm@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T6__ctorZQiMFNaNbNcNiNeSQGrQGq__T10MultiArrayTSQHoQHn__TQGyTkVmi8ZQHiTSQImQIl__TQHwTkVmi14ZQIhTQItZQCoZSQJtQJs__TQJrTQJpTwVmi1114112TQIrTQHnTQGqZQKx@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQHbQHa__TQGzTQGxTwVmi1114112TQFzTQEvTQDyZQIf@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi7Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi7ZQCvZQFd__T7opIndexZQjMxFNaNbNiNewZb@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd11__xopEqualsMxFKxSQGkQGj__TQGiTQGgTwVmi1114112TQFiTQEeTQDhZQHoZb@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd6__initZ@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd9__xtoHashFNbNeKxSQGjQGi__TQGhTQGfTwVmi1114112TQFhTQEdTQDgZQHnZm@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T6__ctorZQiMFNaNbNcNiNeSQGrQGq__T10MultiArrayTSQHoQHn__TQGyTkVmi8ZQHiTSQImQIl__TQHwTkVmi13ZQIhTQItZQCoZSQJtQJs__TQJrTQJpTwVmi1114112TQIrTQHnTQGqZQKx@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQHbQHa__TQGzTQGxTwVmi1114112TQFzTQEvTQDyZQIf@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi13Vmi21ZQvTSQDoQDn__TQBiVmi8Vmi13ZQBvTSQEpQEo__TQCjVmi0Vmi8ZQCvZQFd__T7opIndexZQjMxFNaNbNiNewZb@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf11__xopEqualsMxFKxSQHmQHl__TQHkTQHiTwVmi1114112TQGkTQFgTQEiTQDlZQIuZb@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf6__initZ@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf9__xtoHashFNbNeKxSQHlQHk__TQHjTQHhTwVmi1114112TQGjTQFfTQEhTQDkZQItZm@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T6__ctorZQiMFNaNbNcNiNeSQHtQHs__T10MultiArrayTSQIqQIp__TQIaTkVmi7ZQIkTSQJoQJn__TQIyTkVmi11ZQJjTSQKnQKm__TQJxTkVmi15ZQKiTQKuZQDnZSQLuQLt__TQLsTQLqTwVmi1114112TQKsTQJoTQIqTQHtZQNc@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQIdQIc__TQIbTQHzTwVmi1114112TQHbTQFxTQEzTQEcZQJl@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi14Vmi21ZQvTSQDoQDn__TQBiVmi10Vmi14ZQBwTSQEqQEp__TQCkVmi6Vmi10ZQCxTSQFrQFq__TQDlVmi0Vmi6ZQDxZQGf__T7opIndexZQjMxFNaNbNiNewZb@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb11__xopEqualsMxFKxSQFiQFh__TQFgTQFeTwVmi1114112TQEgTQDdZQGiZb@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb6__initZ@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb9__xtoHashFNbNeKxSQFhQFg__TQFfTQFdTwVmi1114112TQEfTQDcZQGhZm@Base 15 ++ _D3std3uni__T4TrieTSQsQq__T9BitPackedTbVmi1ZQrTwVmi1114112TSQCgQCf__T9sliceBitsVmi8Vmi21ZQuTSQDnQDm__TQBhVmi0Vmi8ZQBtZQEb__T6__ctorZQiMFNaNbNcNiNeSQFpQFo__T10MultiArrayTSQGmQGl__TQFwTkVmi13ZQGhTQGtZQBqZSQHtQHs__TQHrTQHpTwVmi1114112TQGrTQFoZQIt@Base 15 ++ _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiThTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 ++ _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 ++ _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhThTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 ++ _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi16ZQBpThZQCsZSQIxQIw__TQIvThTwVmi1114112TQItTQHpTQGsZQJz@Base 15 ++ _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzThTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 ++ _D3std3uni__T4TrieThTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T7opIndexZQjMxFNaNbNiNewZh@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiTtTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd6__initZ@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhTtTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi16ZQBpTtZQCsZSQIxQIw__TQIvTtTwVmi1114112TQItTQHpTQGsZQJz@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi5Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi5ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzTtTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd11__xopEqualsMxFKxSQFkQFj__TQFiTtTwVmi1114112TQFgTQEcTQDfZQGmZb@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd6__initZ@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd9__xtoHashFNbNeKxSQFjQFi__TQFhTtTwVmi1114112TQFfTQEbTQDeZQGlZm@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T6__ctorZQiMFNaNbNcNiNeSQFrQFq__T10MultiArrayTSQGoQGn__T9BitPackedTkVmi8ZQrTSQHsQHr__TQBeTkVmi15ZQBpTtZQCsZSQIxQIw__TQIvTtTwVmi1114112TQItTQHpTQGsZQJz@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQGbQGa__TQFzTtTwVmi1114112TQFxTQEtTQDwZQHd@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi13Vmi21ZQvTSQCoQCn__TQBiVmi6Vmi13ZQBvTSQDpQDo__TQCjVmi0Vmi6ZQCvZQEd__T7opIndexZQjMxFNaNbNiNewZt@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb11__xopEqualsMxFKxSQEiQEh__TQEgTtTwVmi1114112TQEeTQDbZQFgZb@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb6__initZ@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb9__xtoHashFNbNeKxSQEhQEg__TQEfTtTwVmi1114112TQEdTQDaZQFfZm@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T6__ctorZQiMFNaNbNcNiNeSQEpQEo__T10MultiArrayTSQFmQFl__T9BitPackedTkVmi12ZQsTtZQBuZSQGxQGw__TQGvTtTwVmi1114112TQGtTQFqZQHv@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T6__ctorZQiMxFNaNbNcNiNeAxmQdQfZxSQEzQEy__TQExTtTwVmi1114112TQEvTQDsZQFx@Base 15 ++ _D3std3uni__T4TrieTtTwVmi1114112TSQBgQBf__T9sliceBitsVmi9Vmi21ZQuTSQCnQCm__TQBhVmi0Vmi9ZQBtZQDb__T7opIndexZQjMxFNaNbNiNewZt@Base 15 ++ _D3std3uni__T4icmpTAxaTQeZQnFNaNbNiNfQsQuZi@Base 15 ++ _D3std3uni__T4icmpTAxuTQeZQnFNaNbNiNfQsQuZi@Base 15 ++ _D3std3uni__T4icmpTAxwTQeZQnFNaNbNiNfQsQuZi@Base 15 ++ _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm11__xopEqualsMxFKxSQCtQCs__TQCrTQCoZQCzZb@Base 15 ++ _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm3popMFNbNeZQBt@Base 15 ++ _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm3topMFNaNbNcNdNiNfZQCb@Base 15 ++ _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm4pushMFNaNbNfQBvZv@Base 15 ++ _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6__initZ@Base 15 ++ _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm9__xtoHashFNbNeKxSQCsQCr__TQCqTQCnZQCyZm@Base 15 ++ _D3std3uni__T5StackTkZQj11__xopEqualsMxFKxSQBpQBo__TQBnTkZQBtZb@Base 15 ++ _D3std3uni__T5StackTkZQj3popMFNbNeZk@Base 15 ++ _D3std3uni__T5StackTkZQj3topMFNaNbNcNdNiNfZk@Base 15 ++ _D3std3uni__T5StackTkZQj4pushMFNaNbNfkZv@Base 15 ++ _D3std3uni__T5StackTkZQj5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T5StackTkZQj6__initZ@Base 15 ++ _D3std3uni__T5StackTkZQj6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T5StackTkZQj9__xtoHashFNbNeKxSQBoQBn__TQBmTkZQBsZm@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi11ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi11ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi12ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi12ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi13ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi13ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi14ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi14ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi15ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi15ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi16ZQsTQBdZQBoFNaNbNiNfQBtZQBx@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi16ZQsTmZQBmFNaNbNiNfmZQBt@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi7ZQrTQBcZQBnFNaNbNiNfQBsZQBw@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi7ZQrTmZQBlFNaNbNiNfmZQBs@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi8ZQrTQBcZQBnFNaNbNiNfQBsZQBw@Base 15 ++ _D3std3uni__T5forceTSQtQr__T9BitPackedTkVmi8ZQrTmZQBlFNaNbNiNfmZQBs@Base 15 ++ _D3std3uni__T5forceTkTiZQlFNaNbNiNfiZk@Base 15 ++ _D3std3uni__T5sicmpTAxaTQeZQoFNaNbNiNfMQtMQwZi@Base 15 ++ _D3std3uni__T5sicmpTAxuTQeZQoFNaNbNiNfMQtMQwZi@Base 15 ++ _D3std3uni__T5sicmpTAxwTQeZQoFNaNbNiNfMQtMQwZi@Base 15 ++ _D3std3uni__T6asTrieTbVii7Vii4Vii4Vii6ZQBaFNaNbNiNfMxSQCa8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBdZxSQEoQEn__T4TrieTSQFeQFd__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGuQGt__T9sliceBitsVmi14Vmi21ZQvTSQIcQIb__TQBiVmi10Vmi14ZQBwTSQJeQJd__TQCkVmi6Vmi10ZQCxTSQKfQKe__TQDlVmi0Vmi6ZQDxZQGh@Base 15 ++ _D3std3uni__T6asTrieTbVii8Vii5Vii8ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQzZxSQEeQEd__T4TrieTSQEuQEt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGkQGj__T9sliceBitsVmi13Vmi21ZQvTSQHsQHr__TQBiVmi8Vmi13ZQBvTSQItQIs__TQCjVmi0Vmi8ZQCvZQFf@Base 15 ++ _D3std3uni__T6asTrieTbVii8Vii6Vii7ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQzZxSQEeQEd__T4TrieTSQEuQEt__T9BitPackedTbVmi1ZQrTwVmi1114112TSQGkQGj__T9sliceBitsVmi13Vmi21ZQvTSQHsQHr__TQBiVmi7Vmi13ZQBvTSQItQIs__TQCjVmi0Vmi7ZQCvZQFf@Base 15 ++ _D3std3uni__T6asTrieThVii8Vii8Vii5ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQzZxSQEeQEd__T4TrieThTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi5Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi5ZQCvZQEd@Base 15 ++ _D3std3uni__T6asTrieTtVii12Vii9ZQtFNaNbNiNfMxSQBs8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQwZxSQDyQDx__T4TrieTtTwVmi1114112TSQFcQFb__T9sliceBitsVmi9Vmi21ZQuTSQGjQGi__TQBhVmi0Vmi9ZQBtZQDb@Base 15 ++ _D3std3uni__T6asTrieTtVii8Vii7Vii6ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQzZxSQEeQEd__T4TrieTtTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi6Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi6ZQCvZQEd@Base 15 ++ _D3std3uni__T6asTrieTtVii8Vii8Vii5ZQwFNaNbNiNfMxSQBv8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQzZxSQEeQEd__T4TrieTtTwVmi1114112TSQFiQFh__T9sliceBitsVmi13Vmi21ZQvTSQGqQGp__TQBiVmi5Vmi13ZQBvTSQHrQHq__TQCjVmi0Vmi5ZQCvZQEd@Base 15 ++ _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAxaZQDzFNaNfQmZQp@Base 15 ++ _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAyaZQDzFNaNfQmZQp@Base 15 ++ _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAyuZQDzFNaNfQmZQp@Base 15 ++ _D3std3uni__T6toCaseS_DQvQt12toLowerIndexFNaNbNiNewZtVii1460S_DQCjQCi10toLowerTabFNaNbNiNemZwSQDo5ascii7toLowerTAywZQDzFNaNbNfQoZQr@Base 15 ++ _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAyaZQDzFNaNfQmZQp@Base 15 ++ _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAyuZQDzFNaNfQmZQp@Base 15 ++ _D3std3uni__T6toCaseS_DQvQt12toUpperIndexFNaNbNiNewZtVii1477S_DQCjQCi10toUpperTabFNaNbNiNemZwSQDo5ascii7toUpperTAywZQDzFNaNbNfQoZQr@Base 15 ++ _D3std3uni__T7toLowerTAxaZQnFNaNeNkMQoZQr@Base 15 ++ _D3std3uni__T7toLowerTAyaZQnFNaNeNkMQoZQr@Base 15 ++ _D3std3uni__T7toLowerTAyuZQnFNaNeNkMQoZQr@Base 15 ++ _D3std3uni__T7toLowerTAywZQnFNaNbNeNkMQqZQt@Base 15 ++ _D3std3uni__T7toUpperTAyaZQnFNaNeNkMQoZQr@Base 15 ++ _D3std3uni__T7toUpperTAyuZQnFNaNeNkMQoZQr@Base 15 ++ _D3std3uni__T7toUpperTAywZQnFNaNbNeNkMQqZQt@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf10__postblitMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf11__xopEqualsMxFKxSQCmQCl__TQCkTQCeZQCsZb@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf13opIndexAssignMFNaNbNiNfkmZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf16dupThisReferenceMFNaNbNiNfkZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf17freeThisReferenceMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf5reuseFNaNbNiNfAkZSQCmQCl__TQCkTQCeZQCs@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__dtorMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__initZ@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6lengthMFNaNbNdNiNfmZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMFNaNbNiNfZAk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMFNaNbNiNfmmZAk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMxFNaNbNiNfZAxk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf7opSliceMxFNaNbNiNfmmZAxk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8opAssignMFNaNbNcNiNjNeSQCrQCq__TQCpTQCjZQCxZQw@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8refCountMFNaNbNdNiNfkZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf8refCountMxFNaNbNdNiNfZk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf9__xtoHashFNbNeKxSQClQCk__TQCjTQCdZQCrZm@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf__T8opEqualsZQkMxFNaNbNiNfKxSQCwQCv__TQCuTQCoZQDcZb@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz10__postblitMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz11__xopEqualsMxFKxSQCfQCe__TQCdTQBxZQClZb@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz13opIndexAssignMFNaNbNfkmZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz16dupThisReferenceMFNaNbNfkZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz17freeThisReferenceMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz5reuseFNaNbNfAkZSQCdQCc__TQCbTQBvZQCj@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__dtorMFNaNbNiNfZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6lengthMFNaNbNdNfmZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMFNaNbNfZAk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMFNaNbNfmmZAk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMxFNaNbNiNfZAxk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz7opSliceMxFNaNbNiNfmmZAxk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8opAssignMFNaNbNcNiNjNeSQCkQCj__TQCiTQCcZQCqZQw@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8refCountMFNaNbNdNiNfkZv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz8refCountMxFNaNbNdNiNfZk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz9__xtoHashFNbNeKxSQCeQCd__TQCcTQBwZQCkZm@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6__ctorTAkZQlMFNaNbNcNfQpZSQCqQCp__TQCoTQCiZQCw@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6__ctorTSQBy5range__T10roundRobinTSQCy9algorithm9iteration__T9MapResultSQEj10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQGnQGm21DecompressedIntervalsZQDtTSQHwQEyQEr__TQEkSQImQEd__TQDuVQDoa4_615b315dVQEda1_61ZQEwTQDpZQGhZQHzFQHqQCvZ6ResultZQJnMFNaNcNfQJqZSQLsQLr__TQLqTQLkZQLy@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T6appendZQiMFNaNbNfAkXv@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T7opIndexZQjMxFNaNbNiNfmZk@Base 15 ++ _D3std3uni__T8CowArrayTSQwQu8GcPolicyZQz__T8opEqualsZQkMxFNaNbNiNfKxSQCpQCo__TQCnTQChZQCvZb@Base 15 ++ _D3std3uni__T8spaceForVmi11ZQpFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T8spaceForVmi12ZQpFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T8spaceForVmi13ZQpFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T8spaceForVmi14ZQpFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T8spaceForVmi15ZQpFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T8spaceForVmi16ZQpFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T8spaceForVmi1ZQoFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T8spaceForVmi7ZQoFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T8spaceForVmi8ZQoFNaNbNiNfmZm@Base 15 ++ _D3std3uni__T9BitPackedTbVmi1ZQr6__initZ@Base 15 ++ _D3std3uni__T9BitPackedTkVmi11ZQs6__initZ@Base 15 ++ _D3std3uni__T9BitPackedTkVmi12ZQs6__initZ@Base 15 ++ _D3std3uni__T9BitPackedTkVmi13ZQs6__initZ@Base 15 ++ _D3std3uni__T9BitPackedTkVmi14ZQs6__initZ@Base 15 ++ _D3std3uni__T9BitPackedTkVmi15ZQs6__initZ@Base 15 ++ _D3std3uni__T9BitPackedTkVmi16ZQs6__initZ@Base 15 ++ _D3std3uni__T9BitPackedTkVmi7ZQr6__initZ@Base 15 ++ _D3std3uni__T9BitPackedTkVmi8ZQr6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi5ZQt6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi5ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi5ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi6ZQt6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi6ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi6ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi7ZQt6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi7ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi7ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi8ZQt6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi8ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi8ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi9ZQt6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi9ZQt__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi0Vmi9ZQt__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi10Vmi14ZQv6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi10Vmi14ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi10Vmi14ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi13Vmi21ZQv6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi13Vmi21ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi13Vmi21ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi14Vmi21ZQv6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi14Vmi21ZQv__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi14Vmi21ZQv__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi5Vmi13ZQu6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi5Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi5Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi6Vmi10ZQu6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi6Vmi10ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi6Vmi10ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi6Vmi13ZQu6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi6Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi6Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi7Vmi13ZQu6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi7Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi7Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi8Vmi13ZQu6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi8Vmi13ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi8Vmi13ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi8Vmi21ZQu6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi8Vmi21ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi8Vmi21ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uni__T9sliceBitsVmi9Vmi21ZQu6__initZ@Base 15 ++ _D3std3uni__T9sliceBitsVmi9Vmi21ZQu__T6opCallTiZQkFNaNbNiNfiZi@Base 15 ++ _D3std3uni__T9sliceBitsVmi9Vmi21ZQu__T6opCallTwZQkFNaNbNiNfwZk@Base 15 ++ _D3std3uri10URI_EncodeFNaNfAywkZAya@Base 15 ++ _D3std3uri11__moduleRefZ@Base 15 ++ _D3std3uri12URIException6__initZ@Base 15 ++ _D3std3uri12URIException6__vtblZ@Base 15 ++ _D3std3uri12URIException7__ClassZ@Base 15 ++ _D3std3uri12URIException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCwQCvQCu@Base 15 ++ _D3std3uri12URIException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCwQCvQCu@Base 15 ++ _D3std3uri12__ModuleInfoZ@Base 15 ++ _D3std3uri9ascii2hexFNaNbNiNfwZk@Base 15 ++ _D3std3uri9hex2asciiyG16a@Base 15 ++ _D3std3uri9uri_flagsyG128h@Base 15 ++ _D3std3uri9urlEncodeFNaNfMHAyaQdZQg@Base 15 ++ _D3std3uri__T15encodeComponentTaZQuFNaNfMAxaZAya@Base 15 ++ _D3std3utf10strideImplFNaNeamZk@Base 15 ++ _D3std3utf11__moduleRefZ@Base 15 ++ _D3std3utf12UTFException11setSequenceMFNaNbNiNlNjNfAkXCQCbQCaQBz@Base 15 ++ _D3std3utf12UTFException6__ctorMFNaNbNfAyamQemC6object9ThrowableZCQCmQClQCk@Base 15 ++ _D3std3utf12UTFException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCnQCmQCl@Base 15 ++ _D3std3utf12UTFException6__initZ@Base 15 ++ _D3std3utf12UTFException6__vtblZ@Base 15 ++ _D3std3utf12UTFException7__ClassZ@Base 15 ++ _D3std3utf12UTFException8toStringMxFZAya@Base 15 ++ _D3std3utf12__ModuleInfoZ@Base 15 ++ _D3std3utf12isValidDcharFNaNbNiNfwZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFNaNbNiNfQoZSQBqQBp__TQBoTQBfZQBwFQBnZ14ByCodeUnitImpl@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCqQCp__TQCoTQCfZQCwFQCnZQCiZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNga@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCqQCp__TQCoTQCfZQCwFQCnZQCi@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNga@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNga@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCtQCs__TQCrTQCiZQCzFQCqZQCl@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCpQCo__TQCnTQCeZQCvFQCmZQChZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNgxa@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNgxa@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNgxa@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZNgxu@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZNgxu@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZNgxu@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAxwZQrFNaNbNiNfQpZQs@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZya@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZya@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZya@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFNaNbNiNfQpZSQBrQBq__TQBpTQBgZQBxFQBoZ14ByCodeUnitImpl@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl11__xopEqualsMxFKxSQCrQCq__TQCpTQCgZQCxFQCoZQCiZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl4backMNgFNaNbNcNdNiNfZyu@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl4saveMFNaNbNdNiNfZSQCrQCq__TQCpTQCgZQCxFQCoZQCi@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl5frontMNgFNaNbNcNdNiNfZyu@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7opIndexMNgFNaNbNcNiNfmZyu@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7opSliceMFNaNbNiNfmmZSQCuQCt__TQCsTQCjZQDaFQCrZQCl@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl9__xtoHashFNbNeKxSQCqQCp__TQCoTQCfZQCwFQCnZQChZm@Base 15 ++ _D3std3utf__T10byCodeUnitTAywZQrFNaNbNiNfQpZQs@Base 15 ++ _D3std3utf__T10byCodeUnitTSQz4path__T16asNormalizedPathTSQCd5range__T5chainTSQCxQCw__TQCvTAyaZQDdFQiZ14ByCodeUnitImplTSQEnQCk__T10OnlyResultTaZQpTQCsZQDdFQDaQBnQDgZ6ResultZQFfFNkMQEtZQtZQGrFNaNbNiNfQGqZQGu@Base 15 ++ _D3std3utf__T10byCodeUnitTSQz5range__T5chainTSQBsQBr__TQBqTAxaZQByFQiZ14ByCodeUnitImplTSQDiQCk__T10OnlyResultTaZQpTQCsZQDdFQDaQBnQDgZ6ResultZQEyFNaNbNiNfQExZQFb@Base 15 ++ _D3std3utf__T10byCodeUnitTSQzQx__TQvTAaZQBbFQhZ14ByCodeUnitImplZQBzFNaNbNiNfQByZQCc@Base 15 ++ _D3std3utf__T10byCodeUnitTSQzQx__TQvTAxaZQBcFQiZ14ByCodeUnitImplZQCaFNaNbNiNfQBzZQCd@Base 15 ++ _D3std3utf__T10byCodeUnitTSQzQx__TQvTAyaZQBcFQiZ14ByCodeUnitImplZQCaFNaNbNiNfQBzZQCd@Base 15 ++ _D3std3utf__T10codeLengthTaZQpFNaNbNiNfwZh@Base 15 ++ _D3std3utf__T10codeLengthTuZQpFNaNbNiNfwZh@Base 15 ++ _D3std3utf__T10codeLengthTwZQpFNaNbNiNfwZh@Base 15 ++ _D3std3utf__T10codeLengthTxaZQqFNaNbNiNfwZh@Base 15 ++ _D3std3utf__T10codeLengthTyaZQqFNaNbNiNfwZh@Base 15 ++ _D3std3utf__T10codeLengthTyuZQqFNaNbNiNfwZh@Base 15 ++ _D3std3utf__T10codeLengthTywZQqFNaNbNiNfwZh@Base 15 ++ _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFgFNaNfKQChJmZw@Base 15 ++ _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFgFNaNfKQChZw@Base 15 ++ _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClJmZw@Base 15 ++ _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClZw@Base 15 ++ _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClJmZw@Base 15 ++ _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFgFNaNbNiNfKQClZw@Base 15 ++ _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFhFNaNfKQCiJmZw@Base 15 ++ _D3std3utf__T10decodeBackVEQz8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDuQDt__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFhFNaNfKQCiZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFKQjKmZ__T9exceptionTQBcZQpFNaNbNfQBpQDsZCQFvQFu12UTFException@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaKQlKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFNaQkKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDrFQiKmZ__T9exceptionTQBbZQpFNaNbNfQBoQDrZCQFuQFt12UTFException@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDrFNaKQlKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDrFNaQkKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxwZQDrFNaKQlKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxwZQDrFNaQkKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDrFNaNbNiKQpKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDrFNaNbNiQoKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDrFNaNbNiKQpKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDrFNaNbNiKQpKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFlFNaNbNiNfKQClKmZw@Base 15 ++ _D3std3utf__T10decodeImplVbi1VEQBd8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDzQDy__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFmFNaNbNiNfKQCmKmZw@Base 15 ++ _D3std3utf__T10strideBackTANgaZQsFNaNfKQnmZk@Base 15 ++ _D3std3utf__T10strideBackTAxaZQrFNaNfKQmmZk@Base 15 ++ _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfZk@Base 15 ++ _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfmZk@Base 15 ++ _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfKQCjZk@Base 15 ++ _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfZk@Base 15 ++ _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNfKQCfmZk@Base 15 ++ _D3std3utf__T10strideBackTSQzQx__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfKQCjZk@Base 15 ++ _D3std3utf__T10toUTFzImplTPaTAxaZQuFNaNbNfNkMQqZQw@Base 15 ++ _D3std3utf__T10toUTFzImplTPaTAyaZQuFNaNbNfNkMQqZQw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNeMKQnJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDnFNaNfKQmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDnFNaNeMKQnJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDnFNaNfKQmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDnFNaNeMKQnJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDnFNaNfKQmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDoFNaNeMKQoJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDoFNaNfKQnZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAywZQDoFNaNeMKQoJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAywZQDoFNaNfKQnZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDoFNaNbNiNeMKQsJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxaZQDoFNaNbNiNfKQrZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDoFNaNbNiNeMKQsJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxuZQDoFNaNbNiNfKQrZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDoFNaNbNiNeMKQsJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TAxwZQDoFNaNbNiNfKQrZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFiFNaNbNiNfKQClZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFjFNaNbNiNfKQCmJmZw@Base 15 ++ _D3std3utf__T11decodeFrontVEQBa8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TSQDwQDv__T10byCodeUnitTQCxZQrFQDeZ14ByCodeUnitImplZQFjFNaNbNiNfKQCmZw@Base 15 ++ _D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDmFNaNfQCiwZw@Base 15 ++ _D3std3utf__T13_utfExceptionVEQBc8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1ZQDmFNaNbNiNfQCmwZw@Base 15 ++ _D3std3utf__T20canSearchInCodeUnitsTaZQzFNaNbNiNfwZb@Base 15 ++ _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAaZQDoFNaNbNiNfQpZSQEpQEo__T10byCodeUnitTQBpZQrFQBwZ14ByCodeUnitImpl@Base 15 ++ _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxaZQDpFNaNbNiNfQqZSQEqQEp__T10byCodeUnitTQBqZQrFQBxZ14ByCodeUnitImpl@Base 15 ++ _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTQChZQDpFNaNbNiNfQCxZSQErQEq__T10byCodeUnitTQDyZQrFQEfZ14ByCodeUnitImpl@Base 15 ++ _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDx4path__T16asNormalizedPathTSQFc5range__T5chainTSQFwQFv__T10byCodeUnitTQFdZQrFQFkZ14ByCodeUnitImplTSQHvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtZQJzFNaNbNiNfQHaZQHe@Base 15 ++ _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDx5range__T5chainTSQErQEq__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQGpQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6ResultZQIfFNaNbNiNfQFgZQFk@Base 15 ++ _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQFiFNaNbNiNfQCjZQCn@Base 15 ++ _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZQCo@Base 15 ++ _D3std3utf__T5byUTFTaVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNaNbNiNfQClZQCp@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxaZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxuZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAxwZQDpFNaNbNiNfQqZQt@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAyuZQDpFNaNbNiNfQqZSQEqQEp__TQEoTwVQEli1Z__TQFdTSQFtQFs__T10byCodeUnitTQCtZQrFQDaZ14ByCodeUnitImplZQHgFNcQCfZ6Result@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTAywZQDpFNaNbNiNfQqZQt@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTQChZQDpFNaNbNiNfQCxZSQErQEq__TQEpTwVQEmi1Z__TQFeTSQFuQFt__T10byCodeUnitTQFbZQrFQFiZ14ByCodeUnitImplZQHhFNcQCfZ6Result@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNdNlNfZw@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNfZv@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNbNdNiNlNfZw@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNaNbNiNfQCkZSQGlQGk__TQGjTwVQGgi1Z__TQGyTQDrZQHgFNcQEbZ6Result@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result11__xopEqualsMxFKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCqZb@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4backMFNaNbNdNiNlNfZw@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result4saveMFNaNbNdNiNfZSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCq@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlZSQHmQHl__TQHkTwVQHhi1Z__TQHzTQEsZQIhFNcQFcZQCy@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCz@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__ctorMFNaNbNcNiNfNkMQDlkkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQDa@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result6__initZ@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQFjFNcQCeZ6Result9__xtoHashFNbNeKxSQHdQHc__TQHbTwVQGyi1Z__TQHqTQEjZQHyFNcQEtZQCpZm@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNaNbNiNfQClZSQGmQGl__TQGkTwVQGhi1Z__TQGzTQDsZQHhFNcQEcZ6Result@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result11__xopEqualsMxFKxSQHfQHe__TQHdTwVQHai1Z__TQHsTQElZQIaFNcQEvZQCqZb@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result4backMFNaNdNlNfZw@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result4saveMFNaNbNdNiNfZSQHfQHe__TQHdTwVQHai1Z__TQHsTQElZQIaFNcQEvZQCq@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result5frontMFNaNbNdNiNlNfZw@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmZSQHnQHm__TQHlTwVQHii1Z__TQIaTQEtZQIiFNcQFdZQCy@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmkZSQHoQHn__TQHmTwVQHji1Z__TQIbTQEuZQIjFNcQFeZQCz@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__ctorMFNaNbNcNiNfNkMQDmkkZSQHpQHo__TQHnTwVQHki1Z__TQIcTQEvZQIkFNcQFfZQDa@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result6__initZ@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result7popBackMFNaNfZv@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std3utf__T5byUTFTwVEQv8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDhTSQDxQDw__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplZQFkFNcQCfZ6Result9__xtoHashFNbNeKxSQHeQHd__TQHcTwVQGzi1Z__TQHrTQEkZQHzFNcQEuZQCpZm@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAaZQDgFNaNeMKQnKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAuZQDgFNaNeMKQnKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAwZQDgFNaNeMKQnKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxaZQDhFNaNeMKQoKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAxuZQDhFNaNeMKQoKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TAyuZQDhFNaNeMKQoKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TQCaZQDhFNaNeMKQCoKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAaZQDhFNaNeMKxQoKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAuZQDhFNaNeMKxQoKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0TxAwZQDhFNaNeMKxQoKmZw@Base 15 ++ _D3std3utf__T6decodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1TQCaZQDhFNaNbNiNeMKQCsKmZw@Base 15 ++ _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG1wwZm@Base 15 ++ _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG2uwZm@Base 15 ++ _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfJG4awZm@Base 15 ++ _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai0ZQDdFNaNfMKAawZv@Base 15 ++ _D3std3utf__T6encodeVEQu8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1ZQDdFNaNbNiNfJG4awZm@Base 15 ++ _D3std3utf__T6strideTAaZQlFNaNfQkZk@Base 15 ++ _D3std3utf__T6strideTAyaZQmFNaNfKQmmZk@Base 15 ++ _D3std3utf__T6toUTFzTPaZ__TQoTAyaZQvFNaNbNfQnZQz@Base 15 ++ _D3std3utf__T7toUTF32TAxaZQnFNaNbNfMQoZAyw@Base 15 ++ _D3std3utf__T9toUTFImplTAywTAxaZQtFNaNbNfMQoZQv@Base 15 ++ _D3std3zip10ZipArchive12deleteMemberMFNfCQBnQBm13ArchiveMemberZv@Base 15 ++ _D3std3zip10ZipArchive12totalEntriesMxFNaNbNdNiNfZk@Base 15 ++ _D3std3zip10ZipArchive13removeSegmentMFNaNfkkZv@Base 15 ++ _D3std3zip10ZipArchive19zip64ExtractVersionxt@Base 15 ++ _D3std3zip10ZipArchive24endOfCentralDirSignatureyAh@Base 15 ++ _D3std3zip10ZipArchive24localFileHeaderSignatureyAh@Base 15 ++ _D3std3zip10ZipArchive25archiveExtraDataSignatureyAh@Base 15 ++ _D3std3zip10ZipArchive25digitalSignatureSignatureyAh@Base 15 ++ _D3std3zip10ZipArchive25findEndOfCentralDirRecordMFZk@Base 15 ++ _D3std3zip10ZipArchive26centralFileHeaderSignatureyAh@Base 15 ++ _D3std3zip10ZipArchive29zip64EndOfCentralDirSignatureyAh@Base 15 ++ _D3std3zip10ZipArchive36zip64EndOfCentralDirLocatorSignatureyAh@Base 15 ++ _D3std3zip10ZipArchive4dataMFNaNbNdNiNfZAh@Base 15 ++ _D3std3zip10ZipArchive5buildMFNaNfZAv@Base 15 ++ _D3std3zip10ZipArchive6__ctorMFAvZCQBhQBgQBf@Base 15 ++ _D3std3zip10ZipArchive6__ctorMFNaNbNiNfZCQBnQBmQBl@Base 15 ++ _D3std3zip10ZipArchive6__initZ@Base 15 ++ _D3std3zip10ZipArchive6__vtblZ@Base 15 ++ _D3std3zip10ZipArchive6expandMFCQBeQBd13ArchiveMemberZAh@Base 15 ++ _D3std3zip10ZipArchive7Segment6__initZ@Base 15 ++ _D3std3zip10ZipArchive7__ClassZ@Base 15 ++ _D3std3zip10ZipArchive7getUintMFNaNbNiNfkZk@Base 15 ++ _D3std3zip10ZipArchive7isZip64MFNaNbNdNiNfbZv@Base 15 ++ _D3std3zip10ZipArchive7isZip64MxFNaNbNdNiNfZb@Base 15 ++ _D3std3zip10ZipArchive7putUintMFNaNbNiNfkkZv@Base 15 ++ _D3std3zip10ZipArchive8getUlongMFNaNbNiNfkZm@Base 15 ++ _D3std3zip10ZipArchive8putUlongMFNaNbNiNfkmZv@Base 15 ++ _D3std3zip10ZipArchive9addMemberMFNfCQBjQBi13ArchiveMemberZv@Base 15 ++ _D3std3zip10ZipArchive9directoryMFNaNbNdNiNfZHAyaCQBwQBv13ArchiveMember@Base 15 ++ _D3std3zip10ZipArchive9getUshortMFNaNbNiNfkZt@Base 15 ++ _D3std3zip10ZipArchive9putUshortMFNaNbNiNfktZv@Base 15 ++ _D3std3zip11__moduleRefZ@Base 15 ++ _D3std3zip12ZipException6__initZ@Base 15 ++ _D3std3zip12ZipException6__vtblZ@Base 15 ++ _D3std3zip12ZipException7__ClassZ@Base 15 ++ _D3std3zip12ZipException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCwQCvQCu@Base 15 ++ _D3std3zip12ZipException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCwQCvQCu@Base 15 ++ _D3std3zip12__ModuleInfoZ@Base 15 ++ _D3std3zip13ArchiveMember12expandedDataMFNaNbNdNiNfZAh@Base 15 ++ _D3std3zip13ArchiveMember12expandedDataMFNdNfAhZv@Base 15 ++ _D3std3zip13ArchiveMember12expandedSizeMxFNaNbNdNiNfZk@Base 15 ++ _D3std3zip13ArchiveMember14compressedDataMFNaNbNdNiNfZAh@Base 15 ++ _D3std3zip13ArchiveMember14compressedSizeMxFNaNbNdNiNfZk@Base 15 ++ _D3std3zip13ArchiveMember14extractVersionMxFNaNbNdNiNfZt@Base 15 ++ _D3std3zip13ArchiveMember14fileAttributesMFNdNfkZv@Base 15 ++ _D3std3zip13ArchiveMember14fileAttributesMxFNbNdNiZk@Base 15 ++ _D3std3zip13ArchiveMember17compressionMethodMFNaNdNfEQBzQBy17CompressionMethodZv@Base 15 ++ _D3std3zip13ArchiveMember17compressionMethodMxFNaNbNdNiNfZEQCfQCe17CompressionMethod@Base 15 ++ _D3std3zip13ArchiveMember4timeMFNaNbNdNiNfkZv@Base 15 ++ _D3std3zip13ArchiveMember4timeMFNdSQBh8datetime7systime7SysTimeZv@Base 15 ++ _D3std3zip13ArchiveMember4timeMxFNaNbNdNiNfZk@Base 15 ++ _D3std3zip13ArchiveMember5crc32MxFNaNbNdNiNfZk@Base 15 ++ _D3std3zip13ArchiveMember5indexMFNaNbNdNiNfkZk@Base 15 ++ _D3std3zip13ArchiveMember5indexMxFNaNbNdNiNfZk@Base 15 ++ _D3std3zip13ArchiveMember6__initZ@Base 15 ++ _D3std3zip13ArchiveMember6__vtblZ@Base 15 ++ _D3std3zip13ArchiveMember7__ClassZ@Base 15 ++ _D3std4conv10parseErrorFNaNfLAyaQdmZCQBjQBi13ConvException@Base 15 ++ _D3std4conv11__moduleRefZ@Base 15 ++ _D3std4conv11hexToStringFNaNbNfAyaZQe@Base 15 ++ _D3std4conv11hexToStringFNaNbNfAyuZQe@Base 15 ++ _D3std4conv11hexToStringFNaNbNfAywZQe@Base 15 ++ _D3std4conv12__ModuleInfoZ@Base 15 ++ _D3std4conv13ConvException6__initZ@Base 15 ++ _D3std4conv13ConvException6__vtblZ@Base 15 ++ _D3std4conv13ConvException7__ClassZ@Base 15 ++ _D3std4conv13ConvException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQCyQCxQCv@Base 15 ++ _D3std4conv13ConvException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCyQCxQCv@Base 15 ++ _D3std4conv14isOctalLiteralFNaNbNiNfxAyaZb@Base 15 ++ _D3std4conv20strippedOctalLiteralFAyaZQe@Base 15 ++ _D3std4conv21ConvOverflowException6__ctorMFNaNbNfAyaQdmZCQCdQCcQCa@Base 15 ++ _D3std4conv21ConvOverflowException6__initZ@Base 15 ++ _D3std4conv21ConvOverflowException6__vtblZ@Base 15 ++ _D3std4conv21ConvOverflowException7__ClassZ@Base 15 ++ _D3std4conv__T13hexStrLiteralTAyaZQuFNaNbNeMQoZAa@Base 15 ++ _D3std4conv__T13hexStrLiteralTAyuZQuFNaNbNeMQoZAu@Base 15 ++ _D3std4conv__T13hexStrLiteralTAywZQuFNaNbNeMQoZAw@Base 15 ++ _D3std4conv__T14convertToOctalTiZQtFNaNbNiNfiZi@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTAaZQrFNaNbNfQmZQz@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTAxaZQsFNaNbNfQnZQBa@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTEQBb5regex8internal2ir2IRZQBoFNaNfQBiZQBw@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTEQBb6logger4core8LogLevelZQBoFNaNfQBiZQBw@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTEQBb6socket12SocketOptionZQBoFNaNfQBiZQBw@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTPSQBc11parallelism12AbstractTaskZQBvFNaNfQBpZQCd@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTPaZQrFNaNbQkZQx@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTPxaZQsFNaNbQlZQy@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTQkZQrFNaNbNiNfQyZQBb@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTSQBb11concurrency3TidZQBkFNaNfQBeZQBs@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTSQBb4path__T16asNormalizedPathTSQCg5range__T5chainTSQDa3utf__T10byCodeUnitTQDhZQrFQDoZ14ByCodeUnitImplTSQFaQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQHdFNaNfQGxZQHl@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTSQBb5range__T5chainTSQBv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDuQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFjFNaNfQFdZQFr@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTiZQqFNaNbNfiZQx@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTkZQqFNaNbNfkZQx@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTmZQqFNaNbNfmZQx@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTtZQqFNaNbNftZQx@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTxkZQrFNaNbNfxkZQz@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTxlZQrFNaNbNfxlZQz@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTxmZQrFNaNbNfxmZQz@Base 15 ++ _D3std4conv__T2toTAyaZ__TQlTykZQrFNaNbNfykZQz@Base 15 ++ _D3std4conv__T2toThZ__TQjTxkZQpFNaNfxkZh@Base 15 ++ _D3std4conv__T2toTiZ__TQjTEQz3net7isemail15EmailStatusCodeZQBtFNaNbNiNfQBtZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTEQz8datetime4date5MonthZQBkFNaNbNiNfQBkZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjThZQoFNaNbNiNfhZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTiZQoFNaNbNiNfiZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTkZQoFNaNfkZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTmZQoFNaNfmZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTsZQoFNaNbNiNfsZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTxEQBa8datetime4date5MonthZQBmFNaNbNiNfxQBmZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTxhZQpFNaNbNiNfxhZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTxkZQpFNaNfxkZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTxlZQpFNaNfxlZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTxmZQpFNaNfxmZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTxsZQpFNaNbNiNfxsZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTxtZQpFNaNbNiNfxtZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTykZQpFNaNfykZi@Base 15 ++ _D3std4conv__T2toTiZ__TQjTymZQpFNaNfymZi@Base 15 ++ _D3std4conv__T2toTkZ__TQjTkZQoFNaNbNiNfkZk@Base 15 ++ _D3std4conv__T2toTkZ__TQjTmZQoFNaNfmZk@Base 15 ++ _D3std4conv__T2toTlZ__TQjTlZQoFNaNbNiNflZl@Base 15 ++ _D3std4conv__T2toTlZ__TQjTmZQoFNaNfmZl@Base 15 ++ _D3std4conv__T2toTmZ__TQjTkZQoFNaNbNiNfkZm@Base 15 ++ _D3std4conv__T2toTmZ__TQjTmZQoFNaNbNiNfmZm@Base 15 ++ _D3std4conv__T2toTsZ__TQjTiZQoFNaNfiZs@Base 15 ++ _D3std4conv__T2toTtZ__TQjTAxaZQqFNaNfQlZt@Base 15 ++ _D3std4conv__T4textTAxaTAyaTQiZQrFNaNbNfQuQsQyZQx@Base 15 ++ _D3std4conv__T4textTAyaTAxaTQiZQrFNaNbNfQuQsQyZQBb@Base 15 ++ _D3std4conv__T4textTAyaTAxaZQoFNaNbNfQrQpZQw@Base 15 ++ _D3std4conv__T4textTAyaTQeTQhTAxaTQoZQxFNaNbNfQBaQBdQBgQzQBlZQBp@Base 15 ++ _D3std4conv__T4textTAyaTQeTQhTQkTkZQvFNaNbNfQyQBaQBdQBgkZQBl@Base 15 ++ _D3std4conv__T4textTAyaTQeTQhZQqFNaNbNfQtQvQxZQBa@Base 15 ++ _D3std4conv__T4textTAyaTQeTiTQjTiTQoZQxFNaNbNfQBaQBdiQBhiQBlZQBp@Base 15 ++ _D3std4conv__T4textTAyaTQeZQnFNaNbNfQqQsZQv@Base 15 ++ _D3std4conv__T4textTAyaTaZQmFNaNbNfQpaZQt@Base 15 ++ _D3std4conv__T4textTAyaTiTQgZQpFNaNbNfQsiQvZQy@Base 15 ++ _D3std4conv__T4textTAyaTiZQmFNaNbNfQpiZQt@Base 15 ++ _D3std4conv__T4textTAyaTkTQgTkZQrFNaNbNfQukQxkZQBb@Base 15 ++ _D3std4conv__T4textTAyaTkTQgTmTQlZQuFNaNbNfQxkQBamQBeZQBi@Base 15 ++ _D3std4conv__T4textTAyaTtTQgTtTaTaTQpTmZQBaFNaNbNfQBetQBitaaQBomZQBt@Base 15.2 ++ _D3std4conv__T4textTAyaTtTaTaTQkTmZQvFNaNbNfQytaaQBdmZQBi@Base 15.2 ++ _D3std4conv__T4textTAyaTwTQgZQpFNaNfQqwQtZQw@Base 15 ++ _D3std4conv__T4textTAyaTxaZQnFNaNbNfQqxaZQv@Base 15 ++ _D3std4conv__T4textTAyaZQkFNaNbNiNfQpZQs@Base 15 ++ _D3std4conv__T4textTPSQu11parallelism12AbstractTaskTaTQBiZQBsFNaNfQBuaQByZAya@Base 15 ++ _D3std4conv__T5parseTiTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZi@Base 15 ++ _D3std4conv__T5parseTkTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZk@Base 15 ++ _D3std4conv__T5parseTkTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi1ZQCkFNaNfMKQClZSQDlQCl__T5TupleTkVQCia4_64617461TmVQCza5_636f756e74ZQBr@Base 15 ++ _D3std4conv__T5parseTtTAxaVEQBa8typecons__T4FlagVAyaa7_646f436f756e74ZQBbi0ZQCkFNaNfMKQClZt@Base 15 ++ _D3std4conv__T5toStrTAyaTPSQz11parallelism12AbstractTaskZQBrFNaNfQBoZQBw@Base 15 ++ _D3std4conv__T5toStrTAyaTSQy11concurrency3TidZQBgFNaNfQBdZQBl@Base 15 ++ _D3std4conv__T5toStrTAyaTSQy4path__T16asNormalizedPathTSQCc5range__T5chainTSQCw3utf__T10byCodeUnitTQDaZQrFQDhZ14ByCodeUnitImplTSQEwQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGzFNaNfQGwZQHe@Base 15 ++ _D3std4conv__T5toStrTAyaTSQy5range__T5chainTSQBr3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDqQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFfFNaNfQFcZQFk@Base 15 ++ _D3std4conv__T5toStrTyAaTEQy5regex8internal2ir2IRZQBkFNaNfQBhZyQBp@Base 15 ++ _D3std4conv__T5toStrTyAaTEQy6logger4core8LogLevelZQBkFNaNfQBhZyQBp@Base 15 ++ _D3std4conv__T5toStrTyAaTEQy6socket12SocketOptionZQBkFNaNfQBhZyQBp@Base 15 ++ _D3std4conv__T6toImplTAyaTAaZQpFNaNbNfQmZQt@Base 15 ++ _D3std4conv__T6toImplTAyaTAxaZQqFNaNbNfQnZQu@Base 15 ++ _D3std4conv__T6toImplTAyaTEQz5regex8internal2ir2IRZQBlFNaNfQBhZQBp@Base 15 ++ _D3std4conv__T6toImplTAyaTEQz6logger4core8LogLevelZQBlFNaNfQBhZQBp@Base 15 ++ _D3std4conv__T6toImplTAyaTEQz6socket12SocketOptionZQBlFNaNfQBhZQBp@Base 15 ++ _D3std4conv__T6toImplTAyaTPSQBa11parallelism12AbstractTaskZQBtFNaNfQBpZQBx@Base 15 ++ _D3std4conv__T6toImplTAyaTPaZQpFNaNbQkZQr@Base 15 ++ _D3std4conv__T6toImplTAyaTPxaZQqFNaNbQlZQs@Base 15 ++ _D3std4conv__T6toImplTAyaTQeZQpFNaNbNiNfQsZQv@Base 15 ++ _D3std4conv__T6toImplTAyaTSQz11concurrency3TidZQBhFNaNfQBdZQBl@Base 15 ++ _D3std4conv__T6toImplTAyaTSQz4path__T16asNormalizedPathTSQCd5range__T5chainTSQCx3utf__T10byCodeUnitTQDaZQrFQDhZ14ByCodeUnitImplTSQExQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQHaFNaNfQGwZQHe@Base 15 ++ _D3std4conv__T6toImplTAyaTSQz5range__T5chainTSQBs3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDrQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFgFNaNfQFcZQFk@Base 15 ++ _D3std4conv__T6toImplTAyaTiZQoFNaNbNfiZQr@Base 15 ++ _D3std4conv__T6toImplTAyaTkZQoFNaNbNfkZQr@Base 15 ++ _D3std4conv__T6toImplTAyaTmZQoFNaNbNfmZQr@Base 15 ++ _D3std4conv__T6toImplTAyaTtZQoFNaNbNftZQr@Base 15 ++ _D3std4conv__T6toImplTAyaTxkZQpFNaNbNfxkZQt@Base 15 ++ _D3std4conv__T6toImplTAyaTxlZQpFNaNbNfxlZQt@Base 15 ++ _D3std4conv__T6toImplTAyaTxmZQpFNaNbNfxmZQt@Base 15 ++ _D3std4conv__T6toImplTAyaTykZQpFNaNbNfykZQt@Base 15 ++ _D3std4conv__T6toImplThTxkZQnFNaNfxkZh@Base 15 ++ _D3std4conv__T6toImplTiTEQx3net7isemail15EmailStatusCodeZQBrFNaNbNiNfQBtZi@Base 15 ++ _D3std4conv__T6toImplTiTEQx8datetime4date5MonthZQBiFNaNbNiNfQBkZi@Base 15 ++ _D3std4conv__T6toImplTiThZQmFNaNbNiNfhZi@Base 15 ++ _D3std4conv__T6toImplTiTiZQmFNaNbNiNfiZi@Base 15 ++ _D3std4conv__T6toImplTiTkZQmFNaNfkZi@Base 15 ++ _D3std4conv__T6toImplTiTmZQmFNaNfmZi@Base 15 ++ _D3std4conv__T6toImplTiTsZQmFNaNbNiNfsZi@Base 15 ++ _D3std4conv__T6toImplTiTxEQy8datetime4date5MonthZQBjFNaNbNiNfxQBlZi@Base 15 ++ _D3std4conv__T6toImplTiTxhZQnFNaNbNiNfxhZi@Base 15 ++ _D3std4conv__T6toImplTiTxkZQnFNaNfxkZi@Base 15 ++ _D3std4conv__T6toImplTiTxlZQnFNaNfxlZi@Base 15 ++ _D3std4conv__T6toImplTiTxmZQnFNaNfxmZi@Base 15 ++ _D3std4conv__T6toImplTiTxsZQnFNaNbNiNfxsZi@Base 15 ++ _D3std4conv__T6toImplTiTxtZQnFNaNbNiNfxtZi@Base 15 ++ _D3std4conv__T6toImplTiTykZQnFNaNfykZi@Base 15 ++ _D3std4conv__T6toImplTiTymZQnFNaNfymZi@Base 15 ++ _D3std4conv__T6toImplTkTkZQmFNaNbNiNfkZk@Base 15 ++ _D3std4conv__T6toImplTkTmZQmFNaNfmZk@Base 15 ++ _D3std4conv__T6toImplTlTlZQmFNaNbNiNflZl@Base 15 ++ _D3std4conv__T6toImplTlTmZQmFNaNfmZl@Base 15 ++ _D3std4conv__T6toImplTmTkZQmFNaNbNiNfkZm@Base 15 ++ _D3std4conv__T6toImplTmTmZQmFNaNbNiNfmZm@Base 15 ++ _D3std4conv__T6toImplTsTiZQmFNaNfiZs@Base 15 ++ _D3std4conv__T6toImplTtTAxaZQoFNaNfQlZt@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai128ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai129ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai130ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai132ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai133ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai134ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai136ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai137ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai138ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai140ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai141ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai142ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai144ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai145ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai146ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai148ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai149ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai150ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai152ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai153ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai154ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai156ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai157ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai158ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai160ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai161ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai162ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai164ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai165ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai166ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai168ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai172ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai176ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai180ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai184ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai188ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai192ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa5regex8internal2ir2IRVQBai196ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai128ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai160ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai192ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai1ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai255ZQBvyQBp@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai32ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai64ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6logger4core8LogLevelVQBai96ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai10ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai13ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai15ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai16ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai17ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai18ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai19ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai1ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai20ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai21ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai26ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai2ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai30ZQBuyQBo@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai3ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai4ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai5ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai6ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai7ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai8ZQBtyQBn@Base 15 ++ _D3std4conv__T7enumRepTyAaTEQBa6socket12SocketOptionVQBai9ZQBtyQBn@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result10initializeMFNaNbNiNfiZv@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result4backMFNaNbNdNiNfZa@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result4saveMFNaNbNdNiNfZSQDrQDq__TQDoVhi10TaVQDji1TiZQEhFNaNbNiNfiZQCq@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result5frontMFNaNbNdNiNfZa@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6__initZ@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7opIndexMFNaNbNiNfmZa@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7opSliceMFNaNbNiNfmmZSQDuQDt__TQDrVhi10TaVQDmi1TiZQEkFNaNbNiNfiZQCt@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZSQCsQCr__TQCpVhi10TaVQCki1TiZQDiFNaNbNiNfiZ6Result@Base 15 ++ _D3std4conv__T8textImplTAyaTAxaTQiTQhZQyFNaNbNfQtQzQxZQBe@Base 15 ++ _D3std4conv__T8textImplTAyaTPSQBc11parallelism12AbstractTaskTaTQBjZQCbFNaNfQBvaQBzZQCh@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTAxaTQlZQyFNaNbNfQxQsQBbZQBf@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTAxaZQvFNaNbNfQuQpZQz@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTQhTQkTAxaTQrZQBeFNaNbNfQBeQBhQBkQBaQBqZQBu@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTQhTQkTQnTkZQBcFNaNbNfQBcQBfQBiQBlkZQBq@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTQhTQkZQxFNaNbNfQwQyQBaZQBe@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTQhTiTQmTiTQrZQBeFNaNbNfQBeQBhiQBliQBpZQBt@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTQhZQuFNaNbNfQtQvZQy@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTaZQtFNaNbNfQsaZQw@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTiTQjZQwFNaNbNfQviQyZQBb@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTiZQtFNaNbNfQsiZQw@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTkTQjTkZQyFNaNbNfQxkQBakZQBf@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTkTQjTmTQoZQBbFNaNbNfQBbkQBfmQBjZQBn@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTtTQjTtTaTaTQsTmZQBhFNaNbNfQBhtQBltaaQBrmZQBw@Base 15.2 ++ _D3std4conv__T8textImplTAyaTQeTtTaTaTQnTmZQBcFNaNbNfQBctaaQBimZQBn@Base 15.2 ++ _D3std4conv__T8textImplTAyaTQeTwTQjZQwFNaNfQtwQwZQz@Base 15 ++ _D3std4conv__T8textImplTAyaTQeTxaZQuFNaNbNfQtxaZQy@Base 15 ++ _D3std4conv__T8textImplTAyaTQeZQrFNaNbNiNfQsZQv@Base 15 ++ _D3std4conv__T8textImplTAyaTiZQqFNaNbNfiZQr@Base 15 ++ _D3std4conv__T8textImplTAyaTkZQqFNaNbNfkZQr@Base 15 ++ _D3std4conv__T8textImplTAyaTmZQqFNaNbNfmZQr@Base 15 ++ _D3std4conv__T8unsignedTiZQmFNaNbNiNfiZk@Base 15 ++ _D3std4conv__T8unsignedTmZQmFNaNbNiNfmZm@Base 15 ++ _D3std4conv__T9convErrorTAxaTiZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 ++ _D3std4conv__T9convErrorTAxaTkZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 ++ _D3std4conv__T9convErrorTAxaTtZQrFNaNfQnAyamZCQBsQBr13ConvException@Base 15 ++ _D3std4file10attrIsFileFNaNbNiNfkZb@Base 15 ++ _D3std4file10existsImplFNbNiNeMPxaZb@Base 15 ++ _D3std4file10removeImplFNeMAxaMPxaZv@Base 15 ++ _D3std4file10renameImplFNeMAxaMQeMPxaMQeZv@Base 15 ++ _D3std4file11__moduleRefZ@Base 15 ++ _D3std4file11thisExePathFNeZAya@Base 15 ++ _D3std4file12__ModuleInfoZ@Base 15 ++ _D3std4file12mkdirRecurseFNfMAxaZv@Base 15 ++ _D3std4file12rmdirRecurseFNfMAxaZv@Base 15 ++ _D3std4file12rmdirRecurseFNfMKSQBdQBc8DirEntryZv@Base 15 ++ _D3std4file12rmdirRecurseFNfMSQBcQBb8DirEntryZv@Base 15 ++ _D3std4file12setTimesImplFNeMAxaMPxaSQBj8datetime7systime7SysTimeQBdZv@Base 15 ++ _D3std4file13FileException6__ctorMFNaNfMAxaMQeAyamZCQByQBxQBv@Base 15 ++ _D3std4file13FileException6__ctorMFNaNfMAxaMQeAyamkZCQBzQByQBw@Base 15 ++ _D3std4file13FileException6__ctorMFNeMAxakAyamZCQBuQBtQBr@Base 15 ++ _D3std4file13FileException6__initZ@Base 15 ++ _D3std4file13FileException6__vtblZ@Base 15 ++ _D3std4file13FileException7__ClassZ@Base 15 ++ _D3std4file13attrIsSymlinkFNaNbNiNfkZb@Base 15 ++ _D3std4file15DirIteratorImpl11__xopEqualsMxFKxSQBtQBsQBqZb@Base 15 ++ _D3std4file15DirIteratorImpl11popDirStackMFNeZv@Base 15 ++ _D3std4file15DirIteratorImpl15releaseDirStackMFNeZv@Base 15 ++ _D3std4file15DirIteratorImpl4nextMFNeZb@Base 15 ++ _D3std4file15DirIteratorImpl5emptyMFNdNfZb@Base 15 ++ _D3std4file15DirIteratorImpl5frontMFNdNfZSQBoQBn8DirEntry@Base 15 ++ _D3std4file15DirIteratorImpl6__dtorMFNfZv@Base 15 ++ _D3std4file15DirIteratorImpl6__initZ@Base 15 ++ _D3std4file15DirIteratorImpl6stepInMFNfAyaZ14trustedOpendirFNbNiNeQBbZPS4core3sys5posix6dirent3DIR@Base 15 ++ _D3std4file15DirIteratorImpl6stepInMFNfAyaZb@Base 15 ++ _D3std4file15DirIteratorImpl8hasExtraMFNfZb@Base 15 ++ _D3std4file15DirIteratorImpl8opAssignMFNcNjNeSQBsQBrQBpZQl@Base 15 ++ _D3std4file15DirIteratorImpl8popExtraMFNfZSQBpQBo8DirEntry@Base 15 ++ _D3std4file15DirIteratorImpl8popFrontMFNfZv@Base 15 ++ _D3std4file15DirIteratorImpl9DirHandle11__xopEqualsMxFKxSQCdQCcQCaQBmZb@Base 15 ++ _D3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 ++ _D3std4file15DirIteratorImpl9DirHandle9__xtoHashFNbNeKxSQCcQCbQBzQBlZm@Base 15 ++ _D3std4file15DirIteratorImpl9__xtoHashFNbNeKxSQBsQBrQBpZm@Base 15 ++ _D3std4file15DirIteratorImpl9mayStepInMFNfZb@Base 15 ++ _D3std4file15DirIteratorImpl9pushExtraMFNfSQBpQBo8DirEntryZv@Base 15 ++ _D3std4file15DirIteratorImpl__T6__ctorTAyaZQmMFNcNfQmEQCaQBz8SpanModebZSQCsQCrQCp@Base 15 ++ _D3std4file21getAvailableDiskSpaceFNfMAxaZm@Base 15 ++ _D3std4file6getcwdFNeZAya@Base 15 ++ _D3std4file7tempDirFNeZ12addSeparatorFNaNbNfAyaZQe@Base 15 ++ _D3std4file7tempDirFNeZ5cacheAya@Base 15 ++ _D3std4file7tempDirFNeZAya@Base 15 ++ _D3std4file7tempDirFNeZ__T15findExistingDirTAyaTQeTQhTQkTQnTQqZQBlFNfLQBaLQBeLQBiLQBmLQBqLQBuZQBy@Base 15 ++ _D3std4file8DirEntry10attributesMFNdNlNfZk@Base 15 ++ _D3std4file8DirEntry11__xopEqualsMxFKxSQBlQBkQBiZb@Base 15 ++ _D3std4file8DirEntry14linkAttributesMFNdNlNfZk@Base 15 ++ _D3std4file8DirEntry15_ensureStatDoneMFNlNeZv@Base 15 ++ _D3std4file8DirEntry16_ensureLStatDoneMFNlNeZv@Base 15 ++ _D3std4file8DirEntry16timeLastAccessedMFNdNlNfZSQBu8datetime7systime7SysTime@Base 15 ++ _D3std4file8DirEntry16timeLastModifiedMFNdNlNfZSQBu8datetime7systime7SysTime@Base 15 ++ _D3std4file8DirEntry17timeStatusChangedMFNdNlNfZSQBv8datetime7systime7SysTime@Base 15 ++ _D3std4file8DirEntry22_ensureStatOrLStatDoneMFNlNeZv@Base 15 ++ _D3std4file8DirEntry4nameMxFNaNbNdNjNlNfZAya@Base 15 ++ _D3std4file8DirEntry4sizeMFNdNlNfZm@Base 15 ++ _D3std4file8DirEntry5isDirMFNdNlNfZb@Base 15 ++ _D3std4file8DirEntry6__ctorMFNcNfAyaPS4core3sys5posix6direntQhZSQCkQCjQCh@Base 15 ++ _D3std4file8DirEntry6__ctorMFNcNfNkMAyaZSQBnQBmQBk@Base 15 ++ _D3std4file8DirEntry6__initZ@Base 15 ++ _D3std4file8DirEntry6isFileMFNdNlNfZb@Base 15 ++ _D3std4file8DirEntry7statBufMFNdNlNfZS4core3sys5posixQk4stat6stat_t@Base 15 ++ _D3std4file8DirEntry9__xtoHashFNbNeKxSQBkQBjQBhZm@Base 15 ++ _D3std4file8DirEntry9isSymlinkMFNdNlNfZb@Base 15 ++ _D3std4file8copyImplFNeMAxaMQeMPxaMQeEQBk8typecons__T4FlagVAyaa18_707265736572766541747472696275746573ZQByZv@Base 15 ++ _D3std4file8deletemeFNdNfZ8fileNameAya@Base 15 ++ _D3std4file8deletemeFNdNfZAya@Base 15 ++ _D3std4file8readImplFNeMAxaMPxamZAv@Base 15 ++ _D3std4file9attrIsDirFNaNbNiNfkZb@Base 15 ++ _D3std4file9writeImplFNeMAxaMPxaMAxvbZv@Base 15 ++ _D3std4file__T10dirEntriesVbi1ZQrFNfAyaEQBmQBl8SpanModebZSQCeQCd__T12_DirIteratorVbi1ZQt@Base 15 ++ _D3std4file__T12_DirIteratorVbi1ZQt11__fieldDtorMFNeZv@Base 15 ++ _D3std4file__T12_DirIteratorVbi1ZQt15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std4file__T12_DirIteratorVbi1ZQt5emptyMFNdNeZb@Base 15 ++ _D3std4file__T12_DirIteratorVbi1ZQt5frontMFNdNeZSQBvQBu8DirEntry@Base 15 ++ _D3std4file__T12_DirIteratorVbi1ZQt6__ctorMFNcNeAyaEQByQBx8SpanModebZSQCqQCp__TQCnVbi1ZQCv@Base 15 ++ _D3std4file__T12_DirIteratorVbi1ZQt6__initZ@Base 15 ++ _D3std4file__T12_DirIteratorVbi1ZQt8opAssignMFNcNjNfSQBzQBy__TQBwVbi1ZQCeZQw@Base 15 ++ _D3std4file__T12_DirIteratorVbi1ZQt8popFrontMFNeZv@Base 15 ++ _D3std4file__T13getAttributesTAxaZQuFNfQjZk@Base 15 ++ _D3std4file__T13getAttributesTAyaZQuFNfQjZk@Base 15 ++ _D3std4file__T15ensureDirExistsZQsFNfMAxaZb@Base 15 ++ _D3std4file__T17statTimeToStdTimeVai109ZQBaFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDe8datetime7systime7SysTime@Base 15 ++ _D3std4file__T17statTimeToStdTimeVai97ZQzFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDc8datetime7systime7SysTime@Base 15 ++ _D3std4file__T17statTimeToStdTimeVai99ZQzFNaNbNfKxS4core3sys5posixQk4stat6stat_tZSQDc8datetime7systime7SysTime@Base 15 ++ _D3std4file__T5isDirTAxaZQlFNdNfQlZb@Base 15 ++ _D3std4file__T5isDirTAyaZQlFNdNfQlZb@Base 15 ++ _D3std4file__T5rmdirTAyaZQlFNfQjZv@Base 15 ++ _D3std4file__T5rmdirTAyaZQlFQhZ12trustedRmdirFNbNiNeMPxaZb@Base 15 ++ _D3std4file__T6existsTAxaZQmFNbNiNfQnZb@Base 15 ++ _D3std4file__T6existsTAyaZQmFNbNiNfQnZb@Base 15 ++ _D3std4file__T6isFileTAyaZQmFNdNfQlZb@Base 15 ++ _D3std4file__T6removeTAyaZQmFNfQjZv@Base 15 ++ _D3std4file__T8cenforceTPS4core3sys5posix6dirent3DIRZQBnFNfQBjMLAxaAyamZQBw@Base 15 ++ _D3std4file__T8cenforceTPaZQnFNfQiMLAxaAyamZQu@Base 15 ++ _D3std4file__T8cenforceTbZQmFNebMAxaMPxaAyamZb@Base 15 ++ _D3std4file__T8cenforceTbZQmFNfbMLAxaAyamZb@Base 15 ++ _D3std4file__T8readLinkTAyaZQoFNfQjZQm@Base 15 ++ _D3std4json11__moduleRefZ@Base 15 ++ _D3std4json12__ModuleInfoZ@Base 15 ++ _D3std4json13JSONException6__ctorMFNaNbNfAyaQdmZCQBvQBuQBs@Base 15 ++ _D3std4json13JSONException6__ctorMFNaNbNfAyaiiZCQBuQBtQBr@Base 15 ++ _D3std4json13JSONException6__initZ@Base 15 ++ _D3std4json13JSONException6__vtblZ@Base 15 ++ _D3std4json13JSONException7__ClassZ@Base 15 ++ _D3std4json16JSONFloatLiteral6__initZ@Base 15 ++ _D3std4json6toJSONFNfKxSQwQu9JSONValueIbIEQBoQBn11JSONOptionsZAya@Base 15 ++ _D3std4json9JSONValue10arrayNoRefMNgFNaNdNeZNgASQBuQBtQBr@Base 15 ++ _D3std4json9JSONValue11objectNoRefMNgFNaNdNeZNgHAyaSQByQBxQBv@Base 15 ++ _D3std4json9JSONValue13orderedObjectMFNaNbNdNiNeNkMASQBz8typecons__T5TupleTAyaVQea3_6b6579TSQDmQDlQDjVQBba5_76616c7565ZQBzZQCu@Base 15 ++ _D3std4json9JSONValue13orderedObjectMNgFNaNcNdNjZNgASQBz8typecons__T5TupleTAyaVQea3_6b6579TSQDmQDlQDjVQBba5_76616c7565ZQBz@Base 15 ++ _D3std4json9JSONValue14toPrettyStringMxFNfIEQBqQBp11JSONOptionsZAya@Base 15 ++ _D3std4json9JSONValue18orderedObjectNoRefMNgFNaNdNeZNgASQCc8typecons__T5TupleTAyaVQea3_6b6579TSQDpQDoQDmVQBba5_76616c7565ZQBz@Base 15 ++ _D3std4json9JSONValue3strMFNaNbNdNiNjNeNkMAyaZQe@Base 15 ++ _D3std4json9JSONValue3strMxFNaNdNjNlNeZAya@Base 15 ++ _D3std4json9JSONValue4typeMxFNaNbNdNiNfZEQBnQBm8JSONType@Base 15 ++ _D3std4json9JSONValue5Store6Object6__initZ@Base 15 ++ _D3std4json9JSONValue5Store6__initZ@Base 15 ++ _D3std4json9JSONValue5arrayMFNaNbNdNiNlNeNkMASQBsQBrQBpZQm@Base 15 ++ _D3std4json9JSONValue5arrayMNgFNaNcNdNlNjZNgASQBsQBrQBp@Base 15 ++ _D3std4json9JSONValue6__initZ@Base 15 ++ _D3std4json9JSONValue6isNullMxFNaNbNdNiNfZb@Base 15 ++ _D3std4json9JSONValue6objectMFNaNbNdNiNeNkMHAyaSQBuQBtQBrZQp@Base 15 ++ _D3std4json9JSONValue6objectMNgFNaNcNdNjZNgHAyaSQBuQBtQBr@Base 15 ++ _D3std4json9JSONValue7booleanMFNaNbNdNiNfbZb@Base 15 ++ _D3std4json9JSONValue7booleanMxFNaNdNfZb@Base 15 ++ _D3std4json9JSONValue7integerMFNaNbNdNiNflZl@Base 15 ++ _D3std4json9JSONValue7integerMxFNaNdNfZl@Base 15 ++ _D3std4json9JSONValue7opApplyMFMDFAyaKSQBlQBkQBiZiZi@Base 15 ++ _D3std4json9JSONValue7opApplyMFMDFmKSQBjQBiQBgZiZi@Base 15 ++ _D3std4json9JSONValue7opIndexMNgFNaNcNfNkMAyaZNgSQBvQBuQBs@Base 15 ++ _D3std4json9JSONValue7opIndexMNgFNaNcNfmZNgSQBqQBpQBn@Base 15 ++ _D3std4json9JSONValue8floatingMFNaNbNdNiNfdZd@Base 15 ++ _D3std4json9JSONValue8floatingMxFNaNdNfZd@Base 15 ++ _D3std4json9JSONValue8opEqualsMxFNaNbNiNeKxSQBqQBpQBnZb@Base 15 ++ _D3std4json9JSONValue8opEqualsMxFNaNbNiNfxSQBpQBoQBmZb@Base 15 ++ _D3std4json9JSONValue8toStringMxFNfIEQBjQBi11JSONOptionsZAya@Base 15 ++ _D3std4json9JSONValue8uintegerMFNaNbNdNiNfmZm@Base 15 ++ _D3std4json9JSONValue8uintegerMxFNaNdNfZm@Base 15 ++ _D3std4json9JSONValue9isOrderedMxFNaNdNeZb@Base 15 ++ _D3std4json9JSONValue__T6__ctorTASQBgQBfQBdZQuMFNaNbNcNiNfQBaZQBd@Base 15 ++ _D3std4json9JSONValue__T6__ctorTAyaZQmMFNaNbNcNiNfQsZSQCaQBzQBx@Base 15 ++ _D3std4json9JSONValue__T6__ctorTHAyaQdZQpMFNaNcNfQrZSQBzQByQBw@Base 15 ++ _D3std4json9JSONValue__T6assignTASQBg8typecons__T5TupleTAyaVQea3_6b6579TSQCtQCsQCqVQBba5_76616c7565ZQBzZQDcMFNaNbNiNfQDhZv@Base 15 ++ _D3std4json9JSONValue__T6assignTASQBgQBfQBdZQuMFNaNbNiNfQyZv@Base 15 ++ _D3std4json9JSONValue__T6assignTAyaZQmMFNaNbNiNfQqZv@Base 15 ++ _D3std4json9JSONValue__T6assignTHAyaQdZQpMFNaNfQpZv@Base 15 ++ _D3std4json9JSONValue__T6assignTHAyaSQBjQBiQBgZQxMFNaNbNiNfQBbZv@Base 15 ++ _D3std4json9JSONValue__T6assignTbZQkMFNaNbNiNfbZv@Base 15 ++ _D3std4json9JSONValue__T6assignTdZQkMFNaNbNiNfdZv@Base 15 ++ _D3std4json9JSONValue__T6assignTlZQkMFNaNbNiNflZv@Base 15 ++ _D3std4json9JSONValue__T6assignTmZQkMFNaNbNiNfmZv@Base 15 ++ _D3std4json__T6toJSONTSQv5array__T8AppenderTAyaZQoZQBlFNfKQBkKxSQCkQCj9JSONValueIbIEQDeQDd11JSONOptionsZv@Base 15 ++ _D3std4math10operations11__moduleRefZ@Base 15 ++ _D3std4math10operations12__ModuleInfoZ@Base 15 ++ _D3std4math10operations13getNaNPayloadFNaNbNiNeeZm@Base 15 ++ _D3std4math10operations3NaNFNaNbNiNemZe@Base 15 ++ _D3std4math10operations3fmaFNaNbNiNfeeeZe@Base 15 ++ _D3std4math10operations4fdimFNaNbNiNfeeZe@Base 15 ++ _D3std4math10operations6nextUpFNaNbNiNedZd@Base 15 ++ _D3std4math10operations6nextUpFNaNbNiNeeZe@Base 15 ++ _D3std4math10operations6nextUpFNaNbNiNefZf@Base 15 ++ _D3std4math10operations8nextDownFNaNbNiNfdZd@Base 15 ++ _D3std4math10operations8nextDownFNaNbNiNfeZe@Base 15 ++ _D3std4math10operations8nextDownFNaNbNiNffZf@Base 15 ++ _D3std4math10operations__T17extractBitpatternTdZQwFNaNbNiNexdZSQCjQCiQCg__T23FloatingPointBitpatternTdZQBc@Base 15 ++ _D3std4math10operations__T17extractBitpatternTeZQwFNaNbNiNexeZSQCjQCiQCg__T23FloatingPointBitpatternTeZQBc@Base 15 ++ _D3std4math10operations__T23FloatingPointBitpatternTdZQBc6__initZ@Base 15 ++ _D3std4math10operations__T23FloatingPointBitpatternTeZQBc6__initZ@Base 15 ++ _D3std4math11__moduleRefZ@Base 15 ++ _D3std4math11exponential11__moduleRefZ@Base 15 ++ _D3std4math11exponential12__ModuleInfoZ@Base 15 ++ _D3std4math11exponential3expFNaNbNiNeeZe@Base 15 ++ _D3std4math11exponential3expFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential3expFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential3logFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential3logFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential3logFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential3logFNaNbNiNfiZe@Base 15 ++ _D3std4math11exponential3logFNaNbNiNfkZe@Base 15 ++ _D3std4math11exponential3logFNaNbNiNflZe@Base 15 ++ _D3std4math11exponential3logFNaNbNiNfmZe@Base 15 ++ _D3std4math11exponential4exp2FNaNbNiNeeZe@Base 15 ++ _D3std4math11exponential4exp2FNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential4exp2FNaNbNiNffZf@Base 15 ++ _D3std4math11exponential4log2FNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential4log2FNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential4log2FNaNbNiNffZf@Base 15 ++ _D3std4math11exponential4log2FNaNbNiNfiZe@Base 15 ++ _D3std4math11exponential4log2FNaNbNiNfkZe@Base 15 ++ _D3std4math11exponential4log2FNaNbNiNflZe@Base 15 ++ _D3std4math11exponential4log2FNaNbNiNfmZe@Base 15 ++ _D3std4math11exponential4logbFNaNbNiNedZd@Base 15 ++ _D3std4math11exponential4logbFNaNbNiNeeZe@Base 15 ++ _D3std4math11exponential4logbFNaNbNiNefZf@Base 15 ++ _D3std4math11exponential5expm1FNaNbNiNeeZe@Base 15 ++ _D3std4math11exponential5expm1FNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential5expm1FNaNbNiNffZf@Base 15 ++ _D3std4math11exponential5ldexpFNaNbNiNfdiZd@Base 15 ++ _D3std4math11exponential5ldexpFNaNbNiNfeiZe@Base 15 ++ _D3std4math11exponential5ldexpFNaNbNiNffiZf@Base 15 ++ _D3std4math11exponential5log10FNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential5log10FNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential5log10FNaNbNiNffZf@Base 15 ++ _D3std4math11exponential5log10FNaNbNiNfiZe@Base 15 ++ _D3std4math11exponential5log10FNaNbNiNfkZe@Base 15 ++ _D3std4math11exponential5log10FNaNbNiNflZe@Base 15 ++ _D3std4math11exponential5log10FNaNbNiNfmZe@Base 15 ++ _D3std4math11exponential5log1pFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential5log1pFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential5log1pFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential5log1pFNaNbNiNfiZe@Base 15 ++ _D3std4math11exponential5log1pFNaNbNiNfkZe@Base 15 ++ _D3std4math11exponential5log1pFNaNbNiNflZe@Base 15 ++ _D3std4math11exponential5log1pFNaNbNiNfmZe@Base 15 ++ _D3std4math11exponential6scalbnFNaNbNiNfdiZd@Base 15 ++ _D3std4math11exponential6scalbnFNaNbNiNfeiZe@Base 15 ++ _D3std4math11exponential6scalbnFNaNbNiNffiZf@Base 15 ++ _D3std4math11exponential8_powImplFNaNbNiNfeeZe@Base 15 ++ _D3std4math11exponential__T3powTdTdZQjFNaNbNiNeddZd@Base 15 ++ _D3std4math11exponential__T3powTeTeZQjFNaNbNiNeeeZe@Base 15 ++ _D3std4math11exponential__T3powTeTiZQjFNaNbNiNeeiZe@Base 15 ++ _D3std4math11exponential__T3powTeTlZQjFNaNbNiNeelZe@Base 15 ++ _D3std4math11exponential__T3powTiTiZQjFNaNbNiNfiiZi@Base 15 ++ _D3std4math11exponential__T3powTmTmZQjFNaNbNiNfmmZm@Base 15 ++ _D3std4math11exponential__T5frexpTdZQjFNaNbNiNexdJiZd@Base 15 ++ _D3std4math11exponential__T5frexpTeZQjFNaNbNiNexeJiZe@Base 15 ++ _D3std4math11exponential__T5frexpTfZQjFNaNbNiNexfJiZf@Base 15 ++ _D3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZ9floatBits6__initZ@Base 15 ++ _D3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZi@Base 15 ++ _D3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZ9floatBits6__initZ@Base 15 ++ _D3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZi@Base 15 ++ _D3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZ9floatBits6__initZ@Base 15 ++ _D3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZi@Base 15 ++ _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZ1PyG3d@Base 15 ++ _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZ1QyG4d@Base 15 ++ _D3std4math11exponential__T7expImplTdZQlFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZ1PyG3e@Base 15 ++ _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZ1QyG4e@Base 15 ++ _D3std4math11exponential__T7expImplTeZQlFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential__T7expImplTfZQlFNaNbNiNffZ1PyG6f@Base 15 ++ _D3std4math11exponential__T7expImplTfZQlFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential__T7logImplTdVbi0ZQpFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential__T7logImplTdVbi1ZQpFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential__T7logImplTeVbi0ZQpFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential__T7logImplTeVbi1ZQpFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential__T7logImplTfVbi0ZQpFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential__T7logImplTfVbi1ZQpFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZ1PyG3d@Base 15 ++ _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZ1QyG3d@Base 15 ++ _D3std4math11exponential__T8exp2ImplTdZQmFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZ1PyG3e@Base 15 ++ _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZ1QyG4e@Base 15 ++ _D3std4math11exponential__T8exp2ImplTeZQmFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential__T8exp2ImplTfZQmFNaNbNiNffZ1PyG6f@Base 15 ++ _D3std4math11exponential__T8exp2ImplTfZQmFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential__T8log2ImplTdZQmFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential__T8log2ImplTeZQmFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential__T8log2ImplTfZQmFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential__T8logbImplTdZQmFNaNbNiNedZd@Base 15 ++ _D3std4math11exponential__T8logbImplTeZQmFNaNbNiNeeZe@Base 15 ++ _D3std4math11exponential__T8logbImplTfZQmFNaNbNiNefZf@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTdZ4logPyG6d@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTdZ4logQyG6d@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTdZ4logRyG3d@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTdZ4logSyG4d@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTdZ6log10PyG7d@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTdZ6log10QyG7d@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTdZ6logp1PyG7d@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTdZ6logp1QyG7d@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTeZ4logPyG7e@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTeZ4logQyG7e@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTeZ4logRyG4e@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTeZ4logSyG4e@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTeZ5log2PyG7e@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTeZ5log2QyG8e@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTfZ4logPyG9f@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTfZ6logp1PyG7f@Base 15 ++ _D3std4math11exponential__T9LogCoeffsTfZ6logp1QyG7f@Base 15 ++ _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZ1PyG3d@Base 15 ++ _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZ1QyG4d@Base 15 ++ _D3std4math11exponential__T9expm1ImplTdZQnFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZ1PyG5e@Base 15 ++ _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZ1QyG6e@Base 15 ++ _D3std4math11exponential__T9expm1ImplTeZQnFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential__T9log10ImplTdZQnFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential__T9log10ImplTeZQnFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential__T9log10ImplTfZQnFNaNbNiNffZf@Base 15 ++ _D3std4math11exponential__T9log1pImplTdZQnFNaNbNiNfdZd@Base 15 ++ _D3std4math11exponential__T9log1pImplTeZQnFNaNbNiNfeZe@Base 15 ++ _D3std4math11exponential__T9log1pImplTfZQnFNaNbNiNffZf@Base 15 ++ _D3std4math12__ModuleInfoZ@Base 15 ++ _D3std4math12trigonometry11__moduleRefZ@Base 15 ++ _D3std4math12trigonometry12__ModuleInfoZ@Base 15 ++ _D3std4math12trigonometry3cosFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry3cosFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry3cosFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry3sinFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry3sinFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry3sinFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry3tanFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry3tanFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry3tanFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry4acosFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry4acosFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry4acosFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry4asinFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry4asinFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry4asinFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry4atanFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry4atanFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry4atanFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry4coshFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry4coshFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry4coshFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry4sinhFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry4sinhFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry4sinhFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry4tanhFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry4tanhFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry4tanhFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry5acoshFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry5acoshFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry5acoshFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry5asinhFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry5asinhFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry5asinhFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry5atan2FNaNbNiNeeeZe@Base 15 ++ _D3std4math12trigonometry5atan2FNaNbNiNfddZd@Base 15 ++ _D3std4math12trigonometry5atan2FNaNbNiNfffZf@Base 15 ++ _D3std4math12trigonometry5atanhFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry5atanhFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry5atanhFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry__T5_sinhTdZQjFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry__T5_sinhTeZQjFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry__T5_sinhTfZQjFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry__T5_tanhTdZQjFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry__T5_tanhTeZQjFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry__T5_tanhTfZQjFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry__T6_acoshTdZQkFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry__T6_acoshTeZQkFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry__T6_acoshTfZQkFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry__T6_asinhTdZQkFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry__T6_asinhTeZQkFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry__T6_asinhTfZQkFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZ1PyG3d@Base 15 ++ _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZ1QyG5d@Base 15 ++ _D3std4math12trigonometry__T7tanImplTdZQlFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZ1PyG3e@Base 15 ++ _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZ1QyG5e@Base 15 ++ _D3std4math12trigonometry__T7tanImplTeZQlFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry__T7tanImplTfZQlFNaNbNiNffZ1PyG6f@Base 15 ++ _D3std4math12trigonometry__T7tanImplTfZQlFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZ1PyG5d@Base 15 ++ _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZ1QyG6d@Base 15 ++ _D3std4math12trigonometry__T8atanImplTdZQmFNaNbNiNfdZd@Base 15 ++ _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZ1PyG5e@Base 15 ++ _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZ1QyG6e@Base 15 ++ _D3std4math12trigonometry__T8atanImplTeZQmFNaNbNiNfeZe@Base 15 ++ _D3std4math12trigonometry__T8atanImplTfZQmFNaNbNiNffZ1PyG4f@Base 15 ++ _D3std4math12trigonometry__T8atanImplTfZQmFNaNbNiNffZf@Base 15 ++ _D3std4math12trigonometry__T9atan2ImplTdZQnFNaNbNiNfddZd@Base 15 ++ _D3std4math12trigonometry__T9atan2ImplTeZQnFNaNbNiNfeeZe@Base 15 ++ _D3std4math12trigonometry__T9atan2ImplTfZQnFNaNbNiNfffZf@Base 15 ++ _D3std4math6traits11__moduleRefZ@Base 15 ++ _D3std4math6traits11isIdenticalFNaNbNiNeeeZb@Base 15 ++ _D3std4math6traits12__ModuleInfoZ@Base 15 ++ _D3std4math6traits__T10isInfinityTdZQpFNaNbNiNedZb@Base 15 ++ _D3std4math6traits__T10isInfinityTeZQpFNaNbNiNeeZb@Base 15 ++ _D3std4math6traits__T10isInfinityTfZQpFNaNbNiNefZb@Base 15 ++ _D3std4math6traits__T10isInfinityTxdZQqFNaNbNiNexdZb@Base 15 ++ _D3std4math6traits__T10isPowerOf2TkZQpFNaNbNiNfxkZb@Base 15 ++ _D3std4math6traits__T10isPowerOf2TmZQpFNaNbNiNfxmZb@Base 15 ++ _D3std4math6traits__T11isSubnormalTxdZQrFNaNbNiNexdZb@Base 15 ++ _D3std4math6traits__T11isSubnormalTxeZQrFNaNbNiNexeZb@Base 15 ++ _D3std4math6traits__T11isSubnormalTxfZQrFNaNbNiNexfZb@Base 15 ++ _D3std4math6traits__T5isNaNTdZQjFNaNbNiNedZb@Base 15 ++ _D3std4math6traits__T5isNaNTeZQjFNaNbNiNeeZb@Base 15 ++ _D3std4math6traits__T5isNaNTfZQjFNaNbNiNefZb@Base 15 ++ _D3std4math6traits__T5isNaNTxdZQkFNaNbNiNexdZb@Base 15 ++ _D3std4math6traits__T5isNaNTxeZQkFNaNbNiNexeZb@Base 15 ++ _D3std4math6traits__T7signbitTdZQlFNaNbNiNedZi@Base 15 ++ _D3std4math6traits__T7signbitTeZQlFNaNbNiNeeZi@Base 15 ++ _D3std4math6traits__T7signbitTfZQlFNaNbNiNefZi@Base 15 ++ _D3std4math6traits__T7signbitTxeZQmFNaNbNiNexeZi@Base 15 ++ _D3std4math6traits__T7signbitTyeZQmFNaNbNiNeyeZi@Base 15 ++ _D3std4math6traits__T8copysignTdTdZQoFNaNbNiNeddZd@Base 15 ++ _D3std4math6traits__T8copysignTdTiZQoFNaNbNiNeidZd@Base 15 ++ _D3std4math6traits__T8copysignTeTeZQoFNaNbNiNeeeZe@Base 15 ++ _D3std4math6traits__T8copysignTeTiZQoFNaNbNiNeieZe@Base 15 ++ _D3std4math6traits__T8copysignTfTfZQoFNaNbNiNeffZf@Base 15 ++ _D3std4math6traits__T8copysignTfTiZQoFNaNbNiNeifZf@Base 15 ++ _D3std4math6traits__T8isFiniteTdZQmFNaNbNiNedZb@Base 15 ++ _D3std4math6traits__T8isFiniteTeZQmFNaNbNiNeeZb@Base 15 ++ _D3std4math6traits__T8isFiniteTfZQmFNaNbNiNefZb@Base 15 ++ _D3std4math8hardware11__moduleRefZ@Base 15 ++ _D3std4math8hardware12__ModuleInfoZ@Base 15 ++ _D3std4math8hardware14resetIeeeFlagsFNbNiNeZv@Base 15 ++ _D3std4math8hardware20FloatingPointControl10initializeMFNbNiNfZv@Base 15 ++ _D3std4math8hardware20FloatingPointControl15clearExceptionsFNbNiNfZv@Base 15 ++ _D3std4math8hardware20FloatingPointControl15getControlStateFNaNbNiNeZt@Base 15 ++ _D3std4math8hardware20FloatingPointControl15setControlStateFNbNiNetZv@Base 15 ++ _D3std4math8hardware20FloatingPointControl16enableExceptionsMFNbNiNekZv@Base 15 ++ _D3std4math8hardware20FloatingPointControl17disableExceptionsMFNbNiNekZv@Base 15 ++ _D3std4math8hardware20FloatingPointControl17enabledExceptionsFNaNbNdNiNeZk@Base 15 ++ _D3std4math8hardware20FloatingPointControl17hasExceptionTrapsFNaNbNdNiNfZb@Base 15 ++ _D3std4math8hardware20FloatingPointControl6__dtorMFNbNiNeZv@Base 15 ++ _D3std4math8hardware20FloatingPointControl6__initZ@Base 15 ++ _D3std4math8hardware20FloatingPointControl8opAssignMFNbNcNiNjNeSQCkQCjQChQCbZQo@Base 15 ++ _D3std4math8hardware20FloatingPointControl8roundingFNaNbNdNiNeZk@Base 15 ++ _D3std4math8hardware20FloatingPointControl8roundingMFNbNdNiNekZv@Base 15 ++ _D3std4math8hardware9IeeeFlags12getIeeeFlagsFNaNbNiNeZk@Base 15 ++ _D3std4math8hardware9IeeeFlags14resetIeeeFlagsFNbNiNeZv@Base 15 ++ _D3std4math8hardware9IeeeFlags6__initZ@Base 15 ++ _D3std4math8hardware9IeeeFlags7inexactMxFNbNdNiNfZb@Base 15 ++ _D3std4math8hardware9IeeeFlags7invalidMxFNbNdNiNfZb@Base 15 ++ _D3std4math8hardware9IeeeFlags8overflowMxFNbNdNiNfZb@Base 15 ++ _D3std4math8hardware9IeeeFlags9divByZeroMxFNbNdNiNfZb@Base 15 ++ _D3std4math8hardware9IeeeFlags9underflowMxFNbNdNiNfZb@Base 15 ++ _D3std4math8hardware9ieeeFlagsFNaNbNdNiNeZSQBpQBoQBm9IeeeFlags@Base 15 ++ _D3std4math8rounding11__moduleRefZ@Base 15 ++ _D3std4math8rounding12__ModuleInfoZ@Base 15 ++ _D3std4math8rounding4ceilFNaNbNiNedZd@Base 15 ++ _D3std4math8rounding4ceilFNaNbNiNeeZe@Base 15 ++ _D3std4math8rounding4ceilFNaNbNiNefZf@Base 15 ++ _D3std4math8rounding4rintFNaNbNiNfdZd@Base 15 ++ _D3std4math8rounding4rintFNaNbNiNfeZe@Base 15 ++ _D3std4math8rounding4rintFNaNbNiNffZf@Base 15 ++ _D3std4math8rounding5floorFNaNbNiNedZd@Base 15 ++ _D3std4math8rounding5floorFNaNbNiNeeZe@Base 15 ++ _D3std4math8rounding5floorFNaNbNiNefZf@Base 15 ++ _D3std4math8rounding5lrintFNaNbNiNeeZl@Base 15 ++ _D3std4math8rounding5roundFNaNbNiNeeZe@Base 15 ++ _D3std4math8rounding5truncFNaNbNiNeeZe@Base 15 ++ _D3std4math8rounding6lroundFNbNiNeeZl@Base 15 ++ _D3std4math8rounding6rndtolFNaNbNiNfdZl@Base 15 ++ _D3std4math8rounding6rndtolFNaNbNiNfeZl@Base 15 ++ _D3std4math8rounding6rndtolFNaNbNiNffZl@Base 15 ++ _D3std4math8rounding9nearbyintFNaNbNiNfeZe@Base 15 ++ _D3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZ9floatBits6__initZ@Base 15 ++ _D3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZd@Base 15 ++ _D3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZ9floatBits6__initZ@Base 15 ++ _D3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZe@Base 15 ++ _D3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZ9floatBits6__initZ@Base 15 ++ _D3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZf@Base 15 ++ _D3std4math9algebraic11__moduleRefZ@Base 15 ++ _D3std4math9algebraic12__ModuleInfoZ@Base 15 ++ _D3std4math9algebraic4cbrtFNbNiNeeZe@Base 15 ++ _D3std4math9algebraic4fabsFNaNbNiNfdZd@Base 15 ++ _D3std4math9algebraic4fabsFNaNbNiNfeZe@Base 15 ++ _D3std4math9algebraic4fabsFNaNbNiNffZf@Base 15 ++ _D3std4math9algebraic4sqrtFNaNbNiNfdZd@Base 15 ++ _D3std4math9algebraic4sqrtFNaNbNiNfeZe@Base 15 ++ _D3std4math9algebraic4sqrtFNaNbNiNffZf@Base 15 ++ _D3std4math9algebraic8polyImplFNaNbNiNeeIAeZe@Base 15 ++ _D3std4math9algebraic__T12polyImplBaseTeTeZQtFNaNbNiNeeIAeZe@Base 15 ++ _D3std4math9algebraic__T4polyTdTdVii3ZQoFNaNbNiNfdKxG3dZd@Base 15 ++ _D3std4math9algebraic__T4polyTdTdVii4ZQoFNaNbNiNfdKxG4dZd@Base 15 ++ _D3std4math9algebraic__T4polyTdTdVii5ZQoFNaNbNiNfdKxG5dZd@Base 15 ++ _D3std4math9algebraic__T4polyTdTdVii6ZQoFNaNbNiNfdKxG6dZd@Base 15 ++ _D3std4math9algebraic__T4polyTdTdVii7ZQoFNaNbNiNfdKxG7dZd@Base 15 ++ _D3std4math9algebraic__T4polyTeTeVii3ZQoFNaNbNiNfeKxG3eZe@Base 15 ++ _D3std4math9algebraic__T4polyTeTeVii4ZQoFNaNbNiNfeKxG4eZe@Base 15 ++ _D3std4math9algebraic__T4polyTeTeVii5ZQoFNaNbNiNfeKxG5eZe@Base 15 ++ _D3std4math9algebraic__T4polyTeTeVii6ZQoFNaNbNiNfeKxG6eZe@Base 15 ++ _D3std4math9algebraic__T4polyTeTeVii7ZQoFNaNbNiNfeKxG7eZe@Base 15 ++ _D3std4math9algebraic__T4polyTeTeVii8ZQoFNaNbNiNfeKxG8eZe@Base 15 ++ _D3std4math9algebraic__T4polyTeTeVii9ZQoFNaNbNiNfeKxG9eZe@Base 15 ++ _D3std4math9algebraic__T4polyTeTeZQkFNaNbNiNeeIAeZe@Base 15 ++ _D3std4math9algebraic__T4polyTfTfVii6ZQoFNaNbNiNffKxG6fZf@Base 15 ++ _D3std4math9algebraic__T4polyTfTfVii7ZQoFNaNbNiNffKxG7fZf@Base 15 ++ _D3std4math9algebraic__T4polyTfTfVii9ZQoFNaNbNiNffKxG9fZf@Base 15 ++ _D3std4math9algebraic__T4polyTxdTdVii3ZQpFNaNbNiNfxdKxG3dZd@Base 15 ++ _D3std4math9algebraic__T4polyTxdTdVii4ZQpFNaNbNiNfxdKxG4dZd@Base 15 ++ _D3std4math9algebraic__T4polyTxdTdVii5ZQpFNaNbNiNfxdKxG5dZd@Base 15 ++ _D3std4math9algebraic__T4polyTxeTeVii3ZQpFNaNbNiNfxeKxG3eZe@Base 15 ++ _D3std4math9algebraic__T4polyTxeTeVii4ZQpFNaNbNiNfxeKxG4eZe@Base 15 ++ _D3std4math9algebraic__T4polyTxeTeVii5ZQpFNaNbNiNfxeKxG5eZe@Base 15 ++ _D3std4math9algebraic__T4polyTxeTeVii6ZQpFNaNbNiNfxeKxG6eZe@Base 15 ++ _D3std4math9algebraic__T4polyTxfTfVii4ZQpFNaNbNiNfxfKxG4fZf@Base 15 ++ _D3std4math9algebraic__T4polyTxfTfVii6ZQpFNaNbNiNfxfKxG6fZf@Base 15 ++ _D3std4math9algebraic__T4polyTyeTeVii7ZQpFNaNbNiNfyeKxG7eZe@Base 15 ++ _D3std4math9algebraic__T8nextPow2TmZQmFNaNbNiNfxmZm@Base 15 ++ _D3std4math9algebraic__T9truncPow2TmZQnFNaNbNiNfxmZm@Base 15 ++ _D3std4math9constants11__moduleRefZ@Base 15 ++ _D3std4math9constants12__ModuleInfoZ@Base 15 ++ _D3std4math9remainder11__moduleRefZ@Base 15 ++ _D3std4math9remainder12__ModuleInfoZ@Base 15 ++ _D3std4math9remainder4fmodFNbNiNeeeZe@Base 15 ++ _D3std4math9remainder4modfFNbNiNeeKeZe@Base 15 ++ _D3std4math9remainder6remquoFNbNiNeeeJiZe@Base 15 ++ _D3std4math9remainderQkFNbNiNeeeZe@Base 15 ++ _D3std4math__T8ieeeMeanTeZQmFNaNbNiNexexeZe@Base 15 ++ _D3std4meta11__moduleRefZ@Base 15 ++ _D3std4meta12__ModuleInfoZ@Base 15 ++ _D3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i2Z4Impl6__initZ@Base 15 ++ _D3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i3Z4Impl6__initZ@Base 15 ++ _D3std4path11__moduleRefZ@Base 15 ++ _D3std4path11expandTildeFNbNfNkMxAyaZ18expandFromDatabaseFNbNfAyaZQe@Base 15 ++ _D3std4path11expandTildeFNbNfNkMxAyaZ21combineCPathWithDPathFNaNbNePaAyamZQf@Base 15 ++ _D3std4path11expandTildeFNbNfNkMxAyaZ21expandFromEnvironmentFNbNfAyaZ18__lambda_L4041_C25FNbNiNeZPa@Base 15 ++ _D3std4path11expandTildeFNbNfNkMxAyaZ21expandFromEnvironmentFNbNfAyaZQe@Base 15 ++ _D3std4path11expandTildeFNbNfNkMxAyaZAya@Base 15 ++ _D3std4path12__ModuleInfoZ@Base 15 ++ _D3std4path12absolutePathFNaNfNkMxAyaLAyaZQe@Base 15 ++ _D3std4path14isDirSeparatorFNaNbNiNfwZb@Base 15 ++ _D3std4path16isDriveSeparatorFNaNbNiNfwZb@Base 15 ++ _D3std4path__T10stripDriveTxaZQqFNaNbNiNfAxaZQe@Base 15 ++ _D3std4path__T10stripDriveTyaZQqFNaNbNiNfAyaZQe@Base 15 ++ _D3std4path__T11_stripDriveTAxaZQsFNaNbNiNfQpZQs@Base 15 ++ _D3std4path__T11_stripDriveTAyaZQsFNaNbNiNfQpZQs@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFNaNbNiNfQFhZSQGnQGm__TQGkTQFzZQGsFQGhZ12PathSplitter@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter11__xopEqualsMxFKxSQHlQHk__TQHiTQGxZQHqFQHfZQCgZb@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter4backMFNaNbNdNiNfZQGj@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter4saveMFNaNbNdNiNfZSQHlQHk__TQHiTQGxZQHqFQHfZQCg@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5frontMFNaNbNdNiNfZQGk@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5ltrimMFNaNbNiNfmmZm@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter5rtrimMFNaNbNiNfmmZm@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__ctorMFNaNbNcNiNfQGkZSQHqQHp__TQHnTQHcZQHvFQHkZQCl@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter6__initZ@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter7popBackMFNaNbNiNfZv@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std4path__T12pathSplitterTSQBc5range__T5chainTSQBw3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDvQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFQEzZ12PathSplitter9__xtoHashFNbNeKxSQHkQHj__TQHhTQGwZQHpFQHeZQCfZm@Base 15 ++ _D3std4path__T13lastSeparatorTAxaZQuFNaNbNiNfQpZl@Base 15 ++ _D3std4path__T13lastSeparatorTAyaZQuFNaNbNiNfQpZl@Base 15 ++ _D3std4path__T15extSeparatorPosTAyaZQwFNaNbNiNfxAyaZl@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNaNbNiNfNkMQFkZSQGuQGt__TQGrTQGcZQGzFNkMQGnZQCe@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt11__xopEqualsMxFKxSQHgQHf__TQHdTQGoZQHlFNkMQGzZQCqZb@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt11getElement0MFNaNbNiNfZa@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt4saveMFNaNbNdNiNfZSQHgQHf__TQHdTQGoZQHlFNkMQGzZQCq@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5frontMFNaNbNdNiNfZa@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt5isDotFNaNbNiNfQFxZb@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__ctorMFNaNbNcNiNfQGbZSQHlQHk__TQHiTQGtZQHqFNkMQHeZQCv@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt6__initZ@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt8isDotDotFNaNbNiNfQGaZb@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std4path__T16asNormalizedPathTSQBg5range__T5chainTSQCa3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDzQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQt9__xtoHashFNbNeKxSQHfQHe__TQHcTQGnZQHkFNkMQGyZQCpZm@Base 15 ++ _D3std4path__T18rtrimDirSeparatorsTAxaZQzFNaNbNiNfQpZQs@Base 15 ++ _D3std4path__T18rtrimDirSeparatorsTAyaZQzFNaNbNiNfQpZQs@Base 15 ++ _D3std4path__T7dirNameTxaZQmFNaNbNiNfNkMAxaZQe@Base 15 ++ _D3std4path__T8_dirNameTAxaZQoFNaNbNiNfNkMQsZQv@Base 15 ++ _D3std4path__T8_dirNameTAxaZQoFNkMQkZ6resultFNaNbNiNfbQBeZQBi@Base 15 ++ _D3std4path__T8baseNameTxaZQnFNaNbNiNfNkMAxaZQe@Base 15 ++ _D3std4path__T8baseNameTyaZQnFNaNbNiNfNkMAyaZQe@Base 15 ++ _D3std4path__T8isRootedTAxaZQoFNaNbNiNfQpZb@Base 15 ++ _D3std4path__T8isRootedTAyaZQoFNaNbNiNfQpZb@Base 15 ++ _D3std4path__T8isRootedTSQx5range__T5chainTSQBq3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFeFNaNbNiNfQFgZb@Base 15 ++ _D3std4path__T8rootNameTSQx5range__T5chainTSQBq3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFeFNaNbNiNfQFgZQFk@Base 15 ++ _D3std4path__T9_baseNameTAxaZQpFNaNbNiNfNkMQsZQv@Base 15 ++ _D3std4path__T9_baseNameTAyaZQpFNaNbNiNfNkMQsZQv@Base 15 ++ _D3std4path__T9_rootNameTSQy5range__T5chainTSQBr3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDqQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFfFNaNbNiNfQFgZQFk@Base 15 ++ _D3std4path__T9buildPathTAAxaZQqFMQjZ__T11trustedCastTAyaTAaZQvFNaNbNiNeQoZQv@Base 15 ++ _D3std4path__T9buildPathTAAxaZQqFNaNbNfMQpZAya@Base 15 ++ _D3std4path__T9buildPathTaZQnFNaNbNfAAxaXAya@Base 15 ++ _D3std4path__T9chainPathTAaTAxaZQsFNaNbNiNfQsQrZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTSQFrQDc__TQDbTQFeZQDjFQFmZQCtZQEnFQEkQCnQBoZ6Result@Base 15 ++ _D3std4path__T9chainPathTAxaTQeZQsFNaNbNiNfQsQuZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6Result@Base 15 ++ _D3std4path__T9chainPathTAyaTQeZQsFNaNbNiNfQsQuZSQBv5range__T5chainTSQCp3utf__T10byCodeUnitTQCpZQrFQCwZ14ByCodeUnitImplTSQEpQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6Result@Base 15 ++ _D3std4path__T9extensionTAyaZQpFNaNbNiNfQpZQs@Base 15 ++ _D3std4uuid10randomUUIDFNbNiNfZSQBeQBd4UUID@Base 15 ++ _D3std4uuid11__moduleRefZ@Base 15 ++ _D3std4uuid12__ModuleInfoZ@Base 15 ++ _D3std4uuid20UUIDParsingException6__ctorMFNaNeAyamEQBxQBwQBu6ReasonQvC6object9ThrowableQBpmZCQDnQDmQDk@Base 15 ++ _D3std4uuid20UUIDParsingException6__initZ@Base 15 ++ _D3std4uuid20UUIDParsingException6__vtblZ@Base 15 ++ _D3std4uuid20UUIDParsingException7__ClassZ@Base 15 ++ _D3std4uuid4UUID11uuidVersionMxFNaNbNdNiNfZEQBqQBpQBn7Version@Base 15 ++ _D3std4uuid4UUID4swapMFNaNbNiNfKSQBfQBeQBcZv@Base 15 ++ _D3std4uuid4UUID5emptyMxFNaNbNdNiNeZb@Base 15 ++ _D3std4uuid4UUID5opCmpMxFNaNbNiNfMKxSQBjQBiQBgZi@Base 15 ++ _D3std4uuid4UUID5opCmpMxFNaNbNiNfxSQBhQBgQBeZi@Base 15 ++ _D3std4uuid4UUID6__ctorMFNaNbNcNiNfMKxG16hZSQBqQBpQBn@Base 15 ++ _D3std4uuid4UUID6__ctorMFNaNbNcNiNfxG16hZSQBoQBnQBl@Base 15 ++ _D3std4uuid4UUID6__initZ@Base 15 ++ _D3std4uuid4UUID6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std4uuid4UUID7Version6__initZ@Base 15 ++ _D3std4uuid4UUID7variantMxFNaNbNdNiNfZEQBlQBkQBi7Variant@Base 15 ++ _D3std4uuid4UUID8opAssignMFNaNbNiNfMKxSQBlQBkQBiZSQBwQBvQBt@Base 15 ++ _D3std4uuid4UUID8opAssignMFNaNbNiNfxSQBjQBiQBgZSQBuQBtQBr@Base 15 ++ _D3std4uuid4UUID8opEqualsMxFNaNbNiNfMKxSQBmQBlQBjZb@Base 15 ++ _D3std4uuid4UUID8opEqualsMxFNaNbNiNfxSQBkQBjQBhZb@Base 15 ++ _D3std4uuid4UUID8toStringMxFNaNbNeZAya@Base 15 ++ _D3std4uuid4UUID__T6__ctorTaZQkMFNaNcNfIAaZSQBqQBpQBn@Base 15 ++ _D3std4uuid4UUID__T6__ctorTaZQkMFNcIAaZ7skipIndyAi@Base 15 ++ _D3std4uuid4UUID__T6toCharTaZQkMxFNaNbNiNfmZa@Base 15 ++ _D3std4uuid4UUID__T8toStringTAaZQnMxFNaNbNiNfMQrZv@Base 15 ++ _D3std4uuid4UUID__T9asArrayOfTkZQnMFNaNbNcNiNjNeZG4k@Base 15 ++ _D3std4uuid7md5UUIDFNaNbNiNfxAaxSQBfQBe4UUIDZSQBsQBrQn@Base 15 ++ _D3std4uuid7md5UUIDFNaNbNiNfxAhxSQBfQBe4UUIDZSQBsQBrQn@Base 15 ++ _D3std4uuid8sha1UUIDFNaNbNiNfMAxaMxSQBiQBh4UUIDZSQBvQBuQn@Base 15 ++ _D3std4uuid8sha1UUIDFNaNbNiNfMAxhMxSQBiQBh4UUIDZSQBvQBuQn@Base 15 ++ _D3std4uuid__T10randomUUIDTSQBa6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFcZQGhFNaNbNiNfKQGhZSQHlQHk4UUID@Base 15 ++ _D3std4zlib10UnCompress10uncompressMFAxvZQe@Base 15 ++ _D3std4zlib10UnCompress5emptyMxFNdZb@Base 15 ++ _D3std4zlib10UnCompress5errorMFiZv@Base 15 ++ _D3std4zlib10UnCompress5flushMFZAv@Base 15 ++ _D3std4zlib10UnCompress6__ctorMFEQBfQBe12HeaderFormatZCQCbQCaQBy@Base 15 ++ _D3std4zlib10UnCompress6__ctorMFkZCQBhQBgQBe@Base 15 ++ _D3std4zlib10UnCompress6__dtorMFNlZv@Base 15 ++ _D3std4zlib10UnCompress6__initZ@Base 15 ++ _D3std4zlib10UnCompress6__vtblZ@Base 15 ++ _D3std4zlib10UnCompress7__ClassZ@Base 15 ++ _D3std4zlib10uncompressFAxvmiZAv@Base 15 ++ _D3std4zlib11__moduleRefZ@Base 15 ++ _D3std4zlib12__ModuleInfoZ@Base 15 ++ _D3std4zlib13ZlibException6__ctorMFiZCQBkQBjQBh@Base 15 ++ _D3std4zlib13ZlibException6__initZ@Base 15 ++ _D3std4zlib13ZlibException6__vtblZ@Base 15 ++ _D3std4zlib13ZlibException6getmsgFNaNbNiNfiZAya@Base 15 ++ _D3std4zlib13ZlibException7__ClassZ@Base 15 ++ _D3std4zlib5crc32FkAxvZk@Base 15 ++ _D3std4zlib7adler32FkAxvZk@Base 15 ++ _D3std4zlib8Compress5errorMFiZv@Base 15 ++ _D3std4zlib8Compress5flushMFiZAv@Base 15 ++ _D3std4zlib8Compress6__ctorMFEQBcQBb12HeaderFormatZCQByQBxQBv@Base 15 ++ _D3std4zlib8Compress6__ctorMFiEQBdQBc12HeaderFormatZCQBzQByQBw@Base 15 ++ _D3std4zlib8Compress6__dtorMFNlZv@Base 15 ++ _D3std4zlib8Compress6__initZ@Base 15 ++ _D3std4zlib8Compress6__vtblZ@Base 15 ++ _D3std4zlib8Compress7__ClassZ@Base 15 ++ _D3std4zlib8Compress8compressMFAxvZQe@Base 15 ++ _D3std4zlib8compressFAxvZAh@Base 15 ++ _D3std4zlib8compressFAxviZAh@Base 15 ++ _D3std5array11__moduleRefZ@Base 15 ++ _D3std5array12__ModuleInfoZ@Base 15 ++ _D3std5array__T11replaceIntoTxaTSQBfQBe__T8AppenderTAxaZQoTAyaTQeZQBzFNaNbNfQBsQBbQxQzKmZv@Base 15 ++ _D3std5array__T11replaceIntoTyaTSQBfQBe__T8AppenderTAyaZQoTQhTQkZQByFNaNbNfQBrQBaQBdQBgKmZv@Base 15 ++ _D3std5array__T13copyBackwardsTSQBe5regex8internal2ir10NamedGroupZQBzFNaAQBqQeZv@Base 15 ++ _D3std5array__T13copyBackwardsTSQBe5regex8internal2ir8BytecodeZQBwFNaAQBnQeZv@Base 15 ++ _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir10NamedGroupTQBjZQCdFNaNfKAQBxmQCbZv@Base 15 ++ _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir8BytecodeTQBgTQBkZQCeFNaNfKAQBymQCcQCfZv@Base 15 ++ _D3std5array__T13insertInPlaceTSQBe5regex8internal2ir8BytecodeTQBgZQCaFNaNfKAQBumQByZv@Base 15 ++ _D3std5array__T14arrayAllocImplVbi0TASQBk3uni17CodepointIntervalTmZQCaFNaNbmZQBp@Base 15 ++ _D3std5array__T14arrayAllocImplVbi0TAaTmZQBaFNaNbmZQp@Base 15 ++ _D3std5array__T14arrayAllocImplVbi0TAfTmZQBaFNaNbmZQp@Base 15 ++ _D3std5array__T14arrayAllocImplVbi0TAhTmZQBaFNaNbmZQp@Base 15 ++ _D3std5array__T14arrayAllocImplVbi0TAkTmZQBaFNaNbmZQp@Base 15 ++ _D3std5array__T14arrayAllocImplVbi0TAmTmZQBaFNaNbmZQp@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx11__xopEqualsMxFKxSQCfQCe__TQCbTQBnZQCjZb@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx12toStringImplFNaNfQzxAAyaZQBh@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx13ensureAddableMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx4dataMNgFNaNbNdNiNfZANgAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx5clearMFNaNbNiNeZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx6__ctorMFNaNbNcNeQyZSQChQCg__TQCdTQBpZQCl@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx6__initZ@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx7opSliceMNgFNaNbNiNeZANgAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx8shrinkToMFNaNemZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx8toStringMxFNaNfZQx@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx9__xtoHashFNbNeKxSQCeQCd__TQCaTQBmZQCiZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx__T12toStringImplTSQCfQCe__TQCbTQBmZQCjZQBlFNaNfQCcxAAyaMKQBoMKxSQDz6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAAyaZQx__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr11__xopEqualsMxFKxSQDaQCz__TQCwTQCiZQDeZb@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr12toStringImplFNaNfAyaxACQDgQBzQByZQq@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr13ensureAddableMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr4dataMNgFNaNbNdNiNfZANgCQDfQByQBx@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr5clearMFNaNbNiNeZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__ctorMFNaNbNcNeQBtZSQDdQDc__TQCzTQClZQDh@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__initZ@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr7opSliceMNgFNaNbNiNeZANgCQDgQBzQBy@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8shrinkToMFNaNemZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr8toStringMxFNaNfZAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr9__xtoHashFNbNeKxSQCzQCy__TQCvTQChZQDdZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr__T12toStringImplTSQDaQCz__TQCwTAyaZQDeZQBlFNaNfQqxACQEiQDbQDaMKQBuMKxSQFa6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr__T3putTQBjZQjMFNaNbNfQBxZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs11__xopEqualsMxFKxSQDbQDa__TQCxTQCjZQDfZb@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs12toStringImplFNfAyaxASQDfQByQBuZQq@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs13ensureAddableMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs4dataMNgFNaNbNdNiNfZANgSQDgQBzQBv@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs5clearMFNaNbNiNeZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__ctorMFNaNbNcNeQBuZSQDeQDd__TQDaTQCmZQDi@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__initZ@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs7opSliceMNgFNaNbNiNeZANgSQDhQCaQBw@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8shrinkToMFNaNemZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs8toStringMxFNfZAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs9__xtoHashFNbNeKxSQDaQCz__TQCwTQCiZQDeZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs__T12toStringImplTSQDbQDa__TQCxTAyaZQDfZQBlFNfQoxASQEhQDaQCwMKQBsMKxSQEz6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs__T3putTQBkZQjMFNaNbNfQByZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw12toStringImplFNaNfAyaxAaZQh@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw13ensureAddableMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw4dataMNgFNaNbNdNiNfZANgxa@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw6__initZ@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw7opSliceMNgFNaNbNiNeZANgxa@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw8toStringMxFNaNfZAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAaMKQBlMKxSQDv6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTAyaZQjMFNaNbNfQoZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAxaZQw__T3putTwZQhMFNaNfwZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw12toStringImplFNaNfQzxAyaZQBg@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw13ensureAddableMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw6__initZ@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw8toStringMxFNaNfZQx@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T12toStringImplTSQCeQCd__TQCaTQBmZQCiZQBlFNaNfQCcxAyaMKQBnMKxSQDx6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAhZQiMFNaNbNfQnZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAuZQiMFNaNfQlZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAwZQiMFNaNfQlZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAxaZQjMFNaNbNfQoZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAyuZQjMFNaNfQmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTAywZQjMFNaNfQmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu4path__T16asNormalizedPathTSQCz5range__T5chainTSQDt3utf__T10byCodeUnitTQDlZQrFQDsZ14ByCodeUnitImplTSQFtQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGuMFNaNbNfQHaZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu5range__T5chainTSQCo3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEnQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFaMFNaNbNfQFgZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTSQBu5range__T5chainTSQCoQu__T4TakeTSQDdQBj__T6RepeatTaZQkZQBdTSQEe4conv__T7toCharsVhi10TaVEQFg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEwFQEtQDgZQtZQGcMFNaNbNfQGiZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTaZQhMFNaNbNfaZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTwZQhMFNaNfwZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTxaZQiMFNaNbNfxaZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTxwZQiMFNaNfxwZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyaZQw__T3putTyaZQiMFNaNbNfyaZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw12toStringImplFNaNfAyaxAyuZQi@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw13ensureAddableMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw6__initZ@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw8toStringMxFNaNfZAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAyuMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTAuZQiMFNaNbNfQnZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAyuZQw__T3putTwZQhMFNaNfwZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw11__xopEqualsMxFKxSQCeQCd__TQCaTQBmZQCiZb@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw12toStringImplFNaNfAyaxAywZQi@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw13ensureAddableMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw4dataMNgFNaNbNdNiNfZQBa@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw6__ctorMFNaNbNcNiNeQzZSQCiQCh__TQCeTQBqZQCm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw6__initZ@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw7opSliceMNgFNaNbNiNeZQBb@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw8toStringMxFNaNfZAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTQBlZQChZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAywMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTAywZQw__T3putTwZQhMFNaNbNfwZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw11__xopEqualsMxFKxSQCeQCd__TQCaTyQBmZQCjZb@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw12toStringImplFNaNfAyaxAyaZQi@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw13ensureAddableMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw4dataMNgFNaNbNdNiNfZAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw6__ctorMFNaNbNcNiNeyQzZSQCjQCi__TQCfTyQBrZQCo@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw6__initZ@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw7opSliceMNgFNaNbNiNeZAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw8toStringMxFNaNfZAya@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw9__xtoHashFNbNeKxSQCdQCc__TQBzTyQBlZQCiZm@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T12toStringImplTSQCeQCd__TQCaTAyaZQCiZQBlFNaNfQqxAyaMKQBmMKxSQDw6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAaZQiMFNaNbNfQnZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAwZQiMFNaNfQlZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAxaZQjMFNaNbNfQoZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTAyaZQjMFNaNbNfQoZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTaZQhMFNaNbNfaZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTwZQhMFNaNfwZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTxaZQiMFNaNbNfxaZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTxwZQiMFNaNfxwZv@Base 15 ++ _D3std5array__T15InPlaceAppenderTyAaZQw__T3putTyaZQiMFNaNbNfyaZv@Base 15 ++ _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTmZQCaFNaNbNemZQBr@Base 15 ++ _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTxmZQCbFNaNbNexmZQBt@Base 15 ++ _D3std5array__T18uninitializedArrayTASQBk3uni17CodepointIntervalTyiZQCbFNaNbNeyiZQBt@Base 15 ++ _D3std5array__T18uninitializedArrayTAaTmZQBaFNaNbNemZQr@Base 15 ++ _D3std5array__T18uninitializedArrayTAaTxmZQBbFNaNbNexmZQt@Base 15 ++ _D3std5array__T18uninitializedArrayTAfTmZQBaFNaNbNemZQr@Base 15 ++ _D3std5array__T18uninitializedArrayTAhTkZQBaFNaNbNekZQr@Base 15 ++ _D3std5array__T18uninitializedArrayTAhTmZQBaFNaNbNemZQr@Base 15 ++ _D3std5array__T18uninitializedArrayTAkTxmZQBbFNaNbNexmZQt@Base 15 ++ _D3std5array__T18uninitializedArrayTAmTxmZQBbFNaNbNexmZQt@Base 15 ++ _D3std5array__T19appenderNewCapacityVmi16ZQBbFNaNbNiNfmmZm@Base 15 ++ _D3std5array__T19appenderNewCapacityVmi1ZQBaFNaNbNiNfmmZm@Base 15 ++ _D3std5array__T19appenderNewCapacityVmi2ZQBaFNaNbNiNfmmZm@Base 15 ++ _D3std5array__T19appenderNewCapacityVmi40ZQBbFNaNbNiNfmmZm@Base 15 ++ _D3std5array__T19appenderNewCapacityVmi4ZQBaFNaNbNiNfmmZm@Base 15 ++ _D3std5array__T19appenderNewCapacityVmi8ZQBaFNaNbNiNfmmZm@Base 15 ++ _D3std5array__T5splitTAyaTQeZQoFNaNbNfQqQsZAQw@Base 15 ++ _D3std5array__T5splitTAyaZQlFNaNfQlZAQp@Base 15 ++ _D3std5array__T7overlapTvTvZQnFNaNbNiNeAvQcZQf@Base 15 ++ _D3std5array__T7replaceTxaTAyaTQeZQtFNaNbNfAxaQtQvKmZQk@Base 15 ++ _D3std5array__T7replaceTxaTAyaTQeZQtFNaNbNfAxaQtQvZQi@Base 15 ++ _D3std5array__T7replaceTyaTAyaTQeZQtFNaNbNfQqQsQuKmZQz@Base 15 ++ _D3std5array__T7replaceTyaTAyaTQeZQtFNaNbNfQqQsQuZQx@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp10ensureInitMFNaNbNfZv@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp4dataMNgFNaNbNdNiNfZANgAya@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp5clearMFNaNbNiNfZv@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp6__ctorMFNaNbNcNfQyZSQBzQBy__TQBvTQBpZQCd@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp6__initZ@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp7opSliceMNgFNaNbNdNiNfZANgAya@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp8shrinkToMFNaNfmZv@Base 15 ++ _D3std5array__T8AppenderTAAyaZQp__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi10ensureInitMFNaNbNfZv@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi4dataMNgFNaNbNdNiNfZANgCQCwQByQBx@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi5clearMFNaNbNiNfZv@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__ctorMFNaNbNcNfQBsZSQCuQCt__TQCqTQCkZQCy@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__initZ@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi7opSliceMNgFNaNbNdNiNfZANgCQCzQCbQCa@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi8shrinkToMFNaNfmZv@Base 15 ++ _D3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi__T3putTQBiZQjMFNaNbNfQBwZv@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj10ensureInitMFNaNbNfZv@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj4dataMNgFNaNbNdNiNfZANgSQCxQBzQBv@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj5clearMFNaNbNiNfZv@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__ctorMFNaNbNcNfQBtZSQCvQCu__TQCrTQClZQCz@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__initZ@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj7opSliceMNgFNaNbNdNiNfZANgSQDaQCcQBy@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj8shrinkToMFNaNfmZv@Base 15 ++ _D3std5array__T8AppenderTASQz6socket11AddressInfoZQBj__T3putTQBjZQjMFNaNbNfQBxZv@Base 15 ++ _D3std5array__T8AppenderTAxaZQo10ensureInitMFNaNbNfZv@Base 15 ++ _D3std5array__T8AppenderTAxaZQo4dataMNgFNaNbNdNiNfZANgxa@Base 15 ++ _D3std5array__T8AppenderTAxaZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 ++ _D3std5array__T8AppenderTAxaZQo6__initZ@Base 15 ++ _D3std5array__T8AppenderTAxaZQo6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAxaZQo7opSliceMNgFNaNbNdNiNfZANgxa@Base 15 ++ _D3std5array__T8AppenderTAxaZQo7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T8AppenderTAxaZQo8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAxaZQo__T3putTAyaZQjMFNaNbNfQoZv@Base 15 ++ _D3std5array__T8AppenderTAxaZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T8AppenderTAxaZQo__T3putTwZQhMFNaNfwZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo10ensureInitMFNaNbNfZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 ++ _D3std5array__T8AppenderTAyaZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 ++ _D3std5array__T8AppenderTAyaZQo6__initZ@Base 15 ++ _D3std5array__T8AppenderTAyaZQo6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAyaZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 ++ _D3std5array__T8AppenderTAyaZQo7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTAaZQiMFNaNbNfQnZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTAhZQiMFNaNbNfQnZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTAwZQiMFNaNfQlZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTAxaZQjMFNaNbNfQoZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTSQBm4path__T16asNormalizedPathTSQCr5range__T5chainTSQDl3utf__T10byCodeUnitTQDlZQrFQDsZ14ByCodeUnitImplTSQFlQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtZQGuMFNaNbNfQHaZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTSQBm5range__T5chainTSQCg3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEfQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFaMFNaNbNfQFgZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTSQBm5range__T5chainTSQCgQu__T4TakeTSQCvQBj__T6RepeatTaZQkZQBdTSQDw4conv__T7toCharsVhi10TaVEQEy5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEwFQEtQDgZQtZQGcMFNaNbNfQGiZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTaZQhMFNaNbNfaZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTwZQhMFNaNfwZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTxaZQiMFNaNbNfxaZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTxwZQiMFNaNfxwZv@Base 15 ++ _D3std5array__T8AppenderTAyaZQo__T3putTyaZQiMFNaNbNfyaZv@Base 15 ++ _D3std5array__T8AppenderTAyuZQo10ensureInitMFNaNbNfZv@Base 15 ++ _D3std5array__T8AppenderTAyuZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 ++ _D3std5array__T8AppenderTAyuZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 ++ _D3std5array__T8AppenderTAyuZQo6__initZ@Base 15 ++ _D3std5array__T8AppenderTAyuZQo6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAyuZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 ++ _D3std5array__T8AppenderTAyuZQo7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T8AppenderTAyuZQo8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAyuZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T8AppenderTAyuZQo__T3putTwZQhMFNaNfwZv@Base 15 ++ _D3std5array__T8AppenderTAywZQo10ensureInitMFNaNbNfZv@Base 15 ++ _D3std5array__T8AppenderTAywZQo4dataMNgFNaNbNdNiNfZQBa@Base 15 ++ _D3std5array__T8AppenderTAywZQo6__ctorMFNaNbNcNfQxZSQByQBx__TQBuTQBoZQCc@Base 15 ++ _D3std5array__T8AppenderTAywZQo6__initZ@Base 15 ++ _D3std5array__T8AppenderTAywZQo6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAywZQo7opSliceMNgFNaNbNdNiNfZQBd@Base 15 ++ _D3std5array__T8AppenderTAywZQo7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T8AppenderTAywZQo8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTAywZQo__T3putTQoZQiMFNaNbNfQBbZv@Base 15 ++ _D3std5array__T8AppenderTAywZQo__T3putTwZQhMFNaNbNfwZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo10ensureInitMFNaNbNfZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo4dataMNgFNaNbNdNiNfZAya@Base 15 ++ _D3std5array__T8AppenderTyAaZQo6__ctorMFNaNbNcNfyQxZSQBzQBy__TQBvTyQBpZQCe@Base 15 ++ _D3std5array__T8AppenderTyAaZQo6__initZ@Base 15 ++ _D3std5array__T8AppenderTyAaZQo6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTyAaZQo7opSliceMNgFNaNbNdNiNfZAya@Base 15 ++ _D3std5array__T8AppenderTyAaZQo7reserveMFNaNbNfmZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std5array__T8AppenderTyAaZQo__T3putTAaZQiMFNaNbNfQnZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo__T3putTAwZQiMFNaNfQlZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo__T3putTAxaZQjMFNaNbNfQoZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo__T3putTAyaZQjMFNaNbNfQoZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo__T3putTaZQhMFNaNbNfaZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo__T3putTxaZQiMFNaNbNfxaZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo__T3putTxwZQiMFNaNfxwZv@Base 15 ++ _D3std5array__T8AppenderTyAaZQo__T3putTyaZQiMFNaNbNfyaZv@Base 15 ++ _D3std5array__T8appenderTAAyaZQpFNaNbNfZSQBnQBm__T8AppenderTQBjZQo@Base 15 ++ _D3std5array__T8appenderTACQz3zip13ArchiveMemberZQBiFNaNbNfZSQChQCg__T8AppenderTQCdZQo@Base 15 ++ _D3std5array__T8appenderTASQz6socket11AddressInfoZQBjFNaNbNfZSQCiQCh__T8AppenderTQCeZQo@Base 15 ++ _D3std5array__T8appenderTAxaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 ++ _D3std5array__T8appenderTAyaZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 ++ _D3std5array__T8appenderTAyuZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 ++ _D3std5array__T8appenderTAywZQoFNaNbNfZSQBmQBl__T8AppenderTQBiZQo@Base 15 ++ _D3std5array__T8appenderTyAaZQoFNaNbNfZSQBmQBl__T8AppenderTyQBiZQp@Base 15 ++ _D3std5array__TQjTS6object__T7byValueHTHAyaCQBq3zip13ArchiveMemberTQBbTQBcZQBuFNaNbNiNfQBwZ6ResultZQDpFNaNbNfQDnZAQCt@Base 15 ++ _D3std5array__TQjTSQr3uni__T13InversionListTSQBrQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDaFNaNbNfQCyZASQDuQDe17CodepointInterval@Base 15 ++ _D3std5array__TQjTSQr3uni__T13InversionListTSQBrQBb8GcPolicyZQBh__T9IntervalsTAxkZQpZQDbFNaNbNfQCzZASQDvQDf17CodepointInterval@Base 15 ++ _D3std5array__TQjTSQr3uni__T8CowArrayTSQBlQv8GcPolicyZQBaZQCaFNaNbNfQByZAk@Base 15 ++ _D3std5array__TQjTSQr5range__T4iotaTmTmZQkFmmZ6ResultZQBwFNaNbNfQBuZAm@Base 15 ++ _D3std5array__TQjTSQr5range__T5chainTSQBk3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQDjQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFgFNaNbNfQFeZAxa@Base 15 ++ _D3std5array__TQjTSQr9algorithm9iteration__T10UniqResultSQCd10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEv5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGsQBx18SortedRangeOptionsi0ZQCoZQGjZQHzFNaNbNfQHxZQCw@Base 15 ++ _D3std5array__TQjTSQr9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCu8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6ResultZQGcFNaNbNfQGaZAQEv@Base 15 ++ _D3std5ascii10isAlphaNumFNaNbNiNfwZb@Base 15 ++ _D3std5ascii10isHexDigitFNaNbNiNfwZb@Base 15 ++ _D3std5ascii10whitespaceyAa@Base 15 ++ _D3std5ascii11__moduleRefZ@Base 15 ++ _D3std5ascii11isGraphicalFNaNbNiNfwZb@Base 15 ++ _D3std5ascii11isPrintableFNaNbNiNfwZb@Base 15 ++ _D3std5ascii11octalDigitsyAa@Base 15 ++ _D3std5ascii12__ModuleInfoZ@Base 15 ++ _D3std5ascii12isOctalDigitFNaNbNiNfwZb@Base 15 ++ _D3std5ascii13fullHexDigitsyAa@Base 15 ++ _D3std5ascii13isPunctuationFNaNbNiNfwZb@Base 15 ++ _D3std5ascii14lowerHexDigitsyAa@Base 15 ++ _D3std5ascii6digitsyAa@Base 15 ++ _D3std5ascii7isASCIIFNaNbNiNfwZb@Base 15 ++ _D3std5ascii7isAlphaFNaNbNiNfwZb@Base 15 ++ _D3std5ascii7isDigitFNaNbNiNfwZb@Base 15 ++ _D3std5ascii7isLowerFNaNbNiNfwZb@Base 15 ++ _D3std5ascii7isUpperFNaNbNiNfwZb@Base 15 ++ _D3std5ascii7isWhiteFNaNbNiNfwZb@Base 15 ++ _D3std5ascii7lettersyAa@Base 15 ++ _D3std5ascii7newlineyAa@Base 15 ++ _D3std5ascii9hexDigitsyAa@Base 15 ++ _D3std5ascii9isControlFNaNbNiNfwZb@Base 15 ++ _D3std5ascii9lowercaseyAa@Base 15 ++ _D3std5ascii9uppercaseyAa@Base 15 ++ _D3std5ascii__T7toLowerTwZQlFNaNbNiNfwZw@Base 15 ++ _D3std5ascii__T7toLowerTxaZQmFNaNbNiNfxaZa@Base 15 ++ _D3std5ascii__T7toLowerTxuZQmFNaNbNiNfxuZu@Base 15 ++ _D3std5ascii__T7toLowerTxwZQmFNaNbNiNfxwZw@Base 15 ++ _D3std5ascii__T7toLowerTyaZQmFNaNbNiNfyaZa@Base 15 ++ _D3std5ascii__T7toLowerTywZQmFNaNbNiNfywZw@Base 15 ++ _D3std5ascii__T7toUpperTwZQlFNaNbNiNfwZw@Base 15 ++ _D3std5range10interfaces11__moduleRefZ@Base 15 ++ _D3std5range10interfaces12__ModuleInfoZ@Base 15 ++ _D3std5range10interfaces22UnsupportedRangeMethod6__initZ@Base 15 ++ _D3std5range10interfaces22UnsupportedRangeMethod6__vtblZ@Base 15 ++ _D3std5range10interfaces22UnsupportedRangeMethod7__ClassZ@Base 15 ++ _D3std5range10interfaces22UnsupportedRangeMethod8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDuQDtQDqQDh@Base 15 ++ _D3std5range10interfaces22UnsupportedRangeMethod8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDuQDtQDqQDh@Base 15 ++ _D3std5range10primitives11__moduleRefZ@Base 15 ++ _D3std5range10primitives12__ModuleInfoZ@Base 15 ++ _D3std5range10primitives__T10walkLengthTAyaZQrFNaNbNiNfQpZm@Base 15 ++ _D3std5range10primitives__T10walkLengthTSQBn4path__T16asNormalizedPathTSQCsQCr__T5chainTSQDj3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQFiQFh__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFlFNkMQEzZQtZQGyFNaNbNiNfQGxZm@Base 15 ++ _D3std5range10primitives__T10walkLengthTSQBnQBm__T10roundRobinTSQCk9algorithm9iteration__T9MapResultSQDv10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQFz3uni21DecompressedIntervalsZQDuTSQHjQEzQEs__TQElSQHzQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6ResultZQJqFNaNfQJlZm@Base 15 ++ _D3std5range10primitives__T14popBackExactlyTAAyaZQwFNaNbNiNfKQrmZv@Base 15 ++ _D3std5range10primitives__T14popBackExactlyTAC4core6thread5fiber5FiberZQBsFNaNbNiNfKQBomZv@Base 15 ++ _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 ++ _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 ++ _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 ++ _D3std5range10primitives__T14popBackExactlyTSQBr3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImplZQCqFNaNbNiNfKQCmmZv@Base 15 ++ _D3std5range10primitives__T15popFrontExactlyTAAyaZQxFNaNbNiNfKQrmZv@Base 15 ++ _D3std5range10primitives__T15popFrontExactlyTAC4core6thread5fiber5FiberZQBtFNaNbNiNfKQBomZv@Base 15 ++ _D3std5range10primitives__T3putTAkTkZQkFNaNbNiNfKQrkZv@Base 15 ++ _D3std5range10primitives__T3putTDFMAxaZvTAaZQrFKQqQjZv@Base 15 ++ _D3std5range10primitives__T3putTDFMAxaZvTAyaZQsFKQrQkZv@Base 15 ++ _D3std5range10primitives__T3putTDFMAxaZvTQgZQrFKQqQpZv@Base 15 ++ _D3std5range10primitives__T3putTDFNaNbNfAxaZvTAaZQwFNaNbNfKQBbQqZv@Base 15 ++ _D3std5range10primitives__T3putTDFNaNbNfAxaZvTAyaZQxFNaNbNfKQBcQrZv@Base 15 ++ _D3std5range10primitives__T3putTDFNaNbNfAxaZvTaZQvFNaNbNfKQBaaZv@Base 15 ++ _D3std5range10primitives__T3putTDFNaNbNfAxaZvTxaZQwFNaNbNfKQBbxaZv@Base 15 ++ _D3std5range10primitives__T3putTDFNaNbNfAxaZvTxwZQwFNaNfKQzxwZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAaZQBuFNaNbNfKQCaQrZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAuZQBuFNaNfKQByQpZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAwZQBuFNaNfKQByQpZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAxaZQBvFNaNbNfKQCbQsZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAyuZQBvFNaNfKQBzQqZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTAywZQBvFNaNfKQBzQqZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTQhZQBuFNaNbNfKQCaQyZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTaZQBtFNaNbNfKQBzaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTxaZQBuFNaNbNfKQCaxaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTxwZQBuFNaNfKQByxwZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T15InPlaceAppenderTAyaZQwTyaZQBuFNaNbNfKQCayaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAAyaZQpTQhZQBnFNaNbNfKQBtQyZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAaZQBmFNaNbNfKQBsQrZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAwZQBmFNaNfKQBqQpZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTAxaZQBnFNaNbNfKQBtQsZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTQhZQBmFNaNbNfKQBsQyZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCj4path__T16asNormalizedPathTSQDoQDn__T5chainTSQEf3utf__T10byCodeUnitTQDbZQrFQDiZ14ByCodeUnitImplTSQGfQGe__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFmFNkMQFaZQtZQHvFNaNbNfKQIbQHaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCjQCi__T5chainTSQDa3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEzQEy__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQGbFNaNbNfKQGhQFgZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTSQCjQCi__T5chainTSQDaQCz__T4TakeTSQDqQDp__T6RepeatTaZQkZQBdTSQEr4conv__T7toCharsVhi10TaVEQFt5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQExFQEuQDgZQtZQHeFNaNbNfKQHkQGjZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTaZQBlFNaNbNfKQBraZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxaZQBmFNaNbNfKQBsxaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTxwZQBmFNaNfKQBqxwZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTAyaZQoTyaZQBmFNaNbNfKQBsyaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAaZQBmFNaNbNfKQBsQrZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAwZQBmFNaNfKQBqQpZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAxaZQBnFNaNbNfKQBtQsZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTAyaZQBnFNaNbNfKQBtQsZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTaZQBlFNaNbNfKQBraZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTxaZQBmFNaNbNfKQBsxaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTxwZQBmFNaNfKQBqxwZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5array__T8AppenderTyAaZQoTyaZQBmFNaNbNfKQBsyaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAaZQBrFNfKQBtQnZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAwZQBrFNfKQBtQnZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAxaZQBsFNfKQBuQoZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTAyaZQBsFNfKQBuQoZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTaZQBqFNfKQBsaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTxaZQBrFNfKQBtxaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTxwZQBrFNfKQBtxwZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf5stdio4File17LockingTextWriterTyaZQBrFNfKQBtyaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeTAxaZQCsFNaNbNiNfKQDaQuZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAaZQBdFNaNbNiNfKQBlQtZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAxaZQBeFNaNbNiNfKQBmQuZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTAyaZQBeFNaNbNiNfKQBmQuZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTaZQBcFNaNbNiNfKQBkaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTxaZQBdFNaNbNiNfKQBlxaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format8NoOpSinkTxwZQBdFNaNbNiNfKQBlxwZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaZQCgFNaNbNfKQCmQsZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQmZQCfFNaNbNfKQClQBdZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpZQCfFNaNbNfKQClQBgZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaZQCeFNaNbNfKQCkaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxaZQCfFNaNbNfKQClxaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxwZQCfFNaNfKQCjxwZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTAyaZQCuFNaNbNfKQDaQsZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQrZQCtFNaNbNfKQCzQBiZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuZQCtFNaNbNfKQCzQBlZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQCsFNaNbNfKQCyaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxaZQCtFNaNbNfKQCzxaZv@Base 15 ++ _D3std5range10primitives__T3putTSQBf6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxwZQCtFNaNfKQCxxwZv@Base 15 ++ _D3std5range10primitives__T4backTAyaZQkFNaNbNcNdNiNfNkMANgAyaZNgQg@Base 15 ++ _D3std5range10primitives__T4backTCQBg3zip13ArchiveMemberZQBeFNaNbNcNdNiNfNkMANgCQDaQBuQBtZNgQn@Base 15 ++ _D3std5range10primitives__T4backTSQBg5regex8internal2ir10NamedGroupZQBpFNaNbNcNdNiNfNkMANgSQDlQCfQCcQBwQBwZNgQt@Base 15 ++ _D3std5range10primitives__T4backTSQBg6logger11multilogger16MultiLoggerEntryZQBxFNaNbNcNdNiNfNkMANgSQDtQCnQCjQBzZNgQq@Base 15 ++ _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNcNdNiNfNkMANgSQEaQCuQCoQCiQBwZNgQt@Base 15 ++ _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone10TransitionZQCeFNaNbNcNdNiNfNkMANgSQEaQCuQCoQCiQBwZNgQt@Base 15 ++ _D3std5range10primitives__T4backTSQBg8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNcNdNiNfNkMANgSQEeQCyQCsQCmQCaZNgQt@Base 15 ++ _D3std5range10primitives__T4backTSQBg8internal14unicode_tables15UnicodePropertyZQCbFNaNbNcNdNiNfNkMANgSQDxQCrQClQByZNgQq@Base 15 ++ _D3std5range10primitives__T4backTaZQiFNaNdNfMAxaZw@Base 15 ++ _D3std5range10primitives__T4backTkZQiFNaNbNcNdNiNfNkMANgkZNgk@Base 15 ++ _D3std5range10primitives__T4backTwZQiFNaNbNcNdNiNfNkMANgwZNgw@Base 15 ++ _D3std5range10primitives__T4saveTAxaZQkFNaNbNdNiNfNkMANgANgxaZQj@Base 15 ++ _D3std5range10primitives__T4saveTAyaZQkFNaNbNdNiNfNkMANgAyaZQh@Base 15 ++ _D3std5range10primitives__T4saveTCQBg3zip13ArchiveMemberZQBeFNaNbNdNiNfNkMANgCQCyQBsQBrZQo@Base 15 ++ _D3std5range10primitives__T4saveTSQBg5regex8internal2ir10NamedGroupZQBpFNaNbNdNiNfNkMANgSQDjQCdQCaQBuQBuZQu@Base 15 ++ _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNdNiNfNkMANgSQDyQCsQCmQCgQBuZQu@Base 15 ++ _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone10TransitionZQCeFNaNbNdNiNfNkMANgSQDyQCsQCmQCgQBuZQu@Base 15 ++ _D3std5range10primitives__T4saveTSQBg8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNdNiNfNkMANgSQEcQCwQCqQCkQByZQu@Base 15 ++ _D3std5range10primitives__T4saveTSQBg8internal14unicode_tables15UnicodePropertyZQCbFNaNbNdNiNfNkMANgSQDvQCpQCjQBwZQr@Base 15 ++ _D3std5range10primitives__T4saveTaZQiFNaNbNdNiNfNkMANgaZQf@Base 15 ++ _D3std5range10primitives__T4saveTfZQiFNaNbNdNiNfNkMANgfZQf@Base 15 ++ _D3std5range10primitives__T4saveThZQiFNaNbNdNiNfNkMANghZQf@Base 15 ++ _D3std5range10primitives__T4saveTkZQiFNaNbNdNiNfNkMANgkZQf@Base 15 ++ _D3std5range10primitives__T4saveTuZQiFNaNbNdNiNfNkMANguZQf@Base 15 ++ _D3std5range10primitives__T4saveTwZQiFNaNbNdNiNfNkMANgwZQf@Base 15 ++ _D3std5range10primitives__T5doPutTAkTkZQmFNaNbNiNfKQrKkZv@Base 15 ++ _D3std5range10primitives__T5doPutTDFMAxaZvTAaZQtFKQqKQkZv@Base 15 ++ _D3std5range10primitives__T5doPutTDFMAxaZvTAyaZQuFKQrKQlZv@Base 15 ++ _D3std5range10primitives__T5doPutTDFMAxaZvTQgZQtFKQqKQqZv@Base 15 ++ _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAaZQyFNaNbNfKQBbKQrZv@Base 15 ++ _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAaZQyFNaNbNfKQBbQqZv@Base 15 ++ _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTAyaZQzFNaNbNfKQBcKQsZv@Base 15 ++ _D3std5range10primitives__T5doPutTDFNaNbNfAxaZvTQgZQyFNaNbNfKQBbQwZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAaZQBwFNaNbNfKQCaKQsZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAuZQBwFNaNfKQByKQqZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAwZQBwFNaNfKQByKQqZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAxaZQBxFNaNbNfKQCbKQtZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAyuZQBxFNaNfKQBzKQrZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTAywZQBxFNaNfKQBzKQrZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTQhZQBwFNaNbNfKQCaKQzZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTaZQBvFNaNbNfKQBzKaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTxaZQBwFNaNbNfKQCaKxaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTxwZQBwFNaNfKQByKxwZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T15InPlaceAppenderTAyaZQwTyaZQBwFNaNbNfKQCaKyaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAAyaZQpTQhZQBpFNaNbNfKQBtKQzZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAaZQBoFNaNbNfKQBsKQsZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAwZQBoFNaNfKQBqKQqZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTAxaZQBpFNaNbNfKQBtKQtZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTQhZQBoFNaNbNfKQBsKQzZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQCl4path__T16asNormalizedPathTSQDqQDp__T5chainTSQEh3utf__T10byCodeUnitTQDbZQrFQDiZ14ByCodeUnitImplTSQGhQGg__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFmFNkMQFaZQtZQHxFNaNbNfKQIbKQHbZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQClQCk__T5chainTSQDc3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFbQFa__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQGdFNaNbNfKQGhKQFhZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTSQClQCk__T5chainTSQDcQDb__T4TakeTSQDsQDr__T6RepeatTaZQkZQBdTSQEt4conv__T7toCharsVhi10TaVEQFv5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQExFQEuQDgZQtZQHgFNaNbNfKQHkKQGkZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTaZQBnFNaNbNfKQBrKaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTxaZQBoFNaNbNfKQBsKxaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTxwZQBoFNaNfKQBqKxwZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTAyaZQoTyaZQBoFNaNbNfKQBsKyaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAaZQBoFNaNbNfKQBsKQsZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAwZQBoFNaNfKQBqKQqZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAxaZQBpFNaNbNfKQBtKQtZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTAyaZQBpFNaNbNfKQBtKQtZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTaZQBnFNaNbNfKQBrKaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTxaZQBoFNaNbNfKQBsKxaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTxwZQBoFNaNfKQBqKxwZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5array__T8AppenderTyAaZQoTyaZQBoFNaNbNfKQBsKyaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAaZQBtFNfKQBtKQoZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAwZQBtFNfKQBtKQoZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAxaZQBuFNfKQBuKQpZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTAyaZQBuFNfKQBuKQpZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTaZQBsFNfKQBsKaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTxaZQBtFNfKQBtKxaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTxwZQBtFNfKQBtKxwZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh5stdio4File17LockingTextWriterTyaZQBtFNfKQBtKyaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeTAxaZQCuFNaNbNiNfKQDaKQvZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAaZQBfFNaNbNiNfKQBlKQuZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAxaZQBgFNaNbNiNfKQBmKQvZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTAyaZQBgFNaNbNiNfKQBmKQvZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTaZQBeFNaNbNiNfKQBkKaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTxaZQBfFNaNbNiNfKQBlKxaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format8NoOpSinkTxwZQBfFNaNbNiNfKQBlKxwZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaZQCiFNaNbNfKQCmKQtZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQmZQChFNaNbNfKQClKQBeZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpZQChFNaNbNfKQClKQBhZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaZQCgFNaNbNfKQCkKaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxaZQChFNaNbNfKQClKxaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxwZQChFNaNfKQCjKxwZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTAyaZQCwFNaNbNfKQDaKQtZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQrZQCvFNaNbNfKQCzKQBjZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuZQCvFNaNbNfKQCzKQBmZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQCuFNaNbNfKQCyKaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxaZQCvFNaNbNfKQCzKxaZv@Base 15 ++ _D3std5range10primitives__T5doPutTSQBh6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTxwZQCvFNaNfKQCxKxwZv@Base 15 ++ _D3std5range10primitives__T5emptyTAAxaZQmFNaNbNdNiNfMKQuZb@Base 15 ++ _D3std5range10primitives__T5emptyTAAyaZQmFNaNbNdNiNfMKQuZb@Base 15 ++ _D3std5range10primitives__T5emptyTACQBi3zip13ArchiveMemberZQBgFNaNbNdNiNfMKQBpZb@Base 15 ++ _D3std5range10primitives__T5emptyTASQBi5regex8internal2ir10NamedGroupZQBrFNaNbNdNiNfMKQCaZb@Base 15 ++ _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCgFNaNbNdNiNfMKQCpZb@Base 15 ++ _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone10TransitionZQCgFNaNbNdNiNfMKQCpZb@Base 15 ++ _D3std5range10primitives__T5emptyTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCkFNaNbNdNiNfMKQCtZb@Base 15 ++ _D3std5range10primitives__T5emptyTASQBi8typecons__T5TupleTkTkTkZQnZQBoFNaNbNdNiNfMKQBxZb@Base 15 ++ _D3std5range10primitives__T5emptyTAaZQkFNaNbNdNiNfMKQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAaZQkFNaNbNdNiNfMQrZb@Base 15 ++ _D3std5range10primitives__T5emptyTAbZQkFNaNbNdNiNfMKQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAhZQkFNaNbNdNiNfMKQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAkZQkFNaNbNdNiNfMKQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAkZQkFNaNbNdNiNfMQrZb@Base 15 ++ _D3std5range10primitives__T5emptyTAuZQkFNaNbNdNiNfMKQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAuZQkFNaNbNdNiNfMQrZb@Base 15 ++ _D3std5range10primitives__T5emptyTAwZQkFNaNbNdNiNfMKQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAwZQkFNaNbNdNiNfMQrZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxAaZQmFNaNbNdNiNfMKQuZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxAyaZQnFNaNbNdNiNfMKQvZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxCQBj3zip13ArchiveMemberZQBhFNaNbNdNiNfMKQBqZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxSQBj5regex8internal2ir8BytecodeZQBpFNaNbNdNiNfMKQByZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxSQBj6socket11AddressInfoZQBiFNaNbNdNiNfMKQBrZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxSQBj8typecons__T5TupleTAyaVQea3_6b6579TSQCw4json9JSONValueVQBka5_76616c7565ZQCiZQDlFNaNbNdNiNfMQDtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxaZQlFNaNbNdNiNfMKQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxaZQlFNaNbNdNiNfMQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxhZQlFNaNbNdNiNfMKQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxuZQlFNaNbNdNiNfMKQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAxwZQlFNaNbNdNiNfMKQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAyAaZQmFNaNbNdNiNfMKQuZb@Base 15 ++ _D3std5range10primitives__T5emptyTAyAaZQmFNaNbNdNiNfMQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAySQBj8internal14unicode_tables15UnicodePropertyZQCeFNaNbNdNiNfMKQCnZb@Base 15 ++ _D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMKQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAyaZQlFNaNbNdNiNfMQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAyhZQlFNaNbNdNiNfMKQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAyhZQlFNaNbNdNiNfMQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAyuZQlFNaNbNdNiNfMKQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAyuZQlFNaNbNdNiNfMQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTAywZQlFNaNbNdNiNfMKQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTAywZQlFNaNbNdNiNfMQsZb@Base 15 ++ _D3std5range10primitives__T5emptyTxASQBj4json9JSONValueZQBdFNaNbNdNiNfMKxQBmZb@Base 15 ++ _D3std5range10primitives__T5emptyTxAaZQlFNaNbNdNiNfMKxQtZb@Base 15 ++ _D3std5range10primitives__T5emptyTxAyaZQmFNaNbNdNiNfMKxQuZb@Base 15 ++ _D3std5range10primitives__T5emptyTyASQBj8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNdNiNfMKyQCqZb@Base 15 ++ _D3std5range10primitives__T5emptyTyASQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNdNiNfMKyQCqZb@Base 15 ++ _D3std5range10primitives__T5frontTAaZQkFNaNbNcNdNiNfNkMANgAaZNgQf@Base 15 ++ _D3std5range10primitives__T5frontTAyaZQlFNaNbNcNdNiNfNkMANgAyaZNgQg@Base 15 ++ _D3std5range10primitives__T5frontTCQBh3zip13ArchiveMemberZQBfFNaNbNcNdNiNfNkMANgCQDbQBuQBtZNgQn@Base 15 ++ _D3std5range10primitives__T5frontTSQBh5regex8internal2ir10NamedGroupZQBqFNaNbNcNdNiNfNkMANgSQDmQCfQCcQBwQBwZNgQt@Base 15 ++ _D3std5range10primitives__T5frontTSQBh6socket11AddressInfoZQBgFNaNbNcNdNiNfNkMANgSQDcQBvQBrZNgQn@Base 15 ++ _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNcNdNiNfNkMANgSQEbQCuQCoQCiQBwZNgQt@Base 15 ++ _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNcNdNiNfNkMANgSQEbQCuQCoQCiQBwZNgQt@Base 15 ++ _D3std5range10primitives__T5frontTSQBh8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNcNdNiNfNkMANgSQEfQCyQCsQCmQCaZNgQt@Base 15 ++ _D3std5range10primitives__T5frontTSQBh8internal14unicode_tables15UnicodePropertyZQCcFNaNbNcNdNiNfNkMANgSQDyQCrQClQByZNgQq@Base 15 ++ _D3std5range10primitives__T5frontTaZQjFNaNdNfMAxaZw@Base 15 ++ _D3std5range10primitives__T5frontThZQjFNaNbNcNdNiNfNkMANghZNgh@Base 15 ++ _D3std5range10primitives__T5frontTkZQjFNaNbNcNdNiNfNkMANgkZNgk@Base 15 ++ _D3std5range10primitives__T5frontTuZQjFNaNdNfMAxuZw@Base 15 ++ _D3std5range10primitives__T5frontTwZQjFNaNbNcNdNiNfNkMANgwZNgw@Base 15 ++ _D3std5range10primitives__T6moveAtTASQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNiNfQClmZQCp@Base 15 ++ _D3std5range10primitives__T6moveAtTAywZQmFNaNbNiNfQpmZyw@Base 15 ++ _D3std5range10primitives__T6moveAtTSQBi3uni__T13InversionListTSQCjQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCxFNaNbNiNfQDbmZSQEoQDg17CodepointInterval@Base 15 ++ _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCgFNaNbNiNfQCkmZa@Base 15 ++ _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQChFNaNbNiNfQClmZxa@Base 15 ++ _D3std5range10primitives__T6moveAtTSQBi3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQChFNaNbNiNfQClmZya@Base 15 ++ _D3std5range10primitives__T6moveAtTSQBi4conv__T7toCharsVhi10TaVEQCk5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDhFNaNbNiNfQDlmZa@Base 15 ++ _D3std5range10primitives__T6moveAtTSQBiQBh__T10OnlyResultTaZQpZQBkFNaNbNiNfQBomZa@Base 15 ++ _D3std5range10primitives__T6moveAtTSQBiQBh__T6RepeatTaZQkZQBfFNaNbNiNfQBjmZa@Base 15 ++ _D3std5range10primitives__T7popBackTAyaZQnFNaNbNiNfMKANgAyaZv@Base 15 ++ _D3std5range10primitives__T7popBackTCQBj3zip13ArchiveMemberZQBhFNaNbNiNfMKANgCQCyQBpQBoZv@Base 15 ++ _D3std5range10primitives__T7popBackTSQBj4file15DirIteratorImpl9DirHandleZQBuFNaNbNiNfMKANgSQDlQCcQCaQBmZv@Base 15 ++ _D3std5range10primitives__T7popBackTSQBj4file8DirEntryZQBcFNaNbNiNfMKANgSQCtQBkQBiZv@Base 15 ++ _D3std5range10primitives__T7popBackTSQBj5regex8internal2ir10NamedGroupZQBsFNaNbNiNfMKANgSQDjQCaQBxQBrQBrZv@Base 15 ++ _D3std5range10primitives__T7popBackTSQBj6logger11multilogger16MultiLoggerEntryZQCaFNaNbNiNfMKANgSQDrQCiQCeQBuZv@Base 15 ++ _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNiNfMKANgSQDyQCpQCjQCdQBrZv@Base 15 ++ _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone10TransitionZQChFNaNbNiNfMKANgSQDyQCpQCjQCdQBrZv@Base 15 ++ _D3std5range10primitives__T7popBackTSQBj8datetime8timezone13PosixTimeZone14TempTransitionZQClFNaNbNiNfMKANgSQEcQCtQCnQChQBvZv@Base 15 ++ _D3std5range10primitives__T7popBackTSQBj8internal14unicode_tables15UnicodePropertyZQCeFNaNbNiNfMKANgSQDvQCmQCgQBtZv@Base 15 ++ _D3std5range10primitives__T7popBackTaZQlFNaNfMKANgaZv@Base 15 ++ _D3std5range10primitives__T7popBackTkZQlFNaNbNiNfMKANgkZv@Base 15 ++ _D3std5range10primitives__T7putCharTDFNaNbNfAxaZvTxwZQBaFNaNfKQBaxwZv@Base 15 ++ _D3std5range10primitives__T8moveBackTASQBl8datetime8timezone13PosixTimeZone10TransitionZQCjFNaNbNiNfQClZQCo@Base 15 ++ _D3std5range10primitives__T8moveBackTAywZQoFNaNbNiNfQpZyw@Base 15 ++ _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCiFNaNbNiNfQCkZa@Base 15 ++ _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfQClZxa@Base 15 ++ _D3std5range10primitives__T8moveBackTSQBk3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCjFNaNbNiNfQClZya@Base 15 ++ _D3std5range10primitives__T8moveBackTSQBk4conv__T7toCharsVhi10TaVEQCm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDjFNaNbNiNfQDlZa@Base 15 ++ _D3std5range10primitives__T8moveBackTSQBkQBj__T10OnlyResultTaZQpZQBmFNaNbNiNfQBoZa@Base 15 ++ _D3std5range10primitives__T8popBackNTAywZQoFNaNbNiNfKQqmZm@Base 15 ++ _D3std5range10primitives__T8popFrontTAaZQnFNaNbNiNfMKANgAaZv@Base 15 ++ _D3std5range10primitives__T8popFrontTAyaZQoFNaNbNiNfMKANgAyaZv@Base 15 ++ _D3std5range10primitives__T8popFrontTCQBk3zip13ArchiveMemberZQBiFNaNbNiNfMKANgCQCzQBpQBoZv@Base 15 ++ _D3std5range10primitives__T8popFrontTSQBk5regex8internal2ir10NamedGroupZQBtFNaNbNiNfMKANgSQDkQCaQBxQBrQBrZv@Base 15 ++ _D3std5range10primitives__T8popFrontTSQBk6socket11AddressInfoZQBjFNaNbNiNfMKANgSQDaQBqQBmZv@Base 15 ++ _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone10LeapSecondZQCiFNaNbNiNfMKANgSQDzQCpQCjQCdQBrZv@Base 15 ++ _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone10TransitionZQCiFNaNbNiNfMKANgSQDzQCpQCjQCdQBrZv@Base 15 ++ _D3std5range10primitives__T8popFrontTSQBk8datetime8timezone13PosixTimeZone14TempTransitionZQCmFNaNbNiNfMKANgSQEdQCtQCnQChQBvZv@Base 15 ++ _D3std5range10primitives__T8popFrontTSQBk8internal14unicode_tables15UnicodePropertyZQCfFNaNbNiNfMKANgSQDwQCmQCgQBtZv@Base 15 ++ _D3std5range10primitives__T8popFrontTaZQmFNaNbNeMKANgaZ12charWidthTabyAh@Base 15 ++ _D3std5range10primitives__T8popFrontTaZQmFNaNbNiNeMKANgaZv@Base 15 ++ _D3std5range10primitives__T8popFrontThZQmFNaNbNiNfMKANghZv@Base 15 ++ _D3std5range10primitives__T8popFrontTkZQmFNaNbNiNfMKANgkZv@Base 15 ++ _D3std5range10primitives__T8popFrontTuZQmFNaNbNiNeMKANguZv@Base 15 ++ _D3std5range10primitives__T8popFrontTwZQmFNaNbNiNfMKANgwZv@Base 15 ++ _D3std5range10primitives__T9moveFrontTASQBm8datetime8timezone13PosixTimeZone10TransitionZQCkFNaNbNiNfQClZQCo@Base 15 ++ _D3std5range10primitives__T9moveFrontTAywZQpFNaNbNiNfQpZyw@Base 15 ++ _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCjFNaNbNiNfQCkZa@Base 15 ++ _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCkFNaNbNiNfQClZxa@Base 15 ++ _D3std5range10primitives__T9moveFrontTSQBl3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCkFNaNbNiNfQClZya@Base 15 ++ _D3std5range10primitives__T9moveFrontTSQBl4conv__T7toCharsVhi10TaVEQCn5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDkFNaNbNiNfQDlZa@Base 15 ++ _D3std5range10primitives__T9moveFrontTSQBl9algorithm9iteration__T12FilterResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQFhQFg__T4iotaTmTxmZQlFmxmZ6ResultZQEfZQFvFNaNbNiQFuZm@Base 15 ++ _D3std5range10primitives__T9moveFrontTSQBl9algorithm9iteration__T6joinerTSQCuQBjQBc__T9MapResultSQDr8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFyQEnQEg__T12FilterResultSQGzQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQIpQIo__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyZQJqFNaNbNiQJpZm@Base 15 ++ _D3std5range10primitives__T9moveFrontTSQBlQBk__T10OnlyResultTaZQpZQBnFNaNbNiNfQBoZa@Base 15 ++ _D3std5range10primitives__T9moveFrontTSQBlQBk__T6RepeatTaZQkZQBiFNaNbNiNfQBjZa@Base 15 ++ _D3std5range10primitives__T9popFrontNTAhZQoFNaNbNiNfKQpmZm@Base 15 ++ _D3std5range10primitives__T9popFrontNTAxSQBn5regex8internal2ir8BytecodeZQBtFNaNbNiNfKQBvmZm@Base 15 ++ _D3std5range10primitives__T9popFrontNTAywZQpFNaNbNiNfKQqmZm@Base 15 ++ _D3std5range11__moduleRefZ@Base 15 ++ _D3std5range12__ModuleInfoZ@Base 15 ++ _D3std5range8NullSink6__initZ@Base 15 ++ _D3std5range8nullSinkFNaNbNcNiNfZSQBgQBf8NullSink@Base 15 ++ _D3std5range8nullSinkFNcZ4sinkSQBdQBc8NullSink@Base 15 ++ _D3std5range__T10OnlyResultTaZQp10fetchFrontMFNaNbNiNeZa@Base 15 ++ _D3std5range__T10OnlyResultTaZQp11assignFrontMFNaNbNiNeaZv@Base 15 ++ _D3std5range__T10OnlyResultTaZQp13opIndexAssignMFNaNbNiNfamZv@Base 15 ++ _D3std5range__T10OnlyResultTaZQp4backMFNaNbNdNiNfZa@Base 15 ++ _D3std5range__T10OnlyResultTaZQp4backMFNaNbNdNiNfaZv@Base 15 ++ _D3std5range__T10OnlyResultTaZQp4saveMFNaNbNdNiNfZSQBxQBw__TQBtTaZQBz@Base 15 ++ _D3std5range__T10OnlyResultTaZQp5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T10OnlyResultTaZQp5frontMFNaNbNdNiNfZa@Base 15 ++ _D3std5range__T10OnlyResultTaZQp5frontMFNaNbNdNiNfaZv@Base 15 ++ _D3std5range__T10OnlyResultTaZQp6__initZ@Base 15 ++ _D3std5range__T10OnlyResultTaZQp6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T10OnlyResultTaZQp7opIndexMFNaNbNiNfmZa@Base 15 ++ _D3std5range__T10OnlyResultTaZQp7opSliceMFNaNbNiNfZSQByQBx__TQBuTaZQCa@Base 15 ++ _D3std5range__T10OnlyResultTaZQp7opSliceMFNaNbNiNfmmZSQCaQBz__TQBwTaZQCc@Base 15 ++ _D3std5range__T10OnlyResultTaZQp7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T10OnlyResultTaZQp8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T10OnlyResultTaZQp__T6__ctorZQiMFNaNbNcNiNfNkMKaZSQCkQCj__TQCgTaZQCm@Base 15 ++ _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFNaNfQHvQCzZSQJdQJc__TQIzTQIqTQDvZQJlFQJcQEgZ6Result@Base 15 ++ _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result11__xopEqualsMxFKxSQJyQJx__TQJuTQJlTQEqZQKgFQJxQFbZQCgZb@Base 15 ++ _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result4saveMFNaNdNfZSQJuQJt__TQJqTQJhTQEmZQKcFQJtQExZQCc@Base 15 ++ _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result5emptyMFNaNdNfZb@Base 15 ++ _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result5frontMFNaNdNfZk@Base 15 ++ _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result6__initZ@Base 15 ++ _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result8popFrontMFNaNfZv@Base 15 ++ _D3std5range__T10roundRobinTSQBb9algorithm9iteration__T9MapResultSQCm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEq3uni21DecompressedIntervalsZQDuTSQGaQEzQEs__TQElSQGqQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQIaFQHrQCvZ6Result9__xtoHashFNbNeKxSQJxQJw__TQJtTQJkTQEpZQKfFQJwQFaZQCfZm@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn11__xopEqualsMxFKxSQDwQDv__TQDsTQDiVQDla5_61203c2062VQDii0ZQExZb@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn4backMFNaNbNcNdNiNfZQCv@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn4saveMFNaNbNdNiNfZSQDwQDv__TQDsTQDiVQDla5_61203c2062VQDii0ZQEx@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn5frontMFNaNbNcNdNiNfZQCw@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__ctorMFNaNbNcNiNfQCvZSQEbQEa__TQDxTQDnVQDqa5_61203c2062VQDni0ZQFc@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7opIndexMFNaNbNcNiNfmZQCx@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7opSliceMFNaNbNiNjNlNfmmZSQEdQEc__TQDzTQDpVQDsa5_61203c2062VQDpi0ZQFe@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn7releaseMFNaNbNiNjNlNfZQCz@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn9__xtoHashFNbNeKxSQDvQDu__TQDrTQDhVQDka5_61203c2062VQDhi0ZQEwZm@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp11__xopEqualsMxFKxSQFyQFx__TQFuTQFkSQGpQFmQEqQEhMFNaNfZQEeVQDoi0ZQHfZb@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp4backMFNaNbNcNdNiNfZQEx@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp4saveMFNaNbNdNiNfZSQFyQFx__TQFuTQFkSQGpQFmQEqQEhMFNaNfZQEeVQDoi0ZQHf@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp5frontMFNaNbNcNdNiNfZQEy@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__ctorMFNaNbNcNiNfQExZSQGdQGc__TQFzTQFpSQGuQFrQEvQEmMFNaNfZQEjVQDti0ZQHk@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7opIndexMFNaNbNcNiNfmZQEz@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7opSliceMFNaNbNiNjNlNfmmZSQGfQGe__TQGbTQFrSQGwQFtQExQEoMFNaNfZQElVQDvi0ZQHm@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp7releaseMFNaNbNiNjNlNfZQFb@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTACQBd3zip13ArchiveMemberSQCaQx10ZipArchive5buildMFNaNfZ17__lambda_L624_C57VEQDzQDy18SortedRangeOptionsi0ZQEp9__xtoHashFNbNeKxSQFxQFw__TQFtTQFjSQGoQFlQEpQEgMFNaNfZQEdVQDni0ZQHeZm@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo11__xopEqualsMxFKxSQFxQFw__TQFtTQFjVQEda15_612e6e616d65203c20622e6e616d65VQEdi0ZQHtZb@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo4backMFNaNbNcNdNiNfZQEw@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo4saveMFNaNbNdNiNfZSQFxQFw__TQFtTQFjVQEda15_612e6e616d65203c20622e6e616d65VQEdi0ZQHt@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo5frontMFNaNbNcNdNiNfZQEx@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__ctorMFNaNbNcNiNfQEwZSQGcQGb__TQFyTQFoVQEia15_612e6e616d65203c20622e6e616d65VQEii0ZQHy@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7opIndexMFNaNbNcNiNfmZQEy@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7opSliceMFNaNbNiNjNlNfmmZSQGeQGd__TQGaTQFqVQEka15_612e6e616d65203c20622e6e616d65VQEki0ZQIa@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo7releaseMFNaNbNiNjNlNfZQFa@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo9__xtoHashFNbNeKxSQFwQFv__TQFsTQFiVQEca15_612e6e616d65203c20622e6e616d65VQEci0ZQHsZm@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T10lowerBoundVEQFvQFu12SearchPolicyi3TQFqZQBpMFNaNbNiNfQGhZSQHoQHn__TQHkTQHaVQFua15_612e6e616d65203c20622e6e616d65VQFui0ZQJk@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T18getTransitionIndexVEQGdQGc12SearchPolicyi3SQHaQGz__TQGwTQGmVQFga15_612e6e616d65203c20622e6e616d65VQFgi0ZQIw3geqTQIpZQEoMFNaNbNiNfQJgZm@Base 15 ++ _D3std5range__T11SortedRangeTASQBd5regex8internal2ir10NamedGroupVAyaa15_612e6e616d65203c20622e6e616d65VEQDyQDx18SortedRangeOptionsi0ZQEo__T3geqTQEkTQEoZQnMFNaNbNiNfQFeQFhZb@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh11__xopEqualsMxFKxSQGqQGp__TQGmTQGcVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIqZb@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh4backMFNaNbNcNdNiNfZQFp@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh4saveMFNaNbNdNiNfZSQGqQGp__TQGmTQGcVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIq@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh5frontMFNaNbNcNdNiNfZQFq@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__ctorMFNaNbNcNiNfQFpZSQGvQGu__TQGrTQGhVQEma17_612e74696d6554203c20622e74696d6554VQEmi0ZQIv@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7opIndexMFNaNbNcNiNfmZQFr@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7opSliceMFNaNbNiNjNlNfmmZSQGxQGw__TQGtTQGjVQEoa17_612e74696d6554203c20622e74696d6554VQEoi0ZQIx@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh7releaseMFNaNbNiNjNlNfZQFt@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone10LeapSecondVAyaa17_612e74696d6554203c20622e74696d6554VEQErQEq18SortedRangeOptionsi0ZQFh9__xtoHashFNbNeKxSQGpQGo__TQGlTQGbVQEga17_612e74696d6554203c20622e74696d6554VQEgi0ZQIpZm@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl11__xopEqualsMxFKxSQGuQGt__TQGqTQGgVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIuZb@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl4backMFNaNbNcNdNiNfZQFt@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl4saveMFNaNbNdNiNfZSQGuQGt__TQGqTQGgVQEha17_612e74696d6554203c20622e74696d6554VQEhi0ZQIu@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl5frontMFNaNbNcNdNiNfZQFu@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__ctorMFNaNbNcNiNfQFtZSQGzQGy__TQGvTQGlVQEma17_612e74696d6554203c20622e74696d6554VQEmi0ZQIz@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7opIndexMFNaNbNcNiNfmZQFv@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7opSliceMFNaNbNiNjNlNfmmZSQHbQHa__TQGxTQGnVQEoa17_612e74696d6554203c20622e74696d6554VQEoi0ZQJb@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl7releaseMFNaNbNiNjNlNfZQFx@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTASQBd8datetime8timezone13PosixTimeZone14TempTransitionVAyaa17_612e74696d6554203c20622e74696d6554VEQEvQEu18SortedRangeOptionsi0ZQFl9__xtoHashFNbNeKxSQGtQGs__TQGpTQGfVQEga17_612e74696d6554203c20622e74696d6554VQEgi0ZQItZm@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm11__xopEqualsMxFKxSQDvQDu__TQDrTQDhVQDia5_61203c2062VQDii0ZQEwZb@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm4backMFNaNbNcNdNiNfZk@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm4saveMFNaNbNdNiNfZSQDvQDu__TQDrTQDhVQDia5_61203c2062VQDii0ZQEw@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm5frontMFNaNbNcNdNiNfZk@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__ctorMFNaNbNcNiNfQCuZSQEaQDz__TQDwTQDmVQDna5_61203c2062VQDni0ZQFb@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7opIndexMFNaNbNcNiNfmZk@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7opSliceMFNaNbNiNjNlNfmmZSQEcQEb__TQDyTQDoVQDpa5_61203c2062VQDpi0ZQFd@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm7releaseMFNaNbNiNjNlNfZQCy@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm9__xtoHashFNbNeKxSQDuQDt__TQDqTQDgVQDha5_61203c2062VQDhi0ZQEvZm@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T10lowerBoundVEQDtQDs12SearchPolicyi2TiZQBnMFNaNbNiNfiZSQFiQFh__TQFeTQEuVQEva5_61203c2062VQEvi0ZQGj@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T18getTransitionIndexVEQEbQEa12SearchPolicyi2SQEyQEx__TQEuTQEkVQEla5_61203c2062VQEli0ZQFz3geqTiZQDrMFNaNbNiNfiZm@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T18getTransitionIndexVEQEbQEa12SearchPolicyi3SQEyQEx__TQEuTQEkVQEla5_61203c2062VQEli0ZQFz3geqTiZQDrMFNaNbNiNfiZm@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm__T3geqTkTiZQjMFNaNbNiNfkiZb@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo11__xopEqualsMxFKxSQDxQDw__TQDtTQDjVQDka6_61203c3d2062VQDki0ZQFaZb@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo4backMFNaNbNcNdNiNfZk@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo4saveMFNaNbNdNiNfZSQDxQDw__TQDtTQDjVQDka6_61203c3d2062VQDki0ZQFa@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo5frontMFNaNbNcNdNiNfZk@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__ctorMFNaNbNcNiNfQCwZSQEcQEb__TQDyTQDoVQDpa6_61203c3d2062VQDpi0ZQFf@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7opIndexMFNaNbNcNiNfmZk@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7opSliceMFNaNbNiNjNlNfmmZSQEeQEd__TQEaTQDqVQDra6_61203c3d2062VQDri0ZQFh@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo7releaseMFNaNbNiNjNlNfZQDa@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo9__xtoHashFNbNeKxSQDwQDv__TQDsTQDiVQDja6_61203c3d2062VQDji0ZQEzZm@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T10lowerBoundVEQDvQDu12SearchPolicyi3TkZQBnMFNaNbNiNfkZSQFkQFj__TQFgTQEwVQExa6_61203c3d2062VQExi0ZQGn@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T18getTransitionIndexVEQEdQEc12SearchPolicyi3SQFaQEz__TQEwTQEmVQEna6_61203c3d2062VQEni0ZQGd3geqTkZQDtMFNaNbNiNfkZm@Base 15 ++ _D3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo__T3geqTkTkZQjMFNaNbNiNfkkZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk11__xopEqualsMxFKxSQHtQHs__TQHpTQHfSQIkQHi__TQHhTQGvZQHpQEuMFNfZQEoVQDxi0ZQJjZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk4backMFNaNbNdNiNfZSQHtQGr17CodepointInterval@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk4saveMFNaNbNdNiNfZSQHtQHs__TQHpTQHfSQIkQHi__TQHhTQGvZQHpQEuMFNfZQEoVQDxi0ZQJj@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk5frontMFNaNbNdNiNfZSQHuQGs17CodepointInterval@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__ctorMFNaNbNcNiNfQGsZSQHyQHx__TQHuTQHkSQIpQHn__TQHmTQHaZQHuQEzMFNfZQEtVQEci0ZQJo@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7opIndexMFNaNbNiNfmZSQHvQGt17CodepointInterval@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7opSliceMFNaNbNiNjNlNfmmZSQIaQHz__TQHwTQHmSQIrQHp__TQHoTQHcZQHwQFbMFNfZQEvVQEei0ZQJq@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk7releaseMFNaNbNiNjNlNfZQGw@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc3uni__T13InversionListTSQCdQBb8GcPolicyZQBh__T9IntervalsTAkZQoSQDqQCo__TQCnTQCbZQCv8sanitizeMFNfZ18__lambda_L2889_C15VEQFuQFt18SortedRangeOptionsi0ZQGk9__xtoHashFNbNeKxSQHsQHr__TQHoTQHeSQIjQHh__TQHgTQGuZQHoQEtMFNfZQEnVQDwi0ZQJiZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd11__xopEqualsMxFKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFqQFpTaZQHiFMxQFhZQFiVQEpi0ZQOuZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd4backMFNaNbNdNiNfZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd4saveMFNaNbNdNiNfZSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFqQFpTaZQHiFMxQFhZQFiVQEpi0ZQOu@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd5frontMFNaNbNdNiNfZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__ctorMFNaNbNcNiNfQLlZSQMrQMq__TQMnTQMdSQNiQGn__TQGmS_DQNxQJaQIuQFzQFvQFuTaZQHnFMxQFmZQFnVQEui0ZQOz@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7opIndexMFNaNbNiNfmZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7opSliceMFNaNbNiNjNlNfmmZSQMtQMs__TQMpTQMfSQNkQGp__TQGoS_DQNzQJcQIwQGbQFxQFwTaZQHpFMxQFoZQFpVQEwi0ZQPb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd7releaseMFNaNbNiNjNlNfZQLp@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd9__xtoHashFNbNeKxSQMlQMk__TQMhTQLxSQNcQGh__TQGgS_DQNrQIuQIoQFtQFpQFoTaZQHhFMxQFgZQFhVQEoi0ZQOtZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T10lowerBoundVEQMkQMj12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNyQNx__TQNuTQNkSQOpQHu__TQHtS_DQPeQKhQKbQHgQHcQHbTaZQIuFMxQGtZQGuVQGbi0ZQQg@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T18getTransitionIndexVEQMsQMr12SearchPolicyi3SQNpQNo__TQNlTQNbSQOgQHl__TQHkS_DQOvQJyQJsQGxQGtQGsTaZQIlFMxQGkZQGlVQFsi0ZQPx3geqTAxaZQFaMFNaNfQnZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv6blocks3tabFNaNdNfZQEgTaZQCbFMxAaZ20__lambda_L5960_C32_2VEQKnQKm18SortedRangeOptionsi0ZQLd__T3geqTQImTAxaZQnMFNaNfQJcQpZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe11__xopEqualsMxFKxSQMnQMm__TQMjTQLzSQNeQGj__TQGiS_DQNtQIwQIqQFvQFqQFpTaZQHjFMxQFhZQFiVQEpi0ZQOvZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe4backMFNaNbNdNiNfZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe4saveMFNaNbNdNiNfZSQMnQMm__TQMjTQLzSQNeQGj__TQGiS_DQNtQIwQIqQFvQFqQFpTaZQHjFMxQFhZQFiVQEpi0ZQOv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe5frontMFNaNbNdNiNfZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__ctorMFNaNbNcNiNfQLmZSQMsQMr__TQMoTQMeSQNjQGo__TQGnS_DQNyQJbQIvQGaQFvQFuTaZQHoFMxQFmZQFnVQEui0ZQPa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7opIndexMFNaNbNiNfmZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7opSliceMFNaNbNiNjNlNfmmZSQMuQMt__TQMqTQMgSQNlQGq__TQGpS_DQOaQJdQIxQGcQFxQFwTaZQHqFMxQFoZQFpVQEwi0ZQPc@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe7releaseMFNaNbNiNjNlNfZQLq@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe9__xtoHashFNbNeKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFpQFoTaZQHiFMxQFgZQFhVQEoi0ZQOuZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T10lowerBoundVEQMlQMk12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNzQNy__TQNvTQNlSQOqQHv__TQHuS_DQPfQKiQKcQHhQHcQHbTaZQIvFMxQGtZQGuVQGbi0ZQQh@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T18getTransitionIndexVEQMtQMs12SearchPolicyi3SQNqQNp__TQNmTQNcSQOhQHm__TQHlS_DQOwQJzQJtQGyQGtQGsTaZQImFMxQGkZQGlVQFsi0ZQPy3geqTAxaZQFaMFNaNfQnZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv7scripts3tabFNaNdNfZQEhTaZQCcFMxAaZ20__lambda_L5960_C32_1VEQKoQKn18SortedRangeOptionsi0ZQLe__T3geqTQInTAxaZQnMFNaNfQJdQpZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd11__xopEqualsMxFKxSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFoQFnTaZQHiFMxQFfZQFgVQEpi0ZQOuZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd4backMFNaNbNdNiNfZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd4saveMFNaNbNdNiNfZSQMmQMl__TQMiTQLySQNdQGi__TQGhS_DQNsQIvQIpQFuQFoQFnTaZQHiFMxQFfZQFgVQEpi0ZQOu@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd5frontMFNaNbNdNiNfZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__ctorMFNaNbNcNiNfQLlZSQMrQMq__TQMnTQMdSQNiQGn__TQGmS_DQNxQJaQIuQFzQFtQFsTaZQHnFMxQFkZQFlVQEui0ZQOz@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7opIndexMFNaNbNiNfmZyAa@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7opSliceMFNaNbNiNjNlNfmmZSQMtQMs__TQMpTQMfSQNkQGp__TQGoS_DQNzQJcQIwQGbQFvQFuTaZQHpFMxQFmZQFnVQEwi0ZQPb@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd7releaseMFNaNbNiNjNlNfZQLp@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd9__xtoHashFNbNeKxSQMlQMk__TQMhTQLxSQNcQGh__TQGgS_DQNrQIuQIoQFtQFnQFmTaZQHhFMxQFeZQFfVQEoi0ZQOtZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T10lowerBoundVEQMkQMj12SearchPolicyi3TAxaZQBpMFNaNfQnZSQNyQNx__TQNuTQNkSQOpQHu__TQHtS_DQPeQKhQKbQHgQHaQGzTaZQIuFMxQGrZQGsVQGbi0ZQQg@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T18getTransitionIndexVEQMsQMr12SearchPolicyi3SQNpQNo__TQNlTQNbSQOgQHl__TQHkS_DQOvQJyQJsQGxQGrQGqTaZQIlFMxQGiZQGjVQFsi0ZQPx3geqTAxaZQFaMFNaNfQnZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBc9algorithm9iteration__T9MapResultSQCn10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEx8internal14unicode_tables15UnicodePropertyZQEpSQGv3uni__T14findUnicodeSetS_DQHyQDbQCv8uniProps3tabFNaNdNfZQEiTaZQCdFMxAaZ18__lambda_L5960_C32VEQKnQKm18SortedRangeOptionsi0ZQLd__T3geqTQImTAxaZQnMFNaNfQJcQpZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu11__xopEqualsMxFKxSQFdQFc__TQEzTQEpVQDia5_61203c2062VQDii0ZQGeZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu4backMFNaNbNcNdNiNfZyw@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu4saveMFNaNbNdNiNfZSQFdQFc__TQEzTQEpVQDia5_61203c2062VQDii0ZQGe@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu5frontMFNaNbNcNdNiNfZyw@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__ctorMFNaNbNcNiNfQEcZSQFiQFh__TQFeTQEuVQDna5_61203c2062VQDni0ZQGj@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu6__initZ@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7opIndexMFNaNbNcNiNfmZyw@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7opSliceMFNaNbNiNjNlNfmmZSQFkQFj__TQFgTQEwVQDpa5_61203c2062VQDpi0ZQGl@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu7releaseMFNaNbNiNjNlNfZQEg@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu9__mixin246lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu9__xtoHashFNbNeKxSQFcQFb__TQEyTQEoVQDha5_61203c2062VQDhi0ZQGdZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T10lowerBoundVEQFbQFa12SearchPolicyi3TwZQBnMFNaNbNiNfwZSQGqQGp__TQGmTQGcVQEva5_61203c2062VQEvi0ZQHr@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T18getTransitionIndexVEQFjQFi12SearchPolicyi3SQGgQGf__TQGcTQFsVQEla5_61203c2062VQEli0ZQHh3geqTwZQDrMFNaNbNiNfwZm@Base 15 ++ _D3std5range__T11SortedRangeTSQBcQBb__T6strideTAywZQmFQhmZ6ResultVAyaa5_61203c2062VEQDeQDd18SortedRangeOptionsi0ZQDu__T3geqTywTwZQkMFNaNbNiNfywwZb@Base 15 ++ _D3std5range__T11takeExactlyTSQBcQBb__T6RepeatTaZQkZQBlFNaNbNiNfQBjmZSQCqQCp__T4TakeTQCeZQk@Base 15 ++ _D3std5range__T12assumeSortedVAyaa15_612e6e616d65203c20622e6e616d65TASQCq5regex8internal2ir10NamedGroupZQDlFNaNbNiNfQBwZSQEpQEo__T11SortedRangeTQCyVQEoa15_612e6e616d65203c20622e6e616d65VEQHdQHc18SortedRangeOptionsi0ZQDi@Base 15 ++ _D3std5range__T12assumeSortedVAyaa17_612e74696d6554203c20622e74696d6554TASQCu8datetime8timezone13PosixTimeZone10LeapSecondZQEeFNaNbNiNfQClZSQFiQFh__T11SortedRangeTQDnVQFha17_612e74696d6554203c20622e74696d6554VEQIaQHz18SortedRangeOptionsi0ZQDm@Base 15 ++ _D3std5range__T12assumeSortedVAyaa17_612e74696d6554203c20622e74696d6554TASQCu8datetime8timezone13PosixTimeZone14TempTransitionZQEiFNaNbNiNfQCpZSQFmQFl__T11SortedRangeTQDrVQFla17_612e74696d6554203c20622e74696d6554VEQIeQId18SortedRangeOptionsi0ZQDm@Base 15 ++ _D3std5range__T12assumeSortedVAyaa5_61203c2062TAQsZQBkFNaNbNiNfQqZSQCnQCm__T11SortedRangeTQBrVQCma5_61203c2062VEQEgQEf18SortedRangeOptionsi0ZQCn@Base 15 ++ _D3std5range__T12assumeSortedVAyaa5_61203c2062TAkZQBjFNaNbNiNfQpZSQCmQCl__T11SortedRangeTQBqVQCla5_61203c2062VEQEfQEe18SortedRangeOptionsi0ZQCn@Base 15 ++ _D3std5range__T12assumeSortedVAyaa5_61203c2062TSQBuQBt__T6strideTAywZQmFQhmZ6ResultZQCrFNaNbNiNfQBxZSQDvQDu__T11SortedRangeTQCzVQDua5_61203c2062VEQFoQFn18SortedRangeOptionsi0ZQCn@Base 15 ++ _D3std5range__T12assumeSortedVAyaa6_61203c3d2062TAkZQBlFNaNbNiNfQpZSQCoQCn__T11SortedRangeTQBqVQCna6_61203c3d2062VEQEjQEi18SortedRangeOptionsi0ZQCp@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb4backMFNaNbNdNiNfZa@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb4saveMFNaNbNdNiNfZSQCkQCj__TQCgTQCeZQCo@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb5frontMFNaNbNdNiNfZa@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6__initZ@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6moveAtMFNaNbNiNfmZa@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb7opIndexMFNaNbNiNfmZa@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb8moveBackMFNaNbNiNfZa@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb9maxLengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb9moveFrontMFNaNbNiNfZa@Base 15 ++ _D3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb__T7opSliceZQjMFNaNbNiNfmmZSQCtQCs__TQCpTQCnZQCx@Base 15 ++ _D3std5range__T4iotaTmTmZQkFNaNbNiNfmmZSQBmQBl__TQBiTmTmZQBqFmmZ6Result@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result4backMNgFNaNbNdNiNfZNgm@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result4saveMFNaNbNdNiNfZSQCdQCc__TQBzTmTmZQChFmmZQBy@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result5frontMNgFNaNbNdNiNfZNgm@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result6__ctorMFNaNbNcNiNfmmZSQChQCg__TQCdTmTmZQClFmmZQCc@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result6__initZ@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result7opIndexMNgFNaNbNiNfmZNgm@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result7opSliceMNgFNaNbNiNfZNgSQCiQCh__TQCeTmTmZQCmFmmZQCd@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result7opSliceMNgFNaNbNiNfmmZNgSQCkQCj__TQCgTmTmZQCoFmmZQCf@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result8containsMFNaNbNiNfmZb@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T4iotaTmTmZQkFmmZ6Result__T13opBinaryRightVAyaa2_696eZQBbMxFNaNbNiNfmZb@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFNaNbNiNfmxmZSQBoQBn__TQBkTmTxmZQBtFmxmZ6Result@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result4backMNgFNaNbNdNiNfZNgm@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result4saveMFNaNbNdNiNfZSQCfQCe__TQCbTmTxmZQCkFmxmZQCa@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result5frontMNgFNaNbNdNiNfZNgm@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6__ctorMFNaNbNcNiNfmmZSQCjQCi__TQCfTmTxmZQCoFmxmZQCe@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6__initZ@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opIndexMNgFNaNbNiNfmZNgm@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opSliceMNgFNaNbNiNfZNgSQCkQCj__TQCgTmTxmZQCpFmxmZQCf@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7opSliceMNgFNaNbNiNfmmZNgSQCmQCl__TQCiTmTxmZQCrFmxmZQCh@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result8containsMFNaNbNiNfmZb@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T4iotaTmTxmZQlFmxmZ6Result__T13opBinaryRightVAyaa2_696eZQBbMxFNaNbNiNfmZb@Base 15 ++ _D3std5range__T4iotaTmZQiFNaNbNiNfmZSQBjQBi__TQBfTmTmZQBnFmmZ6Result@Base 15 ++ _D3std5range__T4onlyTaZQiFNaNbNiNfMaZSQBkQBj__T10OnlyResultTaZQp@Base 15 ++ _D3std5range__T4takeTAhZQjFNaNbNiNfQomZQs@Base 15 ++ _D3std5range__T4takeTSQuQs__T6RepeatTaZQkZQBbFNaNbNiNfQBhmZSQCgQCf__T4TakeTQCcZQk@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFNaNbNiNfQEoQCuQBvZSQFtQFs__TQFpTQFmTQDtTQCvZQGfFQGcQEiQDjZ6Result@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result11__xopEqualsMxFKxSQGkQGj__TQGgTQGdTQEkTQDmZQGwFQGtQEzQEaZQCnZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result4backMFNaNbNdNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result4saveMFNaNbNdNiNfZSQGkQGj__TQGgTQGdTQEkTQDmZQGwFQGtQEzQEaZQCn@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result5frontMFNaNbNdNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__ctorMFNaNbNcNiNfQFqQDwQCxZSQGvQGu__TQGrTQGoTQEvTQDxZQHhFQHeQFkQElZQCy@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__ctorMFNaNbNcNiNfQFqQDwQCxmmZSQGxQGw__TQGtTQGqTQExTQDzZQHjFQHgQFmQEnZQDa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6__initZ@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNaNbNiNjNlNfmmZSQGrQGq__TQGnTQGkTQErTQDtZQHdFQHaQFgQEhZQCu@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQHpQHo__TQHlTQHiTQFpTQErZQIbFQHyQGeQFfZQDsQDoMFNjNlmmZQDjZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQHoQHn__TQHkTQHhTQFoTQEqZQIaFQHxQGdQFeZQDrQDnMFNjNlmmZQDiZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result8moveBackMFNaNbNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result9__xtoHashFNbNeKxSQGjQGi__TQGfTQGcTQEjTQDlZQGvFQGsQEyQDzZQCmZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplTSQCsQCr__T10OnlyResultTaZQpTSQDuQDa__TQCzTAxaZQDhFQiZQCsZQEjFQEgQCmQBnZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFNaNbNiNfQDqQBvQDwZSQEvQEu__TQErTQEoTQCuTQEwZQFhFQFeQDjQFkZ6Result@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result11__xopEqualsMxFKxSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCnZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4backMFNaNbNdNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4saveMFNaNbNdNiNfZSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCn@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5frontMFNaNbNdNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEyZSQFxQFw__TQFtTQFqTQDwTQFyZQGjFQGgQElQGmZQCy@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEymmZSQFzQFy__TQFvTQFsTQDyTQGaZQGlFQGiQEnQGoZQDa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNaNbNiNjNlNfmmZSQFtQFs__TQFpTQFmTQDsTQFuZQGfFQGcQEhQGiZQCu@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQGrQGq__TQGnTQGkTQEqTQGsZQHdFQHaQFfQHgZQDsQDoMFNjNlmmZQDjZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQGqQGp__TQGmTQGjTQEpTQGrZQHcFQGzQFeQHfZQDrQDnMFNjNlmmZQDiZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8moveBackMFNaNbNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9__xtoHashFNbNeKxSQFlQFk__TQFhTQFeTQDkTQFmZQFxFQFuQDzQGaZQCmZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFNaNbNiNfQDqQBvQDwZSQEvQEu__TQErTQEoTQCuTQEwZQFhFQFeQDjQFkZ6Result@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result11__xopEqualsMxFKxSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCnZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4backMFNaNbNdNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result4saveMFNaNbNdNiNfZSQFmQFl__TQFiTQFfTQDlTQFnZQFyFQFvQEaQGbZQCn@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result5frontMFNaNbNdNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEyZSQFxQFw__TQFtTQFqTQDwTQFyZQGjFQGgQElQGmZQCy@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__ctorMFNaNbNcNiNfQEsQCxQEymmZSQFzQFy__TQFvTQFsTQDyTQGaZQGlFQGiQEnQGoZQDa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6__initZ@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6fixRefFNaNbNiNfxaZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result6moveAtMFNaNbNiNfmZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opIndexMFNaNbNiNfmZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNaNbNiNjNlNfmmZSQFtQFs__TQFpTQFmTQDsTQFuZQGfFQGcQEhQGiZQCu@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges11__xopEqualsMxFKxSQGrQGq__TQGnTQGkTQEqTQGsZQHdFQHaQFfQHgZQDsQDoMFNjNlmmZQDjZb@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7opSliceMFNjNlmmZ12ResultRanges9__xtoHashFNbNeKxSQGqQGp__TQGmTQGjTQEpTQGrZQHcFQGzQFeQHfZQDrQDnMFNjNlmmZQDiZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8moveBackMFNaNbNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9__xtoHashFNbNeKxSQFlQFk__TQFhTQFeTQDkTQFmZQFxFQFuQDzQGaZQCmZm@Base 15 ++ _D3std5range__T5chainTSQv3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQCtQCs__T10OnlyResultTaZQpTQDaZQDlFQDiQBnQDoZ6Result9moveFrontMFNaNbNiNfZxa@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFNaNbNiQNdQEcZSQOfQOe__TQObTQNyTQEyZQOnFQOkQFjZQGo@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb4saveMFNaNbNdNiZSQOsQOr__TQOoTQOlTQFlZQPaFQOxQFwZQHb@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb5emptyMFNaNbNdNiZb@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb5frontMFNaNbNdNiZm@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__ctorMFNaNbNcNiNfQOaQEzmZSQPdQPc__TQOzTQOwTQFwZQPlFQPiQGhZQHm@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__ctorMFNaNbNcNiQNyQExZSQPaQOz__TQOwTQOtTQFtZQPiFQPfQGeZQHj@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6__initZ@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb6fixRefFNaNbNiNfmZm@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb8popFrontMFNaNbNiZv@Base 15 ++ _D3std5range__T5chainTSQv9algorithm9iteration__T6joinerTSQCdQBjQBc__T9MapResultSQDa8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQFhQEnQEg__T12FilterResultSQGiQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHyQHx__T4iotaTmTmZQkFmmZ6ResultZQDmZQGuZQHtFQHpZQyTSQJzQJfQIy__TQEsSQKpQHpQHjQHdMxFNbNdZ18__lambda_L2661_C26TSQMfQMe__TQEhTmTxmZQEqFmxmZQEiZQHqZQNaFQMxQDwZQFb9moveFrontMFNaNbNiZm@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFNaNbNiNfQFaQDoZSQGcQGb__TQFyTQFvTQEkZQGkFQGhQEvZQCi@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt4backMFNaNbNdNiNfZa@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt4saveMFNaNbNdNiNfZSQGoQGn__TQGkTQGhTQEwZQGwFQGtQFhZQCu@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt5frontMFNaNbNdNiNfZa@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__ctorMFNaNbNcNiNfQFuQEiZSQGwQGv__TQGsTQGpTQFeZQHeFQHbQFpZQDc@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__ctorMFNaNbNcNiNfQFuQEimmZSQGyQGx__TQGuTQGrTQFgZQHgFQHdQFrZQDe@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6__initZ@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6fixRefFNaNbNiNfaZa@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt6moveAtMFNaNbNiNfmZa@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opIndexMFNaNbNiNfmZa@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNaNbNiNfmmZSQGrQGq__TQGnTQGkTQEzZQGzFQGwQFkZQCx@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7opSliceMFNjNlmmZ12ResultRanges6__initZ@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt8moveBackMFNaNbNiNfZa@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5chainTSQvQt__T4TakeTSQBjQBi__T6RepeatTaZQkZQBdTSQCk4conv__T7toCharsVhi10TaVEQDm5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQEvFQEsQDgZQt9moveFrontMFNaNbNiNfZa@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNiNfQCkZSQDjQDi__TQDfTQDcZQDnFQDkZ__T6ResultZQi@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi10retroIndexMFNaNbNiNfmZm@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi11__xopEqualsMxFKxSQEgQEf__TQEcTQDzZQEkFQEhZ__TQCfZQCjZb@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi13opIndexAssignMFNaNbNiNfQDrmZv@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4backMFNaNbNcNdNiNfZQDm@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4backMFNaNbNdNiNfQDjZv@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi4saveMFNaNbNdNiNfZSQEgQEf__TQEcTQDzZQEkFQEhZ__TQCfZQCj@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5frontMFNaNbNcNdNiNfZQDn@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi5frontMFNaNbNdNiNfQDkZv@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6__initZ@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi6moveAtMFNaNbNiNfmZQDl@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7opIndexMFNaNbNcNiNfmZQDo@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7opSliceMFNaNbNiNfmmZSQEjQEi__TQEfTQEcZQEnFQEkZ__TQCiZQCm@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi8moveBackMFNaNbNiNfZQDm@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9__mixin176lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9__xtoHashFNbNeKxSQEfQEe__TQEbTQDyZQEjFQEgZ__TQCeZQCiZm@Base 15 ++ _D3std5range__T5retroTASQw8datetime8timezone13PosixTimeZone10TransitionZQCfFQCcZ__T6ResultZQi9moveFrontMFNaNbNiNfZQDn@Base 15 ++ _D3std5range__T6ChunksTAhZQl11DollarToken6__initZ@Base 15 ++ _D3std5range__T6ChunksTAhZQl11DollarToken9momLengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T6ChunksTAhZQl11__xopEqualsMxFKxSQBtQBs__TQBpTQBlZQBxZb@Base 15 ++ _D3std5range__T6ChunksTAhZQl4backMFNaNbNdNiNfZQx@Base 15 ++ _D3std5range__T6ChunksTAhZQl4saveMFNaNbNdNiNfZSQBtQBs__TQBpTQBlZQBx@Base 15 ++ _D3std5range__T6ChunksTAhZQl5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T6ChunksTAhZQl5frontMFNaNbNdNiNfZQy@Base 15 ++ _D3std5range__T6ChunksTAhZQl6__ctorMFNaNbNcNiNfQymZSQByQBx__TQBuTQBqZQCc@Base 15 ++ _D3std5range__T6ChunksTAhZQl6__initZ@Base 15 ++ _D3std5range__T6ChunksTAhZQl6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T6ChunksTAhZQl7opIndexMFNaNbNiNfmZQz@Base 15 ++ _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfSQBtQBs__TQBpTQBlZQBx11DollarTokenQBiZSQDfQDe__TQDbTQCxZQDj@Base 15 ++ _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfSQBtQBs__TQBpTQBlZQBx11DollarTokenmZSQDdQDc__TQCzTQCvZQDh@Base 15 ++ _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfmSQBuQBt__TQBqTQBmZQBy11DollarTokenZSQDdQDc__TQCzTQCvZQDh@Base 15 ++ _D3std5range__T6ChunksTAhZQl7opSliceMFNaNbNiNfmmZSQBwQBv__TQBsTQBoZQCa@Base 15 ++ _D3std5range__T6ChunksTAhZQl7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T6ChunksTAhZQl8opDollarMFNaNbNiNfZSQBvQBu__TQBrTQBnZQBz11DollarToken@Base 15 ++ _D3std5range__T6ChunksTAhZQl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T6ChunksTAhZQl9__xtoHashFNbNeKxSQBsQBr__TQBoTQBkZQBwZm@Base 15 ++ _D3std5range__T6RepeatTaZQk11DollarToken6__initZ@Base 15 ++ _D3std5range__T6RepeatTaZQk4backMNgFNaNbNdNiNfZNga@Base 15 ++ _D3std5range__T6RepeatTaZQk4saveMNgFNaNbNdNiNfZNgSQBwQBv__TQBsTaZQBy@Base 15 ++ _D3std5range__T6RepeatTaZQk5frontMNgFNaNbNdNiNfZNga@Base 15 ++ _D3std5range__T6RepeatTaZQk6__initZ@Base 15 ++ _D3std5range__T6RepeatTaZQk7opIndexMNgFNaNbNiNfmZNga@Base 15 ++ _D3std5range__T6RepeatTaZQk7opSliceMFNaNbNiNfmmZSQBvQBu__T4TakeTSQClQCk__TQChTaZQCnZQBa@Base 15 ++ _D3std5range__T6RepeatTaZQk7opSliceMNgFNaNbNiNfmSQBvQBu__TQBrTaZQBx11DollarTokenZNgSQDeQDd__TQDaTaZQDg@Base 15 ++ _D3std5range__T6RepeatTaZQk7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T6RepeatTaZQk8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T6chunksTAhZQlFNaNbNiNfQomZSQBoQBn__T6ChunksTQBkZQm@Base 15 ++ _D3std5range__T6repeatTaZQkFNaNbNiNfaZSQBlQBk__T6RepeatTaZQk@Base 15 ++ _D3std5range__T6repeatTaZQkFNaNbNiNfamZSQBmQBl__T4TakeTSQCcQCb__T6RepeatTaZQkZQBd@Base 15 ++ _D3std5range__T6strideTAywZQmFNaNbNiNfQpmZSQBpQBo__TQBlTQBhZQBtFQBpmZ6Result@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result11__xopEqualsMxFKxSQCgQCf__TQCcTQByZQCkFQCgmZQCaZb@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result22eliminateSlackElementsMFNaNbNiNfZv@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result4backMFNaNbNcNdNiNfZyw@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result4saveMFNaNbNdNiNfZSQCgQCf__TQCcTQByZQCkFQCgmZQCa@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result5frontMFNaNbNcNdNiNfZyw@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result6lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result6moveAtMFNaNbNiNfmZyw@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result7opIndexMFNaNbNcNiNfmZyw@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result7opSliceMFNaNbNiNfmmZSQCjQCi__TQCfTQCbZQCnFQCjmZQCd@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result7popBackMFNaNbNiNfZv@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result8moveBackMFNaNbNiNfZyw@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result9__xtoHashFNbNeKxSQCfQCe__TQCbTQBxZQCjFQCfmZQBzZm@Base 15 ++ _D3std5range__T6strideTAywZQmFQhmZ6Result9moveFrontMFNaNbNiNfZyw@Base 15 ++ _D3std5range__T7padLeftTSQx4conv__T7toCharsVhi10TaVEQBy5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultTaZQDjFNaNbNiNfQDmamZSQEpQEo__T5chainTSQFgQFf__T4TakeTSQFwQFv__T6RepeatTaZQkZQBdTQGaZQCcFQBzQGlZQDz@Base 15 ++ _D3std5regex11__moduleRefZ@Base 15 ++ _D3std5regex12__ModuleInfoZ@Base 15 ++ _D3std5regex8internal12backtracking11__moduleRefZ@Base 15 ++ _D3std5regex8internal12backtracking12__ModuleInfoZ@Base 15 ++ _D3std5regex8internal12backtracking9CtContext10ctAtomCodeMFAxSQCiQChQCe2ir8BytecodeiZAya@Base 15 ++ _D3std5regex8internal12backtracking9CtContext10ctGenBlockMFAxSQCiQChQCe2ir8BytecodeiZSQDgQDfQDcQCwQCl7CtState@Base 15 ++ _D3std5regex8internal12backtracking9CtContext10ctGenGroupMFKAxSQCjQCiQCf2ir8BytecodeiZSQDhQDgQDdQCxQCm7CtState@Base 15 ++ _D3std5regex8internal12backtracking9CtContext10ctGenRegExMFAxSQCiQChQCe2ir8BytecodeZAya@Base 15 ++ _D3std5regex8internal12backtracking9CtContext10lookaroundMFkkZSQCjQCiQCfQBzQBo@Base 15 ++ _D3std5regex8internal12backtracking9CtContext11__xopEqualsMxFKxSQCkQCjQCgQCaQBpZb@Base 15 ++ _D3std5regex8internal12backtracking9CtContext11ctQuickTestMFAxSQCjQCiQCf2ir8BytecodeiZAya@Base 15 ++ _D3std5regex8internal12backtracking9CtContext11restoreCodeMFZAya@Base 15 ++ _D3std5regex8internal12backtracking9CtContext14ctGenFixupCodeMFAxSQCmQClQCi2ir8BytecodeiiZAya@Base 15 ++ _D3std5regex8internal12backtracking9CtContext14ctGenFixupCodeMFKAxSQCnQCmQCj2ir8BytecodeiiZAya@Base 15 ++ _D3std5regex8internal12backtracking9CtContext16ctGenAlternationMFAxSQCoQCnQCk2ir8BytecodeiZSQDmQDlQDiQDcQCr7CtState@Base 15 ++ _D3std5regex8internal12backtracking9CtContext6__initZ@Base 15 ++ _D3std5regex8internal12backtracking9CtContext7CtState11__xopEqualsMxFKxSQCsQCrQCoQCiQBxQBqZb@Base 15 ++ _D3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 ++ _D3std5regex8internal12backtracking9CtContext7CtState9__xtoHashFNbNeKxSQCrQCqQCnQChQBwQBpZm@Base 15 ++ _D3std5regex8internal12backtracking9CtContext8saveCodeMFkAyaZQe@Base 15 ++ _D3std5regex8internal12backtracking9CtContext9__xtoHashFNbNeKxSQCjQCiQCfQBzQBoZm@Base 15 ++ _D3std5regex8internal12backtracking9CtContext9ctGenAtomMFKAxSQChQCgQCd2ir8BytecodeiZSQDfQDeQDbQCvQCk7CtState@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTQkTQnZQxFNaNbNeQzQBbQBeQBhQBkQBnZQBr@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTQkZQuFNaNbNeQwQyQBaQBdQBgZQBk@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhTxkTxkTiTQsTQvTQyZQBiFNaNbNeQBlQBoQBrQBuxkxkiQCcQCfQCiZQCm@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTQhZQrFNaNbNeQtQvQxQzZQBc@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTQjTQmTQpTxkTxkTiTQBaTQBeTQBiZQBtFNaNbNeQBwQBzQCciQCgQCjQCmxkxkiQCuQCxQDaZQDe@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTQjTiTQoTiZQBaFNaNbNeQBdQBgQBjiQBniQBriZQBw@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiTiTQlZQvFNaNbNeQxQzQBbiiQBgZQBk@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTiZQqFNaNbNeQsQuQwiZQBa@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeTxkTxkTiTQpTQsTQvZQBfFNaNbNeQBiQBlQBoxkxkiQBwQBzQCcZQCg@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTQeZQoFNaNbNeQqQsQuZQx@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTQjTQmTxkTxkTiTQxTQBaTQBeZQBpFNaNbNeQBsQBviQBzQCcQCfxkxkiQCnQCqQCtZQCx@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTiTQlTiZQxFNaNbNeQzQBbiQBfiQBjiZQBo@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTiTQgTiZQsFNaNbNeQuQwiQziZQBd@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTiTiTQiTiZQuFNaNbNeQwQyiiQBciZQBh@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTiTiTQiZQsFNaNbNeQuQwiiQBaZQBe@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTiZQnFNaNbNeQpQriZQv@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTxkTxkTiTQmTQpTQsZQBcFNaNbNeQBfQBixkxkiQBqQBtQBwZQCa@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaTykTiZQqFNaNbNeQsQuykiZQBa@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTAyaZQlFNaNbNeQnQpZQs@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTQhTxkTxkTiTQsTQvTQyZQBkFNaNbNeQBliQBpQBsQBvxkxkiQCdQCgQCjZQCn@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTQhZQtFNaNbNeQtiQwQyQBaZQBe@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTiTQjTQmTQpTxkTxkTiTQBaTQBeTQBiZQBvFNaNbNeQBwiQCaQCdiQChQCkQCnxkxkiQCvQCyQDbZQDf@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTAyaTQeTiZQsFNaNbNeQsiQvQxiZQBb@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTAyaTiTQgTiZQuFNaNbNeQuiQxiQBaiZQBf@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTAyaTiZQpFNaNbNeQpiQsiZQw@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTAyaZQnFNaNbNeQniQqZQt@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTiTAyaTiZQrFNaNbNeQpiiQtiZQx@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTiTAyaZQpFNaNbNeQniiQrZQu@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTiZQlFNaNbNeAyaiiZQg@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiTykTiZQoFNaNbNeAyaiykiZQi@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTiZQjFNaNbNeAyaiZQf@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTkTAyaTQeTQhZQtFNaNbNeQtkQwQyQBaZQBe@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTkTAyaTQeZQqFNaNbNeQqkQtQvZQy@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTkTAyaZQnFNaNbNeQnkQqZQt@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTkTkZQlFNaNbNeAyakkZQg@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTkZQjFNaNbNeAyakZQf@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTxkTAyaTQeTiTQjTiTQoTiZQBdFNaNbNeQBdxkQBiQBliQBpiQBtiZQBy@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTxkTAyaTQeTiTiTQlZQyFNaNbNeQxxkQBbQBeiiQBjZQBn@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTxkTiTAyaTQeTQhZQwFNaNbNeQtxkiQyQBaQBdZQBh@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTxkTxkTiTAyaTQeTQhZQzFNaNbNeQtxkxkiQBaQBdQBgZQBk@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTxkTykTiTykTiZQuFNaNbNeAyaxkykiykiZQm@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTykTAyaTykTiZQtFNaNbNeQsykQwykiZQBc@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTykTiTiTAyaTiZQuFNaNbNeQpykiiQviZQz@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTykTiTykTiZQrFNaNbNeAyaykiykiZQk@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTykTiZQmFNaNbNeAyaykiZQh@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubTykZQkFNaNbNeAyaykZQg@Base 15 ++ _D3std5regex8internal12backtracking__T5ctSubZQhFNaNbNiNeAyaZQe@Base 15 ++ _D3std5regex8internal2ir10NamedGroup11__xopEqualsMxFKxSQCbQCaQBxQBrQBrZb@Base 15 ++ _D3std5regex8internal2ir10NamedGroup6__initZ@Base 15 ++ _D3std5regex8internal2ir10NamedGroup9__xtoHashFNbNeKxSQCaQBzQBwQBqQBqZm@Base 15 ++ _D3std5regex8internal2ir10getMatcherFNeSQBm3uni__T13InversionListTSQCnQBb8GcPolicyZQBhZSQDiQDhQDeQCy11CharMatcher@Base 15 ++ _D3std5regex8internal2ir10lengthOfIRFNaNbNiNfEQBsQBrQBoQBi2IRZi@Base 15 ++ _D3std5regex8internal2ir11CharMatcher11__xopEqualsMxFKxSQCcQCbQByQBsQBsZb@Base 15 ++ _D3std5regex8internal2ir11CharMatcher6__ctorMFNcSQBv3uni__T13InversionListTSQCwQBb8GcPolicyZQBhZSQDrQDqQDnQDhQDh@Base 15 ++ _D3std5regex8internal2ir11CharMatcher6__initZ@Base 15 ++ _D3std5regex8internal2ir11CharMatcher9__xtoHashFNbNeKxSQCbQCaQBxQBrQBrZm@Base 15 ++ _D3std5regex8internal2ir11RegexOption6__initZ@Base 15 ++ _D3std5regex8internal2ir11__moduleRefZ@Base 15 ++ _D3std5regex8internal2ir12__ModuleInfoZ@Base 15 ++ _D3std5regex8internal2ir12matcherCacheHSQBm3uni__T13InversionListTSQCnQBb8GcPolicyZQBhSQDhQDgQDdQCx11CharMatcher@Base 15 ++ _D3std5regex8internal2ir14RegexException6__initZ@Base 15 ++ _D3std5regex8internal2ir14RegexException6__vtblZ@Base 15 ++ _D3std5regex8internal2ir14RegexException7__ClassZ@Base 15 ++ _D3std5regex8internal2ir14RegexException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDmQDlQDiQDcQDc@Base 15 ++ _D3std5regex8internal2ir14RegexException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDmQDlQDiQDcQDc@Base 15 ++ _D3std5regex8internal2ir16lengthOfPairedIRFNaNbNiNfEQByQBxQBuQBo2IRZi@Base 15 ++ _D3std5regex8internal2ir17immediateParamsIRFNaNbNiNfEQBzQByQBvQBp2IRZi@Base 15 ++ _D3std5regex8internal2ir2IR6__initZ@Base 15 ++ _D3std5regex8internal2ir7isEndIRFNaNbNiNfEQBoQBnQBkQBe2IRZb@Base 15 ++ _D3std5regex8internal2ir8BitTable6__ctorMFNcSQBr3uni__T13InversionListTSQCsQBb8GcPolicyZQBhZSQDnQDmQDjQDdQDd@Base 15 ++ _D3std5regex8internal2ir8BitTable6__initZ@Base 15 ++ _D3std5regex8internal2ir8BitTable__T3addZQfMFNaNbNiNfwZv@Base 15 ++ _D3std5regex8internal2ir8BitTable__T5indexZQhFNaNbNiNfwZk@Base 15 ++ _D3std5regex8internal2ir8Bytecode11indexOfPairMxFNaNfkZk@Base 15 ++ _D3std5regex8internal2ir8Bytecode11setLocalRefMFNaNfZv@Base 15 ++ _D3std5regex8internal2ir8Bytecode12pairedLengthMxFNaNdNfZk@Base 15 ++ _D3std5regex8internal2ir8Bytecode13backreferenceMxFNaNdNfZb@Base 15 ++ _D3std5regex8internal2ir8Bytecode14setBackrefenceMFNaNfZv@Base 15 ++ _D3std5regex8internal2ir8Bytecode4argsMxFNaNdNfZi@Base 15 ++ _D3std5regex8internal2ir8Bytecode5isEndMxFNaNdNfZb@Base 15 ++ _D3std5regex8internal2ir8Bytecode6__ctorMFNaNcNfEQBvQBuQBrQBl2IRkZSQCnQCmQCjQCdQCd@Base 15 ++ _D3std5regex8internal2ir8Bytecode6__ctorMFNaNcNfEQBvQBuQBrQBl2IRkkZSQCoQCnQCkQCeQCe@Base 15 ++ _D3std5regex8internal2ir8Bytecode6__initZ@Base 15 ++ _D3std5regex8internal2ir8Bytecode6isAtomMxFNaNdNfZb@Base 15 ++ _D3std5regex8internal2ir8Bytecode6lengthMxFNaNdNfZk@Base 15 ++ _D3std5regex8internal2ir8Bytecode6pairedMxFNaNdNfZSQBxQBwQBtQBnQBn@Base 15 ++ _D3std5regex8internal2ir8Bytecode7fromRawFNaNfkZSQBvQBuQBrQBlQBl@Base 15 ++ _D3std5regex8internal2ir8Bytecode7hotspotMxFNaNdNfZb@Base 15 ++ _D3std5regex8internal2ir8Bytecode7isStartMxFNaNdNfZb@Base 15 ++ _D3std5regex8internal2ir8Bytecode8localRefMxFNaNdNfZb@Base 15 ++ _D3std5regex8internal2ir8Bytecode__T4codeZQgMxFNaNbNdNiNfZEQCfQCeQCbQBv2IR@Base 15 ++ _D3std5regex8internal2ir8Bytecode__T4dataZQgMxFNaNbNdNiNfZk@Base 15 ++ _D3std5regex8internal2ir8Bytecode__T8mnemonicZQkMxFNaNdNeZAya@Base 15 ++ _D3std5regex8internal2ir8Bytecode__T8sequenceZQkMxFNaNbNdNiNfZk@Base 15 ++ _D3std5regex8internal2ir8hasMergeFNaNbNiNfEQBpQBoQBlQBf2IRZb@Base 15 ++ _D3std5regex8internal2ir8isAtomIRFNaNbNiNfEQBpQBoQBlQBf2IRZb@Base 15 ++ _D3std5regex8internal2ir8pairedIRFNaNbNiNfEQBpQBoQBlQBf2IRZQr@Base 15 ++ _D3std5regex8internal2ir9RegexInfo6__initZ@Base 15 ++ _D3std5regex8internal2ir9isStartIRFNaNbNiNfEQBqQBpQBmQBg2IRZb@Base 15 ++ _D3std5regex8internal5tests11__moduleRefZ@Base 15 ++ _D3std5regex8internal5tests12__ModuleInfoZ@Base 15 ++ _D3std5regex8internal6parser11__moduleRefZ@Base 15 ++ _D3std5regex8internal6parser12__ModuleInfoZ@Base 15 ++ _D3std5regex8internal6parser7CodeGen10endPatternMFkZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen11__xopEqualsMxFKxSQCbQCaQBxQBrQBnZb@Base 15 ++ _D3std5regex8internal6parser7CodeGen11charsetToIrMFNeSQCa3uni__T13InversionListTSQDbQBb8GcPolicyZQBhZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen11fixupLengthMFNdZm@Base 15 ++ _D3std5regex8internal6parser7CodeGen11isOpenGroupMFkZb@Base 15 ++ _D3std5regex8internal6parser7CodeGen11markBackrefMFkZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen13fixLookaroundMFkZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen13fixRepetitionMFkZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen13fixRepetitionMFkkkbZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen13genLogicGroupMFZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen13genLookaroundMFEQCaQBzQBw2ir2IRZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen13genNamedGroupMFAyaZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen14fixAlternationMFZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen17finishAlternationMFkZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen3putMFSQBpQBoQBl2ir8BytecodeZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen5startMFkZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen6__initZ@Base 15 ++ _D3std5regex8internal6parser7CodeGen6lengthMFNdZk@Base 15 ++ _D3std5regex8internal6parser7CodeGen6putRawMFkZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen7onCloseMFZSQBu8typecons__T5TupleTbTkZQl@Base 15 ++ _D3std5regex8internal6parser7CodeGen8genGroupMFZv@Base 15 ++ _D3std5regex8internal6parser7CodeGen8popFixupMFZk@Base 15 ++ _D3std5regex8internal6parser7CodeGen8topFixupMFNdZk@Base 15 ++ _D3std5regex8internal6parser7CodeGen9__xtoHashFNbNeKxSQCaQBzQBwQBqQBmZm@Base 15 ++ _D3std5regex8internal6parser7CodeGen9pushFixupMFkZv@Base 15 ++ _D3std5regex8internal6parser__T15reverseBytecodeZQsFNeASQCcQCbQBy2ir8BytecodeZv@Base 15 ++ _D3std5regex8internal6tests211__moduleRefZ@Base 15 ++ _D3std5regex8internal6tests212__ModuleInfoZ@Base 15 ++ _D3std5regex8internal8thompson11__moduleRefZ@Base 15 ++ _D3std5regex8internal8thompson12__ModuleInfoZ@Base 15 ++ _D3std5regex8internal9generator11__moduleRefZ@Base 15 ++ _D3std5regex8internal9generator12__ModuleInfoZ@Base 15 ++ _D3std5regex8internal9kickstart11__moduleRefZ@Base 15 ++ _D3std5regex8internal9kickstart12__ModuleInfoZ@Base 15 ++ _D3std5stdio10ChunksImpl11__fieldDtorMFNeZv@Base 15 ++ _D3std5stdio10ChunksImpl11__xopEqualsMxFKxSQBpQBoQBlZb@Base 15 ++ _D3std5stdio10ChunksImpl15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std5stdio10ChunksImpl6__ctorMFNcSQBiQBh4FilemZSQBwQBvQBs@Base 15 ++ _D3std5stdio10ChunksImpl6__initZ@Base 15 ++ _D3std5stdio10ChunksImpl8opAssignMFNcNjNeSQBoQBnQBkZQl@Base 15 ++ _D3std5stdio10ChunksImpl9__xtoHashFNbNeKxSQBoQBnQBkZm@Base 15 ++ _D3std5stdio10LockedFile14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D3std5stdio10LockedFile5fgetcMFNbNiNeZi@Base 15 ++ _D3std5stdio10LockedFile6__ctorMFNcNePOS4core4stdcQBs8_IO_FILEZSQCkQCjQCg@Base 15 ++ _D3std5stdio10LockedFile6__dtorMFNeZv@Base 15 ++ _D3std5stdio10LockedFile6__initZ@Base 15 ++ _D3std5stdio10LockedFile6fgetwcMFNbNiNeZw@Base 15 ++ _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZ18__lambda_L5639_C16MFNeZ1nm@Base 15 ++ _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZ18__lambda_L5639_C16MFNeZ7lineptrPa@Base 15 ++ _D3std5stdio10readlnImplFNfPOS4core4stdcQBi8_IO_FILEKAawEQCdQCc4File11OrientationZm@Base 15 ++ _D3std5stdio11__moduleRefZ@Base 15 ++ _D3std5stdio11openNetworkFAyatZSQBeQBd4File@Base 15 ++ _D3std5stdio12__ModuleInfoZ@Base 15 ++ _D3std5stdio13StdFileHandle6__initZ@Base 15 ++ _D3std5stdio13trustedStdoutFNdNeZSQBgQBf4File@Base 15 ++ _D3std5stdio14ReadlnAppender10initializeMFNfAaZv@Base 15 ++ _D3std5stdio14ReadlnAppender11__xopEqualsMxFKxSQBtQBsQBpZb@Base 15 ++ _D3std5stdio14ReadlnAppender24reserveWithoutAllocatingMFmZb@Base 15 ++ _D3std5stdio14ReadlnAppender4dataMFNdNeZAa@Base 15 ++ _D3std5stdio14ReadlnAppender6__initZ@Base 15 ++ _D3std5stdio14ReadlnAppender7putcharMFNeaZv@Base 15 ++ _D3std5stdio14ReadlnAppender7putonlyMFNexAaZv@Base 15 ++ _D3std5stdio14ReadlnAppender7reserveMFNemZv@Base 15 ++ _D3std5stdio14ReadlnAppender8putdcharMFNewZv@Base 15 ++ _D3std5stdio14ReadlnAppender9__xtoHashFNbNeKxSQBsQBrQBoZm@Base 15 ++ _D3std5stdio14StdioException6__ctorMFNeAyakZCQBrQBqQBn@Base 15 ++ _D3std5stdio14StdioException6__initZ@Base 15 ++ _D3std5stdio14StdioException6__vtblZ@Base 15 ++ _D3std5stdio14StdioException6opCallFNfAyaZv@Base 15 ++ _D3std5stdio14StdioException6opCallFNfZv@Base 15 ++ _D3std5stdio14StdioException7__ClassZ@Base 15 ++ _D3std5stdio17LockingTextReader10__aggrDtorMFZv@Base 15 ++ _D3std5stdio17LockingTextReader10__postblitMFZv@Base 15 ++ _D3std5stdio17LockingTextReader11__fieldDtorMFNeZv@Base 15 ++ _D3std5stdio17LockingTextReader11__xopEqualsMxFKxSQBwQBvQBsZb@Base 15 ++ _D3std5stdio17LockingTextReader14__aggrPostblitMFZv@Base 15 ++ _D3std5stdio17LockingTextReader15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std5stdio17LockingTextReader5emptyMFNdZb@Base 15 ++ _D3std5stdio17LockingTextReader5frontMFNdZa@Base 15 ++ _D3std5stdio17LockingTextReader6__ctorMFNcSQBpQBo4FileZSQCcQCbQBy@Base 15 ++ _D3std5stdio17LockingTextReader6__dtorMFZv@Base 15 ++ _D3std5stdio17LockingTextReader6__initZ@Base 15 ++ _D3std5stdio17LockingTextReader8opAssignMFSQBpQBoQBlZv@Base 15 ++ _D3std5stdio17LockingTextReader8popFrontMFZv@Base 15 ++ _D3std5stdio17LockingTextReader9__xtoHashFNbNeKxSQBvQBuQBrZm@Base 15 ++ _D3std5stdio4File10__postblitMFNaNbNiNfZv@Base 15 ++ _D3std5stdio4File11ByChunkImpl11__fieldDtorMFNeZv@Base 15 ++ _D3std5stdio4File11ByChunkImpl11__xopEqualsMxFKxSQBvQBuQBrQBpZb@Base 15 ++ _D3std5stdio4File11ByChunkImpl15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std5stdio4File11ByChunkImpl5emptyMxFNbNdZb@Base 15 ++ _D3std5stdio4File11ByChunkImpl5frontMFNbNdZAh@Base 15 ++ _D3std5stdio4File11ByChunkImpl5primeMFZv@Base 15 ++ _D3std5stdio4File11ByChunkImpl6__ctorMFNcSQBoQBnQBkAhZSQCbQCaQBxQBv@Base 15 ++ _D3std5stdio4File11ByChunkImpl6__ctorMFNcSQBoQBnQBkmZSQCaQBzQBwQBu@Base 15 ++ _D3std5stdio4File11ByChunkImpl6__initZ@Base 15 ++ _D3std5stdio4File11ByChunkImpl8opAssignMFNcNjNeSQBuQBtQBqQBoZQo@Base 15 ++ _D3std5stdio4File11ByChunkImpl8popFrontMFZv@Base 15 ++ _D3std5stdio4File11ByChunkImpl9__xtoHashFNbNeKxSQBuQBtQBqQBoZm@Base 15 ++ _D3std5stdio4File11__xopEqualsMxFKxSQBiQBhQBeZb@Base 15 ++ _D3std5stdio4File12closeHandlesMFNeZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter10__aggrDtorMFNeZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter10__postblitMFNeZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter11__fieldDtorMFNeZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter11__xopEqualsMxFKxSQCbQCaQBxQBvZb@Base 15 ++ _D3std5stdio4File17LockingTextWriter14__aggrPostblitMFNeZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter26highSurrogateShouldBeEmptyMFNfZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter6__ctorMFNcNeKSQBxQBwQBtZSQCiQChQCeQCc@Base 15 ++ _D3std5stdio4File17LockingTextWriter6__dtorMFNeZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter6__initZ@Base 15 ++ _D3std5stdio4File17LockingTextWriter7handle_MFNdNeZPS4core4stdcQCf8_IO_FILE@Base 15 ++ _D3std5stdio4File17LockingTextWriter8opAssignMFNcNjNeSQCaQBzQBwQBuZQo@Base 15 ++ _D3std5stdio4File17LockingTextWriter9__xtoHashFNbNeKxSQCaQBzQBwQBuZm@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTAaZQiMFNfMQkZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTAwZQiMFNfMQkZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTAxaZQjMFNfMQlZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTAyaZQjMFNfMQlZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTaZQhMFNfMaZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTwZQhMFNfMwZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTxaZQiMFNfMxaZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTxwZQiMFNfMxwZv@Base 15 ++ _D3std5stdio4File17LockingTextWriter__T3putTyaZQiMFNfMyaZv@Base 15 ++ _D3std5stdio4File17lockingTextWriterMFNfZSQBoQBnQBk17LockingTextWriter@Base 15 ++ _D3std5stdio4File19lockingBinaryWriterMFZSQBoQBnQBk__T16BinaryWriterImplVbi1ZQx@Base 15 ++ _D3std5stdio4File3eofMxFNaNdNeZb@Base 15 ++ _D3std5stdio4File4Impl6__initZ@Base 15 ++ _D3std5stdio4File4lockMFEQxQv8LockTypemmZv@Base 15 ++ _D3std5stdio4File4nameMxFNaNbNdNjNfZAya@Base 15 ++ _D3std5stdio4File4openMFNeAyaMAxaZv@Base 15 ++ _D3std5stdio4File4seekMFNeliZv@Base 15 ++ _D3std5stdio4File4sizeMFNdNfZm@Base 15 ++ _D3std5stdio4File4syncMFNeZv@Base 15 ++ _D3std5stdio4File4tellMxFNdNeZm@Base 15 ++ _D3std5stdio4File5closeMFNeZv@Base 15 ++ _D3std5stdio4File5errorMxFNaNbNdNeZb@Base 15 ++ _D3std5stdio4File5flushMFNeZv@Base 15 ++ _D3std5stdio4File5getFPMFNaNfZPOS4core4stdcQBl8_IO_FILE@Base 15 ++ _D3std5stdio4File5popenMFNfAyaMAxaZv@Base 15 ++ _D3std5stdio4File6__ctorMFNbNcNiNePOS4core4stdcQBp8_IO_FILEAyakbZSQCmQClQCi@Base 15 ++ _D3std5stdio4File6__ctorMFNcNfAyaMAxaZSQBlQBkQBh@Base 15 ++ _D3std5stdio4File6__dtorMFNfZv@Base 15 ++ _D3std5stdio4File6__initZ@Base 15 ++ _D3std5stdio4File6detachMFNeZv@Base 15 ++ _D3std5stdio4File6fdopenMFNeiMAxaAyaZv@Base 15 ++ _D3std5stdio4File6fdopenMFNfiMAxaZv@Base 15 ++ _D3std5stdio4File6filenoMxFNdNeZi@Base 15 ++ _D3std5stdio4File6isOpenMxFNaNbNdNfZb@Base 15 ++ _D3std5stdio4File6reopenMFNeAyaMAxaZv@Base 15 ++ _D3std5stdio4File6rewindMFNfZv@Base 15 ++ _D3std5stdio4File6unlockMFmmZv@Base 15 ++ _D3std5stdio4File7byChunkMFAhZSQBdQBcQz11ByChunkImpl@Base 15 ++ _D3std5stdio4File7byChunkMFmZSQBcQBbQy11ByChunkImpl@Base 15 ++ _D3std5stdio4File7setvbufMFNeAviZv@Base 15 ++ _D3std5stdio4File7setvbufMFNemiZv@Base 15 ++ _D3std5stdio4File7tmpfileFNfZSQBcQBbQy@Base 15 ++ _D3std5stdio4File7tryLockMFEQBaQz8LockTypemmZb@Base 15 ++ _D3std5stdio4File8clearerrMFNaNbNfZv@Base 15 ++ _D3std5stdio4File8initImplMFNaNbNiNfPOS4core4stdcQBr8_IO_FILEAyakbZv@Base 15 ++ _D3std5stdio4File8lockImplMFismmZi@Base 15 ++ _D3std5stdio4File8opAssignMFNcNjNfSQBhQBgQBdZQl@Base 15 ++ _D3std5stdio4File8wrapFileFNfPOS4core4stdcQBk8_IO_FILEZSQCcQCbQBy@Base 15 ++ _D3std5stdio4File9__xtoHashFNbNeKxSQBhQBgQBdZm@Base 15 ++ _D3std5stdio4File9resetFileMFNeAyaMAxabZv@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx10__aggrDtorMFZv@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx10__postblitMFNbNiZv@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx11__fieldDtorMFNeZv@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx11__xopEqualsMxFKxSQCkQCjQCg__TQCeVbi1ZQCmZb@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx14__aggrPostblitMFNbNiZv@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__ctorMFNcMKSQCfQCeQCbZSQCqQCpQCm__TQCkVbi1ZQCs@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__dtorMFNbNiZv@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__initZ@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx8opAssignMFNcNjSQChQCgQCd__TQCbVbi1ZQCjZQz@Base 15 ++ _D3std5stdio4File__T16BinaryWriterImplVbi1ZQx9__xtoHashFNbNeKxSQCjQCiQCf__TQCdVbi1ZQClZm@Base 15 ++ _D3std5stdio4File__T6readlnTAyaZQmMFNfwZQm@Base 15 ++ _D3std5stdio4File__T6readlnTaZQkMFNfKAawZm@Base 15 ++ _D3std5stdio4File__T7rawReadTaZQlMFNfAaZQd@Base 15 ++ _D3std5stdio4File__T7rawReadTbZQlMFNfAbZQd@Base 15 ++ _D3std5stdio4File__T7rawReadThZQlMFNfAhZQd@Base 15 ++ _D3std5stdio4File__T7rawReadTiZQlMFNfAiZQd@Base 15 ++ _D3std5stdio4File__T7rawReadTlZQlMFNfAlZQd@Base 15 ++ _D3std5stdio4File__T8writeflnTaTAyaTmTQgTQjTxlZQBbMFNfIAaQzmQBcQBfxlZv@Base 15 ++ _D3std5stdio4File__T8writeflnTaTAyaTmTQgTQjTxmZQBbMFNfIAaQzmQBcQBfxmZv@Base 15 ++ _D3std5stdio4File__T8writeflnTaTAyaTmTQgTxmZQyMFNfIAaQvmQyxmZv@Base 15 ++ _D3std5stdio4File__T8writeflnTaTAyaTxmTQhTQkTmZQBbMFNfIAaQzxmQBdQBgmZv@Base 15 ++ _D3std5stdio4File__T8writeflnTaTAyaTxmTQhTxmZQzMFNfIAaQwxmQBaxmZv@Base 15 ++ _D3std5stdio5lines11__fieldDtorMFNeZv@Base 15 ++ _D3std5stdio5lines11__xopEqualsMxFKxSQBjQBiQBfZb@Base 15 ++ _D3std5stdio5lines15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std5stdio5lines6__ctorMFNcNfSQBeQBd4FilewZSQBsQBrQBo@Base 15 ++ _D3std5stdio5lines6__initZ@Base 15 ++ _D3std5stdio5lines8opAssignMFNcNjNeSQBiQBhQBeZQl@Base 15 ++ _D3std5stdio5lines9__xtoHashFNbNeKxSQBiQBhQBeZm@Base 15 ++ _D3std5stdio6chunksFSQtQr4FilemZSQBfQBe10ChunksImpl@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNbNcNdNiZSQEfQEe4File@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ4implSQEgQEf4File4Impl@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ6resultSQEiQEh4File@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea21_636f72652e737464632e737464696f2e737464696eZQDeFNcNdZ8spinlockOk@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNbNcNdNiZSQEhQEg4File@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ4implSQEiQEh4File4Impl@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ6resultSQEkQEj4File@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e737464657272ZQDgFNcNdZ8spinlockOk@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNbNcNdNiZSQEhQEg4File@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ4implSQEiQEh4File4Impl@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ6resultSQEkQEj4File@Base 15 ++ _D3std5stdio__T10makeGlobalVEQBbQBa13StdFileHandlea22_636f72652e737464632e737464696f2e7374646f7574ZQDgFNcNdZ8spinlockOk@Base 15 ++ _D3std5stdio__T12trustedFreadTaZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAaZm@Base 15 ++ _D3std5stdio__T12trustedFreadTbZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAbZm@Base 15 ++ _D3std5stdio__T12trustedFreadThZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAhZm@Base 15 ++ _D3std5stdio__T12trustedFreadTiZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAiZm@Base 15 ++ _D3std5stdio__T12trustedFreadTlZQrFNbNiNePOS4core4stdcQBw8_IO_FILEAlZm@Base 15 ++ _D3std5stdio__T13trustedFwriteTaZQsFNbNiNePOS4core4stdcQBx8_IO_FILExAaZm@Base 15 ++ _D3std5stdio__T6_fopenTAyaTAxaZQqFNbNiNfQrQpZPOS4core4stdcQCa8_IO_FILE@Base 15 ++ _D3std5stdio__T6_fopenTAyaTAxaZQqFQlQjZ10_fopenImplFNbNiNeMPxaMQeZPOS4core4stdcQCv8_IO_FILE@Base 15 ++ _D3std5stdio__T6_popenTAyaTAxaZQqFNbNiNeQrQpZ9popenImplFNbNiNePxaQdZPOS4core4stdcQCx8_IO_FILE@Base 15 ++ _D3std5stdio__T6_popenTAyaTAxaZQqFNbNiNeQrQpZPOS4core4stdcQCa8_IO_FILE@Base 15 ++ _D3std6base6411__moduleRefZ@Base 15 ++ _D3std6base6412__ModuleInfoZ@Base 15 ++ _D3std6base6415Base64Exception6__ctorMFNaNbNfAyaQdmZCQBzQByQBu@Base 15 ++ _D3std6base6415Base64Exception6__initZ@Base 15 ++ _D3std6base6415Base64Exception6__vtblZ@Base 15 ++ _D3std6base6415Base64Exception7__ClassZ@Base 15 ++ _D3std6base64__T10Base64ImplVai43Vai47Vai61Z12decodeLengthFNaNbNiNfImZm@Base 15 ++ _D3std6base64__T10Base64ImplVai43Vai47Vai61Z12encodeLengthFNaNbNiNfImZm@Base 15 ++ _D3std6base64__T10Base64ImplVai43Vai47Vai61Z9DecodeMapyG256i@Base 15 ++ _D3std6base64__T10Base64ImplVai43Vai47Vai61Z9EncodeMapyAa@Base 15 ++ _D3std6base64__T10Base64ImplVai45Vai95Vai0Z12decodeLengthFNaNbNiNfImZm@Base 15 ++ _D3std6base64__T10Base64ImplVai45Vai95Vai0Z12encodeLengthFNaNbNiNfImZm@Base 15 ++ _D3std6base64__T10Base64ImplVai45Vai95Vai0Z9DecodeMapyG256i@Base 15 ++ _D3std6base64__T10Base64ImplVai45Vai95Vai0Z9EncodeMapyAa@Base 15 ++ _D3std6base64__T10Base64ImplVai45Vai95Vai61Z12decodeLengthFNaNbNiNfImZm@Base 15 ++ _D3std6base64__T10Base64ImplVai45Vai95Vai61Z12encodeLengthFNaNbNiNfImZm@Base 15 ++ _D3std6base64__T10Base64ImplVai45Vai95Vai61Z9DecodeMapyG256i@Base 15 ++ _D3std6base64__T10Base64ImplVai45Vai95Vai61Z9EncodeMapyAa@Base 15 ++ _D3std6bigint11__moduleRefZ@Base 15 ++ _D3std6bigint12__ModuleInfoZ@Base 15 ++ _D3std6bigint15toDecimalStringFNaNbNfxSQBlQBk6BigIntZAya@Base 15 ++ _D3std6bigint5toHexFNaNfxSQyQw6BigIntZAya@Base 15 ++ _D3std6bigint6BigInt10uintLengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std6bigint6BigInt11__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 ++ _D3std6bigint6BigInt11ulongLengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std6bigint6BigInt14checkDivByZeroMxFNaNbNlNfZv@Base 15 ++ _D3std6bigint6BigInt5opCmpMxFNaNbNiNfKxSQBmQBlQBhZi@Base 15 ++ _D3std6bigint6BigInt5toIntMxFNaNbNiNfZi@Base 15 ++ _D3std6bigint6BigInt6__initZ@Base 15 ++ _D3std6bigint6BigInt6isZeroMxFNaNbNiNlNfZb@Base 15 ++ _D3std6bigint6BigInt6negateMFNaNbNiNlNfZv@Base 15 ++ _D3std6bigint6BigInt6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std6bigint6BigInt6toLongMxFNaNbNiNfZl@Base 15 ++ _D3std6bigint6BigInt8toStringMxFMDFMAxaZvAyaZv@Base 15 ++ _D3std6bigint6BigInt8toStringMxFMDFMAxaZvMKxSQBr6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6bigint6BigInt__T10opOpAssignVAyaa1_25TSQBsQBrQBnZQBhMFNaNbNjNlNfQBaZQBe@Base 15 ++ _D3std6bigint6BigInt__T10opOpAssignVAyaa1_2aTSQBsQBrQBnZQBhMFNaNbNjNlNfQBaZQBe@Base 15 ++ _D3std6bigint6BigInt__T10opOpAssignVAyaa2_3e3eTiZQBaMFNaNbNjNlNfiZSQCnQCmQCi@Base 15 ++ _D3std6bigint6BigInt__T5opCmpHTSQBeQBdQzZQsMxFNaNbNiNfxSQCcQCbQBxZi@Base 15 ++ _D3std6bigint6BigInt__T6__ctorTiZQkMFNaNbNcNfiZSQBuQBtQBp@Base 15 ++ _D3std6bigint6BigInt__T6opCastHTbZQlMxFNaNbNiNfZb@Base 15 ++ _D3std6bigint6BigInt__T8opAssignHTSQBhQBgQBcZQwMFNaNbNiNfQxZQBa@Base 15 ++ _D3std6bigint6BigInt__T8opAssignTiZQmMFNaNbNfiZSQBuQBtQBp@Base 15 ++ _D3std6bigint6BigInt__T8opBinaryVAyaa1_25TSQBpQBoQBkZQBeMxFNaNbNjNlNfQBbZQBf@Base 15 ++ _D3std6bigint6BigInt__T8opBinaryVAyaa1_2aTSQBpQBoQBkZQBeMxFNaNbNjNlNfQBbZQBf@Base 15 ++ _D3std6bigint6BigInt__T8opEqualsZQkMxFNaNbNiNfKxSQBvQBuQBqZb@Base 15 ++ _D3std6bigint6BigInt__T8toStringTDFMAxaZvZQtMxFMKQqAyaZv@Base 15 ++ _D3std6bigint6BigInt__T8toStringTDFMAxaZvZQtMxFMKQqMKxSQCb6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6bigint6BigInt__T8toStringTSQBg5array__T8AppenderTAyaZQoZQBoMxFNaNfMKQBqMKxSQDc6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6bigint6BigInt__T8toStringTSQBg5array__T8AppenderTAyaZQoZQBoMxFNaNfMKQBqQwZv@Base 15 ++ _D3std6bigint6divModFNaNbNfxSQBbQBa6BigIntxQpJSQBtQBsQsJQkZv@Base 15 ++ _D3std6bigint6powmodFNaNbNfSQBaQz6BigIntQnQpZQs@Base 15 ++ _D3std6bigint__T9absUnsignTiZQnFNaNbNiNfiZk@Base 15 ++ _D3std6digest10murmurhash11__moduleRefZ@Base 15 ++ _D3std6digest10murmurhash12__ModuleInfoZ@Base 15 ++ _D3std6digest11__moduleRefZ@Base 15 ++ _D3std6digest12__ModuleInfoZ@Base 15 ++ _D3std6digest14hexDigitToByteFNaNbNiNfwZ18hexDigitToByteImplFNaNbNiNfwZi@Base 15 ++ _D3std6digest14hexDigitToByteFNaNbNiNfwZh@Base 15 ++ _D3std6digest2md11__moduleRefZ@Base 15 ++ _D3std6digest2md12__ModuleInfoZ@Base 15 ++ _D3std6digest2md3MD51FFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest2md3MD51GFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest2md3MD51HFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest2md3MD51IFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest2md3MD52FFFNaNbNiNfKkkkkkkkZv@Base 15 ++ _D3std6digest2md3MD52GGFNaNbNiNfKkkkkkkkZv@Base 15 ++ _D3std6digest2md3MD52HHFNaNbNiNfKkkkkkkkZv@Base 15 ++ _D3std6digest2md3MD52IIFNaNbNiNfKkkkkkkkZv@Base 15 ++ _D3std6digest2md3MD53putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest2md3MD55startMFNaNbNiNfZv@Base 15 ++ _D3std6digest2md3MD56__initZ@Base 15 ++ _D3std6digest2md3MD56finishMFNaNbNiNeZG16h@Base 15 ++ _D3std6digest2md3MD58_paddingyG64h@Base 15 ++ _D3std6digest2md3MD59transformMFNaNbNiPxG64hZv@Base 15 ++ _D3std6digest3crc11__moduleRefZ@Base 15 ++ _D3std6digest3crc12__ModuleInfoZ@Base 15 ++ _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx4peekMxFNaNbNiNfZG4h@Base 15 ++ _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6__initZ@Base 15 ++ _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6finishMFNaNbNiNfZG4h@Base 15 ++ _D3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6tablesyG8G256k@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg4peekMxFNaNbNiNfZG8h@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6__initZ@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6finishMFNaNbNiNfZG8h@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6tablesyG8G256m@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg4peekMxFNaNbNiNfZG8h@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6__initZ@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6finishMFNaNbNiNfZG8h@Base 15 ++ _D3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6tablesyG8G256m@Base 15 ++ _D3std6digest3crc__T9genTablesTkZQnFNaNbNiNfkZG8G256k@Base 15 ++ _D3std6digest3crc__T9genTablesTmZQnFNaNbNiNfmZG8G256m@Base 15 ++ _D3std6digest3sha11__moduleRefZ@Base 15 ++ _D3std6digest3sha12__ModuleInfoZ@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs6__initZ@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs6finishMFNaNbNiNeZG28h@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs7paddingyG128h@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs9constantsyG80m@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki224ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs6__initZ@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs6finishMFNaNbNiNeZG32h@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs7paddingyG128h@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs9constantsyG80m@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki256ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs6__initZ@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs6finishMFNaNbNiNeZG48h@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs7paddingyG128h@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs9constantsyG80m@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki384ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs12transformX86FNaNbNiPG5kPxG64hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs6__initZ@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs6finishMFNaNbNiNeZG64h@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs7paddingyG128h@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs9constantsyG80m@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs__T12T_SHA2_16_79TmZQrFNaNbNiNfiKG16mmmmKmmmmKmmZv@Base 15 ++ _D3std6digest3sha__T3SHAVki1024Vki512ZQs__T13transformSHA2TmZQsFNaNbNiPG8mPxG128hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr6__initZ@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr6finishMFNaNbNiNeZG20h@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr7paddingyG128h@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki160ZQr9constantsyG64k@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr6__initZ@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr6finishMFNaNbNiNeZG28h@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr7paddingyG128h@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr9constantsyG64k@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr__T12T_SHA2_16_79TkZQrFNaNbNiNfiKG16kkkkKkkkkKkkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki224ZQr__T13transformSHA2TkZQsFNaNbNiPG8kPxG64hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr12transformX86FNaNbNiPG5kPxG64hZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr3putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr5startMFNaNbNiNfZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr6T_0_15FNaNbNiiPxG64hKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr6__initZ@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr6finishMFNaNbNiNeZG32h@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_16_19FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_20_39FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_40_59FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr7T_60_79FNaNbNiNfiKG16kkKkkkkKkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr7paddingyG128h@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr9constantsyG64k@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr__T12T_SHA2_16_79TkZQrFNaNbNiNfiKG16kkkkKkkkkKkkZv@Base 15 ++ _D3std6digest3sha__T3SHAVki512Vki256ZQr__T13transformSHA2TkZQsFNaNbNiPG8kPxG64hZv@Base 15 ++ _D3std6digest4hmac11__moduleRefZ@Base 15 ++ _D3std6digest4hmac12__ModuleInfoZ@Base 15 ++ _D3std6digest6Digest11__InterfaceZ@Base 15 ++ _D3std6digest6DigestQoMFNbNeAxAvXAh@Base 15 ++ _D3std6digest6ripemd11__moduleRefZ@Base 15 ++ _D3std6digest6ripemd12__ModuleInfoZ@Base 15 ++ _D3std6digest6ripemd9RIPEMD1601FFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest6ripemd9RIPEMD1601GFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest6ripemd9RIPEMD1601HFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest6ripemd9RIPEMD1601IFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest6ripemd9RIPEMD1601JFNaNbNiNfkkkZk@Base 15 ++ _D3std6digest6ripemd9RIPEMD1602FFFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1602GGFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1602HHFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1602IIFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1602JJFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1603FFFFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1603GGGFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1603HHHFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1603IIIFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1603JJJFNaNbNiNfKkkKkkkkkZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1603putMFNaNbNiNeAxhXv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1605startMFNaNbNiNfZv@Base 15 ++ _D3std6digest6ripemd9RIPEMD1606__initZ@Base 15 ++ _D3std6digest6ripemd9RIPEMD1606finishMFNaNbNiNeZG20h@Base 15 ++ _D3std6digest6ripemd9RIPEMD1608_paddingyG64h@Base 15 ++ _D3std6digest6ripemd9RIPEMD1609transformMFNaNbNiPxG64hZv@Base 15 ++ _D3std6digest__T11toHexStringVEQBdQBc5Orderi1VEQBt5ascii10LetterCasei0ZQCdFNaNbNfIAhZAya@Base 15 ++ _D3std6digest__T11toHexStringVEQBdQBc5Orderi1Vmi16VEQBy5ascii10LetterCasei0ZQCiFNaNbNiNfxG16hZG32a@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__ctorMFNaNbNiNfZCQCpQCo__TQCkTQByZQCs@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe4peekMxFNaNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe4peekMxFNaNeAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__ctorMFNaNbNiNfZCQDoQDn__TQDjTQCxZQDr@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo4peekMxFNaNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo4peekMxFNaNeAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__ctorMFNaNbNiNfZCQDyQDx__TQDtTQDhZQEb@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo4peekMxFNaNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo4peekMxFNaNeAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__ctorMFNaNbNiNfZCQDyQDx__TQDtTQDhZQEb@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__ctorMFNaNbNiNfZCQDjQDi__TQDeTQCsZQDm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__ctorMFNaNbNiNfZCQDiQDh__TQDdTQCrZQDl@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy7__ClassZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp3putMFNbNeAxhXv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp5resetMFNbNeZv@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__ctorMFNaNbNiNfZCQCzQCy__TQCuTQCiZQDc@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__initZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6__vtblZ@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbAhZQd@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbNeZAh@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6lengthMxFNaNbNdNeZm@Base 15 ++ _D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp7__ClassZ@Base 15 ++ _D3std6digest__T15toHexStringImplVEQBhQBg5Orderi1VEQBx5ascii10LetterCasei0TAxhTAaZQCoFNaNbNiNfMKxAhKQvZv@Base 15 ++ _D3std6digest__T15toHexStringImplVEQBhQBg5Orderi1VEQBx5ascii10LetterCasei0TG16hTG32aZQCrFNaNbNiNfMKxG16hKQzZv@Base 15 ++ _D3std6digest__T7asArrayVmi16ThZQqFNaNbNcNiKAhAyaZG16h@Base 15 ++ _D3std6digest__T7asArrayVmi20ThZQqFNaNbNcNiKAhAyaZG20h@Base 15 ++ _D3std6digest__T7asArrayVmi28ThZQqFNaNbNcNiKAhAyaZG28h@Base 15 ++ _D3std6digest__T7asArrayVmi32ThZQqFNaNbNcNiKAhAyaZG32h@Base 15 ++ _D3std6digest__T7asArrayVmi48ThZQqFNaNbNcNiKAhAyaZG48h@Base 15 ++ _D3std6digest__T7asArrayVmi4ThZQpFNaNbNcNiKAhAyaZG4h@Base 15 ++ _D3std6digest__T7asArrayVmi64ThZQqFNaNbNcNiKAhAyaZG64h@Base 15 ++ _D3std6digest__T7asArrayVmi8ThZQpFNaNbNcNiKAhAyaZG8h@Base 15 ++ _D3std6format11__moduleRefZ@Base 15 ++ _D3std6format12__ModuleInfoZ@Base 15 ++ _D3std6format15FormatException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCsQCo@Base 15 ++ _D3std6format15FormatException6__ctorMFNaNbNiNfZCQBvQBuQBq@Base 15 ++ _D3std6format15FormatException6__initZ@Base 15 ++ _D3std6format15FormatException6__vtblZ@Base 15 ++ _D3std6format15FormatException7__ClassZ@Base 15 ++ _D3std6format4read11__moduleRefZ@Base 15 ++ _D3std6format4read12__ModuleInfoZ@Base 15 ++ _D3std6format4spec11__moduleRefZ@Base 15 ++ _D3std6format4spec12__ModuleInfoZ@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp11__xopEqualsMxFKxSQCdQCcQBy__TQBwTaZQCcZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp11flSeparatorMFNaNbNdNiNfbZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp11flSeparatorMxFNaNbNdNiNfZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp12getCurFmtStrMxFNaNfZAya@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp16separatorCharPosMFNaNbNiNfZi@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp16separatorCharPosMFNaNbNiNfiZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6__ctorMFNaNbNcNiNfIAaZSQCiQChQCd__TQCbTaZQCh@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6__initZ@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6fillUpMFNaNlNfZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6flDashMFNaNbNdNiNfbZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6flDashMxFNaNbNdNiNfZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6flHashMFNaNbNdNiNfbZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6flHashMxFNaNbNdNiNfZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6flPlusMFNaNbNdNiNfbZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6flPlusMxFNaNbNdNiNfZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6flZeroMFNaNbNdNiNfbZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp6flZeroMxFNaNbNdNiNfZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp7flEqualMFNaNbNdNiNfbZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp7flEqualMxFNaNbNdNiNfZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp7flSpaceMFNaNbNdNiNfbZv@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp7flSpaceMxFNaNbNdNiNfZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp8toStringMxFNaNfZAya@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp9__xtoHashFNbNeKxSQCcQCbQBx__TQBvTaZQCbZm@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTDFMAxaZvZQBdMFNlKQrZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T15InPlaceAppenderTAyaZQwZQCgMFNaNlNfKQByZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T8AppenderTAyaZQoZQByMFNaNlNfKQBqZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5array__T8AppenderTyAaZQoZQByMFNaNlNfKQBqZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCi5stdio4File17LockingTextWriterZQCdMFNlNfKQBtZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh8NoOpSinkZQBlMFNaNlNfKQBdZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQChQCd__T10singleSpecTyaZQqFAyaZ16DummyOutputRangeZQCxMFNaNlNfKQCpZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkZQCnMFNaNlNfKQCfZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T17writeUpToNextSpecTSQCiQCh__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkZQDbMFNaNlNfKQCtZb@Base 15 ++ _D3std6format4spec__T10FormatSpecTaZQp__T8toStringTSQBy5array__T8AppenderTAyaZQoZQBoMxFNaNfKQBpZv@Base 15 ++ _D3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange6__initZ@Base 15 ++ _D3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange__T3putTaZQhMFNaNbNiNfMxAaZv@Base 15 ++ _D3std6format4spec__T10singleSpecTyaZQqFNaNfAyaZSQBvQBuQBq__T10FormatSpecTaZQp@Base 15 ++ _D3std6format5write11__moduleRefZ@Base 15 ++ _D3std6format5write12__ModuleInfoZ@Base 15 ++ _D3std6format5write__T11formatValueTDFNaNbNfAxaZvTxeTaZQBhFNaNfKQBcKxeMKxSQCuQCt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCgFNaNfKQCbKQtMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTQhTaZQCfFNaNfKQCaKQzMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTkTaZQCeFNaNfKQBzKkMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTwTaZQCeFNaNfKQBzKwMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTwTaZQCeFNaNfKQBzwMKxSQDpQDo4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAAyaTaZQCiFNaNfKQCdKxQvMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxACQCx3zip13ArchiveMemberTaZQDcFNaNfKQCxKxQBpMKxSQErQEq4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxASQCx6socket11AddressInfoTaZQDdFNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAaTaZQCgFNaNfKQCbKxQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAyaTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAyuTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxAywTaZQChFNaNfKQCcKxQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxCQCw3zip13ArchiveMemberTaZQDbFNaNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxCQCw6socket7AddressTaZQCxFNfKQCqKxQBiMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket10SocketTypeTaZQDbFNaNfKQCwKxQBoMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket12ProtocolTypeTaZQDdFNaNfKQCyKxQBqMKxSQEsQEr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxEQCw6socket13AddressFamilyTaZQDeFNaNfKQCzKxQBrMKxSQEtQEs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxSQCw6socket11AddressInfoTaZQDcFNfKQCvKxQBnMKxSQEpQEo4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxaTaZQCfFNaNfKQCaKxaMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTxhTaZQCfFNaNfKQCaKxhMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTyaTaZQCfFNaNfKQCaKyaMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTyuTaZQCfFNaNfKQCaKyuMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T15InPlaceAppenderTAyaZQwTywTaZQCfFNaNfKQCaKywMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAaTaZQBxFNaNfKQBsKQsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAxaTaZQByFNaNfKQBtKQtMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAxhTaZQByFNaNfKQBtKQtMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTAyAaTaZQBzFNaNfKQBuKQuMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCmFNaNfKQChKQBhMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTEQCn3net7isemail15EmailStatusCodeTaZQDcFNaNfKQCxKQBxMKxSQEqQEp4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTEQCn8datetime4date5MonthTaZQCtFNaNfKQCoKQBoMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPSQCo11parallelism12AbstractTaskTaZQDbFNaNfKQCwKQBwMKxSQEpQEo4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPvTaZQBxFNaNfKQBsKQsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTPxSQCpQCo4spec__T10FormatSpecTaZQpTaZQDdFNaNfKQCyQBxMKxQCbZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTQhTaZQBxFNaNfKQBsKQzMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn11concurrency3TidTaZQCqFNaNfKQClKQBlMKxSQEeQEd4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn4path__T16asNormalizedPathTSQDs5range__T5chainTSQEm3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGmQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQIjFNaNfKQIeKQHeMKxSQJxQJw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTSQCn5range__T5chainTSQDh3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFgQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGpFNaNfKQGkKQFkMKxSQIdQIc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTaTaZQBwFNaNfKQBrKaMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTaTaZQBwFNaNfKQBraMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTbTaZQBwFNaNfKQBrKbMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTbTaZQBwFNaNfKQBrbMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoThTaZQBwFNaNfKQBrKhMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTiTaZQBwFNaNfKQBrKiMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTkTaZQBwFNaNfKQBrKkMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTmTaZQBwFNaNfKQBrKmMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTwTaZQBwFNaNfKQBrKwMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTwTaZQBwFNaNfKQBrwMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxAaTaZQByFNaNfKQBtKxQtMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxEQCo8datetime4date5MonthTaZQCuFNaNfKQCpKxQBpMKxSQEjQEi4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxaTaZQBxFNaNfKQBsKxaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxaTaZQBxFNaNfKQBsxaMKxSQDjQDi4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxhTaZQBxFNaNfKQBsKxhMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxiTaZQBxFNaNfKQBsKxiMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxkTaZQBxFNaNfKQBsKxkMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxsTaZQBxFNaNfKQBsKxsMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTxtTaZQBxFNaNfKQBsKxtMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTyAaTaZQByFNaNfKQBtKyQtMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTyaTaZQBxFNaNfKQBsKyaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTAyaZQoTymTaZQBxFNaNfKQBsKymMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn5regex8internal2ir2IRTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn6logger4core8LogLevelTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTEQCn6socket12SocketOptionTaZQCuFNaNfKQCpKQBpMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTkTaZQBwFNaNfKQBrKkMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTwTaZQBwFNaNfKQBrKwMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTwTaZQBwFNaNfKQBrwMKxSQDhQDg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5array__T8AppenderTyAaZQoTyaTaZQBxFNaNfKQBsKyaMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTAxaTaZQCdFNfKQBwKQrMKxSQDoQDn4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDoQDn4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTEQCs8datetime4date5MonthTaZQCyFNfKQCrKQBmMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterThTaZQCbFNfKQBuKhMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTiTaZQCbFNfKQBuKiMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTkTaZQCbFNfKQBuKkMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTmTaZQCbFNfKQBuKmMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTsTaZQCbFNfKQBuKsMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTwTaZQCbFNfKQBuKwMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTwTaZQCbFNfKQBuwMKxSQDkQDj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxaTaZQCcFNfKQBvKxaMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxlTaZQCcFNfKQBvKxlMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTxmTaZQCcFNfKQBvKxmMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBj5stdio4File17LockingTextWriterTyaTaZQCcFNfKQBvKyaMKxSQDnQDm4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTmTaZQBjFNaNfKQBeKmMKxSQCvQCu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTxdTaZQBkFNaNfKQBfKxdMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTxhTaZQBkFNaNfKQBfKxhMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBjQBi8NoOpSinkTymTaZQBkFNaNfKQBfKymMKxSQCxQCw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTxdTaZQCmFNaNfKQChKxdMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTkTaZQCzFNaNfKQCuKkMKxSQElQEk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T11formatValueTSQBjQBi__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTykTaZQDaFNaNfKQCvKykMKxSQEnQEm4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T15InPlaceAppenderTAyaZQwTaTAxhZQCjFNaNfKQCbMxAaQuZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T15InPlaceAppenderTAyaZQwTaTkZQChFNaNfKQBzMxAakZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAaTPvZQCdFNaNfKQBvMxAaQwQvZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAxaTQeZQCeFNaNfKQBwMxAaQxQzZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAxhZQCbFNaNfKQBtMxAaQuZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTAyAaZQCcFNaNfKQBuMxAaQvZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTC14TypeInfo_ClassTkTkZQCtFNaNfKQClMxAaQBmkkZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTEQCs8datetime4date5MonthZQCwFNaNfKQCoMxAaQBpZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTPvZQCaFNaNfKQBsMxAaQtZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTQmTmZQCfFNaNfKQBxMxAaQBhQBkmZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTQmZQCdFNaNfKQBvMxAaQBfQBiZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkTQpZQCgFNaNfKQByMxAaQBixkQBnZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkTkZQCfFNaNfKQBxMxAaQBhxkkZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjTxkZQCdFNaNfKQBvMxAaQBfxkZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTQjZQCaFNaNfKQBsMxAaQBcZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTbTQlTQoTEQDa3net7isemail15EmailStatusCodeZQDnFNaNfKQDfMxAabQCqQCtQCfZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiTEQCu8datetime4date5MonthTiZQDaFNaNfKQCsMxAaiQBsiZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiTiZQCbFNaNfKQBtMxAaiiZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTiZQBzFNaNfKQBrMxAaiZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTkZQBzFNaNfKQBrMxAakZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmTmTymZQCeFNaNfKQBwMxAammymZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmTmZQCbFNaNfKQBtMxAammZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTmZQBzFNaNfKQBrMxAamZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxhTxhTxhTxhZQCjFNaNfKQCbMxAaxhxhxhxhZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxhTxhTxhZQCgFNaNfKQByMxAaxhxhxhZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsTQmTxhZQCgFNaNfKQByMxAaxsQBkxhZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsTxEQCw8datetime4date5MonthTxhZQDdFNaNfKQCvMxAaxsxQBvxhZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxsZQCaFNaNfKQBsMxAaxsZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTAyaZQoTaTxtTQmTxtTxtZQCjFNaNfKQCbMxAaxtQBnxtxtZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5array__T8AppenderTyAaZQoTaTkZQBzFNaNfKQBrMxAakZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAxaZQCgFNfQBvMxAaQrZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTQeTiTQjZQCoFNfKQCeMxAaQBaQBdiQBhZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTQjTxlZQCrFNfKQChMxAaQBdmQBhQBkxlZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTQjTxmZQCrFNfKQChMxAaQBdmQBhQBkxmZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTmTQgTxmZQCoFNfKQCeMxAaQBamQBexmZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTxmTQhTQkTmZQCrFNfKQChMxAaQBdxmQBiQBlmZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaTxmTQhTxmZQCpFNfKQCfMxAaQBbxmQBgxmZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTAyaZQCgFNfKQBwMxAaQsZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTkZQCeFNfKQBuMxAakZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTmTAyaTmTQgTmTQlTQoZQCvFNfKQClMxAamQBgmQBkmQBoQBrZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBm5stdio4File17LockingTextWriterTaTsTEQCz8datetime4date5MonthThThThThTxlZQDoFNfKQDeMxAasQBzhhhhxlZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmTmTymZQBrFNaNfQBiMxAammymZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmTmZQBoFNaNfQBfMxAammZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTmZQBmFNaNfQBdMxAamZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTxdZQBnFNaNfQBeMxAaxdZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBmQBl8NoOpSinkTaTxhTxhTxhZQBtFNaNfQBkMxAaxhxhxhZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBmQBl__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTaTxdZQCpFNaNfKQChMxAaxdZk@Base 15 ++ _D3std6format5write__T14formattedWriteTSQBmQBl__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaTykTykTkTkTkZQDmFNaNfKQDeMxAaykykkkkZk@Base 15 ++ _D3std6format5write__T14formattedWriteVAyaa13_54253032642530326425303264TSQCu5array__T8AppenderTQCfZQoTxhTxhTxhZQDmFNaNfKQBwxhxhxhZk@Base 15 ++ _D3std6format5write__T14formattedWriteVAyaa15_20253032643a253032643a25303264TSQCy5array__T8AppenderTQCjZQoTxhTxhTxhZQDqFNaNfKQBwxhxhxhZk@Base 15 ++ _D3std6format5write__T14formattedWriteVAyaa15_54253032643a253032643a25303264TSQCy5array__T8AppenderTQCjZQoTxhTxhTxhZQDqFNaNfKQBwxhxhxhZk@Base 15 ++ _D3std6format8NoOpSink6__initZ@Base 15 ++ _D3std6format8NoOpSink__T3putTAaZQiMFNaNbNiNfMxAaZv@Base 15 ++ _D3std6format8NoOpSink__T3putTAxaZQjMFNaNbNiNfMxAaZv@Base 15 ++ _D3std6format8NoOpSink__T3putTAyaZQjMFNaNbNiNfMxAyaZv@Base 15 ++ _D3std6format8NoOpSink__T3putTaZQhMFNaNbNiNfMxaZv@Base 15 ++ _D3std6format8NoOpSink__T3putTwZQhMFNaNbNiNfMxwZv@Base 15 ++ _D3std6format8internal4read11__moduleRefZ@Base 15 ++ _D3std6format8internal4read12__ModuleInfoZ@Base 15 ++ _D3std6format8internal5write10baseOfSpecFNaNfIaZk@Base 15 ++ _D3std6format8internal5write11__moduleRefZ@Base 15 ++ _D3std6format8internal5write12__ModuleInfoZ@Base 15 ++ _D3std6format8internal5write12hasPreviewInyb@Base 15 ++ _D3std6format8internal5write__T10formatCharTSQBr5array__T15InPlaceAppenderTAyaZQwZQBzFNaNfKQBvIwIaZv@Base 15 ++ _D3std6format8internal5write__T10formatCharTSQBr5array__T8AppenderTAyaZQoZQBrFNaNfKQBnIwIaZv@Base 15 ++ _D3std6format8internal5write__T10formatCharTSQBr5array__T8AppenderTyAaZQoZQBrFNaNfKQBnIwIaZv@Base 15 ++ _D3std6format8internal5write__T10formatCharTSQBr5stdio4File17LockingTextWriterZQBwFNfKQBqIwIaZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxAyaTaZQCiFNaNfKQCdKQvMKxSQEeQEd4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxCQDg3zip13ArchiveMemberTaZQDcFNaNfKQCxKQBpMKxSQEzQEy4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxSQDg6socket11AddressInfoTaZQDdFNfKQCwKQBoMKxSQEyQEx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxaTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAyuTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTAywTaZQCgFNaNfKQCbKQtMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T15InPlaceAppenderTAyaZQwTQhTaZQCfFNaNfKQCaKQzMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAxaTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAxhTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTAyAaTaZQBzFNaNfKQBuKQuMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTQhTaZQBxFNaNfKQBsKQzMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTSQCw4path__T16asNormalizedPathTSQEb5range__T5chainTSQEv3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGvQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQIjFNaNfKQIeKQHeMKxSQKgQKf4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTAyaZQoTSQCw5range__T5chainTSQDq3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFpQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGpFNaNfKQGkKQFkMKxSQImQIl4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5array__T8AppenderTyAaZQoTAyaTaZQByFNaNfKQBtKQtMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5stdio4File17LockingTextWriterTAxaTaZQCdFNfKQBwKQrMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T11formatRangeTSQBs5stdio4File17LockingTextWriterTAyaTaZQCdFNfKQBwKQrMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12formatObjectTSQBt5array__T15InPlaceAppenderTAyaZQwTxCQDg6socket7AddressTaZQCyFNfKQCqKxQBiMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12formatObjectTSQBt5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCnFNaNbNfKQCjKQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12formatObjectTSQBt5array__T8AppenderTAyaZQoTSQCx11concurrency3TidTaZQCrFNaNfKQClKQBlMKxSQEoQEn4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAaTAyaTQeTQhTaZQBsFNaNfKQBmQBbQBbQBeQBhMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAaTQdTQgTQjTaZQBrFNaNfKQBlQBaQBdQBgQBjMKxSQDwQDv4spec__T10FormatSpecTaZQpEQFcQFbQExQEr13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTAaTQdTQgTaZQBsFNaNfKQBmQBbQBaQBdQBgMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTAaTQdTQkTaZQBsFNaNfKQBmQBbQBaQBdQBkMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTQeTQhTQkTaZQBsFNaNfKQBmQBbQBeQBhQBkMKxSQDxQDw4spec__T10FormatSpecTaZQpEQFdQFcQEyQEs13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTDFNaNbNfAxaZvTAyaTQeTQhTaZQBpFNaNfKQBjQyQBaQBdMKxSQDqQDp4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQgTQjTaZQCpFNaNfKQCjQBaQBdQBgQBjMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQnTQqTaZQCpFNaNfKQCjQBaQBdQBnQBqMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTQdTQnTaZQCmFNaNfKQCgQxQzQBiMKxSQEmQEl4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAaTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAuTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAwTaZQCgFNaNfKQCaQrMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAxaTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAyuTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTAywTaZQChFNaNfKQCbQsMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAaTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAuTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAwTaZQCmFNaNfKQCgQBeQBhQxMKxSQEnQEm4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAxaTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAyuTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTAywTaZQCnFNaNfKQChQBfQBiQyMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAaTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAuTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAwTaZQCpFNaNfKQCjQBhQBkQBnQBaMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAxaTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAyuTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTAywTaZQCqFNaNfKQCkQBiQBlQBoQBbMKxSQEvQEu4spec__T10FormatSpecTaZQpEQGbQGaQFwQFq13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTQqTaZQCpFNaNfKQCjQBhQBkQBnQBqMKxSQEuQEt4spec__T10FormatSpecTaZQpEQGaQFzQFvQFp13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTQkTQnTaZQCmFNaNfKQCgQBeQBhQBkMKxSQEoQEn4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T15InPlaceAppenderTAyaZQwTQhTaZQCgFNaNfKQCaQyMKxSQEbQEa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQgTQjTaZQChFNaNfKQCbQBaQBdQBgQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQnTQqTaZQChFNaNfKQCbQBaQBdQBnQBqMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTQdTQnTaZQCeFNaNfKQByQxQzQBiMKxSQEeQEd4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAaTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAwTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTAxaTaZQBzFNaNfKQBtQsMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAaTaZQCeFNaNfKQByQBeQBhQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAwTaZQCeFNaNfKQByQBeQBhQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTAxaTaZQCfFNaNfKQBzQBfQBiQyMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAaTaZQChFNaNfKQCbQBhQBkQBnQBaMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAwTaZQChFNaNfKQCbQBhQBkQBnQBaMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTAxaTaZQCiFNaNfKQCcQBiQBlQBoQBbMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTQqTaZQChFNaNfKQCbQBhQBkQBnQBqMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTQkTQnTaZQCeFNaNfKQByQBeQBhQBkMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTAyaZQoTQhTaZQByFNaNfKQBsQyMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTAyaTQeTaZQCiFNaNfKQCcQBbQBeQBbQBeMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTAyaTaZQCfFNaNfKQBzQyQBaQxMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTQdTQgTQjTaZQChFNaNfKQCbQBaQBdQBgQBjMKxSQEmQEl4spec__T10FormatSpecTaZQpEQFsQFrQFnQFh13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAaTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAwTaZQByFNaNfKQBsQrMKxSQDtQDs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTAaTaZQCfFNaNfKQBzQyQBaQwMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTAwTaZQCfFNaNfKQBzQyQBaQwMKxSQEfQEe4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTAaTaZQCiFNaNfKQCcQBbQBeQBhQBaMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTAwTaZQCiFNaNfKQCcQBbQBeQBhQBaMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTQkTaZQCiFNaNfKQCcQBbQBeQBhQBkMKxSQEnQEm4spec__T10FormatSpecTaZQpEQFtQFsQFoQFi13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTQeTQhTaZQCfFNaNfKQBzQyQBaQBdMKxSQEgQEf4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5array__T8AppenderTyAaZQoTAyaTaZQBzFNaNfKQBtQsMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTAyaTQeTaZQCnFNfKQCfQzQBbQyQBaMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTAyaTaZQCkFNfKQCcQwQyQuMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTQdTQgTQjTaZQCmFNfKQCeQyQBaQBdQBgMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAaTaZQCdFNfKQBvQpMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAwTaZQCdFNfKQBvQpMKxSQDwQDv4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAxaTaZQCeFNfKQBwQqMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAaTaZQCkFNfKQCcQwQyQtMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAwTaZQCkFNfKQCcQwQyQtMKxSQEhQEg4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTAxaTaZQClFNfKQCdQxQzQuMKxSQEiQEh4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAaTaZQCnFNfKQCfQzQBbQBeQxMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAwTaZQCnFNfKQCfQzQBbQBeQxMKxSQEoQEn4spec__T10FormatSpecTaZQpEQFuQFtQFpQFj13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTAxaTaZQCoFNfKQCgQBaQBdQBgQzMKxSQEqQEp4spec__T10FormatSpecTaZQpEQFwQFvQFrQFl13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTQkTaZQCnFNfKQCfQzQBbQBeQBhMKxSQEpQEo4spec__T10FormatSpecTaZQpEQFvQFuQFqQFk13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTQeTQhTaZQCkFNfKQCcQwQyQBaMKxSQEiQEh4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBt5stdio4File17LockingTextWriterTAyaTaZQCeFNfKQBwQqMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTAyaTQeTQhTaZQBvFNaNfKQBpQBbQBbQBeQBhMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTAyaTQeTaZQBvFNaNfKQBpQBbQBeQBbQBeMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTAyaTaZQBsFNaNfKQBmQyQBaQxMKxSQDsQDr4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAaTQdTQgTQjTaZQBuFNaNfKQBoQBaQBdQBgQBjMKxSQDzQDy4spec__T10FormatSpecTaZQpEQFfQFeQFaQEu13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTAaTQdTQgTaZQBvFNaNfKQBpQBbQBaQBdQBgMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTAaTQdTQkTaZQBvFNaNfKQBpQBbQBaQBdQBkMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTQeTQhTQkTaZQBvFNaNfKQBpQBbQBeQBhQBkMKxSQEaQDz4spec__T10FormatSpecTaZQpEQFgQFfQFbQEv13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs8NoOpSinkTAyaTQeTQhTaZQBsFNaNfKQBmQyQBaQBdMKxSQDtQDs4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQeTQhTQkTaZQCxFNaNfKQCrQBbQBeQBhQBkMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQeTQhTaZQCuFNaNfKQCoQyQBaQBdMKxSQEvQEu4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQtTQwTQkTaZQCxFNaNfKQCrQBbQBtQBwQBkMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTAyaTQtTQwTQzTaZQCxFNaNfKQCrQBbQBtQBwQBzMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpTAyaTQeTQhTaZQCxFNaNfKQCrQBqQBbQBeQBhMKxSQFcQFb4spec__T10FormatSpecTaZQpEQGiQGhQGdQFx13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTQpTQsTQvTQyTaZQCwFNaNfKQCqQBpQBsQBvQByMKxSQFbQFa4spec__T10FormatSpecTaZQpEQGhQGgQGcQFw13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTAyaTQeTaZQDlFNaNfKQDfQBvQByQBbQBeMKxSQFqQFp4spec__T10FormatSpecTaZQpEQGwQGvQGrQGl13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTAyaTaZQDiFNaNfKQDcQBsQBvQyMKxSQFjQFi4spec__T10FormatSpecTaZQpbZv@Base 15 ++ _D3std6format8internal5write__T12writeAlignedTSQBtQBs__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTQuTQxTQBaTQBeTaZQDmFNaNfKQDgQBwQBzQCcQCfMKxSQFrQFq4spec__T10FormatSpecTaZQpEQGxQGwQGsQGm13PrecisionTypeZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTQhTaZQChFNaNfKQCaQyMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTwTaZQCgFNaNfKQBzwMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxCQDh3zip13ArchiveMemberTaZQDdFNaNfKQCwKxQBoMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxCQDh6socket7AddressTaZQCzFNfKQCqKxQBiMKxSQEvQEu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket10SocketTypeTaZQDdFNaNfKQCwKxQBoMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket12ProtocolTypeTaZQDfFNaNfKQCyKxQBqMKxSQFdQFc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxEQDh6socket13AddressFamilyTaZQDgFNaNfKQCzKxQBrMKxSQFeQFd4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxSQDh6socket11AddressInfoTaZQDeFNfKQCvKxQBnMKxSQFaQEz4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTxhTaZQChFNaNfKQCaKxhMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T15InPlaceAppenderTAyaZQwTywTaZQChFNaNfKQCaywMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTQhTaZQBzFNaNfKQBsQyMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTaTaZQByFNaNfKQBraMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTwTaZQByFNaNfKQBrwMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTxaTaZQBzFNaNfKQBsxaMKxSQDuQDt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTAyaZQoTxhTaZQBzFNaNfKQBsKxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5array__T8AppenderTyAaZQoTwTaZQByFNaNfKQBrwMKxSQDsQDr4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T13formatElementTSQBu5stdio4File17LockingTextWriterTwTaZQCdFNfKQBuwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeMKxSQDfQDe4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxAyaTaZQCmFNaNfKQCdQuMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxCQDk3zip13ArchiveMemberTaZQDgFNaNfKQCxQBoMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxSQDk6socket11AddressInfoTaZQDhFNfKQCwQBnMKxSQFbQFa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxaTaZQCkFNaNfKQCbMxAaMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAxhTaZQCkFNaNfKQCbQsMKxSQEfQEe4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAyuTaZQCkFNaNfKQCbMxAyuMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTAywTaZQCkFNaNfKQCbMxAywMKxSQEiQEh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTQhTaZQCjFNaNfKQCaMxAyaMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTaTaZQCiFNaNfKQBzxaMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwThTaZQCiFNaNfKQBzxhMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTiTaZQCiFNaNfKQBzxiMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTkTaZQCiFNaNfKQBzxkMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTtTaZQCiFNaNfKQBzxtMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTuTaZQCiFNaNfKQBzxuMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTwTaZQCiFNaNfKQBzxwMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxCQDj3zip13ArchiveMemberTaZQDfFNaNfKQCwxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxCQDj6socket7AddressTaZQDbFNfKQCqxQBhMKxSQEwQEv4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket10SocketTypeTaZQDfFNaNfKQCwxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket12ProtocolTypeTaZQDhFNaNfKQCyxQBpMKxSQFeQFd4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxEQDj6socket13AddressFamilyTaZQDiFNaNfKQCzxQBqMKxSQFfQFe4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T15InPlaceAppenderTAyaZQwTxSQDj6socket11AddressInfoTaZQDgFNfKQCvKxQBnMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAaTaZQCbFNaNfKQBsMxAaMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAxaTaZQCcFNaNfKQBtMxAaMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAxhTaZQCcFNaNfKQBtQsMKxSQDxQDw4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTAyAaTaZQCdFNaNfKQBuQtMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTC14TypeInfo_ClassTaZQCqFNaNfKQChQBgMKxSQEmQEl4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTEQDa3net7isemail15EmailStatusCodeTaZQDgFNaNfKQCxQBwMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTEQDa8datetime4date5MonthTaZQCxFNaNfKQCoQBnMKxSQEtQEs4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPSQDb11parallelism12AbstractTaskTaZQDfFNaNfKQCwMxPSQEyQBxQBnMKxSQFlQFk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPvTaZQCbFNaNfKQBsMxPvMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTPxSQDcQDb4spec__T10FormatSpecTaZQpTaZQDhFNaNfKQCyMxPQByMKxQCeZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTQhTaZQCbFNaNfKQBsMxAyaMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa11concurrency3TidTaZQCuFNaNfKQClKQBlMKxSQErQEq4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa4path__T16asNormalizedPathTSQEf5range__T5chainTSQEz3utf__T10byCodeUnitTQDeZQrFQDlZ14ByCodeUnitImplTSQGzQCu__T10OnlyResultTaZQpTQDcZQDnFQDkQBnQDqZ6ResultZQFpFNkMQFdZQtTaZQInFNaNfKQIeKQHeMKxSQKkQKj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTSQDa5range__T5chainTSQDu3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQFtQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQGtFNaNfKQGkKQFkMKxSQIqQIp4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTaTaZQCaFNaNfKQBrxaMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTbTaZQCaFNaNfKQBrxbMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTgTaZQCaFNaNfKQBrxgMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoThTaZQCaFNaNfKQBrxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTiTaZQCaFNaNfKQBrxiMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTkTaZQCaFNaNfKQBrxkMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTmTaZQCaFNaNfKQBrxmMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTsTaZQCaFNaNfKQBrxsMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTtTaZQCaFNaNfKQBrxtMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTwTaZQCaFNaNfKQBrxwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTAyaZQoTxEQDb8datetime4date5MonthTaZQCyFNaNfKQCpxQBoMKxSQEvQEu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTAyaTaZQCcFNaNfKQBtMxAyaMKxSQEaQDz4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa5regexQCy2ir2IRTaZQCsFNaNfKQCjQBiMKxSQEoQEn4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa6logger4core8LogLevelTaZQCyFNaNfKQCpQBoMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTEQDa6socket12SocketOptionTaZQCyFNaNfKQCpQBoMKxSQEuQEt4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTaTaZQCaFNaNfKQBrxaMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoThTaZQCaFNaNfKQBrxhMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTiTaZQCaFNaNfKQBrxiMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTkTaZQCaFNaNfKQBrxkMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5array__T8AppenderTyAaZQoTwTaZQCaFNaNfKQBrxwMKxSQDvQDu4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTAxaTaZQChFNfKQBwMxAaMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTAyaTaZQChFNfKQBwMxAyaMKxSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTEQDf8datetime4date5MonthTaZQDcFNfKQCrQBlMKxSQEwQEv4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTaTaZQCfFNfKQBuxaMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterThTaZQCfFNfKQBuxhMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTiTaZQCfFNfKQBuxiMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTkTaZQCfFNfKQBuxkMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTlTaZQCfFNfKQBuxlMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTmTaZQCfFNfKQBuxmMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTsTaZQCfFNfKQBuxsMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBw5stdio4File17LockingTextWriterTwTaZQCfFNfKQBuxwMKxSQDyQDx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkTdTaZQBnFNaNfKQBexdMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkThTaZQBnFNaNfKQBexhMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBwQBv8NoOpSinkTmTaZQBnFNaNfKQBexmMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBwQBv__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdMKxSQEkQEj4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T15formatValueImplTSQBwQBv__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTkTaZQDdFNaNfKQCuxkMKxSQEyQEx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T19needToSwapEndianessTaZQyFNaNbNiNfMKxSQCqQCp4spec__T10FormatSpecTaZQpZb@Base 15 ++ _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T15InPlaceAppenderTAyaZQwTaZQClFNaNfKQBxmIbMKxSQEhQEg4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T8AppenderTAyaZQoTaZQCdFNaNfKQBpmIbMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T20formatValueImplUlongTSQCb5array__T8AppenderTyAaZQoTaZQCdFNaNfKQBpmIbMKxSQDzQDy4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T20formatValueImplUlongTSQCb5stdio4File17LockingTextWriterTaZQCiFNfKQBsmIbMKxSQEcQEb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T20formatValueImplUlongTSQCbQCa8NoOpSinkTaZQBqFNaNfKQBcmIbMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T20formatValueImplUlongTSQCbQCa__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4SinkTaZQDgFNaNfKQCsmIbMKxSQFcQFb4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T22enforceValidFormatSpecTC14TypeInfo_ClassTaZQBtFNaNfMKxSQDiQDh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd11concurrency3TidTaZQBxFNaNfMKxSQDmQDl4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd4path__T16asNormalizedPathTSQDi5range__T5chainTSQEc3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQGbQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtTaZQHpFNaNbNiNfMKxSQJiQJh4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T22enforceValidFormatSpecTSQCd5range__T5chainTSQCx3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEwQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultTaZQFwFNaNbNiNfMKxSQHpQHo4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T22enforceValidFormatSpecTxCQCe3zip13ArchiveMemberTaZQCaFNaNfMKxSQDpQDo4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T22enforceValidFormatSpecTxCQCe6socket7AddressTaZQBwFNaNfMKxSQDlQDk4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T22enforceValidFormatSpecTxSQCe6socket11AddressInfoTaZQCbFNaNfMKxSQDqQDp4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal5write__T5roundTG1077aZQoFNaNbNiNfKQtmmEQCiQChQCdQBx13RoundingClassbaZb@Base 15 ++ _D3std6format8internal5write__T5roundTG1078aZQoFNaNbNiNfKQtmmEQCiQChQCdQBx13RoundingClassbaZb@Base 15 ++ _D3std6format8internal5write__T5roundTG15aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 ++ _D3std6format8internal5write__T5roundTG16448aZQpFNaNbNiNfKQummEQCjQCiQCeQBy13RoundingClassbaZb@Base 15 ++ _D3std6format8internal5write__T5roundTG16449aZQpFNaNbNiNfKQummEQCjQCiQCeQBy13RoundingClassbaZb@Base 15 ++ _D3std6format8internal5write__T5roundTG18aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 ++ _D3std6format8internal5write__T5roundTG64aZQmFNaNbNiNfKQrmmEQCgQCfQCbQBv13RoundingClassbaZb@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAaTPvZQCvFNaNfkQpQoZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxaTQeZQCwFNaNfkQqQsZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxaZQCtFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAxhZQCtFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTAyAaZQCuFNaNfkQoZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQDlFNaNfkQBfkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTEQDt8datetime4date5MonthZQDoFNaNfkQBiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTPvZQCsFNaNfkQmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClTiTQCrZQDdFNaNfkQDeQDhiQDlZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClTmZQCzFNaNfkQDaQDdmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTQClZQCxFNaNfkQCyQDbZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTQCrTxlZQDgFNaNfkQDhmQDlQDoxlZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTQCrTxmZQDgFNaNfkQDhmQDlQDoxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTmTQCnTxmZQDcFNaNfkQDdmQDhxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkTQCoZQDaFNaNfkQDbxkQDgZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkTkZQCyFNaNfkQCzxkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxkZQCwFNaNfkQCxxkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxmTQCoTQCsTmZQDgFNaNfkQDhxmQDmQDpmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChTxmTQCoTxmZQDdFNaNfkQDexmQDjxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTQChZQCtFNaNfkQCuZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTbTQCjTQCnTEQEd3net7isemail15EmailStatusCodeZQEhFNaNfkbQEjQEmQByZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiTEQDv8datetime4date5MonthTiZQDsFNaNfkiQBliZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiTiZQCtFNaNfkiiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTiZQCrFNaNfkiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTkZQCrFNaNfkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTQCjTmTQCpTmTQCvTQCzZQDlFNaNfkmQDnmQDrmQDvQDyZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTmTymZQCwFNaNfkmmymZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmTmZQCtFNaNfkmmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTmZQCrFNaNfkmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTsTEQDv8datetime4date5MonthThThThThTxlZQEbFNaNfksQBuhhhhxlZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxdZQCsFNaNfkxdZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxhTxhTxhTxhZQDbFNaNfkxhxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxhTxhTxhZQCyFNaNfkxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsTQCkTxhZQCzFNaNfkxsQDcxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsTxEQDx8datetime4date5MonthTxhZQDvFNaNfkxsxQBoxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxsZQCsFNaNfkxsZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTxtTQCkTxtTxtZQDcFNaNfkxtQDfxtxtZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa13_696e7465676572207769647468SQCt6traits10isIntegralTiTykTykTkTkTkZQDbFNaNfkykykkkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAaTPvZQDdFNaNfkQpQoZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxaTQeZQDeFNaNfkQqQsZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxaZQDbFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAxhZQDbFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTAyAaZQDcFNaNfkQoZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQDtFNaNfkQBfkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTEQEb8datetime4date5MonthZQDwFNaNfkQBiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTPvZQDaFNaNfkQmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtTiTQCzZQDlFNaNfkQDmQDpiQDtZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtTmZQDhFNaNfkQDiQDlmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTQCtZQDfFNaNfkQDgQDjZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTQCzTxlZQDoFNaNfkQDpmQDtQDwxlZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTQCzTxmZQDoFNaNfkQDpmQDtQDwxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTmTQCvTxmZQDkFNaNfkQDlmQDpxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkTQCwZQDiFNaNfkQDjxkQDoZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkTkZQDgFNaNfkQDhxkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxkZQDeFNaNfkQDfxkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxmTQCwTQDaTmZQDoFNaNfkQDpxmQDuQDxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpTxmTQCwTxmZQDlFNaNfkQDmxmQDrxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTQCpZQDbFNaNfkQDcZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTbTQCrTQCvTEQEl3net7isemail15EmailStatusCodeZQEpFNaNfkbQErQEuQByZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiTEQEd8datetime4date5MonthTiZQEaFNaNfkiQBliZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiTiZQDbFNaNfkiiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTiZQCzFNaNfkiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTkZQCzFNaNfkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTQCrTmTQCxTmTQDdTQDhZQDtFNaNfkmQDvmQDzmQEdQEgZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTmTymZQDeFNaNfkmmymZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmTmZQDbFNaNfkmmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTmZQCzFNaNfkmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTsTEQEd8datetime4date5MonthThThThThTxlZQEjFNaNfksQBuhhhhxlZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxdZQDaFNaNfkxdZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxhTxhTxhTxhZQDjFNaNfkxhxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxhTxhTxhZQDgFNaNfkxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsTQCsTxhZQDhFNaNfkxsQDkxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsTxEQEf8datetime4date5MonthTxhZQEdFNaNfkxsxQBoxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxsZQDaFNaNfkxsZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTxtTQCsTxtTxtZQDkFNaNfkxtQDnxtxtZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa17_696e746567657220707265636973696f6eSQDb6traits10isIntegralTiTykTykTkTkTkZQDjFNaNfkykykkkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAaTPvZQDhFNaNfkQpQoZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxaTQeZQDiFNaNfkQqQsZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxaZQDfFNaNfkQnZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAxhZQDfFNaNfkQnZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTAyAaZQDgFNaNfkQoZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTC14TypeInfo_ClassTkTkZQDxFNaNfkQBfkkZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTEQEf8datetime4date5MonthZQEaFNaNfkQBiZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTPvZQDeFNaNfkQmZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxTiTQDdZQDpFNaNfkQDqQDtiQDxZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxTmZQDlFNaNfkQDmQDpmZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTQCxZQDjFNaNfkQDkQDnZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTQDdTxlZQDsFNaNfkQDtmQDxQEaxlZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTQDdTxmZQDsFNaNfkQDtmQDxQEaxmZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTmTQCzTxmZQDoFNaNfkQDpmQDtxmZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkTQDaZQDmFNaNfkQDnxkQDsZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkTkZQDkFNaNfkQDlxkkZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxkZQDiFNaNfkQDjxkZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxmTQDaTQDeTmZQDsFNaNfkQDtxmQDyQEbmZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtTxmTQDaTxmZQDpFNaNfkQDqxmQDvxmZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTQCtZQDfFNaNfkQDgZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTbTQCvTQCzTEQEp3net7isemail15EmailStatusCodeZQEtFNaNfkbQEvQEyQByZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiTEQEh8datetime4date5MonthTiZQEeFNaNfkiQBliZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiTiZQDfFNaNfkiiZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTiZQDdFNaNfkiZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTkZQDdFNaNfkkZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTQCvTmTQDbTmTQDhTQDlZQDxFNaNfkmQDzmQEdmQEhQEkZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTmTymZQDiFNaNfkmmymZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmTmZQDfFNaNfkmmZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTmZQDdFNaNfkmZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTsTEQEh8datetime4date5MonthThThThThTxlZQEnFNaNfksQBuhhhhxlZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxdZQDeFNaNfkxdZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxhTxhTxhTxhZQDnFNaNfkxhxhxhxhZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxhTxhTxhZQDkFNaNfkxhxhxhZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsTQCwTxhZQDlFNaNfkxsQDoxhZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsTxEQEj8datetime4date5MonthTxhZQEhFNaNfkxsxQBoxhZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxsZQDeFNaNfkxsZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTxtTQCwTxtTxtZQDoFNaNfkxtQDrxtxtZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa19_736570617261746f7220636861726163746572SQDf6traits10isSomeCharTwTykTykTkTkTkZQDnFNaNfkykykkkkZw@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAaTPvZQDlFNaNfkQpQoZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxaTQeZQDmFNaNfkQqQsZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxaZQDjFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAxhZQDjFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTAyAaZQDkFNaNfkQoZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTC14TypeInfo_ClassTkTkZQEbFNaNfkQBfkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTEQEj8datetime4date5MonthZQEeFNaNfkQBiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTPvZQDiFNaNfkQmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbTiTQDhZQDtFNaNfkQDuQDxiQEbZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbTmZQDpFNaNfkQDqQDtmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTQDbZQDnFNaNfkQDoQDrZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTQDhTxlZQDwFNaNfkQDxmQEbQEexlZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTQDhTxmZQDwFNaNfkQDxmQEbQEexmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTmTQDdTxmZQDsFNaNfkQDtmQDxxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkTQDeZQDqFNaNfkQDrxkQDwZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkTkZQDoFNaNfkQDpxkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxkZQDmFNaNfkQDnxkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxmTQDeTQDiTmZQDwFNaNfkQDxxmQEcQEfmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxTxmTQDeTxmZQDtFNaNfkQDuxmQDzxmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTQCxZQDjFNaNfkQDkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTbTQCzTQDdTEQEt3net7isemail15EmailStatusCodeZQExFNaNfkbQEzQFcQByZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiTEQEl8datetime4date5MonthTiZQEiFNaNfkiQBliZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiTiZQDjFNaNfkiiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTiZQDhFNaNfkiZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTkZQDhFNaNfkkZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTQCzTmTQDfTmTQDlTQDpZQEbFNaNfkmQEdmQEhmQElQEoZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTmTymZQDmFNaNfkmmymZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmTmZQDjFNaNfkmmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTmZQDhFNaNfkmZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTsTEQEl8datetime4date5MonthThThThThTxlZQErFNaNfksQBuhhhhxlZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxdZQDiFNaNfkxdZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxhTxhTxhTxhZQDrFNaNfkxhxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxhTxhTxhZQDoFNaNfkxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsTQDaTxhZQDpFNaNfkxsQDsxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsTxEQEn8datetime4date5MonthTxhZQElFNaNfkxsxQBoxhZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxsZQDiFNaNfkxsZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTxtTQDaTxtTxtZQDsFNaNfkxtQDvxtxtZi@Base 15 ++ _D3std6format8internal5write__T6getNthVAyaa21_736570617261746f72206469676974207769647468SQDj6traits10isIntegralTiTykTykTkTkTkZQDrFNaNfkykykkkkZi@Base 15 ++ _D3std6format8internal5write__T8getWidthTAaZQnFNaNfQkZl@Base 15 ++ _D3std6format8internal5write__T8getWidthTAuZQnFNaNfQkZl@Base 15 ++ _D3std6format8internal5write__T8getWidthTAwZQnFNaNbNiNfQoZl@Base 15 ++ _D3std6format8internal5write__T8getWidthTAxaZQoFNaNfQlZl@Base 15 ++ _D3std6format8internal5write__T8getWidthTAyaZQoFNaNfQlZl@Base 15 ++ _D3std6format8internal5write__T8getWidthTAyuZQoFNaNfQlZl@Base 15 ++ _D3std6format8internal5write__T8getWidthTAywZQoFNaNbNiNfQpZl@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAaTPvZQBzFNaNfkQpQoZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxaTQeZQCaFNaNfkQqQsZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxaZQBxFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAxhZQBxFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TAyAaZQByFNaNfkQoZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TC14TypeInfo_ClassTkTkZQCpFNaNfkQBfkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TEQCx8datetime4date5MonthZQCsFNaNfkQBiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TPvZQBwFNaNfkQmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmTiTQBsZQChFNaNfkQCfQCiiQCmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmTmZQCdFNaNfkQCbQCemZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTQBmZQCbFNaNfkQBzQCcZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTQBsTxlZQCkFNaNfkQCimQCmQCpxlZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTQBsTxmZQCkFNaNfkQCimQCmQCpxmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTmTQBoTxmZQCgFNaNfkQCemQCixmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkTQBpZQCeFNaNfkQCcxkQChZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkTkZQCcFNaNfkQCaxkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxkZQCaFNaNfkQByxkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxmTQBpTQBtTmZQCkFNaNfkQCixmQCnQCqmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiTxmTQBpTxmZQChFNaNfkQCfxmQCkxmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TQBiZQBxFNaNfkQBvZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TbTQBkTQBoTEQDh3net7isemail15EmailStatusCodeZQDlFNaNfkbQDkQDnQByZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiTEQCz8datetime4date5MonthTiZQCwFNaNfkiQBliZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiTiZQBxFNaNfkiiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TiZQBvFNaNfkiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TkZQBvFNaNfkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTQBkTmTQBqTmTQBwTQCaZQCpFNaNfkmQComQCsmQCwQCzZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTmTymZQCaFNaNfkmmymZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmTmZQBxFNaNfkmmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TmZQBvFNaNfkmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TsTEQCz8datetime4date5MonthThThThThTxlZQDfFNaNfksQBuhhhhxlZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxdZQBwFNaNfkxdZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxhTxhTxhTxhZQCfFNaNfkxhxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxhTxhTxhZQCcFNaNfkxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsTQBlTxhZQCdFNaNfkxsQCdxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsTxEQDb8datetime4date5MonthTxhZQCzFNaNfkxsxQBoxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxsZQBwFNaNfkxsZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TxtTQBlTxtTxtZQCgFNaNfkxtQCgxtxtZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa13_696e7465676572207769647468TykTykTkTkTkZQCfFNaNfkykykkkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAaTPvZQChFNaNfkQpQoZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxaTQeZQCiFNaNfkQqQsZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxaZQCfFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAxhZQCfFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTAyAaZQCgFNaNfkQoZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTC14TypeInfo_ClassTkTkZQCxFNaNfkQBfkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTEQDf8datetime4date5MonthZQDaFNaNfkQBiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTPvZQCeFNaNfkQmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuTiTQCaZQCpFNaNfkQCnQCqiQCuZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuTmZQClFNaNfkQCjQCmmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTQBuZQCjFNaNfkQChQCkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTQCaTxlZQCsFNaNfkQCqmQCuQCxxlZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTQCaTxmZQCsFNaNfkQCqmQCuQCxxmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTmTQBwTxmZQCoFNaNfkQCmmQCqxmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkTQBxZQCmFNaNfkQCkxkQCpZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkTkZQCkFNaNfkQCixkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxkZQCiFNaNfkQCgxkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxmTQBxTQCbTmZQCsFNaNfkQCqxmQCvQCymZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqTxmTQBxTxmZQCpFNaNfkQCnxmQCsxmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTQBqZQCfFNaNfkQCdZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTbTQBsTQBwTEQDp3net7isemail15EmailStatusCodeZQDtFNaNfkbQDsQDvQByZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiTEQDh8datetime4date5MonthTiZQDeFNaNfkiQBliZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiTiZQCfFNaNfkiiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTiZQCdFNaNfkiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTkZQCdFNaNfkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTQBsTmTQByTmTQCeTQCiZQCxFNaNfkmQCwmQDamQDeQDhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTmTymZQCiFNaNfkmmymZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmTmZQCfFNaNfkmmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTmZQCdFNaNfkmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTsTEQDh8datetime4date5MonthThThThThTxlZQDnFNaNfksQBuhhhhxlZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxdZQCeFNaNfkxdZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxhTxhTxhTxhZQCnFNaNfkxhxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxhTxhTxhZQCkFNaNfkxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsTQBtTxhZQClFNaNfkxsQClxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsTxEQDj8datetime4date5MonthTxhZQDhFNaNfkxsxQBoxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxsZQCeFNaNfkxsZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTxtTQBtTxtTxtZQCoFNaNfkxtQCoxtxtZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa17_696e746567657220707265636973696f6eTykTykTkTkTkZQCnFNaNfkykykkkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAaTPvZQCpFNaNfkQpQoZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxaTQeZQCqFNaNfkQqQsZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxaZQCnFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAxhZQCnFNaNfkQnZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TAyAaZQCoFNaNfkQoZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TC14TypeInfo_ClassTkTkZQDfFNaNfkQBfkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TEQDn8datetime4date5MonthZQDiFNaNfkQBiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TPvZQCmFNaNfkQmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcTiTQCiZQCxFNaNfkQCvQCyiQDcZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcTmZQCtFNaNfkQCrQCumZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTQCcZQCrFNaNfkQCpQCsZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTQCiTxlZQDaFNaNfkQCymQDcQDfxlZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTQCiTxmZQDaFNaNfkQCymQDcQDfxmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTmTQCeTxmZQCwFNaNfkQCumQCyxmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkTQCfZQCuFNaNfkQCsxkQCxZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkTkZQCsFNaNfkQCqxkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxkZQCqFNaNfkQCoxkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxmTQCfTQCjTmZQDaFNaNfkQCyxmQDdQDgmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByTxmTQCfTxmZQCxFNaNfkQCvxmQDaxmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TQByZQCnFNaNfkQClZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TbTQCaTQCeTEQDx3net7isemail15EmailStatusCodeZQEbFNaNfkbQEaQEdQByZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiTEQDp8datetime4date5MonthTiZQDmFNaNfkiQBliZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiTiZQCnFNaNfkiiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TiZQClFNaNfkiZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TkZQClFNaNfkkZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTQCaTmTQCgTmTQCmTQCqZQDfFNaNfkmQDemQDimQDmQDpZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTmTymZQCqFNaNfkmmymZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmTmZQCnFNaNfkmmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TmZQClFNaNfkmZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TsTEQDp8datetime4date5MonthThThThThTxlZQDvFNaNfksQBuhhhhxlZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxdZQCmFNaNfkxdZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxhTxhTxhTxhZQCvFNaNfkxhxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxhTxhTxhZQCsFNaNfkxhxhxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsTQCbTxhZQCtFNaNfkxsQCtxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsTxEQDr8datetime4date5MonthTxhZQDpFNaNfkxsxQBoxhZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxsZQCmFNaNfkxsZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TxtTQCbTxtTxtZQCwFNaNfkxtQCwxtxtZi@Base 15 ++ _D3std6format8internal5write__T9getNthIntVAyaa21_736570617261746f72206469676974207769647468TykTykTkTkTkZQCvFNaNfkykykkkkZi@Base 15 ++ _D3std6format8internal6floats11__moduleRefZ@Base 15 ++ _D3std6format8internal6floats11isFloatSpecFNaNbNiNfaZb@Base 15 ++ _D3std6format8internal6floats12__ModuleInfoZ@Base 15 ++ _D3std6format8internal6floats__T10printFloatTDFNaNbNfAxaZvTeTaZQBfFNaNfKQBbxeSQCyQCx4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal6floats__T10printFloatTSQBsQBr8NoOpSinkTdTaZQBiFNaNfKQBexdSQDbQDa4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal6floats__T10printFloatTSQBsQBr__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCkFNaNfKQCgxdSQEdQEc4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatATDFNaNbNfAxaZvTeTaZQBgFNaNfKQBbxeSQCzQCy4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatATSQBtQBs8NoOpSinkTdTaZQBjFNaNfKQBexdSQDcQDb4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatATSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQClFNaNfKQCgxdSQEeQEd4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatEVbi0TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatEVbi0TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatEVbi0TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatEVbi1TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatEVbi1TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatEVbi1TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatFVbi0TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatFVbi0TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatFVbi0TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatFVbi1TDFNaNbNfAxaZvTeTaZQBkFNaNfKQBbxeSQDdQDc4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatFVbi1TSQBxQBw8NoOpSinkTdTaZQBnFNaNfKQBexdSQDgQDf4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatFVbi1TSQBxQBw__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQCpFNaNfKQCgxdSQEiQEh4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatGTDFNaNbNfAxaZvTeTaZQBgFNaNfKQBbxeSQCzQCy4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatGTSQBtQBs8NoOpSinkTdTaZQBjFNaNfKQBexdSQDcQDb4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format8internal6floats__T11printFloatGTSQBtQBs__T7sformatTaTxdZQoFNkMAaMAxaxdZ4SinkTdTaZQClFNaNfKQCgxdSQEeQEd4spec__T10FormatSpecTaZQpAyaimbZv@Base 15 ++ _D3std6format__T11guessLengthTaTAyaZQuFNaNfQlZm@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNaNfNkMAaMAxaxdZQj@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink11__xopEqualsMxFKxSQCpQCo__TQCkTaTxdZQCtFNkMQCgMQChxdZQChZb@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNbNfMQyZv@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNbNfaZv@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfMAxuZv@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfMAxwZv@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink3putMFNaNfwZv@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink6__initZ@Base 15 ++ _D3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink9__xtoHashFNbNeKxSQCoQCn__TQCjTaTxdZQCsFNkMQCfMQCgxdZQCgZm@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNaNfNkMAaMAxaykykkkkZQo@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink11__xopEqualsMxFKxSQDdQDc__TQCyTaTykTykTkTkTkZQDqFNkMQCuMQCvykykkkkZQCvZb@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNbNfMQBdZv@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNbNfaZv@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfMAxuZv@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfMAxwZv@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink3putMFNaNfwZv@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink6__initZ@Base 15 ++ _D3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink9__xtoHashFNbNeKxSQDcQDb__TQCxTaTykTykTkTkTkZQDpFNkMQCtMQCuykykkkkZQCuZm@Base 15 ++ _D3std6format__T7sformatVAyaa5_252e313867TxdZQBdFNaNfAaxdZQf@Base 15 ++ _D3std6format__TQkTaTAaTPvZQvFNaNfIAaQqQpZAya@Base 15 ++ _D3std6format__TQkTaTAxaTQeZQwFNaNfIAaQrQtZAya@Base 15 ++ _D3std6format__TQkTaTAyAaZQuFNaNfIAaQpZAya@Base 15 ++ _D3std6format__TQkTaTAyaTQeTmZQyFNaNfIAaQtQvmZQz@Base 15 ++ _D3std6format__TQkTaTAyaTQeZQwFNaNfIAaQrQtZQw@Base 15 ++ _D3std6format__TQkTaTAyaTxkTQhZQzFNaNfIAaQuxkQyZQBb@Base 15 ++ _D3std6format__TQkTaTAyaTxkTkZQyFNaNfIAaQtxkkZQz@Base 15 ++ _D3std6format__TQkTaTAyaTxkZQwFNaNfIAaQrxkZQw@Base 15 ++ _D3std6format__TQkTaTAyaZQtFNaNfIAaQoZQr@Base 15 ++ _D3std6format__TQkTaTC14TypeInfo_ClassTkTkZQBlFNaNfIAaQBhkkZAya@Base 15 ++ _D3std6format__TQkTaTEQu8datetime4date5MonthZQBnFNaNfIAaQBjZAya@Base 15 ++ _D3std6format__TQkTaTbTAyaTQeTEQBd3net7isemail15EmailStatusCodeZQCgFNaNfIAabQCbQCeQCaZQCl@Base 15 ++ _D3std6format__TQkTaTiTEQw8datetime4date5MonthTiZQBrFNaNfIAaiQBmiZAya@Base 15 ++ _D3std6format__TQkTaTiZQrFNaNfIAaiZAya@Base 15 ++ _D3std6format__TQkTaTxhTxhTxhTxhZQBbFNaNfIAaxhxhxhxhZAya@Base 15 ++ _D3std6format__TQkTaTxhTxhTxhZQyFNaNfIAaxhxhxhZAya@Base 15 ++ _D3std6format__TQkTaTxsTxEQy8datetime4date5MonthTxhZQBuFNaNfIAaxsxQBpxhZAya@Base 15 ++ _D3std6format__TQkTaTxsZQsFNaNfIAaxsZAya@Base 15 ++ _D3std6format__TQkTaTxtTAyaTxtTxtZQBcFNaNfIAaxtQxxtxtZQBe@Base 15 ++ _D3std6format__TQkVAyaa35_737461636b2e6c656e677468202d206174202573206d7573742062652032206f722033TmZQDpFNaNfmZQDm@Base 15 ++ _D3std6format__TQkVAyaa39_7372632e6c656e677468202573206d75737420657175616c20646573742e6c656e677468202573TmTmZQDzFNaNfmmZQDx@Base 15 ++ _D3std6format__TQkVAyaa42_74656d702e6c656e677468202573203e3d2072616e67652e6c656e677468202573202d206d6964202573TmTmTymZQEiFNaNfmmymZQEi@Base 15 ++ _D3std6getopt10assignCharw@Base 15 ++ _D3std6getopt10optionCharw@Base 15 ++ _D3std6getopt11__moduleRefZ@Base 15 ++ _D3std6getopt11splitAndGetFNaNbNeAyaZSQBkQBj6Option@Base 15 ++ _D3std6getopt12GetoptResult11__xopEqualsMxFKxSQBsQBrQBnZb@Base 15 ++ _D3std6getopt12GetoptResult6__initZ@Base 15 ++ _D3std6getopt12GetoptResult9__xtoHashFNbNeKxSQBrQBqQBmZm@Base 15 ++ _D3std6getopt12__ModuleInfoZ@Base 15 ++ _D3std6getopt12endOfOptionsAya@Base 15 ++ _D3std6getopt13configuration11passThroughMFNaNbNdNiNfbZv@Base 15 ++ _D3std6getopt13configuration11passThroughMxFNaNbNdNiNfZb@Base 15 ++ _D3std6getopt13configuration13caseSensitiveMFNaNbNdNiNfbZv@Base 15 ++ _D3std6getopt13configuration13caseSensitiveMxFNaNbNdNiNfZb@Base 15 ++ _D3std6getopt13configuration16keepEndOfOptionsMFNaNbNdNiNfbZv@Base 15 ++ _D3std6getopt13configuration16keepEndOfOptionsMxFNaNbNdNiNfZb@Base 15 ++ _D3std6getopt13configuration20stopOnFirstNonOptionMFNaNbNdNiNfbZv@Base 15 ++ _D3std6getopt13configuration20stopOnFirstNonOptionMxFNaNbNdNiNfZb@Base 15 ++ _D3std6getopt13configuration6__initZ@Base 15 ++ _D3std6getopt13configuration8bundlingMFNaNbNdNiNfbZv@Base 15 ++ _D3std6getopt13configuration8bundlingMxFNaNbNdNiNfZb@Base 15 ++ _D3std6getopt13configuration8requiredMFNaNbNdNiNfbZv@Base 15 ++ _D3std6getopt13configuration8requiredMxFNaNbNdNiNfZb@Base 15 ++ _D3std6getopt15GetOptException6__initZ@Base 15 ++ _D3std6getopt15GetOptException6__vtblZ@Base 15 ++ _D3std6getopt15GetOptException7__ClassZ@Base 15 ++ _D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 ++ _D3std6getopt15GetOptException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 ++ _D3std6getopt20defaultGetoptPrinterFNfAyaASQBpQBo6OptionZ18__lambda_L1704_C15FNeZSQDc5stdio4File17LockingTextWriter@Base 15.2 ++ _D3std6getopt20defaultGetoptPrinterFNfAyaASQBpQBo6OptionZv@Base 15 ++ _D3std6getopt6Option11__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 ++ _D3std6getopt6Option6__initZ@Base 15 ++ _D3std6getopt6Option9__xtoHashFNbNeKxSQBkQBjQBfZm@Base 15 ++ _D3std6getopt8arraySepAya@Base 15 ++ _D3std6getopt8optMatchFNfAyaMQeKQhSQBhQBg13configurationZb@Base 15 ++ _D3std6getopt9setConfigFNaNbNiNfKSQBgQBf13configurationEQCcQCb6configZv@Base 15 ++ _D3std6getopt__T22defaultGetoptFormatterTSQBo5stdio4File17LockingTextWriterZQCiFNfQBpAyaASQDkQDj6OptionQsZv@Base 15 ++ _D3std6int12811__moduleRefZ@Base 15 ++ _D3std6int12812__ModuleInfoZ@Base 15 ++ _D3std6int1286Int12811__xopEqualsMxFKxSQBlQBkQBgZb@Base 15 ++ _D3std6int1286Int1285opCmpMxFNaNbNiNfSQBkQBjQBfZi@Base 15 ++ _D3std6int1286Int1286__ctorMFNaNbNcNiNfS4coreQBn4CentZSQCbQCaQBw@Base 15 ++ _D3std6int1286Int1286__ctorMFNaNbNcNiNflZSQBoQBnQBj@Base 15 ++ _D3std6int1286Int1286__ctorMFNaNbNcNiNfllZSQBpQBoQBk@Base 15 ++ _D3std6int1286Int1286__ctorMFNaNbNcNiNfmZSQBoQBnQBj@Base 15 ++ _D3std6int1286Int1286__initZ@Base 15 ++ _D3std6int1286Int1286toHashMxFNaNbNiNfZm@Base 15 ++ _D3std6int1286Int1288__xopCmpMxFKxSQBhQBgQBcZi@Base 15 ++ _D3std6int1286Int1288opEqualsMxFNaNbNiNfSQBnQBmQBiZb@Base 15 ++ _D3std6int1286Int1288opEqualsMxFNaNbNiNflZb@Base 15 ++ _D3std6int1286Int1288opEqualsMxFNaNbNiNfmZb@Base 15 ++ _D3std6logger10filelogger10FileLogger10logMsgPartMFNfMAxaZv@Base 15 ++ _D3std6logger10filelogger10FileLogger11__fieldDtorMFNlNeZv@Base 15 ++ _D3std6logger10filelogger10FileLogger11beginLogMsgMFNfAyaiQeQgQiEQClQCk4core8LogLevelSQDg11concurrency3TidSQEb8datetime7systime7SysTimeCQFeQFdQCt6LoggerZv@Base 15 ++ _D3std6logger10filelogger10FileLogger11getFilenameMFZAya@Base 15 ++ _D3std6logger10filelogger10FileLogger11writeLogMsgMFNfKSQCcQCb4core6Logger8LogEntryZv@Base 15 ++ _D3std6logger10filelogger10FileLogger12finishLogMsgMFNfZv@Base 15 ++ _D3std6logger10filelogger10FileLogger4fileMFNdNfZSQBw5stdio4File@Base 15 ++ _D3std6logger10filelogger10FileLogger6__ctorMFNfSQBv5stdio4FilexEQClQCk4core8LogLevelZCQDhQDgQDcQCt@Base 15 ++ _D3std6logger10filelogger10FileLogger6__initZ@Base 15 ++ _D3std6logger10filelogger10FileLogger6__vtblZ@Base 15 ++ _D3std6logger10filelogger10FileLogger7__ClassZ@Base 15 ++ _D3std6logger10filelogger11__moduleRefZ@Base 15 ++ _D3std6logger10filelogger12__ModuleInfoZ@Base 15 ++ _D3std6logger10nulllogger10NullLogger11writeLogMsgMFNiNfKSQCeQCd4core6Logger8LogEntryZv@Base 15 ++ _D3std6logger10nulllogger10NullLogger6__ctorMFNfxEQBwQBv4core8LogLevelZCQCsQCrQCnQCe@Base 15 ++ _D3std6logger10nulllogger10NullLogger6__initZ@Base 15 ++ _D3std6logger10nulllogger10NullLogger6__vtblZ@Base 15 ++ _D3std6logger10nulllogger10NullLogger7__ClassZ@Base 15 ++ _D3std6logger10nulllogger11__moduleRefZ@Base 15 ++ _D3std6logger10nulllogger12__ModuleInfoZ@Base 15 ++ _D3std6logger11__moduleRefZ@Base 15 ++ _D3std6logger11multilogger11MultiLogger11writeLogMsgMFNfKSQCeQCd4core6Logger8LogEntryZv@Base 15 ++ _D3std6logger11multilogger11MultiLogger12insertLoggerMFNfAyaCQChQCg4core6LoggerZv@Base 15 ++ _D3std6logger11multilogger11MultiLogger12removeLoggerMFNfIAaZCQCiQCh4core6Logger@Base 15 ++ _D3std6logger11multilogger11MultiLogger6__ctorMFNfxEQByQBx4core8LogLevelZCQCuQCtQCpQCf@Base 15 ++ _D3std6logger11multilogger11MultiLogger6__initZ@Base 15 ++ _D3std6logger11multilogger11MultiLogger6__vtblZ@Base 15 ++ _D3std6logger11multilogger11MultiLogger7__ClassZ@Base 15 ++ _D3std6logger11multilogger11__moduleRefZ@Base 15 ++ _D3std6logger11multilogger12__ModuleInfoZ@Base 15 ++ _D3std6logger11multilogger16MultiLoggerEntry11__xopEqualsMxFKxSQCjQCiQCeQBuZb@Base 15 ++ _D3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 ++ _D3std6logger11multilogger16MultiLoggerEntry9__xtoHashFNbNeKxSQCiQChQCdQBtZm@Base 15 ++ _D3std6logger12__ModuleInfoZ@Base 15 ++ _D3std6logger4core10TestLogger11writeLogMsgMFNfKSQBvQBuQBq6Logger8LogEntryZv@Base 15 ++ _D3std6logger4core10TestLogger6__ctorMFNfxEQBpQBoQBk8LogLevelZCQCjQCiQCeQCc@Base 15 ++ _D3std6logger4core10TestLogger6__initZ@Base 15 ++ _D3std6logger4core10TestLogger6__vtblZ@Base 15 ++ _D3std6logger4core10TestLogger7__ClassZ@Base 15 ++ _D3std6logger4core11__moduleRefZ@Base 15 ++ _D3std6logger4core12__ModuleInfoZ@Base 15 ++ _D3std6logger4core14globalLogLevelFNdNfEQBmQBlQBh8LogLevelZv@Base 15 ++ _D3std6logger4core14globalLogLevelFNdNiNfZEQBpQBoQBk8LogLevel@Base 15 ++ _D3std6logger4core15stdSharedLoggerOCQBjQBiQBe6Logger@Base 15 ++ _D3std6logger4core16StdForwardLogger11writeLogMsgMFNeKSQCbQCaQBw6Logger8LogEntryZv@Base 15 ++ _D3std6logger4core16StdForwardLogger6__ctorMFNfxEQBvQBuQBq8LogLevelZCQCpQCoQCkQCi@Base 15 ++ _D3std6logger4core16StdForwardLogger6__initZ@Base 15 ++ _D3std6logger4core16StdForwardLogger6__vtblZ@Base 15 ++ _D3std6logger4core16StdForwardLogger7__ClassZ@Base 15 ++ _D3std6logger4core17stdThreadLocalLogFNdNfCQBpQBoQBk6LoggerZv@Base 15 ++ _D3std6logger4core17stdThreadLocalLogFNdNfZCQBqQBpQBl6Logger@Base 15 ++ _D3std6logger4core21stdLoggerThreadLoggerCQBoQBnQBj6Logger@Base 15 ++ _D3std6logger4core21stdThreadLocalLogImplFNdNeZ6bufferG184v@Base 15 ++ _D3std6logger4core21stdThreadLocalLogImplFNdNeZCQBuQBtQBp6Logger@Base 15 ++ _D3std6logger4core22stdSharedDefaultLoggerOCQBqQBpQBl6Logger@Base 15 ++ _D3std6logger4core23defaultSharedLoggerImplFNdNeZ18__lambda_L1423_C37FZOCQCtQCs10filelogger10FileLogger@Base 15 ++ _D3std6logger4core23defaultSharedLoggerImplFNdNeZ7_bufferG224v@Base 15 ++ _D3std6logger4core23defaultSharedLoggerImplFNdNeZOCQBxQBwQBs6Logger@Base 15 ++ _D3std6logger4core23stdLoggerGlobalLogLevelOEQBrQBqQBm8LogLevel@Base 15 ++ _D3std6logger4core28stdLoggerDefaultThreadLoggerCQBvQBuQBq6Logger@Base 15 ++ _D3std6logger4core6Logger10forwardMsgMFNeKSQBpQBoQBkQBi8LogEntryZv@Base 15 ++ _D3std6logger4core6Logger10logMsgPartMFNfMAxaZv@Base 15 ++ _D3std6logger4core6Logger11beginLogMsgMFNfAyaiQeQgQiEQBzQByQBu8LogLevelSQCs11concurrency3TidSQDn8datetime7systime7SysTimeCQEqQEpQElQEjZv@Base 15 ++ _D3std6logger4core6Logger12fatalHandlerMFNdNiNfDFNfZvZv@Base 15 ++ _D3std6logger4core6Logger12fatalHandlerMFNdNiNfZDFZv@Base 15 ++ _D3std6logger4core6Logger12finishLogMsgMFNfZv@Base 15 ++ _D3std6logger4core6Logger6__initZ@Base 15 ++ _D3std6logger4core6Logger6__vtblZ@Base 15 ++ _D3std6logger4core6Logger7__ClassZ@Base 15 ++ _D3std6logger4core6Logger8LogEntry11__xopEqualsMxFKxSQBzQByQBuQBsQBoZb@Base 15 ++ _D3std6logger4core6Logger8LogEntry6__initZ@Base 15 ++ _D3std6logger4core6Logger8LogEntry8opAssignMFNaNbNcNiNjNfSQCeQCdQBzQBxQBtZQr@Base 15 ++ _D3std6logger4core6Logger8LogEntry9__xtoHashFNbNeKxSQByQBxQBtQBrQBnZm@Base 15 ++ _D3std6logger4core6Logger8logLevelMFNdNiNfxEQBqQBpQBl8LogLevelZv@Base 15 ++ _D3std6logger4core6Logger8logLevelMxFNaNdNiNfZEQBtQBsQBo8LogLevel@Base 15 ++ _D3std6logger4core6Logger__T6__ctorTCQBjQBi10filelogger10FileLoggerZQBoMFNbNfEQCyQCxQCt8LogLevelZCQDsQDrQDnQDl@Base 15 ++ _D3std6logger4core6Logger__T6__ctorTCQBjQBi10nulllogger10NullLoggerZQBoMFNbNfEQCyQCxQCt8LogLevelZCQDsQDrQDnQDl@Base 15 ++ _D3std6logger4core6Logger__T6__ctorTCQBjQBi11multilogger11MultiLoggerZQBqMFNbNfEQDaQCzQCv8LogLevelZCQDuQDtQDpQDn@Base 15 ++ _D3std6logger4core6Logger__T6__ctorTCQBjQBiQBe10TestLoggerZQBfMFNbNfEQCpQCoQCk8LogLevelZCQDjQDiQDeQDc@Base 15 ++ _D3std6logger4core6Logger__T6__ctorTCQBjQBiQBe16StdForwardLoggerZQBlMFNbNfEQCvQCuQCq8LogLevelZCQDpQDoQDkQDi@Base 15 ++ _D3std6logger4core8LogLevel6__initZ@Base 15 ++ _D3std6logger4core8MsgRange11__xopEqualsMxFKxSQBsQBrQBnQBlZb@Base 15 ++ _D3std6logger4core8MsgRange3putMFNfwZv@Base 15 ++ _D3std6logger4core8MsgRange6__ctorMFNcNfCQBnQBmQBi6LoggerZSQCfQCeQCaQBy@Base 15 ++ _D3std6logger4core8MsgRange6__initZ@Base 15 ++ _D3std6logger4core8MsgRange9__xtoHashFNbNeKxSQBrQBqQBmQBkZm@Base 15 ++ _D3std6logger4core9sharedLogFNdNfOCQBhQBgQBc6LoggerZv@Base 15 ++ _D3std6logger4core9sharedLogFNdNfZOCQBiQBhQBd6Logger@Base 15 ++ _D3std6logger4core__T11trustedLoadTEQBiQBhQBd8LogLevelZQBiFNaNbNiNeKOEQCqQCpQClQBiZQBw@Base 15 ++ _D3std6logger4core__T11trustedLoadTxEQBjQBiQBe8LogLevelZQBjFNaNbNiNeKOxEQCsQCrQCnQBjZEQDgQDfQDbQBx@Base 15 ++ _D3std6logger4core__T12trustedStoreTEQBjQBiQBe8LogLevelZQBjFNaNbNiNeKOEQCrQCqQCmQBiKQBwZv@Base 15 ++ _D3std6logger4core__T16isLoggingEnabledZQtFNaNfEQBuQBtQBp8LogLevelQtQvLbZb@Base 15 ++ _D3std6logger4core__T18systimeToISOStringTSQBp5stdio4File17LockingTextWriterZQCeFNfQBpKxSQDj8datetime7systime7SysTimeZv@Base 15 ++ _D3std6mmfile11__moduleRefZ@Base 15 ++ _D3std6mmfile12__ModuleInfoZ@Base 15 ++ _D3std6mmfile6MmFile10__aggrDtorMFNlZv@Base 15 ++ _D3std6mmfile6MmFile11__fieldDtorMFNlNeZv@Base 15 ++ _D3std6mmfile6MmFile12ensureMappedMFmZv@Base 15 ++ _D3std6mmfile6MmFile12ensureMappedMFmmZv@Base 15 ++ _D3std6mmfile6MmFile13opIndexAssignMFhmZh@Base 15 ++ _D3std6mmfile6MmFile3mapMFmmZv@Base 15 ++ _D3std6mmfile6MmFile4modeMFZEQBbQBaQw4Mode@Base 15 ++ _D3std6mmfile6MmFile5flushMFZv@Base 15 ++ _D3std6mmfile6MmFile5unmapMFZv@Base 15 ++ _D3std6mmfile6MmFile6__ctorMFNlAyaEQBhQBgQBc4ModemPvmZCQCbQCaQBw@Base 15 ++ _D3std6mmfile6MmFile6__ctorMFNlAyaZCQBiQBhQBd@Base 15 ++ _D3std6mmfile6MmFile6__ctorMFNlSQBe5stdio4FileEQBtQBsQBo4ModemPvmZCQCnQCmQCi@Base 15 ++ _D3std6mmfile6MmFile6__ctorMFNliEQBfQBeQBa4ModemPvmZCQBzQByQBu@Base 15 ++ _D3std6mmfile6MmFile6__dtorMFNlZv@Base 15 ++ _D3std6mmfile6MmFile6__initZ@Base 15 ++ _D3std6mmfile6MmFile6__vtblZ@Base 15 ++ _D3std6mmfile6MmFile6lengthMxFNdZm@Base 15 ++ _D3std6mmfile6MmFile6mappedMFmZi@Base 15 ++ _D3std6mmfile6MmFile7__ClassZ@Base 15 ++ _D3std6mmfile6MmFile7opIndexMFmZh@Base 15 ++ _D3std6mmfile6MmFile7opSliceMFZAv@Base 15 ++ _D3std6mmfile6MmFile7opSliceMFmmZAv@Base 15 ++ _D3std6random11__moduleRefZ@Base 15 ++ _D3std6random12__ModuleInfoZ@Base 15 ++ _D3std6random12fallbackSeedFNbNiZ11initializedOb@Base 15 ++ _D3std6random12fallbackSeedFNbNiZ4seedOm@Base 15 ++ _D3std6random12fallbackSeedFNbNiZ6fmix64FNaNbNiNfmZm@Base 15 ++ _D3std6random12fallbackSeedFNbNiZm@Base 15 ++ _D3std6random13bootstrapSeedFNbNiZm@Base 15 ++ _D3std6random17unpredictableSeedFNbNdNiNeZk@Base 15 ++ _D3std6random18RandomCoverChoices10__postblitMFNaNbNiNeZv@Base 15 ++ _D3std6random18RandomCoverChoices13opIndexAssignMFNaNbNiNebmZv@Base 15 ++ _D3std6random18RandomCoverChoices6__ctorMFNaNbNcNiNemZSQCbQCaQBw@Base 15 ++ _D3std6random18RandomCoverChoices6__dtorMFNaNbNiNeZv@Base 15 ++ _D3std6random18RandomCoverChoices6__initZ@Base 15 ++ _D3std6random18RandomCoverChoices6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std6random18RandomCoverChoices7opIndexMxFNaNbNiNemZb@Base 15 ++ _D3std6random6rndGenFNbNcNdNiNfZ11initializedb@Base 15 ++ _D3std6random6rndGenFNbNcNdNiNfZ6resultSQBmQBl__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc@Base 15 ++ _D3std6random6rndGenFNbNcNdNiNfZSQBfQBe__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc@Base 15 ++ _D3std6random__T12initMTEngineTSQBeQBd__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFcZQGfFNbNiNfMKQGcZv@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki128Vii11ViN8ViN19ZQDt@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn6__initZ@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl4saveMxFNaNbNdNiNfZSQCwQCv__TQCrTkVki160Vii2ViN1ViN4ZQDp@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl6__initZ@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl4saveMxFNaNbNdNiNfZSQCwQCv__TQCrTkVki192ViN2Vii1Vii4ZQDp@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl6__initZ@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki32Vii13ViN17Vii15ZQDt@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn6__initZ@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn4saveMxFNaNbNdNiNfZSQCyQCx__TQCtTkVki64Vii10ViN13ViN10ZQDt@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn6__initZ@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm4saveMxFNaNbNdNiNfZSQCxQCw__TQCsTkVki96Vii10ViN5ViN26ZQDr@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm6__initZ@Base 15 ++ _D3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T17unpredictableSeedTmZQwFNbNdNiNeZm@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc12defaultStateFNaNbNiNfZSQGsQGr__TQGnTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKv5State@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc12popFrontImplFNaNbNiNfKSQGsQGr__TQGnTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKv5StateZv@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc4saveMxFNaNbNdNiNfZSQGnQGm__TQGiTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKq@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5State6__initZ@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__ctorMFNaNbNcNiNfkZSQGpQGo__TQGkTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKs@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc6__initZ@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc8seedImplFNaNbNiNfkKSQGoQGn__TQGjTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQKr5StateZv@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTkVmi32Vmi624Vmi397Vmi31Vki2567483615Vmi11Vki4294967295Vmi7Vki2636928640Vmi15Vki4022730752Vmi18Vki1812433253ZQFc__T4seedZQgMFNaNbNiNfkZv@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt12defaultStateFNaNbNiNfZSQIjQIi__TQIeTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOd5State@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt12popFrontImplFNaNbNiNfKSQIjQIi__TQIeTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOd5StateZv@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt4saveMxFNaNbNdNiNfZSQIeQId__TQHzTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQNy@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5State6__initZ@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt5frontMxFNaNbNdNiNfZm@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__ctorMFNaNbNcNiNfmZSQIgQIf__TQIbTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQOa@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt6__initZ@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt8seedImplFNaNbNiNfmKSQIfQIe__TQIaTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQNz5StateZv@Base 15 ++ _D3std6random__T21MersenneTwisterEngineTmVmi64Vmi312Vmi156Vmi31VmN5403634167711393303Vmi29Vmi6148914691236517205Vmi17Vmi8202884508482404352Vmi37VmN2270628950310912Vmi43Vmi6364136223846793005ZQGt__T4seedZQgMFNaNbNiNfmZv@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc16primeFactorsOnlyFNaNbNiNfmZm@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc34properLinearCongruentialParametersFNaNbNiNfmmmZb@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc3gcdFNaNbNiNfmmZm@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc4saveMxFNaNbNdNiNfZSQDnQDm__TQDiTkVki16807Vki0Vki2147483647ZQEn@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc4seedMFNaNbNiNfkZv@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__ctorMFNaNbNcNiNfkZSQDpQDo__TQDkTkVki16807Vki0Vki2147483647ZQEp@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__initZ@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc16primeFactorsOnlyFNaNbNiNfmZm@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc34properLinearCongruentialParametersFNaNbNiNfmmmZb@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc3gcdFNaNbNiNfmmZm@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc4saveMxFNaNbNdNiNfZSQDnQDm__TQDiTkVki48271Vki0Vki2147483647ZQEn@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc4seedMFNaNbNiNfkZv@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__ctorMFNaNbNcNiNfkZSQDpQDo__TQDkTkVki48271Vki0Vki2147483647ZQEp@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__initZ@Base 15 ++ _D3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6socket10SocketType6__initZ@Base 15 ++ _D3std6socket10getAddressFNfMAxaMQeZACQBkQBj7Address@Base 15 ++ _D3std6socket10getAddressFNfMAxatZACQBiQBh7Address@Base 15 ++ _D3std6socket10socketPairFNeZG2CQBeQBd6Socket@Base 15 ++ _D3std6socket11AddressInfo11__xopEqualsMxFKxSQBrQBqQBmZb@Base 15 ++ _D3std6socket11AddressInfo6__initZ@Base 15 ++ _D3std6socket11AddressInfo9__xtoHashFNbNeKxSQBqQBpQBlZm@Base 15 ++ _D3std6socket11UnixAddress10setNameLenMFNekZv@Base 15 ++ _D3std6socket11UnixAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCj8sockaddr@Base 15 ++ _D3std6socket11UnixAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCl8sockaddr@Base 15 ++ _D3std6socket11UnixAddress4pathMxFNaNdNeZAya@Base 15 ++ _D3std6socket11UnixAddress6__ctorMFNaNbNiNfS4core3sys5posixQk2un11sockaddr_unZCQCzQCyQCu@Base 15 ++ _D3std6socket11UnixAddress6__ctorMFNaNbNiNfZCQBrQBqQBm@Base 15 ++ _D3std6socket11UnixAddress6__ctorMFNaNeMAxaZCQBrQBqQBm@Base 15 ++ _D3std6socket11UnixAddress6__initZ@Base 15 ++ _D3std6socket11UnixAddress6__vtblZ@Base 15 ++ _D3std6socket11UnixAddress7__ClassZ@Base 15 ++ _D3std6socket11UnixAddress7nameLenMxFNaNbNdNiNeZk@Base 15 ++ _D3std6socket11UnixAddress8toStringMxFNaNfZAya@Base 15 ++ _D3std6socket11__moduleRefZ@Base 15 ++ _D3std6socket12InternetHost12validHostentMFNfIPS4core3sys5posix5netdb7hostentZv@Base 15 ++ _D3std6socket12InternetHost13getHostByAddrMFNeMAxaZb@Base 15 ++ _D3std6socket12InternetHost13getHostByAddrMFNekZb@Base 15 ++ _D3std6socket12InternetHost13getHostByNameMFNeMAxaZb@Base 15 ++ _D3std6socket12InternetHost6__initZ@Base 15 ++ _D3std6socket12InternetHost6__vtblZ@Base 15 ++ _D3std6socket12InternetHost7__ClassZ@Base 15 ++ _D3std6socket12InternetHost8populateMFNaNbPS4core3sys5posix5netdb7hostentZv@Base 15 ++ _D3std6socket12InternetHost__T13getHostNoSyncVAyaa118_0a2020202020202020202020206175746f2078203d2068746f6e6c28706172616d293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TkZQKdMFkZb@Base 15 ++ _D3std6socket12InternetHost__T13getHostNoSyncVAyaa245_0a2020202020202020202020206175746f2078203d20696e65745f6164647228706172616d2e74656d7043537472696e672829293b0a202020202020202020202020656e666f726365287820213d20494e414444525f4e4f4e452c0a202020202020202020202020202020206e657720536f636b6574506172616d65746572457863657074696f6e2822496e76616c6964204950763420616464726573732229293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TAxaZQTzMFQjZb@Base 15 ++ _D3std6socket12InternetHost__T13getHostNoSyncVAyaa75_0a202020202020202020202020202020206175746f206865203d20676574686f737462796e616d6528706172616d2e74656d7043537472696e672829293b0a202020202020202020202020TAxaZQGwMFQjZb@Base 15 ++ _D3std6socket12InternetHost__T7getHostVAyaa118_0a2020202020202020202020206175746f2078203d2068746f6e6c28706172616d293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TkZQJwMFkZb@Base 15 ++ _D3std6socket12InternetHost__T7getHostVAyaa245_0a2020202020202020202020206175746f2078203d20696e65745f6164647228706172616d2e74656d7043537472696e672829293b0a202020202020202020202020656e666f726365287820213d20494e414444525f4e4f4e452c0a202020202020202020202020202020206e657720536f636b6574506172616d65746572457863657074696f6e2822496e76616c6964204950763420616464726573732229293b0a2020202020202020202020206175746f206865203d20676574686f73746279616464722826782c20342c206361737428696e7429204164647265737346616d696c792e494e4554293b0a2020202020202020TAxaZQTsMFQjZb@Base 15 ++ _D3std6socket12InternetHost__T7getHostVAyaa75_0a202020202020202020202020202020206175746f206865203d20676574686f737462796e616d6528706172616d2e74656d7043537472696e672829293b0a202020202020202020202020TAxaZQGpMFQjZb@Base 15 ++ _D3std6socket12SocketOption6__initZ@Base 15 ++ _D3std6socket12__ModuleInfoZ@Base 15 ++ _D3std6socket12parseAddressFNfMAxaMQeZCQBlQBk7Address@Base 15 ++ _D3std6socket12parseAddressFNfMAxatZCQBjQBi7Address@Base 15 ++ _D3std6socket13HostException6__initZ@Base 15 ++ _D3std6socket13HostException6__vtblZ@Base 15 ++ _D3std6socket13HostException7__ClassZ@Base 15 ++ _D3std6socket13HostException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQCvQCuQCq@Base 15 ++ _D3std6socket13HostException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQCvQCuQCq@Base 15 ++ _D3std6socket13HostException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQCvQCuQCq@Base 15 ++ _D3std6socket13_SOCKET_ERRORxi@Base 15 ++ _D3std6socket13serviceToPortFNfMAxaZt@Base 15 ++ _D3std6socket14UnknownAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCm8sockaddr@Base 15 ++ _D3std6socket14UnknownAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCo8sockaddr@Base 15 ++ _D3std6socket14UnknownAddress6__initZ@Base 15 ++ _D3std6socket14UnknownAddress6__vtblZ@Base 15 ++ _D3std6socket14UnknownAddress7__ClassZ@Base 15 ++ _D3std6socket14UnknownAddress7nameLenMxFNaNbNdNiNfZk@Base 15 ++ _D3std6socket14formatGaiErrorFNeiZ12__critsec231OPv@Base 15 ++ _D3std6socket14formatGaiErrorFNeiZAya@Base 15 ++ _D3std6socket15InternetAddress12addrToStringFNbNekZAya@Base 15 ++ _D3std6socket15InternetAddress12toAddrStringMxFNeZAya@Base 15 ++ _D3std6socket15InternetAddress12toPortStringMxFNfZAya@Base 15 ++ _D3std6socket15InternetAddress16toHostNameStringMxFNfZAya@Base 15 ++ _D3std6socket15InternetAddress4addrMxFNaNbNdNiNfZk@Base 15 ++ _D3std6socket15InternetAddress4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCn8sockaddr@Base 15 ++ _D3std6socket15InternetAddress4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCp8sockaddr@Base 15 ++ _D3std6socket15InternetAddress4portMxFNaNbNdNiNfZt@Base 15 ++ _D3std6socket15InternetAddress5parseFNbNeMAxaZk@Base 15 ++ _D3std6socket15InternetAddress6__ctorMFNaNbNiNfS4core3sys5posix7netinet3in_11sockaddr_inZCQDkQDjQDf@Base 15 ++ _D3std6socket15InternetAddress6__ctorMFNaNbNiNfZCQBvQBuQBq@Base 15 ++ _D3std6socket15InternetAddress6__ctorMFNaNbNiNfktZCQBxQBwQBs@Base 15 ++ _D3std6socket15InternetAddress6__ctorMFNaNbNiNftZCQBwQBvQBr@Base 15 ++ _D3std6socket15InternetAddress6__ctorMFNfMAxatZCQBuQBtQBp@Base 15 ++ _D3std6socket15InternetAddress6__initZ@Base 15 ++ _D3std6socket15InternetAddress6__vtblZ@Base 15 ++ _D3std6socket15InternetAddress7__ClassZ@Base 15 ++ _D3std6socket15InternetAddress7nameLenMxFNaNbNdNiNfZk@Base 15 ++ _D3std6socket15InternetAddress8opEqualsMxFNfC6ObjectZb@Base 15 ++ _D3std6socket15SocketException6__initZ@Base 15 ++ _D3std6socket15SocketException6__vtblZ@Base 15 ++ _D3std6socket15SocketException7__ClassZ@Base 15 ++ _D3std6socket15SocketException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 ++ _D3std6socket15SocketException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 ++ _D3std6socket15lastSocketErrorFNdNfZAya@Base 15 ++ _D3std6socket16AddressException6__initZ@Base 15 ++ _D3std6socket16AddressException6__vtblZ@Base 15 ++ _D3std6socket16AddressException7__ClassZ@Base 15 ++ _D3std6socket16AddressException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQCyQCxQCt@Base 15 ++ _D3std6socket16AddressException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQCyQCxQCt@Base 15 ++ _D3std6socket16AddressException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQCyQCxQCt@Base 15 ++ _D3std6socket16AddressInfoFlags6__initZ@Base 15 ++ _D3std6socket16Internet6Address4addrMxFNaNbNdNiNfZG16h@Base 15 ++ _D3std6socket16Internet6Address4nameMFNaNbNdNiNlNjNfZPS4core3sys5posixQkQCo8sockaddr@Base 15 ++ _D3std6socket16Internet6Address4nameMxFNaNbNdNiNlNjNfZPxS4core3sys5posixQkQCq8sockaddr@Base 15 ++ _D3std6socket16Internet6Address4portMxFNaNbNdNiNfZt@Base 15 ++ _D3std6socket16Internet6Address5parseFNeMAxaZG16h@Base 15 ++ _D3std6socket16Internet6Address6__ctorMFNaNbNiNfG16htZCQCbQCaQBw@Base 15 ++ _D3std6socket16Internet6Address6__ctorMFNaNbNiNfS4core3sys5posix7netinet3in_12sockaddr_in6ZCQDmQDlQDh@Base 15 ++ _D3std6socket16Internet6Address6__ctorMFNaNbNiNfZCQBwQBvQBr@Base 15 ++ _D3std6socket16Internet6Address6__ctorMFNaNbNiNftZCQBxQBwQBs@Base 15 ++ _D3std6socket16Internet6Address6__ctorMFNeMAxaMQeZCQBxQBwQBs@Base 15 ++ _D3std6socket16Internet6Address6__ctorMFNfMAxatZCQBvQBuQBq@Base 15 ++ _D3std6socket16Internet6Address6__initZ@Base 15 ++ _D3std6socket16Internet6Address6__vtblZ@Base 15 ++ _D3std6socket16Internet6Address7__ClassZ@Base 15 ++ _D3std6socket16Internet6Address7nameLenMxFNaNbNdNiNfZk@Base 15 ++ _D3std6socket16Internet6Address8ADDR_ANYFNaNbNcNdNiNfZxG16h@Base 15 ++ _D3std6socket16wouldHaveBlockedFNbNiNfZb@Base 15 ++ _D3std6socket17SocketOSException6__ctorMFNfAyaC6object9ThrowableQvmiPFNeiZQBfZCQCzQCyQCu@Base 15 ++ _D3std6socket17SocketOSException6__ctorMFNfAyaQdmC6object9ThrowableiPFNeiZQBfZCQCzQCyQCu@Base 15 ++ _D3std6socket17SocketOSException6__ctorMFNfAyaiPFNeiZQkQmmC6object9ThrowableZCQCyQCxQCt@Base 15 ++ _D3std6socket17SocketOSException6__initZ@Base 15 ++ _D3std6socket17SocketOSException6__vtblZ@Base 15 ++ _D3std6socket17SocketOSException7__ClassZ@Base 15 ++ _D3std6socket17SocketOptionLevel6__initZ@Base 15 ++ _D3std6socket17formatSocketErrorFNeiZAya@Base 15 ++ _D3std6socket18getAddressInfoImplFMAxaMQePS4core3sys5posix5netdb8addrinfoZASQCwQCv11AddressInfo@Base 15 ++ _D3std6socket18getaddrinfoPointeryPUNbNiPxaQdPxS4core3sys5posix5netdb8addrinfoPPSQBhQBfQBeQBbQyZi@Base 15 ++ _D3std6socket18getnameinfoPointeryPUNbNiPxS4core3sys5posixQkQCc8sockaddrkPakQdkiZi@Base 15 ++ _D3std6socket19freeaddrinfoPointeryPUNbNiPS4core3sys5posix5netdb8addrinfoZv@Base 15 ++ _D3std6socket21SocketAcceptException6__initZ@Base 15 ++ _D3std6socket21SocketAcceptException6__vtblZ@Base 15 ++ _D3std6socket21SocketAcceptException7__ClassZ@Base 15 ++ _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaC6object9ThrowableQvmiZCQDdQDcQCy@Base 15 ++ _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaQdmC6object9ThrowableiZCQDdQDcQCy@Base 15 ++ _D3std6socket21SocketAcceptException8__mixin16__ctorMFNfAyaiQemC6object9ThrowableZCQDdQDcQCy@Base 15 ++ _D3std6socket22SocketFeatureException6__initZ@Base 15 ++ _D3std6socket22SocketFeatureException6__vtblZ@Base 15 ++ _D3std6socket22SocketFeatureException7__ClassZ@Base 15 ++ _D3std6socket22SocketFeatureException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDjQDiQDe@Base 15 ++ _D3std6socket22SocketFeatureException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDjQDiQDe@Base 15 ++ _D3std6socket23UnknownAddressReference4nameMFNaNbNdNiNfZPS4core3sys5posixQkQCr8sockaddr@Base 15 ++ _D3std6socket23UnknownAddressReference4nameMxFNaNbNdNiNfZPxS4core3sys5posixQkQCt8sockaddr@Base 15 ++ _D3std6socket23UnknownAddressReference6__ctorMFNaNbNiNfPS4core3sys5posixQkQCq8sockaddrkZCQDjQDiQDe@Base 15 ++ _D3std6socket23UnknownAddressReference6__ctorMFNaNbPxS4core3sys5posixQkQCn8sockaddrkZCQDgQDfQDb@Base 15 ++ _D3std6socket23UnknownAddressReference6__initZ@Base 15 ++ _D3std6socket23UnknownAddressReference6__vtblZ@Base 15 ++ _D3std6socket23UnknownAddressReference7__ClassZ@Base 15 ++ _D3std6socket23UnknownAddressReference7nameLenMxFNaNbNdNiNfZk@Base 15 ++ _D3std6socket24SocketParameterException6__initZ@Base 15 ++ _D3std6socket24SocketParameterException6__vtblZ@Base 15 ++ _D3std6socket24SocketParameterException7__ClassZ@Base 15 ++ _D3std6socket24SocketParameterException8__mixin16__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDlQDkQDg@Base 15 ++ _D3std6socket24SocketParameterException8__mixin16__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDlQDkQDg@Base 15 ++ _D3std6socket25_sharedStaticCtor_L291_C1FZv@Base 15 ++ _D3std6socket25_sharedStaticDtor_L326_C1FNbNiZv@Base 15 ++ _D3std6socket6Linger2onMNgFNaNbNcNdNiNjNfZNgi@Base 15 ++ _D3std6socket6Linger4timeMNgFNaNbNcNdNiNjNfZNgi@Base 15 ++ _D3std6socket6Linger6__initZ@Base 15 ++ _D3std6socket6Socket11receiveFromMFNeMAvEQBnQBm11SocketFlagsKCQCiQCh7AddressZl@Base 15 ++ _D3std6socket6Socket11receiveFromMFNeMAvEQBnQBm11SocketFlagsZl@Base 15 ++ _D3std6socket6Socket11receiveFromMFNfMAvKCQBoQBn7AddressZl@Base 15 ++ _D3std6socket6Socket11receiveFromMFNfMAvZl@Base 15 ++ _D3std6socket6Socket12getErrorTextMFNfZAya@Base 15 ++ _D3std6socket6Socket12localAddressMFNdNeZCQBoQBn7Address@Base 15 ++ _D3std6socket6Socket12setKeepAliveMFNeiiZv@Base 15 ++ _D3std6socket6Socket13addressFamilyMFNdNfZEQBpQBo13AddressFamily@Base 15 ++ _D3std6socket6Socket13createAddressMFNaNbNfZCQBrQBq7Address@Base 15 ++ _D3std6socket6Socket13remoteAddressMFNdNeZCQBpQBo7Address@Base 15 ++ _D3std6socket6Socket4bindMFNeCQBcQBb7AddressZv@Base 15 ++ _D3std6socket6Socket4sendMFNeMAxvEQBgQBf11SocketFlagsZl@Base 15 ++ _D3std6socket6Socket4sendMFNfMAxvZl@Base 15 ++ _D3std6socket6Socket5closeMFNbNiNlNeZv@Base 15 ++ _D3std6socket6Socket6__ctorMFNaNbNiNfEQBkQBj8socket_tEQCaQBz13AddressFamilyZCQCxQCwQCs@Base 15 ++ _D3std6socket6Socket6__ctorMFNaNbNiNfZCQBlQBkQBg@Base 15 ++ _D3std6socket6Socket6__ctorMFNeEQBeQBd13AddressFamilyEQCaQBz10SocketTypeEQCtQCs12ProtocolTypeZCQDpQDoQDk@Base 15 ++ _D3std6socket6Socket6__ctorMFNeEQBeQBd13AddressFamilyEQCaQBz10SocketTypeMAxaZCQCyQCxQCt@Base 15 ++ _D3std6socket6Socket6__ctorMFNfEQBeQBd13AddressFamilyEQCaQBz10SocketTypeZCQCuQCtQCp@Base 15 ++ _D3std6socket6Socket6__ctorMFNfMxSQBgQBf11AddressInfoZCQCbQCaQBw@Base 15 ++ _D3std6socket6Socket6__dtorMFNbNiNlNfZv@Base 15 ++ _D3std6socket6Socket6__initZ@Base 15 ++ _D3std6socket6Socket6__vtblZ@Base 15 ++ _D3std6socket6Socket6_closeFNbNiEQBfQBe8socket_tZv@Base 15 ++ _D3std6socket6Socket6acceptMFNeZCQBfQBeQBa@Base 15 ++ _D3std6socket6Socket6handleMxFNaNbNdNiNfZEQBoQBn8socket_t@Base 15 ++ _D3std6socket6Socket6listenMFNeiZv@Base 15 ++ _D3std6socket6Socket6selectFNeCQBdQBc9SocketSetQrQtPSQBzQBy7TimeValZi@Base 15 ++ _D3std6socket6Socket6selectFNeCQBdQBc9SocketSetQrQtS4core4time8DurationZi@Base 15 ++ _D3std6socket6Socket6selectFNfCQBdQBc9SocketSetQrQtZi@Base 15 ++ _D3std6socket6Socket6sendToMFNeMAxvEQBiQBh11SocketFlagsCQCcQCb7AddressZl@Base 15 ++ _D3std6socket6Socket6sendToMFNeMAxvEQBiQBh11SocketFlagsZl@Base 15 ++ _D3std6socket6Socket6sendToMFNfMAxvCQBiQBh7AddressZl@Base 15 ++ _D3std6socket6Socket6sendToMFNfMAxvZl@Base 15 ++ _D3std6socket6Socket7__ClassZ@Base 15 ++ _D3std6socket6Socket7connectMFNeCQBfQBe7AddressZv@Base 15 ++ _D3std6socket6Socket7isAliveMxFNdNeZb@Base 15 ++ _D3std6socket6Socket7receiveMFNeMAvEQBiQBh11SocketFlagsZl@Base 15 ++ _D3std6socket6Socket7receiveMFNfMAvZl@Base 15 ++ _D3std6socket6Socket7releaseMFNaNbNdNiNfZEQBoQBn8socket_t@Base 15 ++ _D3std6socket6Socket7setSockMFNfEQBfQBe8socket_tZv@Base 15 ++ _D3std6socket6Socket8blockingMFNdNebZv@Base 15 ++ _D3std6socket6Socket8blockingMxFNbNdNiNeZb@Base 15 ++ _D3std6socket6Socket8capToIntFNbNiNfmZi@Base 15 ++ _D3std6socket6Socket8hostNameFNdNeZAya@Base 15 ++ _D3std6socket6Socket8shutdownMFNbNiNeEQBkQBj14SocketShutdownZv@Base 15 ++ _D3std6socket6Socket9acceptingMFNaNbNfZCQBmQBlQBh@Base 15 ++ _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJS4core4time8DurationZv@Base 15 ++ _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJSQDdQDc6LingerZi@Base 15 ++ _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionJiZi@Base 15 ++ _D3std6socket6Socket9getOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionMAvZi@Base 15 ++ _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionMAvZv@Base 15 ++ _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionS4core4time8DurationZv@Base 15 ++ _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptionSQDcQDb6LingerZv@Base 15 ++ _D3std6socket6Socket9setOptionMFNeEQBhQBg17SocketOptionLevelEQChQCg12SocketOptioniZv@Base 15 ++ _D3std6socket7Address10setNameLenMFNfkZv@Base 15 ++ _D3std6socket7Address12toAddrStringMxFNfZAya@Base 15 ++ _D3std6socket7Address12toHostStringMxFNebZAya@Base 15 ++ _D3std6socket7Address12toPortStringMxFNfZAya@Base 15 ++ _D3std6socket7Address13addressFamilyMxFNaNbNdNiNfZEQBxQBw13AddressFamily@Base 15 ++ _D3std6socket7Address15toServiceStringMxFNebZAya@Base 15 ++ _D3std6socket7Address16toHostNameStringMxFNfZAya@Base 15 ++ _D3std6socket7Address19toServiceNameStringMxFNfZAya@Base 15 ++ _D3std6socket7Address6__initZ@Base 15 ++ _D3std6socket7Address6__vtblZ@Base 15 ++ _D3std6socket7Address7__ClassZ@Base 15 ++ _D3std6socket7Address8toStringMxFNfZAya@Base 15 ++ _D3std6socket7Service16getServiceByNameMFNbNeMAxaMQeZb@Base 15 ++ _D3std6socket7Service16getServiceByPortMFNbNetMAxaZb@Base 15 ++ _D3std6socket7Service6__initZ@Base 15 ++ _D3std6socket7Service6__vtblZ@Base 15 ++ _D3std6socket7Service7__ClassZ@Base 15 ++ _D3std6socket7Service8populateMFNaNbPS4core3sys5posix5netdb7serventZv@Base 15 ++ _D3std6socket7TimeVal12microsecondsMNgFNaNbNcNdNiNjNfZNgl@Base 15 ++ _D3std6socket7TimeVal6__initZ@Base 15 ++ _D3std6socket7TimeVal7secondsMNgFNaNbNcNdNiNjNfZNgl@Base 15 ++ _D3std6socket8Protocol17getProtocolByNameMFNbNeMAxaZb@Base 15 ++ _D3std6socket8Protocol17getProtocolByTypeMFNbNeEQBuQBt12ProtocolTypeZb@Base 15 ++ _D3std6socket8Protocol6__initZ@Base 15 ++ _D3std6socket8Protocol6__vtblZ@Base 15 ++ _D3std6socket8Protocol7__ClassZ@Base 15 ++ _D3std6socket8Protocol8populateMFNaNbPS4core3sys5posix5netdb8protoentZv@Base 15 ++ _D3std6socket8_lasterrFNbNiNfZi@Base 15 ++ _D3std6socket8socket_t6__initZ@Base 15 ++ _D3std6socket9SocketSet14setMinCapacityMFNaNbNfmZv@Base 15 ++ _D3std6socket9SocketSet3addMFNaNbNeEQBiQBh8socket_tZv@Base 15 ++ _D3std6socket9SocketSet3addMFNaNbNfCQBiQBh6SocketZv@Base 15 ++ _D3std6socket9SocketSet3maxMxFNaNbNdNiNfZk@Base 15 ++ _D3std6socket9SocketSet4maskFNaNbNiNfkZl@Base 15 ++ _D3std6socket9SocketSet5isSetMxFNaNbNiNfCQBnQBm6SocketZi@Base 15 ++ _D3std6socket9SocketSet5isSetMxFNaNbNiNfEQBnQBm8socket_tZi@Base 15 ++ _D3std6socket9SocketSet5resetMFNaNbNiNfZv@Base 15 ++ _D3std6socket9SocketSet6__ctorMFNaNbNfmZCQBnQBmQBi@Base 15 ++ _D3std6socket9SocketSet6__initZ@Base 15 ++ _D3std6socket9SocketSet6__vtblZ@Base 15 ++ _D3std6socket9SocketSet6removeMFNaNbNfCQBlQBk6SocketZv@Base 15 ++ _D3std6socket9SocketSet6removeMFNaNbNfEQBlQBk8socket_tZv@Base 15 ++ _D3std6socket9SocketSet6resizeMFNaNbNfmZv@Base 15 ++ _D3std6socket9SocketSet7__ClassZ@Base 15 ++ _D3std6socket9SocketSet7selectnMxFNaNbNiNfZi@Base 15 ++ _D3std6socket9SocketSet8capacityMxFNaNbNdNiNfZm@Base 15 ++ _D3std6socket9SocketSet8toFd_setMFNaNbNiNeZPS4core3sys5posixQk6select6fd_set@Base 15 ++ _D3std6socket9SocketSet9lengthForFNaNbNiNfmZm@Base 15 ++ _D3std6socket9TcpSocket6__ctorMFNfCQBhQBg7AddressZCQBxQBwQBs@Base 15 ++ _D3std6socket9TcpSocket6__ctorMFNfEQBhQBg13AddressFamilyZCQCeQCdQBz@Base 15 ++ _D3std6socket9TcpSocket6__ctorMFNfZCQBiQBhQBd@Base 15 ++ _D3std6socket9TcpSocket6__initZ@Base 15 ++ _D3std6socket9TcpSocket6__vtblZ@Base 15 ++ _D3std6socket9TcpSocket7__ClassZ@Base 15 ++ _D3std6socket9UdpSocket6__ctorMFNfEQBhQBg13AddressFamilyZCQCeQCdQBz@Base 15 ++ _D3std6socket9UdpSocket6__ctorMFNfZCQBiQBhQBd@Base 15 ++ _D3std6socket9UdpSocket6__initZ@Base 15 ++ _D3std6socket9UdpSocket6__vtblZ@Base 15 ++ _D3std6socket9UdpSocket7__ClassZ@Base 15 ++ _D3std6socket__T14getAddressInfoTAxaTEQBkQBj13AddressFamilyZQBsFNfMQBiMQBmMQBmZASQDbQDa11AddressInfo@Base 15 ++ _D3std6socket__T14getAddressInfoTAxaTEQBkQBj16AddressInfoFlagsZQBvFNfMQBlMQBpMQBpZASQDeQDd11AddressInfo@Base 15 ++ _D3std6socket__T14getAddressInfoTAxaZQvFNfMQkMQnZASQBxQBw11AddressInfo@Base 15 ++ _D3std6socket__T14getAddressInfoTEQBgQBf16AddressInfoFlagsZQBrFNfMAxaMQBlZASQCwQCv11AddressInfo@Base 15 ++ _D3std6stdint11__moduleRefZ@Base 15 ++ _D3std6stdint12__ModuleInfoZ@Base 15 ++ _D3std6string11__moduleRefZ@Base 15 ++ _D3std6string12__ModuleInfoZ@Base 15 ++ _D3std6string14makeTransTableFNaNbNiNfMAxaMQeZG256a@Base 15 ++ _D3std6string15StringException6__initZ@Base 15 ++ _D3std6string15StringException6__vtblZ@Base 15 ++ _D3std6string15StringException7__ClassZ@Base 15 ++ _D3std6string15StringException8__mixin26__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDbQCx@Base 15 ++ _D3std6string15StringException8__mixin26__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDbQCx@Base 15 ++ _D3std6string6abbrevFNaNfAAyaZHQfQh@Base 15 ++ _D3std6string7soundexFNaNbNfMAxaNkMAaZQd@Base 15 ++ _D3std6string9makeTransFNaNbNeMAxaMQeZAya@Base 15 ++ _D3std6string9toStringzFNaNbNeMAxaZPya@Base 15 ++ _D3std6string__T10stripRightTAyaZQrFNaNbNiNfQpZQs@Base 15 ++ _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi0Z__TQDbTAxaTaZQDlFNaNfQoQqZl@Base 15 ++ _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi1Z__TQDbTAxaTaZQDlFNaNbNiNfQsQuZl@Base 15 ++ _D3std6string__T11_indexOfStrVEQBd8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoi1Z__TQDbTQBvTaZQDlFNaNbNiNfQCnAxaZl@Base 15 ++ _D3std6string__T11lastIndexOfTaZQqFNaNiNfAxaIwIEQBu8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 ++ _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf11__xopEqualsMxFKxSQEpQEo__TQEkVQDzi0TQDjZQEyZb@Base 15 ++ _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf4saveMFNaNbNdNiNfZSQEpQEo__TQEkVQDzi0TQDjZQEy@Base 15 ++ _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf5frontMFNaNbNdNiNfZQCq@Base 15 ++ _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__ctorMFNaNbNcNiNfQCqZSQEuQEt__TQEpVQEei0TQDoZQFd@Base 15 ++ _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf6__initZ@Base 15 ++ _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std6string__T12LineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TQBqZQDf9__xtoHashFNbNeKxSQEoQEn__TQEjVQDyi0TQDiZQExZm@Base 15 ++ _D3std6string__T12lineSplitterVEQBe8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBqi0TyaZQDeFNaNbNiNfQCfZSQEjQEi__T12LineSplitterVQEei0TQDoZQz@Base 15 ++ _D3std6string__T14representationTxaZQuFNaNbNiNfAxaZAxh@Base 15 ++ _D3std6string__T14representationTyaZQuFNaNbNiNfAyaZAyh@Base 15 ++ _D3std6string__T5chompTAxaZQlFNaNbNiNfQpZQs@Base 15 ++ _D3std6string__T5stripTAyaZQlFNaNbNiNfQpZQs@Base 15 ++ _D3std6string__T7indexOfTAxaTaZQpFNaNbNiNfQrQtZl@Base 15 ++ _D3std6string__T7indexOfTAxaTaZQpFNaNfQnQpIEQBq8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 ++ _D3std6string__T7indexOfTAyaTaZQpFNaNbNiNfQrAxaZl@Base 15 ++ _D3std6string__T7indexOfTaZQlFNaNbNiNfMAxawEQBq8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 ++ _D3std6string__T8_indexOfTAxaZQoFNaNbNiNfQpwEQBr8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZl@Base 15 ++ _D3std6string__T8_indexOfTAxaZQoFQhwEQBj8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBoZ13trustedmemchrFNaNbNiNeQDqaZl@Base 15 ++ _D3std6string__T9isNumericTAxaZQpFNaNbNiNfQpbZb@Base 15 ++ _D3std6string__T9isNumericTAxaZQpFQhbZ__T8asciiCmpTSQBy3utf__T10byCodeUnitTQBwZQrFQCdZ14ByCodeUnitImplZQCkFNaNbNiNfQCmAyaZb@Base 15 ++ _D3std6string__T9soundexerTAxaZQpFNaNbNiNfQpZG4a@Base 15 ++ _D3std6string__T9soundexerTAxaZQpFQhZ3dexyAa@Base 15 ++ _D3std6string__T9stripLeftTAyaZQpFNaNbNiNfQpZQs@Base 15 ++ _D3std6system11__moduleRefZ@Base 15 ++ _D3std6system12__ModuleInfoZ@Base 15 ++ _D3std6system26instructionSetArchitectureyEQBpQBo3ISA@Base 15 ++ _D3std6system2OS6__initZ@Base 15 ++ _D3std6system2osyEQqQo2OS@Base 15 ++ _D3std6system6endianyEQuQs6Endian@Base 15 ++ _D3std6traits11__moduleRefZ@Base 15 ++ _D3std6traits11dip1000TestFNaNbNiNfiZi@Base 15 ++ _D3std6traits12__ModuleInfoZ@Base 15 ++ _D3std6traits23__InoutWorkaroundStruct6__initZ@Base 15 ++ _D3std6traits__T18extractAttribFlagsVAyaa7_6e6f7468726f77VQva5_406e6f6763VQBla5_4073616665ZQCxFNaNbNiNfZEQDzQDy17FunctionAttribute@Base 15 ++ _D3std7complex11__moduleRefZ@Base 15 ++ _D3std7complex12__ModuleInfoZ@Base 15 ++ _D3std7complex4expiFNaNbNiNeeZSQBdQBc__T7ComplexTeZQl@Base 15 ++ _D3std7complex9coshisinhFNaNbNiNfeZSQBiQBh__T7ComplexTeZQl@Base 15 ++ _D3std7complex__T7ComplexTeZQl11__xopEqualsMxFKxSQBvQBu__TQBpTeZQBvZb@Base 15 ++ _D3std7complex__T7ComplexTeZQl6__initZ@Base 15 ++ _D3std7complex__T7ComplexTeZQl8toNativeMFNaNbNiNfZE4core4stdc6config16__c_complex_real@Base 15 ++ _D3std7complex__T7ComplexTeZQl8toStringMxFNaNfZAya@Base 15 ++ _D3std7complex__T7ComplexTeZQl8toStringMxFNfZ__T19trustedAssumeUniqueTAaZQzFNaNbNiNeQoZAya@Base 15 ++ _D3std7complex__T7ComplexTeZQl9__xtoHashFNbNeKxSQBuQBt__TQBoTeZQBuZm@Base 15 ++ _D3std7complex__T7ComplexTeZQl__T6__ctorHTeHTeZQoMFNaNbNcNiNfxexeZSQCnQCm__TQChTeZQCn@Base 15 ++ _D3std7complex__T7ComplexTeZQl__T8opEqualsHTeZQnMxFNaNbNiNfSQCgQCf__TQCaTeZQCgZb@Base 15 ++ _D3std7complex__T7ComplexTeZQl__T8toStringTDFNaNbNfAxaZvTaZQBaMxFNaNfMQBbMKxSQCx6format4spec__T10FormatSpecTaZQpZv@Base 15 ++ _D3std7numeric11__moduleRefZ@Base 15 ++ _D3std7numeric12__ModuleInfoZ@Base 15 ++ _D3std7numeric16CustomFloatFlags6__initZ@Base 15 ++ _D3std7numeric18decimalToFactorialFNaNbNiNfmKG21hZm@Base 15 ++ _D3std7numeric20isCorrectCustomFloatFNaNbNiNfkkEQBuQBt16CustomFloatFlagsZb@Base 15 ++ _D3std7numeric3Fft4sizeMxFNdZm@Base 15 ++ _D3std7numeric3Fft6__ctorMFAfZCQBdQBcQx@Base 15 ++ _D3std7numeric3Fft6__ctorMFmZCQBcQBbQw@Base 15 ++ _D3std7numeric3Fft6__initZ@Base 15 ++ _D3std7numeric3Fft6__vtblZ@Base 15 ++ _D3std7numeric3Fft7__ClassZ@Base 15 ++ _D3std7numeric__T13oppositeSignsTyeTeZQvFNaNbNiNfyeeZb@Base 15 ++ _D3std7numeric__T6StrideTAfZQl11__xopEqualsMxFKxSQBvQBu__TQBpTQBlZQBxZb@Base 15 ++ _D3std7numeric__T6StrideTAfZQl11doubleStepsMFNaNbNiNfZv@Base 15 ++ _D3std7numeric__T6StrideTAfZQl4saveMFNaNbNdNiNfZSQBvQBu__TQBpTQBlZQBx@Base 15 ++ _D3std7numeric__T6StrideTAfZQl5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std7numeric__T6StrideTAfZQl5frontMFNaNbNdNiNfZf@Base 15 ++ _D3std7numeric__T6StrideTAfZQl6__ctorMFNaNbNcNiNfQymZSQCaQBz__TQBuTQBqZQCc@Base 15 ++ _D3std7numeric__T6StrideTAfZQl6__initZ@Base 15 ++ _D3std7numeric__T6StrideTAfZQl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std7numeric__T6StrideTAfZQl6nStepsMFNaNbNdNiNfmZm@Base 15 ++ _D3std7numeric__T6StrideTAfZQl6nStepsMxFNaNbNdNiNfZm@Base 15 ++ _D3std7numeric__T6StrideTAfZQl7opIndexMFNaNbNiNfmZf@Base 15 ++ _D3std7numeric__T6StrideTAfZQl7popHalfMFNaNbNiNfZv@Base 15 ++ _D3std7numeric__T6StrideTAfZQl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std7numeric__T6StrideTAfZQl9__xtoHashFNbNeKxSQBuQBt__TQBoTQBkZQBwZm@Base 15 ++ _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBpFNaNbNiNfMQBqxexeMQBkZe@Base 15 ++ _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeZQBaFMQtxexeZ18__lambda_L1165_C30FNaNbNiNfeeZb@Base 15 ++ _D3std7numeric__T8findRootTeTDFNaNbNiNfeZeZQBaFNaNbNiNfMQBbxexeZe@Base 15 ++ _D3std7numeric__T8findRootTeTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBrFMQBixexexexeMQBgZ18secant_interpolateFNaNbNiNfeeeeZe@Base 15 ++ _D3std7numeric__T8findRootTeTeTDFNaNbNiNfeZeTPFNaNbNiNfeeZbZQBrFNaNbNiNfMQBqxexexexeMQBoZSQDk8typecons__T5TupleTeTeTeTeZQp@Base 15 ++ _D3std7process10setCLOEXECFNbNiibZv@Base 15 ++ _D3std7process10spawnShellFNeMAxaMxHAyaAyaSQBpQBo6ConfigMQBbMQzZCQClQCk3Pid@Base 15 ++ _D3std7process10spawnShellFNeMAxaSQBg5stdio4FileQpQrMxHAyaAyaSQCiQCh6ConfigMQBuMQzZCQDeQDd3Pid@Base 15 ++ _D3std7process10toAStringzFIAAyaZPPxa@Base 15 ++ _D3std7process11__moduleRefZ@Base 15 ++ _D3std7process11environment13opIndexAssignFNeNkMNgAaMAxaZANga@Base 15 ++ _D3std7process11environment3getFNfMAxaAyaZQe@Base 15 ++ _D3std7process11environment4toAAFNeZHAyaQd@Base 15 ++ _D3std7process11environment6__initZ@Base 15 ++ _D3std7process11environment6__vtblZ@Base 15 ++ _D3std7process11environment6removeFNbNiNeMAxaZv@Base 15 ++ _D3std7process11environment7__ClassZ@Base 15 ++ _D3std7process11environment7getImplFNeMAxaMDFNfQiZvZv@Base 15 ++ _D3std7process11environment7opIndexFNfMAxaZAya@Base 15 ++ _D3std7process11environment__T14cachedToStringTaZQtFNbNfMAxaZAya@Base 15 ++ _D3std7process11environment__T14cachedToStringTaZQtFNfMAxaZ10lastResultAya@Base 15 ++ _D3std7process11nativeShellFNaNbNdNiNfZAya@Base 15 ++ _D3std7process11pipeProcessFNfMAxAaEQBiQBh8RedirectxHAyaAyaSQCgQCf6ConfigMAxaZSQCzQCy12ProcessPipes@Base 15 ++ _D3std7process11pipeProcessFNfMAxaEQBhQBg8RedirectxHAyaAyaSQCfQCe6ConfigMQBqZSQCyQCx12ProcessPipes@Base 15 ++ _D3std7process11shellSwitchyAa@Base 15 ++ _D3std7process12ProcessPipes11__fieldDtorMFNeZv@Base 15 ++ _D3std7process12ProcessPipes11__xopEqualsMxFKxSQBtQBsQBnZb@Base 15 ++ _D3std7process12ProcessPipes15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std7process12ProcessPipes3pidMFNbNdNfZCQBoQBn3Pid@Base 15 ++ _D3std7process12ProcessPipes5stdinMFNbNdNfZSQBq5stdio4File@Base 15 ++ _D3std7process12ProcessPipes6__initZ@Base 15 ++ _D3std7process12ProcessPipes6stderrMFNbNdNfZSQBr5stdio4File@Base 15 ++ _D3std7process12ProcessPipes6stdoutMFNbNdNfZSQBr5stdio4File@Base 15 ++ _D3std7process12ProcessPipes8opAssignMFNcNjNeSQBsQBrQBmZQl@Base 15 ++ _D3std7process12ProcessPipes9__xtoHashFNbNeKxSQBsQBrQBmZm@Base 15 ++ _D3std7process12__ModuleInfoZ@Base 15 ++ _D3std7process12executeShellFNfMAxaxHAyaAyaSQBqQBp6ConfigmMQBbQzZSQCm8typecons__T5TupleTiVQCba6_737461747573TQCuVQCya6_6f7574707574ZQBz@Base 15 ++ _D3std7process12spawnProcessFNeMAxAaxHAyaAyaSQBrQBq6ConfigMAxaZCQCkQCj3Pid@Base 15 ++ _D3std7process12spawnProcessFNeMAxaSQBi5stdio4FileQpQrxHAyaAyaSQCjQCi6ConfigMQBtZCQDcQDb3Pid@Base 15 ++ _D3std7process12spawnProcessFNeMAxaxHAyaAyaSQBqQBp6ConfigMQBaZCQCjQCi3Pid@Base 15 ++ _D3std7process12spawnProcessFNfMAxAaSQBj5stdio4FileQpQrxHAyaAyaSQCkQCj6ConfigMxQBtZCQDeQDd3Pid@Base 15 ++ _D3std7process12thisThreadIDFNbNdNiNeZm@Base 15 ++ _D3std7process13charAllocatorFNaNbNfmZAa@Base 15 ++ _D3std7process13searchPathForFNfMAxaZAya@Base 15 ++ _D3std7process13thisProcessIDFNbNdNiNeZi@Base 15 ++ _D3std7process14uniqueTempPathFNfZAya@Base 15 ++ _D3std7process16ProcessException12newFromErrnoFAyaQdmZCQCbQCaQBv@Base 15 ++ _D3std7process16ProcessException12newFromErrnoFiAyaQdmZCQCcQCbQBw@Base 15 ++ _D3std7process16ProcessException6__initZ@Base 15 ++ _D3std7process16ProcessException6__vtblZ@Base 15 ++ _D3std7process16ProcessException7__ClassZ@Base 15 ++ _D3std7process16ProcessException8__mixin36__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDeQDdQCy@Base 15 ++ _D3std7process16ProcessException8__mixin36__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDeQDdQCy@Base 15 ++ _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ12abortOnErrorFNbNiiEQEdQEc13InternalErroriZv@Base 15 ++ _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ5getFDFNfKQCfZi@Base 15 ++ _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZ9forkChildMFNbNiZ11execProcessMFZ9closefromMFiZ17tryGlibcClosefromFNbNiiZb@Base 15 ++ _D3std7process17spawnProcessPosixFNeMAxAaSQBo5stdio4FileQpQrMxHAyaAyaSQCqQCp6ConfigMAxaZCQDjQDi3Pid@Base 15 ++ _D3std7process18escapeShellCommandFNaNfAxAaXAya@Base 15 ++ _D3std7process19escapePosixArgumentFNaNbNeMAxaZAya@Base 15 ++ _D3std7process19escapeShellFileNameFNaNbNeMAxaZAya@Base 15 ++ _D3std7process20escapeShellArgumentsFNaNbNeAxAaX9allocatorMFNaNbNfmZAa@Base 15 ++ _D3std7process20escapeShellArgumentsFNaNbNeAxAaXAya@Base 15 ++ _D3std7process21escapeWindowsArgumentFNaNbNeMAxaZAya@Base 15 ++ _D3std7process24escapeShellCommandStringFNaNfNkMAyaZQe@Base 15 ++ _D3std7process25escapeWindowsShellCommandFNaNfMAxaZAya@Base 15 ++ _D3std7process3Pid11performWaitMFNebZi@Base 15 ++ _D3std7process3Pid6__ctorMFNaNbNfibZCQBjQBiQBd@Base 15 ++ _D3std7process3Pid6__initZ@Base 15 ++ _D3std7process3Pid6__vtblZ@Base 15 ++ _D3std7process3Pid7__ClassZ@Base 15 ++ _D3std7process3Pid8osHandleMFNaNbNdNiNfZi@Base 15 ++ _D3std7process3Pid9processIDMxFNaNbNdNfZi@Base 15 ++ _D3std7process4Pipe11__fieldDtorMFNeZv@Base 15 ++ _D3std7process4Pipe11__xopEqualsMxFKxSQBkQBjQBeZb@Base 15 ++ _D3std7process4Pipe15__fieldPostblitMFNaNbNiNlNeZv@Base 15 ++ _D3std7process4Pipe5closeMFNfZv@Base 15 ++ _D3std7process4Pipe6__initZ@Base 15 ++ _D3std7process4Pipe7readEndMFNbNdNfZSQBj5stdio4File@Base 15 ++ _D3std7process4Pipe8opAssignMFNcNjNeSQBjQBiQBdZQl@Base 15 ++ _D3std7process4Pipe8writeEndMFNbNdNfZSQBk5stdio4File@Base 15 ++ _D3std7process4Pipe9__xtoHashFNbNeKxSQBjQBiQBdZm@Base 15 ++ _D3std7process4killFCQtQr3PidZv@Base 15 ++ _D3std7process4killFCQtQr3PidiZv@Base 15 ++ _D3std7process4pipeFNeZSQwQu4Pipe@Base 15 ++ _D3std7process4waitFNfCQvQt3PidZi@Base 15 ++ _D3std7process5execvFIAyaIAQfZi@Base 15 ++ _D3std7process6Config6__initZ@Base 15 ++ _D3std7process6browseFNbNiNfMAxaZ18__lambda_L4546_C33FNbNiNeZPa@Base 15 ++ _D3std7process6browseFNbNiNfMAxaZv@Base 15 ++ _D3std7process6execv_FIAyaIAQfZi@Base 15 ++ _D3std7process6execveFIAyaIAQfIQeZi@Base 15 ++ _D3std7process6execvpFIAyaIAQfZi@Base 15 ++ _D3std7process7executeFNfMAxAaxHAyaAyaSQBlQBk6ConfigmMAxaZSQCf8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 ++ _D3std7process7executeFNfMAxaxHAyaAyaSQBkQBj6ConfigmMQBbZSQCe8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 ++ _D3std7process7execve_FIAyaIAQfIQeZi@Base 15 ++ _D3std7process7execvp_FIAyaIAQfZi@Base 15 ++ _D3std7process7execvpeFIAyaIAQfIQeZi@Base 15 ++ _D3std7process7tryWaitFNfCQyQw3PidZSQBi8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg@Base 15 ++ _D3std7process8Redirect6__initZ@Base 15 ++ _D3std7process8execvpe_FIAyaIAQfIQeZi@Base 15 ++ _D3std7process9createEnvFxHAyaAyabZPxPa@Base 15 ++ _D3std7process9pipeShellFNfMAxaEQBeQBd8RedirectxHAyaAyaSQCcQCb6ConfigMQBqQyZSQCxQCw12ProcessPipes@Base 15 ++ _D3std7process9userShellFNdNfZAya@Base 15 ++ _D3std7process__T11executeImplSQBdQBc11pipeProcessTAxAaZQBnFNeQlxHAyaAyaSQCtQCs6ConfigmMAxaZSQDn8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 ++ _D3std7process__T11executeImplSQBdQBc11pipeProcessTAxaZQBmFNeQkxHAyaAyaSQCsQCr6ConfigmMQBkZSQDm8typecons__T5TupleTiVQBza6_737461747573TQCsVQCwa6_6f7574707574ZQBz@Base 15 ++ _D3std7process__T11executeImplS_DQBfQBe9pipeShellFNfMAxaEQCdQCc8RedirectxHAyaAyaSQDbQDa6ConfigMQBqQyZSQDwQDv12ProcessPipesTQCsTQCbZQEkFNeQDgxQCqQCmmMQDsQDaZSQFz8typecons__T5TupleTiVQEda6_737461747573TQEwVQFaa6_6f7574707574ZQBz@Base 15 ++ _D3std7process__T12isExecutableTSQBf5range__T5chainTSQBz3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQDyQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFkFNbNiNeQFfZb@Base 15 ++ _D3std7process__T15pipeProcessImplSQBhQBg10spawnShellTAxaTAyaZQBtFNeMQpEQCsQCr8RedirectxHQBfAyaSQDqQDp6ConfigMQCeQCdZSQEmQEl12ProcessPipes@Base 15 ++ _D3std7process__T15pipeProcessImplSQBhQBg12spawnProcessTAxAaZQBsFNeMQmEQCrQCq8RedirectxHAyaAyaSQDpQDo6ConfigMAxaZSQEiQEh12ProcessPipes@Base 15 ++ _D3std7process__T15pipeProcessImplSQBhQBg12spawnProcessTAxaZQBrFNeMQlEQCqQCp8RedirectxHAyaAyaSQDoQDn6ConfigMQCaZSQEhQEg12ProcessPipes@Base 15 ++ _D3std7process__T23escapePosixArgumentImplS_DQBrQBq13charAllocatorFNaNbNfmZAaZQCjFNaNbNfMAxaZQs@Base 15 ++ _D3std7process__T25escapeWindowsArgumentImplS_DQBtQBs13charAllocatorFNaNbNfmZAaZQClFNaNbNfMAxaZQs@Base 15 ++ _D3std7signals11__moduleRefZ@Base 15 ++ _D3std7signals12__ModuleInfoZ@Base 15 ++ _D3std7signals6linkinFZv@Base 15 ++ _D3std7sumtype11__moduleRefZ@Base 15 ++ _D3std7sumtype12__ModuleInfoZ@Base 15 ++ _D3std7sumtype14MatchException6__ctorMFNaNbNiNfAyaQdmZCQCbQCaQBv@Base 15 ++ _D3std7sumtype14MatchException6__initZ@Base 15 ++ _D3std7sumtype14MatchException6__vtblZ@Base 15 ++ _D3std7sumtype14MatchException7__ClassZ@Base 15 ++ _D3std7sumtype4This6__initZ@Base 15 ++ _D3std7variant11__moduleRefZ@Base 15 ++ _D3std7variant12__ModuleInfoZ@Base 15 ++ _D3std7variant15FakeComplexReal11__xopEqualsMxFKxSQBwQBvQBqZb@Base 15 ++ _D3std7variant15FakeComplexReal6__initZ@Base 15 ++ _D3std7variant15FakeComplexReal9__xtoHashFNbNeKxSQBvQBuQBpZm@Base 15 ++ _D3std7variant16VariantException6__ctorMFAyaZCQBsQBrQBm@Base 15 ++ _D3std7variant16VariantException6__ctorMFC8TypeInfoQkZCQCbQCaQBv@Base 15 ++ _D3std7variant16VariantException6__initZ@Base 15 ++ _D3std7variant16VariantException6__vtblZ@Base 15 ++ _D3std7variant16VariantException7__ClassZ@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp10__postblitMFZv@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp11SizeChecker6__initZ@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp11__xopEqualsMxFKxSQBzQBy__TQBtVmi32ZQCcZb@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp4typeMxFNbNdNeZC8TypeInfo@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp5opCmpMxFKxSQBsQBr__TQBmVmi32ZQBvZi@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp6__dtorMFNfZv@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp6lengthMFNdZm@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp6toHashMxFNbNfZm@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp8hasValueMxFNaNbNdNiNfZb@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp8toStringMFZAya@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T10convertsToTSQBx11concurrency3TidZQBjMxFNdZb@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T3getTSQBp11concurrency3TidZQBbMNgFNdZNgSQCxQBiQy@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T4peekTvZQiMNgFNbNdNfZPNgv@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T5opCmpTSQBrQBq__TQBlVmi32ZQBuZQBeMFQBcZi@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T6__ctorTSQBs11concurrency3TidZQBeMFNcQBdZSQCzQCy__TQCtVmi32ZQDc@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T7handlerHTvZQmFEQBzQBy__TQBtVmi32ZQCc4OpIDPG32hPvZl@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ10tryPuttingFPQCxC8TypeInfoQBeZb@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ6getPtrFNaNbNiQrZPQDb@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZ7compareFPQCtQeQByZl@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T7handlerTSQBt11concurrency3TidZQBfFEQCtQCs__TQCnVmi32ZQCw4OpIDPG32hPvZl@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T8opAssignTSQBu11concurrency3TidZQBgMFQBbZSQCzQCy__TQCtVmi32ZQDc@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T8opEqualsTSQBuQBt__TQBoVmi32ZQBxZQBhMxFKQBeZb@Base 15 ++ _D3std7variant__T8VariantNVmi32ZQp__T8opEqualsTxSQBvQBu__TQBpVmi32ZQByZQBiMxFKxQBfZb@Base 15 ++ _D3std7windows7charset11__moduleRefZ@Base 15 ++ _D3std7windows7charset12__ModuleInfoZ@Base 15 ++ _D3std7windows8registry11__moduleRefZ@Base 15 ++ _D3std7windows8registry12__ModuleInfoZ@Base 15 ++ _D3std7windows8syserror11__moduleRefZ@Base 15 ++ _D3std7windows8syserror12__ModuleInfoZ@Base 15 ++ _D3std8bitmanip10myToStringFNaNfmZAya@Base 15 ++ _D3std8bitmanip11__moduleRefZ@Base 15 ++ _D3std8bitmanip12__ModuleInfoZ@Base 15 ++ _D3std8bitmanip15getBitsForAlignFmZm@Base 15 ++ _D3std8bitmanip8BitArray13opIndexAssignMFNaNbNibmZb@Base 15 ++ _D3std8bitmanip8BitArray13opSliceAssignMFNaNbNibZv@Base 15 ++ _D3std8bitmanip8BitArray13opSliceAssignMFNaNbNibmmZv@Base 15 ++ _D3std8bitmanip8BitArray3dimMxFNaNbNdNiNfZm@Base 15 ++ _D3std8bitmanip8BitArray3dupMxFNaNbNdZSQBlQBkQBe@Base 15 ++ _D3std8bitmanip8BitArray4flipMFNaNbNiZv@Base 15 ++ _D3std8bitmanip8BitArray4flipMFNaNbNimZv@Base 15 ++ _D3std8bitmanip8BitArray4sortMFNaNbNdNiNjZSQBpQBoQBi@Base 15 ++ _D3std8bitmanip8BitArray5countMxFNaNbNiNlNfZm@Base 15 ++ _D3std8bitmanip8BitArray5opCmpMxFNaNbNiSQBmQBlQBfZi@Base 15 ++ _D3std8bitmanip8BitArray6__ctorMFNaNbNcIAbZSQBqQBpQBj@Base 15 ++ _D3std8bitmanip8BitArray6__ctorMFNaNbNcNiAvmZSQBsQBrQBl@Base 15 ++ _D3std8bitmanip8BitArray6__ctorMFNaNbNcNimPmZSQBsQBrQBl@Base 15 ++ _D3std8bitmanip8BitArray6__initZ@Base 15 ++ _D3std8bitmanip8BitArray6lengthMFNaNbNdmZm@Base 15 ++ _D3std8bitmanip8BitArray6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8bitmanip8BitArray6toHashMxFNaNbNiZm@Base 15 ++ _D3std8bitmanip8BitArray7bitsSetMxFNaNbNdZSQBp5range__T5chainTSQCj9algorithm9iteration__T6joinerTSQDsQBjQBc__T9MapResultSQEpQEoQEiQEcMxFNbNdZ18__lambda_L2658_C23TSQGfQDwQDp__T12FilterResultSQHgQHfQGzQGtMxFNbNdZ18__lambda_L2657_C26TSQIwQHh__T4iotaTmTmZQkFmmZ6ResultZQDmZQGdZQHcFQGyZQyTSQKxQIoQIh__TQEsSQLnQLmQLgQLaMxFNbNdZ18__lambda_L2661_C26TSQNdQLo__TQEhTmTxmZQEqFmxmZQEiZQHqZQMkFQMhQDwZQFb@Base 15 ++ _D3std8bitmanip8BitArray7endBitsMxFNaNbNdNiNlNfZm@Base 15 ++ _D3std8bitmanip8BitArray7endMaskMxFNaNbNdNiNlNfZm@Base 15 ++ _D3std8bitmanip8BitArray7opApplyMFMDFKbZiZi@Base 15 ++ _D3std8bitmanip8BitArray7opApplyMFMDFmKbZiZi@Base 15 ++ _D3std8bitmanip8BitArray7opApplyMxFMDFbZiZi@Base 15 ++ _D3std8bitmanip8BitArray7opApplyMxFMDFmbZiZi@Base 15 ++ _D3std8bitmanip8BitArray7opIndexMxFNaNbNimZb@Base 15 ++ _D3std8bitmanip8BitArray7reverseMFNaNbNdNiNjZSQBsQBrQBl@Base 15 ++ _D3std8bitmanip8BitArray8lenToDimFNaNbNiNfmZm@Base 15 ++ _D3std8bitmanip8BitArray8opEqualsMxFNaNbNiKxSQBrQBqQBkZb@Base 15 ++ _D3std8bitmanip8BitArray9fullWordsMxFNaNbNdNiNlNfZm@Base 15 ++ _D3std8bitmanip__T12countBitsSetTmZQrFNaNbNiNfxmZk@Base 15 ++ _D3std8bitmanip__T17bigEndianToNativeTaVmi1ZQBaFNaNbNiNeG1hZa@Base 15 ++ _D3std8bitmanip__T17bigEndianToNativeTbVmi1ZQBaFNaNbNiNeG1hZb@Base 15 ++ _D3std8bitmanip__T17bigEndianToNativeThVmi1ZQBaFNaNbNiNeG1hZh@Base 15 ++ _D3std8bitmanip__T17bigEndianToNativeTiVmi4ZQBaFNaNbNiNeG4hZi@Base 15 ++ _D3std8bitmanip__T17bigEndianToNativeTlVmi8ZQBaFNaNbNiNeG8hZl@Base 15 ++ _D3std8bitmanip__T20littleEndianToNativeTkVmi4ZQBdFNaNbNiNeG4hZk@Base 15 ++ _D3std8bitmanip__T20littleEndianToNativeTmVmi8ZQBdFNaNbNiNeG8hZm@Base 15 ++ _D3std8bitmanip__T20littleEndianToNativeTtVmi2ZQBdFNaNbNiNeG2hZt@Base 15 ++ _D3std8bitmanip__T20nativeToLittleEndianTkZQzFNaNbNiNexkZG4h@Base 15 ++ _D3std8bitmanip__T20nativeToLittleEndianTmZQzFNaNbNiNexmZG8h@Base 15 ++ _D3std8bitmanip__T20nativeToLittleEndianTtZQzFNaNbNiNextZG2h@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg4signMFNaNbNdNiNfbZv@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg4signMxFNaNbNdNiNfZb@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg6__initZ@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8exponentMFNaNbNdNiNftZv@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8exponentMxFNaNbNdNiNfZt@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8fractionMFNaNbNdNiNfmZv@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTdZQBg8fractionMxFNaNbNdNiNfZm@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg4signMFNaNbNdNiNfbZv@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg4signMxFNaNbNdNiNfZb@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg6__initZ@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8exponentMFNaNbNdNiNfhZv@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8exponentMxFNaNbNdNiNfZh@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8fractionMFNaNbNdNiNfkZv@Base 15 ++ _D3std8bitmanip__T27FloatingPointRepresentationTfZQBg8fractionMxFNaNbNdNiNfZk@Base 15 ++ _D3std8bitmanip__T7BitsSetTmZQl4saveMxFNaNbNdNiNfZSQBxQBw__TQBqTmZQBw@Base 15 ++ _D3std8bitmanip__T7BitsSetTmZQl5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8bitmanip__T7BitsSetTmZQl5frontMxFNaNbNdNiNfZm@Base 15 ++ _D3std8bitmanip__T7BitsSetTmZQl6__ctorMFNaNbNcNiNfmmZSQCaQBz__TQBtTmZQBz@Base 15 ++ _D3std8bitmanip__T7BitsSetTmZQl6__initZ@Base 15 ++ _D3std8bitmanip__T7BitsSetTmZQl6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8bitmanip__T7BitsSetTmZQl8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8compiler11__moduleRefZ@Base 15 ++ _D3std8compiler12__ModuleInfoZ@Base 15 ++ _D3std8compiler13version_majoryk@Base 15 ++ _D3std8compiler13version_minoryk@Base 15 ++ _D3std8compiler4nameyAa@Base 15 ++ _D3std8compiler6vendoryEQwQu6Vendor@Base 15 ++ _D3std8compiler7D_majoryk@Base 15 ++ _D3std8compiler7D_minoryk@Base 15 ++ _D3std8datetime11__moduleRefZ@Base 15 ++ _D3std8datetime12__ModuleInfoZ@Base 15 ++ _D3std8datetime4date10castToYearFNaNfiAyamZs@Base 15 ++ _D3std8datetime4date11__moduleRefZ@Base 15 ++ _D3std8datetime4date11_monthNamesyG12Aa@Base 15 ++ _D3std8datetime4date11lastDayLeapyG13i@Base 15 ++ _D3std8datetime4date11timeStringsyAAa@Base 15 ++ _D3std8datetime4date12__ModuleInfoZ@Base 15 ++ _D3std8datetime4date12cmpTimeUnitsFNaNfAyaQdZi@Base 15 ++ _D3std8datetime4date12getDayOfWeekFNaNbNiNfiZEQBsQBrQBl9DayOfWeek@Base 15 ++ _D3std8datetime4date13monthToStringFNaNfEQBnQBmQBg5MonthZAya@Base 15 ++ _D3std8datetime4date13monthsToMonthFNaNfiiZi@Base 15 ++ _D3std8datetime4date14lastDayNonLeapyG13i@Base 15 ++ _D3std8datetime4date14validTimeUnitsFNaNbNiNfAAyaXb@Base 15 ++ _D3std8datetime4date14yearIsLeapYearFNaNbNiNfiZb@Base 15 ++ _D3std8datetime4date15daysToDayOfWeekFNaNbNiNfEQBtQBsQBm9DayOfWeekQuZi@Base 15 ++ _D3std8datetime4date16cmpTimeUnitsCTFEFNaNbNiNfAyaQdZi@Base 15 ++ _D3std8datetime4date4Date10diffMonthsMxFNaNbNiNfSQBvQBuQBoQBmZi@Base 15 ++ _D3std8datetime4date4Date10endOfMonthMxFNaNbNdNfZSQBwQBvQBpQBn@Base 15 ++ _D3std8datetime4date4Date10isLeapYearMxFNaNbNdNiNfZb@Base 15 ++ _D3std8datetime4date4Date11__invariantMxFNaNfZv@Base 15 ++ _D3std8datetime4date4Date11daysInMonthMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date4Date11fromISOWeekFNaNbNiNfshEQBwQBvQBp9DayOfWeekZSQCrQCqQCkQCi@Base 15 ++ _D3std8datetime4date4Date11isoWeekYearMxFNaNbNdNfZs@Base 15 ++ _D3std8datetime4date4Date11toISOStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date4Date12__invariant0MxFNaNfZv@Base 15 ++ _D3std8datetime4date4Date12modJulianDayMxFNaNbNdNiNfZl@Base 15 ++ _D3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZ14ISOWeekAndYear6__initZ@Base 15 ++ _D3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZSQCaQBzQBtQBrQBpMxFNaNbNdNfZ14ISOWeekAndYear@Base 15 ++ _D3std8datetime4date4Date14toISOExtStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date4Date14toSimpleStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date4Date17dayOfGregorianCalMFNaNbNdNiNfiZv@Base 15 ++ _D3std8datetime4date4Date17dayOfGregorianCalMxFNaNbNdNiNfZi@Base 15 ++ _D3std8datetime4date4Date3dayMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date4Date3dayMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date4Date3maxFNaNbNdNiNfZSQBoQBnQBhQBf@Base 15 ++ _D3std8datetime4date4Date3minFNaNbNdNiNfZSQBoQBnQBhQBf@Base 15 ++ _D3std8datetime4date4Date4isADMxFNaNbNdNiNfZb@Base 15 ++ _D3std8datetime4date4Date4yearMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date4Date4yearMxFNaNbNdNiNfZs@Base 15 ++ _D3std8datetime4date4Date5monthMFNaNdNfEQBmQBlQBf5MonthZv@Base 15 ++ _D3std8datetime4date4Date5monthMxFNaNbNdNiNfZEQBsQBrQBl5Month@Base 15 ++ _D3std8datetime4date4Date5opCmpMxFNaNbNiNfSQBpQBoQBiQBgZi@Base 15 ++ _D3std8datetime4date4Date6__ctorMFNaNbNcNiNfiZSQBtQBsQBmQBk@Base 15 ++ _D3std8datetime4date4Date6__ctorMFNaNcNfiiiZSQBrQBqQBkQBi@Base 15 ++ _D3std8datetime4date4Date6__initZ@Base 15 ++ _D3std8datetime4date4Date6_validFNaNbNiNfiiiZb@Base 15 ++ _D3std8datetime4date4Date6yearBCMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date4Date6yearBCMxFNaNdNfZt@Base 15 ++ _D3std8datetime4date4Date7isoWeekMxFNaNbNdNfZh@Base 15 ++ _D3std8datetime4date4Date8__xopCmpMxFKxSQBmQBlQBfQBdZi@Base 15 ++ _D3std8datetime4date4Date8_addDaysMFNaNbNcNiNjNflZSQBxQBwQBqQBo@Base 15 ++ _D3std8datetime4date4Date8toStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date4Date9dayOfWeekMxFNaNbNdNiNfZEQBwQBvQBp9DayOfWeek@Base 15 ++ _D3std8datetime4date4Date9dayOfYearMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date4Date9dayOfYearMxFNaNbNdNiNfZt@Base 15 ++ _D3std8datetime4date4Date9julianDayMxFNaNbNdNiNfZl@Base 15 ++ _D3std8datetime4date4Date__T11toISOStringTSQBp5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 ++ _D3std8datetime4date4Date__T12setDayOfYearVbi0ZQtMFNaNbNiNfiZv@Base 15 ++ _D3std8datetime4date4Date__T12setDayOfYearVbi1ZQtMFNaNfiZv@Base 15 ++ _D3std8datetime4date4Date__T14toISOExtStringTSQBs5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 ++ _D3std8datetime4date4Date__T14toSimpleStringTSQBs5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 ++ _D3std8datetime4date4Date__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQChQCgQCaQByZS4core4time8Duration@Base 15 ++ _D3std8datetime4date5Month6__initZ@Base 15 ++ _D3std8datetime4date6maxDayFNaNbNiNfiiZh@Base 15 ++ _D3std8datetime4date8DateTime10diffMonthsMxFNaNbNiNfSQBzQByQBsQBqZi@Base 15 ++ _D3std8datetime4date8DateTime10endOfMonthMxFNaNbNdNfZSQCaQBzQBtQBr@Base 15 ++ _D3std8datetime4date8DateTime10isLeapYearMxFNaNbNdNiNfZb@Base 15 ++ _D3std8datetime4date8DateTime11_addSecondsMFNaNbNcNiNjNflZSQCfQCeQByQBw@Base 15 ++ _D3std8datetime4date8DateTime11daysInMonthMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date8DateTime11isoWeekYearMxFNaNbNdNfZs@Base 15 ++ _D3std8datetime4date8DateTime11toISOStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date8DateTime12modJulianDayMxFNaNbNdNiNfZl@Base 15 ++ _D3std8datetime4date8DateTime14toISOExtStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date8DateTime14toSimpleStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date8DateTime17dayOfGregorianCalMFNaNbNdNiNfiZv@Base 15 ++ _D3std8datetime4date8DateTime17dayOfGregorianCalMxFNaNbNdNiNfZi@Base 15 ++ _D3std8datetime4date8DateTime3dayMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date8DateTime3dayMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date8DateTime3maxFNaNbNdNiNfZSQBsQBrQBlQBj@Base 15 ++ _D3std8datetime4date8DateTime3minFNaNbNdNiNfZSQBsQBrQBlQBj@Base 15 ++ _D3std8datetime4date8DateTime4hourMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date8DateTime4hourMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date8DateTime4isADMxFNaNbNdNiNfZb@Base 15 ++ _D3std8datetime4date8DateTime4yearMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date8DateTime4yearMxFNaNbNdNiNfZs@Base 15 ++ _D3std8datetime4date8DateTime5monthMFNaNdNfEQBqQBpQBj5MonthZv@Base 15 ++ _D3std8datetime4date8DateTime5monthMxFNaNbNdNiNfZEQBwQBvQBp5Month@Base 15 ++ _D3std8datetime4date8DateTime5opCmpMxFNaNbNiNfSQBtQBsQBmQBkZi@Base 15 ++ _D3std8datetime4date8DateTime6__ctorMFNaNbNcNiNfSQBvQBuQBo4DateSQCkQCjQCd9TimeOfDayZSQDfQDeQCyQCw@Base 15 ++ _D3std8datetime4date8DateTime6__ctorMFNaNcNfiiiiiiZSQByQBxQBrQBp@Base 15 ++ _D3std8datetime4date8DateTime6__initZ@Base 15 ++ _D3std8datetime4date8DateTime6minuteMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date8DateTime6minuteMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date8DateTime6secondMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date8DateTime6secondMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date8DateTime6yearBCMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date8DateTime6yearBCMxFNaNdNfZs@Base 15 ++ _D3std8datetime4date8DateTime7isoWeekMxFNaNbNdNfZh@Base 15 ++ _D3std8datetime4date8DateTime8__xopCmpMxFKxSQBqQBpQBjQBhZi@Base 15 ++ _D3std8datetime4date8DateTime8toStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date8DateTime9dayOfWeekMxFNaNbNdNiNfZEQCaQBzQBt9DayOfWeek@Base 15 ++ _D3std8datetime4date8DateTime9dayOfYearMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date8DateTime9dayOfYearMxFNaNbNdNiNfZt@Base 15 ++ _D3std8datetime4date8DateTime9julianDayMxFNaNbNdNiNfZl@Base 15 ++ _D3std8datetime4date8DateTime9timeOfDayMFNaNbNdNiNfSQByQBxQBr9TimeOfDayZv@Base 15 ++ _D3std8datetime4date8DateTime9timeOfDayMxFNaNbNdNiNfZSQCaQBzQBt9TimeOfDay@Base 15 ++ _D3std8datetime4date8DateTimeQoMFNaNbNdNiNfSQBqQBpQBj4DateZv@Base 15 ++ _D3std8datetime4date8DateTimeQoMxFNaNbNdNiNfZSQBsQBrQBl4Date@Base 15 ++ _D3std8datetime4date8DateTime__T11toISOStringTSQBt5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 ++ _D3std8datetime4date8DateTime__T14toISOExtStringTSQBw5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 ++ _D3std8datetime4date8DateTime__T14toSimpleStringTSQBw5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 ++ _D3std8datetime4date9TimeOfDay11__invariantMxFNaNfZv@Base 15 ++ _D3std8datetime4date9TimeOfDay11_addSecondsMFNaNbNcNiNjNflZSQCgQCfQBzQBx@Base 15 ++ _D3std8datetime4date9TimeOfDay11toISOStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date9TimeOfDay12__invariant0MxFNaNfZv@Base 15 ++ _D3std8datetime4date9TimeOfDay14toISOExtStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date9TimeOfDay3maxFNaNbNdNiNfZSQBtQBsQBmQBk@Base 15 ++ _D3std8datetime4date9TimeOfDay3minFNaNbNdNiNfZSQBtQBsQBmQBk@Base 15 ++ _D3std8datetime4date9TimeOfDay4hourMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date9TimeOfDay4hourMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date9TimeOfDay5opCmpMxFNaNbNiNfSQBuQBtQBnQBlZi@Base 15 ++ _D3std8datetime4date9TimeOfDay6__ctorMFNaNcNfiiiZSQBwQBvQBpQBn@Base 15 ++ _D3std8datetime4date9TimeOfDay6__initZ@Base 15 ++ _D3std8datetime4date9TimeOfDay6_validFNaNbNiNfiiiZb@Base 15 ++ _D3std8datetime4date9TimeOfDay6minuteMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date9TimeOfDay6minuteMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date9TimeOfDay6secondMFNaNdNfiZv@Base 15 ++ _D3std8datetime4date9TimeOfDay6secondMxFNaNbNdNiNfZh@Base 15 ++ _D3std8datetime4date9TimeOfDay8__xopCmpMxFKxSQBrQBqQBkQBiZi@Base 15 ++ _D3std8datetime4date9TimeOfDay8toStringMxFNaNbNfZAya@Base 15 ++ _D3std8datetime4date9TimeOfDay__T11toISOStringTSQBu5array__T8AppenderTAyaZQoZQBsMxFNaNfKQBpZv@Base 15 ++ _D3std8datetime4date9TimeOfDay__T14toISOExtStringTSQBx5array__T8AppenderTAyaZQoZQBvMxFNaNfKQBpZv@Base 15 ++ _D3std8datetime4date9TimeOfDay__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQCmQClQCfQCdZS4core4time8Duration@Base 15 ++ _D3std8datetime4date__T12enforceValidVAyaa4_64617973ZQBeFNaNfiEQCjQCiQCc5MonthiQBpmZv@Base 15 ++ _D3std8datetime4date__T12enforceValidVAyaa5_686f757273ZQBgFNaNfiQBamZv@Base 15 ++ _D3std8datetime4date__T12enforceValidVAyaa6_6d6f6e746873ZQBiFNaNfiQBcmZv@Base 15 ++ _D3std8datetime4date__T12enforceValidVAyaa7_6d696e75746573ZQBkFNaNfiQBemZv@Base 15 ++ _D3std8datetime4date__T12enforceValidVAyaa7_7365636f6e6473ZQBkFNaNfiQBemZv@Base 15 ++ _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 ++ _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 ++ _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 ++ _D3std8datetime4date__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 ++ _D3std8datetime4date__T5validVAyaa4_64617973ZQwFNaNbNiNfiiiZb@Base 15 ++ _D3std8datetime4date__T5validVAyaa5_686f757273ZQyFNaNbNiNfiZb@Base 15 ++ _D3std8datetime4date__T5validVAyaa6_6d6f6e746873ZQBaFNaNbNiNfiZb@Base 15 ++ _D3std8datetime4date__T5validVAyaa7_6d696e75746573ZQBcFNaNbNiNfiZb@Base 15 ++ _D3std8datetime4date__T5validVAyaa7_7365636f6e6473ZQBcFNaNbNiNfiZb@Base 15 ++ _D3std8datetime7systime11__moduleRefZ@Base 15 ++ _D3std8datetime7systime12__ModuleInfoZ@Base 15 ++ _D3std8datetime7systime17unixTimeToStdTimeFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime19fracSecsToISOStringFNaNbNfiiZAya@Base 15 ++ _D3std8datetime7systime20DosFileTimeToSysTimeFNfkyCQBxQBw8timezone8TimeZoneZSQCxQCwQCq7SysTime@Base 15 ++ _D3std8datetime7systime20SysTimeToDosFileTimeFNfMSQBwQBvQBp7SysTimeZk@Base 15 ++ _D3std8datetime7systime5Clock6__initZ@Base 15 ++ _D3std8datetime7systime5Clock6__vtblZ@Base 15 ++ _D3std8datetime7systime5Clock7__ClassZ@Base 15 ++ _D3std8datetime7systime5Clock__T11currStdTimeVE4core4time9ClockTypei0ZQBmFNbNdNiNeZl@Base 15 ++ _D3std8datetime7systime5Clock__T8currTimeVE4core4time9ClockTypei0ZQBiFNbNfyCQCwQCv8timezone8TimeZoneZSQDwQDvQDp7SysTime@Base 15 ++ _D3std8datetime7systime7SysTime10diffMonthsMxFNbNlNfMSQCaQBzQBtQBoZi@Base 15 ++ _D3std8datetime7systime7SysTime10endOfMonthMxFNbNdNjNlNfZSQCeQCdQBxQBs@Base 15 ++ _D3std8datetime7systime7SysTime10isLeapYearMxFNbNdNlNfZb@Base 15 ++ _D3std8datetime7systime7SysTime10toTimeSpecMxFNaNbNlNfZS4core3sys5posix4time8timespec@Base 15 ++ _D3std8datetime7systime7SysTime11__xopEqualsMxFKxSQBwQBvQBpQBkZb@Base 15 ++ _D3std8datetime7systime7SysTime11daysInMonthMxFNbNdNlNfZh@Base 15 ++ _D3std8datetime7systime7SysTime11dstInEffectMxFNbNdNjNlNfZb@Base 15 ++ _D3std8datetime7systime7SysTime11toISOStringMxFNbNlNfZAya@Base 15 ++ _D3std8datetime7systime7SysTime11toLocalTimeMxFNaNbNlNfZSQCdQCcQBwQBr@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone11dstInEffectMxFNbNiNlNflZb@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone11utcOffsetAtMxFNbNiNlNflZS4core4time8Duration@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone13_initTimeZoneyCQCiQChQCbQBwQBr@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone6__ctorMyFNaNfZyCQCiQChQCbQBwQBr@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone6__initZ@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone6__vtblZ@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone6hasDSTMxFNbNdNiNfZb@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone6opCallFNaNbNiNfZyCQCkQCjQCdQByQBt@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone7__ClassZ@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone7tzToUTCMxFNbNiNlNflZl@Base 15 ++ _D3std8datetime7systime7SysTime12InitTimeZone7utcToTZMxFNbNiNlNflZl@Base 15 ++ _D3std8datetime7systime7SysTime12fromUnixTimeFNaNbNflyCQCbQCa8timezone8TimeZoneZSQDbQDaQCuQCp@Base 15 ++ _D3std8datetime7systime7SysTime12modJulianDayMxFNbNdNlNfZl@Base 15 ++ _D3std8datetime7systime7SysTime14toISOExtStringMxFNbNlNfiZAya@Base 15 ++ _D3std8datetime7systime7SysTime14toSimpleStringMxFNbNlNfZAya@Base 15 ++ _D3std8datetime7systime7SysTime17dayOfGregorianCalMFNbNdNlNfiZv@Base 15 ++ _D3std8datetime7systime7SysTime17dayOfGregorianCalMxFNbNdNlNfZi@Base 15 ++ _D3std8datetime7systime7SysTime3dayMFNdNlNfiZv@Base 15 ++ _D3std8datetime7systime7SysTime3dayMxFNbNdNlNfZh@Base 15 ++ _D3std8datetime7systime7SysTime3maxFNaNbNdNfZSQBsQBrQBlQBg@Base 15 ++ _D3std8datetime7systime7SysTime3minFNaNbNdNfZSQBsQBrQBlQBg@Base 15 ++ _D3std8datetime7systime7SysTime4hourMFNdNlNfiZv@Base 15 ++ _D3std8datetime7systime7SysTime4hourMxFNbNdNlNfZh@Base 15 ++ _D3std8datetime7systime7SysTime4isADMxFNbNdNlNfZb@Base 15 ++ _D3std8datetime7systime7SysTime4toTMMxFNbNlNfZS4core3sys5posix4stdc4time2tm@Base 15 ++ _D3std8datetime7systime7SysTime4yearMFNdNlNfiZv@Base 15 ++ _D3std8datetime7systime7SysTime4yearMxFNbNdNlNfZs@Base 15 ++ _D3std8datetime7systime7SysTime5monthMFNdNlNfEQBsQBr4date5MonthZv@Base 15 ++ _D3std8datetime7systime7SysTime5monthMxFNbNdNlNfZEQBwQBv4date5Month@Base 15 ++ _D3std8datetime7systime7SysTime5toUTCMxFNaNbNlNfZSQBwQBvQBpQBk@Base 15 ++ _D3std8datetime7systime7SysTime6__ctorMFNaNbNcNjNlNflNkMyCQCeQCd8timezone8TimeZoneZSQDeQDdQCxQCs@Base 15 ++ _D3std8datetime7systime7SysTime6__ctorMFNbNcNjNlNfSQBxQBw4date4DateNkMyCQCsQCr8timezone8TimeZoneZSQDsQDrQDlQDg@Base 15 ++ _D3std8datetime7systime7SysTime6__ctorMFNbNcNjNlNfSQBxQBw4date8DateTimeNkMyCQCwQCv8timezone8TimeZoneZSQDwQDvQDpQDk@Base 15 ++ _D3std8datetime7systime7SysTime6__ctorMFNcNjNlNfSQBvQBu4date8DateTimeS4core4time8DurationNkMyCQDoQDn8timezone8TimeZoneZSQEoQEnQEhQEc@Base 15 ++ _D3std8datetime7systime7SysTime6__initZ@Base 15 ++ _D3std8datetime7systime7SysTime6minuteMFNdNlNfiZv@Base 15 ++ _D3std8datetime7systime7SysTime6minuteMxFNbNdNlNfZh@Base 15 ++ _D3std8datetime7systime7SysTime6secondMFNdNlNfiZv@Base 15 ++ _D3std8datetime7systime7SysTime6secondMxFNbNdNlNfZh@Base 15 ++ _D3std8datetime7systime7SysTime6toHashMxFNaNbNiNlNfZm@Base 15 ++ _D3std8datetime7systime7SysTime6yearBCMFNdNlNfiZv@Base 15 ++ _D3std8datetime7systime7SysTime6yearBCMxFNdNlNfZt@Base 15 ++ _D3std8datetime7systime7SysTime7adjTimeMFNbNdNlNflZv@Base 15 ++ _D3std8datetime7systime7SysTime7adjTimeMxFNbNdNlNfZl@Base 15 ++ _D3std8datetime7systime7SysTime7isoWeekMxFNbNdNlNfZh@Base 15 ++ _D3std8datetime7systime7SysTime7stdTimeMFNaNbNdNlNflZv@Base 15 ++ _D3std8datetime7systime7SysTime7stdTimeMxFNaNbNdNiNlNfZl@Base 15 ++ _D3std8datetime7systime7SysTime8__xopCmpMxFKxSQBsQBrQBlQBgZi@Base 15 ++ _D3std8datetime7systime7SysTime8fracSecsMFNdNlNfS4core4time8DurationZv@Base 15 ++ _D3std8datetime7systime7SysTime8fracSecsMxFNbNdNlNfZS4core4time8Duration@Base 15 ++ _D3std8datetime7systime7SysTime8timezoneMFNaNbNdNlNfyCQCaQBzQBd8TimeZoneZv@Base 15 ++ _D3std8datetime7systime7SysTime8timezoneMxFNaNbNdNjNlNfZyCQCeQCdQBh8TimeZone@Base 15 ++ _D3std8datetime7systime7SysTime8toStringMxFNbNlNfZAya@Base 15 ++ _D3std8datetime7systime7SysTime9_timezoneMFNaNbNdNiNlNfNkMyCQCgQCf8timezone8TimeZoneZv@Base 15 ++ _D3std8datetime7systime7SysTime9_timezoneMxFNaNbNdNiNfZyCQCdQCc8timezone8TimeZone@Base 15 ++ _D3std8datetime7systime7SysTime9dayOfWeekMxFNbNdNlNfZEQCaQBz4date9DayOfWeek@Base 15 ++ _D3std8datetime7systime7SysTime9dayOfYearMFNdNlNfiZv@Base 15 ++ _D3std8datetime7systime7SysTime9dayOfYearMxFNbNdNlNfZt@Base 15 ++ _D3std8datetime7systime7SysTime9julianDayMxFNbNdNlNfZl@Base 15 ++ _D3std8datetime7systime7SysTime9toOtherTZMxFNaNbNlNfyCQCaQBz8timezone8TimeZoneZSQDaQCzQCtQCo@Base 15 ++ _D3std8datetime7systime7SysTime9toTimeValMxFNaNbNlNfZS4core3sys5posixQk4time7timeval@Base 15 ++ _D3std8datetime7systime7SysTime9utcOffsetMxFNbNdNjNlNfZS4core4time8Duration@Base 15 ++ _D3std8datetime7systime7SysTime__T10toUnixTimeTlZQpMxFNaNbNiNlNfZl@Base 15 ++ _D3std8datetime7systime7SysTime__T11toISOStringTSQBv5array__T8AppenderTAyaZQoZQBsMxFNlNfKQBpZv@Base 15 ++ _D3std8datetime7systime7SysTime__T14toISOExtStringTSQBy5array__T8AppenderTAyaZQoZQBvMxFNlNfKQBpiZv@Base 15 ++ _D3std8datetime7systime7SysTime__T14toSimpleStringTSQBy5array__T8AppenderTAyaZQoZQBvMxFNlNfKQBpZv@Base 15 ++ _D3std8datetime7systime7SysTime__T5opCmpZQhMxFNaNbNiNlNfKxSQCfQCeQByQBtZi@Base 15 ++ _D3std8datetime7systime7SysTime__T6opCastTSQBpQBo4date4DateZQBaMxFNbNlNfZQBf@Base 15 ++ _D3std8datetime7systime7SysTime__T6opCastTSQBpQBo4date8DateTimeZQBeMxFNbNlNfZQBj@Base 15 ++ _D3std8datetime7systime7SysTime__T8opAssignZQkMFNaNbNcNiNlNjNfKxSQClQCkQCeQBzZSQCzQCyQCsQCn@Base 15 ++ _D3std8datetime7systime7SysTime__T8opEqualsZQkMxFNaNbNiNlNfKxSQCiQChQCbQBwZb@Base 15 ++ _D3std8datetime7systime__T17stdTimeToUnixTimeTlZQwFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa4_64617973ZQBkFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa5_686f757273ZQBmFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa7_6d696e75746573ZQBqFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime__T18getUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBqFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime__T19fracSecsToISOStringTSQBv5array__T8AppenderTAyaZQoZQCaFNaNbNfKQBpiiZv@Base 15 ++ _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa4_64617973ZQBnFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa5_686f757273ZQBpFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa7_6d696e75746573ZQBtFNaNbNiNflZl@Base 15 ++ _D3std8datetime7systime__T21removeUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBtFNaNbNiNflZl@Base 15 ++ _D3std8datetime8interval11__moduleRefZ@Base 15 ++ _D3std8datetime8interval12__ModuleInfoZ@Base 15 ++ _D3std8datetime8timezone11__moduleRefZ@Base 15 ++ _D3std8datetime8timezone11setTZEnvVarFNbNeAyaZv@Base 15 ++ _D3std8datetime8timezone12__ModuleInfoZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone10LeapSecond6__ctorMFNaNcNfliZSQCqQCpQCjQCdQBr@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone10TempTTInfo6__ctorMFNaNcNfibhZSQCrQCqQCkQCeQBs@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone10TempTTInfo6__initZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone10Transition6__ctorMFNaNcNflPySQCqQCpQCjQCd6TTInfoZSQDlQDkQDeQCyQCm@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone11dstInEffectMxFNbNlNflZb@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone11getTimeZoneFNeAyaQdZyCQCjQCiQCcQBw@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone14TempTransition6__ctorMFNaNcNflPySQCuQCtQCnQCh6TTInfoPSQDpQDoQDiQDc14TransitionTypeZSQEtQEsQEmQEgQDu@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone14TransitionType6__ctorMFNaNcNfbbZSQCuQCtQCnQChQBv@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone19_enforceValidTZFileFNaNfbmZv@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone19getInstalledTZNamesFNfAyaQdZAQh@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone20calculateLeapSecondsMxFNaNbNlNflZi@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone6TTInfo11__xopEqualsMxFKxSQClQCkQCeQByQBmZb@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone6TTInfo6__ctorMyFNaNcNfMxSQClQCkQCeQBy10TempTTInfoAyaZySQDpQDoQDiQDcQCq@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone6TTInfo9__xtoHashFNbNeKxSQCkQCjQCdQBxQBlZm@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone6__ctorMyFNaNfyASQCcQCbQBvQBp10TransitionyASQDdQDcQCwQCq10LeapSecondAyaQdQfbZyCQEmQElQEfQDz@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone6__initZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone6__vtblZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone6hasDSTMxFNbNdNfZb@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone7__ClassZ@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone7tzToUTCMxFNbNlNflZl@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone7utcToTZMxFNbNlNflZl@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone__T7readValTAaZQmFNeKSQCh5stdio4FilemZQBa@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone__T7readValTAhZQmFNeKSQCh5stdio4FilemZQBa@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone__T7readValTSQByQBxQBrQBl10TempTTInfoZQBjFNfKSQDf5stdio4FileZQBx@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone__T7readValTaZQlFNeKSQCg5stdio4FileZa@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone__T7readValTbZQlFNeKSQCg5stdio4FileZb@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone__T7readValThZQlFNeKSQCg5stdio4FileZh@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone__T7readValTiZQlFNeKSQCg5stdio4FileZi@Base 15 ++ _D3std8datetime8timezone13PosixTimeZone__T7readValTlZQlFNeKSQCg5stdio4FileZl@Base 15 ++ _D3std8datetime8timezone13TZConversions11__xopEqualsMxFKxSQCeQCdQBxQBrZb@Base 15 ++ _D3std8datetime8timezone13TZConversions6__initZ@Base 15 ++ _D3std8datetime8timezone13TZConversions9__xtoHashFNbNeKxSQCdQCcQBwQBqZm@Base 15 ++ _D3std8datetime8timezone13clearTZEnvVarFNbNeZv@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone11dstInEffectMxFNbNlNflZb@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone11toISOStringFNaNfS4core4time8DurationZAya@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone14toISOExtStringFNaNfS4core4time8DurationZAya@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone6__ctorMyFNaNfS4core4time8DurationAyaZyCQDaQCzQCtQCn@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone6__initZ@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone6__vtblZ@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone6hasDSTMxFNbNdNfZb@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone7__ClassZ@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone7tzToUTCMxFNbNlNflZl@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone7utcToTZMxFNbNlNflZl@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone9utcOffsetMxFNaNbNdNfZS4core4time8Duration@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone__T11toISOStringTSQCe5array__T8AppenderTAyaZQoZQBsFNaNfKQBnS4core4time8DurationZv@Base 15 ++ _D3std8datetime8timezone14SimpleTimeZone__T14toISOExtStringTSQCh5array__T8AppenderTAyaZQoZQBvFNaNfKQBnS4core4time8DurationZv@Base 15 ++ _D3std8datetime8timezone18parseTZConversionsFNaNfAyaZSQCaQBzQBt13TZConversions@Base 15 ++ _D3std8datetime8timezone3UTC11dstInEffectMxFNbNlNflZb@Base 15 ++ _D3std8datetime8timezone3UTC11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 ++ _D3std8datetime8timezone3UTC4_utcyCQBhQBgQBaQu@Base 15 ++ _D3std8datetime8timezone3UTC6__ctorMyFNaNfZyCQBrQBqQBkQBe@Base 15 ++ _D3std8datetime8timezone3UTC6__initZ@Base 15 ++ _D3std8datetime8timezone3UTC6__vtblZ@Base 15 ++ _D3std8datetime8timezone3UTC6hasDSTMxFNbNdNfZb@Base 15 ++ _D3std8datetime8timezone3UTC6opCallFNaNbNfZyCQBrQBqQBkQBe@Base 15 ++ _D3std8datetime8timezone3UTC7__ClassZ@Base 15 ++ _D3std8datetime8timezone3UTC7tzToUTCMxFNbNlNflZl@Base 15 ++ _D3std8datetime8timezone3UTC7utcToTZMxFNbNlNflZl@Base 15 ++ _D3std8datetime8timezone8TimeZone11_getOldNameFNaNbNfAyaZQe@Base 15 ++ _D3std8datetime8timezone8TimeZone11utcOffsetAtMxFNbNlNflZS4core4time8Duration@Base 15 ++ _D3std8datetime8timezone8TimeZone4nameMxFNbNdNfZAya@Base 15 ++ _D3std8datetime8timezone8TimeZone6__ctorMyFNaNfAyaQdQfZyCQCdQCcQBwQBq@Base 15 ++ _D3std8datetime8timezone8TimeZone6__initZ@Base 15 ++ _D3std8datetime8timezone8TimeZone6__vtblZ@Base 15 ++ _D3std8datetime8timezone8TimeZone7__ClassZ@Base 15 ++ _D3std8datetime8timezone8TimeZone7dstNameMxFNbNdNlNfZAya@Base 15 ++ _D3std8datetime8timezone8TimeZone7stdNameMxFNbNdNlNfZAya@Base 15 ++ _D3std8datetime8timezone9LocalTime11dstInEffectMxFNbNlNelZb@Base 15 ++ _D3std8datetime8timezone9LocalTime6__ctorMyFNaNfZyCQBxQBwQBqQBk@Base 15 ++ _D3std8datetime8timezone9LocalTime6__initZ@Base 15 ++ _D3std8datetime8timezone9LocalTime6__vtblZ@Base 15 ++ _D3std8datetime8timezone9LocalTime6hasDSTMxFNbNdNeZb@Base 15 ++ _D3std8datetime8timezone9LocalTime6opCallFNaNbNeZyCQBxQBwQBqQBk@Base 15 ++ _D3std8datetime8timezone9LocalTime7__ClassZ@Base 15 ++ _D3std8datetime8timezone9LocalTime7dstNameMxFNbNdNlNeZAya@Base 15 ++ _D3std8datetime8timezone9LocalTime7stdNameMxFNbNdNlNeZAya@Base 15 ++ _D3std8datetime8timezone9LocalTime7tzToUTCMxFNbNlNelZl@Base 15 ++ _D3std8datetime8timezone9LocalTime7utcToTZMxFNbNlNelZl@Base 15 ++ _D3std8datetime8timezone9LocalTime9singletonFNeZ18__lambda_L1107_C24FNbNiNfZb@Base 15 ++ _D3std8datetime8timezone9LocalTime9singletonFNeZ5guardOb@Base 15 ++ _D3std8datetime8timezone9LocalTime9singletonFNeZ8instanceyCQCfQCeQByQBs@Base 15 ++ _D3std8datetime8timezone9LocalTime9singletonFNeZyCQBwQBvQBpQBj@Base 15 ++ _D3std8datetime9stopwatch11__moduleRefZ@Base 15 ++ _D3std8datetime9stopwatch12__ModuleInfoZ@Base 15 ++ _D3std8datetime9stopwatch9StopWatch14setTimeElapsedMFNbNiNfS4core4time8DurationZv@Base 15 ++ _D3std8datetime9stopwatch9StopWatch4peekMxFNbNiNfZS4core4time8Duration@Base 15 ++ _D3std8datetime9stopwatch9StopWatch4stopMFNbNiNfZv@Base 15 ++ _D3std8datetime9stopwatch9StopWatch5resetMFNbNiNfZv@Base 15 ++ _D3std8datetime9stopwatch9StopWatch5startMFNbNiNfZv@Base 15 ++ _D3std8datetime9stopwatch9StopWatch6__ctorMFNbNcNiNfEQBz8typecons__T4FlagVAyaa9_6175746f5374617274ZQBfZSQDyQDxQDrQDk@Base 15 ++ _D3std8datetime9stopwatch9StopWatch6__initZ@Base 15 ++ _D3std8datetime9stopwatch9StopWatch7runningMxFNaNbNdNiNfZb@Base 15 ++ _D3std8demangle11__moduleRefZ@Base 15 ++ _D3std8demangle12__ModuleInfoZ@Base 15 ++ _D3std8demangleQjFNaNbNfAyaZQe@Base 15 ++ _D3std8encoding11__moduleRefZ@Base 15 ++ _D3std8encoding12__ModuleInfoZ@Base 15 ++ _D3std8encoding14EncodingScheme18supportedFactoriesHAyaQd@Base 15 ++ _D3std8encoding14EncodingScheme6__initZ@Base 15 ++ _D3std8encoding14EncodingScheme6__vtblZ@Base 15 ++ _D3std8encoding14EncodingScheme6createFAyaZ11initializedOb@Base 15 ++ _D3std8encoding14EncodingScheme6createFAyaZ24registerDefaultEncodingsFZb@Base 15 ++ _D3std8encoding14EncodingScheme6createFAyaZCQBqQBpQBj@Base 15 ++ _D3std8encoding14EncodingScheme7__ClassZ@Base 15 ++ _D3std8encoding14EncodingScheme7isValidMFAxhZb@Base 15 ++ _D3std8encoding14EncodingScheme8registerFAyaZv@Base 15 ++ _D3std8encoding14EncodingScheme9supportedHAyaPFZCQBvQBuQBo@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr18EncodingSchemeUtf8ZQBnFZ18__lambda_L2592_C48FNaNbNfZCQEbQEaQDu@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr18EncodingSchemeUtf8ZQBnFZv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr19EncodingSchemeASCIIZQBoFZ18__lambda_L2592_C48FNaNbNfZCQEcQEbQDv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr19EncodingSchemeASCIIZQBoFZv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin1ZQBpFZ18__lambda_L2592_C48FNaNbNfZCQEdQEcQDw@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin1ZQBpFZv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin2ZQBpFZ18__lambda_L2592_C48FNaNbNfZCQEdQEcQDw@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr20EncodingSchemeLatin2ZQBpFZv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf16NativeZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf16NativeZQBuFZv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf32NativeZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeUtf32NativeZQBuFZv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1250ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1250ZQBuFZv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1251ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1251ZQBuFZv@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1252ZQBuFZ18__lambda_L2592_C48FNaNbNfZCQEiQEhQEb@Base 15 ++ _D3std8encoding14EncodingScheme__T8registerHTCQBsQBr25EncodingSchemeWindows1252ZQBuFZv@Base 15 ++ _D3std8encoding16isValidCodePointFNaNbNiNfwZb@Base 15 ++ _D3std8encoding17EncodingException6__ctorMFNaNfAyaZCQByQBxQBr@Base 15 ++ _D3std8encoding17EncodingException6__initZ@Base 15 ++ _D3std8encoding17EncodingException6__vtblZ@Base 15 ++ _D3std8encoding17EncodingException7__ClassZ@Base 15 ++ _D3std8encoding18EncodingSchemeUtf810safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding18EncodingSchemeUtf813encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding18EncodingSchemeUtf819replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding18EncodingSchemeUtf85namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding18EncodingSchemeUtf86__initZ@Base 15 ++ _D3std8encoding18EncodingSchemeUtf86__vtblZ@Base 15 ++ _D3std8encoding18EncodingSchemeUtf86decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding18EncodingSchemeUtf86encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding18EncodingSchemeUtf87__ClassZ@Base 15 ++ _D3std8encoding18EncodingSchemeUtf88toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding18EncodingSchemeUtf89canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding19EncodingSchemeASCII10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding19EncodingSchemeASCII13encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding19EncodingSchemeASCII19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding19EncodingSchemeASCII5namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding19EncodingSchemeASCII6__initZ@Base 15 ++ _D3std8encoding19EncodingSchemeASCII6__vtblZ@Base 15 ++ _D3std8encoding19EncodingSchemeASCII6decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding19EncodingSchemeASCII6encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding19EncodingSchemeASCII7__ClassZ@Base 15 ++ _D3std8encoding19EncodingSchemeASCII8toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding19EncodingSchemeASCII9canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding20EncodingSchemeLatin110safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding20EncodingSchemeLatin113encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding20EncodingSchemeLatin119replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding20EncodingSchemeLatin15namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding20EncodingSchemeLatin16__initZ@Base 15 ++ _D3std8encoding20EncodingSchemeLatin16__vtblZ@Base 15 ++ _D3std8encoding20EncodingSchemeLatin16decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding20EncodingSchemeLatin16encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding20EncodingSchemeLatin17__ClassZ@Base 15 ++ _D3std8encoding20EncodingSchemeLatin18toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding20EncodingSchemeLatin19canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding20EncodingSchemeLatin210safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding20EncodingSchemeLatin213encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding20EncodingSchemeLatin219replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding20EncodingSchemeLatin25namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding20EncodingSchemeLatin26__initZ@Base 15 ++ _D3std8encoding20EncodingSchemeLatin26__vtblZ@Base 15 ++ _D3std8encoding20EncodingSchemeLatin26decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding20EncodingSchemeLatin26encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding20EncodingSchemeLatin27__ClassZ@Base 15 ++ _D3std8encoding20EncodingSchemeLatin28toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding20EncodingSchemeLatin29canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native13encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native5namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native6__initZ@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native6__vtblZ@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native6decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native6encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native7__ClassZ@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native8toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding25EncodingSchemeUtf16Native9canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native10safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native13encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native19replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native5namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native6__initZ@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native6__vtblZ@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native6decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native6encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native7__ClassZ@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native8toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding25EncodingSchemeUtf32Native9canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125010safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125013encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125019replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12505namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12506__initZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12506__vtblZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12506decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12506encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12507__ClassZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12508toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12509canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125110safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125113encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125119replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12515namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12516__initZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12516__vtblZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12516decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12516encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12517__ClassZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12518toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12519canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125210safeDecodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125213encodedLengthMxFNaNbNiNfwZm@Base 15 ++ _D3std8encoding25EncodingSchemeWindows125219replacementSequenceMxFNaNbNdNiNfZAyh@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12525namesMxFNaNbNfZAAya@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12526__initZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12526__vtblZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12526decodeMxFNaNbNiNfKAxhZw@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12526encodeMxFNaNbNiNfwAhZm@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12527__ClassZ@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12528toStringMxFNaNbNiNfZAya@Base 15 ++ _D3std8encoding25EncodingSchemeWindows12529canEncodeMxFNaNbNiNfwZb@Base 15 ++ _D3std8encoding29UnrecognizedEncodingException6__ctorMFNaNfAyaZCQCkQCjQCd@Base 15 ++ _D3std8encoding29UnrecognizedEncodingException6__initZ@Base 15 ++ _D3std8encoding29UnrecognizedEncodingException6__vtblZ@Base 15 ++ _D3std8encoding29UnrecognizedEncodingException7__ClassZ@Base 15 ++ _D3std8encoding8bomTableyASQz8typecons__T5TupleTEQBvQBu3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCl@Base 15 ++ _D3std8encoding__T10safeDecodeTAxEQBgQBf10Latin1CharZQBjFNaNbNiNfKQBjZw@Base 15 ++ _D3std8encoding__T10safeDecodeTAxEQBgQBf10Latin2CharZQBjFNaNbNiNfKQBjZw@Base 15 ++ _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1250CharZQBoFNaNbNiNfKQBoZw@Base 15 ++ _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1251CharZQBoFNaNbNiNfKQBoZw@Base 15 ++ _D3std8encoding__T10safeDecodeTAxEQBgQBf15Windows1252CharZQBoFNaNbNiNfKQBoZw@Base 15 ++ _D3std8encoding__T10safeDecodeTAxEQBgQBf9AsciiCharZQBhFNaNbNiNfKQBhZw@Base 15 ++ _D3std8encoding__T10safeDecodeTAxaZQrFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T10safeDecodeTAxuZQrFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T10safeDecodeTAxwZQrFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T13encodedLengthTEQBhQBg10Latin1CharZQBkFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T13encodedLengthTEQBhQBg10Latin2CharZQBkFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1250CharZQBpFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1251CharZQBpFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T13encodedLengthTEQBhQBg15Windows1252CharZQBpFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T13encodedLengthTEQBhQBg9AsciiCharZQBiFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T13encodedLengthTaZQsFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T13encodedLengthTuZQsFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T13encodedLengthTwZQsFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ15isValidCodeUnitFNaNbNiNfQBuZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ19replacementSequenceFNaNbNdNiNfZAyEQDnQDmQCd@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin1313decodeReverseFNaNbNiNfKAxEQDpQDoQCfZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin134skipFNaNbNiNfKAxEQDfQDeQBvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFNaNbNfwZAQBv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFNaNbNiNfwKAQBxZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9__mixin136encodeFwDFQBpZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin1CharZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ12m_charMapEndyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ14m_charMapStartyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ6bstMapyASQCn8typecons__T5TupleTuTaZQl@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ7charMapyAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCeZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQDxQDwQCn@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDrQDqQChZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDhQDgQBxZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFNaNbNfwZAQBx@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQBzZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj10Latin2CharZ9__mixin10Qk6encodeFwDFQBrZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ12m_charMapEndyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ14m_charMapStartyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ7charMapyAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1250CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ12m_charMapEndyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ14m_charMapStartyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ7charMapyAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1251CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ12m_charMapEndyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ14m_charMapStartyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ6bstMapyASQCs8typecons__T5TupleTuTaZQl@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ7charMapyAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1015isValidCodeUnitFNaNbNiNfQCjZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEcQEbQCs@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxEQDwQDvQCmZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk4skipFNaNbNiNfKAxEQDmQDlQCcZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFNaNbNfwZAQCc@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFNaNbNiNfwKAQCeZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj15Windows1252CharZ9__mixin10Qk6encodeFwDFQBwZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ15isValidCodeUnitFNaNbNiNfQBsZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ19replacementSequenceFNaNbNdNiNfZAyEQDlQDkQCb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin1413decodeReverseFNaNbNiNfKAxEQDnQDmQCdZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin144skipFNaNbNiNfKAxEQDdQDcQBtZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFNaNbNfwZAQBt@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFNaNbNiNfwKAQBvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9__mixin146encodeFwDFQBnZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTEQBkQBj9AsciiCharZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ15isValidCodeUnitFNaNbNiNfaZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ19replacementSequenceFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ5tailsFNaNbNiNfaZi@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ9__mixin1513decodeReverseFNaNbNiNfKAxaZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ9__mixin154skipFNaNbNiNfKAxaZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFNaNbNfwZAa@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFNaNbNiNfwKAaZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ9__mixin156encodeFwDFaZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTaZ9tailTableyG128h@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ15isValidCodeUnitFNaNbNiNfuZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ19replacementSequenceFNaNbNdNiNfZAyu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ9__mixin1313decodeReverseFNaNbNiNfKAxuZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ9__mixin134skipFNaNbNiNfKAxuZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFNaNbNfwZAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFNaNbNiNfwKAuZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ9__mixin136encodeFwDFuZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTuZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ15isValidCodeUnitFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ19replacementSequenceFNaNbNdNiNfZAyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ9__mixin1313decodeReverseFNaNbNiNfKAxwZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ9__mixin134skipFNaNbNiNfKAxwZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFNaNbNfwZAw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFNaNbNiNfwKAwZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ9__mixin136encodeFwDFwZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTwZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ15isValidCodeUnitFNaNbNiNfEQDfQDeQBuZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ19replacementSequenceFNaNbNdNiNfZAyEQDoQDnQCd@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin1313decodeReverseFNaNbNiNfKAxQCfZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin134skipFNaNbNiNfKAxQBvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFNaNbNfwZAEQDgQDfQBv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFNaNbNiNfwKAEQDiQDhQBxZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin136encodeFwDFEQDaQCzQBpZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin13__T10safeDecodeTAxQBwZQtFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9__mixin13__T6decodeTAxQBrZQoFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin1CharZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ12m_charMapEndyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ14m_charMapStartyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ6bstMapyASQCo8typecons__T5TupleTuTaZQl@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ7charMapyAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDpQDoQCeZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQDyQDxQCn@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQChZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk4skipFNaNbNiNfKAxQBxZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDiQDhQBx@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDkQDjQBzZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk6encodeFwDFEQDcQDbQBrZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk__T10safeDecodeTAxQByZQtFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk10Latin2CharZ9__mixin10Qk__T6decodeTAxQBtZQoFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ12m_charMapEndyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ14m_charMapStartyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ7charMapyAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1250CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ12m_charMapEndyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ14m_charMapStartyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ7charMapyAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1251CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ12m_charMapEndyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ14m_charMapStartyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ6bstMapyASQCt8typecons__T5TupleTuTaZQl@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ7charMapyAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1013encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1015isValidCodeUnitFNaNbNiNfEQDuQDtQCjZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin1019replacementSequenceFNaNbNdNiNfZAyEQEdQEcQCs@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin109canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk13decodeReverseFNaNbNiNfKAxQCmZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk4skipFNaNbNiNfKAxQCcZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFNaNbNfwZAEQDnQDmQCc@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFNaNbNiNfwKAEQDpQDoQCeZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk6encodeFwDFEQDhQDgQBwZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk__T10safeDecodeTAxQCdZQtFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk15Windows1252CharZ9__mixin10Qk__T6decodeTAxQByZQoFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ15isValidCodeUnitFNaNbNiNfEQDdQDcQBsZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ19replacementSequenceFNaNbNdNiNfZAyEQDmQDlQCb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin1413decodeReverseFNaNbNiNfKAxQCdZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin144skipFNaNbNiNfKAxQBtZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFNaNbNfwZAEQDeQDdQBt@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFNaNbNiNfwKAEQDgQDfQBvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin146encodeFwDFEQCyQCxQBnZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin14__T10safeDecodeTAxQBuZQtFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9__mixin14__T6decodeTAxQBpZQoFNaNbNiNfKQsZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxEQBlQBk9AsciiCharZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ15isValidCodeUnitFNaNbNiNfaZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ19replacementSequenceFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ5tailsFNaNbNiNfaZi@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin1513decodeReverseFNaNbNiNfKAxaZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin154skipFNaNbNiNfKAxaZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFNaNbNfwZAa@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFNaNbNiNfwKAaZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin156encodeFwDFaZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin15__T10safeDecodeTAxaZQrFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9__mixin15__T6decodeTAxaZQmFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxaZ9tailTableyG128h@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ15isValidCodeUnitFNaNbNiNfuZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ19replacementSequenceFNaNbNdNiNfZAyu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin1313decodeReverseFNaNbNiNfKAxuZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin134skipFNaNbNiNfKAxuZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFNaNbNfwZAu@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFNaNbNiNfwKAuZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin136encodeFwDFuZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin13__T10safeDecodeTAxuZQrFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ9__mixin13__T6decodeTAxuZQmFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxuZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ12encodingNameFNaNbNdNiNfZAya@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ13encodedLengthFNaNbNiNfwZm@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ15isValidCodeUnitFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ19replacementSequenceFNaNbNdNiNfZAyw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin1313decodeReverseFNaNbNiNfKAxwZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin134skipFNaNbNiNfKAxwZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFNaNbNfwZAw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFNaNbNiNfwKAwZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin136encodeFwDFwZvZv@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin13__T10safeDecodeTAxwZQrFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ9__mixin13__T6decodeTAxwZQmFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T15EncoderInstanceHTxwZ9canEncodeFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T6decodeTAxEQBbQBa10Latin1CharZQBeFNaNbNiNfKQBjZw@Base 15 ++ _D3std8encoding__T6decodeTAxEQBbQBa10Latin2CharZQBeFNaNbNiNfKQBjZw@Base 15 ++ _D3std8encoding__T6decodeTAxEQBbQBa15Windows1250CharZQBjFNaNbNiNfKQBoZw@Base 15 ++ _D3std8encoding__T6decodeTAxEQBbQBa15Windows1251CharZQBjFNaNbNiNfKQBoZw@Base 15 ++ _D3std8encoding__T6decodeTAxEQBbQBa15Windows1252CharZQBjFNaNbNiNfKQBoZw@Base 15 ++ _D3std8encoding__T6decodeTAxEQBbQBa9AsciiCharZQBcFNaNbNiNfKQBhZw@Base 15 ++ _D3std8encoding__T6decodeTAxaZQmFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T6decodeTAxuZQmFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T6decodeTAxwZQmFNaNbNiNfKQqZw@Base 15 ++ _D3std8encoding__T6encodeTEQzQx10Latin1CharZQBaFNaNbNiNfwAQBgZm@Base 15 ++ _D3std8encoding__T6encodeTEQzQx10Latin2CharZQBaFNaNbNiNfwAQBgZm@Base 15 ++ _D3std8encoding__T6encodeTEQzQx15Windows1250CharZQBfFNaNbNiNfwAQBlZm@Base 15 ++ _D3std8encoding__T6encodeTEQzQx15Windows1251CharZQBfFNaNbNiNfwAQBlZm@Base 15 ++ _D3std8encoding__T6encodeTEQzQx15Windows1252CharZQBfFNaNbNiNfwAQBlZm@Base 15 ++ _D3std8encoding__T6encodeTEQzQx9AsciiCharZQyFNaNbNiNfwAQBdZm@Base 15 ++ _D3std8encoding__T6encodeTaZQkFNaNbNiNfwAaZm@Base 15 ++ _D3std8encoding__T6encodeTuZQkFNaNbNiNfwAuZm@Base 15 ++ _D3std8encoding__T6encodeTwZQkFNaNbNiNfwAwZm@Base 15 ++ _D3std8encoding__T9canEncodeTEQBcQBb10Latin1CharZQBfFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T9canEncodeTEQBcQBb10Latin2CharZQBfFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T9canEncodeTEQBcQBb15Windows1250CharZQBkFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T9canEncodeTEQBcQBb15Windows1251CharZQBkFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T9canEncodeTEQBcQBb15Windows1252CharZQBkFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T9canEncodeTEQBcQBb9AsciiCharZQBdFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T9canEncodeTaZQnFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T9canEncodeTuZQnFNaNbNiNfwZb@Base 15 ++ _D3std8encoding__T9canEncodeTwZQnFNaNbNiNfwZb@Base 15 ++ _D3std8internal10attributes11__moduleRefZ@Base 15 ++ _D3std8internal10attributes12__ModuleInfoZ@Base 15 ++ _D3std8internal11scopebuffer11__moduleRefZ@Base 15 ++ _D3std8internal11scopebuffer12__ModuleInfoZ@Base 15 ++ _D3std8internal12unicode_comp11__moduleRefZ@Base 15 ++ _D3std8internal12unicode_comp12__ModuleInfoZ@Base 15 ++ _D3std8internal12unicode_comp16compositionTableFNaNbNiNfZ1tyG1922w@Base 15 ++ _D3std8internal12unicode_comp16compositionTableFNaNbNiNfZAyw@Base 15 ++ _D3std8internal12unicode_norm11__moduleRefZ@Base 15 ++ _D3std8internal12unicode_norm12__ModuleInfoZ@Base 15 ++ _D3std8internal14unicode_decomp11__moduleRefZ@Base 15 ++ _D3std8internal14unicode_decomp12__ModuleInfoZ@Base 15 ++ _D3std8internal14unicode_decomp16decompCanonTableFNaNbNiNfZ1tyG5276w@Base 15 ++ _D3std8internal14unicode_decomp16decompCanonTableFNaNbNiNfZAyw@Base 15 ++ _D3std8internal14unicode_decomp17decompCompatTableFNaNbNiNfZ1tyG10489w@Base 15 ++ _D3std8internal14unicode_decomp17decompCompatTableFNaNbNiNfZAyw@Base 15 ++ _D3std8internal14unicode_tables10isSpaceGenFNaNbNiNfwZb@Base 15 ++ _D3std8internal14unicode_tables10isWhiteGenFNaNbNiNfwZb@Base 15 ++ _D3std8internal14unicode_tables11__moduleRefZ@Base 15 ++ _D3std8internal14unicode_tables11isFormatGenFNaNbNiNfwZb@Base 15 ++ _D3std8internal14unicode_tables12__ModuleInfoZ@Base 15 ++ _D3std8internal14unicode_tables12isControlGenFNaNbNiNfwZb@Base 15 ++ _D3std8internal14unicode_tables12toLowerTableFNaNbNiNfZ1tyAk@Base 15 ++ _D3std8internal14unicode_tables12toLowerTableFNaNbNiNfZAyk@Base 15 ++ _D3std8internal14unicode_tables12toTitleTableFNaNbNiNfZ1tyAk@Base 15 ++ _D3std8internal14unicode_tables12toTitleTableFNaNbNiNfZAyk@Base 15 ++ _D3std8internal14unicode_tables12toUpperTableFNaNbNiNfZ1tyAk@Base 15 ++ _D3std8internal14unicode_tables12toUpperTableFNaNbNiNfZAyk@Base 15 ++ _D3std8internal14unicode_tables13fullCaseTableFNaNbNdNiNfmZ1tyAm@Base 15 ++ _D3std8internal14unicode_tables13fullCaseTableFNaNbNdNiNfmZSQCgQCfQBz3FCE@Base 15 ++ _D3std8internal14unicode_tables15UnicodeProperty11__xopEqualsMxFKxSQCnQCmQCgQBtZb@Base 15 ++ _D3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 ++ _D3std8internal14unicode_tables15UnicodeProperty9__xtoHashFNbNeKxSQCmQClQCfQBsZm@Base 15 ++ _D3std8internal14unicode_tables15simpleCaseTableFNaNbNiNfmZ1tyAk@Base 15 ++ _D3std8internal14unicode_tables15simpleCaseTableFNaNbNiNfmZSQCgQCfQBz3SCE@Base 15 ++ _D3std8internal14unicode_tables3FCE1nMxFNaNbNiNfZh@Base 15 ++ _D3std8internal14unicode_tables3FCE3seqMxFNaNbNiNfZG3w@Base 15 ++ _D3std8internal14unicode_tables3FCE4sizeMxFNaNbNiNfZh@Base 15 ++ _D3std8internal14unicode_tables3FCE6__ctorMFNaNbNcNiNfG3whhhZSQCiQChQCbQBo@Base 15 ++ _D3std8internal14unicode_tables3FCE6__ctorMFNaNbNcNiNfmZSQCdQCcQBwQBj@Base 15 ++ _D3std8internal14unicode_tables3FCE6__initZ@Base 15 ++ _D3std8internal14unicode_tables3FCE9entry_lenMxFNaNbNiNfZh@Base 15 ++ _D3std8internal14unicode_tables3SCE1nMxFNaNbNiNfZi@Base 15 ++ _D3std8internal14unicode_tables3SCE2chMxFNaNbNiNfZi@Base 15 ++ _D3std8internal14unicode_tables3SCE4sizeMxFNaNbNiNfZi@Base 15 ++ _D3std8internal14unicode_tables3SCE6__ctorMFNaNbNcNiNfkZSQCdQCcQBwQBj@Base 15 ++ _D3std8internal14unicode_tables3SCE6__ctorMFNaNbNcNiNfkhhZSQCfQCeQByQBl@Base 15 ++ _D3std8internal14unicode_tables3SCE6__initZ@Base 15 ++ _D3std8internal14unicode_tables6blocks10ChorasmianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10DevanagariyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10GlagoliticyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10KharoshthiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10ManichaeanyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10Old_ItalicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10Old_PermicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10Old_TurkicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10Old_UyghuryAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10PhoenicianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks10SaurashtrayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Basic_LatinyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Box_DrawingyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11CJK_StrokesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Dives_AkuruyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Hangul_JamoyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11MedefaidrinyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Nag_MundariyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11NandinagariyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11New_Tai_LueyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Old_PersianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Old_SogdianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Pau_Cin_HauyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Warang_CitiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks11Yi_RadicalsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Cypro_MinoanyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Domino_TilesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Gurung_KhemayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Meetei_MayekyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Number_FormsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Pahawh_HmongyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Sora_SompengyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Syloti_NagriyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks12Yi_SyllablesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Chess_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Gunjala_GondiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Khmer_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Mahjong_TilesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Masaram_GondiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Mende_KikakuiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Old_HungarianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Phaistos_DiscyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Playing_CardsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks13Tulu_TigalariyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks14Aegean_NumbersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks14Block_ElementsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks14Greek_ExtendedyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks14IPA_ExtensionsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks14Low_SurrogatesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks14Mayan_NumeralsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks14Vertical_FormsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Ancient_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Hanifi_RohingyayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15High_SurrogatesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Kana_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Kana_Extended_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Kana_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Kangxi_RadicalsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Lisu_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Musical_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks15Psalter_PahlaviyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Bamum_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Braille_PatternsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Control_PicturesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Currency_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Geometric_ShapesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Greek_and_CopticyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Hangul_SyllablesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Imperial_AramaicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Latin_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Latin_Extended_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Latin_Extended_CyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Latin_Extended_DyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Latin_Extended_EyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Latin_Extended_FyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Latin_Extended_GyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Meroitic_CursiveyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Private_Use_AreayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Tamil_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Vedic_ExtensionsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks16Zanabazar_SquareyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Arabic_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Arabic_Extended_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Arabic_Extended_CyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Arabic_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Bopomofo_ExtendedyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17CJK_CompatibilityyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Cypriot_SyllabaryyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Ethiopic_ExtendedyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Georgian_ExtendedyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Kaktovik_NumeralsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Old_North_ArabianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Old_South_ArabianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Syriac_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Tangut_ComponentsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks17Tangut_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Alchemical_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Caucasian_AlbanianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Latin_1_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Letterlike_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Linear_B_IdeogramsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Linear_B_SyllabaryyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Myanmar_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Myanmar_Extended_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Myanmar_Extended_CyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks18Sutton_SignWritingyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Cherokee_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_CyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Cyrillic_Extended_DyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Cyrillic_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Devanagari_ExtendedyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Ethiopic_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Ethiopic_Extended_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Ethiopic_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19General_PunctuationyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Georgian_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Indic_Siyaq_NumbersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Khitan_Small_ScriptyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Ornamental_DingbatsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Phonetic_ExtensionsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Small_Form_VariantsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks19Variation_SelectorsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks20Combining_Half_MarksyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks20Coptic_Epact_NumbersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks20Egyptian_HieroglyphsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks20Meroitic_HieroglyphsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks20Mongolian_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks20Rumi_Numeral_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks20Small_Kana_ExtensionyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks20Sundanese_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Anatolian_HieroglyphsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Ancient_Greek_NumbersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Counting_Rod_NumeralsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Devanagari_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Glagolitic_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Inscriptional_PahlaviyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Miscellaneous_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Modifier_Tone_LettersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Ottoman_Siyaq_NumbersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Supplemental_Arrows_CyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks21Tai_Xuan_Jing_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks22CJK_Unified_IdeographsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks22Enclosed_AlphanumericsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks22Hangul_Jamo_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks22Hangul_Jamo_Extended_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks22Inscriptional_ParthianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks22Mathematical_OperatorsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks22Nyiakeng_Puachue_HmongyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks23CJK_Compatibility_FormsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks23CJK_Radicals_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks23Meetei_Mayek_ExtensionsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks23Miscellaneous_TechnicalyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks23Sinhala_Archaic_NumbersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks23Yijing_Hexagram_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks24Early_Dynastic_CuneiformyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks24Spacing_Modifier_LettersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks24Supplemental_PunctuationyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks25Byzantine_Musical_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks25Common_Indic_Number_FormsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks25Geometric_Shapes_ExtendedyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks25Hangul_Compatibility_JamoyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks25Latin_Extended_AdditionalyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks25Shorthand_Format_ControlsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks25Transport_and_Map_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks25Znamenny_Musical_NotationyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks27Arabic_Presentation_Forms_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks27Arabic_Presentation_Forms_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks27CJK_Symbols_and_PunctuationyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks27Combining_Diacritical_MarksyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks27High_Private_Use_SurrogatesyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks27Superscripts_and_SubscriptsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks28CJK_Compatibility_IdeographsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks28Katakana_Phonetic_ExtensionsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks28Symbols_for_Legacy_ComputingyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks29Alphabetic_Presentation_FormsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks29Halfwidth_and_Fullwidth_FormsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks29Optical_Character_RecognitionyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks30Ancient_Greek_Musical_NotationyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks30Phonetic_Extensions_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks30Variation_Selectors_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks31Egyptian_Hieroglyphs_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks31Enclosed_CJK_Letters_and_MonthsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks31Enclosed_Ideographic_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks32Enclosed_Alphanumeric_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks32Miscellaneous_Symbols_and_ArrowsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks32Supplementary_Private_Use_Area_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks32Supplementary_Private_Use_Area_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks33Cuneiform_Numbers_and_PunctuationyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks33Mathematical_Alphanumeric_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_CyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_DyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_EyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_FyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_GyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_HyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34CJK_Unified_Ideographs_Extension_IyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34Ideographic_Description_CharactersyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks34Symbols_and_Pictographs_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks35Egyptian_Hieroglyph_Format_ControlsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks35Ideographic_Symbols_and_PunctuationyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks35Supplemental_Mathematical_OperatorsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks36Combining_Diacritical_Marks_ExtendedyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks36Miscellaneous_Mathematical_Symbols_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks36Miscellaneous_Mathematical_Symbols_ByAh@Base 15 ++ _D3std8internal14unicode_tables6blocks36Supplemental_Symbols_and_PictographsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks37Miscellaneous_Symbols_and_PictographsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks37Unified_Canadian_Aboriginal_SyllabicsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks38Arabic_Mathematical_Alphabetic_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks38Combining_Diacritical_Marks_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks39CJK_Compatibility_Ideographs_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks39Combining_Diacritical_Marks_for_SymbolsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks39Symbols_for_Legacy_Computing_SupplementyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks3LaoyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks3MroyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks3NKoyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks3VaiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks3tabFNaNdNfZAySQBzQByQBs15UnicodeProperty@Base 15 ++ _D3std8internal14unicode_tables6blocks46Unified_Canadian_Aboriginal_Syllabics_ExtendedyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks48Unified_Canadian_Aboriginal_Syllabics_Extended_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4AhomyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4ChamyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4KawiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4LisuyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4MiaoyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4ModiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4NewayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4TagsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4ThaiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4TotoyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks4_tabyASQBsQBrQBl15UnicodeProperty@Base 15 ++ _D3std8internal14unicode_tables6blocks5AdlamyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5BamumyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5BatakyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5BuhidyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5DograyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5GarayyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5KhmeryAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5LimbuyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5NushuyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5OghamyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5OriyayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5OsageyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5RunicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5TakriyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks5TamilyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6ArabicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6ArrowsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6BrahmiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6CarianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6ChakmayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6CopticyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6GothicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6HatranyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6HebrewyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6KaithiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6KanbunyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6KhojkiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6LepchayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6LycianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6LydianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6RejangyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6SyriacyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6Tai_LeyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6TangsayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6TangutyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6TeluguyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6ThaanayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6TodhriyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6WanchoyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6YezidiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks6__initZ@Base 15 ++ _D3std8internal14unicode_tables6blocks7AvestanyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7BengaliyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7DeseretyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7ElbasanyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7ElymaicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7GranthayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7HanunooyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7KannadayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7MakasaryAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7MandaicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7MarchenyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7MultaniyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7MyanmaryAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7Ol_OnalyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7OsmanyayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7SharadayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7ShavianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7SiddhamyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7SinhalayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7SogdianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7SoyomboyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7SunuwaryAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7TagalogyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7TibetanyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks7TirhutayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8ArmenianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8BalineseyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8BopomofoyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8BugineseyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8CherokeeyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8CyrillicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8DingbatsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8DuployanyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8EthiopicyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8GeorgianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8GujaratiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8GurmukhiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8HiraganayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8JavaneseyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8KatakanayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8Kayah_LiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8Linear_AyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8MahajaniyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8Ol_ChikiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8Phags_payAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8SpecialsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8TagbanwayAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8Tai_ThamyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8Tai_VietyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8TifinaghyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8UgariticyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks8VithkuqiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9Bassa_VahyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9BhaiksukiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9CuneiformyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9EmoticonsyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9KhudawadiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9Kirat_RaiyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9MalayalamyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9MongolianyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9NabataeanyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9PalmyreneyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9SamaritanyAh@Base 15 ++ _D3std8internal14unicode_tables6blocks9SundaneseyAh@Base 15 ++ _D3std8internal14unicode_tables6hangul1LyAh@Base 15 ++ _D3std8internal14unicode_tables6hangul1TyAh@Base 15 ++ _D3std8internal14unicode_tables6hangul1VyAh@Base 15 ++ _D3std8internal14unicode_tables6hangul2LVyAh@Base 15 ++ _D3std8internal14unicode_tables6hangul3LVTyAh@Base 15 ++ _D3std8internal14unicode_tables6hangul3tabFNaNdNfZAySQBzQByQBs15UnicodeProperty@Base 15 ++ _D3std8internal14unicode_tables6hangul4_tabyASQBsQBrQBl15UnicodeProperty@Base 15 ++ _D3std8internal14unicode_tables6hangul6__initZ@Base 15 ++ _D3std8internal14unicode_tables7isHangLFNaNbNiNfwZb@Base 15 ++ _D3std8internal14unicode_tables7isHangTFNaNbNiNfwZb@Base 15 ++ _D3std8internal14unicode_tables7isHangVFNaNbNiNfwZb@Base 15 ++ _D3std8internal14unicode_tables7scripts10ChorasmianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10DevanagariyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10GlagoliticyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10KharoshthiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10ManichaeanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10Old_ItalicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10Old_PermicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10Old_TurkicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10Old_UyghuryAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10PhoenicianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts10SaurashtrayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11Dives_AkuruyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11MedefaidrinyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11Nag_MundariyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11NandinagariyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11New_Tai_LueyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11Old_PersianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11Old_SogdianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11Pau_Cin_HauyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11SignWritingyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts11Warang_CitiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts12Cypro_MinoanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts12Gurung_KhemayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts12Meetei_MayekyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts12Pahawh_HmongyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts12Sora_SompengyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts12Syloti_NagriyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts13Gunjala_GondiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts13Masaram_GondiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts13Mende_KikakuiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts13Old_HungarianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts13Tulu_TigalariyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts15Hanifi_RohingyayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts15Psalter_PahlaviyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts16Imperial_AramaicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts16Meroitic_CursiveyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts16Zanabazar_SquareyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts17Old_North_ArabianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts17Old_South_ArabianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts18Caucasian_AlbanianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts19Canadian_AboriginalyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts19Khitan_Small_ScriptyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts20Egyptian_HieroglyphsyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts20Meroitic_HieroglyphsyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts21Anatolian_HieroglyphsyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts21Inscriptional_PahlaviyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts22Inscriptional_ParthianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts22Nyiakeng_Puachue_HmongyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts2YiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts3HanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts3LaoyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts3MroyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts3NkoyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts3VaiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts3tabFNaNdNfZAySQCaQBzQBt15UnicodeProperty@Base 15 ++ _D3std8internal14unicode_tables7scripts4AhomyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4ChamyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4KawiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4LisuyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4MiaoyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4ModiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4NewayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4ThaiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4TotoyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts4_tabyASQBtQBsQBm15UnicodeProperty@Base 15 ++ _D3std8internal14unicode_tables7scripts5AdlamyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5BamumyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5BatakyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5BuhidyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5DograyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5GarayyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5GreekyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5KhmeryAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5LatinyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5LimbuyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5NushuyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5OghamyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5OriyayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5OsageyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5RunicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5TakriyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts5TamilyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6ArabicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6BrahmiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6CarianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6ChakmayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6CommonyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6CopticyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6GothicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6HangulyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6HatranyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6HebrewyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6KaithiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6KhojkiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6LepchayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6LycianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6LydianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6RejangyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6SyriacyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6Tai_LeyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6TangsayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6TangutyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6TeluguyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6ThaanayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6TodhriyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6WanchoyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6YezidiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts6__initZ@Base 15 ++ _D3std8internal14unicode_tables7scripts7AvestanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7BengaliyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7BrailleyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7CypriotyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7DeseretyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7ElbasanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7ElymaicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7GranthayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7HanunooyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7KannadayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7MakasaryAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7MandaicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7MarchenyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7MultaniyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7MyanmaryAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7Ol_OnalyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7OsmanyayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7SharadayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7ShavianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7SiddhamyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7SinhalayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7SogdianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7SoyomboyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7SunuwaryAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7TagalogyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7TibetanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts7TirhutayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8ArmenianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8BalineseyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8BopomofoyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8BugineseyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8CherokeeyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8CyrillicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8DuployanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8EthiopicyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8GeorgianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8GujaratiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8GurmukhiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8HiraganayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8JavaneseyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8KatakanayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8Kayah_LiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8Linear_AyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8Linear_ByAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8MahajaniyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8Ol_ChikiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8Phags_PayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8TagbanwayAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8Tai_ThamyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8Tai_VietyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8TifinaghyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8UgariticyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts8VithkuqiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9Bassa_VahyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9BhaiksukiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9CuneiformyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9InheritedyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9KhudawadiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9Kirat_RaiyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9MalayalamyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9MongolianyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9NabataeanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9PalmyreneyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9SamaritanyAh@Base 15 ++ _D3std8internal14unicode_tables7scripts9SundaneseyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps10AlphabeticyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps10DeprecatedyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps10Other_MathyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps11ID_ContinueyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps11IdeographicyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps11Soft_DottedyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps11White_SpaceyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps12Bidi_ControlyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps12Join_ControlyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps12XID_ContinueyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps13Grapheme_BaseyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps13Grapheme_LinkyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps14Case_IgnorableyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps14Other_ID_StartyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps14Pattern_SyntaxyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps14Quotation_MarkyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps15ASCII_Hex_DigityAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps15Grapheme_ExtendyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps15Other_LowercaseyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps15Other_UppercaseyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps16Other_AlphabeticyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps17Other_ID_ContinueyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps17Sentence_TerminalyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps17Unified_IdeographyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps18IDS_Unary_OperatoryAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps18Regional_IndicatoryAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps18Variation_SelectoryAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps19IDS_Binary_OperatoryAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps19Pattern_White_SpaceyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps20IDS_Trinary_OperatoryAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps20ID_Compat_Math_StartyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps20Terminal_PunctuationyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps21Other_Grapheme_ExtendyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps23ID_Compat_Math_ContinueyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps23Logical_Order_ExceptionyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps23Modifier_Combining_MarkyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps23Noncharacter_Code_PointyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps28Default_Ignorable_Code_PointyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps28Prepended_Concatenation_MarkyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2CcyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2CfyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2CnyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2CoyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2CsyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2LlyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2LmyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2LoyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2LtyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2LuyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2McyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2MeyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2MnyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2NdyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2NlyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2NoyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2PcyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2PdyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2PeyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2PfyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2PiyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2PoyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2PsyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2ScyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2SkyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2SmyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2SoyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2ZlyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2ZpyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps2ZsyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps34Other_Default_Ignorable_Code_PointyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps3tabFNaNdNfZAySQCbQCaQBu15UnicodeProperty@Base 15 ++ _D3std8internal14unicode_tables8uniProps4DashyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps4MathyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps4_tabyASQBuQBtQBn15UnicodeProperty@Base 15 ++ _D3std8internal14unicode_tables8uniProps5CasedyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps6HyphenyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps6__initZ@Base 15 ++ _D3std8internal14unicode_tables8uniProps7RadicalyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps8ExtenderyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps8ID_StartyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps9DiacriticyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps9Hex_DigityAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps9LowercaseyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps9UppercaseyAh@Base 15 ++ _D3std8internal14unicode_tables8uniProps9XID_StartyAh@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd11__xopEqualsMxFKxSQDfQDeQCy__TQClTbVii7Vii4Vii4Vii6ZQDhZb@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd6__initZ@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd9__xtoHashFNbNeKxSQDeQDdQCx__TQCkTbVii7Vii4Vii4Vii6ZQDgZm@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTbVii8Vii5Vii8ZQCyZb@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz6__initZ@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTbVii8Vii5Vii8ZQCxZm@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTbVii8Vii6Vii7ZQCyZb@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz6__initZ@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTbVii8Vii6Vii7ZQCxZm@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgThVii8Vii8Vii5ZQCyZb@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz6__initZ@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfThVii8Vii8Vii5ZQCxZm@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw11__xopEqualsMxFKxSQCxQCwQCq__TQCdTtVii12Vii9ZQCsZb@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw6__initZ@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw9__xtoHashFNbNeKxSQCwQCvQCp__TQCcTtVii12Vii9ZQCrZm@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTtVii8Vii7Vii6ZQCyZb@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz6__initZ@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTtVii8Vii7Vii6ZQCxZm@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz11__xopEqualsMxFKxSQDaQCzQCt__TQCgTtVii8Vii8Vii5ZQCyZb@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz6__initZ@Base 15 ++ _D3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz9__xtoHashFNbNeKxSQCzQCyQCs__TQCfTtVii8Vii8Vii5ZQCxZm@Base 15 ++ _D3std8internal16unicode_grapheme11__moduleRefZ@Base 15 ++ _D3std8internal16unicode_grapheme12__ModuleInfoZ@Base 15 ++ _D3std8internal4math11biguintcore10inplaceSubFNaNbNfAkAxkQdZb@Base 15 ++ _D3std8internal4math11biguintcore11__moduleRefZ@Base 15 ++ _D3std8internal4math11biguintcore11blockDivModFNaNbNfAkQcIAkZv@Base 15 ++ _D3std8internal4math11biguintcore11includeSignFNaNbNfMAxkmbZAk@Base 15 ++ _D3std8internal4math11biguintcore11mulInternalFNaNbNfAkAxkQdZv@Base 15 ++ _D3std8internal4math11biguintcore12__ModuleInfoZ@Base 15 ++ _D3std8internal4math11biguintcore12biguintToHexFNaNbNfNkMAaMxAkaEQCl5ascii10LetterCaseZQBe@Base 15 ++ _D3std8internal4math11biguintcore12mulKaratsubaFNaNbNfAkAxkQdQhZv@Base 15 ++ _D3std8internal4math11biguintcore12squareSimpleFNaNbNfAkAxkZv@Base 15 ++ _D3std8internal4math11biguintcore13getCacheLimitFNaNbNiNfZm@Base 15 ++ _D3std8internal4math11biguintcore14biguintToOctalFNaNbNiNfAaAxkZm@Base 15 ++ _D3std8internal4math11biguintcore14divModInternalFNaNbNfAkQcxAkxQdZv@Base 15 ++ _D3std8internal4math11biguintcore14itoaZeroPaddedFNaNbNiNfAakZv@Base 15 ++ _D3std8internal4math11biguintcore14squareInternalFNaNbNfAkxAkZv@Base 15 ++ _D3std8internal4math11biguintcore14twosComplementFNaNbNfAxkAkZv@Base 15 ++ _D3std8internal4math11biguintcore15addAssignSimpleFNaNbNfAkAxkZk@Base 15 ++ _D3std8internal4math11biguintcore15adjustRemainderFNaNbNfAkQcAxklQibZv@Base 15 ++ _D3std8internal4math11biguintcore15recursiveDivModFNaNbNfAkQcAxkQhbZv@Base 15 ++ _D3std8internal4math11biguintcore15squareKaratsubaFNaNbNfAkxAkQfZv@Base 15 ++ _D3std8internal4math11biguintcore15subAssignSimpleFNaNbNfAkAxkZk@Base 15 ++ _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZ14lowerHexDigitsyAa@Base 15 ++ _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZ14upperHexDigitsyAa@Base 15 ++ _D3std8internal4math11biguintcore15toHexZeroPaddedFNaNbNfAakEQCh5ascii10LetterCaseZv@Base 15 ++ _D3std8internal4math11biguintcore16biguintToDecimalFNaNbNfAaAkZm@Base 15 ++ _D3std8internal4math11biguintcore16schoolbookDivModFNaNbNfAkQcIAkZv@Base 15 ++ _D3std8internal4math11biguintcore17firstNonZeroDigitFNaNbNiNfxAkZi@Base 15 ++ _D3std8internal4math11biguintcore18removeLeadingZerosFNaNbNfNkMANgkZQf@Base 15 ++ _D3std8internal4math11biguintcore20addOrSubAssignSimpleFNaNbNfAkAxkbZk@Base 15 ++ _D3std8internal4math11biguintcore21highestDifferentDigitFNaNbNiNfxAkxQdZm@Base 15 ++ _D3std8internal4math11biguintcore24highestPowerBelowUintMaxFNaNbNfkZ6maxpwryG22h@Base 15 ++ _D3std8internal4math11biguintcore24highestPowerBelowUintMaxFNaNbNfkZi@Base 15 ++ _D3std8internal4math11biguintcore25highestPowerBelowUlongMaxFNaNbNfkZ6maxpwryG39h@Base 15 ++ _D3std8internal4math11biguintcore25highestPowerBelowUlongMaxFNaNbNfkZi@Base 15 ++ _D3std8internal4math11biguintcore25karatsubaRequiredBuffSizeFNaNbNfmZm@Base 15 ++ _D3std8internal4math11biguintcore3ONEyAk@Base 15 ++ _D3std8internal4math11biguintcore3TENyAk@Base 15 ++ _D3std8internal4math11biguintcore3TWOyAk@Base 15 ++ _D3std8internal4math11biguintcore3addFNaNbNfMxAkMxQeZAk@Base 15 ++ _D3std8internal4math11biguintcore3subFNaNbNfMxAkMxQePbZAk@Base 15 ++ _D3std8internal4math11biguintcore4ZEROyAk@Base 15 ++ _D3std8internal4math11biguintcore4lessFNaNbNfAxkQdZb@Base 15 ++ _D3std8internal4math11biguintcore6addIntFNaNbNfxAkmZAk@Base 15 ++ _D3std8internal4math11biguintcore6subIntFNaNbNfxAkmZAk@Base 15 ++ _D3std8internal4math11biguintcore7BigUint10uintLengthMxFNaNbNdNiNlNfZm@Base 15 ++ _D3std8internal4math11biguintcore7BigUint11__invariantMxFNaZv@Base 15 ++ _D3std8internal4math11biguintcore7BigUint11__xopEqualsMxFKxSQCgQCfQBzQBxQBnZb@Base 15 ++ _D3std8internal4math11biguintcore7BigUint11toHexStringMxFNaNbNlNfiaiaEQCq5ascii10LetterCaseZAa@Base 15 ++ _D3std8internal4math11biguintcore7BigUint11ulongLengthMxFNaNbNdNiNlNfZm@Base 15 ++ _D3std8internal4math11biguintcore7BigUint12__invariant0MxFNaZv@Base 15 ++ _D3std8internal4math11biguintcore7BigUint13toOctalStringMxFNaNbNlNfZAa@Base 15 ++ _D3std8internal4math11biguintcore7BigUint15toDecimalStringMxFNaNbNlNfiZAa@Base 15 ++ _D3std8internal4math11biguintcore7BigUint22__funcliteral_L259_C32FNaNbNiNeAkZAyk@Base 15 ++ _D3std8internal4math11biguintcore7BigUint3divFNaNbNfNkMSQCcQCbQBvQBtQBjMQrZQu@Base 15 ++ _D3std8internal4math11biguintcore7BigUint3modFNaNbNfNkMSQCcQCbQBvQBtQBjMQrZQu@Base 15 ++ _D3std8internal4math11biguintcore7BigUint3mulFNaNbNfMSQCaQBzQBtQBrQBhMQrZQu@Base 15 ++ _D3std8internal4math11biguintcore7BigUint3powFNaNbNfNkMSQCcQCbQBvQBtQBjmZQs@Base 15 ++ _D3std8internal4math11biguintcore7BigUint6__ctorMFNaNbNcNiNfNkMAykZSQCoQCnQChQCfQBv@Base 15 ++ _D3std8internal4math11biguintcore7BigUint6__initZ@Base 15 ++ _D3std8internal4math11biguintcore7BigUint6divModFNaNbNfSQCcQCbQBvQBtQBjMQrJQuJQxZv@Base 15 ++ _D3std8internal4math11biguintcore7BigUint6isZeroMxFNaNbNiNlNfZb@Base 15 ++ _D3std8internal4math11biguintcore7BigUint6toHashMxFNaNbNiNlNfZm@Base 15 ++ _D3std8internal4math11biguintcore7BigUint8__xopCmpMxFKxSQCcQCbQBvQBtQBjZi@Base 15 ++ _D3std8internal4math11biguintcore7BigUint8addOrSubFNaNbNfMSQCfQCeQByQBwQBmMQrbKbZQx@Base 15 ++ _D3std8internal4math11biguintcore7BigUint8numBytesMxFNaNbNiNlNfZm@Base 15 ++ _D3std8internal4math11biguintcore7BigUint8peekUintMxFNaNbNiNlNfmZk@Base 15 ++ _D3std8internal4math11biguintcore7BigUint9peekUlongMxFNaNbNiNlNfmZm@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T5opCmpTvZQjMxFNaNbNiNlNfxSQCqQCpQCjQChQBxZi@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T6divIntTykZQlFNaNbNfNkMSQCoQCnQChQCfQBvykZQt@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T6modIntTykZQlFNaNbNfMSQCmQClQCfQCdQBtykZk@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T8opAssignTmZQmMFNaNbNlNfmZv@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T8opAssignTvZQmMFNaNbNiNlNfSQCrQCqQCkQCiQByZv@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T8opBinaryVAyaa2_3c3cTmZQxMxFNaNbNlNfmZSQDdQDcQCwQCuQCk@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T8opBinaryVAyaa2_3e3eTmZQxMxFNaNbNjNlNfmZSQDfQDeQCyQCwQCm@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T8opEqualsTvZQmMxFNaNbNiNlNfKxSQCuQCtQCnQClQCbZb@Base 15 ++ _D3std8internal4math11biguintcore7BigUint__T8opEqualsTvZQmMxFNaNbNiNlNfmZb@Base 15 ++ _D3std8internal4math11biguintcore9addSimpleFNaNbNfAkxAkxQdZk@Base 15 ++ _D3std8internal4math11biguintcore9mulSimpleFNaNbNfAkAxkQdZv@Base 15 ++ _D3std8internal4math11biguintcore__T6intpowTkZQkFNaNbNiNfkmZk@Base 15 ++ _D3std8internal4math12biguintnoasm11__moduleRefZ@Base 15 ++ _D3std8internal4math12biguintnoasm12__ModuleInfoZ@Base 15 ++ _D3std8internal4math12biguintnoasm12multibyteMulFNaNbNiNfAkAxkkkZk@Base 15 ++ _D3std8internal4math12biguintnoasm12multibyteShlFNaNbNiNfAkAxkkZk@Base 15 ++ _D3std8internal4math12biguintnoasm12multibyteShrFNaNbNiNfAkAxkkZv@Base 15 ++ _D3std8internal4math12biguintnoasm15multibyteSquareFNaNbNiNfAkAxkZv@Base 15 ++ _D3std8internal4math12biguintnoasm18multibyteDivAssignFNaNbNiNfAkkkZk@Base 15 ++ _D3std8internal4math12biguintnoasm27multibyteAddDiagonalSquaresFNaNbNiNfAkAxkZv@Base 15 ++ _D3std8internal4math12biguintnoasm27multibyteMultiplyAccumulateFNaNbNiNfAkAxkQdZv@Base 15 ++ _D3std8internal4math12biguintnoasm27multibyteTriangleAccumulateFNaNbNiNfAkAxkZv@Base 15 ++ _D3std8internal4math12biguintnoasm__T15multibyteAddSubVai43ZQxFNaNbNiNfAkAxkQdkZk@Base 15 ++ _D3std8internal4math12biguintnoasm__T15multibyteAddSubVai45ZQxFNaNbNiNfAkAxkQdkZk@Base 15 ++ _D3std8internal4math12biguintnoasm__T15multibyteMulAddVai43ZQxFNaNbNiNfAkAxkkkZk@Base 15 ++ _D3std8internal4math12biguintnoasm__T15multibyteMulAddVai45ZQxFNaNbNiNfAkAxkkkZk@Base 15 ++ _D3std8internal4math12biguintnoasm__T24multibyteIncrementAssignVai43ZQBgFNaNbNiNfAkkZk@Base 15 ++ _D3std8internal4math12biguintnoasm__T24multibyteIncrementAssignVai45ZQBgFNaNbNiNfAkkZk@Base 15 ++ _D3std8internal4math13errorfunction11__moduleRefZ@Base 15 ++ _D3std8internal4math13errorfunction12__ModuleInfoZ@Base 15 ++ _D3std8internal4math13errorfunction1PyG10e@Base 15 ++ _D3std8internal4math13errorfunction1QyG11e@Base 15 ++ _D3std8internal4math13errorfunction1RyG5e@Base 15 ++ _D3std8internal4math13errorfunction1SyG6e@Base 15 ++ _D3std8internal4math13errorfunction1TyG7e@Base 15 ++ _D3std8internal4math13errorfunction1UyG7e@Base 15 ++ _D3std8internal4math13errorfunction22normalDistributionImplFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P0yG8e@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P1yG10e@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P2yG8e@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2P3yG8e@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q0yG8e@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q1yG10e@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q2yG8e@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZ2Q3yG8e@Base 15 ++ _D3std8internal4math13errorfunction25normalDistributionInvImplFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13errorfunction3erfFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13errorfunction4erfcFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13errorfunction5EXP_2ye@Base 15 ++ _D3std8internal4math13errorfunction5erfceFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13errorfunction5expx2FNaNbNiNfeiZe@Base 15 ++ _D3std8internal4math13errorfunction__T12rationalPolyTeZQrFNaNbNiNfeAxeQdZe@Base 15 ++ _D3std8internal4math13gammafunction10EULERGAMMAye@Base 15 ++ _D3std8internal4math13gammafunction11__moduleRefZ@Base 15 ++ _D3std8internal4math13gammafunction11logmdigammaFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13gammafunction12__ModuleInfoZ@Base 15 ++ _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZ19LargeStirlingCoeffsyG7e@Base 15 ++ _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZ19SmallStirlingCoeffsyG9e@Base 15 ++ _D3std8internal4math13gammafunction13gammaStirlingFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13gammafunction14betaIncompleteFNaNbNiNfeeeZe@Base 15 ++ _D3std8internal4math13gammafunction15gammaIncompleteFNaNbNiNfeeZe@Base 15 ++ _D3std8internal4math13gammafunction16GammaSmallCoeffsyG9e@Base 15 ++ _D3std8internal4math13gammafunction16igammaTemmeLargeFNaNbNiNfeeZ4coefyG13Ae@Base 15 ++ _D3std8internal4math13gammafunction16igammaTemmeLargeFNaNbNiNfeeZe@Base 15 ++ _D3std8internal4math13gammafunction17betaIncompleteInvFNaNbNiNfeeeZe@Base 15 ++ _D3std8internal4math13gammafunction17logGammaNumeratoryG7e@Base 15 ++ _D3std8internal4math13gammafunction18betaDistExpansion1FNaNbNiNfeeeZe@Base 15 ++ _D3std8internal4math13gammafunction18betaDistExpansion2FNaNbNiNfeeeZe@Base 15 ++ _D3std8internal4math13gammafunction18logmdigammaInverseFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13gammafunction19GammaSmallNegCoeffsyG9e@Base 15 ++ _D3std8internal4math13gammafunction19betaDistPowerSeriesFNaNbNiNfeeeZe@Base 15 ++ _D3std8internal4math13gammafunction19logGammaDenominatoryG8e@Base 15 ++ _D3std8internal4math13gammafunction20GammaNumeratorCoeffsyG8e@Base 15 ++ _D3std8internal4math13gammafunction20gammaIncompleteComplFNaNbNiNfeeZe@Base 15 ++ _D3std8internal4math13gammafunction22GammaDenominatorCoeffsyG9e@Base 15 ++ _D3std8internal4math13gammafunction22logGammaStirlingCoeffsyG7e@Base 15 ++ _D3std8internal4math13gammafunction23gammaIncompleteComplInvFNaNbNiNfeeZe@Base 15 ++ _D3std8internal4math13gammafunction4Bn_nyG7e@Base 15 ++ _D3std8internal4math13gammafunction5gammaFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13gammafunction7digammaFNaNbNiNfeZe@Base 15 ++ _D3std8internal4math13gammafunction8logGammaFNaNbNiNfeZe@Base 15 ++ _D3std8internal4test10dummyrange11__moduleRefZ@Base 15 ++ _D3std8internal4test10dummyrange12__ModuleInfoZ@Base 15 ++ _D3std8internal4test10dummyrange7TestFoo6__initZ@Base 15 ++ _D3std8internal4test10dummyrange7TestFoo8opEqualsMxFKxSQCbQCaQBuQBsQBjZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei1TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei1TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi1TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei2TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei2TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi2TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei3TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi0VQDei3TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opIndexMNgFNaNbNcNiNfmZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfZSQFqQFpQFjQFh__TQEyVQEpi0VQDwi0VQDfi3TQClZQFy@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfmmZSQFsQFrQFlQFj__TQFaVQEri0VQDyi0VQDhi3TQCnZQGa@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7popBackMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui0VQDdi3TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei1TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei1TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui1VQDdi1TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei2TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMNgFNaNbNcNdNiNfZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi0VQDvi1VQDei2TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMNgFNaNbNcNdNiNfZNgk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi0VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni0VQDui1VQDdi2TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei0TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei0TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi0TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei1TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei1TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi1TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei2TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei2TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi2TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei3TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm13opIndexAssignMFNaNbNiNfkmZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi0VQDei3TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opIndexMxFNaNbNiNfmZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfZSQFqQFpQFjQFh__TQEyVQEpi1VQDwi0VQDfi3TQClZQFy@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7opSliceMFNaNbNiNfmmZSQFsQFrQFlQFj__TQFaVQEri1VQDyi0VQDhi3TQCnZQGa@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm7popBackMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi0VEQDrQDqQDkQDi9RangeTypei3TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui0VQDdi3TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei0TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei0TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi0TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei1TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei1TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei1TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi1TQCjZQFwZm@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm11__xopEqualsMxFKxSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei2TQCkZQFxZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm12uinttestDatayAk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4backMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm4saveMFNaNbNdNiNfZSQFpQFoQFiQFg__TQExVQEoi1VQDvi1VQDei2TQCkZQFx@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMFNaNbNdNiNfkZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm5frontMxFNaNbNdNiNfZk@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6__initZ@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm6reinitMFNaNbNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm7popBackMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std8internal4test10dummyrange__T10DummyRangeVEQBvQBuQBoQBm8ReturnByi1VEQCuQCtQCnQCl6Lengthi1VEQDrQDqQDkQDi9RangeTypei2TAkZQDm9__xtoHashFNbNeKxSQFoQFnQFhQFf__TQEwVQEni1VQDui1VQDdi2TQCjZQFwZm@Base 15 ++ _D3std8internal4test25sumtype_example_overloads11__moduleRefZ@Base 15 ++ _D3std8internal4test25sumtype_example_overloads12__ModuleInfoZ@Base 15 ++ _D3std8internal4test25sumtype_example_overloads6handleFNfAyaZQe@Base 15 ++ _D3std8internal4test25sumtype_example_overloads6handleFNfdZAya@Base 15 ++ _D3std8internal4test25sumtype_example_overloads6handleFNfiZAya@Base 15 ++ _D3std8internal4test3uda11__moduleRefZ@Base 15 ++ _D3std8internal4test3uda12__ModuleInfoZ@Base 15 ++ _D3std8internal4test3uda17HasPrivateMembers6__initZ@Base 15 ++ _D3std8internal4test5range11__moduleRefZ@Base 15 ++ _D3std8internal4test5range12__ModuleInfoZ@Base 15 ++ _D3std8internal6memory11__moduleRefZ@Base 15 ++ _D3std8internal6memory12__ModuleInfoZ@Base 15 ++ _D3std8internal6memory__T13enforceCallocZQqFNaNbNiNfmmZPv@Base 15 ++ _D3std8internal6memory__T13enforceMallocZQqFNaNbNiNfmZPv@Base 15 ++ _D3std8internal6memory__T14enforceReallocZQrFNaNbNiNkMPvmZQe@Base 15 ++ _D3std8internal7cstring11__moduleRefZ@Base 15 ++ _D3std8internal7cstring12__ModuleInfoZ@Base 15 ++ _D3std8internal7cstring__T11tempCStringTaTANgaZQvFNaNbNiNfMQrZSQCjQCiQCc__T17TempCStringBufferTaZQw@Base 15 ++ _D3std8internal7cstring__T11tempCStringTaTAxaZQuFNaNbNiNfMQqZSQCiQChQCb__T17TempCStringBufferTaZQw@Base 15 ++ _D3std8internal7cstring__T11tempCStringTaTAyaZQuFNaNbNiNfMQqZSQCiQChQCb__T17TempCStringBufferTaZQw@Base 15 ++ _D3std8internal7cstring__T11tempCStringTaTSQBp4path__T16asNormalizedPathTSQCu5range__T5chainTSQDo3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplTSQFnQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFoFNkMQFcZQtZQHeFNaNbNiMQGzZSQIsQIrQIl__T17TempCStringBufferTaZQw@Base 15 ++ _D3std8internal7cstring__T11tempCStringTaTSQBp5range__T5chainTSQCj3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplTSQEiQCt__T10OnlyResultTaZQpTQDbZQDmFQDjQBnQDpZ6ResultZQFlFNaNbNiNfMQFiZSQHbQHaQGu__T17TempCStringBufferTaZQw@Base 15 ++ _D3std8internal7cstring__T14trustedReallocTaZQtFNaNbNiNeNkMAaZQd@Base 15 ++ _D3std8internal7cstring__T17TempCStringBufferTaZQw14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D3std8internal7cstring__T17TempCStringBufferTaZQw15trustedVoidInitFNaNbNiNeZSQCyQCxQCr__TQCmTaZQCs@Base 15 ++ _D3std8internal7cstring__T17TempCStringBufferTaZQw3ptrMxFNaNbNdNiNeZPxa@Base 15 ++ _D3std8internal7cstring__T17TempCStringBufferTaZQw6__dtorMFNaNbNiNeZv@Base 15 ++ _D3std8internal7cstring__T17TempCStringBufferTaZQw6__initZ@Base 15 ++ _D3std8internal7cstring__T17TempCStringBufferTaZQw7buffPtrMNgFNaNbNdNiNjNeZPNga@Base 15 ++ _D3std8internal7cstring__T17TempCStringBufferTaZQw7opIndexMxFNaNbNiNeZAxa@Base 15 ++ _D3std8internal7cstring__T17TempCStringBufferTaZQw8opAssignMFNaNbNcNiNjNeSQCuQCtQCn__TQCiTaZQCoZQx@Base 15 ++ _D3std8internal7cstring__T19trustedReallocStackTaZQyFNaNbNiNeMAamZQe@Base 15 ++ _D3std8internal7windows6bcrypt11__moduleRefZ@Base 15.2 ++ _D3std8internal7windows6bcrypt12__ModuleInfoZ@Base 15.2 ++ _D3std8internal7windows8advapi3211__moduleRefZ@Base 15 ++ _D3std8internal7windows8advapi3212__ModuleInfoZ@Base 15 ++ _D3std8typecons10Structural11__InterfaceZ@Base 15 ++ _D3std8typecons11__moduleRefZ@Base 15 ++ _D3std8typecons12__ModuleInfoZ@Base 15 ++ _D3std8typecons19NotImplementedError6__ctorMFNaNbNfAyaZCQCcQCbQBv@Base 15 ++ _D3std8typecons19NotImplementedError6__initZ@Base 15 ++ _D3std8typecons19NotImplementedError6__vtblZ@Base 15 ++ _D3std8typecons19NotImplementedError7__ClassZ@Base 15 ++ _D3std8typecons2No6__initZ@Base 15 ++ _D3std8typecons3Yes6__initZ@Base 15 ++ _D3std8typecons7Ternary4makeFNaNbNiNfhZSQBmQBlQBf@Base 15 ++ _D3std8typecons7Ternary6__ctorMFNaNbNcNiNfbZSQBrQBqQBk@Base 15 ++ _D3std8typecons7Ternary6__ctorMFNaNbNcNiNfxSQBqQBpQBjZSQCbQCaQBu@Base 15 ++ _D3std8typecons7Ternary6__initZ@Base 15 ++ _D3std8typecons7Ternary8opAssignMFNaNbNiNfbZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl11__xopEqualsMxFKxSQDxQDw__TQDqTQDhZQDyZb@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__ctorMFNaNbNcNiNeQCuZSQEcQEb__TQDvTQDmZQEd@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl9__xtoHashFNbNeKxSQDwQDv__TQDpTQDgZQDxZm@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T3getTSQDnQDm__TQDgTQCxZQDoZQBbMFNaNbNdNiNeZQDv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T3setTSQDnQDm__TQDgTQCxZQDoZQBbMFNaNbNiNfQDsZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T5clearTSQDpQDo__TQDiTQCzZQDqZQBdMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl__T8opAssignTSQDsQDr__TQDlTQDcZQDtZQBgMFNaNbNiNeQDxZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm11__xopEqualsMxFKxSQDyQDx__TQDrTQDiZQDzZb@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__ctorMFNaNbNcNiNeQCvZSQEdQEc__TQDwTQDnZQEe@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm9__xtoHashFNbNeKxSQDxQDw__TQDqTQDhZQDyZm@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T3getTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNdNiNeZQDw@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T3setTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNiNfQDtZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T5clearTSQDqQDp__TQDjTQDaZQDrZQBdMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm__T8opAssignTSQDtQDs__TQDmTQDdZQDuZQBgMFNaNbNiNeQDyZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm11__xopEqualsMxFKxSQDyQDx__TQDrTQDiZQDzZb@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__ctorMFNaNbNcNiNeQCvZSQEdQEc__TQDwTQDnZQEe@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm9__xtoHashFNbNeKxSQDxQDw__TQDqTQDhZQDyZm@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T3getTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNdNiNeZQDw@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T3setTSQDoQDn__TQDhTQCyZQDpZQBbMFNaNbNiNfQDtZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T5clearTSQDqQDp__TQDjTQDaZQDrZQBdMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm__T8opAssignTSQDtQDs__TQDmTQDdZQDuZQBgMFNaNbNiNeQDyZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__ctorMFNaNbNcNiNeQDvZSQFdQFc__TQEwTQEnZQFe@Base 15 ++ _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm6__initZ@Base 15 ++ _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T3getTSQEoQEn__TQEhTQDyZQEpZQBbMFNaNbNdNiNeZQEw@Base 15 ++ _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T3setTSQEoQEn__TQEhTQDyZQEpZQBbMFNaNbNiNfQEtZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T5clearTSQEqQEp__TQEjTQEaZQErZQBdMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDm__T8opAssignTSQEtQEs__TQEmTQEdZQEuZQBgMFNaNbNiNeQEyZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__ctorMFNaNbNcNiNeQCbZSQDjQDi__TQDcTQCtZQDk@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T3getTSQCuQCt__TQCnTQCeZQCvZQBbMFNaNbNdNiNeZQDc@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T3setTSQCuQCt__TQCnTQCeZQCvZQBbMFNaNbNiNfQCzZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T5clearTSQCwQCv__TQCpTQCgZQCxZQBdMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs__T8opAssignTSQCzQCy__TQCsTQCjZQDaZQBgMFNaNbNiNeQDeZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__ctorMFNaNbNcNiNeQCpZSQDxQDw__TQDqTQDhZQDy@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__initZ@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T3getTSQDiQDh__TQDbTQCsZQDjZQBbMFNaNbNdNiNeZQDq@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T3setTSQDiQDh__TQDbTQCsZQDjZQBbMFNaNbNiNfQDnZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T5clearTSQDkQDj__TQDdTQCuZQDlZQBdMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg__T8opAssignTSQDnQDm__TQDgTQCxZQDoZQBgMFNaNbNiNeQDsZv@Base 15 ++ _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu11__xopEqualsMxFKxSQDgQDf__TQCzTyQCqZQDiZb@Base 15 ++ _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu6__initZ@Base 15 ++ _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin13getMNgFNaNbNdNiNjNlNeZyQCq@Base 15 ++ _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin16__ctorMFNaNbNcNiNfyQCmZSQDvQDu__TQDoTyQDfZQDx@Base 15 ++ _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opAssignMFNaNbNiNeSQDqQDp__TQDjTyQDaZQDsZv@Base 15 ++ _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opAssignMFNaNbNiNfNkMyQCpZv@Base 15 ++ _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin18opEqualsMxFxCQDkQCfQBzQBtZb@Base 15 ++ _D3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu8__mixin1__T8opEqualsZQkMxFKxSQDrQDq__TQDkTyQDbZQDtZb@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu10__postblitMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore4moveMFNaNbNiKQDpZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk11__xopEqualsMxFKxSQFaQEz__TQEtTQEkVQDri1ZQFhQCnQEjZb@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk8opAssignMFNcNjSQExQEw__TQEqTQEhVQDoi1ZQFeQCkQEgZQBi@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCk9__xtoHashFNbNeKxSQEzQEy__TQEsTQEjVQDqi1ZQFgQCmQEiZm@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEyQEx__TQErTQEiVQDpi1ZQFf15RefCountedStore@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu17refCountedPayloadMFNaNbNcNdNiNjZQDs@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFcQDyQDxQDvQDu@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__ctorMFNcQCvZSQEdQEc__TQDwTQDnVQCui1ZQEk@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__dtorMFZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu8opAssignMFQCvZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl3FTP4ImplVEQCbQCa24RefCountedAutoInitializei1ZQCu8opAssignMFSQDzQDy__TQDsTQDjVQCqi1ZQEgZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv10__postblitMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore4moveMFNaNbNiKQDqZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__xopEqualsMxFKxSQFbQFa__TQEuTQElVQDri1ZQFiQCnQEjZb@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk8opAssignMFNcNjSQEyQEx__TQErTQEiVQDoi1ZQFfQCkQEgZQBi@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk9__xtoHashFNbNeKxSQFaQEz__TQEtTQEkVQDqi1ZQFhQCmQEiZm@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEzQEy__TQEsTQEjVQDpi1ZQFg15RefCountedStore@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMFNaNbNcNdNiNjZQDt@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFdQDzQDyQDwQDu@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__ctorMFNcQCwZSQEeQEd__TQDxTQDoVQCui1ZQEl@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__dtorMFZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFQCwZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4HTTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFSQEaQDz__TQDtTQDkVQCqi1ZQEhZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv10__postblitMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13allocateStoreMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore4moveMFNaNbNiKQDqZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk11__fieldDtorMFZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCk8opAssignMFNcNjSQEyQEx__TQErTQEiVQDoi1ZQFfQCkQEgZQBi@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T10initializeZQnMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15RefCountedStore__T17ensureInitializedZQuMFNaNbNiZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv15refCountedStoreMNgFNaNbNcNdNiNfZNgSQEzQEy__TQEsTQEjVQDpi1ZQFg15RefCountedStore@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMFNaNbNcNdNiNjZQDt@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv17refCountedPayloadMNgFNaNbNcNdNiNjNfZNgSQFdQDzQDyQDwQDu@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__ctorMFNcQCwZSQEeQEd__TQDxTQDoVQCui1ZQEl@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__dtorMFZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv6__initZ@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFQCwZv@Base 15 ++ _D3std8typecons__T10RefCountedTSQBe3net4curl4SMTP4ImplVEQCcQCb24RefCountedAutoInitializei1ZQCv8opAssignMFSQEaQDz__TQDtTQDkVQCqi1ZQEhZv@Base 15 ++ _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQClFNaNbNiNfQCkZSQDsQDr__T10RebindableTQDlZQr@Base 15 ++ _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCmFNaNbNiNfQClZSQDtQDs__T10RebindableTQDmZQr@Base 15 ++ _D3std8typecons__T10rebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCmFNaNbNiNfQClZSQDtQDs__T10RebindableTQDmZQr@Base 15 ++ _D3std8typecons__T10rebindableTSQBe4conv__T7toCharsVhi10TaVEQCg5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDmFNaNbNiNfQDlZSQEtQEs__T10RebindableTQEmZQr@Base 15 ++ _D3std8typecons__T10rebindableTSQBe5range__T10OnlyResultTaZQpZQBsFNaNbNiNfQBrZSQCzQCy__T10RebindableTQCsZQr@Base 15 ++ _D3std8typecons__T10rebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCgFNaNbNiNfQCfZSQDnQDm__T10RebindableTQDgZQr@Base 15 ++ _D3std8typecons__T11Rebindable2TaZQq3getMNgFNaNbNdNiNeZNga@Base 15 ++ _D3std8typecons__T11Rebindable2TaZQq6__ctorMFNaNbNcNiNeaZSQCeQCd__TQBxTaZQCd@Base 15 ++ _D3std8typecons__T11Rebindable2TaZQq6__initZ@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc10__postblitMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore13allocateStoreMFNaNbNiNfZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore13isInitializedMxFNaNbNdNiNfZb@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore15deallocateStoreMFNaNbNiZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl11__fieldDtorMFNeZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl11__xopEqualsMxFKxSQFkQFj__TQFdTQEqVQDti0ZQFrQCpQCbZb@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl6__initZ@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl8opAssignMFNcNjNeSQFjQFi__TQFcTQEpVQDsi0ZQFqQCoQCaZQBi@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4Impl9__xtoHashFNbNeKxSQFjQFi__TQFcTQEpVQDsi0ZQFqQCoQCaZm@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4moveMFNaNbNiNfKQDvZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore6__initZ@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore8refCountMxFNaNbNdNiNfZm@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore__T10initializeTAyaTEQFhQDz8SpanModeTbZQBkMFNfKQBfKQBfKbZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc15refCountedStoreMNgFNaNbNcNdNiNfZNgSQFgQFf__TQEzTQEmVQDpi0ZQFn15RefCountedStore@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc17refCountedPayloadMNgFNaNbNcNdNiNjZNgSQFiQEaQDy@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__ctorMFNcNkMQDcZSQEoQEn__TQEhTQDuVQCxi0ZQEv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__dtorMFNfZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc6__initZ@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc8opAssignMFNfSQEjQEi__TQEcTQDpVQCsi0ZQEqZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc8opAssignMFQCzZv@Base 15 ++ _D3std8typecons__T14SafeRefCountedTSQBi4file15DirIteratorImplVEQCjQCi24RefCountedAutoInitializei0ZQDc__T6__ctorTAyaTEQElQDd8SpanModeTbZQBfMFNcNfKQBhKQBhKbZSQFyQFx__TQFrTQFeVQEhi0ZQGf@Base 15 ++ _D3std8typecons__T5TupleTAxaTQeTQhZQr11__xopEqualsMxFKxSQCcQCb__TQBvTQBsTQBwTQCaZQClZb@Base 15 ++ _D3std8typecons__T5TupleTAxaTQeTQhZQr6__ctorMFNaNbNcNiNfQBfQBiQBlZSQCnQCm__TQCgTQCdTQChTQClZQCw@Base 15 ++ _D3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 ++ _D3std8typecons__T5TupleTAxaTQeTQhZQr6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTAxaTQeTQhZQr8__xopCmpMxFKxSQByQBx__TQBrTQBoTQBsTQBwZQChZi@Base 15 ++ _D3std8typecons__T5TupleTAxaTQeTQhZQr__T5opCmpTxSQBvQBu__TQBoTQBlTQBpTQBtZQCeZQBmMxFNaNbNiNfxQBtZi@Base 15 ++ _D3std8typecons__T5TupleTAxaTQeTQhZQr__T8opAssignTSQBxQBw__TQBqTQBnTQBrTQBvZQCgZQBoMFNaNbNcNiNfKQBuZQBy@Base 15 ++ _D3std8typecons__T5TupleTAxaTQeTQhZQr__T8opEqualsTxSQByQBx__TQBrTQBoTQBsTQBwZQChZQBpMxFNaNbNiNfxQBtZb@Base 15 ++ _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf11__xopEqualsMxFKxSQCrQCq__TQCkTQChTQChZQCwZb@Base 15 ++ _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__ctorMFNaNbNcNiNfQBuQBtZSQCzQCy__TQCsTQCpTQCpZQDe@Base 15 ++ _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__initZ@Base 15 ++ _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf__T8opEqualsTxSQCnQCm__TQCgTQCdTQCdZQCsZQBlMxFNaNbNiNfxQBpZb@Base 15 ++ _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi11__xopEqualsMxFKxSQDuQDt__TQDnTQDkVQDoa3_6b6579TQDlVQEfa5_76616c7565ZQFdZb@Base 15 ++ _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi12_Tuple_superMNgFNaNbNcNdNiNeZNgSQEjQEi__TQEcTQDzTQDnZQEo@Base 15 ++ _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__ctorMFNaNbNcNiNfQCxQCkZSQEcQEb__TQDvTQDsVQDwa3_6b6579TQDtVQEna5_76616c7565ZQFl@Base 15 ++ _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 ++ _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi__T8opEqualsTxSQDqQDp__TQDjTQDgVQDka3_6b6579TQDhVQEba5_76616c7565ZQEzZQCpMxFNaNbNiNfxQCtZb@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg11__xopEqualsMxFKxSQCsQCr__TQClTQCiTQBtZQCxZb@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__ctorMFNaNbNcNiNfQBvQBfZSQDaQCz__TQCtTQCqTQCbZQDf@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__initZ@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6toHashMxFNbNfZm@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg__T8opEqualsTxSQCoQCn__TQChTQCeTQBpZQCtZQBlMxFxQBhZb@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx11__xopEqualsMxFKxSQDjQDi__TQDcTQCzTQCkZQDoZb@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__ctorMFNaNbNcNiNfQCmQBwZSQDrQDq__TQDkTQDhTQCsZQDw@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__initZ@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6toHashMxFNbNfZm@Base 15 ++ _D3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx__T8opEqualsTxSQDfQDe__TQCyTQCvTQCgZQDkZQBlMxFxQBhZb@Base 15 ++ _D3std8typecons__T5TupleTC8TypeInfoTPvZQv11__xopEqualsMxFKxSQCgQCf__TQBzTQBwTQBpZQClZb@Base 15 ++ _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6__ctorMFNaNbNcNiNfQBjQBbZSQCoQCn__TQChTQCeTQBxZQCt@Base 15 ++ _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6__initZ@Base 15 ++ _D3std8typecons__T5TupleTC8TypeInfoTPvZQv6toHashMxFNbNfZm@Base 15 ++ _D3std8typecons__T5TupleTC8TypeInfoTPvZQv__T8opEqualsTxSQCcQCb__TQBvTQBsTQBlZQChZQBlMxFNbNfxQBlZb@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb11__xopEqualsMxFKxSQCnQCm__TQCgTQCdTQBqZQCsZb@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__ctorMFNaNbNcNiNfQBqQBcZSQCvQCu__TQCoTQClTQByZQDa@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__initZ@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb8__xopCmpMxFKxSQCjQCi__TQCcTQBzTQBmZQCoZi@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb__T5opCmpTxSQCgQCf__TQBzTQBwTQBjZQClZQBiMxFNaNbNiNfxQBpZi@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb__T8opEqualsTxSQCjQCi__TQCcTQBzTQBmZQCoZQBlMxFNaNbNiNfxQBpZb@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq11__xopEqualsMxFKxSQEcQEb__TQDvTQDsVQDfa6_736368656d61TQDfVQEca8_73657175656e6365ZQFxZb@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq12_Tuple_superMNgFNaNbNcNdNiNeZNgSQErQEq__TQEkTQEhTQDbZQEw@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__ctorMFNaNbNcNiNfQDfQByZSQEkQEj__TQEdTQEaVQDna6_736368656d61TQDnVQEka8_73657175656e6365ZQGf@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq8__xopCmpMxFKxSQDyQDx__TQDrTQDoVQDba6_736368656d61TQDbVQDya8_73657175656e6365ZQFtZi@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq__T5opCmpTxSQDvQDu__TQDoTQDlVQCya6_736368656d61TQCyVQDva8_73657175656e6365ZQFqZQCyMxFNaNbNiNfxQDfZi@Base 15 ++ _D3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq__T8opEqualsTxSQDyQDx__TQDrTQDoVQDba6_736368656d61TQDbVQDya8_73657175656e6365ZQFtZQDbMxFNaNbNiNfxQDfZb@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt11__xopEqualsMxFKxSQJfQJe__TQIyTQIvTQEbZQJkZb@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__ctorMFNaNbNcNiNfQIiQDnZSQJnQJm__TQJgTQJdTQEjZQJs@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6__initZ@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuTSQFwQEzQEs__TQElSQGmQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHt__T8opEqualsTxSQJbQJa__TQIuTQIrTQDxZQJgZQBlMxFNaNbNiNfxQBpZb@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf11__xopEqualsMxFKxSQGrQGq__TQGkTQGhZQGsZb@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__ctorMFNaNbNcNiNfQFuZSQGwQGv__TQGpTQGmZQGx@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opBinaryVQDba1_7eTSQGvQGu__TQGoTSQHjQGmQGf__TQFySQHzQFr__TQFiVQFca4_615b315dVQFra1_61ZQGkTQFdZQHvZQJgZQDzMFNaNbNiNfQDtZSQKsQKr__TQKlTQKiTQEbZQKx@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opEqualsTxSQGnQGm__TQGgTQGdZQGoZQBhMxFNaNbNiNfxQBlZb@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf11__xopEqualsMxFKxSQGrQGq__TQGkTQGhZQGsZb@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__ctorMFNaNbNcNiNfQFuZSQGwQGv__TQGpTQGmZQGx@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6__initZ@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTSQy9algorithm9iteration__T9MapResultSQCi10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEm3uni21DecompressedIntervalsZQDuZQFf__T8opEqualsTxSQGnQGm__TQGgTQGdZQGoZQBhMxFNaNbNiNfxQBlZb@Base 15 ++ _D3std8typecons__T5TupleTbTiZQl11__xopEqualsMxFKxSQBwQBv__TQBpTbTiZQBxZb@Base 15 ++ _D3std8typecons__T5TupleTbTiZQl6__ctorMFNaNbNcNiNfbiZSQCaQBz__TQBtTbTiZQCb@Base 15 ++ _D3std8typecons__T5TupleTbTiZQl6__initZ@Base 15 ++ _D3std8typecons__T5TupleTbTiZQl6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTbTiZQl8__xopCmpMxFKxSQBsQBr__TQBlTbTiZQBtZi@Base 15 ++ _D3std8typecons__T5TupleTbTiZQl__T5opCmpTxSQBpQBo__TQBiTbTiZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 ++ _D3std8typecons__T5TupleTbTiZQl__T8opEqualsTxSQBsQBr__TQBlTbTiZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 ++ _D3std8typecons__T5TupleTbTkZQl11__xopEqualsMxFKxSQBwQBv__TQBpTbTkZQBxZb@Base 15 ++ _D3std8typecons__T5TupleTbTkZQl6__ctorMFNaNbNcNiNfbkZSQCaQBz__TQBtTbTkZQCb@Base 15 ++ _D3std8typecons__T5TupleTbTkZQl6__initZ@Base 15 ++ _D3std8typecons__T5TupleTbTkZQl6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTbTkZQl8__xopCmpMxFKxSQBsQBr__TQBlTbTkZQBtZi@Base 15 ++ _D3std8typecons__T5TupleTbTkZQl__T5opCmpTxSQBpQBo__TQBiTbTkZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 ++ _D3std8typecons__T5TupleTbTkZQl__T8opEqualsTxSQBsQBr__TQBlTbTkZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 ++ _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg11__xopEqualsMxFKxSQDsQDr__TQDlTbVQDia10_7465726d696e61746564TiVQEma6_737461747573ZQFoZb@Base 15 ++ _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg12_Tuple_superMNgFNaNbNcNdNiNeZNgSQEhQEg__TQEaTbTiZQEi@Base 15 ++ _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__ctorMFNaNbNcNiNfbiZSQDwQDv__TQDpTbVQDma10_7465726d696e61746564TiVQEqa6_737461747573ZQFs@Base 15 ++ _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__initZ@Base 15 ++ _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg8__xopCmpMxFKxSQDoQDn__TQDhTbVQDea10_7465726d696e61746564TiVQEia6_737461747573ZQFkZi@Base 15 ++ _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg__T5opCmpTxSQDlQDk__TQDeTbVQDba10_7465726d696e61746564TiVQEfa6_737461747573ZQFhZQCzMxFNaNbNiNfxQDgZi@Base 15 ++ _D3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg__T8opEqualsTxSQDoQDn__TQDhTbVQDea10_7465726d696e61746564TiVQEia6_737461747573ZQFkZQDcMxFNaNbNiNfxQDgZb@Base 15 ++ _D3std8typecons__T5TupleTeTeTeTeZQp11__xopEqualsMxFKxSQCaQBz__TQBtTeTeTeTeZQCfZb@Base 15 ++ _D3std8typecons__T5TupleTeTeTeTeZQp6__ctorMFNaNbNcNiNfeeeeZSQCgQCf__TQBzTeTeTeTeZQCl@Base 15 ++ _D3std8typecons__T5TupleTeTeTeTeZQp6__initZ@Base 15 ++ _D3std8typecons__T5TupleTeTeTeTeZQp6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTeTeTeTeZQp__T5opCmpTxSQBtQBs__TQBmTeTeTeTeZQByZQBiMxFNaNbNiNfxQBpZf@Base 15 ++ _D3std8typecons__T5TupleTeTeTeTeZQp__T8opEqualsTxSQBwQBv__TQBpTeTeTeTeZQCbZQBlMxFNaNbNiNfxQBpZb@Base 15 ++ _D3std8typecons__T5TupleTiTAyaZQn11__xopEqualsMxFKxSQByQBx__TQBrTiTQBoZQCbZb@Base 15 ++ _D3std8typecons__T5TupleTiTAyaZQn6__ctorMFNaNbNcNiNfiQBaZSQCeQCd__TQBxTiTQBuZQCh@Base 15 ++ _D3std8typecons__T5TupleTiTAyaZQn6__initZ@Base 15 ++ _D3std8typecons__T5TupleTiTAyaZQn6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTiTAyaZQn8__xopCmpMxFKxSQBuQBt__TQBnTiTQBkZQBxZi@Base 15 ++ _D3std8typecons__T5TupleTiTAyaZQn__T5opCmpTxSQBrQBq__TQBkTiTQBhZQBuZQBgMxFNaNbNiNfxQBnZi@Base 15 ++ _D3std8typecons__T5TupleTiTAyaZQn__T8opEqualsTxSQBuQBt__TQBnTiTQBkZQBxZQBjMxFNaNbNiNfxQBnZb@Base 15 ++ _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx11__xopEqualsMxFKxSQDjQDi__TQDcTiVQCza6_737461747573TQDsVQDwa6_6f7574707574ZQEyZb@Base 15 ++ _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDyQDx__TQDrTiTQDoZQEb@Base 15 ++ _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__ctorMFNaNbNcNiNfiQClZSQDpQDo__TQDiTiVQDfa6_737461747573TQDyVQEca6_6f7574707574ZQFe@Base 15 ++ _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__initZ@Base 15 ++ _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx8__xopCmpMxFKxSQDfQDe__TQCyTiVQCva6_737461747573TQDoVQDsa6_6f7574707574ZQEuZi@Base 15 ++ _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx__T5opCmpTxSQDcQDb__TQCvTiVQCsa6_737461747573TQDlVQDpa6_6f7574707574ZQErZQCsMxFNaNbNiNfxQCzZi@Base 15 ++ _D3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx__T8opEqualsTxSQDfQDe__TQCyTiVQCva6_737461747573TQDoVQDsa6_6f7574707574ZQEuZQCvMxFNaNbNiNfxQCzZb@Base 15 ++ _D3std8typecons__T5TupleTkTkTkZQn11__xopEqualsMxFKxSQByQBx__TQBrTkTkTkZQCbZb@Base 15 ++ _D3std8typecons__T5TupleTkTkTkZQn6__ctorMFNaNbNcNiNfkkkZSQCdQCc__TQBwTkTkTkZQCg@Base 15 ++ _D3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 ++ _D3std8typecons__T5TupleTkTkTkZQn6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTkTkTkZQn8__xopCmpMxFKxSQBuQBt__TQBnTkTkTkZQBxZi@Base 15 ++ _D3std8typecons__T5TupleTkTkTkZQn__T5opCmpTxSQBrQBq__TQBkTkTkTkZQBuZQBgMxFNaNbNiNfxQBnZi@Base 15 ++ _D3std8typecons__T5TupleTkTkTkZQn__T8opEqualsTxSQBuQBt__TQBnTkTkTkZQBxZQBjMxFNaNbNiNfxQBnZb@Base 15 ++ _D3std8typecons__T5TupleTkTmZQl11__xopEqualsMxFKxSQBwQBv__TQBpTkTmZQBxZb@Base 15 ++ _D3std8typecons__T5TupleTkTmZQl6__ctorMFNaNbNcNiNfkmZSQCaQBz__TQBtTkTmZQCb@Base 15 ++ _D3std8typecons__T5TupleTkTmZQl6__initZ@Base 15 ++ _D3std8typecons__T5TupleTkTmZQl6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTkTmZQl8__xopCmpMxFKxSQBsQBr__TQBlTkTmZQBtZi@Base 15 ++ _D3std8typecons__T5TupleTkTmZQl__T5opCmpTxSQBpQBo__TQBiTkTmZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 ++ _D3std8typecons__T5TupleTkTmZQl__T8opEqualsTxSQBsQBr__TQBlTkTmZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 ++ _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq11__xopEqualsMxFKxSQDcQDb__TQCvTkVQCsa4_64617461TmVQDja5_636f756e74ZQEjZb@Base 15 ++ _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDrQDq__TQDkTkTmZQDs@Base 15 ++ _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__ctorMFNaNbNcNiNfkmZSQDgQDf__TQCzTkVQCwa4_64617461TmVQDna5_636f756e74ZQEn@Base 15 ++ _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__initZ@Base 15 ++ _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq8__xopCmpMxFKxSQCyQCx__TQCrTkVQCoa4_64617461TmVQDfa5_636f756e74ZQEfZi@Base 15 ++ _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq__T5opCmpTxSQCvQCu__TQCoTkVQCla4_64617461TmVQDca5_636f756e74ZQEcZQCkMxFNaNbNiNfxQCrZi@Base 15 ++ _D3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq__T8opEqualsTxSQCyQCx__TQCrTkVQCoa4_64617461TmVQDfa5_636f756e74ZQEfZQCnMxFNaNbNiNfxQCrZb@Base 15 ++ _D3std8typecons__T5TupleTmTmZQl11__xopEqualsMxFKxSQBwQBv__TQBpTmTmZQBxZb@Base 15 ++ _D3std8typecons__T5TupleTmTmZQl6__ctorMFNaNbNcNiNfmmZSQCaQBz__TQBtTmTmZQCb@Base 15 ++ _D3std8typecons__T5TupleTmTmZQl6__initZ@Base 15 ++ _D3std8typecons__T5TupleTmTmZQl6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTmTmZQl8__xopCmpMxFKxSQBsQBr__TQBlTmTmZQBtZi@Base 15 ++ _D3std8typecons__T5TupleTmTmZQl__T5opCmpTxSQBpQBo__TQBiTmTmZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 ++ _D3std8typecons__T5TupleTmTmZQl__T8opEqualsTxSQBsQBr__TQBlTmTmZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 ++ _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk11__xopEqualsMxFKxSQCwQCv__TQCpTmVQCma3_706f73TmVQDba3_6c656eZQDxZb@Base 15 ++ _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk12_Tuple_superMNgFNaNbNcNdNiNeZNgSQDlQDk__TQDeTmTmZQDm@Base 15 ++ _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__ctorMFNaNbNcNiNfmmZSQDaQCz__TQCtTmVQCqa3_706f73TmVQDfa3_6c656eZQEb@Base 15 ++ _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__initZ@Base 15 ++ _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk8__xopCmpMxFKxSQCsQCr__TQClTmVQCia3_706f73TmVQCxa3_6c656eZQDtZi@Base 15 ++ _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk__T5opCmpTxSQCpQCo__TQCiTmVQCfa3_706f73TmVQCua3_6c656eZQDqZQCeMxFNaNbNiNfxQClZi@Base 15 ++ _D3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk__T8opEqualsTxSQCsQCr__TQClTmVQCia3_706f73TmVQCxa3_6c656eZQDtZQChMxFNaNbNiNfxQClZb@Base 15 ++ _D3std8typecons__T5TupleTuTaZQl11__xopEqualsMxFKxSQBwQBv__TQBpTuTaZQBxZb@Base 15 ++ _D3std8typecons__T5TupleTuTaZQl6__ctorMFNaNbNcNiNfuaZSQCaQBz__TQBtTuTaZQCb@Base 15 ++ _D3std8typecons__T5TupleTuTaZQl6__initZ@Base 15 ++ _D3std8typecons__T5TupleTuTaZQl6toHashMxFNaNbNiNfZm@Base 15 ++ _D3std8typecons__T5TupleTuTaZQl8__xopCmpMxFKxSQBsQBr__TQBlTuTaZQBtZi@Base 15 ++ _D3std8typecons__T5TupleTuTaZQl__T5opCmpTxSQBpQBo__TQBiTuTaZQBqZQBeMxFNaNbNiNfxQBlZi@Base 15 ++ _D3std8typecons__T5TupleTuTaZQl__T8opEqualsTxSQBsQBr__TQBlTuTaZQBtZQBhMxFNaNbNiNfxQBlZb@Base 15 ++ _D3std8typecons__T5tupleVAyaa4_64617461VQpa5_636f756e74Z__TQBpTkTmZQBxFNaNbNiNfkmZSQDdQDc__T5TupleTkVQCya4_64617461TmVQDpa5_636f756e74ZQBr@Base 15 ++ _D3std8typecons__T5tupleZ__TQkTC15TypeInfo_StructTPG32hZQBmFNaNbNiNfQBlQvZSQCvQCu__T5TupleTQCiTQBtZQp@Base 15 ++ _D3std8typecons__T5tupleZ__TQkTC15TypeInfo_StructTPSQBy11concurrency3TidZQCdFNaNbNiNfQCcQBmZSQDnQDm__T5TupleTQDaTQClZQp@Base 15 ++ _D3std8typecons__T5tupleZ__TQkTSQBe9algorithm9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQEt3uni21DecompressedIntervalsZQDuZQFmFNaNbNiNfQFlZSQGtQGs__T5TupleTQGgZQl@Base 15 ++ _D3std8typecons__T5tupleZ__TQkTSQBe9algorithm9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQEt3uni21DecompressedIntervalsZQDuZQFmFNaNbNiNfQFlZSQGtQGs__T5TupleTQGgZQl@Base 15 ++ _D3std8typecons__T5tupleZ__TQkTbTkZQrFNaNbNiNfbkZSQBwQBv__T5TupleTbTkZQl@Base 15 ++ _D3std8typecons__T5tupleZ__TQkTkTkTkZQtFNaNbNiNfkkkZSQBzQBy__T5TupleTkTkTkZQn@Base 15 ++ _D3std8typecons__T5tupleZ__TQkTuTaZQrFNaNbNiNfuaZSQBwQBv__T5TupleTuTaZQl@Base 15 ++ _D3std9algorithm10comparison11__moduleRefZ@Base 15 ++ _D3std9algorithm10comparison12__ModuleInfoZ@Base 15 ++ _D3std9algorithm10comparison6EditOp6__initZ@Base 15 ++ _D3std9algorithm10comparison__T3cmpTAxhTQeZQmFNaNbNiNfQsQuZi@Base 15 ++ _D3std9algorithm10comparison__T3cmpTSQBjQBi9iteration__T12FilterResultS_DQCt3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQFkQFjQEb__T9MapResultSQGh5ascii7toLowerTQCoZQBhZQFfTQGdZQGmFNaNfQGpQGsZi@Base 15 ++ _D3std9algorithm10comparison__T3maxTiTiZQjFNaNbNiNfiiZi@Base 15 ++ _D3std9algorithm10comparison__T3maxTkTkZQjFNaNbNiNfkkZk@Base 15 ++ _D3std9algorithm10comparison__T3maxTmTiZQjFNaNbNiNfmiZm@Base 15 ++ _D3std9algorithm10comparison__T3maxTmTmZQjFNaNbNiNfmmZm@Base 15 ++ _D3std9algorithm10comparison__T3minTPvTQdZQlFNaNbNiNfQrQtZQw@Base 15 ++ _D3std9algorithm10comparison__T3minTlTmZQjFNaNbNiNflmZl@Base 15 ++ _D3std9algorithm10comparison__T3minTmTiZQjFNaNbNiNfmiZi@Base 15 ++ _D3std9algorithm10comparison__T3minTmTmZQjFNaNbNiNfmmZm@Base 15 ++ _D3std9algorithm10comparison__T3minTmTyiZQkFNaNbNiNfmyiZyi@Base 15 ++ _D3std9algorithm10comparison__T3minTmTymZQkFNaNbNiNfmymZm@Base 15 ++ _D3std9algorithm10comparison__T3minTyiTmZQkFNaNbNiNfyimZyi@Base 15 ++ _D3std9algorithm10comparison__T3minTymTmZQkFNaNbNiNfymmZym@Base 15 ++ _D3std9algorithm10comparison__T3minTymTymZQlFNaNbNiNfymymZym@Base 15 ++ _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TAyaTQeTQhTQkZQBwFNaNbNiNfQzQBbQBeQBhZk@Base 15 ++ _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TEQCn6format8internal5write17HasToStringResultTQBuTQByTQCcZQDpFNaNbNiNfQCsQCvQCyQDbZk@Base 15 ++ _D3std9algorithm10comparison__T5amongSQBkQBjQBc16__lambda_L88_C25TaTaTaTaTaTaTaTaTaTaTaZQCfFNaNbNiNfaaaaaaaaaaaZk@Base 15 ++ _D3std9algorithm10comparison__T5amongVai105Vai73Z__TQvTyaZQBbFNaNbNiNfyaZk@Base 15 ++ _D3std9algorithm10comparison__T5amongVai108Vai76Vai102Vai70Vai105Vai73Z__TQBrTyaZQByFNaNbNiNfyaZk@Base 15 ++ _D3std9algorithm10comparison__T5amongVai117Vai108Vai85Vai76Z__TQBgTyaZQBnFNaNbNiNfyaZk@Base 15 ++ _D3std9algorithm10comparison__T5amongVai95Vai44Z__TQuTyaZQBaFNaNbNiNfyaZk@Base 15 ++ _D3std9algorithm10comparison__T5equalZ__T9equalLoopTSQBzQBy9iteration__T9MapResultSQDd5ascii7toLowerTSQDw3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDcTSQFzQFyQEa__TQDtSQGpQDmQDjTSQHaQDe__TQDdTAyaZQDlFQiZQCvZQFkZQGtFNaNbNiNfKQGvKQCzZb@Base 15 ++ _D3std9algorithm10comparison__T5equalZ__TQkTAxaTAyaZQvFNaNbNiNfQtQrZb@Base 15 ++ _D3std9algorithm10comparison__T5equalZ__TQkTSQBrQBq9iteration__T9MapResultSQCv5ascii7toLowerTSQDo3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDcTSQFrQFqQEa__TQDtSQGhQDmQDjTSQGsQDe__TQDdTAyaZQDlFQiZQCvZQFkZQGvFNaNbNiNfQGuQCxZb@Base 15 ++ _D3std9algorithm11__moduleRefZ@Base 15 ++ _D3std9algorithm12__ModuleInfoZ@Base 15 ++ _D3std9algorithm6setops11__moduleRefZ@Base 15 ++ _D3std9algorithm6setops12__ModuleInfoZ@Base 15 ++ _D3std9algorithm7sorting11__moduleRefZ@Base 15 ++ _D3std9algorithm7sorting12__ModuleInfoZ@Base 15 ++ _D3std9algorithm7sorting__T11TimSortImplSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh8sanitizeMFNfZ18__lambda_L2889_C15TSQErQDe__TQDdTQCrZQDl__T9IntervalsTAkZQoZ5Slice6__initZ@Base 15 ++ _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFg8datetime8timezone13PosixTimeZone10LeapSecondZQGeFNaNbNiNfQClmZv@Base 15 ++ _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFg8datetime8timezone13PosixTimeZone14TempTransitionZQGiFNaNbNiNfQCpmZv@Base 15 ++ _D3std9algorithm7sorting__T13quickSortImplSQBp10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDjFNaNbNiNfQrmZv@Base 15 ++ _D3std9algorithm7sorting__T18trustedMoveEmplaceTAyaZQzFNaNbNiNeKQqKQtZv@Base 15 ++ _D3std9algorithm7sorting__T18trustedMoveEmplaceTCQBv3zip13ArchiveMemberZQBtFNaNbNiNeKQBlKQBpZv@Base 15 ++ _D3std9algorithm7sorting__T18trustedMoveEmplaceTSQBv8datetime8timezone13PosixTimeZone10LeapSecondZQCtFNaNbNiNeKQClKQCpZv@Base 15 ++ _D3std9algorithm7sorting__T18trustedMoveEmplaceTSQBv8datetime8timezone13PosixTimeZone14TempTransitionZQCxFNaNbNiNeKQCpKQCtZv@Base 15 ++ _D3std9algorithm7sorting__T4sortVAyaa17_612e74696d6554203c20622e74696d6554VEQCwQCv8mutation12SwapStrategyi0TASQEe8datetime8timezone13PosixTimeZone10LeapSecondZQFcFNaNbNiNfQClZSQGs5range__T11SortedRangeTQDqVQGra17_612e74696d6554203c20622e74696d6554VEQJnQCv18SortedRangeOptionsi0ZQDm@Base 15 ++ _D3std9algorithm7sorting__T4sortVAyaa17_612e74696d6554203c20622e74696d6554VEQCwQCv8mutation12SwapStrategyi0TASQEe8datetime8timezone13PosixTimeZone14TempTransitionZQFgFNaNbNiNfQCpZSQGw5range__T11SortedRangeTQDuVQGva17_612e74696d6554203c20622e74696d6554VEQJrQCv18SortedRangeOptionsi0ZQDm@Base 15 ++ _D3std9algorithm7sorting__T4sortVAyaa5_61203c2062VEQBxQBw8mutation12SwapStrategyi0TAQBzZQCjFNaNbNiNfQrZSQDy5range__T11SortedRangeTQBvVQDxa5_61203c2062VEQFuQBw18SortedRangeOptionsi0ZQCn@Base 15 ++ _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEx8datetime8timezone13PosixTimeZone10LeapSecondZQFvFNaNbNiNfQClZv@Base 15 ++ _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEx8datetime8timezone13PosixTimeZone14TempTransitionZQFzFNaNbNiNfQCpZv@Base 15 ++ _D3std9algorithm7sorting__T5sort5SQBg10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDaFNaNbNiNfQrZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T6isHeapZQiFNaNbNiNfQCvZb@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T8heapSortZQkFNaNbNiNfQCxZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T8siftDownZQkFNaNbNiNfQCxmymZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T9buildHeapZQlFNaNbNiNfQCyZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone10LeapSecondZ__T9percolateZQlFNaNbNiNfQCymymZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T6isHeapZQiFNaNbNiNfQCzZb@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T8heapSortZQkFNaNbNiNfQDbZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T8siftDownZQkFNaNbNiNfQDbmymZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T9buildHeapZQlFNaNbNiNfQDcZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQEz8datetime8timezone13PosixTimeZone14TempTransitionZ__T9percolateZQlFNaNbNiNfQDcmymZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T6isHeapZQiFNaNbNiNfQBbZb@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T8heapSortZQkFNaNbNiNfQBdZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T8siftDownZQkFNaNbNiNfQBdmymZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T9buildHeapZQlFNaNbNiNfQBeZv@Base 15 ++ _D3std9algorithm7sorting__T7HeapOpsSQBi10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZ__T9percolateZQlFNaNbNiNfQBemymZv@Base 15 ++ _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone10LeapSecondZQFyFNaNbNiNfQClZm@Base 15 ++ _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone14TempTransitionZQGcFNaNbNiNfQCpZm@Base 15 ++ _D3std9algorithm7sorting__T8getPivotSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDdFNaNbNiNfQrZm@Base 15 ++ _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone10LeapSecondZQFyFNaNbNiNfQClZb@Base 15 ++ _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFa8datetime8timezone13PosixTimeZone14TempTransitionZQGcFNaNbNiNfQCpZb@Base 15 ++ _D3std9algorithm7sorting__T8isSortedSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDdFNaNbNiNfQrZb@Base 15 ++ _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone10LeapSecondTmTmTmTmTmZQIjFNaNbNiNfQCvmmmmmZv@Base 15 ++ _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone10LeapSecondTmTmTmZQIfFNaNbNiNfQCrmmmZv@Base 15 ++ _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone14TempTransitionTmTmTmTmTmZQInFNaNbNiNfQCzmmmmmZv@Base 15 ++ _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtVEQEz8typecons__T4FlagVQDia9_6c65616e5269676874ZQBfi0TASQHb8datetime8timezone13PosixTimeZone14TempTransitionTmTmTmZQIjFNaNbNiNfQCvmmmZv@Base 15 ++ _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsVEQDy8typecons__T4FlagVQCha9_6c65616e5269676874ZQBfi0TAQDnTmTmTmTmTmZQFoFNaNbNiNfQBbmmmmmZv@Base 15 ++ _D3std9algorithm7sorting__T8medianOfSQBj10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsVEQDy8typecons__T4FlagVQCha9_6c65616e5269676874ZQBfi0TAQDnTmTmTmZQFkFNaNbNiNfQxmmmZv@Base 15 ++ _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFb8datetime8timezone13PosixTimeZone10LeapSecondZQFzFNaNbNiNfQClZv@Base 15 ++ _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa17_612e74696d6554203c20622e74696d6554VQBqa1_61VQBza1_62ZQCtTASQFb8datetime8timezone13PosixTimeZone14TempTransitionZQGdFNaNbNiNfQCpZv@Base 15 ++ _D3std9algorithm7sorting__T9shortSortSQBk10functional__T9binaryFunVAyaa5_61203c2062VQra1_61VQza1_62ZQBsTAQBmZQDeFNaNbNiNfQrZv@Base 15 ++ _D3std9algorithm8internal11__moduleRefZ@Base 15 ++ _D3std9algorithm8internal12__ModuleInfoZ@Base 15 ++ _D3std9algorithm8mutation11__moduleRefZ@Base 15 ++ _D3std9algorithm8mutation12__ModuleInfoZ@Base 15 ++ _D3std9algorithm8mutation__T10removeImplVEQBoQBnQBg12SwapStrategyi0TAAyaTlZQBvFNaNbNiNfQtlZQx@Base 15 ++ _D3std9algorithm8mutation__T10removeImplVEQBoQBnQBg12SwapStrategyi2TAC4core6thread5fiber5FiberTmZQCrFNaNbNiNfQBpmZQBu@Base 15 ++ _D3std9algorithm8mutation__T11moveAllImplSQBoQBnQBg4moveTAC4core6thread5fiber5FiberTQBbZQCiFNaNbNiNfKQBsKQBwZQCa@Base 15 ++ _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl3FTP4ImplZQBlFNaNbNiKQBiKQBmZv@Base 15 ++ _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl4HTTP4ImplZQBmFNaNbNiKQBjKQBnZv@Base 15 ++ _D3std9algorithm8mutation__T11moveEmplaceTSQBp3net4curl4SMTP4ImplZQBmFNaNbNiKQBjKQBnZv@Base 15 ++ _D3std9algorithm8mutation__T11moveEmplaceTSQBp4file15DirIteratorImplZQBpFNaNbNiKQBmKQBqZv@Base 15 ++ _D3std9algorithm8mutation__T12removeStableTAC4core6thread5fiber5FiberTmZQBsFNaNbNiNfQBpmZQBu@Base 15 ++ _D3std9algorithm8mutation__T14removeUnstableTAAyaTlZQyFNaNbNiNfQslZQw@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTAAyaZQxFNaNbNiNfMKQsNkMKQyZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTACQBu3zip13ArchiveMemberZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu5regex8internal2ir10NamedGroupZQCcFNaNbNiNfMKQByNkMKQCfZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTASQBu8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNfMKQCrNkMKQCyZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTAkZQvFNaNbNiNfMKQqNkMKQwZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTAyaZQwFNaNbNiNfMKQrNkMKQxZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTC4core6thread5fiber5FiberZQBsFNaNbNiNfMKQBoNkMKQBvZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl3FTP4ImplZQBpFNaNbNiNfMKQBlNkMKQBsZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl4HTTP4ImplZQBqFNaNbNiNfMKQBmNkMKQBtZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3net4curl4SMTP4ImplZQBqFNaNbNiNfMKQBmNkMKQBtZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3uni17CodepointIntervalZQBuFNaNbNiNfMKQBqNkMKQBxZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt3uni__T13InversionListTSQCuQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDhFNaNbNiNfMKQDdNkMKQDkZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt4file15DirIteratorImplZQBtFNaNbNiNfMKQBpNkMKQBwZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTSQBt5range__T6strideTAywZQmFQhmZ6ResultZQCgFNaNbNiNfMKQCcNkMKQCjZv@Base 15 ++ _D3std9algorithm8mutation__T15moveEmplaceImplTSQBtQBs9iteration__T9MapResultSQCx10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQFh8internal14unicode_tables15UnicodePropertyZQEpZQGfFNaNbNiNfMKQGbNkMKQGiZv@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTAAyaZQxFNaNbNiNeNkMKQuZQx@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTACQBu3zip13ArchiveMemberZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTASQBu5regex8internal2ir10NamedGroupZQCcFNaNbNiNeNkMKQCaZQCe@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTASQBu8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTASQBu8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNeNkMKQCtZQCx@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTAkZQvFNaNbNiNeNkMKQsZQv@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTSQBt3uni17CodepointIntervalZQBuFNaNbNiNeNkMKQBsZQBw@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTSQBt3uni__T13InversionListTSQCuQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDhFNaNbNiNeNkMKQDfZQDj@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTSQBt5range__T6strideTAywZQmFQhmZ6ResultZQCgFNaNbNiNeNkMKQCeZQCi@Base 15 ++ _D3std9algorithm8mutation__T15trustedMoveImplTSQBtQBs9iteration__T9MapResultSQCx10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQFh8internal14unicode_tables15UnicodePropertyZQEpZQGfFNaNbNiNeNkMKQGdZQGh@Base 15 ++ _D3std9algorithm8mutation__T4copyTASQBi5regex8internal2ir8BytecodeTQBhZQBrFNaNbNiNfQBxQCaZQCe@Base 15 ++ _D3std9algorithm8mutation__T4copyTAiTAkZQmFNaNbNiNfQrQqZQt@Base 15 ++ _D3std9algorithm8mutation__T4copyTAkTQdZQmFNaNbNiNfQrQtZQw@Base 15 ++ _D3std9algorithm8mutation__T4copyTSQBh3uni__T13InversionListTSQCiQBb8GcPolicyZQBh__T9IntervalsTAkZQoTASQDxQCq17CodepointIntervalZQDxFNaNbNiNfQEdQBrZQBv@Base 15 ++ _D3std9algorithm8mutation__T4copyTSQBh5range__T10roundRobinTSQChQCg9iteration__T9MapResultSQDl10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQFp3uni21DecompressedIntervalsZQDuTSQGzQGyQEs__TQElSQHpQEe__TQDvVQDpa4_615b315dVQEea1_61ZQExTQDqZQGiZQHtFQHkQCvZ6ResultTAkZQJiFNaNfQJkQoZQr@Base 15 ++ _D3std9algorithm8mutation__T4moveTAAyaZQlFNaNbNiNfNkMKQuZQx@Base 15 ++ _D3std9algorithm8mutation__T4moveTACQBi3zip13ArchiveMemberZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 ++ _D3std9algorithm8mutation__T4moveTASQBi5regex8internal2ir10NamedGroupZQBqFNaNbNiNfNkMKQCaZQCe@Base 15 ++ _D3std9algorithm8mutation__T4moveTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 ++ _D3std9algorithm8mutation__T4moveTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNfNkMKQCtZQCx@Base 15 ++ _D3std9algorithm8mutation__T4moveTAkZQjFNaNbNiNfNkMKQsZQv@Base 15 ++ _D3std9algorithm8mutation__T4moveTAyaZQkFNaNbNiNfKQqKQtZv@Base 15 ++ _D3std9algorithm8mutation__T4moveTC4core6thread5fiber5FiberZQBgFNaNbNiNfKQBnKQBrZv@Base 15 ++ _D3std9algorithm8mutation__T4moveTSQBh3net4curl3FTP4ImplZQBdFKQBcKQBgZv@Base 15 ++ _D3std9algorithm8mutation__T4moveTSQBh3net4curl4HTTP4ImplZQBeFKQBdKQBhZv@Base 15 ++ _D3std9algorithm8mutation__T4moveTSQBh3net4curl4SMTP4ImplZQBeFKQBdKQBhZv@Base 15 ++ _D3std9algorithm8mutation__T4moveTSQBh3uni17CodepointIntervalZQBiFNaNbNiNfNkMKQBsZQBw@Base 15 ++ _D3std9algorithm8mutation__T4moveTSQBh3uni__T13InversionListTSQCiQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCvFNaNbNiNfNkMKQDfZQDj@Base 15 ++ _D3std9algorithm8mutation__T4moveTSQBh4file15DirIteratorImplZQBhFKQBgKQBkZv@Base 15 ++ _D3std9algorithm8mutation__T4moveTSQBh5range__T6strideTAywZQmFQhmZ6ResultZQBuFNaNbNiNfNkMKQCeZQCi@Base 15 ++ _D3std9algorithm8mutation__T4moveTSQBhQBg9iteration__T9MapResultSQCl10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEv8internal14unicode_tables15UnicodePropertyZQEpZQFtFNaNbNiNfNkMKQGdZQGh@Base 15 ++ _D3std9algorithm8mutation__T4swapTAAyaZQlFNaNbNiNeKQrKQuZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTACQBi3zip13ArchiveMemberZQBfFNaNbNiNeKQBmKQBqZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTASQBi8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNeKQCmKQCqZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTASQBi8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNeKQCqKQCuZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTAyaZQkFNaNbNiNeKQqKQtZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTCQBh3zip13ArchiveMemberZQBeFNaNbNiNeKQBlKQBpZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTPSQBi5stdio4File4ImplZQBcFNaNbNiNeKQBjKQBnZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl3FTP4ImplVEQDiQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCkZQEpFNaNbNiNeKQEwKQFaZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl4HTTP4ImplVEQDjQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkZQEqFNaNbNiNeKQExKQFbZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T10RefCountedTSQCl3net4curl4SMTP4ImplVEQDjQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkZQEqFNaNbNiNeKQExKQFbZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTPSQBi8typecons__T14SafeRefCountedTSQCp4file15DirIteratorImplVEQDqQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4ImplZQEzFNaNbNiNeKQFgKQFkZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTSQBh5stdio17LockingTextReaderZQBkFNaNbNiNeKQBrKQBvZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTSQBh5stdio4FileZQwFNaNbNiNeKQBcKQBgZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTSQBh8datetime8timezone13PosixTimeZone10LeapSecondZQCeFNaNbNiNeKQClKQCpZv@Base 15 ++ _D3std9algorithm8mutation__T4swapTSQBh8datetime8timezone13PosixTimeZone14TempTransitionZQCiFNaNbNiNeKQCpKQCtZv@Base 15 ++ _D3std9algorithm8mutation__T4swapThZQiFNaNbNiNeKhKhZv@Base 15 ++ _D3std9algorithm8mutation__T6removeVEQBjQBiQBb12SwapStrategyi0TAAyaTlZQBqFNaNbNiNfQtlZQx@Base 15 ++ _D3std9algorithm8mutation__T6removeVEQBjQBiQBb12SwapStrategyi2TAC4core6thread5fiber5FiberTmZQCmFNaNbNiNfQBpmZQBu@Base 15 ++ _D3std9algorithm8mutation__T6swapAtTAAyaZQnFNaNbNiNfKQrmmZv@Base 15 ++ _D3std9algorithm8mutation__T6swapAtTACQBk3zip13ArchiveMemberZQBhFNaNbNiNfKQBmmmZv@Base 15 ++ _D3std9algorithm8mutation__T6swapAtTASQBk8datetime8timezone13PosixTimeZone10LeapSecondZQChFNaNbNiNfKQCmmmZv@Base 15 ++ _D3std9algorithm8mutation__T6swapAtTASQBk8datetime8timezone13PosixTimeZone14TempTransitionZQClFNaNbNiNfKQCqmmZv@Base 15 ++ _D3std9algorithm8mutation__T6swapAtTAhZQlFNaNbNiNfKQpmmZv@Base 15 ++ _D3std9algorithm8mutation__T6swapAtTSQBj3uni__T13InversionListTSQCkQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCxFNaNbNiNfKQDcmmZv@Base 15 ++ _D3std9algorithm8mutation__T7moveAllTAC4core6thread5fiber5FiberTQBbZQBoFNaNbNiNfQBrQBuZQBy@Base 15 ++ _D3std9algorithm8mutation__T7reverseTAhZQmFNaNbNiNfQoZQr@Base 15 ++ _D3std9algorithm8mutation__T7reverseTSQBk3uni__T13InversionListTSQClQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCyFNaNbNiNfQDbZQDf@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTAAyaZQpFNaNbNiNfNkMKQuZQx@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTACQBm3zip13ArchiveMemberZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTASQBm5regex8internal2ir10NamedGroupZQBuFNaNbNiNfNkMKQCaZQCe@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTASQBm8datetime8timezone13PosixTimeZone10LeapSecondZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTASQBm8datetime8timezone13PosixTimeZone14TempTransitionZQCnFNaNbNiNfNkMKQCtZQCx@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTAkZQnFNaNbNiNfNkMKQsZQv@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTAyaZQoFNaNbNiNfMKQrNkMKQxZv@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTC4core6thread5fiber5FiberZQBkFNaNbNiNfMKQBoNkMKQBvZv@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl3FTP4ImplZQBhFMKQBdNkMKQBkZv@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl4HTTP4ImplZQBiFMKQBeNkMKQBlZv@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTSQBl3net4curl4SMTP4ImplZQBiFMKQBeNkMKQBlZv@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTSQBl3uni17CodepointIntervalZQBmFNaNbNiNfNkMKQBsZQBw@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTSQBl3uni__T13InversionListTSQCmQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQCzFNaNbNiNfNkMKQDfZQDj@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTSQBl4file15DirIteratorImplZQBlFMKQBhNkMKQBoZv@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTSQBl5range__T6strideTAywZQmFQhmZ6ResultZQByFNaNbNiNfNkMKQCeZQCi@Base 15 ++ _D3std9algorithm8mutation__T8moveImplTSQBlQBk9iteration__T9MapResultSQCp10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQEz8internal14unicode_tables15UnicodePropertyZQEpZQFxFNaNbNiNfNkMKQGdZQGh@Base 15 ++ _D3std9algorithm9iteration11__moduleRefZ@Base 15 ++ _D3std9algorithm9iteration12__ModuleInfoZ@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj11__xopEqualsMxFKxSQIgQIfQHy__TQHrSQIwQHi__TQGzVQGsa6_61203d3d2062VQHla1_61VQHua1_62ZQIoTQGtZQKbZb@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj4backMFNaNbNdNiNfZQFo@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj4saveMFNaNbNdNiNfZSQIgQIfQHy__TQHrSQIwQHi__TQGzVQGsa6_61203d3d2062VQHla1_61VQHua1_62ZQIoTQGtZQKb@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj5frontMFNaNbNdNiNfZQFp@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__ctorMFNaNbNcNiNfQEbZSQIlQIkQId__TQHwSQJbQHn__TQHeVQGxa6_61203d3d2062VQHqa1_61VQHza1_62ZQItTQGyZQKg@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj6__initZ@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj7opSliceMFNaNbNiNfZSQIhQIgQHz__TQHsSQIxQHj__TQHaVQGta6_61203d3d2062VQHma1_61VQHva1_62ZQIpTQGuZQKc@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj7popBackMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T10UniqResultSQBo10functional__T9binaryFunVAyaa6_61203d3d2062VQta1_61VQBba1_62ZQBvTSQEg5range__T11SortedRangeTAQCqVQCua5_61203c2062VEQGdQBx18SortedRangeOptionsi0ZQCoZQGj9__xtoHashFNbNeKxSQIfQIeQHx__TQHqSQIvQHh__TQGyVQGra6_61203d3d2062VQHka1_61VQHta1_62ZQInTQGsZQKaZm@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg4saveMFNaNbNdNiNfZSQGdQGcQFv__TQFoSQGtQFdQExQErMxFNbNdZQEmTQDvZQGu@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5emptyMFNaNbNdNiZb@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5frontMFNaNbNdNiZm@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg5primeMFNaNbNiZv@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__ctorMFNaNbNcNiNfQChZSQGiQGhQGa__TQFtSQGyQFiQFcQEwMxFNbNdZQErTQEaZQGz@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__ctorMFNaNbNcNiNfQChbZSQGjQGiQGb__TQFuSQGzQFjQFdQExMxFNbNdZQEsTQEbZQHa@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg6__initZ@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg7opSliceMFNaNbNiNfZSQGeQGdQFw__TQFpSQGuQFeQEyQEsMxFNbNdZQEnTQDwZQGv@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2657_C26TSQDx5range__T4iotaTmTmZQkFmmZ6ResultZQEg8popFrontMFNaNbNiZv@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi4saveMFNaNbNdNiNfZSQGfQGeQFx__TQFqSQGvQFfQEzQEtMxFNbNdZQEoTQDxZQGw@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5emptyMFNaNbNdNiZb@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5frontMFNaNbNdNiZm@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi5primeMFNaNbNiZv@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__ctorMFNaNbNcNiNfQCjZSQGkQGjQGc__TQFvSQHaQFkQFeQEyMxFNbNdZQEtTQEcZQHb@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__ctorMFNaNbNcNiNfQCjbZSQGlQGkQGd__TQFwSQHbQFlQFfQEzMxFNbNdZQEuTQEdZQHc@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi6__initZ@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi7opSliceMFNaNbNiNfZSQGgQGfQFy__TQFrSQGwQFgQFaQEuMxFNbNdZQEpTQDyZQGx@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultSQBq8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2661_C26TSQDx5range__T4iotaTmTxmZQlFmxmZ6ResultZQEi8popFrontMFNaNbNiZv@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf11__xopEqualsMxFKxSQHcQHbQGu__TQGnS_DQHuQGc__TQGbTaTaZQGjFNaNfQFjQFmZQFkQFiTQEzZQIkZb@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf4saveMFNaNbNdNiNfZSQHcQHbQGu__TQGnS_DQHuQGc__TQGbTaTaZQGjFNaNfQFjQFmZQFkQFiTQEzZQIk@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5emptyMFNaNdNfZb@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5frontMFNaNdNfZw@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf5primeMFNaNfZv@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__ctorMFNaNbNcNiNfQCuZSQHhQHgQGz__TQGsS_DQHzQGh__TQGgTaTaZQGoFNaNfQFoQFrZQFpQFnTQFeZQIp@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__ctorMFNaNbNcNiNfQCubZSQHiQHhQHa__TQGtS_DQIaQGi__TQGhTaTaZQGpFNaNfQFpQFsZQFqQFoTQFfZQIq@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf6__initZ@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf7opSliceMFNaNbNiNfZSQHdQHcQGv__TQGoS_DQHvQGd__TQGcTaTaZQGkFNaNfQFkQFnZQFlQFjTQFaZQIl@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf8popFrontMFNaNfZv@Base 15 ++ _D3std9algorithm9iteration__T12FilterResultS_DQBs3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCoZQBhZQFf9__xtoHashFNbNeKxSQHbQHaQGt__TQGmS_DQHtQGb__TQGaTaTaZQGiFNaNfQFiQFlZQFjQFhTQEyZQIjZm@Base 15 ++ _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTAxaZQBiFNaNbNiNfQqZSQCzQCyQCr__T9MapResultSQDwQCqQCnTQCbZQz@Base 15 ++ _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTSQCg3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDdFNaNbNiNfQClZSQEvQEuQEn__T9MapResultSQFsQEmQEjTQDxZQz@Base 15 ++ _D3std9algorithm9iteration__T3mapSQBg5ascii7toLowerZ__TQBaTSQCg3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDdFNaNbNiNfQClZSQEvQEuQEn__T9MapResultSQFsQEmQEjTQDxZQz@Base 15 ++ _D3std9algorithm9iteration__T3mapVAyaa4_615b305dZ__TQxTSQCc3uni21DecompressedIntervalsZQCgFNaNbNiNfQBsZSQDyQDxQDq__T9MapResultSQEv10functional__T8unaryFunVQEra4_615b305dVQFga1_61ZQBiTQEyZQCt@Base 15 ++ _D3std9algorithm9iteration__T3mapVAyaa4_615b315dZ__TQxTSQCc3uni21DecompressedIntervalsZQCgFNaNbNiNfQBsZSQDyQDxQDq__T9MapResultSQEv10functional__T8unaryFunVQEra4_615b315dVQFga1_61ZQBiTQEyZQCt@Base 15 ++ _D3std9algorithm9iteration__T3mapVAyaa6_612e6e616d65Z__TQBbTAySQCj8internal14unicode_tables15UnicodePropertyZQDcFNaNbNiNfQCjZSQEuQEtQEm__T9MapResultSQFr10functional__T8unaryFunVQFna6_612e6e616d65VQGga1_61ZQBmTQFtZQCx@Base 15 ++ _D3std9algorithm9iteration__T4uniqVAyaa6_61203d3d2062TSQCb5range__T11SortedRangeTAQBvVQBza5_61203c2062VEQDyQBx18SortedRangeOptionsi0ZQCoZQEeFNaNbNiNfQDrZSQFwQFvQFo__T10UniqResultSQGv10functional__T9binaryFunVQGra6_61203d3d2062VQHka1_61VQHta1_62ZQBwTQHnZQDj@Base 15 ++ _D3std9algorithm9iteration__T6filterS_DQBl3uni__T19comparePropertyNameTaTaZQBaFNaNfAxaQdZ4predFNaNbNiNfwZbZ__TQDdTSQEjQEiQEb__T9MapResultSQFg5ascii7toLowerTQCvZQBhZQFfFNaNbNiNfQCkZSQGxQGwQGp__T12FilterResultS_DQIaQGp__TQGoTaTaZQGwFNaNfQFwQFzZQFxQFvTQFfZQCi@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFNaNbNiQHyZSQJmQJlQJe__TQIxTQItZQJfFQJbZQCh@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy14replaceCurrentMFNaNbNiNeSQKiQIb__T7BitsSetTmZQlZv@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy4saveMFNaNbNdNiNfZSQKaQJzQJs__TQJlTQJhZQJtFQJpZQCv@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy5emptyMFNaNbNdNiZb@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy5frontMFNaNbNdNiZm@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__ctorMFNaNbNcNiNfQIrSQKeQHx__T7BitsSetTmZQlZSQLcQLbQKu__TQKnTQKjZQKvFQKrZQDx@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__ctorMFNaNbNcNiQIpZSQKdQKcQJv__TQJoTQJkZQJwFQJsZQCy@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy6__initZ@Base 15 ++ _D3std9algorithm9iteration__T6joinerTSQBkQBjQBc__T9MapResultSQCh8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQEoQEnQEg__T12FilterResultSQFpQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQHf5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGxZQHwFQHsZQy8popFrontMFNaNbNiZv@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFNaNbNiNfQuQEbZSQFrQFqQFj__TQFcVQEwa6_61203d3d2062VQEwi0TQCqTQFzZQGnFQDcQGkZ6Result@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result11__xopEqualsMxFKxSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQDhTQGqZQHeFQDtQHbZQDiZb@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result15separatorLengthMFNaNbNdNiNfZm@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result17ensureFrontLengthMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result4saveMFNaNbNdNiNfZSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQDhTQGqZQHeFQDtQHbZQDi@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result5frontMFNaNbNdNiNfZQBs@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__ctorMFNaNbNcNiNfQBsQFaZSQGqQGpQGi__TQGbVQFva6_61203d3d2062VQFvi0TQDpTQGyZQHmFQEbQHjZQDq@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result6__initZ@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TAxaTQDjZQDxFQmQDtZ6Result9__xtoHashFNbNeKxSQGhQGgQFz__TQFsVQFma6_61203d3d2062VQFmi0TQDgTQGpZQHdFQDsQHaZQDhZm@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFNaNbNiNfQDzQEcZSQFsQFrQFk__TQFdVQExa6_61203d3d2062VQExi0TQFwTQGaZQGoFQGiQGlZ6Result@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result11__xopEqualsMxFKxSQGjQGiQGb__TQFuVQFoa6_61203d3d2062VQFoi0TQGnTQGrZQHfFQGzQHcZQDiZb@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result15separatorLengthMFNaNbNdNiNfZm@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result17ensureFrontLengthMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result4saveMFNaNbNdNiNfZSQGjQGiQGb__TQFuVQFoa6_61203d3d2062VQFoi0TQGnTQGrZQHfFQGzQHcZQDi@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result5frontMFNaNbNdNiNfZQEy@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__ctorMFNaNbNcNiNfQEyQFbZSQGrQGqQGj__TQGcVQFwa6_61203d3d2062VQFwi0TQGvTQGzZQHnFQHhQHkZQDq@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result6__initZ@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T8splitterVAyaa6_61203d3d2062VEQCf8typecons__T4FlagVQBpa14_6b656570536570617261746f7273ZQBqi0TQDfTQDjZQDxFQDrQDuZ6Result9__xtoHashFNbNeKxSQGiQGhQGa__TQFtVQFna6_61203d3d2062VQFni0TQGmTQGqZQHeFQGyQHbZQDhZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu11__xopEqualsMxFKxSQFrQFqQFj__TQFcSQGhQEv__TQEmVQEga4_615b305dVQEva1_61ZQFoTQEhZQGzZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu4saveMFNaNdNfZSQFnQFmQFf__TQEySQGdQEr__TQEiVQEca4_615b305dVQEra1_61ZQFkTQEdZQGv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5emptyMFNaNdNfZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5frontMFNaNdNfZk@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__ctorMFNaNbNcNiNfQCcZSQFwQFvQFo__TQFhSQGmQFa__TQErVQEla4_615b305dVQFaa1_61ZQFtTQEmZQHe@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu8popFrontMFNaNfZv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu9__xtoHashFNbNeKxSQFqQFpQFi__TQFbSQGgQEu__TQElVQEfa4_615b305dVQEua1_61ZQFnTQEgZQGyZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu11__xopEqualsMxFKxSQFrQFqQFj__TQFcSQGhQEv__TQEmVQEga4_615b315dVQEva1_61ZQFoTQEhZQGzZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu4saveMFNaNdNfZSQFnQFmQFf__TQEySQGdQEr__TQEiVQEca4_615b315dVQEra1_61ZQFkTQEdZQGv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5emptyMFNaNdNfZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu5frontMFNaNdNfZk@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__ctorMFNaNbNcNiNfQCcZSQFwQFvQFo__TQFhSQGmQFa__TQErVQEla4_615b315dVQFaa1_61ZQFtTQEmZQHe@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu6__initZ@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu8popFrontMFNaNfZv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDu9__xtoHashFNbNeKxSQFqQFpQFi__TQFbSQGgQEu__TQElVQEfa4_615b315dVQEua1_61ZQFnTQEgZQGyZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp11__xopEqualsMxFKxSQGmQGlQGe__TQFxSQHcQFq__TQFhVQFba6_612e6e616d65VQFua1_61ZQGnTQFcZQHyZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp4saveMFNaNbNdNiNfZSQGmQGlQGe__TQFxSQHcQFq__TQFhVQFba6_612e6e616d65VQFua1_61ZQGnTQFcZQHy@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp5frontMFNaNbNdNiNfZyAa@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__ctorMFNaNbNcNiNfQCtZSQGrQGqQGj__TQGcSQHhQFv__TQFmVQFga6_612e6e616d65VQFza1_61ZQGsTQFhZQId@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp6__initZ@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp7opIndexMFNaNbNiNfmZyAa@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp7opSliceMFNaNbNiNfmmZSQGpQGoQGh__TQGaSQHfQFt__TQFkVQFea6_612e6e616d65VQFxa1_61ZQGqTQFfZQIb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp9__mixin116lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp9__xtoHashFNbNeKxSQGlQGkQGd__TQFwSQHbQFp__TQFgVQFaa6_612e6e616d65VQFta1_61ZQGmTQFbZQHxZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp__T4backZQgMFNaNbNdNiNfZyAa@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa6_612e6e616d65VQta1_61ZQBlTAySQDw8internal14unicode_tables15UnicodePropertyZQEp__T7popBackZQjMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh11__xopEqualsMxFKxSQDeQDdQCw__TQCpSQDuQCiQCfTQCaZQDhZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh4saveMFNaNbNdNiNfZSQDeQDdQCw__TQCpSQDuQCiQCfTQCaZQDh@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh5frontMFNaNdNfZw@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__ctorMFNaNbNcNiNfQBaZSQDjQDiQDb__TQCuSQDzQCnQCkTQCfZQDm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh9__xtoHashFNbNeKxSQDdQDcQCv__TQCoSQDtQChQCeTQBzZQDgZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc11__xopEqualsMxFKxSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFcZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc4saveMFNaNbNdNiNfZSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFc@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc5frontMFNaNbNdNiNfZa@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__ctorMFNaNbNcNiNfQCvZSQFeQFdQEw__TQEpSQFuQEiQEfTQEaZQFh@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc7opIndexMFNaNbNiNfmZa@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc7opSliceMFNaNbNiNfmmZSQFcQFbQEu__TQEnSQFsQEgQEdTQDyZQFf@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc9__mixin116lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQDc9__xtoHashFNbNeKxSQEyQExQEq__TQEjSQFoQEcQDzTQDuZQFbZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc11__xopEqualsMxFKxSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFcZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc4saveMFNaNbNdNiNfZSQEzQEyQEr__TQEkSQFpQEdQEaTQDvZQFc@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc5emptyMFNaNbNdNiNfZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc5frontMFNaNbNdNiNfZa@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__ctorMFNaNbNcNiNfQCvZSQFeQFdQEw__TQEpSQFuQEiQEfTQEaZQFh@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc6__initZ@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc7opIndexMFNaNbNiNfmZa@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc7opSliceMFNaNbNiNfmmZSQFcQFbQEu__TQEnSQFsQEgQEdTQDyZQFf@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc8popFrontMFNaNbNiNfZv@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc9__mixin116lengthMFNaNbNdNiNfZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTSQCf3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQDc9__xtoHashFNbNeKxSQEyQExQEq__TQEjSQFoQEcQDzTQDuZQFbZm@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx4saveMFNaNbNdNiNfZSQIuQItQIm__TQIfSQJkQHyQHsQHmMxFNbNdZQHhTQGqZQJl@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx5emptyMFNaNbNdNiZb@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx5frontMFNaNbNdNiZSQItQHh__T7BitsSetTmZQl@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__ctorMFNaNbNcNiNfQFcZSQIzQIyQIr__TQIkSQJpQIdQHxQHrMxFNbNdZQHmTQGvZQJq@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx6__initZ@Base 15 ++ _D3std9algorithm9iteration__T9MapResultSQBm8bitmanip8BitArray7bitsSetMxFNbNdZ18__lambda_L2658_C23TSQDtQDsQDl__T12FilterResultSQEuQDiQDcQCwMxFNbNdZ18__lambda_L2657_C26TSQGk5range__T4iotaTmTmZQkFmmZ6ResultZQDpZQGx8popFrontMFNaNbNiZv@Base 15 ++ _D3std9algorithm9searching11__moduleRefZ@Base 15 ++ _D3std9algorithm9searching12__ModuleInfoZ@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa11_615b305d203e2030783830TAxSQCv3uni17CodepointIntervalZQCvFNaNbNiNfQBqZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10LeapSecondTylZQDuFNaNbNiNfQCpylZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10TransitionTlZQDtFNaNbNiNfQColZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa11_62203c20612e74696d6554TAySQCv8datetime8timezone13PosixTimeZone10TransitionTylZQDuFNaNbNiNfQCpylZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAQuTQxZQBnFNaNbNiNfQtQBoZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TASQCj3uni__T13InversionListTSQDkQBb8GcPolicyZQBhTQBwZQDhFNaNbNiNfQCnQCpZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAaTaZQBlFNaNiNfQpaZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAxhTQeZQBnFNaNbNiNfQtQvZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAyAaTQyZQBoFNaNbNiNfQuQBpZl@Base 15 ++ _D3std9algorithm9searching__T10countUntilVAyaa6_61203d3d2062TAyhTAxhZQBoFNaNbNiNfQuQsZl@Base 15 ++ _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaTQeTQhZQCfFNaNfQwQuQwQyZk@Base 15 ++ _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaTQeZQCcFNaNfQtQrQtZk@Base 15 ++ _D3std9algorithm9searching__T10startsWithSQBoQBnQBg18__lambda_L4941_C30TAxaTAyaZQBzFNaNfQqQoZb@Base 15 ++ _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAxaTQxZQBnFNaNbNiNfQtQBoZb@Base 15 ++ _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAxaTaZQBmFNaNbNiNfQsaZb@Base 15 ++ _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TAyhTQxZQBnFNaNfQpQBkZb@Base 15 ++ _D3std9algorithm9searching__T10startsWithVAyaa6_61203d3d2062TQtTQwZQBmFNaNbNiNfQBlQBoZb@Base 15 ++ _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg11__xopEqualsMxFKxSQDdQDcQCv__TQCoVhi1TQCaTQCeTQCiZQDiZb@Base 15 ++ _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__ctorMFNaNbNcNiNfQBgQBjQBmZSQDoQDnQDg__TQCzVhi1TQClTQCpTQCtZQDt@Base 15 ++ _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__initZ@Base 15 ++ _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg8opAssignMFNaNbNcNiNjNfSQDiQDhQDa__TQCtVhi1TQCfTQCjTQCnZQDnZQBl@Base 15 ++ _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg8opAssignMFNaNbNiNfSQDe8typecons__T5TupleTQCdTQChTQClZQtZv@Base 15 ++ _D3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg9__xtoHashFNbNeKxSQDcQDbQCu__TQCnVhi1TQBzTQCdTQChZQDhZm@Base 15 ++ _D3std9algorithm9searching__T3anyS_DQBi4path14isDirSeparatorFNaNbNiNfwZbZ__TQBvTAxaZQCdFNaNfQmZb@Base 15 ++ _D3std9algorithm9searching__T4findS_DQBj4path14isDirSeparatorFNaNbNiNfwZbTAxaZQBxFNaNfQmZQp@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFNaNbNiNfQsMQvZQy@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFQkMQnZ__T5forceTAhTQBdZQoFNaNbNiNeNgAaZQx@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTQdZQBfFQkMQnZ__T5forceTQBaTAhZQoFNaNbNiNeNgAhZQBx@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTaZQBeFNaNfQnMaZQs@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAaTaZQBeFQjMaZ13trustedMemchrFNaNbNiNeNkMKNgAaMKxaZNgQj@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAhTQdZQBfFNaNbNiNfQsMQvZQy@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxSQCd8typecons__T5TupleTQBsVQBwa3_6b6579TSQDr4json9JSONValueVQDda5_76616c7565ZQCjTxQDeZQEjFNaNbNiNfQDwMxQDzZQEf@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFNaNbNiNfQtMQBpZQBa@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFQlMQBhZ__T5forceTAhTAaZQnFNaNbNiNeNgAaZQw@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxaTQxZQBgFQlMQBhZ__T5forceTQBcTAhZQoFNaNbNiNeNgAhZQBz@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAxhTQeZQBgFNaNbNiNfQtMQwZQz@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyAaTQyZQBhFNaNbNiNfQuMQBqZQBb@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyhTAxhZQBhFNaNbNiNfQuMQtZQBa@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TAyhTQxZQBgFNaNfQpMQBlZQw@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFNaNbNiNfQBlMQtZQBs@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFQBdMQlZ__T5forceTAhTQBbZQoFNaNbNiNeNgAaZQx@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTAaZQBfFQBdMQlZ__T5forceTQBuTAhZQoFNaNbNiNeNgAhZQCr@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFNaNbNiNfQBlMQBpZQBt@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFQBdMQBhZ__T5forceTAhTAaZQnFNaNbNiNeNgAaZQw@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTQwZQBfFQBdMQBhZ__T5forceTQBvTAhZQoFNaNbNiNeNgAhZQCs@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTaZQBeFNaNfQBgMaZQBm@Base 15 ++ _D3std9algorithm9searching__T4findVAyaa6_61203d3d2062TQtTaZQBeFQBcMaZ13trustedMemchrFNaNbNiNeNkMKNgAyaMKxaZNgQk@Base 15 ++ _D3std9algorithm9searching__T7canFindZ__TQmTAaTaZQuFNaNfQmMaZb@Base 15 ++ _D3std9algorithm9searching__T7canFindZ__TQmTAxSQBt8typecons__T5TupleTAyaVQea3_6b6579TSQDg4json9JSONValueVQBka5_76616c7565ZQCiTxQDdZQDyFNaNbNiNfQDvMxQDyZb@Base 15 ++ _D3std9algorithm9searching__T7canFindZ__TQmTAyAaTAyaZQyFNaNbNiNfQuMQsZb@Base 15 ++ _D3std9algorithm9searching__T7canFindZ__TQmTAyhTAyaZQxFNaNfQpMQoZb@Base 15 ++ _D3std9algorithm9searching__T8endsWithVAyaa6_61203d3d2062TQtTQwZQBjFNaNbNiNfQBlQBoZb@Base 15 ++ _D3std9algorithm9searching__T8skipOverZ__TQnTAxwTQeZQxFNaNbNiNfKQtQvZb@Base 15 ++ _D3std9algorithm9searching__T8skipOverZ__TQnTSQBs3utf__T5byUTFTwVEQCm8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQFpQDx__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultTAxwZQHhFNaNbNiNfKQHeQuZb@Base 15 ++ _D3std9algorithm9searching__T8skipOverZ__TQnTSQBs3utf__T5byUTFTwVEQCm8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCai1Z__TQDiTSQFpQDx__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImplZQFkFNcQCeZ6ResultTAxwZQHhFNaNbNiNfKQHeQuZb@Base 15 ++ _D3std9algorithm9searching__T9findSplitVAyaa6_61203d3d2062TAxaTQxZQBlFNaNbNiNfQtQBoZSQDfQDeQCx__T15FindSplitResultVhi1TQCiTQCmTQCqZQBi@Base 15 ++ _D3std9container10binaryheap11__moduleRefZ@Base 15 ++ _D3std9container10binaryheap12__ModuleInfoZ@Base 15 ++ _D3std9container11__moduleRefZ@Base 15 ++ _D3std9container12__ModuleInfoZ@Base 15 ++ _D3std9container4util11__moduleRefZ@Base 15 ++ _D3std9container4util12__ModuleInfoZ@Base 15 ++ _D3std9container5array11__moduleRefZ@Base 15 ++ _D3std9container5array12__ModuleInfoZ@Base 15 ++ _D3std9container5dlist11__moduleRefZ@Base 15 ++ _D3std9container5dlist12__ModuleInfoZ@Base 15 ++ _D3std9container5dlist6DRange4backMFNaNbNdNiNjNlNfZPSQBzQByQBr8BaseNode@Base 15 ++ _D3std9container5dlist6DRange4saveMFNaNbNdNiNjNlNfZSQByQBxQBqQBn@Base 15 ++ _D3std9container5dlist6DRange5emptyMxFNaNbNdNiNlNfZb@Base 15 ++ _D3std9container5dlist6DRange5frontMFNaNbNdNiNjNlNfZPSQCaQBzQBs8BaseNode@Base 15 ++ _D3std9container5dlist6DRange6__ctorMFNaNbNcNiNfPSQBwQBvQBo8BaseNodeQuZSQCsQCrQCkQCh@Base 15 ++ _D3std9container5dlist6DRange6__ctorMFNaNbNcNiNfPSQBwQBvQBo8BaseNodeZSQCqQCpQCiQCf@Base 15 ++ _D3std9container5dlist6DRange6__initZ@Base 15 ++ _D3std9container5dlist6DRange7popBackMFNaNbNiNlNfZv@Base 15 ++ _D3std9container5dlist6DRange8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D3std9container5dlist8BaseNode6__initZ@Base 15 ++ _D3std9container5dlist8BaseNode7connectFNaNbNfPSQBuQBtQBmQBjQoZv@Base 15 ++ _D3std9container5slist11__moduleRefZ@Base 15 ++ _D3std9container5slist12__ModuleInfoZ@Base 15 ++ _D3std9container6rbtree11__moduleRefZ@Base 15 ++ _D3std9container6rbtree12__ModuleInfoZ@Base 15 ++ _D3std9exception11__moduleRefZ@Base 15 ++ _D3std9exception11errnoStringFNbNeiZAya@Base 15 ++ _D3std9exception12__ModuleInfoZ@Base 15 ++ _D3std9exception14ErrnoException5errnoMFNaNbNdNiNlNfZk@Base 15 ++ _D3std9exception14ErrnoException6__ctorMFNfAyaQdmZCQBxQBwQBp@Base 15 ++ _D3std9exception14ErrnoException6__ctorMFNfAyaiQemZCQByQBxQBq@Base 15 ++ _D3std9exception14ErrnoException6__initZ@Base 15 ++ _D3std9exception14ErrnoException6__vtblZ@Base 15 ++ _D3std9exception14ErrnoException7__ClassZ@Base 15 ++ _D3std9exception14ErrnoException8errnoMsgMFNaNbNdNiNlNfZAya@Base 15 ++ _D3std9exception14RangePrimitive6__initZ@Base 15 ++ _D3std9exception__T11doesPointToTAAyaTQfTvZQyFNaNbNiNeKxAAyaKxQgZb@Base 15 ++ _D3std9exception__T11doesPointToTACQBh3zip13ArchiveMemberTQzTvZQBsFNaNbNiNeKxACQCzQBsQBrKxQnZb@Base 15 ++ _D3std9exception__T11doesPointToTASQBh5regex8internal2ir10NamedGroupTQBkTvZQCeFNaNbNiNeKxASQDlQCeQCbQBvQBvKxQtZb@Base 15 ++ _D3std9exception__T11doesPointToTASQBh8datetime8timezone13PosixTimeZone10LeapSecondTQBzTvZQCtFNaNbNiNeKxASQEaQCtQCnQChQBvKxQtZb@Base 15 ++ _D3std9exception__T11doesPointToTASQBh8datetime8timezone13PosixTimeZone14TempTransitionTQCdTvZQCxFNaNbNiNeKxASQEeQCxQCrQClQBzKxQtZb@Base 15 ++ _D3std9exception__T11doesPointToTAkTQdTvZQwFNaNbNiNeKxAkKxQeZb@Base 15 ++ _D3std9exception__T11doesPointToTAxSQBi4file15DirIteratorImpl9DirHandleTSQCtQBlQBjTvZQCoFNaNbNiNeKxAQCnKxSQEaQCsQCqZb@Base 15 ++ _D3std9exception__T11doesPointToTAxSQBi4file8DirEntryTSQCbQt15DirIteratorImplTvZQCjFNaNbNiNeKxAQCiKxSQDvQCnQBvZb@Base 15 ++ _D3std9exception__T11doesPointToTAxkTSQBk3uni__T13InversionListTSQClQBb8GcPolicyZQBh__T9IntervalsTAkZQoTvZQDjFNaNbNiNeKxAkKxSQEtQDj__TQDiTQCwZQDq__TQCjTQCcZQCrZb@Base 15 ++ _D3std9exception__T11doesPointToTAyaTSQBk3net4curl3FTP4ImplTvZQBrFNaNbNiNeKxAyaKxSQDcQBsQBrQBpQBoZb@Base 15 ++ _D3std9exception__T11doesPointToTAyaTSQBk3net4curl4HTTP4ImplTvZQBsFNaNbNiNeKxAyaKxSQDdQBtQBsQBqQBoZb@Base 15 ++ _D3std9exception__T11doesPointToTAyaTSQBk4file15DirIteratorImplTvZQBvFNaNbNiNeKxAyaKxSQDgQBwQBuZb@Base 15 ++ _D3std9exception__T11doesPointToTAyaTSQBk5stdio17LockingTextReaderTvZQByFNaNbNiNeKxAyaKxSQDjQBzQBwZb@Base 15 ++ _D3std9exception__T11doesPointToTAyaTSQBk5stdio4FileTvZQBkFNaNbNiNeKxAyaKxSQCvQBlQBiZb@Base 15 ++ _D3std9exception__T11doesPointToTCQBg3zip13ArchiveMemberTQyTvZQBrFNaNbNiNeKxCQCxQBrQBqKxQmZb@Base 15 ++ _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl3FTP4ImplTvZQBuFNaNbNiNeKxDQBuKxSQDgQBtQBsQBqQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl4HTTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFAhZmTSQBn3net4curl4SMTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl3FTP4ImplTvZQBuFNaNbNiNeKxDQBuKxSQDgQBtQBsQBqQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl4HTTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFAvZmTSQBn3net4curl4SMTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBuQBtQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe3FTP4ImplTvZQDkFNaNbNiNeKxDQDkKxSQEwQBrQCuQBqQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe4HTTP4ImplTvZQDlFNaNbNiNeKxDQDlKxSQExQBsQCvQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFEQBi6socket8socket_tE3etc1c4curl12CurlSockTypeZiTSQDf3netQBe4SMTP4ImplTvZQDlFNaNbNiNeKxDQDlKxSQExQBsQCvQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl3FTP4ImplTvZQBvFNaNbNiNeKxDQBvKxSQDhQBtQBsQBqQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl4HTTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBuQBtQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFIAaZvTSQBo3net4curl4SMTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBuQBtQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFSQBi3net4curl4HTTP10StatusLineZvTSQCpQBhQBgQBe4ImplTvZQCsFNaNbNiNeKxDQCsKxSQEeQCwQCvQCtQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt3FTP4ImplTvZQDgFNaNbNiNeKxDQDgKxSQEsQBrQDjQBqQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt4HTTP4ImplTvZQDhFNaNbNiNeKxDQDhKxSQEtQBsQDkQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFlE3etc1c4curl11CurlSeekPosZEQBaQzQz8CurlSeekTSQDb3netQBt4SMTP4ImplTvZQDhFNaNbNiNeKxDQDhKxSQEtQBsQDkQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl3FTP4ImplTvZQBwFNaNbNiNeKxDQBwKxSQDiQBtQBsQBqQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl4HTTP4ImplTvZQBxFNaNbNiNeKxDQBxKxSQDjQBuQBtQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTDFmmmmZiTSQBp3net4curl4SMTP4ImplTvZQBxFNaNbNiNeKxDQBxKxSQDjQBuQBtQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTEQBg3net4curl4HTTP6MethodTSQCgQBaQzQw4ImplTvZQChFNaNbNiNeKxEQDnQChQCgQCeQCcKxSQEfQCzQCyQCwQCbZb@Base 15 ++ _D3std9exception__T11doesPointToTEQBg4file8SpanModeTSQBzQt15DirIteratorImplTvZQChFNaNbNiNeKxEQDnQChQCfKxSQDzQCtQCbZb@Base 15 ++ _D3std9exception__T11doesPointToTG3lTSQBk4file15DirIteratorImplTvZQBvFNaNbNiNeKxG3lKxSQDgQBwQBuZb@Base 15 ++ _D3std9exception__T11doesPointToTHAyaxAyaTSQBp3net4curl4HTTP4ImplTvZQBxFNaNbNiNeKxHQBxQBwKxSQDmQBxQBwQBuQBsZb@Base 15 ++ _D3std9exception__T11doesPointToTPSQBh5stdio4File4ImplTQwTvZQBpFNaNbNiNeKxPSQCwQBpQBmQBkKxQqZb@Base 15 ++ _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl3FTP4ImplVEQDhQCa24RefCountedAutoInitializei1ZQCu15RefCountedStoreQCkTQEjTvZQFdFNaNbNiNeKxPSQGkQFd__TQExTQEoVQDvi1ZQFlQCrQEnKxQBkZb@Base 15 ++ _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl4HTTP4ImplVEQDiQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkTQEkTvZQFeFNaNbNiNeKxPSQGlQFe__TQEyTQEpVQDvi1ZQFmQCrQEnKxQBkZb@Base 15 ++ _D3std9exception__T11doesPointToTPSQBh8typecons__T10RefCountedTSQCk3net4curl4SMTP4ImplVEQDiQCb24RefCountedAutoInitializei1ZQCv15RefCountedStoreQCkTQEkTvZQFeFNaNbNiNeKxPSQGlQFe__TQEyTQEpVQDvi1ZQFmQCrQEnKxQBkZb@Base 15 ++ _D3std9exception__T11doesPointToTPSQBh8typecons__T14SafeRefCountedTSQCo4file15DirIteratorImplVEQDpQCi24RefCountedAutoInitializei0ZQDc15RefCountedStore4ImplTQEtTvZQFnFNaNbNiNeKxPSQGuQFn__TQFhTQEuVQDxi0ZQFvQCtQCfKxQBkZb@Base 15 ++ _D3std9exception__T11doesPointToTPxS3etc1c4curl10curl_slistTSQCh3netQBa3FTP4ImplTvZQCmFNaNbNiNeKxPQClKxSQDyQBrQCqQBqQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTPxS3etc1c4curl10curl_slistTSQCh3netQBa4HTTP4ImplTvZQCnFNaNbNiNeKxPQCmKxSQDzQBsQCrQBrQBpZb@Base 15 ++ _D3std9exception__T11doesPointToTPxSQBi5stdio4File4ImplTSQCdQv17LockingTextReaderTvZQCnFNaNbNiNeKxPQCmKxSQDzQCrQBxZb@Base 15 ++ _D3std9exception__T11doesPointToTPxSQBi5stdio4File4ImplTSQCdQvQrTvZQBwFNaNbNiNeKxPQBvKxSQDiQCaQBxZb@Base 15 ++ _D3std9exception__T11doesPointToTPxSQBi8datetime8timezone13PosixTimeZone14TransitionTypeTSQDkQCcQBwQBq14TempTransitionTvZQDyFNaNbNiNeKxPQDxKxSQFkQEcQDwQDqQCaZb@Base 15 ++ _D3std9exception__T11doesPointToTPxvTSQBk3net4curl3FTP4ImplTvZQBrFNaNbNiNeKxPvKxSQDbQBrQBqQBoQBnZb@Base 15 ++ _D3std9exception__T11doesPointToTPxvTSQBk3net4curl4HTTP4ImplTvZQBsFNaNbNiNeKxPvKxSQDcQBsQBrQBpQBnZb@Base 15 ++ _D3std9exception__T11doesPointToTPxvTSQBk3net4curl4SMTP4ImplTvZQBsFNaNbNiNeKxPvKxSQDcQBsQBrQBpQBnZb@Base 15 ++ _D3std9exception__T11doesPointToTPySQBi8datetime8timezone13PosixTimeZone6TTInfoTSQDbQBtQBnQBh14TempTransitionTvZQDpFNaNbNiNeKxPyQDpKxSQFcQDuQDoQDiQCbZb@Base 15 ++ _D3std9exception__T11doesPointToTS4core3sys5posixQk4stat6stat_tTSQCl4file15DirIteratorImplTvZQCwFNaNbNiNeKxSQCwQCuQCtQDaQCrQCpKxSQExQCmQCkZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg3net4curl3FTP4ImplTQxTvZQBqFNaNbNiNeKxSQCwQBqQBpQBnQBmKxQsZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr3FTP4ImplTvZQCbFNaNbNiNeKxSQDhQCbQCaQByKxSQDwQCqQCpQBzQByZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr4HTTP4ImplTvZQCcFNaNbNiNeKxSQDiQCcQCbQBzKxSQDxQCrQCqQCaQByZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg3net4curl4CurlTSQBzQtQr4SMTP4ImplTvZQCcFNaNbNiNeKxSQDiQCcQCbQBzKxSQDxQCrQCqQCaQByZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg3net4curl4HTTP10StatusLineTSQClQBfQBeQBc4ImplTvZQCoFNaNbNiNeKxSQDuQCoQCnQClQCjKxSQEmQDgQDfQDdQCbZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg3net4curl4HTTP4ImplTQyTvZQBrFNaNbNiNeKxSQCxQBrQBqQBoQBmKxQsZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg3net4curl4SMTP4ImplTQyTvZQBrFNaNbNiNeKxSQCxQBrQBqQBoQBmKxQsZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg3uni__T13InversionListTSQChQBb8GcPolicyZQBh__T9IntervalsTAkZQoTQCpTvZQDjFNaNbNiNeKxSQEpQDj__TQDiTQCwZQDq__TQCjTQCcZQCrKxQBlZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg4file15DirIteratorImplTQBbTvZQBvFNaNbNiNeKxSQDbQBvQBtKxQmZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg4file8DirEntryTSQBzQt15DirIteratorImplTvZQChFNaNbNiNeKxSQDnQChQCfKxSQDzQCtQCbZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg5stdio17LockingTextReaderTQBeTvZQByFNaNbNiNeKxSQDeQByQBvKxQmZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg5stdio4FileTQqTvZQBjFNaNbNiNeKxSQCpQBjQBgKxQmZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg5stdio4FileTSQBwQq17LockingTextReaderTvZQCgFNaNbNiNeKxSQDmQCgQCdKxSQDyQCsQCdZb@Base 15 ++ _D3std9exception__T11doesPointToTSQBg8datetime8timezone13PosixTimeZone14TempTransitionTQCcTvZQCwFNaNbNiNeKxSQEcQCwQCqQCkQByKxQsZb@Base 15 ++ _D3std9exception__T11doesPointToTaTSQBi5stdio17LockingTextReaderTvZQBwFNaNbNiNeKxaKxSQDfQBxQBuZb@Base 15 ++ _D3std9exception__T11doesPointToTbTSQBi3net4curl3FTP4ImplTvZQBpFNaNbNiNeKxbKxSQCyQBqQBpQBnQBmZb@Base 15 ++ _D3std9exception__T11doesPointToTbTSQBi3net4curl4HTTP4ImplTvZQBqFNaNbNiNeKxbKxSQCzQBrQBqQBoQBmZb@Base 15 ++ _D3std9exception__T11doesPointToTbTSQBi3net4curl4SMTP4ImplTvZQBqFNaNbNiNeKxbKxSQCzQBrQBqQBoQBmZb@Base 15 ++ _D3std9exception__T11doesPointToTbTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxbKxSQDcQBuQBsZb@Base 15 ++ _D3std9exception__T11doesPointToTbTSQBi5stdio17LockingTextReaderTvZQBwFNaNbNiNeKxbKxSQDfQBxQBuZb@Base 15 ++ _D3std9exception__T11doesPointToThTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxhKxSQDcQBuQBsZb@Base 15 ++ _D3std9exception__T11doesPointToTkTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxkKxSQDcQBuQBsZb@Base 15 ++ _D3std9exception__T11doesPointToTlTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxlKxSQDcQBuQBsZb@Base 15 ++ _D3std9exception__T11doesPointToTlTSQBi8datetime8timezone13PosixTimeZone14TempTransitionTvZQCuFNaNbNiNeKxlKxSQEdQCvQCpQCjQBxZb@Base 15 ++ _D3std9exception__T11doesPointToTmTSQBi3uni__T13InversionListTSQCjQBb8GcPolicyZQBh__T9IntervalsTAkZQoTvZQDhFNaNbNiNeKxmKxSQEqQDi__TQDhTQCvZQDp__TQCiTQCbZQCqZb@Base 15 ++ _D3std9exception__T11doesPointToTmTSQBi4file15DirIteratorImplTvZQBtFNaNbNiNeKxmKxSQDcQBuQBsZb@Base 15 ++ _D3std9exception__T11doesPointToTtTSQBi3net4curl4HTTP4ImplTvZQBqFNaNbNiNeKxtKxSQCzQBrQBqQBoQBmZb@Base 15 ++ _D3std9exception__T12assumeUniqueTaZQrFNaNbNiAaZAya@Base 15 ++ _D3std9exception__T12assumeUniqueTaZQrFNaNbNiKAaZAya@Base 15 ++ _D3std9exception__T12assumeUniqueTkZQrFNaNbNiKAkZAyk@Base 15 ++ _D3std9exception__T12assumeUniqueTxaZQsFNaNbNiKAxaZAya@Base 15 ++ _D3std9exception__T16collectExceptionHTC9ExceptionTmZQBiFNaNbNfLmZQBb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTS4core3sys5posixQk4stat6stat_tZQCaFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl3FTP4ImplZQBsFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4CurlZQBoFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4HTTP10StatusLineZQCaFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4HTTP4ImplZQBtFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn3net4curl4SMTP4ImplZQBtFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn3uni__T13InversionListTSQCoQBb8GcPolicyZQBh__T9IntervalsTAkZQoZQDkFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn4file15DirIteratorImplZQBwFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn4file8DirEntryZQBoFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn5stdio17LockingTextReaderZQBzFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T18isUnionAliasedImplTSQBn5stdio4FileZQBlFNaNbNiNfmZb@Base 15 ++ _D3std9exception__T7bailOutHTC4core4time13TimeExceptionZQBlFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTC9ExceptionZQwFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTCQBc11concurrency19TidMissingExceptionZQBxFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTCQBc3net4curl13CurlExceptionZQBnFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTCQBc3net4curl20CurlTimeoutExceptionZQBuFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTCQBc3zip12ZipExceptionZQBhFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTCQBc4json13JSONExceptionZQBjFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTCQBc6format15FormatExceptionZQBnFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTCQBc7process16ProcessExceptionZQBpFNaNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7bailOutHTCQBcQBb14ErrnoExceptionZQBiFNfAyamMAxaZNn@Base 15 ++ _D3std9exception__T7enforceHTC4core4time13TimeExceptionZ__TQBoTbZQBuFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBc11concurrency19TidMissingExceptionZ__TQCaTbZQCgFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBc3net4curl13CurlExceptionZ__TQBqTPvZQBxFNaNfQlLAxaAyamZQw@Base 15 ++ _D3std9exception__T7enforceHTCQBc3net4curl13CurlExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBc3net4curl20CurlTimeoutExceptionZ__TQBxTbZQCdFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBc3zip12ZipExceptionZ__TQBkTbZQBqFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTNgbZQBuFNaNfNgbLAxaAyamZNgb@Base 15 ++ _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTPNgSQClQBj9JSONValueZQClFNaNfQBdLAxaAyamZQBp@Base 15 ++ _D3std9exception__T7enforceHTCQBc4json13JSONExceptionZ__TQBmTbZQBsFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTbZQBwFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBc6format15FormatExceptionZ__TQBqTmZQBwFNaNfmLAxaAyamZm@Base 15 ++ _D3std9exception__T7enforceHTCQBc7process16ProcessExceptionZ__TQBsTbZQByFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTPOS4core4stdc5stdio8_IO_FILEZQCsFNfQBjLAxaAyamZQBv@Base 15 ++ _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTbZQBrFNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceHTCQBcQBb14ErrnoExceptionZ__TQBlTiZQBrFNfiLAxaAyamZi@Base 15 ++ _D3std9exception__T7enforceTPS4core3sys5posix5netdb7hostentZQBpFNaNfQBoLC6object9ThrowableZQCl@Base 15 ++ _D3std9exception__T7enforceTbZQlFNaNfbLC6object9ThrowableZb@Base 15 ++ _D3std9exception__T7enforceZ__TQmTAyaZQtFNaNfQlLAxaQrmZQv@Base 15 ++ _D3std9exception__T7enforceZ__TQmTPOS4core4stdc5stdio8_IO_FILEZQBsFNaNfQBlLAxaAyamZQBx@Base 15 ++ _D3std9exception__T7enforceZ__TQmTPSQBi11concurrency__T4ListTSQCiQBa7MessageZQw4NodeZQCoFNaNfQChLAxaAyamZQCt@Base 15 ++ _D3std9exception__T7enforceZ__TQmTPvZQsFNaNfQkLAxaAyamZQv@Base 15 ++ _D3std9exception__T7enforceZ__TQmTbZQrFNaNfbLAxaAyamZb@Base 15 ++ _D3std9exception__T7enforceZ__TQmTiZQrFNaNfiLAxaAyamZi@Base 15 ++ _D3std9exception__T7enforceZ__TQmTmZQrFNaNfmLAxaAyamZm@Base 15 ++ _D3std9outbuffer11__moduleRefZ@Base 15 ++ _D3std9outbuffer12__ModuleInfoZ@Base 15 ++ _D3std9outbuffer9OutBuffer11__invariantMxFZv@Base 15 ++ _D3std9outbuffer9OutBuffer12__invariant0MxFZv@Base 15 ++ _D3std9outbuffer9OutBuffer4fillMFNaNbNfmhZv@Base 15 ++ _D3std9outbuffer9OutBuffer5clearMFNaNbNfZv@Base 15 ++ _D3std9outbuffer9OutBuffer5fill0MFNaNbNfmZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxaZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxuZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNeMAxwZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNedZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNeeZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNefZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNekZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNemZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNetZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNeuZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNfMAxhZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNfMxCQBpQBoQBhZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNfaZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNfgZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNfhZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNfiZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNflZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNfsZv@Base 15 ++ _D3std9outbuffer9OutBuffer5writeMFNaNbNfwZv@Base 15 ++ _D3std9outbuffer9OutBuffer6__initZ@Base 15 ++ _D3std9outbuffer9OutBuffer6__vtblZ@Base 15 ++ _D3std9outbuffer9OutBuffer6align2MFNaNbNfhZv@Base 15 ++ _D3std9outbuffer9OutBuffer6align4MFNaNbNfhZv@Base 15 ++ _D3std9outbuffer9OutBuffer6printfMFMAyaYv@Base 15 ++ _D3std9outbuffer9OutBuffer6spreadMFNaNbNfmmZv@Base 15 ++ _D3std9outbuffer9OutBuffer7__ClassZ@Base 15 ++ _D3std9outbuffer9OutBuffer7reserveMFNaNbNemZv@Base 15 ++ _D3std9outbuffer9OutBuffer7toBytesMNgFNaNbNlNfZANgh@Base 15 ++ _D3std9outbuffer9OutBuffer7vprintfMFNbMAyaG1S3gcc8builtins13__va_list_tagZv@Base 15 ++ _D3std9outbuffer9OutBuffer8toStringMxFNaNbNfZAya@Base 15 ++ _D3std9outbuffer9OutBuffer9alignSizeMFNaNbNfmhZv@Base 15 ++ _D3std9typetuple11__moduleRefZ@Base 15 ++ _D3std9typetuple12__ModuleInfoZ@Base 15 ++ _D40TypeInfo_AxAS3std3uni17CodepointInterval6__initZ@Base 15 ++ _D40TypeInfo_C3std11concurrency11IsGenerator6__initZ@Base 15 ++ _D40TypeInfo_E3std3uni20UnicodeDecomposition6__initZ@Base 15 ++ _D40TypeInfo_E3std5range18SortedRangeOptions6__initZ@Base 15 ++ _D40TypeInfo_E3std6socket17SocketOptionLevel6__initZ@Base 15 ++ _D40TypeInfo_E3std6traits17FunctionAttribute6__initZ@Base 15 ++ _D40TypeInfo_E3std7numeric16CustomFloatFlags6__initZ@Base 15 ++ _D40TypeInfo_E3std8encoding15Windows1250Char6__initZ@Base 15 ++ _D40TypeInfo_E3std8encoding15Windows1251Char6__initZ@Base 15 ++ _D40TypeInfo_E3std8encoding15Windows1252Char6__initZ@Base 15 ++ _D40TypeInfo_E3std9exception14RangePrimitive6__initZ@Base 15 ++ _D40TypeInfo_E4core6stdcpp4new_11align_val_t6__initZ@Base 15 ++ _D40TypeInfo_E4core8demangle14FuncAttributes6__initZ@Base 15 ++ _D40TypeInfo_S3etc1c4odbc6odbc3210tagSQLGUID6__initZ@Base 15.2 ++ _D40TypeInfo_S3etc1c4odbc6odbc6410tagSQLGUID6__initZ@Base 15.2 ++ _D40TypeInfo_S3etc1c7sqlite314Fts5PhraseIter6__initZ@Base 15.2 ++ _D40TypeInfo_S3etc1c7sqlite314fts5_tokenizer6__initZ@Base 15.2 ++ _D40TypeInfo_S3etc1c7sqlite314sqlite3_module6__initZ@Base 15.2 ++ _D40TypeInfo_S3std3net4curl4HTTP10StatusLine6__initZ@Base 15 ++ _D40TypeInfo_S3std3uni__T9BitPackedTbVmi1ZQr6__initZ@Base 15 ++ _D40TypeInfo_S3std3uni__T9BitPackedTkVmi7ZQr6__initZ@Base 15 ++ _D40TypeInfo_S3std3uni__T9BitPackedTkVmi8ZQr6__initZ@Base 15 ++ _D40TypeInfo_S3std5array__T8AppenderTAAyaZQp6__initZ@Base 15 ++ _D40TypeInfo_S3std5range__T10OnlyResultTaZQp6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5linux4tipc9tipc_name6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5linux5input8input_id6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posix5netdb8addrinfo6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posix5netdb8protoent6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posix6signal7stack_t6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk4time7timeval6__initZ@Base 15 ++ _D40TypeInfo_S4core3sys5posixQk5ioctl6termio6__initZ@Base 15 ++ _D40TypeInfo_xAAS3std3uni17CodepointInterval6__initZ@Base 15 ++ _D40TypeInfo_xS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 ++ _D40TypeInfo_xS3std8datetime7systime7SysTime6__initZ@Base 15 ++ _D40TypeInfo_xS4core3sys5posixQk4stat6stat_t6__initZ@Base 15 ++ _D41TypeInfo_AE3std8encoding15Windows1250Char6__initZ@Base 15 ++ _D41TypeInfo_AE3std8encoding15Windows1251Char6__initZ@Base 15 ++ _D41TypeInfo_AE3std8encoding15Windows1252Char6__initZ@Base 15 ++ _D41TypeInfo_E3etc1c4curl18CurlFInfoFlagKnown6__initZ@Base 15 ++ _D41TypeInfo_E3etc1c4odbc6odbc3211SQLINTERVAL6__initZ@Base 15.2 ++ _D41TypeInfo_E3etc1c4odbc6odbc6411SQLINTERVAL6__initZ@Base 15.2 ++ _D41TypeInfo_E4core3sys5posixQk4wait8idtype_t6__initZ@Base 15 ++ _D41TypeInfo_E4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 ++ _D41TypeInfo_E4core4stdc6config12__c_longlong6__initZ@Base 15 ++ _D41TypeInfo_E4core8internal5newaa4Impl5Flags6__initZ@Base 15 ++ _D41TypeInfo_FZC3std8encoding14EncodingScheme6__initZ@Base 15 ++ _D41TypeInfo_OC4core4sync9condition9Condition6__initZ@Base 15 ++ _D41TypeInfo_PxS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 ++ _D41TypeInfo_S3std10checkedint13ProperCompare6__initZ@Base 15 ++ _D41TypeInfo_S3std11parallelism12AbstractTask6__initZ@Base 15 ++ _D41TypeInfo_S3std3uni21DecompressedIntervals6__initZ@Base 15 ++ _D41TypeInfo_S3std3uni__T9BitPackedTkVmi11ZQs6__initZ@Base 15 ++ _D41TypeInfo_S3std3uni__T9BitPackedTkVmi12ZQs6__initZ@Base 15 ++ _D41TypeInfo_S3std3uni__T9BitPackedTkVmi13ZQs6__initZ@Base 15 ++ _D41TypeInfo_S3std3uni__T9BitPackedTkVmi14ZQs6__initZ@Base 15 ++ _D41TypeInfo_S3std3uni__T9BitPackedTkVmi15ZQs6__initZ@Base 15 ++ _D41TypeInfo_S3std3uni__T9BitPackedTkVmi16ZQs6__initZ@Base 15 ++ _D41TypeInfo_S3std5regex8internal2ir8BitTable6__initZ@Base 15 ++ _D41TypeInfo_S3std5regex8internal2ir8Bytecode6__initZ@Base 15 ++ _D41TypeInfo_S3std6random18RandomCoverChoices6__initZ@Base 15 ++ _D41TypeInfo_S3std8typecons__T5TupleTiTAyaZQn6__initZ@Base 15 ++ _D41TypeInfo_S3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux5input9ff_effect6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux5input9ff_replay6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posix6signal8sigevent6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posix6signal8sigset_t6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posix6signal8sigstack6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posix9semaphore5sem_t6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posixQk6select6fd_set6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posixQk6socket6linger6__initZ@Base 15 ++ _D41TypeInfo_S4core3sys5posixQk6socket6msghdr6__initZ@Base 15 ++ _D41TypeInfo_xPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 ++ _D41TypeInfo_xS3std3net4curl4HTTP10StatusLine6__initZ@Base 15 ++ _D41TypeInfo_xS3std5range__T10OnlyResultTaZQp6__initZ@Base 15 ++ _D42TypeInfo_AS3std5regex8internal2ir8Bytecode6__initZ@Base 15 ++ _D42TypeInfo_AS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 ++ _D42TypeInfo_E3std5regex8internal2ir9RegexInfo6__initZ@Base 15 ++ _D42TypeInfo_E3std8datetime8interval9Direction6__initZ@Base 15 ++ _D42TypeInfo_E4core4stdc6config13__c_ulonglong6__initZ@Base 15 ++ _D42TypeInfo_HC4core6thread8osthread6ThreadQBd6__initZ@Base 15 ++ _D42TypeInfo_PFZC3std8encoding14EncodingScheme6__initZ@Base 15 ++ _D42TypeInfo_PxPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 ++ _D42TypeInfo_S3etc1c7sqlite316Fts5ExtensionApi6__initZ@Base 15.2 ++ _D42TypeInfo_S3etc1c7sqlite316sqlite3_snapshot6__initZ@Base 15.2 ++ _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi5ZQt6__initZ@Base 15 ++ _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi6ZQt6__initZ@Base 15 ++ _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi7ZQt6__initZ@Base 15 ++ _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi8ZQt6__initZ@Base 15 ++ _D42TypeInfo_S3std3uni__T9sliceBitsVmi0Vmi9ZQt6__initZ@Base 15 ++ _D42TypeInfo_S3std4json9JSONValue5Store6Object6__initZ@Base 15 ++ _D42TypeInfo_S3std6logger4core6Logger8LogEntry6__initZ@Base 15 ++ _D42TypeInfo_S3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5linux2fs12fstrim_range6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5linux4tipc10tipc_event6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posix4time10itimerspec6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posix6signal9siginfo_t6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posixQk4time9itimerval6__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posixQk5ioctl8termios26__initZ@Base 15 ++ _D42TypeInfo_S4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 ++ _D42TypeInfo_S4core8demangle16ManglingFlagInfo6__initZ@Base 15 ++ _D42TypeInfo_S4core8internal8spinlock8SpinLock6__initZ@Base 15 ++ _D42TypeInfo_xE4core8internal5newaa4Impl5Flags6__initZ@Base 15 ++ _D42TypeInfo_xPPS3etc1c7sqlite313sqlite3_value6__initZ@Base 15.2 ++ _D42TypeInfo_xS3std11parallelism12AbstractTask6__initZ@Base 15 ++ _D42TypeInfo_xS3std3uni21DecompressedIntervals6__initZ@Base 15 ++ _D42TypeInfo_xS3std5regex8internal2ir8BitTable6__initZ@Base 15 ++ _D42TypeInfo_xS3std5regex8internal2ir8Bytecode6__initZ@Base 15 ++ _D42TypeInfo_xS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 ++ _D43TypeInfo_AxS3std5regex8internal2ir8Bytecode6__initZ@Base 15 ++ _D43TypeInfo_AxS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 ++ _D43TypeInfo_E3etc1c4odbc8sqltypes11SQLINTERVAL6__initZ@Base 15.2 ++ _D43TypeInfo_E3std3net7isemail15EmailStatusCode6__initZ@Base 15 ++ _D43TypeInfo_E3std9algorithm10comparison6EditOp6__initZ@Base 15 ++ _D43TypeInfo_E4core6thread10threadbase8ScanType6__initZ@Base 15 ++ _D43TypeInfo_E4core8internal2gc2os11ChildStatus6__initZ@Base 15 ++ _D43TypeInfo_FS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 ++ _D43TypeInfo_OS4core8internal8spinlock8SpinLock6__initZ@Base 15 ++ _D43TypeInfo_PxS3std11parallelism12AbstractTask6__initZ@Base 15 ++ _D43TypeInfo_S2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 ++ _D43TypeInfo_S2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 ++ _D43TypeInfo_S2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 ++ _D43TypeInfo_S2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 ++ _D43TypeInfo_S3etc1c4odbc8sqltypes11DATE_STRUCT6__initZ@Base 15.2 ++ _D43TypeInfo_S3etc1c4odbc8sqltypes11TIME_STRUCT6__initZ@Base 15.2 ++ _D43TypeInfo_S3std3uni__T9sliceBitsVmi5Vmi13ZQu6__initZ@Base 15 ++ _D43TypeInfo_S3std3uni__T9sliceBitsVmi6Vmi10ZQu6__initZ@Base 15 ++ _D43TypeInfo_S3std3uni__T9sliceBitsVmi6Vmi13ZQu6__initZ@Base 15 ++ _D43TypeInfo_S3std3uni__T9sliceBitsVmi7Vmi13ZQu6__initZ@Base 15 ++ _D43TypeInfo_S3std3uni__T9sliceBitsVmi8Vmi13ZQu6__initZ@Base 15 ++ _D43TypeInfo_S3std3uni__T9sliceBitsVmi8Vmi21ZQu6__initZ@Base 15 ++ _D43TypeInfo_S3std3uni__T9sliceBitsVmi9Vmi21ZQu6__initZ@Base 15 ++ _D43TypeInfo_S3std4file__T12_DirIteratorVbi1ZQt6__initZ@Base 15 ++ _D43TypeInfo_S3std8datetime9stopwatch9StopWatch6__initZ@Base 15 ++ _D43TypeInfo_S3std8internal14unicode_tables3FCE6__initZ@Base 15 ++ _D43TypeInfo_S3std8internal14unicode_tables3SCE6__initZ@Base 15 ++ _D43TypeInfo_S3std8typecons__T5TupleTeTeTeTeZQp6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5input10ff_trigger6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5input10input_mask6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5linux5input9ff_effect1U6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posixQk8resource6rlimit6__initZ@Base 15 ++ _D43TypeInfo_S4core3sys5posixQk8resource6rusage6__initZ@Base 15 ++ _D43TypeInfo_S4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 ++ _D43TypeInfo_S4core6thread5types13ll_ThreadData6__initZ@Base 15 ++ _D43TypeInfo_xAS3std5regex8internal2ir8Bytecode6__initZ@Base 15 ++ _D43TypeInfo_xAS3std8typecons__T5TupleTkTkTkZQn6__initZ@Base 15 ++ _D43TypeInfo_xPFZC3std8encoding14EncodingScheme6__initZ@Base 15.2 ++ _D43TypeInfo_xPS3std11parallelism12AbstractTask6__initZ@Base 15 ++ _D43TypeInfo_xS3std7variant__T8VariantNVmi32ZQp6__initZ@Base 15 ++ _D44TypeInfo_DFS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 ++ _D44TypeInfo_E2rt4util7utility16__c_complex_real6__initZ@Base 15 ++ _D44TypeInfo_E3std6traits21ParameterStorageClass6__initZ@Base 15 ++ _D44TypeInfo_E4core4stdc9stdatomic12memory_order6__initZ@Base 15 ++ _D44TypeInfo_E4core6thread7context8Callable4Call6__initZ@Base 15 ++ _D44TypeInfo_OS2rt9critical_18D_CRITICAL_SECTION6__initZ@Base 15 ++ _D44TypeInfo_S3etc1c4odbc6odbc3214tagDATE_STRUCT6__initZ@Base 15.2 ++ _D44TypeInfo_S3etc1c4odbc6odbc3214tagTIME_STRUCT6__initZ@Base 15.2 ++ _D44TypeInfo_S3etc1c4odbc6odbc6414tagDATE_STRUCT6__initZ@Base 15.2 ++ _D44TypeInfo_S3etc1c4odbc6odbc6414tagTIME_STRUCT6__initZ@Base 15.2 ++ _D44TypeInfo_S3etc1c7sqlite318sqlite3_index_info6__initZ@Base 15.2 ++ _D44TypeInfo_S3etc1c7sqlite318sqlite3_io_methods6__initZ@Base 15.2 ++ _D44TypeInfo_S3gcc8sections3elf15CompilerDSOData6__initZ@Base 15 ++ _D44TypeInfo_S3gcc9backtrace18SymbolCallbackInfo6__initZ@Base 15 ++ _D44TypeInfo_S3std3uni__T9sliceBitsVmi10Vmi14ZQv6__initZ@Base 15 ++ _D44TypeInfo_S3std3uni__T9sliceBitsVmi13Vmi21ZQv6__initZ@Base 15 ++ _D44TypeInfo_S3std3uni__T9sliceBitsVmi14Vmi21ZQv6__initZ@Base 15 ++ _D44TypeInfo_S3std5regex8internal2ir10NamedGroup6__initZ@Base 15 ++ _D44TypeInfo_S3std5regex8internal6parser7CodeGen6__initZ@Base 15 ++ _D44TypeInfo_S3std5stdio4File17LockingTextWriter6__initZ@Base 15 ++ _D44TypeInfo_S3std8typecons__T11Rebindable2TaZQq6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linux5epoll11epoll_event6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linux5input11ff_envelope6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linux5input11input_event6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 ++ _D44TypeInfo_S4core3sys5posix5sched11sched_param6__initZ@Base 15 ++ _D44TypeInfo_S4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 ++ _D44TypeInfo_S4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 ++ _D44TypeInfo_S4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 ++ _D44TypeInfo_S4core6thread7context12StackContext6__initZ@Base 15 ++ _D44TypeInfo_xE3std3net7isemail15EmailStatusCode6__initZ@Base 15 ++ _D44TypeInfo_xS2rt4util7utility__T8_ComplexTdZQm6__initZ@Base 15 ++ _D44TypeInfo_xS2rt4util7utility__T8_ComplexTeZQm6__initZ@Base 15 ++ _D44TypeInfo_xS2rt4util7utility__T8_ComplexTfZQm6__initZ@Base 15 ++ _D45TypeInfo_AS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 ++ _D45TypeInfo_E2rt4util7utility17__c_complex_float6__initZ@Base 15 ++ _D45TypeInfo_E3std5regex8internal2ir11RegexOption6__initZ@Base 15 ++ _D45TypeInfo_E4core4stdc6config16__c_complex_real6__initZ@Base 15 ++ _D45TypeInfo_E4core8internal2gc8blkcache8IsMarked6__initZ@Base 15 ++ _D45TypeInfo_E4core8internal7convert11FloatFormat6__initZ@Base 15 ++ _D45TypeInfo_E6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 ++ _D45TypeInfo_S3etc1c7sqlite319sqlite3_mem_methods6__initZ@Base 15.2 ++ _D45TypeInfo_S3etc1c7sqlite319sqlite3_pcache_page6__initZ@Base 15.2 ++ _D45TypeInfo_S3etc1c7sqlite319sqlite3_vtab_cursor6__initZ@Base 15.2 ++ _D45TypeInfo_S3gcc12libbacktrace15backtrace_state6__initZ@Base 15 ++ _D45TypeInfo_S3gcc9backtrace19SymbolCallbackInfo26__initZ@Base 15 ++ _D45TypeInfo_S3std3uni__T13PackedPtrImplThVmi8ZQw6__initZ@Base 15 ++ _D45TypeInfo_S3std5regex8internal2ir11CharMatcher6__initZ@Base 15 ++ _D45TypeInfo_S3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5posix6signal11sigaction_t6__initZ@Base 15 ++ _D45TypeInfo_S4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 ++ _D45TypeInfo_S4core8internal12parseoptions6MemVal6__initZ@Base 15 ++ _D45TypeInfo_S4core8internal9container5treap4Rand6__initZ@Base 15 ++ _D45TypeInfo_xDFS3std3net4curl4HTTP10StatusLineZv6__initZ@Base 15 ++ _D45TypeInfo_xS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 ++ _D46TypeInfo_AxS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 ++ _D46TypeInfo_E2rt4util7utility18__c_complex_double6__initZ@Base 15 ++ _D46TypeInfo_E3std11parallelism8TaskPool9PoolState6__initZ@Base 15 ++ _D46TypeInfo_E4core4stdc6config17__c_complex_float6__initZ@Base 15 ++ _D46TypeInfo_HAyaPFZC3std8encoding14EncodingScheme6__initZ@Base 15 ++ _D46TypeInfo_S3std3uni7unicode18hangulSyllableType6__initZ@Base 15 ++ _D46TypeInfo_S3std3uni__T13PackedPtrImplTtVmi16ZQx6__initZ@Base 15 ++ _D46TypeInfo_S3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 ++ _D46TypeInfo_S3std5range__T4iotaTmTmZQkFmmZ6Result6__initZ@Base 15 ++ _D46TypeInfo_S3std6format4spec__T10FormatSpecTaZQp6__initZ@Base 15 ++ _D46TypeInfo_S3std6traits23__InoutWorkaroundStruct6__initZ@Base 15 ++ _D46TypeInfo_S3std8internal14unicode_tables6blocks6__initZ@Base 15 ++ _D46TypeInfo_S3std8internal14unicode_tables6hangul6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5linux2fs16file_clone_range6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5linux5input13input_absinfo6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 ++ _D46TypeInfo_S4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 ++ _D46TypeInfo_S4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 ++ _D46TypeInfo_S4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 ++ _D46TypeInfo_xAS3std5regex8internal2ir10NamedGroup6__initZ@Base 15 ++ _D46TypeInfo_xS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 ++ _D46TypeInfo_xS3std8typecons__T5TupleTAxaTQeTQhZQr6__initZ@Base 15 ++ _D47TypeInfo_AC4core6thread10threadbase10ThreadBase6__initZ@Base 15 ++ _D47TypeInfo_AS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 ++ _D47TypeInfo_AxS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 ++ _D47TypeInfo_E3std7variant__T8VariantNVmi32ZQp4OpID6__initZ@Base 15 ++ _D47TypeInfo_E3std8internal4test10dummyrange6Length6__initZ@Base 15 ++ _D47TypeInfo_E3std9algorithm8mutation12SwapStrategy6__initZ@Base 15 ++ _D47TypeInfo_E4core4stdc6config18__c_complex_double6__initZ@Base 15 ++ _D47TypeInfo_E4core6stdcpp6string16DefaultConstruct6__initZ@Base 15 ++ _D47TypeInfo_E4core6stdcpp6vector16DefaultConstruct6__initZ@Base 15 ++ _D47TypeInfo_E4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 ++ _D47TypeInfo_E6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 ++ _D47TypeInfo_S3etc1c4odbc6odbc3217tagSQL_DAY_SECOND6__initZ@Base 15.2 ++ _D47TypeInfo_S3etc1c4odbc6odbc3217tagSQL_YEAR_MONTH6__initZ@Base 15.2 ++ _D47TypeInfo_S3etc1c4odbc6odbc6417tagSQL_DAY_SECOND6__initZ@Base 15.2 ++ _D47TypeInfo_S3etc1c4odbc6odbc6417tagSQL_YEAR_MONTH6__initZ@Base 15.2 ++ _D47TypeInfo_S3etc1c7sqlite321sqlite3_mutex_methods6__initZ@Base 15.2 ++ _D47TypeInfo_S3std5array__T15InPlaceAppenderTAxaZQw6__initZ@Base 15 ++ _D47TypeInfo_S3std5array__T15InPlaceAppenderTAyaZQw6__initZ@Base 15 ++ _D47TypeInfo_S3std5array__T15InPlaceAppenderTAyuZQw6__initZ@Base 15 ++ _D47TypeInfo_S3std5array__T15InPlaceAppenderTAywZQw6__initZ@Base 15 ++ _D47TypeInfo_S3std5array__T15InPlaceAppenderTyAaZQw6__initZ@Base 15 ++ _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki160ZQr6__initZ@Base 15 ++ _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki224ZQr6__initZ@Base 15 ++ _D47TypeInfo_S3std6digest3sha__T3SHAVki512Vki256ZQr6__initZ@Base 15 ++ _D47TypeInfo_S3std8datetime8timezone13TZConversions6__initZ@Base 15 ++ _D47TypeInfo_S3std8internal14unicode_tables7scripts6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 ++ _D47TypeInfo_S4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 ++ _D47TypeInfo_S4core6thread8osthread6Thread8Priority6__initZ@Base 15 ++ _D47TypeInfo_S6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 ++ _D47TypeInfo_xAS3std5regex8internal2ir11CharMatcher6__initZ@Base 15 ++ _D47TypeInfo_xS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 ++ _D48TypeInfo_AxS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 ++ _D48TypeInfo_E3std4uuid20UUIDParsingException6Reason6__initZ@Base 15 ++ _D48TypeInfo_S3etc1c4odbc8sqltypes16TIMESTAMP_STRUCT6__initZ@Base 15.2 ++ _D48TypeInfo_S3etc1c7sqlite322sqlite3_pcache_methods6__initZ@Base 15.2 ++ _D48TypeInfo_S3etc1c7sqlite322sqlite3_rtree_geometry6__initZ@Base 15.2 ++ _D48TypeInfo_S3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 ++ _D48TypeInfo_S3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 ++ _D48TypeInfo_S3std5array__T15InPlaceAppenderTAAyaZQx6__initZ@Base 15 ++ _D48TypeInfo_S3std5range__T4iotaTmTxmZQlFmxmZ6Result6__initZ@Base 15 ++ _D48TypeInfo_S3std5range__T6RepeatTaZQk11DollarToken6__initZ@Base 15 ++ _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki224ZQs6__initZ@Base 15 ++ _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki256ZQs6__initZ@Base 15 ++ _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki384ZQs6__initZ@Base 15 ++ _D48TypeInfo_S3std6digest3sha__T3SHAVki1024Vki512ZQs6__initZ@Base 15 ++ _D48TypeInfo_S3std8internal14unicode_tables8uniProps6__initZ@Base 15 ++ _D48TypeInfo_S3std8internal4test10dummyrange7TestFoo6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 ++ _D48TypeInfo_S4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 ++ _D48TypeInfo_xAS3std4file15DirIteratorImpl9DirHandle6__initZ@Base 15 ++ _D48TypeInfo_yC3std8datetime8timezone13PosixTimeZone6__initZ@Base 15 ++ _D49TypeInfo_E3std8internal4test10dummyrange8ReturnBy6__initZ@Base 15 ++ _D49TypeInfo_E3std8typecons24RefCountedAutoInitialize6__initZ@Base 15 ++ _D49TypeInfo_E3std8typecons__T4FlagVAyaa4_7472795fZQv6__initZ@Base 15 ++ _D49TypeInfo_E4core3sys5linux10perf_event10perf_hw_id6__initZ@Base 15 ++ _D49TypeInfo_E4core6thread5fiber4base9FiberBase5State6__initZ@Base 15 ++ _D49TypeInfo_S3etc1c4odbc6odbc3219tagTIMESTAMP_STRUCT6__initZ@Base 15.2 ++ _D49TypeInfo_S3etc1c4odbc6odbc6419tagTIMESTAMP_STRUCT6__initZ@Base 15.2 ++ _D49TypeInfo_S3etc1c7sqlite323sqlite3_pcache_methods26__initZ@Base 15.2 ++ _D49TypeInfo_S3std3uni18simpleCaseFoldingsFNfwZ5Range6__initZ@Base 15 ++ _D49TypeInfo_S3std5range__T6ChunksTAhZQl11DollarToken6__initZ@Base 15 ++ _D49TypeInfo_S3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 ++ _D49TypeInfo_S3std8internal4math11biguintcore7BigUint6__initZ@Base 15 ++ _D49TypeInfo_S3std8typecons__T5TupleTC8TypeInfoTPvZQv6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 ++ _D49TypeInfo_S4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 ++ _D49TypeInfo_xS3gcc6unwind7generic17_Unwind_Exception6__initZ@Base 15 ++ _D49TypeInfo_xS3std3uni__T8CowArrayTSQwQu8GcPolicyZQz6__initZ@Base 15 ++ _D4core10checkedint11__moduleRefZ@Base 15 ++ _D4core10checkedint12__ModuleInfoZ@Base 15 ++ _D4core13interpolation11__moduleRefZ@Base 15 ++ _D4core13interpolation12__ModuleInfoZ@Base 15 ++ _D4core13interpolation16__getEmptyStringFNaNbNiNfZAya@Base 15 ++ _D4core13interpolation19InterpolationFooter6__initZ@Base 15 ++ _D4core13interpolation19InterpolationHeader6__initZ@Base 15 ++ _D4core2gc11gcinterface11__moduleRefZ@Base 15 ++ _D4core2gc11gcinterface12__ModuleInfoZ@Base 15 ++ _D4core2gc11gcinterface2GC11__InterfaceZ@Base 15 ++ _D4core2gc11gcinterface4Root6__initZ@Base 15 ++ _D4core2gc11gcinterface5Range11__xopEqualsMxFKxSQBuQBsQBsQBiZb@Base 15 ++ _D4core2gc11gcinterface5Range6__initZ@Base 15 ++ _D4core2gc11gcinterface5Range8opEqualsMxFNbMxSQBsQBqQBqQBgZb@Base 15 ++ _D4core2gc11gcinterface5Range9__xtoHashFNbNeKxSQBtQBrQBrQBhZm@Base 15 ++ _D4core2gc6config11PrettyBytes6__initZ@Base 15 ++ _D4core2gc6config11__moduleRefZ@Base 15 ++ _D4core2gc6config11prettyBytesFNaNbNiKmZa@Base 15 ++ _D4core2gc6config12__ModuleInfoZ@Base 15 ++ _D4core2gc6config18bytes2prettyStructFNaNbNimZSQBtQBrQBr11PrettyBytes@Base 15 ++ _D4core2gc6config6Config10initializeMFNbNiZb@Base 15 ++ _D4core2gc6config6Config11__xopEqualsMxFKxSQBpQBnQBnQBjZb@Base 15 ++ _D4core2gc6config6Config4helpMFNbNiZv@Base 15 ++ _D4core2gc6config6Config6__initZ@Base 15 ++ _D4core2gc6config6Config9__xtoHashFNbNeKxSQBoQBmQBmQBiZm@Base 15 ++ _D4core2gc6config6Config9errorNameMFNbNiZAya@Base 15 ++ _D4core2gc6configQhSQsQpQo6Config@Base 15 ++ _D4core2gc8registry11__moduleRefZ@Base 15 ++ _D4core2gc8registry12__ModuleInfoZ@Base 15 ++ _D4core2gc8registry16createGCInstanceFAyaZCQBpQBn11gcinterface2GC@Base 15 ++ _D4core2gc8registry17registerGCFactoryFNbNiAyaPFZCQBwQBu11gcinterface2GCZv@Base 15 ++ _D4core2gc8registry21registeredGCFactoriesFNbNiMiZxASQBzQBxQBx5Entry@Base 15 ++ _D4core2gc8registry5Entry11__xopEqualsMxFKxSQBqQBoQBoQBiZb@Base 15 ++ _D4core2gc8registry5Entry6__initZ@Base 15 ++ _D4core2gc8registry5Entry9__xtoHashFNbNeKxSQBpQBnQBnQBhZm@Base 15 ++ _D4core2gc8registry7entriesASQBbQzQy5Entry@Base 15 ++ _D4core3sys3elf10Elf32_Ehdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf32_Move6__initZ@Base 15 ++ _D4core3sys3elf10Elf32_Phdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf32_Rela6__initZ@Base 15 ++ _D4core3sys3elf10Elf32_Shdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Ehdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Move6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Phdr6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Rela6__initZ@Base 15 ++ _D4core3sys3elf10Elf64_Shdr6__initZ@Base 15 ++ _D4core3sys3elf11Elf32_gptab10_gt_header6__initZ@Base 15 ++ _D4core3sys3elf11Elf32_gptab6__initZ@Base 15 ++ _D4core3sys3elf11Elf32_gptab9_gt_entry6__initZ@Base 15 ++ _D4core3sys3elf11Elf_Options6__initZ@Base 15 ++ _D4core3sys3elf11__moduleRefZ@Base 15 ++ _D4core3sys3elf12Elf32_Verdef6__initZ@Base 15 ++ _D4core3sys3elf12Elf64_Verdef6__initZ@Base 15 ++ _D4core3sys3elf12__ModuleInfoZ@Base 15 ++ _D4core3sys3elf13Elf32_RegInfo6__initZ@Base 15 ++ _D4core3sys3elf13Elf32_Syminfo6__initZ@Base 15 ++ _D4core3sys3elf13Elf32_Verdaux6__initZ@Base 15 ++ _D4core3sys3elf13Elf32_Vernaux6__initZ@Base 15 ++ _D4core3sys3elf13Elf32_Verneed6__initZ@Base 15 ++ _D4core3sys3elf13Elf64_Syminfo6__initZ@Base 15 ++ _D4core3sys3elf13Elf64_Verdaux6__initZ@Base 15 ++ _D4core3sys3elf13Elf64_Vernaux6__initZ@Base 15 ++ _D4core3sys3elf13Elf64_Verneed6__initZ@Base 15 ++ _D4core3sys3elf14Elf_Options_Hw6__initZ@Base 15 ++ _D4core3sys3elf9Elf32_Lib6__initZ@Base 15 ++ _D4core3sys3elf9Elf32_Rel6__initZ@Base 15 ++ _D4core3sys3elf9Elf32_Sym6__initZ@Base 15 ++ _D4core3sys3elf9Elf64_Lib6__initZ@Base 15 ++ _D4core3sys3elf9Elf64_Rel6__initZ@Base 15 ++ _D4core3sys3elf9Elf64_Sym6__initZ@Base 15 ++ _D4core3sys5linux10perf_event11__moduleRefZ@Base 15 ++ _D4core3sys5linux10perf_event12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10exclude_hvMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10namespacesMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10namespacesMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr10precise_ipMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr11use_clockidMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12__reserved_1MxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_hostMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_idleMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12exclude_userMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr12inherit_statMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr13exclude_guestMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr13sample_id_allMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14context_switchMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14context_switchMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14enable_on_execMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14exclude_kernelMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr14write_backwardMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr22exclude_callchain_userMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr24exclude_callchain_kernelMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4commMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4commMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4freqMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4freqMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4mmapMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4mmapMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4taskMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr4taskMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr5mmap2MUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr5mmap2MxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr6pinnedMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr6pinnedMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr7inheritMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr7inheritMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr8disabledMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr8disabledMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9comm_execMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9comm_execMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9exclusiveMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9mmap_dataMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9watermarkMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_attr9watermarkMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry4typeMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry4typeMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry5abortMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry5abortMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry5in_txMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry5in_txMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry6cyclesMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry7mispredMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry7mispredMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry8reservedMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry8reservedMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry9predictedMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_branch_entry9predictedMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src10mem_remoteMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src10mem_snoopxMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src11mem_lvl_numMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src6mem_opMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src7mem_lvlMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_dtlbMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_lockMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src8mem_rsvdMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event17perf_mem_data_src9mem_snoopMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page11cap_____resMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page13cap_user_timeMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page14cap_user_rdpmcMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page18cap_user_time_zeroMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page22cap_bit0_is_deprecatedMxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MUNaNbNdNiNfmZv@Base 15 ++ _D4core3sys5linux10perf_event20perf_event_mmap_page8cap_bit0MxUNaNbNdNiNfZm@Base 15 ++ _D4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 ++ _D4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 ++ _D4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 ++ _D4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 ++ _D4core3sys5linux17input_event_codes11__moduleRefZ@Base 15 ++ _D4core3sys5linux17input_event_codes12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux2fs11__moduleRefZ@Base 15 ++ _D4core3sys5linux2fs12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux2fs12fstrim_range6__initZ@Base 15 ++ _D4core3sys5linux2fs13inodes_stat_t6__initZ@Base 15 ++ _D4core3sys5linux2fs16file_clone_range6__initZ@Base 15 ++ _D4core3sys5linux2fs17file_dedupe_range6__initZ@Base 15 ++ _D4core3sys5linux2fs17files_stat_struct6__initZ@Base 15 ++ _D4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 ++ _D4core3sys5linux2fs7fsxattr6__initZ@Base 15 ++ _D4core3sys5linux3elf10Elf32_Nhdr6__initZ@Base 15 ++ _D4core3sys5linux3elf10Elf64_Nhdr6__initZ@Base 15 ++ _D4core3sys5linux3elf11__moduleRefZ@Base 15 ++ _D4core3sys5linux3elf12Elf32_auxv_t5_a_un6__initZ@Base 15 ++ _D4core3sys5linux3elf12Elf32_auxv_t6__initZ@Base 15 ++ _D4core3sys5linux3elf12Elf64_auxv_t5_a_un6__initZ@Base 15 ++ _D4core3sys5linux3elf12Elf64_auxv_t6__initZ@Base 15 ++ _D4core3sys5linux3elf12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux3elf9Elf32_Dyn5_d_un6__initZ@Base 15 ++ _D4core3sys5linux3elf9Elf32_Dyn6__initZ@Base 15 ++ _D4core3sys5linux3elf9Elf64_Dyn5_d_un6__initZ@Base 15 ++ _D4core3sys5linux3elf9Elf64_Dyn6__initZ@Base 15 ++ _D4core3sys5linux3err11__moduleRefZ@Base 15 ++ _D4core3sys5linux3err12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux4link11__moduleRefZ@Base 15 ++ _D4core3sys5linux4link12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux4link12dl_phdr_info6__initZ@Base 15 ++ _D4core3sys5linux4link7r_debug6__initZ@Base 15 ++ _D4core3sys5linux4link8link_map6__initZ@Base 15 ++ _D4core3sys5linux4time11__moduleRefZ@Base 15 ++ _D4core3sys5linux4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux4tipc10tipc_event6__initZ@Base 15 ++ _D4core3sys5linux4tipc11__moduleRefZ@Base 15 ++ _D4core3sys5linux4tipc11tipc_portid6__initZ@Base 15 ++ _D4core3sys5linux4tipc11tipc_subscr6__initZ@Base 15 ++ _D4core3sys5linux4tipc12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 ++ _D4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 ++ _D4core3sys5linux4tipc13sockaddr_tipc6__initZ@Base 15 ++ _D4core3sys5linux4tipc13tipc_name_seq6__initZ@Base 15 ++ _D4core3sys5linux4tipc9tipc_name6__initZ@Base 15 ++ _D4core3sys5linux5dlfcn10Dl_serinfo6__initZ@Base 15 ++ _D4core3sys5linux5dlfcn10Dl_serpath6__initZ@Base 15 ++ _D4core3sys5linux5dlfcn11__moduleRefZ@Base 15 ++ _D4core3sys5linux5dlfcn12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5epoll11__moduleRefZ@Base 15 ++ _D4core3sys5linux5epoll11epoll_event6__initZ@Base 15 ++ _D4core3sys5linux5epoll12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5epoll12epoll_data_t6__initZ@Base 15 ++ _D4core3sys5linux5errno11__moduleRefZ@Base 15 ++ _D4core3sys5linux5errno12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5fcntl11__moduleRefZ@Base 15 ++ _D4core3sys5linux5fcntl12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5input10ff_trigger6__initZ@Base 15 ++ _D4core3sys5linux5input10input_mask6__initZ@Base 15 ++ _D4core3sys5linux5input11__moduleRefZ@Base 15 ++ _D4core3sys5linux5input11ff_envelope6__initZ@Base 15 ++ _D4core3sys5linux5input11input_event6__initZ@Base 15 ++ _D4core3sys5linux5input12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5input13input_absinfo6__initZ@Base 15 ++ _D4core3sys5linux5input14ff_ramp_effect6__initZ@Base 15 ++ _D4core3sys5linux5input16ff_rumble_effect6__initZ@Base 15 ++ _D4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 ++ _D4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 ++ _D4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 ++ _D4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 ++ _D4core3sys5linux5input8input_id6__initZ@Base 15 ++ _D4core3sys5linux5input9ff_effect1U6__initZ@Base 15 ++ _D4core3sys5linux5input9ff_effect6__initZ@Base 15 ++ _D4core3sys5linux5input9ff_replay6__initZ@Base 15 ++ _D4core3sys5linux5sched11__moduleRefZ@Base 15 ++ _D4core3sys5linux5sched12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5sched9cpu_set_t6__initZ@Base 15 ++ _D4core3sys5linux5stdio11__moduleRefZ@Base 15 ++ _D4core3sys5linux5stdio12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 ++ _D4core3sys5linux6config11__moduleRefZ@Base 15 ++ _D4core3sys5linux6config12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux6string11__moduleRefZ@Base 15 ++ _D4core3sys5linux6string12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux6uinput11__moduleRefZ@Base 15 ++ _D4core3sys5linux6uinput12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux6uinput12uinput_setup6__initZ@Base 15 ++ _D4core3sys5linux6uinput15uinput_ff_erase6__initZ@Base 15 ++ _D4core3sys5linux6uinput15uinput_user_dev6__initZ@Base 15 ++ _D4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 ++ _D4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 ++ _D4core3sys5linux6unistd11__moduleRefZ@Base 15 ++ _D4core3sys5linux6unistd12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7ifaddrs11__moduleRefZ@Base 15 ++ _D4core3sys5linux7ifaddrs12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7ifaddrsQi6__initZ@Base 15 ++ _D4core3sys5linux7netinet3in_11IN_BADCLASSFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_11__moduleRefZ@Base 15 ++ _D4core3sys5linux7netinet3in_12IN_MULTICASTFNbNikZb@Base 15 ++ _D4core3sys5linux7netinet3in_12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7netinet3in_15IN_EXPERIMENTALFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_18IN6_ARE_ADDR_EQUALFNaNbNiNfPSQCgQCe5posixQCdQBy8in6_addrQBdZb@Base 15 ++ _D4core3sys5linux7netinet3in_9IN_CLASSAFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_9IN_CLASSBFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_9IN_CLASSCFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3in_9IN_CLASSDFNaNbNiNfkZb@Base 15 ++ _D4core3sys5linux7netinet3tcp11__moduleRefZ@Base 15 ++ _D4core3sys5linux7netinet3tcp12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7termios11__moduleRefZ@Base 15 ++ _D4core3sys5linux7termios12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux7timerfd11__moduleRefZ@Base 15 ++ _D4core3sys5linux7timerfd12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux8execinfo11__moduleRefZ@Base 15 ++ _D4core3sys5linux8execinfo12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux8io_uring11__moduleRefZ@Base 15 ++ _D4core3sys5linux8io_uring12__ModuleInfoZ@Base 15 ++ _D4core3sys5linux8io_uring12io_uring_cqe6__initZ@Base 15 ++ _D4core3sys5linux8io_uring12io_uring_sqe6__initZ@Base 15 ++ _D4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 ++ _D4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 ++ _D4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 ++ _D4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 ++ _D4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 ++ _D4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 ++ _D4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 ++ _D4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 ++ _D4core3sys5linuxQg6if_arp11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQg6if_arp12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQg6if_arp6arphdr6__initZ@Base 15 ++ _D4core3sys5linuxQg6if_arp6arpreq6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 ++ _D4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 ++ _D4core3sys5linuxQk4auxv11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk4auxv12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk4file11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk4file12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk4mman11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk4mman12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk4time10timerclearFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZv@Base 15 ++ _D4core3sys5linuxQk4time10timerissetFNaNbNiNfPSQBtQBr5posixQCaQBr7timevalZi@Base 15 ++ _D4core3sys5linuxQk4time11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk4time8timeraddFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 ++ _D4core3sys5linuxQk4time8timersubFNaNbNiNfxPSQBrQBp5posixQByQBp7timevalxQBdPSQCxQCvQBgQDbQCsQBdZv@Base 15 ++ _D4core3sys5linuxQk5mount11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk5mount12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk5prctl11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk5prctl12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk5prctl12prctl_mm_map6__initZ@Base 15 ++ _D4core3sys5linuxQk5xattr11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk5xattr12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk6procfs11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk6procfs12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk6socket11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk6socket12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk7eventfd11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk7eventfd12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk7inotify11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk7inotify12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk7inotify13inotify_event14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 ++ _D4core3sys5linuxQk7inotify13inotify_event8opAssignMFNaNbNcNiNjNeSQCmQCkQCjQCqQChQCcZQu@Base 15 ++ _D4core3sys5linuxQk7sysinfo11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk7sysinfo12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk7sysinfo8sysinfo_6__initZ@Base 15 ++ _D4core3sys5linuxQk8signalfd11__moduleRefZ@Base 15 ++ _D4core3sys5linuxQk8signalfd12__ModuleInfoZ@Base 15 ++ _D4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 ++ _D4core3sys5posix3aio11__moduleRefZ@Base 15 ++ _D4core3sys5posix3aio12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix3aio5aiocb6__initZ@Base 15 ++ _D4core3sys5posix3aio7aiocb646__initZ@Base 15 ++ _D4core3sys5posix3grp11__moduleRefZ@Base 15 ++ _D4core3sys5posix3grp12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix3grp5group6__initZ@Base 15 ++ _D4core3sys5posix3net3if_11__moduleRefZ@Base 15 ++ _D4core3sys5posix3net3if_12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix3net3if_14if_nameindex_t6__initZ@Base 15 ++ _D4core3sys5posix3pwd11__moduleRefZ@Base 15 ++ _D4core3sys5posix3pwd12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix3pwd6passwd6__initZ@Base 15 ++ _D4core3sys5posix4arpa4inet11__moduleRefZ@Base 15 ++ _D4core3sys5posix4arpa4inet12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix4arpa4inet7in_addr6__initZ@Base 15 ++ _D4core3sys5posix4poll11__moduleRefZ@Base 15 ++ _D4core3sys5posix4poll12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix4poll6pollfd6__initZ@Base 15 ++ _D4core3sys5posix4stdc4time11__moduleRefZ@Base 15 ++ _D4core3sys5posix4stdc4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix4stdc4time2tm6__initZ@Base 15 ++ _D4core3sys5posix4time10itimerspec6__initZ@Base 15 ++ _D4core3sys5posix4time11__moduleRefZ@Base 15 ++ _D4core3sys5posix4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix4time8timespec6__initZ@Base 15 ++ _D4core3sys5posix5dlfcn11__moduleRefZ@Base 15 ++ _D4core3sys5posix5dlfcn12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5dlfcn7Dl_info6__initZ@Base 15 ++ _D4core3sys5posix5fcntl11__moduleRefZ@Base 15 ++ _D4core3sys5posix5fcntl12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5fcntl5flock6__initZ@Base 15 ++ _D4core3sys5posix5iconv11__moduleRefZ@Base 15 ++ _D4core3sys5posix5iconv12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5netdb11__moduleRefZ@Base 15 ++ _D4core3sys5posix5netdb12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5netdb6netent6__initZ@Base 15 ++ _D4core3sys5posix5netdb7hostent6__initZ@Base 15 ++ _D4core3sys5posix5netdb7hostent6h_addrMUNdZPa@Base 15 ++ _D4core3sys5posix5netdb7servent6__initZ@Base 15 ++ _D4core3sys5posix5netdb8addrinfo6__initZ@Base 15 ++ _D4core3sys5posix5netdb8protoent6__initZ@Base 15 ++ _D4core3sys5posix5sched11__moduleRefZ@Base 15 ++ _D4core3sys5posix5sched11sched_param6__initZ@Base 15 ++ _D4core3sys5posix5sched12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5spawn11__moduleRefZ@Base 15 ++ _D4core3sys5posix5spawn12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 ++ _D4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 ++ _D4core3sys5posix5stdio11__moduleRefZ@Base 15 ++ _D4core3sys5posix5stdio12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5utime11__moduleRefZ@Base 15 ++ _D4core3sys5posix5utime12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix5utime7utimbuf6__initZ@Base 15 ++ _D4core3sys5posix6config11__moduleRefZ@Base 15 ++ _D4core3sys5posix6config12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6dirent11__moduleRefZ@Base 15 ++ _D4core3sys5posix6dirent12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6dirent3DIR6__initZ@Base 15 ++ _D4core3sys5posix6direntQh6__initZ@Base 15 ++ _D4core3sys5posix6libgen11__moduleRefZ@Base 15 ++ _D4core3sys5posix6libgen12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6locale11__moduleRefZ@Base 15 ++ _D4core3sys5posix6locale12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6locale5lconv6__initZ@Base 15 ++ _D4core3sys5posix6mqueue11__moduleRefZ@Base 15 ++ _D4core3sys5posix6mqueue12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6mqueue7mq_attr6__initZ@Base 15 ++ _D4core3sys5posix6setjmp11__moduleRefZ@Base 15 ++ _D4core3sys5posix6setjmp12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6setjmp13__jmp_buf_tag6__initZ@Base 15 ++ _D4core3sys5posix6signal11__moduleRefZ@Base 15 ++ _D4core3sys5posix6signal11sigaction_t6__initZ@Base 15 ++ _D4core3sys5posix6signal12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6signal6sigval6__initZ@Base 15 ++ _D4core3sys5posix6signal7stack_t6__initZ@Base 15 ++ _D4core3sys5posix6signal8SIGRTMAXUNbNdNiZ3sigi@Base 15 ++ _D4core3sys5posix6signal8SIGRTMINUNbNdNiZ3sigi@Base 15 ++ _D4core3sys5posix6signal8sigevent6__initZ@Base 15 ++ _D4core3sys5posix6signal8sigset_t6__initZ@Base 15 ++ _D4core3sys5posix6signal8sigstack6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t6__initZ@Base 15 ++ _D4core3sys5posix6signal9siginfo_t6si_pidMUNbNcNdNiNjZi@Base 15 ++ _D4core3sys5posix6signal9siginfo_t6si_uidMUNbNcNdNiNjZk@Base 15 ++ _D4core3sys5posix6signal9siginfo_t7si_addrMUNbNcNdNiNjZPv@Base 15 ++ _D4core3sys5posix6signal9siginfo_t7si_bandMUNbNcNdNiNjZl@Base 15 ++ _D4core3sys5posix6signal9siginfo_t8si_valueMUNbNcNdNiNjZSQCdQCbQCaQBx6sigval@Base 15 ++ _D4core3sys5posix6signal9siginfo_t9si_statusMUNbNcNdNiNjZi@Base 15 ++ _D4core3sys5posix6stdlib11__moduleRefZ@Base 15 ++ _D4core3sys5posix6stdlib12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6string11__moduleRefZ@Base 15 ++ _D4core3sys5posix6string12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6syslog11__moduleRefZ@Base 15 ++ _D4core3sys5posix6syslog12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix6unistd11__moduleRefZ@Base 15 ++ _D4core3sys5posix6unistd12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7netinet3in_11__moduleRefZ@Base 15 ++ _D4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 ++ _D4core3sys5posix7netinet3in_12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 ++ _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_LOOPBACKFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4COMPATFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_20IN6_IS_ADDR_V4MAPPEDFNaNbNiMxPSQCiQCgQCfQCcQBx8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_LINKLOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MC_GLOBALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_MULTICASTFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_21IN6_IS_ADDR_SITELOCALFNaNbNiMxPSQCjQChQCgQCdQBy8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_MC_ORGLOCALFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_23IN6_IS_ADDR_UNSPECIFIEDFNaNbNiMxPSQClQCjQCiQCfQCa8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_LINKLOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_NODELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_24IN6_IS_ADDR_MC_SITELOCALFNaNbNiMxPSQCmQCkQCjQCgQCb8in6_addrZi@Base 15 ++ _D4core3sys5posix7netinet3in_8in6_addr6__initZ@Base 15 ++ _D4core3sys5posix7netinet3in_9ipv6_mreq6__initZ@Base 15 ++ _D4core3sys5posix7netinet3tcp11__moduleRefZ@Base 15 ++ _D4core3sys5posix7netinet3tcp12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7pthread11__moduleRefZ@Base 15 ++ _D4core3sys5posix7pthread12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 ++ _D4core3sys5posix7pthread15pthread_cleanup__T3popZQfMFNbiZv@Base 15 ++ _D4core3sys5posix7pthread15pthread_cleanup__T4pushHTPUNaNbNiPvZvZQuMFNbNiQvQpZv@Base 15 ++ _D4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 ++ _D4core3sys5posix7strings11__moduleRefZ@Base 15 ++ _D4core3sys5posix7strings12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7termios11__moduleRefZ@Base 15 ++ _D4core3sys5posix7termios12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix7termiosQi6__initZ@Base 15 ++ _D4core3sys5posix8inttypes11__moduleRefZ@Base 15 ++ _D4core3sys5posix8inttypes12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix8ucontext10mcontext_t6__initZ@Base 15 ++ _D4core3sys5posix8ucontext10ucontext_t6__initZ@Base 15 ++ _D4core3sys5posix8ucontext11__moduleRefZ@Base 15 ++ _D4core3sys5posix8ucontext12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix8ucontext12_libc_fpxreg6__initZ@Base 15 ++ _D4core3sys5posix8ucontext12_libc_xmmreg6__initZ@Base 15 ++ _D4core3sys5posix8ucontext13_libc_fpstate6__initZ@Base 15 ++ _D4core3sys5posix9semaphore11__moduleRefZ@Base 15 ++ _D4core3sys5posix9semaphore12__ModuleInfoZ@Base 15 ++ _D4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 ++ _D4core3sys5posix9semaphore5sem_t6__initZ@Base 15 ++ _D4core3sys5posixQk2un11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk2un11sockaddr_un6__initZ@Base 15 ++ _D4core3sys5posixQk2un12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3ipc11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk3ipc12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3ipc8ipc_perm6__initZ@Base 15 ++ _D4core3sys5posixQk3msg11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk3msg12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3msg6msgbuf6__initZ@Base 15 ++ _D4core3sys5posixQk3msg7msginfo6__initZ@Base 15 ++ _D4core3sys5posixQk3msg8msqid_ds6__initZ@Base 15 ++ _D4core3sys5posixQk3shm11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk3shm12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3shm8shmid_ds6__initZ@Base 15 ++ _D4core3sys5posixQk3uio11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk3uio12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk3uio5iovec6__initZ@Base 15 ++ _D4core3sys5posixQk4mman11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk4mman12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk4stat11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk4stat12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk4stat6stat_t6__initZ@Base 15 ++ _D4core3sys5posixQk4stat7S_ISBLKFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat7S_ISCHRFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat7S_ISDIRFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat7S_ISLNKFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat7S_ISREGFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat8S_ISFIFOFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat8S_ISSOCKFNbNikZb@Base 15 ++ _D4core3sys5posixQk4stat8S_ISTYPEFNbNikkZb@Base 15 ++ _D4core3sys5posixQk4time11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk4time12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk4time7timeval6__initZ@Base 15 ++ _D4core3sys5posixQk4time9itimerval6__initZ@Base 15 ++ _D4core3sys5posixQk4wait10WIFSTOPPEDFNaNbNiNfiZb@Base 15 ++ _D4core3sys5posixQk4wait10__WTERMSIGFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait11WEXITSTATUSFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait11WIFSIGNALEDFNaNbNiNfiZb@Base 15 ++ _D4core3sys5posixQk4wait11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk4wait12WIFCONTINUEDFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk4wait8WSTOPSIGFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait8WTERMSIGFNaNbNiNfiZi@Base 15 ++ _D4core3sys5posixQk4wait9WIFEXITEDFNaNbNiNfiZb@Base 15 ++ _D4core3sys5posixQk5filio11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk5filio12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk5ioctl11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk5ioctl12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk5ioctl3_IOFNbNiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl6termio6__initZ@Base 15 ++ _D4core3sys5posixQk5ioctl7_IOC_NRFNbNiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl7winsize6__initZ@Base 15 ++ _D4core3sys5posixQk5ioctl8_IOC_DIRFNbNiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl8termios26__initZ@Base 15 ++ _D4core3sys5posixQk5ioctl9_IOC_SIZEFNbNiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl9_IOC_TYPEFNbNiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTG2kZQkFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTPaZQjFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTPmZQjFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTiZQiFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTkZQiFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTmZQiFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOCTnZQiFNaNbNiNfiiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTG2kZQkFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTPmZQjFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBf5linux5input8input_idZQBjFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTiZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTkZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IORTmZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTG2kZQkFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTPaZQjFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input10input_maskZQBmFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input18input_keymap_entryZQBuFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux5input9ff_effectZQBkFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput12uinput_setupZQBpFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput15uinput_ff_eraseZQBsFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_abs_setupZQBtFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBf5linux6uinput16uinput_ff_uploadZQBtFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTSQBhQBfQBeQBlQBc8termios2ZQBgFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTiZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTkZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T4_IOWTmZQiFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput15uinput_ff_eraseZQBtFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5ioctl__T5_IOWRTSQBiQBg5linux6uinput16uinput_ff_uploadZQBuFNaNbNiNfiiZi@Base 15 ++ _D4core3sys5posixQk5types11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk5types12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk5types14pthread_attr_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types14pthread_cond_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 ++ _D4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 ++ _D4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 ++ _D4core3sys5posixQk6ioccom11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk6ioccom12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk6select11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk6select12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk6select6FD_CLRFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 ++ _D4core3sys5posixQk6select6FD_SETFNaNbNiiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 ++ _D4core3sys5posixQk6select6fd_set6__initZ@Base 15 ++ _D4core3sys5posixQk6select7FD_ZEROFNaNbNiPSQBpQBnQBmQBtQBk6fd_setZv@Base 15 ++ _D4core3sys5posixQk6select7__FDELTFNaNbNiNfiZk@Base 15 ++ _D4core3sys5posixQk6select8FD_ISSETFNaNbNiiPxSQBsQBqQBpQBwQBn6fd_setZb@Base 15 ++ _D4core3sys5posixQk6select8__FDMASKFNaNbNiNfiZl@Base 15 ++ _D4core3sys5posixQk6socket10CMSG_ALIGNFNaNbNimZm@Base 15 ++ _D4core3sys5posixQk6socket10CMSG_SPACEFNaNbNimZm@Base 15 ++ _D4core3sys5posixQk6socket11CMSG_NXTHDRFNaNbNiPNgSQBwQBuQBtQCaQBr6msghdrPNgSQCwQCuQCtQDaQCr7cmsghdrZQBc@Base 15 ++ _D4core3sys5posixQk6socket11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk6socket12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk6socket13CMSG_FIRSTHDRFNaNbNiPNgSQByQBwQBvQCcQBt6msghdrZPNgSQCzQCxQCwQDdQCu7cmsghdr@Base 15 ++ _D4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 ++ _D4core3sys5posixQk6socket6linger6__initZ@Base 15 ++ _D4core3sys5posixQk6socket6msghdr6__initZ@Base 15 ++ _D4core3sys5posixQk6socket7cmsghdr6__initZ@Base 15 ++ _D4core3sys5posixQk6socket8CMSG_LENFNaNbNimZm@Base 15 ++ _D4core3sys5posixQk6socket8sockaddr6__initZ@Base 15 ++ _D4core3sys5posixQk6socket9CMSG_DATAFNaNbNiNkMPNgSQBwQBuQBtQCaQBr7cmsghdrZPNgh@Base 15 ++ _D4core3sys5posixQk6ttycom11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk6ttycom12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk7statvfs11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk7statvfs12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk7statvfs5FFlag6__initZ@Base 15 ++ _D4core3sys5posixQk7statvfs9statvfs_t6__initZ@Base 15 ++ _D4core3sys5posixQk7utsname11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk7utsname12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk7utsnameQi6__initZ@Base 15 ++ _D4core3sys5posixQk8resource11__moduleRefZ@Base 15 ++ _D4core3sys5posixQk8resource12__ModuleInfoZ@Base 15 ++ _D4core3sys5posixQk8resource6rlimit6__initZ@Base 15 ++ _D4core3sys5posixQk8resource6rusage6__initZ@Base 15 ++ _D4core4math11__moduleRefZ@Base 15 ++ _D4core4math12__ModuleInfoZ@Base 15 ++ _D4core4simd11__moduleRefZ@Base 15 ++ _D4core4simd12__ModuleInfoZ@Base 15 ++ _D4core4stdc4fenv11__moduleRefZ@Base 15 ++ _D4core4stdc4fenv12__ModuleInfoZ@Base 15 ++ _D4core4stdc4fenv6fenv_t6__initZ@Base 15 ++ _D4core4stdc4math11__moduleRefZ@Base 15 ++ _D4core4stdc4math11islessequalFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math11islessequalFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math11islessequalFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math11isunorderedFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math11isunorderedFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math11isunorderedFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math12__ModuleInfoZ@Base 15 ++ _D4core4stdc4math13islessgreaterFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math13islessgreaterFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math13islessgreaterFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math14isgreaterequalFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math14isgreaterequalFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math14isgreaterequalFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math6islessFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math6islessFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math6islessFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4math8isnormalFNaNbNiNedZi@Base 15 ++ _D4core4stdc4math8isnormalFNaNbNiNeeZi@Base 15 ++ _D4core4stdc4math8isnormalFNaNbNiNefZi@Base 15 ++ _D4core4stdc4math9isgreaterFNaNbNiNeddZi@Base 15 ++ _D4core4stdc4math9isgreaterFNaNbNiNeeeZi@Base 15 ++ _D4core4stdc4math9isgreaterFNaNbNiNeffZi@Base 15 ++ _D4core4stdc4time11__moduleRefZ@Base 15 ++ _D4core4stdc4time12__ModuleInfoZ@Base 15 ++ _D4core4stdc5ctype11__moduleRefZ@Base 15 ++ _D4core4stdc5ctype12__ModuleInfoZ@Base 15 ++ _D4core4stdc5errno11__moduleRefZ@Base 15 ++ _D4core4stdc5errno12__ModuleInfoZ@Base 15 ++ _D4core4stdc5stdio11__moduleRefZ@Base 15 ++ _D4core4stdc5stdio12__ModuleInfoZ@Base 15 ++ _D4core4stdc5stdio6fpos_t6__initZ@Base 15 ++ _D4core4stdc5stdio8_IO_FILE6__initZ@Base 15 ++ _D4core4stdc6config11__moduleRefZ@Base 15 ++ _D4core4stdc6config12__ModuleInfoZ@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm6__initZ@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZQx@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTdZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opAssignMFNaNbNcNiNfdZSQCgQCeQCc__TQByTdZQCe@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm8opEqualsMFNaNbNiNfdZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTdZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTdZQByZm@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm6__initZ@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZQx@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZSQDbQCzQCx__TQCtTeZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opAssignMFNaNbNcNiNfeZSQCgQCeQCc__TQByTeZQCe@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm8opEqualsMFNaNbNiNfeZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTeZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTeZQByZm@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm6__initZ@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTdZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTeZQCcZSQDbQCzQCx__TQCtTfZQCz@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNfSQCeQCcQCa__TQBwTfZQCcZQx@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opAssignMFNaNbNcNiNffZSQCgQCeQCc__TQByTfZQCe@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTdZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTeZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNfSQCcQCaQBy__TQBuTfZQCaZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm8opEqualsMFNaNbNiNffZb@Base 15 ++ _D4core4stdc6config__T8_ComplexTfZQm9__xtoHashFNbNeKxSQCaQByQBw__TQBsTfZQByZm@Base 15 ++ _D4core4stdc6float_11__moduleRefZ@Base 15 ++ _D4core4stdc6float_12__ModuleInfoZ@Base 15 ++ _D4core4stdc6limits11__moduleRefZ@Base 15 ++ _D4core4stdc6limits12__ModuleInfoZ@Base 15 ++ _D4core4stdc6locale11__moduleRefZ@Base 15 ++ _D4core4stdc6locale12__ModuleInfoZ@Base 15 ++ _D4core4stdc6locale5lconv6__initZ@Base 15 ++ _D4core4stdc6signal11__moduleRefZ@Base 15 ++ _D4core4stdc6signal12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stdarg11__moduleRefZ@Base 15 ++ _D4core4stdc6stdarg12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stddef11__moduleRefZ@Base 15 ++ _D4core4stdc6stddef12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stdint11__moduleRefZ@Base 15 ++ _D4core4stdc6stdint12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stdint__T7_typifyTgZQlFNaNbNiNfgZg@Base 15 ++ _D4core4stdc6stdint__T7_typifyThZQlFNaNbNiNfhZh@Base 15 ++ _D4core4stdc6stdint__T7_typifyTiZQlFNaNbNiNfiZi@Base 15 ++ _D4core4stdc6stdint__T7_typifyTkZQlFNaNbNiNfkZk@Base 15 ++ _D4core4stdc6stdint__T7_typifyTlZQlFNaNbNiNflZl@Base 15 ++ _D4core4stdc6stdint__T7_typifyTmZQlFNaNbNiNfmZm@Base 15 ++ _D4core4stdc6stdint__T7_typifyTsZQlFNaNbNiNfsZs@Base 15 ++ _D4core4stdc6stdint__T7_typifyTtZQlFNaNbNiNftZt@Base 15 ++ _D4core4stdc6stdlib11__moduleRefZ@Base 15 ++ _D4core4stdc6stdlib12__ModuleInfoZ@Base 15 ++ _D4core4stdc6stdlib5div_t6__initZ@Base 15 ++ _D4core4stdc6stdlib6ldiv_t6__initZ@Base 15 ++ _D4core4stdc6stdlib7lldiv_t6__initZ@Base 15 ++ _D4core4stdc6string11__moduleRefZ@Base 15 ++ _D4core4stdc6string12__ModuleInfoZ@Base 15 ++ _D4core4stdc6tgmath11__moduleRefZ@Base 15 ++ _D4core4stdc6tgmath12__ModuleInfoZ@Base 15 ++ _D4core4stdc6wchar_11__moduleRefZ@Base 15 ++ _D4core4stdc6wchar_12__ModuleInfoZ@Base 15 ++ _D4core4stdc6wchar_8getwcharFNbNiNeZw@Base 15 ++ _D4core4stdc6wchar_8putwcharFNbNiNewZw@Base 15 ++ _D4core4stdc6wchar_9mbstate_t6__initZ@Base 15 ++ _D4core4stdc6wchar_9mbstate_t8___value6__initZ@Base 15 ++ _D4core4stdc6wctype11__moduleRefZ@Base 15 ++ _D4core4stdc6wctype12__ModuleInfoZ@Base 15 ++ _D4core4stdc7assert_11__moduleRefZ@Base 15 ++ _D4core4stdc7assert_12__ModuleInfoZ@Base 15 ++ _D4core4stdc7complex11__moduleRefZ@Base 15 ++ _D4core4stdc7complex12__ModuleInfoZ@Base 15 ++ _D4core4stdc8inttypes11__moduleRefZ@Base 15 ++ _D4core4stdc8inttypes12__ModuleInfoZ@Base 15 ++ _D4core4stdc8inttypes9imaxdiv_t6__initZ@Base 15 ++ _D4core4stdc9stdatomic11__moduleRefZ@Base 15 ++ _D4core4stdc9stdatomic11atomic_flag6__initZ@Base 15 ++ _D4core4stdc9stdatomic12__ModuleInfoZ@Base 15 ++ _D4core4sync11__moduleRefZ@Base 15 ++ _D4core4sync12__ModuleInfoZ@Base 15 ++ _D4core4sync5event11__moduleRefZ@Base 15 ++ _D4core4sync5event12__ModuleInfoZ@Base 15 ++ _D4core4sync5event5Event10initializeMFNbNibbZv@Base 15 ++ _D4core4sync5event5Event14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core4sync5event5Event16setIfInitializedMFNbNiZv@Base 15 ++ _D4core4sync5event5Event3setMFNbNiZv@Base 15 ++ _D4core4sync5event5Event4waitMFNbNiSQBi4time8DurationZb@Base 15 ++ _D4core4sync5event5Event4waitMFNbNiZb@Base 15 ++ _D4core4sync5event5Event5resetMFNbNiZv@Base 15 ++ _D4core4sync5event5Event6__ctorMFNbNcNibbZSQBpQBnQBlQBi@Base 15 ++ _D4core4sync5event5Event6__dtorMFNbNiZv@Base 15 ++ _D4core4sync5event5Event6__initZ@Base 15 ++ _D4core4sync5event5Event9terminateMFNbNiZv@Base 15 ++ _D4core4sync5mutex11__moduleRefZ@Base 15 ++ _D4core4sync5mutex12__ModuleInfoZ@Base 15 ++ _D4core4sync5mutex5Mutex10handleAddrMFNiZPSQBp3sys5posixQk5types15pthread_mutex_t@Base 15 ++ _D4core4sync5mutex5Mutex12MonitorProxy11__xopEqualsMxFKxSQCdQCbQBzQBwQBtZb@Base 15 ++ _D4core4sync5mutex5Mutex12MonitorProxy6__initZ@Base 15 ++ _D4core4sync5mutex5Mutex12MonitorProxy9__xtoHashFNbNeKxSQCcQCaQByQBvQBsZm@Base 15 ++ _D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 ++ _D4core4sync5mutex5Mutex4lockMOFNeZv@Base 15 ++ _D4core4sync5mutex5Mutex6__ctorMFNbNiNeC6ObjectZCQBvQBtQBrQBo@Base 15 ++ _D4core4sync5mutex5Mutex6__ctorMFNbNiNeZCQBnQBlQBjQBg@Base 15 ++ _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeC6ObjectZOCQBxQBvQBtQBq@Base 15 ++ _D4core4sync5mutex5Mutex6__ctorMOFNbNiNeZOCQBpQBnQBlQBi@Base 15 ++ _D4core4sync5mutex5Mutex6__dtorMFNbNiNlNeZv@Base 15 ++ _D4core4sync5mutex5Mutex6__initZ@Base 15 ++ _D4core4sync5mutex5Mutex6__vtblZ@Base 15 ++ _D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 ++ _D4core4sync5mutex5Mutex6unlockMOFNeZv@Base 15 ++ _D4core4sync5mutex5Mutex7__ClassZ@Base 15 ++ _D4core4sync5mutex5Mutex7tryLockMFNeZb@Base 15 ++ _D4core4sync5mutex5Mutex7tryLockMOFNeZb@Base 15 ++ _D4core4sync5mutex5Mutex__T12lock_nothrowTCQBpQBnQBlQBiZQBdMFNbNiNeZv@Base 15 ++ _D4core4sync5mutex5Mutex__T12lock_nothrowTOCQBqQBoQBmQBjZQBeMOFNbNiNeZv@Base 15 ++ _D4core4sync5mutex5Mutex__T14unlock_nothrowTCQBrQBpQBnQBkZQBfMFNbNiNeZv@Base 15 ++ _D4core4sync5mutex5Mutex__T14unlock_nothrowTOCQBsQBqQBoQBlZQBgMOFNbNiNeZv@Base 15 ++ _D4core4sync5mutex5Mutex__T15tryLock_nothrowTCQBsQBqQBoQBlZQBgMFNbNiNeZb@Base 15 ++ _D4core4sync5mutex5Mutex__T15tryLock_nothrowTOCQBtQBrQBpQBmZQBhMOFNbNiNeZb@Base 15 ++ _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNeC6ObjectbZQBi@Base 15 ++ _D4core4sync5mutex5Mutex__T6__ctorTCQBiQBgQBeQBbZQwMFNbNiNebZQBa@Base 15 ++ _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNeC6ObjectbZOQBk@Base 15 ++ _D4core4sync5mutex5Mutex__T6__ctorTOCQBjQBhQBfQBcZQxMOFNbNiNebZOQBc@Base 15 ++ _D4core4sync6config11__moduleRefZ@Base 15 ++ _D4core4sync6config12__ModuleInfoZ@Base 15 ++ _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 ++ _D4core4sync6config7mktspecFNbNiKSQBg3sys5posix4time8timespecZv@Base 15 ++ _D4core4sync6config7mvtspecFNbNiKSQBg3sys5posix4time8timespecSQCiQs8DurationZv@Base 15 ++ _D4core4sync7barrier11__moduleRefZ@Base 15 ++ _D4core4sync7barrier12__ModuleInfoZ@Base 15 ++ _D4core4sync7barrier7Barrier4waitMFZv@Base 15 ++ _D4core4sync7barrier7Barrier6__ctorMFkZCQBmQBkQBiQBd@Base 15 ++ _D4core4sync7barrier7Barrier6__initZ@Base 15 ++ _D4core4sync7barrier7Barrier6__vtblZ@Base 15 ++ _D4core4sync7barrier7Barrier7__ClassZ@Base 15 ++ _D4core4sync7rwmutex11__moduleRefZ@Base 15 ++ _D4core4sync7rwmutex12__ModuleInfoZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMOFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader6__vtblZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMOFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7__ClassZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeSQCc4time8DurationZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMFNeZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeSQCd4time8DurationZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader7tryLockMOFNeZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader__T17shouldQueueReaderTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Reader__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy11__xopEqualsMxFKxSQCwQCuQCsQCnQCaQBwZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy9__xtoHashFNbNeKxSQCvQCtQCrQCmQBzQBvZm@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMOFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer6__vtblZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMOFNeZv@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7__ClassZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeSQCc4time8DurationZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMFNeZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeSQCd4time8DurationZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer7tryLockMOFNeZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTCQCnQClQCjQCeQBrZQBlMFNaNbNdNiNfZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer__T17shouldQueueWriterTOCQCoQCmQCkQCfQBsZQBmMOFNaNbNdNiNfZb@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTCQCbQBzQBxQBsQBfZQzMFNaNbNiNeZQBe@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6Writer__T6__ctorTOCQCcQCaQByQBtQBgZQBaMOFNaNbNiNeZOQBh@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6__ctorMFNbNfEQBwQBuQBsQBn6PolicyZCQCrQCpQCnQCi@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6__ctorMOFNbNfEQBxQBvQBtQBo6PolicyZOCQCtQCrQCpQCk@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6__initZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6__vtblZ@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6policyMFNbNdNfZEQBzQBxQBvQBq6Policy@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6policyMOFNbNdNfZEQCaQByQBwQBr6Policy@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6readerMFNbNdNfZCQBzQBxQBvQBq6Reader@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6readerMOFNbNdNfZOCQCbQBzQBxQBs6Reader@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6writerMFNbNdNfZCQBzQBxQBvQBq6Writer@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex6writerMOFNbNdNfZOCQCbQBzQBxQBs6Writer@Base 15 ++ _D4core4sync7rwmutex14ReadWriteMutex7__ClassZ@Base 15 ++ _D4core4sync9condition11__moduleRefZ@Base 15 ++ _D4core4sync9condition12__ModuleInfoZ@Base 15 ++ _D4core4sync9condition9Condition13mutex_nothrowMFNaNbNdNiNfZCQChQCf5mutex5Mutex@Base 15 ++ _D4core4sync9condition9Condition13mutex_nothrowMOFNaNbNdNiNfZOCQCjQCh5mutex5Mutex@Base 15 ++ _D4core4sync9condition9Condition4waitMFSQBm4time8DurationZb@Base 15 ++ _D4core4sync9condition9Condition4waitMFZv@Base 15 ++ _D4core4sync9condition9Condition4waitMOFSQBn4time8DurationZb@Base 15 ++ _D4core4sync9condition9Condition4waitMOFZv@Base 15 ++ _D4core4sync9condition9Condition5mutexMFNdZCQBqQBoQs5Mutex@Base 15 ++ _D4core4sync9condition9Condition5mutexMOFNdZOCQBsQBqQu5Mutex@Base 15 ++ _D4core4sync9condition9Condition6__ctorMFNbNiNfCQBuQBs5mutex5MutexZCQCoQCmQCkQCd@Base 15 ++ _D4core4sync9condition9Condition6__ctorMOFNbNiNfOCQBwQBu5mutex5MutexZOCQCrQCpQCnQCg@Base 15 ++ _D4core4sync9condition9Condition6__dtorMFNiNlZv@Base 15 ++ _D4core4sync9condition9Condition6__initZ@Base 15 ++ _D4core4sync9condition9Condition6__vtblZ@Base 15 ++ _D4core4sync9condition9Condition6notifyMFZv@Base 15 ++ _D4core4sync9condition9Condition6notifyMOFZv@Base 15 ++ _D4core4sync9condition9Condition7__ClassZ@Base 15 ++ _D4core4sync9condition9Condition9notifyAllMFZv@Base 15 ++ _D4core4sync9condition9Condition9notifyAllMOFZv@Base 15 ++ _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNiSQCi4time8DurationbZb@Base 15 ++ _D4core4sync9condition9Condition__T4waitTCQBoQBmQBkQBdZQuMFNibZv@Base 15 ++ _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNiSQCk4time8DurationbZb@Base 15 ++ _D4core4sync9condition9Condition__T4waitTOCQBpQBnQBlQBeZQvMOFNibZv@Base 15 ++ _D4core4sync9condition9Condition__T6__ctorTCQBqQBoQBmQBfTCQCeQCc5mutex5MutexZQBqMFNbNiNeQBfbZQBy@Base 15 ++ _D4core4sync9condition9Condition__T6__ctorTOCQBrQBpQBnQBgTOCQCgQCe5mutex5MutexZQBsMOFNbNiNeOQBhbZOQCc@Base 15 ++ _D4core4sync9condition9Condition__T6notifyTCQBqQBoQBmQBfZQwMFNbNibZv@Base 15 ++ _D4core4sync9condition9Condition__T6notifyTOCQBrQBpQBnQBgZQxMOFNbNibZv@Base 15 ++ _D4core4sync9condition9Condition__T9notifyAllTCQBtQBrQBpQBiZQzMFNbNibZv@Base 15 ++ _D4core4sync9condition9Condition__T9notifyAllTOCQBuQBsQBqQBjZQBaMOFNbNibZv@Base 15 ++ _D4core4sync9exception11__moduleRefZ@Base 15 ++ _D4core4sync9exception12__ModuleInfoZ@Base 15 ++ _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCtQCrQCpQCi@Base 15 ++ _D4core4sync9exception9SyncError6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCtQCrQCpQCi@Base 15 ++ _D4core4sync9exception9SyncError6__initZ@Base 15 ++ _D4core4sync9exception9SyncError6__vtblZ@Base 15 ++ _D4core4sync9exception9SyncError7__ClassZ@Base 15 ++ _D4core4sync9semaphore11__moduleRefZ@Base 15 ++ _D4core4sync9semaphore12__ModuleInfoZ@Base 15 ++ _D4core4sync9semaphore9Semaphore4waitMFSQBm4time8DurationZb@Base 15 ++ _D4core4sync9semaphore9Semaphore4waitMFZv@Base 15 ++ _D4core4sync9semaphore9Semaphore6__ctorMFkZCQBqQBoQBmQBf@Base 15 ++ _D4core4sync9semaphore9Semaphore6__dtorMFNlZv@Base 15 ++ _D4core4sync9semaphore9Semaphore6__initZ@Base 15 ++ _D4core4sync9semaphore9Semaphore6__vtblZ@Base 15 ++ _D4core4sync9semaphore9Semaphore6notifyMFZv@Base 15 ++ _D4core4sync9semaphore9Semaphore7__ClassZ@Base 15 ++ _D4core4sync9semaphore9Semaphore7tryWaitMFZb@Base 15 ++ _D4core4time11__moduleRefZ@Base 15 ++ _D4core4time11_posixClockFNaNbNiNfEQBhQBf9ClockTypeZi@Base 15 ++ _D4core4time12TickDuration10TDRvalueOfFSQBmQBkQBiZQl@Base 15 ++ _D4core4time12TickDuration11ticksPerSecyl@Base 15 ++ _D4core4time12TickDuration14currSystemTickFNbNdNiNeZSQBzQBxQBv@Base 15 ++ _D4core4time12TickDuration16time_initializerFZv@Base 15 ++ _D4core4time12TickDuration3maxFNaNbNdNiNfZSQBpQBnQBl@Base 15 ++ _D4core4time12TickDuration3minFNaNbNdNiNfZSQBpQBnQBl@Base 15 ++ _D4core4time12TickDuration4zeroFNaNbNdNiNfZSQBqQBoQBm@Base 15 ++ _D4core4time12TickDuration5msecsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration5nsecsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration5opCmpMxFNaNbNiNfSQBqQBoQBmZi@Base 15 ++ _D4core4time12TickDuration5usecsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration6__ctorMFNaNbNcNiNflZSQBuQBsQBq@Base 15 ++ _D4core4time12TickDuration6__initZ@Base 15 ++ _D4core4time12TickDuration6hnsecsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration7secondsMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time12TickDuration8__xopCmpMxFKxSQBnQBlQBjZi@Base 15 ++ _D4core4time12TickDuration9appOriginySQBkQBiQBg@Base 15 ++ _D4core4time12__ModuleInfoZ@Base 15 ++ _D4core4time12nsecsToTicksFNaNbNiNflZl@Base 15 ++ _D4core4time12ticksToNSecsFNaNbNiNflZl@Base 15 ++ _D4core4time13TimeException6__ctorMFNaNbNfAyaC6object9ThrowableQvmZCQCoQCmQCk@Base 15 ++ _D4core4time13TimeException6__ctorMFNaNbNfAyaQdmC6object9ThrowableZCQCoQCmQCk@Base 15 ++ _D4core4time13TimeException6__initZ@Base 15 ++ _D4core4time13TimeException6__vtblZ@Base 15 ++ _D4core4time13TimeException7__ClassZ@Base 15 ++ _D4core4time13_clockTypeIdxFEQBbQz9ClockTypeZm@Base 15 ++ _D4core4time13convClockFreqFNaNbNiNflllZl@Base 15 ++ _D4core4time14_clockTypeNameFEQBcQBa9ClockTypeZAya@Base 15 ++ _D4core4time15_ticksPerSecondyG8l@Base 15 ++ _D4core4time25unitsAreInDescendingOrderFMAAyaZb@Base 15 ++ _D4core4time3absFNaNbNiNfSQyQv12TickDurationZQu@Base 15 ++ _D4core4time3absFNaNbNiNfSQyQv8DurationZQp@Base 15 ++ _D4core4time4_absFNaNbNiNfdZd@Base 15 ++ _D4core4time4_absFNaNbNiNflZl@Base 15 ++ _D4core4time8Duration10isNegativeMxFNaNbNdNiNfZb@Base 15 ++ _D4core4time8Duration3maxFNaNbNdNiNfZSQBkQBiQBg@Base 15 ++ _D4core4time8Duration3minFNaNbNdNiNfZSQBkQBiQBg@Base 15 ++ _D4core4time8Duration4zeroFNaNbNdNiNfZSQBlQBjQBh@Base 15 ++ _D4core4time8Duration5opCmpMxFNaNbNiNfSQBlQBjQBhZi@Base 15 ++ _D4core4time8Duration6__ctorMFNaNbNcNiNflZSQBpQBnQBl@Base 15 ++ _D4core4time8Duration6__initZ@Base 15 ++ _D4core4time8Duration8__xopCmpMxFKxSQBiQBgQBeZi@Base 15 ++ _D4core4time8Duration8toStringMxFNaNbNfZAya@Base 15 ++ _D4core4time8Duration__T10opOpAssignVAyaa1_2bZQwMFNaNbNcNiNfxSQCiQCgQCeZSQCtQCrQCp@Base 15 ++ _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 ++ _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 ++ _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 ++ _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra5_686f757273VQDia7_6d696e75746573ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 ++ _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573Z__TQBvTiTiZQCdMxFNaNbNiNfJiJiZv@Base 15 ++ _D4core4time8Duration__T5splitVAyaa5_686f757273VQra7_6d696e75746573Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_6e73656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_6e73656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ10SplitUnits6__initZ@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ12genSplitCallFNaNbNfZQCw@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZ14genMemberDeclsFNaNbNfZQCy@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373ZQBsMxFNaNbNiNfZSQDeQDcQDa__TQCuVQCra7_7365636f6e6473VQDma5_7573656373ZQEkMxFNaNbNiNfZ10SplitUnits@Base 15 ++ _D4core4time8Duration__T5splitVAyaa7_7365636f6e6473VQva5_7573656373Z__TQBvTlTlZQCdMxFNaNbNiNfJlJlZv@Base 15 ++ _D4core4time8Duration__T5totalVAyaa5_6d73656373ZQyMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time8Duration__T5totalVAyaa6_686e73656373ZQBaMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time8Duration__T5totalVAyaa7_7365636f6e6473ZQBcMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time8Duration__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 ++ _D4core4time8Duration__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfxSQCeQCcQCaZSQCpQCnQCl@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ10appListSepFNaNbNfQBqkbZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ5unitsyAAa@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa4_64617973ZQBcFNaNbNfQCmlZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_686f757273ZQBeFNaNbNfQColZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_6d73656373ZQBeFNaNbNfQColZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7573656373ZQBeFNaNbNfQColZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa5_7765656b73ZQBeFNaNbNfQColZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa6_686e73656373ZQBgFNaNbNfQCqlZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_6d696e75746573ZQBiFNaNbNfQCslZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFMQuZ__T10appUnitValVAyaa7_7365636f6e6473ZQBiFNaNbNfQCslZv@Base 15 ++ _D4core4time8Duration__T8toStringTDFNaNbNfIAaZvZQyMxFNaNbNfMQBaZv@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj14ticksPerSecondFNaNbNdNiNfZl@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3maxFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj3minFNaNbNdNiNfZSQCqQCo__TQCmVQCbi0ZQCw@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj4zeroFNaNbNdNiNfZSQCrQCp__TQCnVQCci0ZQCx@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5opCmpMxFNaNbNiNfSQCrQCp__TQCnVQCci0ZQCxZi@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj5ticksMxFNaNbNdNiNfZl@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8__xopCmpMxFKxSQCoQCm__TQCkVQBzi0ZQCuZi@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8currTimeFNbNdNiNeZSQCtQCr__TQCpVQCei0ZQCz@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj8toStringMxFNaNbNfZAya@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2bZQtMxFNaNbNiNfSQDjQDh8DurationZSQEaQDy__TQDwVQDli0ZQEg@Base 15 ++ _D4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj__T8opBinaryVAyaa1_2dZQtMxFNaNbNiNfSQDjQDh__TQDfVQCui0ZQDpZSQEhQEf8Duration@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa4_64617973ZQBmFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa5_686f757273ZQBoFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa5_6d73656373ZQBoFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7573656373ZQBoFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa5_7765656b73ZQBoFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa7_6d696e75746573ZQBsFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T20splitUnitsFromHNSecsVAyaa7_7365636f6e6473ZQBsFNaNbNiNfKlZl@Base 15 ++ _D4core4time__T2toVAyaa5_6d73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T2toVAyaa5_6e73656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T2toVAyaa5_7573656373TlTxSQBmQBk12TickDurationZQBuFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T2toVAyaa6_686e73656373TlTxSQBoQBm12TickDurationZQBwFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T2toVAyaa7_7365636f6e6473TlTxSQBqQBo12TickDurationZQByFNaNbNiNfxQBjZl@Base 15 ++ _D4core4time__T3durVAyaa4_64617973ZQuFNaNbNiNflZSQBvQBt8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_686f757273ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_6d73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_6e73656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_7573656373ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa5_7765656b73ZQwFNaNbNiNflZSQBxQBv8Duration@Base 15 ++ _D4core4time__T3durVAyaa6_686e73656373ZQyFNaNbNiNflZSQBzQBx8Duration@Base 15 ++ _D4core4time__T3durVAyaa7_6d696e75746573ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 ++ _D4core4time__T3durVAyaa7_7365636f6e6473ZQBaFNaNbNiNflZSQCcQCa8Duration@Base 15 ++ _D4core4time__T7convertVAyaa4_64617973VQpa6_686e73656373ZQBqFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa4_64617973VQpa7_7365636f6e6473ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_686f757273VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_686f757273VQra7_7365636f6e6473ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_6d73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_6e73656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_7573656373VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa5_7765656b73VQra6_686e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta4_64617973ZQBqFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_686f757273ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_6d73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_6e73656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_7573656373ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta5_7765656b73ZQBsFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta6_686e73656373ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta7_6d696e75746573ZQBwFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa6_686e73656373VQta7_7365636f6e6473ZQBwFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_6d696e75746573VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6d73656373ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_6e73656373ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva5_7573656373ZQBuFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva6_686e73656373ZQBwFNaNbNiNflZl@Base 15 ++ _D4core4time__T7convertVAyaa7_7365636f6e6473VQva7_7365636f6e6473ZQByFNaNbNiNflZl@Base 15 ++ _D4core5bitop11__moduleRefZ@Base 15 ++ _D4core5bitop12__ModuleInfoZ@Base 15 ++ _D4core5bitop2btFNaNbNiMxPmmZi@Base 15 ++ _D4core5bitop3bsfFNaNbNiNfkZi@Base 15 ++ _D4core5bitop3bsfFNaNbNiNfmZi@Base 15 ++ _D4core5bitop3bsrFNaNbNiNfkZi@Base 15 ++ _D4core5bitop3bsrFNaNbNiNfmZi@Base 15 ++ _D4core5bitop6popcntFNaNbNiNfkZi@Base 15 ++ _D4core5bitop6popcntFNaNbNiNfmZi@Base 15 ++ _D4core5bitop7Split646__ctorMFNaNbNcNiNfmZSQBpQBnQBk@Base 15 ++ _D4core5bitop7Split646__initZ@Base 15 ++ _D4core5bitop7bitswapFNaNbNiNfkZk@Base 15 ++ _D4core5bitop7bitswapFNaNbNiNfmZm@Base 15 ++ _D4core5bitop8BitRange5emptyMxFNaNbNiNfZb@Base 15 ++ _D4core5bitop8BitRange5frontMFNaNbNiNfZm@Base 15 ++ _D4core5bitop8BitRange6__ctorMFNaNbNcNiPxmmZSQBrQBpQBm@Base 15 ++ _D4core5bitop8BitRange6__initZ@Base 15 ++ _D4core5bitop8BitRange8popFrontMFNaNbNiZv@Base 15 ++ _D4core5bitop8byteswapFNaNbNiNftZt@Base 15 ++ _D4core5bitop__T10softPopcntTkZQpFNaNbNiNfkZi@Base 15 ++ _D4core5bitop__T10softPopcntTmZQpFNaNbNiNfmZi@Base 15 ++ _D4core5bitop__T11softBitswapTkZQqFNaNbNiNfkZk@Base 15 ++ _D4core5bitop__T11softBitswapTmZQqFNaNbNiNfmZm@Base 15 ++ _D4core5bitop__T3rolTkZQhFNaNbNiNfxkxkZk@Base 15 ++ _D4core5bitop__T3rorTkZQhFNaNbNiNfxkxkZk@Base 15 ++ _D4core5bitop__T3rorTmZQhFNaNbNiNfxmxkZm@Base 15 ++ _D4core5bitop__T8softScanTkVbi0ZQqFNaNbNiNfkZi@Base 15 ++ _D4core5bitop__T8softScanTkVbi1ZQqFNaNbNiNfkZi@Base 15 ++ _D4core5bitop__T8softScanTmVbi0ZQqFNaNbNiNfmZi@Base 15 ++ _D4core5bitop__T8softScanTmVbi1ZQqFNaNbNiNfmZi@Base 15 ++ _D4core5cpuid10_hasPopcntyb@Base 15 ++ _D4core5cpuid10_hasRdrandyb@Base 15 ++ _D4core5cpuid10_hasRdseedyb@Base 15 ++ _D4core5cpuid10_isItaniumyb@Base 15 ++ _D4core5cpuid10_processoryAa@Base 15 ++ _D4core5cpuid10_x87onChipyb@Base 15 ++ _D4core5cpuid10dataCachesFNaNbNdNiNeZxG5SQBnQBl9CacheInfo@Base 15 ++ _D4core5cpuid11CpuFeatures11__xopEqualsMxFKxSQBrQBpQBmZb@Base 15 ++ _D4core5cpuid11CpuFeatures6__initZ@Base 15 ++ _D4core5cpuid11CpuFeatures9__xtoHashFNbNeKxSQBqQBoQBlZm@Base 15 ++ _D4core5cpuid11__moduleRefZ@Base 15 ++ _D4core5cpuid11_dataCachesyG5SQBcQBa9CacheInfo@Base 15 ++ _D4core5cpuid11amd3dnowExtFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid11cacheLevelsFNbNdNiNeZk@Base 15 ++ _D4core5cpuid11coresPerCPUFNaNbNdNiNeZk@Base 15 ++ _D4core5cpuid11cpuFeaturesSQzQw11CpuFeatures@Base 15 ++ _D4core5cpuid11hasLahfSahfFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid12__ModuleInfoZ@Base 15 ++ _D4core5cpuid12_amd3dnowExtyb@Base 15 ++ _D4core5cpuid12_coresPerCPUyk@Base 15 ++ _D4core5cpuid12_hasLahfSahfyb@Base 15 ++ _D4core5cpuid12getCpuInfo0BFNbNiNeZv@Base 15 ++ _D4core5cpuid12hasCmpxchg8bFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid12hasPclmulqdqFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid12preferAthlonFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid13_hasCmpxchg8byb@Base 15 ++ _D4core5cpuid13_hasPclmulqdqyb@Base 15 ++ _D4core5cpuid13_preferAthlonyb@Base 15 ++ _D4core5cpuid13hasCmpxchg16bFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid13hasVpclmulqdqFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid13threadsPerCPUFNaNbNdNiNeZk@Base 15 ++ _D4core5cpuid14_hasCmpxchg16byb@Base 15 ++ _D4core5cpuid14_hasVpclmulqdqyb@Base 15 ++ _D4core5cpuid14_threadsPerCPUyk@Base 15 ++ _D4core5cpuid14getCpuFeaturesFNbNiNeZPSQBlQBj11CpuFeatures@Base 15 ++ _D4core5cpuid14hyperThreadingFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid14numCacheLevelsk@Base 15 ++ _D4core5cpuid14preferPentium1FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid14preferPentium4FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid15_hyperThreadingyb@Base 15 ++ _D4core5cpuid15_preferPentium1yb@Base 15 ++ _D4core5cpuid15_preferPentium4yb@Base 15 ++ _D4core5cpuid15getAMDcacheinfoFNbNiNeZ8assocmapyAh@Base 15 ++ _D4core5cpuid15getAMDcacheinfoFNbNiNeZv@Base 15 ++ _D4core5cpuid16has3dnowPrefetchFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid17_has3dnowPrefetchyb@Base 15 ++ _D4core5cpuid17hyperThreadingBitFNbNdNiNeZb@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ3idsyG63h@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ4waysyG63h@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZ14decipherCpuid2MFNbNihZ5sizesyG63k@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID2FNbNiNeZv@Base 15 ++ _D4core5cpuid18getcacheinfoCPUID4FNbNiNeZv@Base 15 ++ _D4core5cpuid18hasSysEnterSysExitFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid18max_extended_cpuidk@Base 15 ++ _D4core5cpuid19_hasSysEnterSysExityb@Base 15 ++ _D4core5cpuid20cpuid_initializationFNbNiNeZv@Base 15 ++ _D4core5cpuid3aesFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3avxFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3fmaFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3hleFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3mmxFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3rtmFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid3sseFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid4_aesyb@Base 15 ++ _D4core5cpuid4_avxyb@Base 15 ++ _D4core5cpuid4_fmayb@Base 15 ++ _D4core5cpuid4_hleyb@Base 15 ++ _D4core5cpuid4_mmxyb@Base 15 ++ _D4core5cpuid4_rtmyb@Base 15 ++ _D4core5cpuid4_sseyb@Base 15 ++ _D4core5cpuid4avx2FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid4sse2FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid4sse3FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid4vaesFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5_avx2yb@Base 15 ++ _D4core5cpuid5_sse2yb@Base 15 ++ _D4core5cpuid5_sse3yb@Base 15 ++ _D4core5cpuid5_vaesyb@Base 15 ++ _D4core5cpuid5fp16cFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5modelk@Base 15 ++ _D4core5cpuid5sse41FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5sse42FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5sse4aFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid5ssse3FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid6_fp16cyb@Base 15 ++ _D4core5cpuid6_sse41yb@Base 15 ++ _D4core5cpuid6_sse42yb@Base 15 ++ _D4core5cpuid6_sse4ayb@Base 15 ++ _D4core5cpuid6_ssse3yb@Base 15 ++ _D4core5cpuid6amdMmxFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid6familyk@Base 15 ++ _D4core5cpuid6hasShaFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid6vendorFNaNbNdNiNeZAya@Base 15 ++ _D4core5cpuid7_amdMmxyb@Base 15 ++ _D4core5cpuid7_hasShayb@Base 15 ++ _D4core5cpuid7_vendoryAa@Base 15 ++ _D4core5cpuid7avx512fFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid7hasCmovFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid7hasFxsrFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8_avx512fyb@Base 15 ++ _D4core5cpuid8_hasCmovyb@Base 15 ++ _D4core5cpuid8_hasFxsryb@Base 15 ++ _D4core5cpuid8amd3dnowFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8cpuidX86FNbNiNeZv@Base 15 ++ _D4core5cpuid8hasCPUIDFNbNiNeZb@Base 15 ++ _D4core5cpuid8hasLzcntFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8hasRdtscFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8isX86_64FNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid8steppingk@Base 15 ++ _D4core5cpuid9CacheInfo6__initZ@Base 15 ++ _D4core5cpuid9_amd3dnowyb@Base 15 ++ _D4core5cpuid9_hasLzcntyb@Base 15 ++ _D4core5cpuid9_hasRdtscyb@Base 15 ++ _D4core5cpuid9_isX86_64yb@Base 15 ++ _D4core5cpuid9datacacheG5SQyQv9CacheInfo@Base 15 ++ _D4core5cpuid9hasPopcntFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid9hasRdrandFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid9hasRdseedFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid9isItaniumFNaNbNdNiNeZb@Base 15 ++ _D4core5cpuid9max_cpuidk@Base 15 ++ _D4core5cpuid9processorFNaNbNdNiNeZAya@Base 15 ++ _D4core5cpuid9x87onChipFNaNbNdNiNeZb@Base 15 ++ _D4core6atomic11__moduleRefZ@Base 15 ++ _D4core6atomic12__ModuleInfoZ@Base 15 ++ _D4core6atomic5pauseFNaNbNiNfZv@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TbZQBmFNaNbNiNeNkMKxbZb@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi0TmZQBmFNaNbNiNeNkMKxmZm@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TE3std6loggerQCl8LogLevelZQCjFNaNbNiNeNkMKOxEQBrQBqQDxQBmZQCf@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TE3std6loggerQCl8LogLevelZQCjFNaNbNiNeNkMKxEQBqQBpQDwQBlZQCe@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKOxPSQBpQBpQBjZQCc@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNeNkMKxPOxSQBqQBqQBkZQCd@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKOxPSQCcQCcQBvZQCp@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNeNkMKxPOxSQCdQCdQBwZQCq@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TbZQBmFNaNbNiNeNkMKxbZb@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi2TkZQBmFNaNbNiNeNkMKxkZk@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC3std11concurrency9SchedulerZQCnFNaNbNiNeNkMKxCQBuQBtQBjZQCf@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC3std6loggerQCl6LoggerZQChFNaNbNiNeKOxCQBmQBlQDsQBhZOCQCbQCaQEhQBw@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TC6ObjectZQBtFNaNbNiNeKOxCQyZOCQBd@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TCQCa4sync5mutex5MutexZQCgFNaNbNiNeKOxCQDlQBlQBjQBgZOCQEaQCaQByQBv@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNeNkMKOxEQCeQCdQBtQBnZQCs@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNeNkMKxEQCdQCcQBsQBmZQCr@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKOxPSQDuQBsQBqQBnZQCi@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPOSQCc4stdc5stdio8_IO_FILEZQClFNaNbNiNeNkMKxPOxSQDvQBtQBrQBoZQCj@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKOxPQBnZQBs@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNeNkMKxPQBmZQBr@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKOxbZb@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TbZQBmFNaNbNiNeNkMKxbZb@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKOxhZh@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5ThZQBmFNaNbNiNeNkMKxhZh@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKOxiZi@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TiZQBmFNaNbNiNeNkMKxiZi@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKOxkZk@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TkZQBmFNaNbNiNeNkMKxkZk@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKOxmZm@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TmZQBmFNaNbNiNeNkMKxmZm@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKOxtZt@Base 15 ++ _D4core6atomic__T10atomicLoadVEQBdQBb11MemoryOrderi5TtZQBmFNaNbNiNeNkMKxtZt@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKObbZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TbTbZQBpFNaNbNiNeKbbZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKOmiZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi0TmTiZQBpFNaNbNiNeKmiZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TE3std6loggerQCm8LogLevelTQzZQCnFNaNbNiNeKOEQBqQBpQDxQBlQCdZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TE3std6loggerQCm8LogLevelTQzZQCnFNaNbNiNeKQBpQBsZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKOPQBoQBtZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorTQyZQCmFNaNbNiNeKQBoQBrZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKOPQCcQChZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONTQBlZQDaFNaNbNiNeKQCcQCfZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TbTbZQBpFNaNbNiNeKObbZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TbTbZQBpFNaNbNiNeKbbZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKOmmZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi3TmTmZQBpFNaNbNiNeKmmZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TC3std6loggerQCm6LoggerTQxZQClFNaNbNiNeKOCQBoQBnQDvQBjOQoZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateTQBmZQDbFNaNbNiNeKOEQCeQCdQBtQBnQCrZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateTQBmZQDbFNaNbNiNeKQCdQCgZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std6loggerQCm8LogLevelTxEQBaQzQDgQuZQCxFNaNbNiNeKOEQCaQBzQEhQBvxQBoZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TE3std6loggerQCm8LogLevelTxEQBaQzQDgQuZQCxFNaNbNiNeKQBzxQBdZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKOPQChQBqZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTPUNaNbNiNexQxQxQxQxZQBeZQDeFNaNbNiNeKQCgQBoZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKOPQBmQBqZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhTQvZQCjFNaNbNiNeKQBlQBoZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5ThThZQBpFNaNbNiNeKOhhZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5ThThZQBpFNaNbNiNeKhhZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TkTkZQBpFNaNbNiNeKOkkZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TkTkZQBpFNaNbNiNeKkkZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TmTmZQBpFNaNbNiNeKOmmZv@Base 15 ++ _D4core6atomic__T11atomicStoreVEQBeQBc11MemoryOrderi5TmTmZQBpFNaNbNiNeKmmZv@Base 15 ++ _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 ++ _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 ++ _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 ++ _D4core6atomic__T14atomicFetchAddVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 ++ _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKOkmZk@Base 15 ++ _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TkZQBqFNaNbNiNeNkMKkmZk@Base 15 ++ _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKOmmZm@Base 15 ++ _D4core6atomic__T14atomicFetchSubVEQBhQBf11MemoryOrderi5TmZQBqFNaNbNiNeNkMKmmZm@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTE3std11parallelism8TaskPool9PoolStateZQCpFNaNbNiNfPQBzZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOCQBu4sync5mutex5MutexZQCaFNaNbNiNfPOQBkZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOE3std11parallelism8TaskPool9PoolStateZQCqFNaNbNiNfPOQCaZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTObZQBgFNaNbNiNfPObZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOhZQBgFNaNbNiNfPOhZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOkZQBgFNaNbNiNfPOkZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOmZQBgFNaNbNiNfPOmZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTOtZQBgFNaNbNiNfPOtZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTbZQBfFNaNbNiNfPbZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedThZQBfFNaNbNiNfPhZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTkZQBfFNaNbNiNfPkZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTmZQBfFNaNbNiNfPmZb@Base 15 ++ _D4core6atomic__T26atomicPtrIsProperlyAlignedTtZQBfFNaNbNiNfPtZb@Base 15 ++ _D4core6atomic__T28atomicValueIsProperlyAlignedTOkZQBiFNaNbNiNeKOkZb@Base 15 ++ _D4core6atomic__T28atomicValueIsProperlyAlignedTOmZQBiFNaNbNiNeKOmZb@Base 15 ++ _D4core6atomic__T28atomicValueIsProperlyAlignedTkZQBhFNaNbNiNeKkZb@Base 15 ++ _D4core6atomic__T28atomicValueIsProperlyAlignedTmZQBhFNaNbNiNeKmZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTCQBb4sync5mutex5MutexTnTQyZQBmFNaNbNiNePOCQCqQBpQBnQBkOnOQqZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTE3std11parallelism8TaskPool9PoolStateTQBmTQBqZQCfFNaNbNiNePOEQCiQChQBxQBrQCvQCyZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTE3std11parallelism8TaskPool9PoolStateTQBmTQBqZQCfFNaNbNiNePQChQCkQCnZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTbTbTbZQrFNaNbNiNePObbbZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTbTbTbZQrFNaNbNiNePbbbZb@Base 15 ++ _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePOhhhZb@Base 15 ++ _D4core6atomic__T3casZ__TQiThThThZQrFNaNbNiNePhhhZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePOmmmZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTmTmTmZQrFNaNbNiNePmmmZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePOtttZb@Base 15 ++ _D4core6atomic__T3casZ__TQiTtTtTtZQrFNaNbNiNePtttZb@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2b3dTkTkZQzFNaNbNiNfKOkkZk@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2b3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2d3dTkTiZQzFNaNbNiNfKOkiZk@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTiZQzFNaNbNiNfKOmiZm@Base 15 ++ _D4core6atomic__T8atomicOpVAyaa2_2d3dTmTmZQzFNaNbNiNfKOmmZm@Base 15 ++ _D4core6int12811__moduleRefZ@Base 15 ++ _D4core6int12812__ModuleInfoZ@Base 15 ++ _D4core6int1282geFNaNbNiNfSQzQw4CentQkZb@Base 15 ++ _D4core6int1282gtFNaNbNiNfSQzQw4CentQkZb@Base 15 ++ _D4core6int1282leFNaNbNiNfSQzQw4CentQkZb@Base 15 ++ _D4core6int1282ltFNaNbNiNfSQzQw4CentQkZb@Base 15 ++ _D4core6int1282orFNaNbNiNfSQzQw4CentQkZQn@Base 15 ++ _D4core6int1283addFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283andFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283comFNaNbNiNfSQBaQy4CentZQm@Base 15 ++ _D4core6int1283decFNaNbNiNfSQBaQy4CentZQm@Base 15 ++ _D4core6int1283divFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283incFNaNbNiNfSQBaQy4CentZQm@Base 15 ++ _D4core6int1283mulFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283negFNaNbNiNfSQBaQy4CentZQm@Base 15 ++ _D4core6int1283rolFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283rorFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283sarFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283shlFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283shrFNaNbNiNfSQBaQy4CentkZQn@Base 15 ++ _D4core6int1283subFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1283tstFNaNbNiNfSQBaQy4CentZb@Base 15 ++ _D4core6int1283ugeFNaNbNiNfSQBaQy4CentQlZb@Base 15 ++ _D4core6int1283ugtFNaNbNiNfSQBaQy4CentQlZb@Base 15 ++ _D4core6int1283uleFNaNbNiNfSQBaQy4CentQlZb@Base 15 ++ _D4core6int1283ultFNaNbNiNfSQBaQy4CentQlZb@Base 15 ++ _D4core6int1283xorFNaNbNiNfSQBaQy4CentQlZQo@Base 15 ++ _D4core6int1284Cent6__initZ@Base 15 ++ _D4core6int1284rol1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284ror1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284sar1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284shl1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284shr1FNaNbNiNfSQBbQz4CentZQm@Base 15 ++ _D4core6int1284udivFNaNbNiNfSQBbQz4CentQlZQo@Base 15 ++ _D4core6int1286divmodFNaNbNiNfSQBdQBb4CentQmJQpZQs@Base 15 ++ _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FNaNbNiNfQBqmJmZm@Base 15 ++ _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZ13udivmod128_64FQBimJmZ9udiv96_64FNaNbNiNfmkmZk@Base 15 ++ _D4core6int1287udivmodFNaNbNiNfSQBeQBc4CentQmJQpZQs@Base 15 ++ _D4core6memory10initializeFZv@Base 15 ++ _D4core6memory11__moduleRefZ@Base 15 ++ _D4core6memory12__ModuleInfoZ@Base 15 ++ _D4core6memory2GC12ProfileStats6__initZ@Base 15 ++ _D4core6memory2GC12profileStatsFNbNiNfZSQBmQBkQBg12ProfileStats@Base 15 ++ _D4core6memory2GC5Stats6__initZ@Base 15 ++ _D4core6memory2GC5queryFNaNbNkMPvZSQBhQBf8BlkInfo_@Base 15 ++ _D4core6memory2GC5queryFNbNkMxPvZSQBgQBe8BlkInfo_@Base 15 ++ _D4core6memory2GC5statsFNbNiNfZSQBeQBcQy5Stats@Base 15 ++ _D4core6memory2GC6__initZ@Base 15 ++ _D4core6memory2GC6addrOfFNaNbNiNePNgvZQf@Base 15 ++ _D4core6memory2GC6addrOfFNaNbNiNePvZQd@Base 15 ++ _D4core6memory2GC6sizeOfFNaNbNiPvZm@Base 15 ++ _D4core6memory2GC6sizeOfFNbNiMxPvZm@Base 15 ++ _D4core6memory2GC7clrAttrFNaNbPvkZk@Base 15 ++ _D4core6memory2GC7clrAttrFNbMxPvkZk@Base 15 ++ _D4core6memory2GC7getAttrFNaNbPvZk@Base 15 ++ _D4core6memory2GC7getAttrFNbMxPvZk@Base 15 ++ _D4core6memory2GC7setAttrFNaNbPvkZk@Base 15 ++ _D4core6memory2GC7setAttrFNbMxPvkZk@Base 15 ++ _D4core6memory8BlkInfo_6__initZ@Base 15 ++ _D4core6memory8pageSizeym@Base 15 ++ _D4core6memory__T10pureMallocZQnFNaNbNiNemZPv@Base 15 ++ _D4core6memory__T11pureReallocZQoFNaNbNiPvmZQe@Base 15 ++ _D4core6memory__T8pureFreeZQkFNaNbNiPvZv@Base 15 ++ _D4core6stdcpp11string_view11__moduleRefZ@Base 15 ++ _D4core6stdcpp11string_view12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 ++ _D4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 ++ _D4core6stdcpp11type_traits11__moduleRefZ@Base 15 ++ _D4core6stdcpp11type_traits12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 ++ _D4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 ++ _D4core6stdcpp4new_11__moduleRefZ@Base 15 ++ _D4core6stdcpp4new_11align_val_t6__initZ@Base 15 ++ _D4core6stdcpp4new_11std_nothrowySQBgQBeQBa9nothrow_t@Base 15 ++ _D4core6stdcpp4new_12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp4new_9bad_alloc6__ctorMFNiZCQBoQBmQBiQBg@Base 15 ++ _D4core6stdcpp4new_9bad_alloc6__initZ@Base 15 ++ _D4core6stdcpp4new_9bad_alloc6__vtblZ@Base 15 ++ _D4core6stdcpp4new_9bad_alloc7__ClassZ@Base 15 ++ _D4core6stdcpp4new_9nothrow_t6__initZ@Base 15 ++ _D4core6stdcpp5array11__moduleRefZ@Base 15 ++ _D4core6stdcpp5array12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp6memory11__moduleRefZ@Base 15 ++ _D4core6stdcpp6memory12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp6string11__moduleRefZ@Base 15 ++ _D4core6stdcpp6string12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp6vector11__moduleRefZ@Base 15 ++ _D4core6stdcpp6vector12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp7utility11__moduleRefZ@Base 15 ++ _D4core6stdcpp7utility12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp8typeinfo10bad_typeid6__ctorMFNbNiZCQBwQBuQBqQBk@Base 15 ++ _D4core6stdcpp8typeinfo10bad_typeid6__initZ@Base 15 ++ _D4core6stdcpp8typeinfo10bad_typeid6__vtblZ@Base 15 ++ _D4core6stdcpp8typeinfo10bad_typeid7__ClassZ@Base 15 ++ _D4core6stdcpp8typeinfo11__moduleRefZ@Base 15 ++ _D4core6stdcpp8typeinfo12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp8typeinfo8bad_cast6__ctorMFNbNiZCQBtQBrQBnQBh@Base 15 ++ _D4core6stdcpp8typeinfo8bad_cast6__initZ@Base 15 ++ _D4core6stdcpp8typeinfo8bad_cast6__vtblZ@Base 15 ++ _D4core6stdcpp8typeinfo8bad_cast7__ClassZ@Base 15 ++ _D4core6stdcpp8typeinfo9type_info6__ctorMFNiPxaZCQBvQBtQBpQBj@Base 15 ++ _D4core6stdcpp8typeinfo9type_info6__initZ@Base 15 ++ _D4core6stdcpp8typeinfo9type_info6__vtblZ@Base 15 ++ _D4core6stdcpp8typeinfo9type_info7__ClassZ@Base 15 ++ _D4core6stdcpp8xutility11__moduleRefZ@Base 15 ++ _D4core6stdcpp8xutility12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp8xutility14CppStdRevision6__initZ@Base 15 ++ _D4core6stdcpp9allocator11__moduleRefZ@Base 15 ++ _D4core6stdcpp9allocator12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp9exception11__moduleRefZ@Base 15 ++ _D4core6stdcpp9exception12__ModuleInfoZ@Base 15 ++ _D4core6stdcpp9exception13bad_exception6__ctorMFNbNiPxaZCQCdQCbQBxQBq@Base 15 ++ _D4core6stdcpp9exception13bad_exception6__initZ@Base 15 ++ _D4core6stdcpp9exception13bad_exception6__vtblZ@Base 15 ++ _D4core6stdcpp9exception13bad_exception7__ClassZ@Base 15 ++ _D4core6stdcpp9exceptionQk6__ctorMFNbNiPxaiZCQBrQBpQBlQBo@Base 15 ++ _D4core6stdcpp9exceptionQk6__ctorMFNbNiZCQBnQBlQBhQBk@Base 15 ++ _D4core6stdcpp9exceptionQk6__initZ@Base 15 ++ _D4core6stdcpp9exceptionQk6__vtblZ@Base 15 ++ _D4core6stdcpp9exceptionQk7__ClassZ@Base 15 ++ _D4core6thread10threadbase10ThreadBase10popContextMFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase10topContextMFNbNiZPSQCfQCd7context12StackContext@Base 15 ++ _D4core6thread10threadbase10ThreadBase11pushContextMFNbNiPSQCfQCd7context12StackContextZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase12isMainThreadMFNbNdNiZb@Base 15 ++ _D4core6thread10threadbase10ThreadBase12registerThisFNbNiCQCeQCcQByQBpbZv@Base 15.2 ++ _D4core6thread10threadbase10ThreadBase13nAboutToStartm@Base 15 ++ _D4core6thread10threadbase10ThreadBase13pAboutToStartPCQCbQBzQBvQBm@Base 15 ++ _D4core6thread10threadbase10ThreadBase13tlsRTdataInitMFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase15initDataStorageMFNbZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase18destroyDataStorageMFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase18destructBeforeDtorMFNbNiZb@Base 15 ++ _D4core6thread10threadbase10ThreadBase21incrementAboutToStartFNbNiCQCnQClQChQByZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase25destroyDataStorageIfAvailMFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase2idMFNdNiNfZm@Base 15 ++ _D4core6thread10threadbase10ThreadBase3addFNbNiCQBuQBsQBoQBfbZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase3addFNbNiPSQBvQBt7context12StackContextZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase3runMFZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfAyaZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase4nameMFNdNiNfZAya@Base 15 ++ _D4core6thread10threadbase10ThreadBase5slockFNbNdNiZCQBz4sync5mutex5Mutex@Base 15 ++ _D4core6thread10threadbase10ThreadBase5yieldFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNeDFZvmZCQCiQCgQCcQBt@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfPFZvmZCQCiQCgQCcQBt@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__ctorMFNaNbNiNfmZCQCeQCcQByQBp@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__initZ@Base 15 ++ _D4core6thread10threadbase10ThreadBase6__vtblZ@Base 15 ++ _D4core6thread10threadbase10ThreadBase6_slockG72v@Base 15 ++ _D4core6thread10threadbase10ThreadBase6getAllFZ6resizeFNaNbNfKACQCkQCiQCeQBvmZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase6getAllFZACQBvQBtQBpQBg@Base 15 ++ _D4core6thread10threadbase10ThreadBase6removeFNbNiCQBxQBvQBrQBiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase6removeFNbNiPSQByQBw7context12StackContextZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase7__ClassZ@Base 15 ++ _D4core6thread10threadbase10ThreadBase7getThisFNbNiNfZCQCbQBzQBvQBm@Base 15 ++ _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZ6resizeFNbNiKAQBemZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase7opApplyFMDFKCQByQBwQBsQBjZiZi@Base 15 ++ _D4core6thread10threadbase10ThreadBase7setThisFNbNiCQByQBwQBsQBjZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_cbegPSQBuQBs7context12StackContext@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_mainCQBtQBrQBnQBe@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_tbegCQBtQBrQBnQBe@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_thisCQBtQBrQBnQBe@Base 15 ++ _D4core6thread10threadbase10ThreadBase7sm_tlenm@Base 15 ++ _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfZb@Base 15 ++ _D4core6thread10threadbase10ThreadBase8isDaemonMFNdNiNfbZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase9initLocksFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase9isRunningMFNbNdNiZb@Base 15 ++ _D4core6thread10threadbase10ThreadBase9termLocksFNbNiZv@Base 15 ++ _D4core6thread10threadbase10ThreadBase9tlsGCDataMFNbNcNiZPv@Base 15 ++ _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn6getAllFZ6resizeFNaNbNfKACQDoQDmQDiQCzmZvZQCrFZQx@Base 15 ++ _D4core6thread10threadbase10ThreadBase__T10getAllImplS_DQCcQCaQBwQBn7opApplyFMDFKCQDcQDaQCwQCnZiZ6resizeFNbNiKAQBemZvZQCzFNiZQp@Base 15 ++ _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDcQDaQCwQCn@Base 15 ++ _D4core6thread10threadbase11ThreadError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDcQDaQCwQCn@Base 15 ++ _D4core6thread10threadbase11ThreadError6__initZ@Base 15 ++ _D4core6thread10threadbase11ThreadError6__vtblZ@Base 15 ++ _D4core6thread10threadbase11ThreadError7__ClassZ@Base 15 ++ _D4core6thread10threadbase11__moduleRefZ@Base 15 ++ _D4core6thread10threadbase11ll_nThreadsm@Base 15 ++ _D4core6thread10threadbase11ll_pThreadsPSQBnQBl5types13ll_ThreadData@Base 15 ++ _D4core6thread10threadbase12__ModuleInfoZ@Base 15 ++ _D4core6thread10threadbase12lowlevelLockFNbNdNiZCQBv4sync5mutex5Mutex@Base 15 ++ _D4core6thread10threadbase12suspendDepthk@Base 15 ++ _D4core6thread10threadbase13onThreadErrorFNbNiAyaZ5errorCQCdQCbQBx11ThreadError@Base 15 ++ _D4core6thread10threadbase13onThreadErrorFNbNiAyaZv@Base 15 ++ _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaC6object9ThrowableQvmZCQDgQDeQDaQCr@Base 15 ++ _D4core6thread10threadbase15ThreadException6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQDgQDeQDaQCr@Base 15 ++ _D4core6thread10threadbase15ThreadException6__initZ@Base 15 ++ _D4core6thread10threadbase15ThreadException6__vtblZ@Base 15 ++ _D4core6thread10threadbase15ThreadException7__ClassZ@Base 15 ++ _D4core6thread10threadbase15ll_removeThreadFNbNimZv@Base 15 ++ _D4core6thread10threadbase15scanAllTypeImplFNbMDFNbEQByQBwQBs8ScanTypePvQcZvQgZv@Base 15 ++ _D4core6thread10threadbase17multiThreadedFlagb@Base 15 ++ _D4core6thread10threadbase17thread_findByAddrFmZCQBvQBtQBp10ThreadBase@Base 15 ++ _D4core6thread10threadbase18findLowLevelThreadFNbNimZb@Base 15 ++ _D4core6thread10threadbase19initLowlevelThreadsFNbNiZv@Base 15 ++ _D4core6thread10threadbase19termLowlevelThreadsFNbNiZv@Base 15 ++ _D4core6thread10threadbase23thread_processTLSGCDataFNbDFNbPvZQdZv@Base 15 ++ _D4core6thread10threadbase25_sharedStaticDtor_L971_C1FZv@Base 15.2 ++ _D4core6thread10threadbase7ll_lockG72v@Base 15 ++ _D4core6thread10threadbase__T15thread_term_tplTCQBuQBs8osthread6ThreadTG185vZQBwFNbNiKQpZv@Base 15 ++ _D4core6thread10threadbase__T21thread_attachThis_tplTCQCaQBy8osthread6ThreadZQBwFNbZQBf@Base 15 ++ _D4core6thread11__moduleRefZ@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup3addMFCQBtQBr8osthread6ThreadZv@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6__initZ@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6__vtblZ@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6createMFDFZvZCQCbQBz8osthread6Thread@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6createMFPFZvZCQCbQBz8osthread6Thread@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup6removeMFCQBwQBu8osthread6ThreadZv@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup7__ClassZ@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup7joinAllMFbZv@Base 15 ++ _D4core6thread11threadgroup11ThreadGroup7opApplyMFMDFKCQCbQBz8osthread6ThreadZiZi@Base 15 ++ _D4core6thread11threadgroup11__moduleRefZ@Base 15 ++ _D4core6thread11threadgroup12__ModuleInfoZ@Base 15 ++ _D4core6thread12__ModuleInfoZ@Base 15 ++ _D4core6thread5fiber11__moduleRefZ@Base 15 ++ _D4core6thread5fiber12__ModuleInfoZ@Base 15 ++ _D4core6thread5fiber4base11__moduleRefZ@Base 15 ++ _D4core6thread5fiber4base12__ModuleInfoZ@Base 15 ++ _D4core6thread5fiber4base9FiberBase13yieldAndThrowFNbNiC6object9ThrowableZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase3runMFZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase4callMFEQBpQBnQBjQBgQBe7RethrowZC6object9Throwable@Base 15 ++ _D4core6thread5fiber4base9FiberBase5resetMFNbNiDFZvZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase5resetMFNbNiPFZvZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase5resetMFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase5stateMxFNaNbNdNiNfZEQCcQCaQBwQBtQBr5State@Base 15 ++ _D4core6thread5fiber4base9FiberBase5yieldFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__ctorMFNbDFZvmmZCQCaQByQBuQBrQBp@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__ctorMFNbPFZvmmZCQCaQByQBuQBrQBp@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__dtorMFNbNiNlZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__initZ@Base 15 ++ _D4core6thread5fiber4base9FiberBase6__vtblZ@Base 15 ++ _D4core6thread5fiber4base9FiberBase7__ClassZ@Base 15 ++ _D4core6thread5fiber4base9FiberBase7getThisFNbNiNfZCQByQBwQBsQBpQBn@Base 15 ++ _D4core6thread5fiber4base9FiberBase7setThisFNbNiCQBvQBtQBpQBmQBkZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase7sm_thisCQBqQBoQBkQBhQBf@Base 15 ++ _D4core6thread5fiber4base9FiberBase7sm_utxtSQBq3sys5posix8ucontext10ucontext_t@Base 15 ++ _D4core6thread5fiber4base9FiberBase8callImplMFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase8switchInMFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase9switchOutMFNbNiZv@Base 15 ++ _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi0ZQBhMFNbNiZC6object9Throwable@Base 15 ++ _D4core6thread5fiber4base9FiberBase__T4callVEQBrQBpQBlQBiQBg7Rethrowi1ZQBhMFNiZC6object9Throwable@Base 15 ++ _D4core6thread5fiber5Fiber10allocStackMFNbmmZv@Base 15 ++ _D4core6thread5fiber5Fiber19_staticCtor_L674_C9FZv@Base 15 ++ _D4core6thread5fiber5Fiber6__ctorMFNbDFZvmmZCQBrQBpQBlQBi@Base 15 ++ _D4core6thread5fiber5Fiber6__ctorMFNbPFZvmmZCQBrQBpQBlQBi@Base 15 ++ _D4core6thread5fiber5Fiber6__initZ@Base 15 ++ _D4core6thread5fiber5Fiber6__vtblZ@Base 15 ++ _D4core6thread5fiber5Fiber7__ClassZ@Base 15 ++ _D4core6thread5fiber5Fiber7getThisFNbNiNfZCQBpQBnQBjQBg@Base 15 ++ _D4core6thread5fiber5Fiber9freeStackMFNbNiZv@Base 15 ++ _D4core6thread5fiber5Fiber9initStackMFNbNiZv@Base 15 ++ _D4core6thread5types11__moduleRefZ@Base 15 ++ _D4core6thread5types12__ModuleInfoZ@Base 15 ++ _D4core6thread5types13ll_ThreadData6__initZ@Base 15 ++ _D4core6thread5types17PTHREAD_STACK_MINym@Base 15 ++ _D4core6thread5types24_sharedStaticCtor_L54_C1FZv@Base 15 ++ _D4core6thread7context11__moduleRefZ@Base 15 ++ _D4core6thread7context12StackContext6__initZ@Base 15 ++ _D4core6thread7context12__ModuleInfoZ@Base 15 ++ _D4core6thread7context8Callable6__initZ@Base 15 ++ _D4core6thread7context8Callable6opCallMFZv@Base 15 ++ _D4core6thread7context8Callable8opAssignMFNaNbNiNfDFZvZv@Base 15 ++ _D4core6thread7context8Callable8opAssignMFNaNbNiNfPFZvZv@Base 15 ++ _D4core6thread8osthread11__moduleRefZ@Base 15 ++ _D4core6thread8osthread11getStackTopFNbNiZPv@Base 15 ++ _D4core6thread8osthread11swapContextFNbNiPvZQd@Base 15 ++ _D4core6thread8osthread12__ModuleInfoZ@Base 15 ++ _D4core6thread8osthread12attachThreadFNbNiCQBpQBn10threadbase10ThreadBaseZQBg@Base 15 ++ _D4core6thread8osthread12suspendCountSQBk3sys5posix9semaphore5sem_t@Base 15 ++ _D4core6thread8osthread12thread_yieldFNbNiZv@Base 15 ++ _D4core6thread8osthread14getStackBottomFNbNiZPv@Base 15 ++ _D4core6thread8osthread15adjustStackSizeFNbNimZm@Base 15 ++ _D4core6thread8osthread16_mainThreadStoreG185v@Base 15 ++ _D4core6thread8osthread17thread_entryPointUNbPvZ21thread_cleanupHandlerUNaNbNiQBhZv@Base 15 ++ _D4core6thread8osthread18callWithStackShellFNbMDFNbPvZvZv@Base 15 ++ _D4core6thread8osthread18joinLowLevelThreadFNbNimZv@Base 15 ++ _D4core6thread8osthread18resumeSignalNumberi@Base 15 ++ _D4core6thread8osthread19suspendSignalNumberi@Base 15 ++ _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZ20thread_lowlevelEntryUNbPvZQd@Base 15 ++ _D4core6thread8osthread20createLowLevelThreadFNbNiDFNbZvkQhZm@Base 15 ++ _D4core6thread8osthread6Thread12PRIORITY_MAXFNaNbNdNiNeZxi@Base 15 ++ _D4core6thread8osthread6Thread12PRIORITY_MINFNaNbNdNiNeZi@Base 15 ++ _D4core6thread8osthread6Thread14loadPrioritiesFNbNiNeZSQCbQBzQBvQBp8Priority@Base 15 ++ _D4core6thread8osthread6Thread16PRIORITY_DEFAULTFNaNbNdNiNeZi@Base 15 ++ _D4core6thread8osthread6Thread3runMFZv@Base 15 ++ _D4core6thread8osthread6Thread4joinMFbZC6object9Throwable@Base 15 ++ _D4core6thread8osthread6Thread5cacheOSQBkQBiQBeQy8Priority@Base 15 ++ _D4core6thread8osthread6Thread5sleepFNbNiNeSQBq4time8DurationZv@Base 15 ++ _D4core6thread8osthread6Thread5startMFNbZCQBoQBmQBiQBc@Base 15 ++ _D4core6thread8osthread6Thread5yieldFNbNiZv@Base 15 ++ _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfDFZvmZCQCaQByQBuQBo@Base 15 ++ _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfPFZvmZCQCaQByQBuQBo@Base 15 ++ _D4core6thread8osthread6Thread6__ctorMFNaNbNiNfmZCQBwQBuQBqQBk@Base 15 ++ _D4core6thread8osthread6Thread6__dtorMFNbNiNlZv@Base 15 ++ _D4core6thread8osthread6Thread6__initZ@Base 15 ++ _D4core6thread8osthread6Thread6__vtblZ@Base 15 ++ _D4core6thread8osthread6Thread7__ClassZ@Base 15 ++ _D4core6thread8osthread6Thread7getThisFNbNiNfZCQBtQBrQBnQBh@Base 15 ++ _D4core6thread8osthread6Thread8Priority6__initZ@Base 15 ++ _D4core6thread8osthread6Thread8priorityMFNdZi@Base 15 ++ _D4core6thread8osthread6Thread8priorityMFNdiZv@Base 15 ++ _D4core6thread8osthread6Thread9isRunningMFNbNdNiZb@Base 15 ++ _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d4158ZQBtFNbNiNfZi@Base 15 ++ _D4core6thread8osthread6Thread__T10loadGlobalVAyaa12_5052494f524954595f4d494eZQBtFNbNiNfZi@Base 15 ++ _D4core6thread8osthread6Thread__T10loadGlobalVAyaa16_5052494f524954595f44454641554c54ZQCbFNbNiNfZi@Base 15 ++ _D4core6thread8osthread6resumeFNbNiCQBiQBg10threadbase10ThreadBaseZv@Base 15 ++ _D4core6thread8osthread7suspendFNbNiCQBjQBhQBd6ThreadZb@Base 15 ++ _D4core6thread8osthread8toThreadFNaNbNiNeNkMCQBrQBp10threadbase10ThreadBaseZCQCxQCvQCr6Thread@Base 15 ++ _D4core6vararg11__moduleRefZ@Base 15 ++ _D4core6vararg12__ModuleInfoZ@Base 15 ++ _D4core7factory11__moduleRefZ@Base 15 ++ _D4core7factory12__ModuleInfoZ@Base 15 ++ _D4core7runtime11__moduleRefZ@Base 15 ++ _D4core7runtime12__ModuleInfoZ@Base 15 ++ _D4core7runtime14UnitTestResult6__initZ@Base 15 ++ _D4core7runtime18runModuleUnitTestsUZ19unittestSegvHandlerUiPSQCi3sys5posix6signal9siginfo_tPvZv@Base 15 ++ _D4core7runtime19defaultTraceHandlerFPvZC6object9Throwable9TraceInfo@Base 15 ++ _D4core7runtime19defaultTraceHandlerFPvZ__T8allocateTC3gcc9backtrace12LibBacktraceTiZQBqFNiiZQBo@Base 15 ++ _D4core7runtime23defaultTraceDeallocatorFNbC6object9Throwable9TraceInfoZv@Base 15 ++ _D4core7runtime25_sharedStaticCtor_L121_C1FZv@Base 15.2 ++ _D4core7runtime5CArgs6__initZ@Base 15 ++ _D4core7runtime7Runtime10initializeFZb@Base 15 ++ _D4core7runtime7Runtime16moduleUnitTesterFNdPFZbZv@Base 15 ++ _D4core7runtime7Runtime16moduleUnitTesterFNdZPFZb@Base 15 ++ _D4core7runtime7Runtime19sm_moduleUnitTesterPFZb@Base 15 ++ _D4core7runtime7Runtime22sm_extModuleUnitTesterPFZSQBxQBv14UnitTestResult@Base 15 ++ _D4core7runtime7Runtime24extendedModuleUnitTesterFNdPFZSQCcQCa14UnitTestResultZv@Base 15 ++ _D4core7runtime7Runtime24extendedModuleUnitTesterFNdZPFZSQCdQCb14UnitTestResult@Base 15 ++ _D4core7runtime7Runtime6__initZ@Base 15 ++ _D4core7runtime7Runtime9terminateFZb@Base 15 ++ _D4core8builtins11__ctfeWriteFNaNbNiNfMAxaZv@Base 15 ++ _D4core8builtins11__moduleRefZ@Base 15 ++ _D4core8builtins12__ModuleInfoZ@Base 15 ++ _D4core8demangle11__moduleRefZ@Base 15 ++ _D4core8demangle11demangleCXXFNaNbNeNkMAxaPUNaNbNexPaPaPmPiZQhNkMAaZQd@Base 15 ++ _D4core8demangle12__ModuleInfoZ@Base 15 ++ _D4core8demangle12demangleTypeFNaNbNfAxaAaZQd@Base 15 ++ _D4core8demangle14__cxa_demangleOPUNaNbNexPaPaPmPiZQh@Base 15 ++ _D4core8demangle15getCXXDemanglerFNbNeZ1_UNaNbNiNexPaPaPmPiZQh@Base 15 ++ _D4core8demangle15getCXXDemanglerFNbNeZPUNaNbNexPaPaPmPiZQh@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks10parseLNameMFNaNbNlNeJAyaMKSQDkQDi__T8DemangleTSQEeQEcQDwFNaNbNfNkMQDiZQDiZQBmZb@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11__xopEqualsMxFKxSQDaQCyQCsFNaNbNfNkMQCeZQCeZb@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13encodeBackrefMFNaNbNlNfmZv@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks13flushPositionMFNaNbNlNfKSQDiQDg__T8DemangleTSQEcQEaQDuFNaNbNfNkMQDgZQDgZQBmZv@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks16positionInResultMFNaNbNiNlNfmZm@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9__xtoHashFNbNeKxSQCzQCxQCrFNaNbNfNkMQCdZQCdZm@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks9parseTypeMFNaNbNjNlNfJbKSQDhQDf__T8DemangleTSQEbQDzQDtFNaNbNfNkMQDfZQDfZQBmAaZQd@Base 15 ++ _D4core8demangle15reencodeMangledFNaNbNfNkMAxaZAa@Base 15 ++ _D4core8demangle15toStringConsumeFNaNbNiNfyASQBrQBp16ManglingFlagInfoKtZAya@Base 15 ++ _D4core8demangle16ManglingFlagInfo11__xopEqualsMxFKxSQBzQBxQBrZb@Base 15 ++ _D4core8demangle16ManglingFlagInfo6__initZ@Base 15 ++ _D4core8demangle16ManglingFlagInfo9__xtoHashFNbNeKxSQByQBwQBqZm@Base 15 ++ _D4core8demangle6Buffer11__xopEqualsMxFKxSQBoQBmQBgZb@Base 15 ++ _D4core8demangle6Buffer12bslice_emptyFNaNbNiNlNfZSQBwQBu8BufSlice@Base 15 ++ _D4core8demangle6Buffer18checkAndStretchBufMFNaNbNlNfmZv@Base 15 ++ _D4core8demangle6Buffer5shiftMFNaNbNjNlNfMxSQBqQBo8BufSliceZSQChQCfQr@Base 15 ++ _D4core8demangle6Buffer6__initZ@Base 15 ++ _D4core8demangle6Buffer6appendMFNaNbNlNfMAxaZv@Base 15 ++ _D4core8demangle6Buffer6bsliceMFNaNbNiNlNfmmZSQBsQBq8BufSlice@Base 15 ++ _D4core8demangle6Buffer6lengthMxFNaNbNiNlNfZm@Base 15 ++ _D4core8demangle6Buffer6removeMFNaNbNlNfMSQBoQBm8BufSliceZv@Base 15 ++ _D4core8demangle6Buffer7opSliceMFNaNbNiNjNlNfmmZSQBvQBt8BufSlice@Base 15 ++ _D4core8demangle6Buffer8containsFNaNbNfMAxaMxSQBsQBq8BufSliceZb@Base 15 ++ _D4core8demangle6Buffer9__xtoHashFNbNeKxSQBnQBlQBfZm@Base 15 ++ _D4core8demangle6Buffer9copyInputMFNaNbNjNlNfMAxaZAa@Base 15 ++ _D4core8demangle7NoHooks6__initZ@Base 15 ++ _D4core8demangle8BufSlice11__invariantMxFNaNbNfZv@Base 15 ++ _D4core8demangle8BufSlice11__xopEqualsMxFKxSQBqQBoQBiZb@Base 15 ++ _D4core8demangle8BufSlice12__invariant0MxFNaNbNfZv@Base 15 ++ _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAaZSQBzQBxQBr@Base 15 ++ _D4core8demangle8BufSlice6__ctorMFNaNbNcNiNlNfNkMAammbZSQCcQCaQBu@Base 15 ++ _D4core8demangle8BufSlice6__initZ@Base 15 ++ _D4core8demangle8BufSlice6lengthMxFNaNbNlNfZm@Base 15 ++ _D4core8demangle8BufSlice8getSliceMNgFNaNbNiNlNfZANga@Base 15 ++ _D4core8demangle8BufSlice9__xtoHashFNbNeKxSQBpQBnQBhZm@Base 15 ++ _D4core8demangle9funcAttrsyASQBbQz16ManglingFlagInfo@Base 15 ++ _D4core8demangle9typeCtorsyASQBbQz16ManglingFlagInfo@Base 15 ++ _D4core8demangleQjFNaNbNfNkMAxaNkMAaPUNaNbNexPaPaPmPiZQhZQx@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFMDFyPS6object10ModuleInfoZiZiTQBfZQByFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbMDFNbPvZvZvTQpZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiAyaMDFNbNiQkZQnbZQrTQzZQBrFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiAyakQeQgmZvTQrZQBjFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZQBkTQBtZQCmFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiCQBm6thread10threadbase10ThreadBaseZvTQBrZQCkFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiPvZQdTQlZQBdFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiPvZvTQkZQBcFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiZPvTQjZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiZmTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbNiZvTQiZQBaFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T10mangleFuncHTPFNbPvMDFNbQhQjZvZvTQtZQBlFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEgQEe__TQDyTQDuZQEgFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEfQEd__TQDxTQDtZQEfFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFMDFyPS6object10ModuleInfoZiZiZQBnFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDpQDn__TQDhTQDdZQDpFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDoQDm__TQDgTQDcZQDoFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEaQDy__TQDsTQDoZQEaFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDzQDx__TQDrTQDnZQDzFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDrQDp__TQDjTQDfZQDrFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDqQDo__TQDiTQDeZQDqFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEuQEs__TQEmTQEiZQEuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQEtQEr__TQElTQEhZQEtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZQBkZQCbFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQEsQEq__TQEkTQEgZQEsFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQErQEp__TQEjTQEfZQErFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiCQBf6thread10threadbase10ThreadBaseZvZQBzFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDlQDj__TQDdTQCzZQDlFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDkQDi__TQDcTQCyZQDkFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDjQDh__TQDbTQCxZQDjFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDiQDg__TQDaTQCwZQDiFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDhQDf__TQCzTQCvZQDhFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter10indexOfDotMxFNaNbNiNlNfZl@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter11__xopEqualsMxFKxSQDuQDs__TQDmTQDiZQDuFNaNbNfNkMQCtNkMQCtZQCuZb@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter5frontMxFNaNbNdNiNjNlNfZQBu@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter8popFrontMFNaNbNiNlNfZv@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter9__xtoHashFNbNeKxSQDtQDr__TQDlTQDhZQDtFNaNbNfNkMQCsNkMQCsZQCtZm@Base 15 ++ _D4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZQd@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10isHexDigitFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseLNameMFNaNbNlNfJAyaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbMSQEfQEd8BufSliceaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl10parseValueMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11__xopEqualsMxFKxSQDyQDw__TQDqTQDkZQDyZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11peekBackrefMFNaNbNiNfZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl11sliceNumberMFNaNbNiNjNlNfZQBy@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbMQBzZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12decodeNumberMFNaNbNiNlNfJbZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleNameMFNaNbNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl12demangleTypeMFNaNbNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseFuncAttrMFNaNbNiNfJbZt@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl13parseModifierMFNaNbNiNfZt@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl15parseSymbolNameMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16isCallConventionFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseIntegerValueMFNaNbNlNfJbMSQEmQEk8BufSliceaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl17parseTypeFunctionMFNaNbNjNlNfJbEQEnQEl__TQEfTQDzZQEn10IsDelegateZSQFvQFt8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseCallConventionMFNaNbNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl19parseMangledNameArgMFNaNbNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQEvQEt8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3eatMFNaNbNiNfaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3padMFNaNbNfQBiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMQBnZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfMSQDxQDv8BufSliceZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl3putMFNaNbNjNlNfaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4peekMFNaNbNiNfmZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl4testMFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5emptyMFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5frontMFNaNbNdNiNfZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfQBmZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5matchMFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl5shiftMFNaNbNjNlNfMxSQEaQDy8BufSliceZSQErQEpQr@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsEQEfQEd__TQDxTQDrZQEf7AddTypeNkMAaZSQFoQFm__TQFgTQFaZQFo@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__ctorMFNaNbNcNiNfNkMQBsNkMAaZSQElQEj__TQEdTQDxZQEl@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isAlphaFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl7isDigitFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8popFrontMFNaNbNiNfiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putAsHexMFNaNbNfmiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl8putCommaMFNaNbNfmZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9__xtoHashFNbNeKxSQDxQDv__TQDpTQDjZQDxZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9ascii2hexFNaNbNiNfJbaZh@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseRealMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl9parseTypeMFNaNbNjNlNfJbZSQEfQEd8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleSQDvQDt__TQDnTQDhZQDv16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T10doDemangleS_DQDxQDv__TQDpTQDjZQDx9parseTypeMFNaNbNjNlNfJbZSQFrQFp8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10isHexDigitFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseLNameMFNaNbNlNfJAyaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbMSQCuQCs8BufSliceaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10parseValueMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11__xopEqualsMxFKxSQCnQCl__TQCfTQBzZQCnZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11peekBackrefMFNaNbNiNfZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa11sliceNumberMFNaNbNiNjNlNfZAxa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbMAxaZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12decodeNumberMFNaNbNiNlNfJbZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleNameMFNaNbNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa12demangleTypeMFNaNbNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseFuncAttrMFNaNbNiNfJbZt@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa13parseModifierMFNaNbNiNfZt@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa15parseSymbolNameMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16isCallConventionFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa16parseMangledNameMFNaNbNlNfJbbmZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17isSymbolNameFrontMFNaNbNiNfJbZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseIntegerValueMFNaNbNlNfJbMSQDbQCz8BufSliceaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTemplateArgsMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa17parseTypeFunctionMFNaNbNjNlNfJbEQDcQDa__TQCuTQCoZQDc10IsDelegateZSQEkQEi8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseFuncArgumentsMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa18parseQualifiedNameMFNaNbNjNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19mayBeMangledNameArgMFNaNbNiNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseCallConventionMFNaNbNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa19parseMangledNameArgMFNaNbNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25mayBeTemplateInstanceNameMFNaNbNiNlNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseFunctionTypeNoReturnMFNaNbNjNlNfbZSQDkQDi8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa25parseTemplateInstanceNameMFNaNbNlNfJbbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3eatMFNaNbNiNfaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3padMFNaNbNfAxaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMAxaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfMSQCmQCk8BufSliceZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa3putMFNaNbNjNlNfaZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4peekMFNaNbNiNfmZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa4testMFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5emptyMFNaNbNdNiNfZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5frontMFNaNbNdNiNfZa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfAxaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5matchMFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa5shiftMFNaNbNjNlNfMxSQCpQCn8BufSliceZSQDgQDeQr@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaEQCuQCs__TQCmTQCgZQCu7AddTypeNkMAaZSQEdQEb__TQDvTQDpZQEd@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__ctorMFNaNbNcNiNfNkMAxaNkMAaZSQDaQCy__TQCsTQCmZQDa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6silentMFNaNbNfJbDFNaNbNfJbZvZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isAlphaFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7isDigitFNaNbNiNfaZb@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8popFrontMFNaNbNiNfiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putAsHexMFNaNbNfmiZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa8putCommaMFNaNbNfmZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9__xtoHashFNbNeKxSQCmQCk__TQCeTQByZQCmZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9ascii2hexFNaNbNiNfJbaZh@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseRealMFNaNbNlNfJbZv@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZ10primitivesyG23Aa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa9parseTypeMFNaNbNjNlNfJbZSQCuQCs8BufSlice@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleSQCkQCi__TQCcTQBwZQCk16parseMangledNameZQCaMFNaNbNjNlNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T10doDemangleS_DQCmQCk__TQCeTQByZQCm9parseTypeMFNaNbNjNlNfJbZSQEgQEe8BufSliceZQCzMFNaNbNjNlNfZAa@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVii0ZQuMFNaNbNiNfZm@Base 15 ++ _D4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa__T13decodeBackrefVmi1ZQuMFNaNbNiNfZm@Base 15 ++ _D4core8internal10attributes11__moduleRefZ@Base 15 ++ _D4core8internal10attributes12__ModuleInfoZ@Base 15 ++ _D4core8internal10entrypoint11__moduleRefZ@Base 15 ++ _D4core8internal10entrypoint12__ModuleInfoZ@Base 15 ++ _D4core8internal11destruction11__moduleRefZ@Base 15 ++ _D4core8internal11destruction12__ModuleInfoZ@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3gcc8sections3elf9ThreadDSOZQBvFNaNbNiNfKQBqZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std11concurrency7MessageZQBtFNfKQBiZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQKaFNaNbNiKQJtZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std3net4curl3FTP4ImplZQBqFKQBdZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std3net4curl4HTTP4ImplZQBrFKQBeZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std3net4curl4SMTP4ImplZQBrFKQBeZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCrFNaNbNiNfKQCmZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCsFNaNbNiNfKQCnZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCsFNaNbNiNfKQCnZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQDsFNaNbNiNfKQDnZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std4file15DirIteratorImplZQBuFNfKQBjZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std5range__T10OnlyResultTaZQpZQByFNaNbNiNfKQBtZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBbZQClFNaNbNiNfKQCgZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTS3std5stdio4FileZQBjFNfKQyZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface4RootZQBsFNaNbNiNfKQBnZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBx2gc11gcinterface5RangeZQBtFNaNbNiNfKQBoZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDnFNaNbNiNfKQDiZv@Base 15 ++ _D4core8internal11destruction__T15destructRecurseTSQBxQBv9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDlFNaNbNiNfKQDgZv@Base 15 ++ _D4core8internal12parseoptions10parseErrorFNbNiMxAaMxQeMxQiAxaZb@Base 15 ++ _D4core8internal12parseoptions11__moduleRefZ@Base 15 ++ _D4core8internal12parseoptions12__ModuleInfoZ@Base 15 ++ _D4core8internal12parseoptions15overflowedErrorFNbNiMxAaMxQeZb@Base 15 ++ _D4core8internal12parseoptions3minFNbNimmZm@Base 15 ++ _D4core8internal12parseoptions5parseFNbNiAxaKANgaKQfQlZb@Base 15 ++ _D4core8internal12parseoptions5parseFNbNiAxaKANgaKbQkZb@Base 15 ++ _D4core8internal12parseoptions5parseFNbNiAxaKANgaKfQkZb@Base 15 ++ _D4core8internal12parseoptions6MemVal6__initZ@Base 15 ++ _D4core8internal12parseoptions8optErrorFNbNiMxAaMxQeAxaZb@Base 15 ++ _D4core8internal12parseoptions__T12parseOptionsTSQBv2gc6config6ConfigZQBlFNbNiKQBfAyaZb@Base 15 ++ _D4core8internal12parseoptions__T14rt_parseOptionTbZQtFNbNiAxaKANgaKbQkZb@Base 15 ++ _D4core8internal12parseoptions__T17initConfigOptionsTSQCa2gc6config6ConfigZQBqFNbNiKQBfAyaZb@Base 15 ++ _D4core8internal12parseoptions__T4skipX7isspaceZQpFNaNbNiNfANgaZQf@Base 15 ++ _D4core8internal12parseoptions__T5parseHThZQkFNbNiAxaKANgaKhQkbZb@Base 15 ++ _D4core8internal12parseoptions__T5parseHTkZQkFNbNiAxaKANgaKkQkbZb@Base 15 ++ _D4core8internal12parseoptions__T5parseHTmZQkFNbNiAxaKANgaKmQkbZb@Base 15 ++ _D4core8internal2gc2os10isLowOnMemFNbNimZb@Base 15 ++ _D4core8internal2gc2os10os_mem_mapFNbNimbZPv@Base 15 ++ _D4core8internal2gc2os11__moduleRefZ@Base 15 ++ _D4core8internal2gc2os12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc2os12os_mem_unmapFNbNiPvmZi@Base 15 ++ _D4core8internal2gc2os15os_physical_memFNbNibZm@Base 15 ++ _D4core8internal2gc2os8wait_pidFNbNiibZEQBmQBkQBeQBe11ChildStatus@Base 15 ++ _D4core8internal2gc4bits11__moduleRefZ@Base 15 ++ _D4core8internal2gc4bits12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc4bits6GCBits10clearWordsMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits10copyRangeZMFNbNimmPxmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits16copyWordsShiftedMFNbNimmmPxmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits18copyRangeRepeatingMFNbNimmPxmmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits3setMFNaNbNiNlNemZi@Base 15 ++ _D4core8internal2gc4bits6GCBits4DtorMFNbNibZv@Base 15 ++ _D4core8internal2gc4bits6GCBits4copyMFNbNiPSQBqQBoQBiQBiQBgZv@Base 15 ++ _D4core8internal2gc4bits6GCBits4testMxFNaNbNiNlNemZm@Base 15 ++ _D4core8internal2gc4bits6GCBits4zeroMFNbNiZv@Base 15 ++ _D4core8internal2gc4bits6GCBits5allocMFNbNimbZv@Base 15 ++ _D4core8internal2gc4bits6GCBits5clearMFNaNbNiNlNemZi@Base 15 ++ _D4core8internal2gc4bits6GCBits6__initZ@Base 15 ++ _D4core8internal2gc4bits6GCBits6nwordsMxFNaNbNdNiZm@Base 15 ++ _D4core8internal2gc4bits6GCBits6setAllMFNbNiZv@Base 15 ++ _D4core8internal2gc4bits6GCBits8clrRangeMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits8setRangeMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits8setWordsMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits9clrRangeZMFNbNimmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits9copyRangeMFNbNimmPxmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits9copyWordsMFNbNimmPxmZv@Base 15 ++ _D4core8internal2gc4bits6GCBits9setLockedMFNaNbNiNlNemZm@Base 15 ++ _D4core8internal2gc4bits6GCBits9setRangeZMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10baseOffsetFNbNimEQCfQCdQBxQBxQBvQCg4BinsZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10extendTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10initializeFZCQCbQBq11gcinterface2GC@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10invalidateFNbNiAvhbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10mallocTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10numExtendsl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw10numMallocsl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11__moduleRefZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11adjustAttrsFNbKkxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11calcBinBaseFZG15G256s@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11numReallocsl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw11reallocTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector10initializeFNbPSQCrQCpQCjQCjQChQCs3GcxZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_mallocFNbPvmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector10log_parentFNbPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector11log_collectFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12LeakDetector8log_freeFNbNiPvmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12maxPauseTimeSQCb4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12sentinel_addFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw12sentinel_subFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw13maxPoolMemorym@Base 15 ++ _D4core8internal2gc4impl12conservativeQw13sentinel_initFNbNiPvmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw13sentinel_sizeFNbNixPvmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw13setupMetadataFNbAvkmmxC8TypeInfoZQr@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC10freeNoSyncMFNbNiPvZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11checkNoSyncMFNbPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZ2goFNbPSQDcQDaQCuQCuQCsQDd3GcxZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11fullCollectMFNbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11queryNoSyncMFNbPvZSQCx6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12_inFinalizerb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12addrOfNoSyncMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12extendNoSyncMFNbPvmmxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12mallocNoSyncMFNbmkKmxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC12sizeOfNoSyncMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQt@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC13reserveNoSyncMFNbmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZ2goFNbPSQDiQDgQDaQDaQCyQDj3GcxMxQBjZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC14getStatsNoSyncMFNbNiNeJSQDc6memory2GC5StatsZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC4filePa@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC4linem@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC5checkMFNbPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__ctorMFZCQCnQClQCfQCfQCdQCoQBt@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__dtorMFNlZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6__vtblZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZ2goFNaNbNiNfPSQDaQCyQCsQCsQCqQDb3GcxZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6gcLockOSQClQCj8spinlock15AlignedSpinLock@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6lockNRFNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7__ClassZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZ2goFNaNbNiNfPSQDbQCzQCtQCtQCrQDc3GcxZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZ2goFNbPSQCzQCxQCrQCrQCpQDa3GcxQBhZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZ2goFNbPSQDaQCyQCsQCsQCqQDb3GcxQBikZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZ2goFNbPSQCyQCwQCqQCqQCoQCz3GcxZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC9isPreciseb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy10freeNoSyncMFNbNiPvZbS_DQEmQEkQEeQEeQEcQEn8freeTimelS_DQFrQFpQFjQFjQFhQFs8numFreeslTQCpZQEtMFNbNiKQDdZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11checkNoSyncMFNbPvZvS_DQElQEjQEdQEdQEbQEm9otherTimelS_DQFrQFpQFjQFjQFhQFs9numOtherslTQCrZQEuMFNbKQDdZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11fullCollectMFNbZ2goFNbPSQEnQElQEfQEfQEdQEo3GcxZmTQBbZQDlMFNbKQBnZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy11queryNoSyncMFNbPvZSQEi6memory8BlkInfo_S_DQFeQFcQEwQEwQEuQFf9otherTimelS_DQGkQGiQGcQGcQGaQGl9numOtherslTQDkZQFnMFNbKQDwZQDx@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12addrOfNoSyncMFNbNiPvZQdS_DQEpQEnQEhQEhQEfQEq9otherTimelS_DQFvQFtQFnQFnQFlQFw9numOtherslTQCsZQEyMFNbNiKQDgZQDk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12extendNoSyncMFNbPvmmxC8TypeInfoZmS_DQEzQExQErQErQEpQFa10extendTimelS_DQGhQGfQFzQFzQFxQGi10numExtendslTQDiTmTmTxQDmZQFvMFNbKQEdKmKmKxQEhZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTmTkTmTxQDlZQFuMFNbKmKkKmKxQEeZQDx@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12mallocNoSyncMFNbmkKmxC8TypeInfoZPvS_DQFaQEyQEsQEsQEqQFb10mallocTimelS_DQGiQGgQGaQGaQFyQGj10numMallocslTymTkTmTxQDmZQFvMFNbKymKkKmKxQEgZQDz@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy12sizeOfNoSyncMFNbNiPvZmS_DQEoQEmQEgQEgQEeQEp9otherTimelS_DQFuQFsQFmQFmQFkQFv9numOtherslTQCrZQExMFNbNiKQDfZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reallocNoSyncMFNbPvmKkKmxC8TypeInfoZQtS_DQFeQFcQEwQEwQEuQFf10mallocTimelS_DQGmQGkQGeQGeQGcQGn10numMallocslTQDmTmTkTmTxQDpZQGcMFNbKQEjKmKkKmKxQEmZQEy@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13reserveNoSyncMFNbmZmS_DQEmQEkQEeQEeQEcQEn9otherTimelS_DQFsQFqQFkQFkQFiQFt9numOtherslTmZQEtMFNbKmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy13runFinalizersMFNbMxAvZ2goFNbPSQEtQErQElQElQEjQEu3GcxMxQBjZvS_DQFzQFxQFrQFrQFpQGa9otherTimelS_DQHfQHdQGxQGxQGvQHg9numOtherslTQDsTxQEgZQGnMFNbKQEjKxQExZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy14getStatsNoSyncMFNbNiNeJSQEn6memory2GC5StatsZvS_DQFlQFjQFdQFdQFbQFm9otherTimelS_DQGrQGpQGjQGjQGhQGs9numOtherslTQDjZQFuMFNbNiNfKQDzZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy6enableMFZ2goFNaNbNiNfPSQElQEjQEdQEdQEbQEm3GcxZvS_DQFmQFkQFeQFeQFcQFn9otherTimelS_DQGsQGqQGkQGkQGiQGt9numOtherslTQDnZQFvMFNbNiNfKQEdZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7clrAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7disableMFZ2goFNaNbNiNfPSQEmQEkQEeQEeQEcQEn3GcxZvS_DQFnQFlQFfQFfQFdQFo9otherTimelS_DQGtQGrQGlQGlQGjQGu9numOtherslTQDnZQFwMFNbNiNfKQEdZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7getAttrMFNbPvZ2goFNbPSQEkQEiQEcQEcQEaQEl3GcxQBhZkS_DQFoQFmQFgQFgQFeQFp9otherTimelS_DQGuQGsQGmQGmQGkQGv9numOtherslTQDqTQEdZQGbMFNbKQEgKQEtZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy7setAttrMFNbPvkZ2goFNbPSQElQEjQEdQEdQEbQEm3GcxQBikZkS_DQFqQFoQFiQFiQFgQFr9otherTimelS_DQGwQGuQGoQGoQGmQGx9numOtherslTQDrTQEfTkZQGfMFNbKQEjKQExKkZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14ConservativeGC__T9runLockedS_DQCsQCqQCkQCkQCiQCtQBy8minimizeMFNbZ2goFNbPSQEjQEhQEbQEbQDzQEk3GcxZvS_DQFkQFiQFcQFcQFaQFl9otherTimelS_DQGqQGoQGiQGiQGgQGr9numOtherslTQDnZQFtMFNbKQDzZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14SENTINEL_EXTRAxk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14baseOffsetBitsyG14G4m@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14bytesAllocatedm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw14numCollectionsm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool10allocPagesMFNbmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool18setFreePageOffsetsMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool7getSizeMxFNbNimZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool8getPagesMxFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool9freePagesMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi0Vbi1ZQBfMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15LargeObjectPool__T20mergeFreePageOffsetsVbi1Vbi1ZQBfMFNbNimmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getInfoMFNbPvZSQCt6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool7getSizeMxFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15SmallObjectPool9allocPageMFNbEQCsQCqQCkQCkQCiQCt4BinsZPSQDsQDqQDkQDkQDiQDt4List@Base 15 ++ _D4core8internal2gc4impl12conservativeQw15gc_precise_ctorFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw17maxCollectionTimeSQCg4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw18initialize_preciseFZCQCjQBy11gcinterface2GC@Base 15 ++ _D4core8internal2gc4impl12conservativeQw18sentinel_InvariantFNbNixPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw20gc_conservative_ctorFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZ23atforkHandlersInstalledb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10initializeMFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10removeRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10rootsApplyMFNbMDFNbKSQCnQCc11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx10smallAllocMFNbmKmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11__fieldDtorMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11__xopEqualsMxFKxSQCjQChQCbQCbQBzQCkQBpZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11collectForkMFNbbZEQCkQCiQCc2os11ChildStatus@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11disableForkMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11fullcollectMFNbbbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11rangesApplyMFNbMDFNbKSQCoQCd11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11recoverPageMFNbPSQCjQChQCbQCbQBzQCk15SmallObjectPoolmEQDuQDsQDmQDmQDkQDv4BinsZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx11removeRangeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx12collectRootsMFNbNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx12markParallelMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx14scanBackgroundMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx15collectAllRootsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx15fork_needs_lockb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx15recoverNextPageMFNbEQCmQCkQCeQCeQCcQCn4BinsZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx15stopScanThreadsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx16startScanThreadsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx17clearBlkCacheDataMFNbNlPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx17collectInProgressMxFNbNdZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx17pullFromScanStackMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx18maxParallelThreadsMFNbZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx18setNextRecoverPoolMFNbEQCpQCnQChQChQCfQCq4BinsmZPSQDqQDoQDiQDiQDgQDr15SmallObjectPool@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx19_d_gcx_atfork_childUZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx20_d_gcx_atfork_parentUZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx21_d_gcx_atfork_prepareUZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ11smoothDecayFNaNbNiNfffZf@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZ3maxFNaNbNiNfffZf@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx23updateCollectThresholdsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx4DtorMFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx5allocMFNbmKmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx5sweepMFNbZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx6lowMemMxFNbNdZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7addRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7getInfoMFNbPvZSQCg6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7newPoolMFNbmbZPSQChQCfQBzQBzQBxQCi4Pool@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7prepareMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx7reserveMFNbmZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8addRangeMFNbNiPvQcxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8bigAllocMFNbmKmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8binTableyG2049EQCgQCeQByQByQBwQCh4Bins@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8ctfeBinsFNbZG2049EQCjQChQCbQCbQBzQCk4Bins@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8findBaseMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8findPoolMFNaNbNiPvZPSQCmQCkQCeQCeQCcQCn4Pool@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8findSizeMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8instancePSQCbQBzQBtQBtQBrQCcQBh@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8isMarkedMFNbNlPvZEQCjQChQCb8blkcache8IsMarked@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZ13wrap_delegateUPvZi@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8markForkMFNbbbZEQChQCfQBz2os11ChildStatus@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx8minimizeMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx9InvariantMxFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx9__xtoHashFNbNeKxSQCiQCgQCaQCaQByQCjQBoZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx9allocPageMFNbEQCfQCdQBxQBxQBvQCg4BinsZPSQDfQDdQCxQCxQCvQDg4List@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr3popMFNaNbNiZQs@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4growMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr4pushMFNbNiQqZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5clearMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr5resetMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr7opIndexMNgFNaNbNcNimZNgPv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr8opAssignMFNaNbNcNiNjNeSQDkQDiQDcQDcQDaQDlQCq__TQCpTQCfZQCxZQBl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr9popLockedMFNbNiKQwZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf3popMFNaNbNiZQCh@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4growMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf4pushMFNbNiQCfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5clearMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf5resetMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi0ZQDa@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi0ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf3popMFNaNbNiZQCh@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4growMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf4pushMFNbNiQCfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5clearMFNaNbNiNfZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf5resetMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf7opIndexMNgFNaNbNcNimZNgSQFaQEyQEsQEsQEqQFbQEg__TQCsVbi1ZQDa@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf8opAssignMFNaNbNcNiNjNeSQEzQExQErQErQEpQFaQEf__TQEeTQDuZQEmZQBl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTSQCiQCgQCaQCaQByQCjQBo__T9ScanRangeVbi1ZQpZQCf9popLockedMFNbNiKQClZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi0ZQsMFNbNiNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T11markPreciseVbi1ZQsMFNbNiNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi0ZQxMFNbNiNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T16markConservativeVbi1ZQxMFNbNiNlPvQcZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi0ZQBcMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T21pullFromScanStackImplVbi1ZQBcMFNbNiZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi0Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi0ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi0ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi0Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T4markVbi1Vbi1Vbi1ZQsMFNbNiNlSQCwQCuQCoQCoQCmQCxQCc__T9ScanRangeVbi1ZQpZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi0ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T11markPreciseVbi1ZQsMFNbNiNlPvQcZvZQCsMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi0ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T7markAllS_DQCeQCcQBwQBwQBuQCfQBk__T16markConservativeVbi1ZQxMFNbNiNlPvQcZvZQCxMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw3setFNaNbNiKG4mmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool10initializeMFNbmbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool12freePageBitsMFNbmMKxG4mZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool15freeAllPageBitsMFNbmZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool16setPointerBitmapMFNbPvmmxC8TypeInfokZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool21setPointerBitmapSmallMFNbPvmmkxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool4DtorMFNbZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool6isFreeMxFNaNbNdNiNlNfZb@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool7clrBitsMFNbNimkZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool7getBitsMFNbmZk@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool7setBitsMFNbmkZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool8findBaseMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool8numPagesFNbNimZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool9InvariantMxFZv@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool9pagenumOfMxFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool9slGetInfoMFNbPvZSQCj6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl12conservativeQw4Pool9slGetSizeMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl12conservativeQw7binbaseyG15G256s@Base 15 ++ _D4core8internal2gc4impl12conservativeQw7binsizeyG15s@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8freeTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8lockTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8markTimeSQBw4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8numFreesl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw8prepTimeSQBw4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw9numOthersl@Base 15 ++ _D4core8internal2gc4impl12conservativeQw9otherTimel@Base 15 ++ _D4core8internal2gc4impl12conservativeQw9pauseTimeSQBx4time8Duration@Base 15 ++ _D4core8internal2gc4impl12conservativeQw9sweepTimeSQBx4time8Duration@Base 15 ++ _D4core8internal2gc4impl5protoQo11__moduleRefZ@Base 15 ++ _D4core8internal2gc4impl5protoQo12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC10rootsApplyMFMDFNbKSQChQBw11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC11__fieldDtorMFNbNiNlZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC11rangesApplyMFMDFNbKSQCiQBx11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC22transferRangesAndRootsMFZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC4DtorMFZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6__ctorMFZCQBxQBvQBpQBpQBnQByQBl@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6__initZ@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6__vtblZ@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7__ClassZ@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl6manualQp10initializeFZCQBuQBj11gcinterface2GC@Base 15 ++ _D4core8internal2gc4impl6manualQp11__moduleRefZ@Base 15 ++ _D4core8internal2gc4impl6manualQp12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc4impl6manualQp14gc_manual_ctorFZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC10__aggrDtorMFNlZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC10rootsApplyMFMDFNbKSQCjQBy11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC11__fieldDtorMFNbNiNlZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC11rangesApplyMFMDFNbKSQCkQBz11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6__ctorMFZCQBzQBxQBrQBrQBpQCaQBm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6__dtorMFNlZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6__initZ@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6__vtblZ@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7__ClassZ@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 ++ _D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 ++ _D4core8internal2gc5proxy11__moduleRefZ@Base 15 ++ _D4core8internal2gc5proxy12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc5proxy12instanceLockOSQBnQBl8spinlock8SpinLock@Base 15 ++ _D4core8internal2gc5proxy14isInstanceInitb@Base 15 ++ _D4core8internal2gc5proxy8instanceFNbNiNeZCQBpQBe11gcinterface2GC@Base 15 ++ _D4core8internal2gc5proxy9_instanceCQBiQx11gcinterface2GC@Base 15 ++ _D4core8internal2gc5proxy9proxiedGCCQBiQx11gcinterface2GC@Base 15 ++ _D4core8internal2gc8blkcache10__blkcacheFNbNdNiZPSQBw6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc8blkcache11__moduleRefZ@Base 15 ++ _D4core8internal2gc8blkcache12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc8blkcache12__getBlkInfoFNbNiPvZPSQBy6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc8blkcache12__nextBlkIdxi@Base 15 ++ _D4core8internal2gc8blkcache14processGCMarksFNbPvMDFNbQhZEQCeQCcQBwQBw8IsMarkedZv@Base 15 ++ _D4core8internal2gc8blkcache18__blkcache_storagePSQBw6memory8BlkInfo_@Base 15 ++ _D4core8internal2gc8blkcache19_staticDtor_L66_C13FZv@Base 15.2 ++ _D4core8internal2gc8blkcache20__insertBlkInfoCacheFNbNiSQCc6memory8BlkInfo_PQvZv@Base 15 ++ _D4core8internal2gc9blockmeta10__allocPadFNaNbNemkZm@Base 15 ++ _D4core8internal2gc9blockmeta10__arrayPadFNaNbNemxC8TypeInfoZm@Base 15 ++ _D4core8internal2gc9blockmeta11__moduleRefZ@Base 15 ++ _D4core8internal2gc9blockmeta12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc9blockmeta13__trimExtentsFNaNbNiMKPvKmkZv@Base 15.2 ++ _D4core8internal2gc9blockmeta18__arrayAllocLengthFNaNbKSQCc6memory8BlkInfo_Zm@Base 15 ++ _D4core8internal2gc9blockmeta18structTypeInfoSizeFNaNbNixC8TypeInfoZm@Base 15 ++ _D4core8internal2gc9blockmeta20__arrayAllocCapacityFNaNbKSQCe6memory8BlkInfo_Zm@Base 15 ++ _D4core8internal2gc9blockmeta21__setArrayAllocLengthFNaNbKSQCf6memory8BlkInfo_mbxC8TypeInfomZb@Base 15 ++ _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_ZxC8TypeInfo@Base 15 ++ _D4core8internal2gc9blockmeta23__getBlockFinalizerInfoFNaNbPvmkZxC8TypeInfo@Base 15.2 ++ _D4core8internal2gc9blockmeta23__setBlockFinalizerInfoFNaNbKSQCh6memory8BlkInfo_xC8TypeInfoZv@Base 15 ++ _D4core8internal2gc9blockmeta24__arrayAllocLengthAtomicFNaNbKSQCi6memory8BlkInfo_Zm@Base 15 ++ _D4core8internal2gc9blockmeta25__setArrayAllocLengthImplFNaNbKSQCj6memory8BlkInfo_mbmmZb@Base 15 ++ _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMPvmZQe@Base 15.2 ++ _D4core8internal2gc9blockmeta__T12__arrayStartZQpFNaNbNiNkMSQCg6memory8BlkInfo_ZPv@Base 15 ++ _D4core8internal2gc9pooltable11__moduleRefZ@Base 15 ++ _D4core8internal2gc9pooltable12__ModuleInfoZ@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx4DtorMFNbNiZv@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6insertMFNbNiPQCdZb@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6lengthMxFNaNbNdNiNlNfZm@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7maxAddrMxFNaNbNdNiNfZPxv@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7minAddrMxFNaNbNdNiNfZPxv@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opIndexMNgFNaNbNcNiNjNemZNgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNeZANgPSQEgQEeQDyQCqQCoQEhQCd@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx7opSliceMNgFNaNbNiNjNemmZANgPSQEiQEgQEaQCsQCqQEjQCf@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8findPoolMFNaNbNiPvZPQCk@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZ4swapFNaNbNiNfKPQCxKQfZv@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx8minimizeMFNaNbNiZAPQCj@Base 15 ++ _D4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx9InvariantMxFNaNbNiZv@Base 15 ++ _D4core8internal3utf10UTF8strideyAi@Base 15 ++ _D4core8internal3utf10toUCSindexFNaNbNiNfMxAwmZm@Base 15 ++ _D4core8internal3utf10toUCSindexFNaNfMxAamZm@Base 15 ++ _D4core8internal3utf10toUCSindexFNaNfMxAumZm@Base 15 ++ _D4core8internal3utf10toUTFindexFNaNbNiNfMxAumZm@Base 15 ++ _D4core8internal3utf10toUTFindexFNaNbNiNfMxAwmZm@Base 15 ++ _D4core8internal3utf10toUTFindexFNaNfMxAamZm@Base 15 ++ _D4core8internal3utf11__moduleRefZ@Base 15 ++ _D4core8internal3utf12__ModuleInfoZ@Base 15 ++ _D4core8internal3utf12isValidDcharFNaNbNiNfwZb@Base 15 ++ _D4core8internal3utf6decodeFNaNfMxAaKmZw@Base 15 ++ _D4core8internal3utf6decodeFNaNfMxAuKmZw@Base 15 ++ _D4core8internal3utf6decodeFNaNfMxAwKmZw@Base 15 ++ _D4core8internal3utf6encodeFNaNbNfKAawZv@Base 15 ++ _D4core8internal3utf6encodeFNaNbNfKAuwZv@Base 15 ++ _D4core8internal3utf6encodeFNaNbNfKAwwZv@Base 15 ++ _D4core8internal3utf6strideFNaNbNiNfMxAamZk@Base 15 ++ _D4core8internal3utf6strideFNaNbNiNfMxAumZk@Base 15 ++ _D4core8internal3utf6strideFNaNbNiNfMxAwmZk@Base 15 ++ _D4core8internal3utf6toUTF8FNaNbNfNkMAyaZQe@Base 15 ++ _D4core8internal3utf6toUTF8FNaNbNiNfNkMAawZQe@Base 15 ++ _D4core8internal3utf6toUTF8FNaNeMxAuZAya@Base 15 ++ _D4core8internal3utf6toUTF8FNaNeMxAwZAya@Base 15 ++ _D4core8internal3utf7toUTF16FNaNbNeMxAwZAyu@Base 15 ++ _D4core8internal3utf7toUTF16FNaNbNfNkMAyuZQe@Base 15 ++ _D4core8internal3utf7toUTF16FNaNbNiNfNkMAuwZQe@Base 15 ++ _D4core8internal3utf7toUTF16FNaNeMxAaZAyu@Base 15 ++ _D4core8internal3utf7toUTF32FNaNbNfNkMAywZQe@Base 15 ++ _D4core8internal3utf7toUTF32FNaNeMxAaZAyw@Base 15 ++ _D4core8internal3utf7toUTF32FNaNeMxAuZAyw@Base 15 ++ _D4core8internal3utf8toUTF16zFNaNfMxAaZPxu@Base 15 ++ _D4core8internal3utf__T13isValidStringTAyaZQuFNaNbNfMxAyaZb@Base 15 ++ _D4core8internal3utf__T13isValidStringTAyuZQuFNaNbNfMxAyuZb@Base 15 ++ _D4core8internal3utf__T13isValidStringTAywZQuFNaNbNfMxAywZb@Base 15 ++ _D4core8internal4hash11__moduleRefZ@Base 15 ++ _D4core8internal4hash12__ModuleInfoZ@Base 15 ++ _D4core8internal4hash__T13coalesceFloatTdZQsFNaNbNiNfxdZd@Base 15 ++ _D4core8internal4hash__T13coalesceFloatTeZQsFNaNbNiNfxeZe@Base 15 ++ _D4core8internal4hash__T13coalesceFloatTfZQsFNaNbNiNfxfZf@Base 15 ++ _D4core8internal4hash__T6hashOfTAxE2rt4util7utility16__c_complex_realZQBuFNaNbNiNfQBymZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxE2rt4util7utility17__c_complex_floatZQBvFNaNbNiNfQBzmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxE2rt4util7utility18__c_complex_doubleZQBwFNaNbNiNfQCamZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxPvZQnFNaNbNiNfMxAQrmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxPyS6object10ModuleInfoZQBhFNaNbNiNfMxAQBmmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxaZQmFNaNbNiNfMxAamZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxdZQmFNaNbNiNfMxAdmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxeZQmFNaNbNiNfMxAemZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxfZQmFNaNbNiNfMxAfmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxhZQmFNaNbNiNfMxAhmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxkZQmFNaNbNiNfMxAkmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxmZQmFNaNbNiNfMxAmmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxtZQmFNaNbNiNfMxAtmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAxvZQmFNaNbNiNfMxAvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAyaZQmFNaNbNiNfMxAyamZm@Base 15 ++ _D4core8internal4hash__T6hashOfTAykZQmFNaNbNiNfMxAykmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTDFZvZQnFNaNbNiNeMxDQsmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTE3std8encoding3BOMZQBbFNaNbNiNeMxEQBhQBgQBaZm@Base 15 ++ _D4core8internal4hash__T6hashOfTG2kZQmFNaNbNiNfMKxG2kmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTG31hZQnFNaNbNiNfMKxG31hmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTPvZQlFNaNbNiNeMxPvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTPxG32hZQpFNaNbNiNeMxPQtZm@Base 15 ++ _D4core8internal4hash__T6hashOfTPxS3std11concurrency3TidZQBhFNaNbNiNeMxPQBmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTPxvZQmFNaNbNiNeMxPvZm@Base 15 ++ _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTdZQmZQBrFNaNbNiNfQBvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTeZQmZQBrFNaNbNiNfQBvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTS2rt4util7utility__T8_ComplexTfZQmZQBrFNaNbNiNfQBvmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTS3std4json9JSONValueZQBdFNaNbNiNfMKxSQBkQBjQBhmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTaZQkFNaNbNiNeMxaZm@Base 15 ++ _D4core8internal4hash__T6hashOfTbZQkFNaNbNiNeMxbZm@Base 15 ++ _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdZm@Base 15 ++ _D4core8internal4hash__T6hashOfTdZQkFNaNbNiNeMxdmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxeZm@Base 15 ++ _D4core8internal4hash__T6hashOfTeZQkFNaNbNiNeMxemZm@Base 15 ++ _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfZm@Base 15 ++ _D4core8internal4hash__T6hashOfTfZQkFNaNbNiNeMxfmZm@Base 15 ++ _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhZm@Base 15 ++ _D4core8internal4hash__T6hashOfThZQkFNaNbNiNeMxhmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTiZQkFNaNbNiNeMxiZm@Base 15 ++ _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkZm@Base 15 ++ _D4core8internal4hash__T6hashOfTkZQkFNaNbNiNeMxkmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTmZQkFNaNbNiNeMxmmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTtZQkFNaNbNiNeMxtZm@Base 15 ++ _D4core8internal4hash__T6hashOfTuZQkFNaNbNiNeMxuZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxC15TypeInfo_StructZQBcFNbNfxQBcZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxC8TypeInfoZQuFNbNfxQtZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxE2rt4util7utility16__c_complex_realZQBtFNaNbNiNfKxQBymZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxE2rt4util7utility17__c_complex_floatZQBuFNaNbNiNfKxQBzmZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxE2rt4util7utility18__c_complex_doubleZQBvFNaNbNiNfKxQCamZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxS3std3uni21DecompressedIntervalsZQBqFNaNbNiNfKxQBvZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b305dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDuZQFjFNaNbNiNfKxQFoZm@Base 15 ++ _D4core8internal4hash__T6hashOfTxS3std9algorithm9iteration__T9MapResultSQBm10functional__T8unaryFunVAyaa4_615b315dVQpa1_61ZQBhTSQDq3uni21DecompressedIntervalsZQDuZQFjFNaNbNiNfKxQFoZm@Base 15 ++ _D4core8internal4hash__T9bytesHashVbi0ZQpFNaNbNiNeMAxhmZm@Base 15 ++ _D4core8internal4hash__T9bytesHashVbi1ZQpFNaNbNiNeMAxhmZm@Base 15 ++ _D4core8internal4hash__T9get32bitsZQlFNaNbNiMPxhZk@Base 15 ++ _D4core8internal4util4math11__moduleRefZ@Base 15 ++ _D4core8internal4util4math12__ModuleInfoZ@Base 15 ++ _D4core8internal4util4math__T3minTkZQhFNaNbNiNfkkZk@Base 15 ++ _D4core8internal4util5array10arrayToPtrFNbNexAvZm@Base 15 ++ _D4core8internal4util5array11__moduleRefZ@Base 15 ++ _D4core8internal4util5array12__ModuleInfoZ@Base 15 ++ _D4core8internal4util5array17_enforceNoOverlapFNbNfxAammxmZv@Base 15 ++ _D4core8internal4util5array18_enforceSameLengthFNbNfxAaxmxmZv@Base 15 ++ _D4core8internal4util5array21_enforceNoOverlapNogcFNbNfKxAammxmZv@Base 15 ++ _D4core8internal4util5array22_enforceSameLengthNogcFNbNfKxAaxmxmZv@Base 15 ++ _D4core8internal4util5array27enforceRawArraysConformableFNbNfxAaxmxAvxQdxbZv@Base 15 ++ _D4core8internal4util5array31enforceRawArraysConformableNogcFNbNfxAaxmxAvxQdxbZv@Base 15 ++ _D4core8internal4util5array6_storeG256a@Base 15 ++ _D4core8internal4util5array__T12errorMessageTxmTxmZQvFNbNiNeMxPaxAaxmxmZAa@Base 15 ++ _D4core8internal5abort11__moduleRefZ@Base 15 ++ _D4core8internal5abort12__ModuleInfoZ@Base 15 ++ _D4core8internal5abortQgFNbNiNfMAyaMQemZ8writeStrFNbNiNeAAxaXv@Base 15 ++ _D4core8internal5abortQgFNbNiNfMAyaMQemZv@Base 15 ++ _D4core8internal5array10comparison11__moduleRefZ@Base 15 ++ _D4core8internal5array10comparison12__ModuleInfoZ@Base 15 ++ _D4core8internal5array10comparison__T5__cmpTaZQjFNaNbNiNeMxAaMxQeZi@Base 15 ++ _D4core8internal5array10comparison__T5__cmpThZQjFNaNbNiNeMxAhMxQeZi@Base 15 ++ _D4core8internal5array10operations10isBinaryOpFNaNbNiNfMAyaZb@Base 15 ++ _D4core8internal5array10operations11__moduleRefZ@Base 15 ++ _D4core8internal5array10operations12__ModuleInfoZ@Base 15 ++ _D4core8internal5array10operations16isBinaryAssignOpFAyaZb@Base 15 ++ _D4core8internal5array10operations8toStringFmZAya@Base 15 ++ _D4core8internal5array10operations9isUnaryOpFNaNbNiNfMAyaZb@Base 15 ++ _D4core8internal5array11arrayassign11__moduleRefZ@Base 15 ++ _D4core8internal5array11arrayassign12__ModuleInfoZ@Base 15 ++ _D4core8internal5array11arrayassign27enforceRawArraysConformableFNaNbNiNexAaxmxAvxQdxbZv@Base 15 ++ _D4core8internal5array11duplication11__moduleRefZ@Base 15 ++ _D4core8internal5array11duplication12__ModuleInfoZ@Base 15 ++ _D4core8internal5array11duplication__T4_dupTS3std8datetime8timezone13PosixTimeZone10LeapSecondTySQCaQBzQBtQBnQBbZQCxFNaNbNeMAQDdZAyQBj@Base 15 ++ _D4core8internal5array11duplication__T4_dupTS3std8datetime8timezone13PosixTimeZone10TransitionTySQCaQBzQBtQBnQBbZQCxFNaNbNeMAQDdZAyQBj@Base 15 ++ _D4core8internal5array11duplication__T4_dupTaTyaZQlFNaNbNeMAaZAya@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxAyaTAyaZQpFNaNbNeMAxQuZAQu@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxaTaZQlFNaNbNeMAxaZAa@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxaTyaZQmFNaNbNeMAxaZAya@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxhThZQlFNaNbNeMAxhZAh@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxhTyhZQmFNaNbNeMAxhZAyh@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxkTkZQlFNaNbNeMAxkZAk@Base 15 ++ _D4core8internal5array11duplication__T4_dupTxmTmZQlFNaNbNeMAxmZAm@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTS3std8datetime8timezone13PosixTimeZone10LeapSecondTySQCaQBzQBtQBnQBbZQDbFNaNbNfMAQDdZAyQBj@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTS3std8datetime8timezone13PosixTimeZone10TransitionTySQCaQBzQBtQBnQBbZQDbFNaNbNfMAQDdZAyQBj@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTaTyaZQpFNaNbNfMAaZAya@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxAyaTAyaZQtFNaNbNfMAxQuZAQu@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxaTaZQpFNaNbNfMAxaZAa@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxaTyaZQqFNaNbNfMAxaZAya@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxhThZQpFNaNbNfMAxhZAh@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxhTyhZQqFNaNbNfMAxhZAyh@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxkTkZQpFNaNbNfMAxkZAk@Base 15 ++ _D4core8internal5array11duplication__T8_dupCtfeTxmTmZQpFNaNbNfMAxmZAm@Base 15 ++ _D4core8internal5array12construction11__moduleRefZ@Base 15 ++ _D4core8internal5array12construction12__ModuleInfoZ@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTAaZQsFNaNbNembZAQq@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTAfZQsFNaNbNembZAQq@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTC3std11parallelism17ParallelismThreadZQCbFNaNbNembZAQCa@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNembZAQCs@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNembZAQCj@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTPaZQsFNaNbNembZAQq@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTS3std5regexQCg2ir8BytecodeZQBqFNaNbNembZAQBp@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNembZAQCn@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNembZAQCn@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNembZAQCn@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNembZAQCr@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTaZQrFNaNbNembZAa@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTbZQrFNaNbNembZAb@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTThZQrFNaNbNembZAh@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTkZQrFNaNbNembZAk@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTlZQrFNaNbNembZAl@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTmZQrFNaNbNembZAm@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTuZQrFNaNbNembZAu@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayTTwZQrFNaNbNembZAw@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTAaZQsFNaNbNembZAQq@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTAfZQsFNaNbNembZAQq@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTAyaZQtFNaNbNembZAQr@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTC3std11parallelism17ParallelismThreadZQCbFNaNbNembZAQCa@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNembZAQCs@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNembZAQCj@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTPaZQsFNaNbNembZAQq@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTS3std5regexQCg2ir8BytecodeZQBqFNaNbNembZAQBp@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNembZAQCn@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNembZAQCn@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNembZAQCn@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNembZAQCr@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTaZQrFNaNbNembZAa@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTbZQrFNaNbNembZAb@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUThZQrFNaNbNembZAh@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTkZQrFNaNbNembZAk@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTlZQrFNaNbNembZAl@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTmZQrFNaNbNembZAm@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTuZQrFNaNbNembZAu@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTwZQrFNaNbNembZAw@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTyS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCpFNaNbNembZAyQCo@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTyS3std8datetime8timezone13PosixTimeZone10TransitionZQCpFNaNbNembZAyQCo@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTyaZQsFNaNbNembZAya@Base 15 ++ _D4core8internal5array12construction__T12_d_newarrayUTyhZQsFNaNbNembZAyh@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTAyaZQBeFNaNbNembZAQs@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTaZQBcFNaNbNembZAa@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowThZQBcFNaNbNembZAh@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTkZQBcFNaNbNembZAk@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTmZQBcFNaNbNembZAm@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyS3std8datetime8timezone13PosixTimeZone10LeapSecondZQDaFNaNbNembZAyQCo@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyS3std8datetime8timezone13PosixTimeZone10TransitionZQDaFNaNbNembZAyQCo@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyaZQBdFNaNbNembZAya@Base 15 ++ _D4core8internal5array12construction__T23_d_newarrayUPureNothrowTyhZQBdFNaNbNembZAyh@Base 15 ++ _D4core8internal5array13concatenation11__moduleRefZ@Base 15 ++ _D4core8internal5array13concatenation12__ModuleInfoZ@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAS3std3zip10ZipArchive7SegmentTQBfTQBjZQCeFNaNbNeQBxQCaZQCe@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeTQkZQBeFNaNbNeQuQwQBbZQBf@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrKQuZQBa@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAaTAxaTQeZQBbFNaNbNeQrQtZQz@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAhTAxhTQeZQBbFNaNbNeQrQtZQz@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsTQBwTQCaZQCvFNaNbNeQCoKQCsQCvKQCzQDcKQDgQDjKQDnQDqKQDuQDxKQEbQEeKQEiQElZQEp@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsTQBwZQCrFNaNbNeQCkKQCoQCrKQCvQCyKQDcQDfKQDjQDmKQDqQDtKQDxQEaKQEeZQEi@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoTQBsZQCnFNaNbNeQCgKQCkQCnKQCrQCuKQCyQDbKQDfQDiKQDmQDpKQDtQDwZQEa@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkTQBoZQCjFNaNbNeQCcKQCgQCjKQCnQCqKQCuQCxKQDbQDeKQDiQDlKQDpZQDt@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgTQBkZQCfFNaNbNeQByKQCcQCfKQCjQCmKQCqQCtKQCxQDaKQDeQDhZQDl@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcTQBgZQCbFNaNbNeQBuKQByQCbKQCfQCiKQCmQCpKQCtQCwKQDaZQDe@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzTQBcZQBxFNaNbNeQBqKQBuQBxKQCbQCeKQCiQClKQCpQCsZQCw@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwTQzZQBtFNaNbNeQBmKQBqQBtKQBxQCaKQCeQChKQClZQCp@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtTQwZQBqFNaNbNeQBjKQBnQBqKQBuQBxKQCbQCeZQCi@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqTQtZQBnFNaNbNeQBgKQBkQBnKQBrQBuKQByZQCc@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqZQBkFNaNbNeQBdKQBhQBkKQBoQBrZQBv@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnTQqZQBkFNaNbNeQBdQBgQBjQBmQBpZQBt@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeKQBbQBeKQBiQBlZQBp@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeKQBbQBeQBhQBkZQBo@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaKQBeQBhKQBlZQBp@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTQnZQBhFNaNbNeQBaQBdQBgQBjZQBn@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkTyaZQBhFNaNbNeKQBbQBeKQBiyaZQBo@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyKQBbQBeZQBi@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyQBaKQBeZQBi@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeKQyQBaQBdZQBh@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxKQBaQBdZQBh@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhTQkZQBeFNaNbNeQxQzQBbZQBf@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvKQyZQBb@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeKQvQxZQBa@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuKQxZQBa@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTQhZQBbFNaNbNeQuQwZQz@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaTQmZQBgFNaNbNeQzKxQvQBfZQBj@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaTyaZQBgFNaNbNeQzKxQvyaZQBi@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTxAyaZQBdFNaNbNeQwKxQsZQBd@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyAaTQlZQBfFNaNbNeQyKyQuQBeZQBi@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyAaZQBcFNaNbNeQvKyQrZQBc@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyaZQBbFNaNbNeKQvyaZQBa@Base 15 ++ _D4core8internal5array13concatenation__T14_d_arraycatnTXTAyaTQeTyaZQBbFNaNbNeQuKyaZQBa@Base 15 ++ _D4core8internal5array5utils11__moduleRefZ@Base 15 ++ _D4core8internal5array5utils11gcStatsPureFNaNbZSQBu6memory2GC5Stats@Base 15 ++ _D4core8internal5array5utils12__ModuleInfoZ@Base 15 ++ _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZ12impureBypassFNbNiQBdiQBhQBkmZm@Base 15 ++ _D4core8internal5array5utils14accumulatePureFNaNbAyaiQeQgmZm@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTAaZQsFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTAfZQsFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTAyaZQtFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTC3std11parallelism17ParallelismThreadZQCbFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTPS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCtFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTPS3std8datetime8timezone13PosixTimeZone6TTInfoZQCkFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTPaZQsFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTS3std5regexQBy2ir8BytecodeZQBqFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCoFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10TempTTInfoZQCoFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone10TransitionZQCoFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCsFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTaZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTbZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocThZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTkZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTlZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTmZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTuZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array5utils__T12__arrayAllocTwZQrFNaNbNemZAv@Base 15 ++ _D4core8internal5array7casting11__moduleRefZ@Base 15 ++ _D4core8internal5array7casting12__ModuleInfoZ@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNbNiNeNkMAhZAu@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNbNiNeNkMAhZAw@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNbNiNeNkMAvZAQHt@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastTvTS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeZQHqFNaNiNeNkMAvZ5Array6__initZ@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNbNiNeNkMAxhZAxu@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNbNiNeNkMAxhZAxw@Base 15 ++ _D4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 ++ _D4core8internal5array7casting__T16onArrayCastErrorZQtFNaNbNiNeAyammQfmZv@Base 15 ++ _D4core8internal5array8capacity11__moduleRefZ@Base 15 ++ _D4core8internal5array8capacity12__ModuleInfoZ@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAAyaTQeZ18_d_arraysetlengthTFNaNbNeNkMKQBnmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAC3std3zip13ArchiveMemberTQzZ18_d_arraysetlengthTFNaNbNeNkMKQCimZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAC3std6socket7AddressTQvZ18_d_arraysetlengthTFNaNbNeNkMKQCemZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTACQCi6thread10threadbase10ThreadBaseTQBkZ18_d_arraysetlengthTFNaNbNeNkMKQCumZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std3zip10ZipArchive7SegmentTQBeZ18_d_arraysetlengthTFNaNbNeNkMKQComZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std5regexQCn2ir10NamedGroupTQBeZ18_d_arraysetlengthTFNaNbNeNkMKQComZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std5regexQCn2ir8BytecodeTQBbZ18_d_arraysetlengthTFNaNbNeNkMKQClmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAS3std6socket11AddressInfoTQBaZ18_d_arraysetlengthTFNaNbNeNkMKQCkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAaTaZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAhThZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAkTkZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAlTlZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAmTmZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAuTuZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAvTvZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAwTwZ18_d_arraysetlengthTFNaNbNeNkMKQBkmZm@Base 15 ++ _D4core8internal5array8capacity__T22_d_arraysetlengthTImplHTAyaTyaZ18_d_arraysetlengthTFNaNbNeNkMKQBmmZm@Base 15 ++ _D4core8internal5array8equality11__moduleRefZ@Base 15 ++ _D4core8internal5array8equality12__ModuleInfoZ@Base 15 ++ _D4core8internal5array8equality__T7isEqualTPxvTQeZQqFNaNbNiMxPPvMxQfmZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTPyS6object10ModuleInfoTQxZQBjFNaNbNiMxPPyQBnMxQimZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTaTaZQnFNaNbNiMxPaMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTdTdZQnFNaNbNiMxPdMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTeTeZQnFNaNbNiMxPeMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTfTfZQnFNaNbNiMxPfMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualThThZQnFNaNbNiMxPhMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTkTkZQnFNaNbNiMxPkMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTmTmZQnFNaNbNiMxPmMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTtTtZQnFNaNbNiMxPtMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTuTuZQnFNaNbNiMxPuMxQemZb@Base 15 ++ _D4core8internal5array8equality__T7isEqualTwTwZQnFNaNbNiMxPwMxQemZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTPxvTQeZQrFNaNbNiNeMxAPvMxQfZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTPyS6object10ModuleInfoTQxZQBkFNaNbNiNeMxAPyQBpMxQiZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTaTaZQoFNaNbNiNeMxAaMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTdTdZQoFNaNbNiNeMxAdMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTeTeZQoFNaNbNiNeMxAeMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTfTfZQoFNaNbNiNeMxAfMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsThThZQoFNaNbNiNeMxAhMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTkTkZQoFNaNbNiNeMxAkMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTmTmZQoFNaNbNiNeMxAmMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTtTtZQoFNaNbNiNeMxAtMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTuTuZQoFNaNbNiNeMxAuMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTwTwZQoFNaNbNiNeMxAwMxQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxAS3std3uni17CodepointIntervalTxQBfZQBuFNaNbNiNfMAxQByMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxAyaTxQfZQtFNaNbNiNfMAxQwMQfZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxC3std3zip13ArchiveMemberTxQBaZQBpFMAxQBlMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxDFNbC6ObjectZvTxQqZQBeFNaNbNiNfMAxQBiMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility16__c_complex_realTxQBlZQCaFNaNbNiNfMAxQCeMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility17__c_complex_floatTxQBmZQCbFNaNbNiNfMAxQCfMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxE2rt4util7utility18__c_complex_doubleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS2rt3aaA6BucketTxQrZQBfFNaNbNiNfMAxQBjMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std12experimental9allocator15building_blocks14allocator_list__T13AllocatorListTSQDdQDcQCr8showcase14mmapRegionListFmZ7FactoryTSQEyQExQEmQEf14null_allocator13NullAllocatorZQEe4NodeTxQHbZQHqFNaNbNiNfMAxQHuMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std3uni17CodepointIntervalTxQBeZQBtFNaNbNiNfMAxQBxMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTxQByZQCnFNaNbNiNfMAxQCrMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std4file15DirIteratorImpl9DirHandleTxQBnZQCcFNaNbNiNfMAxQCgMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std4file8DirEntryTxQvZQBjFNaNbNiNfMAxQBnMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std4json9JSONValueTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir10NamedGroupTxQBfZQBuFNaNbNiNfMAxQByMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir11CharMatcherTxQBgZQBvFNaNbNiNfMAxQBzMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std5regexQBx2ir8BytecodeTxQBcZQBrFNaNbNiNfMAxQBvMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std6getopt6OptionTxQvZQBjFNaNbNiNfMAxQBnMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std6socket11AddressInfoTxQBbZQBqFMAxQBmMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone10LeapSecondTxQCaZQCpFNaNbNiNfMAxQCtMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone10TransitionTxQCaZQCpFNaNbNiNfMAxQCtMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std8datetime8timezone13PosixTimeZone14TempTransitionTxQCeZQCtFNaNbNiNfMAxQCxMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxS3std8typecons__T5TupleTkTkTkZQnTxQBiZQBxFNaNbNiNfMAxQCbMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxSQBs8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTxQCvZQDkFNaNbNiNfMAxQDoMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxSQBsQBq5newaa6BucketTxQwZQBkFNaNbNiNfMAxQBoMQgZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTxvTxvZQqFNaNbNiNfMAxvMQeZb@Base 15 ++ _D4core8internal5array8equality__T8__equalsTyS3stdQBr14unicode_tables15UnicodePropertyTyQBrZQCgFNaNbNiNfMAyQCkMQgZb@Base 15 ++ _D4core8internal5array9appending11__moduleRefZ@Base 15 ++ _D4core8internal5array9appending12__ModuleInfoZ@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAAyaTQeZQBbFNaNbNcNeMNkKQyMQBbZQBf@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAOaTOaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAOuTOuZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAS3std5regexQCh2ir8BytecodeTQBbZQBzFNaNbNcNeMNkKQBwMQCaZQCe@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAaTaZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAhThZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAuTuZQyFNaNbNcNeMNkKQuMQxZQBa@Base 15 ++ _D4core8internal5array9appending__T15_d_arrayappendTHTAyaTyaZQBaFNaNbNcNeMNkKQxMQBaZQBe@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAAyaTQeZQBdFNaNbNcNeMNkKQymZQBc@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAC3std6socket7AddressTQvZQBuFNaNbNcNeMNkKQBpmZQBu@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTACQCe6thread5fiber5FiberTQyZQBxFNaNbNcNeMNkKQBsmZQBx@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding10Latin1CharTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding10Latin2CharTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1250CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1251CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding15Windows1252CharTQBgZQCgFNaNbNcNeMNkKQCbmZQCg@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAE3std8encoding9AsciiCharTQzZQByFNaNbNcNeMNkKQBtmZQBy@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOaTOaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAOuTOuZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTQBxZQCxFNaNbNcNeMNkKQCsmZQCx@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std3zip10ZipArchive7SegmentTQBeZQCeFNaNbNcNeMNkKQBzmZQCe@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std4file15DirIteratorImpl9DirHandleTQBmZQCmFNaNbNcNeMNkKQChmZQCm@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std4file8DirEntryTQuZQBtFNaNbNcNeMNkKQBomZQBt@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std5regexQCj12backtracking9CtContext7CtStateTQBvZQCvFNaNbNcNeMNkKQCqmZQCv@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std5regexQCj2ir8BytecodeTQBbZQCbFNaNbNcNeMNkKQBwmZQCb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std6logger11multilogger16MultiLoggerEntryTQBsZQCsFNaNbNcNeMNkKQCnmZQCs@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8datetime8timezone13PosixTimeZone14TempTransitionTQCdZQDdFNaNbNcNeMNkKQCymZQDd@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCiTQDdZQEdFNaNbNcNeMNkKQDymZQEd@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAS3std8typecons__T5TupleTkTkTkZQnTQBhZQChFNaNbNcNeMNkKQCcmZQCh@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTASQCe8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11ReplacementTQCuZQDuFNaNbNcNeMNkKQDpmZQDu@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAaTaZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAhThZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAkTkZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAmTmZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAuTuZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAwTwZQBaFNaNbNcNeMNkKQvmZQz@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAxS3std5regexQCk2ir11CharMatcherTxQBgZQChFNaNbNcNeMNkKQCcmZQCh@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyS3std8datetime8timezone13PosixTimeZone10LeapSecondTyQCaZQDbFNaNbNcNeMNkKQCwmZQDb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyS3std8datetime8timezone13PosixTimeZone10TransitionTyQCaZQDbFNaNbNcNeMNkKQCwmZQDb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyaTyaZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 ++ _D4core8internal5array9appending__T17_d_arrayappendcTXHTAyhTyhZQBcFNaNbNcNeMNkKQxmZQBb@Base 15 ++ _D4core8internal5newaa11__moduleRefZ@Base 15 ++ _D4core8internal5newaa12__ModuleInfoZ@Base 15 ++ _D4core8internal5newaa3mixFNaNbNiNfmZm@Base 15 ++ _D4core8internal5newaa4Impl11__xopEqualsMxFKxSQBsQBqQBkQBhZb@Base 15 ++ _D4core8internal5newaa4Impl6__initZ@Base 15 ++ _D4core8internal5newaa4Impl9__xtoHashFNbNeKxSQBrQBpQBjQBgZm@Base 15 ++ _D4core8internal5newaa6Bucket6__initZ@Base 15 ++ _D4core8internal5newaa7AAShell6__initZ@Base 15 ++ _D4core8internal5qsort11__moduleRefZ@Base 15 ++ _D4core8internal5qsort12__ModuleInfoZ@Base 15 ++ _D4core8internal5qsort7_adSortUNkMAvC8TypeInfoZ3cmpUMxPvMxQeMPvZi@Base 15 ++ _D4core8internal6atomic11__moduleRefZ@Base 15 ++ _D4core8internal6atomic12__ModuleInfoZ@Base 15 ++ _D4core8internal6atomic12simpleFormatFAyaMAQfZQi@Base 15 ++ _D4core8internal6atomic5pauseFNaNbNiNeZv@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TbZQBmFNaNbNiNePNgbZNgb@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi0TmZQBmFNaNbNiNePNgmZNgm@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TE3std6loggerQCu8LogLevelZQCjFNaNbNiNePNgEQBoQBnQEdQBjZNgQq@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt8monitor_7MonitorZQCiFNaNbNiNePNgPONgSQBpQBpQBjZNgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TPOS2rt9critical_18D_CRITICAL_SECTIONZQCvFNaNbNiNePNgPONgSQCcQCcQBvZNgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TbZQBmFNaNbNiNePNgbZNgb@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi2TkZQBmFNaNbNiNePNgkZNgk@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TC3std11concurrency9SchedulerZQCnFNaNbNiNePNgCQBsQBrQBhZNgQn@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCwFNaNbNiNePNgEQCbQCaQBqQBkZNgQq@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC3std6loggerQCv6LoggerZQCiFNaNbNiNePONgCQBnQBmQEdQBiZONgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOC6ObjectZQBuFNaNbNiNePONgCQzZONgQh@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TOCQCk4sync5mutex5MutexZQChFNaNbNiNePONgCQDwQBmQBkQBhZONgQr@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPOSQCl4stdc5stdio8_IO_FILEZQClFNaNbNiNePNgPONgSQEdQBsQBqQBnZNgQu@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCfFNaNbNiNePNgPQBkZNgQh@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TbZQBmFNaNbNiNePNgbZNgb@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5ThZQBmFNaNbNiNePNghZNgh@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TiZQBmFNaNbNiNePNgiZNgi@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TkZQBmFNaNbNiNePNgkZNgk@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TmZQBmFNaNbNiNePNgmZNgm@Base 15 ++ _D4core8internal6atomic__T10atomicLoadVEQBmQBb11MemoryOrderi5TtZQBmFNaNbNiNePNgtZNgt@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TbZQBnFNaNbNiNePbbZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi0TmZQBnFNaNbNiNePmmZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TE3std6loggerQCv8LogLevelZQCkFNaNbNiNePQBmQBpZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt8monitor_7MonitorZQCjFNaNbNiNePQBlQBoZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TPOS2rt9critical_18D_CRITICAL_SECTIONZQCwFNaNbNiNePQByQCbZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TbZQBnFNaNbNiNePbbZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi3TmZQBnFNaNbNiNePmmZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TC3std6loggerQCv6LoggerZQCiFNaNbNiNePQBkQBnZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TE3std11parallelism8TaskPool9PoolStateZQCxFNaNbNiNePQBzQCcZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TE3std6loggerQCv8LogLevelZQCkFNaNbNiNePQBmQBpZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TPUNaNbNexPaPaPmPiZQhZQCgFNaNbNiNePQBiQBlZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5ThZQBnFNaNbNiNePhhZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TkZQBnFNaNbNiNePkkZv@Base 15 ++ _D4core8internal6atomic__T11atomicStoreVEQBnQBc11MemoryOrderi5TmZQBnFNaNbNiNePmmZv@Base 15 ++ _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 ++ _D4core8internal6atomic__T14atomicFetchAddVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 ++ _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TkZQBuFNaNbNiNePkkZk@Base 15 ++ _D4core8internal6atomic__T14atomicFetchSubVEQBqQBf11MemoryOrderi5Vbi1TmZQBuFNaNbNiNePmmZm@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TCQDh4sync5mutex5MutexZQDeFNaNbNiNePQBjQeQBoZb@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TE3std11parallelism8TaskPool9PoolStateZQDuFNaNbNiNePQBzQeQCeZb@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TbZQCkFNaNbNiNePbQcbZb@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0ThZQCkFNaNbNiNePhQchZb@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TmZQCkFNaNbNiNePmQcmZb@Base 15 ++ _D4core8internal6atomic__T25atomicCompareExchangeImplVEQCbQBq11MemoryOrderi5VQxi5Vbi0TtZQCkFNaNbNiNePtQctZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TCQDn4sync5mutex5MutexZQDkFNaNbNiNePQBjxCQFaQBnQBlQBiQCaZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TE3std11parallelism8TaskPool9PoolStateZQEaFNaNbNiNePQBzxEQCdQCcQBsQBmQCqZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TbZQCqFNaNbNiNePbxbbZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5ThZQCqFNaNbNiNePhxhhZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TmZQCqFNaNbNiNePmxmmZb@Base 15 ++ _D4core8internal6atomic__T35atomicCompareExchangeStrongNoResultVEQClQCa11MemoryOrderi5VQxi5TtZQCqFNaNbNiNePtxttZb@Base 15 ++ _D4core8internal6moving11__moduleRefZ@Base 15 ++ _D4core8internal6moving12__ModuleInfoZ@Base 15 ++ _D4core8internal6string11__moduleRefZ@Base 15 ++ _D4core8internal6string12__ModuleInfoZ@Base 15 ++ _D4core8internal6string__T17TempStringNoAllocVhi20ZQz3getMNgFNaNbNiNjNfZANga@Base 15 ++ _D4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 ++ _D4core8internal6string__T18signedToTempStringVii10Vbi0TaZQBgFNaNbNiNflNkMAaZQd@Base 15 ++ _D4core8internal6string__T18signedToTempStringVki10ZQBaFNaNbNiNflZSQCnQClQCf__T17TempStringNoAllocVhi20ZQz@Base 15 ++ _D4core8internal6string__T20unsignedToTempStringVii10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 ++ _D4core8internal6string__T20unsignedToTempStringVii16Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 ++ _D4core8internal6string__T20unsignedToTempStringVki10Vbi0TaZQBiFNaNbNiNfmNkMAaZQd@Base 15 ++ _D4core8internal6string__T20unsignedToTempStringVki10ZQBcFNaNbNiNfmZSQCpQCnQCh__T17TempStringNoAllocVhi20ZQz@Base 15 ++ _D4core8internal6string__T7dstrcmpZQjFNaNbNiNeMxAaMxQeZi@Base 15 ++ _D4core8internal6string__T9numDigitsVki10ZQqFNaNbNiNfmZi@Base 15 ++ _D4core8internal6traits11__moduleRefZ@Base 15 ++ _D4core8internal6traits12__ModuleInfoZ@Base 15 ++ _D4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 ++ _D4core8internal6traits7hasDtorFAAyaZb@Base 15 ++ _D4core8internal7convert10ctfe_allocFNaNbNiNemZAh@Base 15 ++ _D4core8internal7convert11__moduleRefZ@Base 15 ++ _D4core8internal7convert11shiftrRoundFNaNbNiNfmZm@Base 15 ++ _D4core8internal7convert12__ModuleInfoZ@Base 15 ++ _D4core8internal7convert5Float6__initZ@Base 15 ++ _D4core8internal7convert7binPow2FNaNbNiNfiZ10binPosPow2FNaNbNiNfiZe@Base 15 ++ _D4core8internal7convert7binPow2FNaNbNiNfiZe@Base 15 ++ _D4core8internal7convert__T20denormalizedMantissaTeZQzFNaNbNiNfekZSQCnQClQCf5Float@Base 15 ++ _D4core8internal7convert__T5parseVbi0HTeZQoFNaNbNiNfeZSQCbQBzQBt5Float@Base 15 ++ _D4core8internal7convert__T5parseVbi0HTxeZQpFNaNbNiNfxeZSQCdQCbQBv5Float@Base 15 ++ _D4core8internal7convert__T7binLog2TeZQlFNaNbNiNfxeZk@Base 15 ++ _D4core8internal7convert__T7toUbyteTE3std4json8JSONTypeZQBdFNaNbNiNeMKxEQBjQBiQBgZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTPxvZQnFNaNbNiNeNkMxAPvZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTPyS6object10ModuleInfoZQBgFNaNbNiNeNkMxAPyQBoZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTS3std4json9JSONValue5Store6ObjectZQBrFNaNbNiNeMNkKxSQBzQByQBwQBpQBmZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTS3std4json9JSONValue5StoreZQBkFNaNbNiNeMNkKxSQBsQBrQBpQBiZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTS3std4json9JSONValueZQBeFNaNbNiNeMNkKxSQBmQBlQBjZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTaZQlFNaNbNiNeNkMxAaZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTbZQlFNaNbNiNeMKxbZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTdZQlFNaNbNiNeMKxdZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTeZQlFNaNbNiNeMKxeZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTgZQlFNaNbNiNeMKxgZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteThZQlFNaNbNiNeNkMxAhZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeMKxkZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTkZQlFNaNbNiNeNkMxAkZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTlZQlFNaNbNiNeMKxlZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeMKxmZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTmZQlFNaNbNiNeNkMxAmZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeMKxtZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTtZQlFNaNbNiNeNkMxAtZAxh@Base 15 ++ _D4core8internal7convert__T7toUbyteTvZQlFNaNbNiNeNkMxAvZAxh@Base 15 ++ _D4core8internal7dassert11__moduleRefZ@Base 15 ++ _D4core8internal7dassert12__ModuleInfoZ@Base 15 ++ _D4core8internal7dassert15invertCompTokenFNaNbNiNfMAyaZQe@Base 15 ++ _D4core8internal7dassert16calcFieldOverlapFMxAmZAb@Base 15 ++ _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZ11formatTupleFNaNbNiNfMAaKmIQBpIbZv@Base 15 ++ _D4core8internal7dassert7combineFNaNbNiNfMxAAyaMxQfMxQkZAya@Base 15 ++ _D4core8internal7dassert9pureAllocFNaNbNiNfmZAh@Base 15 ++ _D4core8internal7dassert9pureAllocFmZ5allocFNaNbNfmZAh@Base 15 ++ _D4core8internal7dassert__T20assumeFakeAttributesTPFNaNbNfmZAhZQBkFNaNbNiNeQzZPFNaNbNiNfmZQBe@Base 15 ++ _D4core8internal7switch_11__moduleRefZ@Base 15 ++ _D4core8internal7switch_12__ModuleInfoZ@Base 15 ++ _D4core8internal7switch___T14__switchSearchTyaZQuFNaNbNiNfMxAAyaMxQfZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274VxQza5_7072696e74VxQBqa6_69676e6f7265VxQCka9_646570726563617465ZQDxFNaNbNiNfMxQDxZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia5_61626f7274ZQBmFNaNbNiNfMxQBmZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia7_70726563697365VxQBda12_636f6e736572766174697665ZQCxFNaNbNiNfMxQCxZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eVxQBfa9_746573742d6f6e6c79VxQCfa12_746573742d6f722d6d61696eZQDzFNaNbNiNfMxQDzZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_VxQia8_72756e2d6d61696eZQBsFNaNbNiNfMxQBsZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa0_ZQvFNaNbNiNfMxQuZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa12_636f6e736572766174697665ZQBuFNaNbNiNfMxQBuZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa12_746573742d6f722d6d61696eZQBuFNaNbNiNfMxQBuZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033VxQBta19_5275737369612054696d65205a6f6e65203130VxQDoa19_5275737369612054696d65205a6f6e65203131VxQFja21_42656c61727573205374616e646172642054696d65ZQHvFNaNbNiNfMxQHvZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033VxQBta19_5275737369612054696d65205a6f6e65203130ZQEbFNaNbNiNfMxQEbZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa18_5275737369612054696d65205a6f6e652033ZQCgFNaNbNiNfMxQCgZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZ5casesyG10Aa@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa1_3cVxQka1_3eVxQta2_213dVxQBea2_3c3dVxQBqa2_3d3dVxQCca2_3e3dVxQCoa2_696eVxQDaa2_6973VxQDma3_21696eVxQEaa3_216973ZQFbFNaNbNiNfMxQFbZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa21_42656c61727573205374616e646172642054696d65ZQCmFNaNbNiNfMxQCmZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZ5casesyG11Aa@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa2_6763VxQma4_666f726bVxQBba7_636c65616e7570VxQBxa7_64697361626c65VxQCta7_70726f66696c65VxQDpa8_706172616c6c656cVxQEna11_696e63506f6f6c53697a65VxQFsa11_696e697452657365727665VxQGxa11_6d6178506f6f6c53697a65VxQIca11_6d696e506f6f6c53697a65VxQJha14_6865617053697a65466163746f72ZQLfFNaNbNiNfMxQLfZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa3_726566VxQoa4_70757265VxQBda5_406c697665VxQBva5_406e6f6763VxQCna5_4073616665VxQDfa5_636f6e7374VxQDxa5_696e6f7574VxQEpa5_73636f7065VxQFha6_72657475726eVxQGba6_736861726564VxQGva7_4073797374656dVxQHra7_6e6f7468726f77VxQIna8_4074727573746564VxQJla9_4070726f7065727479VxQKla9_696d6d757461626c65ZQLyFNaNbNiNfMxQLyZ5casesyG15Aa@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa3_726566VxQoa4_70757265VxQBda5_406c697665VxQBva5_406e6f6763VxQCna5_4073616665VxQDfa5_636f6e7374VxQDxa5_696e6f7574VxQEpa5_73636f7065VxQFha6_72657475726eVxQGba6_736861726564VxQGva7_4073797374656dVxQHra7_6e6f7468726f77VxQIna8_4074727573746564VxQJla9_4070726f7065727479VxQKla9_696d6d757461626c65ZQLyFNaNbNiNfMxQLyZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65VxQqa7_636f6c6c656374VxQBla8_66696e616c697a65ZQCwFNaNbNiNfMxQCwZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa4_6e6f6e65ZQBdFNaNbNiNfMxQBdZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265VxQua9_646570726563617465ZQCgFNaNbNiNfMxQCgZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa6_69676e6f7265ZQBhFNaNbNiNfMxQBhZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaVxAyaa8_66696e616c697a65ZQBlFNaNbNiNfMxQBlZi@Base 15 ++ _D4core8internal7switch___T8__switchTyaZQnFNaNbNiNfMxAyaZi@Base 15 ++ _D4core8internal8lifetime11__moduleRefZ@Base 15 ++ _D4core8internal8lifetime12__ModuleInfoZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S11__xopEqualsMxFKxSQDcQDaQCu__TQCoTQCfTQCjTQCnZQDeFKQCwKQDaZQCkZb@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S9__xtoHashFNbNeKxSQDbQCzQCt__TQCnTQCeTQCiTQCmZQDdFKQCvKQCzZQCjZm@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S__T6__ctorZQiMFNaNbNcNiNfKQBwZSQDoQDmQDg__TQDaTQCrTQCvTQCzZQDqFKQDiKQDmZQCw@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFNaNbNiNfKQwKQzZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S11__xopEqualsMxFKxSQEbQDzQDt__TQDnTQDeTQDiTQDmZQEdFKQDvKQDzZQCkZb@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S9__xtoHashFNbNeKxSQEaQDyQDs__TQDmTQDdTQDhTQDlZQEcFKQDuKQDyZQCjZm@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S__T6__ctorZQiMFNaNbNcNiNfKQCvZSQEnQElQEf__TQDzTQDqTQDuTQDyZQEpFKQEhKQElZQCw@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFNaNbNiNfKQBtKQBxZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S11__xopEqualsMxFKxSQDzQDxQDr__TQDlTQDcTQDgTQDkZQEbFKQDtKQDxZQCkZb@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S9__xtoHashFNbNeKxSQDyQDwQDq__TQDkTQDbTQDfTQDjZQEaFKQDsKQDwZQCjZm@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S__T6__ctorZQiMFNaNbNcNiNfKQCtZSQElQEjQEd__TQDxTQDoTQDsTQDwZQEnFKQEfKQEjZQCw@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFNaNbNiNfKQBrKQBvZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxZQBnFNaNbNiNfKQBnKQBrZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S11__fieldDtorMFNeZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S11__xopEqualsMxFKxSQFcQFaQEu__TQEoTQEfTQEjTQDmZQFeFKQEwKQDzZQCkZb@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S15__fieldPostblitMFNlZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S8opAssignMFNcNjNfSQFbQEzQEt__TQEnTQEeTQEiTQDlZQFdFKQEvKQDyZQCjZQBu@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S9__xtoHashFNbNeKxSQFbQEzQEt__TQEnTQEeTQEiTQDlZQFdFKQEvKQDyZQCjZm@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1S__T6__ctorZQiMFNcKQCnZSQFgQFeQEy__TQEsTQEjTQEnTQDqZQFiFKQFaKQEdZQCo@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqTQJiZQJzFNaNbNiNfKQJzZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl3FTP4ImplTQyZQBoFNaNbNiNfKQBoZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl4HTTP4ImplTQzZQBpFNaNbNiNfKQBpZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std3net4curl4SMTP4ImplTQzZQBpFNaNbNiNfKQBpZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S11__xopEqualsMxFKxSQEgQEeQDy__TQDsTQDjTQDnTQDrZQEiFKQEaKQEeZQCkZb@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1S__T6__ctorZQiMFNaNbNcNiNfKQDaZSQEsQEqQEk__TQEeTQDvTQDzTQEdZQEuFKQEmKQEqZQCw@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFNaNbNiNfKQByKQCcZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S11__fieldDtorMFNeZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S11__xopEqualsMxFKxSQFeQFcQEw__TQEqTQEhTQElTQDjTQDjTbZQFmFKQFeKQEcKQEcKbZQCwZb@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S8opAssignMFNcNjNeSQFdQFbQEv__TQEpTQEgTQEkTQDiTQDiTbZQFlFKQFdKQEbKQEbKbZQCvZQCg@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S9__xtoHashFNbNeKxSQFdQFbQEv__TQEpTQEgTQEkTQDiTQDiTbZQFlFKQFdKQEbKQEbKbZQCvZm@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1S__T6__ctorZQiMFNcNfKQCmKQCmKbZSQFqQFoQFi__TQFcTQEtTQExTQDvTQDvTbZQFyFKQFqKQEoKQEoKbZQDi@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFNfKQCkKQBiKQBiKbZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S11__xopEqualsMxFKxSQEhQEfQDz__TQDtTQDkTQDoTQDsZQEjFKQEbKQEfZQCkZb@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S9__xtoHashFNbNeKxSQEgQEeQDy__TQDsTQDjTQDnTQDrZQEiFKQEaKQEeZQCjZm@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1S__T6__ctorZQiMFNaNbNcNiNfKQDbZSQEtQErQEl__TQEfTQDwTQEaTQEeZQEvFKQEnKQErZQCw@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir10NamedGroupTQBeTQBiZQBzFNaNbNiNfKQBzKQCdZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S__T6__ctorZQiMFNaNbNcNiNfKQCyZSQEqQEoQEi__TQEcTQDtTQDxTQEbZQEsFKQEkKQEoZQCw@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFNaNbNiNfKQBwKQCaZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S11__xopEqualsMxFKxSQEdQEbQDv__TQDpTQDgTQDkTQDoZQEfFKQDxKQEbZQCkZb@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S9__xtoHashFNbNeKxSQEcQEaQDu__TQDoTQDfTQDjTQDnZQEeFKQDwKQEaZQCjZm@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S__T6__ctorZQiMFNaNbNcNiNfKQCxZSQEpQEnQEh__TQEbTQDsTQDwTQEaZQErFKQEjKQEnZQCw@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFNaNbNiNfKQBvKQBzZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S__T6__ctorZQiMFNaNbNcNiNfKaZSQDgQDeQCy__TQCsTaTaTaZQDcFKaKaZQCk@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTaTaTaZQtFNaNbNiNfKaKaZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S__T6__ctorZQiMFNaNbNcNiNfKkZSQDgQDeQCy__TQCsTkTkTkZQDcFKkKkZQCk@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTkTkTkZQtFNaNbNiNfKkKkZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S__T6__ctorZQiMFNaNbNcNiNfKmZSQDgQDeQCy__TQCsTmTmTmZQDcFKmKmZQCk@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTmTmTmZQtFNaNbNiNfKmKmZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S__T6__ctorZQiMFNaNbNcNiNfKwZSQDgQDeQCy__TQCsTwTwTwZQDcFKwKwZQCk@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTwTwTwZQtFNaNbNiNfKwKwZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S__T6__ctorZQiMFNaNbNcNiNfKxaZSQDkQDiQDc__TQCwTxaTaTxaZQDiFKaKxaZQCo@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFNaNbNiNfKaKxaZv@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S6__initZ@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S__T6__ctorZQiMFNaNbNcNiNfKhZSQDhQDfQCz__TQCtTyaTaThZQDeFKaKhZQCl@Base 15 ++ _D4core8internal8lifetime__T10emplaceRefTyaTaThZQuFNaNbNiNfKaKhZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS2rt3aaA4ImplZQBjFNaNbNiNeMKQBcZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS2rt9critical_18D_CRITICAL_SECTIONZQCeFNaNbNiNeMKQBxZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3gcc8sections3elf9ThreadDSOZQByFNaNbNiNeMKQBrZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std11concurrency7MessageZQBwFNaNbNiNeMKQBpZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeZQCuFNaNbNiNeMKQCnZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQKdFNaNbNiNeMKQJwZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl3FTP4ImplZQBtFNaNbNiNeMKQBmZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl4HTTP4ImplZQBuFNaNbNiNeMKQBnZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std3net4curl4SMTP4ImplZQBuFNaNbNiNeMKQBnZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std3uni17CodepointIntervalZQByFNaNbNiNeMKQBrZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std4file15DirIteratorImplZQBxFNaNbNiNeMKQBqZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAAyaZQxZQCjFNaNbNiNeMKQCcZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBrZQDeFNaNbNiNeMKQCxZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBsZQDfFNaNbNiNeMKQCyZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAxaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAyaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAyuZQwZQCiFNaNbNiNeMKQCbZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTAywZQwZQCiFNaNbNiNeMKQCbZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5array__T15InPlaceAppenderTyAaZQwZQCiFNaNbNiNeMKQCbZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std5stdio4FileZQBmFNaNbNiNeMKQBfZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCyFNaNbNiNeMKQCrZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTS3std8datetime8timezone13PosixTimeZone6TTInfoZQCpFNaNbNiNeMKQCiZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface4RootZQBvFNaNbNiNeMKQBoZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBw2gc11gcinterface5RangeZQBwFNaNbNiNeMKQBpZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBw6thread7context12StackContextZQCdFNaNbNiNeMKQBwZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNeMKQDjZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBu9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDoFNaNbNiNeMKQDhZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1SZQCsFNaNbNiNeMKQClZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1SZQDrFNaNbNiNeMKQDkZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1SZQDpFNaNbNiNeMKQDiZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQBzTQBcZQCuFKQCmKQBpZ1SZQEsFNaNbNiNeMKQElZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std3uni17CodepointIntervalTQBdTQBhZQByFKQBqKQBuZ1SZQDwFNaNbNiNeMKQDpZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std4file15DirIteratorImplTQBcTAyaTEQBkQBj8SpanModeTbZQCqFKQCiKQBgKQBgKbZ1SZQEuFNaNbNiNeMKQEnZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std5regexQDb2ir10NamedGroupTQBeTQBiZQBzFKQBrKQBvZ1SZQDxFNaNbNiNeMKQDqZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std5regexQDb2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1SZQDuFNaNbNiNeMKQDnZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1SZQDtFNaNbNiNeMKQDmZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTaTaTaZQtFKaKaZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTkTkTkZQtFKkKkZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTmTmTmZQtFKmKmZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTwTwTwZQtFKwKwZ1SZQCmFNaNbNiNeMKQCfZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTxaTaTxaZQvFKaKxaZ1SZQCpFNaNbNiNeMKQCiZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTSQBwQBuQBo__T10emplaceRefTyaTaThZQuFKaKhZ1SZQCnFNaNbNiNeMKQCgZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTaZQxFNaNbNiNeMKaZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTkZQxFNaNbNiNeMKkZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTmZQxFNaNbNiNeMKmZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTuZQxFNaNbNiNeMKuZv@Base 15 ++ _D4core8internal8lifetime__T18emplaceInitializerTwZQxFNaNbNiNeMKwZv@Base 15 ++ _D4core8internal8postblit11__moduleRefZ@Base 15 ++ _D4core8internal8postblit12__ModuleInfoZ@Base 15 ++ _D4core8internal8spinlock11__moduleRefZ@Base 15 ++ _D4core8internal8spinlock12__ModuleInfoZ@Base 15 ++ _D4core8internal8spinlock15AlignedSpinLock6__ctorMOFNbNcNiNeEQChQCfQBz8SpinLock10ContentionZOSQDoQDmQDgQDa@Base 15 ++ _D4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D4core8internal8spinlock8SpinLock4lockMOFNbNiNeZv@Base 15 ++ _D4core8internal8spinlock8SpinLock5yieldMOFNbNiNemZv@Base 15 ++ _D4core8internal8spinlock8SpinLock6__ctorMOFNbNcNiNeEQBzQBxQBrQBl10ContentionZOSQDaQCyQCsQCm@Base 15 ++ _D4core8internal8spinlock8SpinLock6__initZ@Base 15 ++ _D4core8internal8spinlock8SpinLock6unlockMOFNbNiNeZv@Base 15 ++ _D4core8internal9container5array11__moduleRefZ@Base 15 ++ _D4core8internal9container5array12__ModuleInfoZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk4backMNgFNaNbNcNdNiZNgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk4swapMFNaNbNiNfKSQCkQCiQCcQBv__TQBsTQBpZQCaZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk5frontMNgFNaNbNcNdNiNfZNgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk7opIndexMNgFNaNbNcNimZNgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNiZANgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk7opSliceMNgFNaNbNimmZANgAv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk8opAssignMFNbNcNiNjSQCnQClQCfQBy__TQBvTQBsZQCdZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTAvZQk__T10insertBackZQnMFNbNiQBdZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4backMNgFNaNbNcNdNiZNgPSQBxQBwQBqQBp@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf4swapMFNaNbNiNfKSQDgQDeQCyQCr__TQCoTQClZQCwZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5frontMNgFNaNbNcNdNiNfZNgPSQCaQBzQBtQBs@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opIndexMNgFNaNbNcNimZNgPSQBzQByQBsQBr@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNiZANgPSQBxQBwQBqQBp@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7opSliceMNgFNaNbNimmZANgPSQBzQByQBsQBr@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf8opAssignMFNbNcNiNjSQDjQDhQDbQCu__TQCrTQCoZQCzZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf__T10insertBackZQnMFNbNiKQCaZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTQDfZQDwQCo@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTQDcZQDtQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTQDeZQDvQCn@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4backMNgFNaNbNcNdNiZNgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw4swapMFNaNbNiNfKSQExQEvQEpQEi__TQEfTQEcZQEnZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5frontMNgFNaNbNcNdNiNfZNgPSQFhQFfQEzQDr__TQDmTQDhTQDiZQDyQCo@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opIndexMNgFNaNbNcNimZNgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNiZANgPSQFeQFcQEwQDo__TQDjTQDeTQDfZQDvQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7opSliceMNgFNaNbNimmZANgPSQFgQFeQEyQDq__TQDlTQDgTQDhZQDxQCn@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCw8opAssignMFNbNcNiNjSQFaQEyQEsQEl__TQEiTQEfZQEqZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4backMNgFNaNbNcNdNiZNgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu4swapMFNaNbNiNfKSQEvQEtQEnQEg__TQEdTQEaZQElZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5frontMNgFNaNbNcNdNiNfZNgPSQFfQFdQExQDp__TQDkTQDfTiZQDuQCm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opIndexMNgFNaNbNcNimZNgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNiZANgPSQFcQFaQEuQDm__TQDhTQDcTiZQDrQCj@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7opSliceMNgFNaNbNimmZANgPSQFeQFcQEwQDo__TQDjTQDeTiZQDtQCl@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTPSQBqQBoQBi7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCu8opAssignMFNbNcNiNjSQEyQEwQEqQEj__TQEgTQEdZQEoZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4backMNgFNaNbNcNdNiZNgSQCcQCbQBvQBu@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk4swapMFNaNbNiNfKSQDlQDjQDdQCw__TQCtTQCqZQDbZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5frontMNgFNaNbNcNdNiNfZNgSQCfQCeQByQBx@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opIndexMNgFNaNbNcNimZNgSQCeQCdQBxQBw@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNiZANgSQCcQCbQBvQBu@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7opSliceMNgFNaNbNimmZANgSQCeQCdQBxQBw@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCwTQCtZQDeZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk__T10insertBackZQnMFNbNiQCeZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4backMNgFNaNbNcNdNiZNgSQDoQBzQBzQBp@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh4swapMFNaNbNiNfKSQDiQDgQDaQCt__TQCqTQCnZQCyZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5frontMNgFNaNbNcNdNiNfZNgSQDrQCcQCcQBs@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opIndexMNgFNaNbNcNimZNgSQDqQCbQCbQBr@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNiZANgSQDoQBzQBzQBp@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7opSliceMNgFNaNbNimmZANgSQDqQCbQCbQBr@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh__T10insertBackZQnMFNbNiQCbZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi11__invariantMxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi12__invariant0MxFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4backMNgFNaNbNcNdNiZNgSQDpQCaQCaQBq@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi4swapMFNaNbNiNfKSQDjQDhQDbQCu__TQCrTQCoZQCzZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5frontMNgFNaNbNcNdNiNfZNgSQDsQCdQCdQBt@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi5resetMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMFNbNdNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNimZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opIndexMNgFNaNbNcNimZNgSQDrQCcQCcQBs@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNiZANgSQDpQCaQCaQBq@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7opSliceMNgFNaNbNimmZANgSQDrQCcQCcQBs@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi7popBackMFNbNiZv@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 ++ _D4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi__T10insertBackZQnMFNbNiQCcZv@Base 15 ++ _D4core8internal9container5treap11__moduleRefZ@Base 15 ++ _D4core8internal9container5treap12__ModuleInfoZ@Base 15 ++ _D4core8internal9container5treap4Rand5frontMFNaNbNdNiNfZk@Base 15 ++ _D4core8internal9container5treap4Rand6__initZ@Base 15 ++ _D4core8internal9container5treap4Rand6opCallMFNaNbNiNfZk@Base 15 ++ _D4core8internal9container5treap4Rand8popFrontMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh10initializeMFNaNbNiNfmZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh13opApplyHelperFNbxPSQDmQDkQDeQCx__TQCuTQCrZQDc4NodeMDFNbKxSQEzQDkQDkQDaZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZQBl@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6insertMFNbNiQBqZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeFNbNiPPSQDgQDeQCyQCr__TQCoTQClZQCw4NodeQCxZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6removeMFNbNiQBqZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMFNbMDFNbKQBvZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7opApplyMxFNbMDFNbKxSQDmQBxQBxQBnZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateLFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh7rotateRFNaNbNiNfPSQDkQDiQDcQCv__TQCsTQCpZQDa4NodeZQBi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8freeNodeFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh8opAssignMFNbNcNiNjSQDlQDjQDdQCw__TQCtTQCqZQDbZQBc@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9allocNodeMFNbNiQBtZPSQDnQDlQDfQCy__TQCvTQCsZQDd4Node@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh9removeAllMFNbNiZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi10initializeMFNaNbNiNfmZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi13opApplyHelperFNbxPSQDnQDlQDfQCy__TQCvTQCsZQDd4NodeMDFNbKxSQFaQDlQDlQDbZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node11__xopEqualsMxFKxSQDqQDoQDiQDb__TQCyTQCvZQDgQByZb@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node9__xtoHashFNbNeKxSQDpQDnQDhQDa__TQCxTQCuZQDfQBxZm@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZQBl@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6insertMFNbNiQBrZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeFNbNiPPSQDhQDfQCzQCs__TQCpTQCmZQCx4NodeQCyZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6removeMFNbNiQBrZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMFNbMDFNbKQBwZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7opApplyMxFNbMDFNbKxSQDnQByQByQBoZiZi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateLFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi7rotateRFNaNbNiNfPSQDlQDjQDdQCw__TQCtTQCqZQDb4NodeZQBi@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8freeNodeFNbNiPSQDiQDgQDaQCt__TQCqTQCnZQCy4NodeZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi8opAssignMFNbNcNiNjSQDmQDkQDeQCx__TQCuTQCrZQDcZQBc@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9allocNodeMFNbNiQBuZPSQDoQDmQDgQCz__TQCwTQCtZQDe4Node@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllFNbNiPSQDjQDhQDbQCu__TQCrTQCoZQCz4NodeZv@Base 15 ++ _D4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi9removeAllMFNbNiZv@Base 15 ++ _D4core8internal9container6common11__moduleRefZ@Base 15 ++ _D4core8internal9container6common12__ModuleInfoZ@Base 15 ++ _D4core8internal9container6common7xmallocFNbNimZPv@Base 15 ++ _D4core8internal9container6common8xreallocFNbNiPvmZQe@Base 15 ++ _D4core8internal9container6common__T10initializeTAvZQqFNaNbNiNfKQpZv@Base 15 ++ _D4core8internal9container6common__T10initializeTPS3gcc8sections3elf3DSOZQBlFNaNbNiNfKQBlZv@Base 15 ++ _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 ++ _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDcFNaNbNiNfKQDcZv@Base 15 ++ _D4core8internal9container6common__T10initializeTPSQBxQBvQBp7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQDaFNaNbNiNfKQDaZv@Base 15 ++ _D4core8internal9container6common__T10initializeTS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface4RootZQBnFNaNbNiNfKQBnZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBw2gc11gcinterface5RangeZQBoFNaNbNiNfKQBoZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDbFNaNbNiNfKQDbZv@Base 15 ++ _D4core8internal9container6common__T10initializeTSQBwQBuQBo7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCzFNaNbNiNfKQCzZv@Base 15 ++ _D4core8internal9container6common__T7destroyTAvZQmFNaNbNiNfKQpZv@Base 15 ++ _D4core8internal9container6common__T7destroyTPS3gcc8sections3elf3DSOZQBhFNaNbNiNfKQBlZv@Base 15 ++ _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 ++ _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCyFNaNbNiNfKQDcZv@Base 15 ++ _D4core8internal9container6common__T7destroyTPSQBtQBrQBl7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCwFNaNbNiNfKQDaZv@Base 15 ++ _D4core8internal9container6common__T7destroyTS3gcc8sections3elf9ThreadDSOZQBmFNaNbNiNfKQBqZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface4RootZQBjFNaNbNiNfKQBnZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBs2gc11gcinterface5RangeZQBkFNaNbNiNfKQBoZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQCxFNaNbNiNfKQDbZv@Base 15 ++ _D4core8internal9container6common__T7destroyTSQBsQBqQBk7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4NodeZQCvFNaNbNiNfKQCzZv@Base 15 ++ _D4core8internal9container7hashtab11__moduleRefZ@Base 15 ++ _D4core8internal9container7hashtab12__ModuleInfoZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi10__aggrDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi11__fieldDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi13opIndexAssignMFNbNiQBtQCaZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi3getMFNbNiQBmZPQBn@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node11__xopEqualsMxFKxSQDsQDqQDkQDd__TQCyTQCtTQCtZQDkQCcZb@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node9__xtoHashFNbNeKxSQDrQDpQDjQDc__TQCxTQCsTQCsZQDjQCbZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4growMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4maskMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi5resetMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6hashOfFNaNbNiNeMKxAaZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6removeMFNbNiIAaZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6shrinkMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opApplyMFMDFKQBqKQBqZiZi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi7opIndexMNgFNaNbNcNiQBwZNgSQByQByQBr@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTQCpZQDgZQBg@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxAaZPNgSQCxQCxQCq@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk10__aggrDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk11__fieldDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk13opIndexAssignMFNbNiQBwQCcZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk3getMFNbNiQBoZPQBq@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4growMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4maskMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk5resetMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6hashOfFNaNbNiNeMKxPvZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6removeMFNbNiIPvZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6shrinkMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opApplyMFMDFKQBsKQBtZiZi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk7opIndexMNgFNaNbNcNiQByZNgPSQCbQCaQBuQBt@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk8opAssignMFNbNcNiNjSQDqQDoQDiQDb__TQCwTQCrTQCsZQDiZQBg@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPvZPNgPSQDaQCzQCtQCs@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi10__aggrDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi11__fieldDtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi13opIndexAssignMFNbNiiQByZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi14__aggrPostblitMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi18ensureNotInOpApplyMFNaNbNiNfZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi3getMFNbNiQBmZPi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4growMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4maskMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5emptyMxFNaNbNdNiNfZb@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi5resetMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__dtorMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6hashOfFNaNbNiNeMKxPyQBvZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6lengthMxFNaNbNdNiNfZm@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6removeMFNbNiIPyQBqZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6shrinkMFNbNiZv@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opApplyMFMDFKQBqKiZiZi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi7opIndexMNgFNaNbNcNiQBwZNgi@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi8opAssignMFNbNcNiNjSQDoQDmQDgQCz__TQCuTQCpTiZQDeZQBe@Base 15 ++ _D4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi__T13opBinaryRightVAyaa2_696eZQBbMNgFNaNbNiMxPyQCvZPNgi@Base 15 ++ _D4core8lifetime11__moduleRefZ@Base 15 ++ _D4core8lifetime12__ModuleInfoZ@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS2rt3aaA4ImplZQBcFNaNbNeZPQBa@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS2rt9critical_18D_CRITICAL_SECTIONZQBxFNaNbNeZPQBv@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeZQCnFNaNbNeZPQCl@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAAyaZQxZQCcFNaNbNeZPQCa@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBrZQCxFNaNbNeZPQCv@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBsZQCyFNaNbNeZPQCw@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAxaZQwZQCbFNaNbNeZPQBz@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAyaZQwZQCbFNaNbNeZPQBz@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAyuZQwZQCbFNaNbNeZPQBz@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTAywZQwZQCbFNaNbNeZPQBz@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std5array__T15InPlaceAppenderTyAaZQwZQCbFNaNbNeZPQBz@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std8datetime8timezone13PosixTimeZone14TransitionTypeZQCrFNaNbNeZPQCp@Base 15 ++ _D4core8lifetime__T11_d_newitemTTS3std8datetime8timezone13PosixTimeZone6TTInfoZQCiFNaNbNeZPQCg@Base 15 ++ _D4core8lifetime__T11_d_newitemTTSQBg6thread7context12StackContextZQBwFNaNbNeZPQBu@Base 15 ++ _D4core8lifetime__T11copyEmplaceTS3std11concurrency3TidTQxZQBoFNaNbNiKQBlKQBpZv@Base 15 ++ _D4core8lifetime__T11moveEmplaceTAyaZQsFNaNbNiKQoKQrZv@Base 15 ++ _D4core8lifetime__T11moveEmplaceTC3std3zip13ArchiveMemberZQBnFNaNbNiKQBkKQBoZv@Base 15 ++ _D4core8lifetime__T11moveEmplaceTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCnFNaNbNiKQCkKQCoZv@Base 15 ++ _D4core8lifetime__T11moveEmplaceTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCrFNaNbNiKQCoKQCsZv@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3gcc9backtrace12LibBacktraceZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std11concurrency10MessageBoxZQBuFNaNbNeZQBq@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std11concurrency11MailboxFullZQBvFNaNbNeZQBr@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std11concurrency14FiberScheduler14FiberConditionZQCoFNaNbNeZQCk@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std11concurrency14FiberScheduler9InfoFiberZQCiFNaNbNeZQCe@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std11concurrency19TidMissingExceptionZQCdFNaNbNeZQBz@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std11parallelism17ParallelismThreadZQCbFNaNbNeZQBx@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std11parallelism20ParallelForeachErrorZQCeFNaNbNeZQCa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std11parallelism8TaskPoolZQBrFNaNbNeZQBn@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std3net4curl13CurlExceptionZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std3net4curl20CurlTimeoutExceptionZQCaFNaNbNeZQBw@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std3uri12URIExceptionZQBnFNaNbNeZQBj@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std3utf12UTFExceptionZQBnFNaNbNeZQBj@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std3zip12ZipExceptionZQBnFNaNbNeZQBj@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std3zip13ArchiveMemberZQBoFNaNbNeZQBk@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std4conv13ConvExceptionZQBpFNaNbNeZQBl@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std4conv21ConvOverflowExceptionZQBxFNaNbNeZQBt@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std4file13FileExceptionZQBpFNaNbNeZQBl@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std4json13JSONExceptionZQBpFNaNbNeZQBl@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std4uuid20UUIDParsingExceptionZQBwFNaNbNeZQBs@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std4zlib13ZlibExceptionZQBpFNaNbNeZQBl@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std5regex8internal2ir14RegexExceptionZQCdFNaNbNeZQBz@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std5stdio14StdioExceptionZQBrFNaNbNeZQBn@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6format15FormatExceptionZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket11UnixAddressZQBpFNaNbNeZQBl@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket12InternetHostZQBqFNaNbNeZQBm@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket13HostExceptionZQBrFNaNbNeZQBn@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket14UnknownAddressZQBsFNaNbNeZQBo@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket15InternetAddressZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket16AddressExceptionZQBuFNaNbNeZQBq@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket16Internet6AddressZQBuFNaNbNeZQBq@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket17SocketOSExceptionZQBvFNaNbNeZQBr@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket21SocketAcceptExceptionZQBzFNaNbNeZQBv@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket22SocketFeatureExceptionZQCaFNaNbNeZQBw@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket23UnknownAddressReferenceZQCbFNaNbNeZQBx@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket24SocketParameterExceptionZQCcFNaNbNeZQBy@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket6SocketZQBjFNaNbNeZQBf@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std6socket7ServiceZQBkFNaNbNeZQBg@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std7process16ProcessExceptionZQBvFNaNbNeZQBr@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std7process3PidZQBhFNaNbNeZQBd@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std7variant16VariantExceptionZQBvFNaNbNeZQBr@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding17EncodingExceptionZQBxFNaNbNeZQBt@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding18EncodingSchemeUtf8ZQByFNaNbNeZQBu@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding19EncodingSchemeASCIIZQBzFNaNbNeZQBv@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding20EncodingSchemeLatin1ZQCaFNaNbNeZQBw@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding20EncodingSchemeLatin2ZQCaFNaNbNeZQBw@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeUtf16NativeZQCfFNaNbNeZQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeUtf32NativeZQCfFNaNbNeZQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1250ZQCfFNaNbNeZQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1251ZQCfFNaNbNeZQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std8encoding25EncodingSchemeWindows1252ZQCfFNaNbNeZQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC3std9exception14ErrnoExceptionZQBvFNaNbNeZQBr@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC6object5ErrorZQBeFNaNbNeZQBa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTC9ExceptionZQBbFNaNbNeZQx@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync5mutex5MutexZQBlFNaNbNeZQBh@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6ReaderZQCeFNaNbNeZQCa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync7rwmutex14ReadWriteMutex6WriterZQCeFNaNbNeZQCa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync9condition9ConditionZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4sync9exception9SyncErrorZQBtFNaNbNeZQBp@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh4time13TimeExceptionZQBoFNaNbNeZQBk@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh6thread10threadbase15ThreadExceptionZQCeFNaNbNeZQCa@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh6thread8osthread6ThreadZQBrFNaNbNeZQBn@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh9exception10RangeErrorZQBqFNaNbNeZQBm@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh9exception16OutOfMemoryErrorZQBwFNaNbNeZQBs@Base 15 ++ _D4core8lifetime__T12_d_newclassTTCQBh9exception16UnicodeExceptionZQBwFNaNbNeZQBs@Base 15 ++ _D4core8lifetime__T12_d_newclassTTOCQBi4sync5mutex5MutexZQBmFNaNbNeZOQBi@Base 15 ++ _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6ReaderZQCfFNaNbNeZOQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTOCQBi4sync7rwmutex14ReadWriteMutex6WriterZQCfFNaNbNeZOQCb@Base 15 ++ _D4core8lifetime__T12_d_newclassTTOCQBi4sync9condition9ConditionZQBuFNaNbNeZOQBq@Base 15 ++ _D4core8lifetime__T12_d_newclassTTyC3std8datetime8timezone13PosixTimeZoneZQCdFNaNbNeZyQBz@Base 15 ++ _D4core8lifetime__T15moveEmplaceImplTAyaZQwFNaNbNiNfMKQrNkMKQxZv@Base 15 ++ _D4core8lifetime__T15moveEmplaceImplTC3std3zip13ArchiveMemberZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 ++ _D4core8lifetime__T15moveEmplaceImplTE3std6loggerQBv8LogLevelZQBrFNaNbNiNfMKQBnNkMKQBuZv@Base 15 ++ _D4core8lifetime__T15moveEmplaceImplTS3std8bitmanip__T7BitsSetTmZQlZQBxFNaNbNiNfMKQBtNkMKQCaZv@Base 15 ++ _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 ++ _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCrFNaNbNiNfMKQCnNkMKQCuZv@Base 15 ++ _D4core8lifetime__T15moveEmplaceImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNfMKQCrNkMKQCyZv@Base 15 ++ _D4core8lifetime__T15trustedMoveImplTAyaZQwFNaNbNiNeNkMKQtZQw@Base 15 ++ _D4core8lifetime__T15trustedMoveImplTC3std3zip13ArchiveMemberZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 ++ _D4core8lifetime__T15trustedMoveImplTE3std6loggerQBv8LogLevelZQBrFNaNbNiNeNkMKQBpZQBt@Base 15 ++ _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 ++ _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCrFNaNbNiNeNkMKQCpZQCt@Base 15 ++ _D4core8lifetime__T15trustedMoveImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCvFNaNbNiNeNkMKQCtZQCx@Base 15 ++ _D4core8lifetime__T4moveTAyaZQkFNaNbNiNfNkMKQtZQw@Base 15 ++ _D4core8lifetime__T4moveTC3std3zip13ArchiveMemberZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 ++ _D4core8lifetime__T4moveTE3std6loggerQBj8LogLevelZQBfFNaNbNiNfNkMKQBpZQBt@Base 15 ++ _D4core8lifetime__T4moveTS3std8bitmanip__T7BitsSetTmZQlZQBlFNaNbNiNfKQBsKQBwZv@Base 15 ++ _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 ++ _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNiNfNkMKQCpZQCt@Base 15 ++ _D4core8lifetime__T4moveTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCjFNaNbNiNfNkMKQCtZQCx@Base 15 ++ _D4core8lifetime__T7emplaceTAyaTQeZQqFNaNbNiNfPQtKQwZQh@Base 15 ++ _D4core8lifetime__T7emplaceTC3gcc9backtrace12LibBacktraceTiZQBpFNiQBmKiZQBs@Base 15 ++ _D4core8lifetime__T7emplaceTC3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocatorTOSQDcQDbQCq18RCISharedAllocatorZQEqFNaNbNiAvKOQBtZQEz@Base 15 ++ _D4core8lifetime__T7emplaceTC3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocatorTOSQDcQDbQCq18RCISharedAllocatorZQEqFNaNbNiNfQEtKOQBwZQFc@Base 15 ++ _D4core8lifetime__T7emplaceTC3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEkZQGdFNaNbNiAvZQGh@Base 15 ++ _D4core8lifetime__T7emplaceTC3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEkZQGdFNaNbNiNfQGgZQGk@Base 15 ++ _D4core8lifetime__T7emplaceTC3std3zip13ArchiveMemberTQzZQBlFNaNbNiNfPQBpKQBtZQj@Base 15 ++ _D4core8lifetime__T7emplaceTC3std6logger10filelogger10FileLoggerTSQBl5stdio4FileTEQCbQCaQDi8LogLevelZQDeFAvKQBrQBeZQDj@Base 15 ++ _D4core8lifetime__T7emplaceTC3std6logger10filelogger10FileLoggerTSQBl5stdio4FileTEQCbQCaQDi8LogLevelZQDeFNfQDbKQBuQBhZQDm@Base 15 ++ _D4core8lifetime__T7emplaceTC3std6loggerQBm16StdForwardLoggerTEQBiQBhQCp8LogLevelZQClFAvQBaZQCm@Base 15 ++ _D4core8lifetime__T7emplaceTC3std6loggerQBm16StdForwardLoggerTEQBiQBhQCp8LogLevelZQClFNfQCiQBdZQCp@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiAvZQBh@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb4sync5mutex5MutexZQBfFNbNiNfQBgZQBk@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl12conservativeQw14ConservativeGCZQClFQCgZQCk@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb8internal2gc4impl6manualQp8ManualGCZQBxFQBsZQBw@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception10RangeErrorTAyaTmTnZQBsFNaNbNiNfQBvKQyKmKQxZQCh@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTiZQBuFNaNbNiNfQBxKQzKQBcKiZQCk@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTQeTmZQBuFNaNbNiNfQBxKQzKQBcKmZQCk@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception11AssertErrorTAyaTmZQBrFNaNbNiNfQBuKQwKmZQCd@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception11SwitchErrorTAyaTQeTmTnZQBwFNaNbNiNfQBzKQBbKQBfKmKQBcZQCr@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCxFNaNbNiNfQDaKQCaKQBtKQBeKmZQDs@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception15ArrayIndexErrorTmTmTAyaTmTnZQCbFNaNbNiNfQCeKmKmKQBcKmKQBcZQCw@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception15ArraySliceErrorTmTmTmTAyaTmTnZQCdFNaNbNiNfQCgKmKmKmKQBeKmKQBeZQDa@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTAyaTmZQBwFNaNbNiNfQBzKQwKmZQCi@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception16OutOfMemoryErrorTbTAyaTmZQByFNaNbNiNfQCbKbKQyKmZQCm@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception27InvalidMemoryOperationErrorTAyaTmZQChFNaNbNiNfQCkKQwKmZQCt@Base 15 ++ _D4core8lifetime__T7emplaceTCQBb9exception9ForkErrorTAyaTmTnZQBqFNaNbNiNfQBtKQyKmKQxZQCf@Base 15 ++ _D4core8lifetime__T7emplaceTS3std11concurrency__T4ListTSQBbQBa7MessageZQw4NodeTQyZQClFPQChKQBkZQj@Base 15 ++ _D4core8lifetime__T7emplaceTS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJrFNaNbNiNfPQJvZQf@Base 15 ++ _D4core8lifetime__T7emplaceTS3std3net4curl3FTP4ImplZQBhFNaNbNiNfPQBlZQf@Base 15 ++ _D4core8lifetime__T7emplaceTS3std3net4curl4HTTP4ImplZQBiFNaNbNiNfPQBmZQf@Base 15 ++ _D4core8lifetime__T7emplaceTS3std3net4curl4SMTP4ImplZQBiFNaNbNiNfPQBmZQf@Base 15 ++ _D4core8lifetime__T7emplaceTS3std4file15DirIteratorImplTAyaTEQBgQBf8SpanModeTbZQCiFNfPQCgKQBiKQBiKbZQp@Base 15 ++ _D4core8lifetime__T7emplaceTS3std6socket11AddressInfoTQBaZQBnFNaNbNiNfPQBrKQBvZQj@Base 15 ++ _D4core8lifetime__T7emplaceTaTaZQnFNaNbNiNfPaKaZQf@Base 15 ++ _D4core8lifetime__T7emplaceTwTwZQnFNaNbNiNfPwKwZQf@Base 15 ++ _D4core8lifetime__T8moveImplTAyaZQoFNaNbNiNfNkMKQtZQw@Base 15 ++ _D4core8lifetime__T8moveImplTC3std3zip13ArchiveMemberZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 ++ _D4core8lifetime__T8moveImplTE3std6loggerQBn8LogLevelZQBjFNaNbNiNfNkMKQBpZQBt@Base 15 ++ _D4core8lifetime__T8moveImplTS3std8bitmanip__T7BitsSetTmZQlZQBpFNaNbNiNfMKQBtNkMKQCaZv@Base 15 ++ _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 ++ _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone10TransitionZQCjFNaNbNiNfNkMKQCpZQCt@Base 15 ++ _D4core8lifetime__T8moveImplTS3std8datetime8timezone13PosixTimeZone14TempTransitionZQCnFNaNbNiNfNkMKQCtZQCx@Base 15 ++ _D4core8volatile11__moduleRefZ@Base 15 ++ _D4core8volatile12__ModuleInfoZ@Base 15 ++ _D4core9attribute11__moduleRefZ@Base 15 ++ _D4core9attribute12__ModuleInfoZ@Base 15 ++ _D4core9attribute9gnuAbiTag11__xopEqualsMxFKxSQBsQBqQBjZb@Base 15 ++ _D4core9attribute9gnuAbiTag6__ctorMFNaNbNcNfAAyaXSQBwQBuQBn@Base 15 ++ _D4core9attribute9gnuAbiTag6__initZ@Base 15 ++ _D4core9attribute9gnuAbiTag9__xtoHashFNbNeKxSQBrQBpQBiZm@Base 15 ++ _D4core9exception10RangeError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCsQCqQCj@Base 15 ++ _D4core9exception10RangeError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCqQCoQCh@Base 15 ++ _D4core9exception10RangeError6__initZ@Base 15 ++ _D4core9exception10RangeError6__vtblZ@Base 15 ++ _D4core9exception10RangeError7__ClassZ@Base 15 ++ _D4core9exception11AssertError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 ++ _D4core9exception11AssertError6__ctorMFNaNbNiNfAyamZCQBzQBxQBq@Base 15 ++ _D4core9exception11AssertError6__ctorMFNaNbNiNfC6object9ThrowableAyamZCQCrQCpQCi@Base 15 ++ _D4core9exception11AssertError6__initZ@Base 15 ++ _D4core9exception11AssertError6__vtblZ@Base 15 ++ _D4core9exception11AssertError7__ClassZ@Base 15 ++ _D4core9exception11SwitchError6__ctorMFNaNbNiNfAyaQdmC6object9ThrowableZCQCtQCrQCk@Base 15 ++ _D4core9exception11SwitchError6__initZ@Base 15 ++ _D4core9exception11SwitchError6__vtblZ@Base 15 ++ _D4core9exception11SwitchError7__ClassZ@Base 15 ++ _D4core9exception11__moduleRefZ@Base 15 ++ _D4core9exception11rangeMsgPutFNaNbNiNfKAaMAxaZv@Base 15 ++ _D4core9exception12__ModuleInfoZ@Base 15 ++ _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoAyamC6object9ThrowableZCQDdQDbQCu@Base 15 ++ _D4core9exception13FinalizeError6__ctorMFNaNbNiNfC8TypeInfoC6object9ThrowableAyamZCQDdQDbQCu@Base 15 ++ _D4core9exception13FinalizeError6__initZ@Base 15 ++ _D4core9exception13FinalizeError6__vtblZ@Base 15 ++ _D4core9exception13FinalizeError7__ClassZ@Base 15 ++ _D4core9exception13FinalizeError8toStringMxFNfZAya@Base 15 ++ _D4core9exception13assertHandlerFNbNdNiNePFNbAyamQeZvZv@Base 15 ++ _D4core9exception13assertHandlerFNbNdNiNeZPFNbAyamQeZv@Base 15 ++ _D4core9exception14_assertHandlerPFNbAyamQeZv@Base 15 ++ _D4core9exception15ArrayIndexError6__ctorMFNaNbNiNfmmAyamC6object9ThrowableZCQCxQCvQCo@Base 15 ++ _D4core9exception15ArrayIndexError6__initZ@Base 15 ++ _D4core9exception15ArrayIndexError6__vtblZ@Base 15 ++ _D4core9exception15ArrayIndexError7__ClassZ@Base 15 ++ _D4core9exception15ArraySliceError6__ctorMFNaNbNiNfmmmAyamC6object9ThrowableZCQCyQCwQCp@Base 15 ++ _D4core9exception15ArraySliceError6__initZ@Base 15 ++ _D4core9exception15ArraySliceError6__vtblZ@Base 15 ++ _D4core9exception15ArraySliceError7__ClassZ@Base 15 ++ _D4core9exception16OutOfMemoryError13superToStringMFNeZAya@Base 15 ++ _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCwQCuQCn@Base 15 ++ _D4core9exception16OutOfMemoryError6__ctorMFNaNbNiNfbAyamC6object9ThrowableZCQCxQCvQCo@Base 15 ++ _D4core9exception16OutOfMemoryError6__initZ@Base 15 ++ _D4core9exception16OutOfMemoryError6__vtblZ@Base 15 ++ _D4core9exception16OutOfMemoryError7__ClassZ@Base 15 ++ _D4core9exception16OutOfMemoryError8toStringMxFNeZAya@Base 15 ++ _D4core9exception16UnicodeException6__ctorMFNaNbNiNfAyamQemC6object9ThrowableZCQCzQCxQCq@Base 15 ++ _D4core9exception16UnicodeException6__initZ@Base 15 ++ _D4core9exception16UnicodeException6__vtblZ@Base 15 ++ _D4core9exception16UnicodeException7__ClassZ@Base 15 ++ _D4core9exception17SuppressTraceInfo6__initZ@Base 15 ++ _D4core9exception17SuppressTraceInfo6__vtblZ@Base 15 ++ _D4core9exception17SuppressTraceInfo7__ClassZ@Base 15 ++ _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 ++ _D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 ++ _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZ2ityCQCgQCeQBx@Base 15 ++ _D4core9exception17SuppressTraceInfo8instanceFNaNbNiNeZCQCcQCaQBt@Base 15 ++ _D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 ++ _D4core9exception27InvalidMemoryOperationError13superToStringMFNeZAya@Base 15 ++ _D4core9exception27InvalidMemoryOperationError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQDhQDfQCy@Base 15 ++ _D4core9exception27InvalidMemoryOperationError6__initZ@Base 15 ++ _D4core9exception27InvalidMemoryOperationError6__vtblZ@Base 15 ++ _D4core9exception27InvalidMemoryOperationError7__ClassZ@Base 15 ++ _D4core9exception27InvalidMemoryOperationError8toStringMxFNeZAya@Base 15 ++ _D4core9exception6_storeG256v@Base 15 ++ _D4core9exception9ForkError6__ctorMFNaNbNiNfAyamC6object9ThrowableZCQCoQCmQCf@Base 15 ++ _D4core9exception9ForkError6__initZ@Base 15 ++ _D4core9exception9ForkError6__vtblZ@Base 15 ++ _D4core9exception9ForkError7__ClassZ@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFKQnKmQlZ3getFNbNiZQBy@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf10RangeErrorTAyaTmTnZQBqFNaNbNiKQtKmQrZQBu@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFNaNbNiQtQviZQBu@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTiZQBsFQnQpiZ3getFNbNiZQBy@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFKQoKQrKmZ3getFNbNiZQCb@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTQeTmZQBsFNaNbNiKQuKQxKmZQBx@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFKQlKmZ3getFNbNiZQBv@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11AssertErrorTAyaTmZQBpFNaNbNiKQrKmZQBr@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFNaNbNiQvKQyKmQtZQCa@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf11SwitchErrorTAyaTQeTmTnZQBuFQpKQsKmQnZ3getFNbNiZQCe@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFKQBpKQBiKQtKmZ3getFNbNiZQDj@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf13FinalizeErrorTC8TypeInfoTC6object9ThrowableTAyaTmZQCvFNaNbNiKQBvKQBoKQzKmZQDf@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFKmKmKQrKmQpZ3getFNbNiZQCl@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf15ArrayIndexErrorTmTmTAyaTmTnZQBzFNaNbNiKmKmKQxKmQvZQCh@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFKmKmKmKQtKmQrZ3getFNbNiZQCp@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf15ArraySliceErrorTmTmTmTAyaTmTnZQCbFNaNbNiKmKmKmKQzKmQxZQCl@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFKQlKmZ3getFNbNiZQCa@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTAyaTmZQBuFNaNbNiKQrKmZQBw@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFNaNbNibKQsKmZQBz@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf16OutOfMemoryErrorTbTAyaTmZQBwFbKQmKmZ3getFNbNiZQCd@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFKQlKmZ3getFNbNiZQCl@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf27InvalidMemoryOperationErrorTAyaTmZQCfFNaNbNiKQrKmZQCh@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFKQnKmQlZ3getFNbNiZQBw@Base 15 ++ _D4core9exception__T11staticErrorTCQBhQBf9ForkErrorTAyaTmTnZQBoFNaNbNiKQtKmQrZQBs@Base 15 ++ _D4core9exception__T15__switch_errorTZQsFNaNbNiNeAyamZv@Base 15 ++ _D50TypeInfo_C3std12experimental9allocator10IAllocator6__initZ@Base 15 ++ _D50TypeInfo_E3std6format8internal5write12RoundingMode6__initZ@Base 15 ++ _D50TypeInfo_E3std8internal4test10dummyrange9RangeType6__initZ@Base 15 ++ _D50TypeInfo_E3std9algorithm9iteration14GroupingOpType6__initZ@Base 15 ++ _D50TypeInfo_E4core3sys5linux10perf_event11perf_sw_ids6__initZ@Base 15 ++ _D50TypeInfo_S3etc1c4odbc8sqltypes18SQL_NUMERIC_STRUCT6__initZ@Base 15.2 ++ _D50TypeInfo_S3etc1c7sqlite324sqlite3_rtree_query_info6__initZ@Base 15.2 ++ _D50TypeInfo_S3std4math8hardware20FloatingPointControl6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linux6uinput16uinput_abs_setup6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linux6uinput16uinput_ff_upload6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linux8io_uring14io_uring_probe6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11fanout_args6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11packet_mreq6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11sockaddr_ll6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_hdr6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQg9if_packet11tpacket_req6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5linuxQk7inotify13inotify_event6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5posix5spawn17posix_spawnattr_t6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5posix7netinet3in_11sockaddr_in6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5posix7pthread15pthread_cleanup6__initZ@Base 15 ++ _D50TypeInfo_S4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 ++ _D50TypeInfo_S4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D50TypeInfo_xS3std5range__T6strideTAywZQmFQhmZ6Result6__initZ@Base 15 ++ _D51TypeInfo_E3std6format8internal5write13PrecisionType6__initZ@Base 15 ++ _D51TypeInfo_E3std6format8internal5write13RoundingClass6__initZ@Base 15 ++ _D51TypeInfo_E4core3sys5linux10perf_event12perf_type_id6__initZ@Base 15 ++ _D51TypeInfo_E4core4sync7rwmutex14ReadWriteMutex6Policy6__initZ@Base 15 ++ _D51TypeInfo_E4core6thread5fiber4base9FiberBase7Rethrow6__initZ@Base 15 ++ _D51TypeInfo_OS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D51TypeInfo_S3etc1c4odbc6odbc3221tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 ++ _D51TypeInfo_S3etc1c4odbc6odbc6421tagSQL_NUMERIC_STRUCT6__initZ@Base 15.2 ++ _D51TypeInfo_S3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT6__initZ@Base 15.2 ++ _D51TypeInfo_S3std8internal4test3uda17HasPrivateMembers6__initZ@Base 15 ++ _D51TypeInfo_S4core13interpolation19InterpolationFooter6__initZ@Base 15 ++ _D51TypeInfo_S4core13interpolation19InterpolationHeader6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linux5input18ff_constant_effect6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linux5input18ff_periodic_effect6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linux5input18input_keymap_entry6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linux8io_uring15io_uring_params6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linuxQg9if_packet12sockaddr_pkt6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket2_hdr6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket3_hdr6__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5linuxQg9if_packet12tpacket_req36__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5posix7netinet3in_12sockaddr_in66__initZ@Base 15 ++ _D51TypeInfo_S4core3sys5posixQk5types16pthread_rwlock_t6__initZ@Base 15 ++ _D51TypeInfo_xC3std12experimental9allocator10IAllocator6__initZ@Base 15 ++ _D51TypeInfo_xS4core3sys5posixQk5types15pthread_mutex_t6__initZ@Base 15 ++ _D51TypeInfo_xS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Reader6__initZ@Base 15 ++ _D52TypeInfo_OC4core4sync7rwmutex14ReadWriteMutex6Writer6__initZ@Base 15 ++ _D52TypeInfo_OxS4core8internal8spinlock15AlignedSpinLock6__initZ@Base 15 ++ _D52TypeInfo_S3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 ++ _D52TypeInfo_S3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6__initZ@Base 15.2 ++ _D52TypeInfo_S3std12experimental9allocator12RCIAllocator6__initZ@Base 15 ++ _D52TypeInfo_S3std3uni__T19PackedArrayViewImplThVmi8ZQBc6__initZ@Base 15 ++ _D52TypeInfo_S3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linux2fs22file_dedupe_range_info6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linux5input19ff_condition_effect6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_bd_ts6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_req_u6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5linuxQg9if_packet13tpacket_stats6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5posixQk5types17_pthread_fastlock6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5posixQk5types17pthread_barrier_t6__initZ@Base 15 ++ _D52TypeInfo_S4core3sys5posixQk6socket16sockaddr_storage6__initZ@Base 15 ++ _D52TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx6__initZ@Base 15 ++ _D53TypeInfo_AS3std6logger11multilogger16MultiLoggerEntry6__initZ@Base 15 ++ _D53TypeInfo_E3std8typecons__T4FlagVAyaa6_756e73616665ZQz6__initZ@Base 15 ++ _D53TypeInfo_E4core8internal2gc4impl12conservativeQw4Bins6__initZ@Base 15 ++ _D53TypeInfo_S3etc1c4odbc8sqltypes21SQL_DAY_SECOND_STRUCT6__initZ@Base 15.2 ++ _D53TypeInfo_S3etc1c4odbc8sqltypes21SQL_YEAR_MONTH_STRUCT6__initZ@Base 15.2 ++ _D53TypeInfo_S3std11parallelism__T4TaskSQBaQz3runTDFZvZQv6__initZ@Base 15 ++ _D53TypeInfo_S3std3uni__T19PackedArrayViewImplTtVmi16ZQBd6__initZ@Base 15 ++ _D53TypeInfo_S3std5range__T4TakeTSQuQs__T6RepeatTaZQkZQBb6__initZ@Base 15 ++ _D53TypeInfo_S3std5regex8internal12backtracking9CtContext6__initZ@Base 15 ++ _D53TypeInfo_S3std5stdio4File__T16BinaryWriterImplVbi1ZQx6__initZ@Base 15 ++ _D53TypeInfo_S3std6digest3crc__T3CRCVki32Vmi3988292384ZQx6__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5linux8io_uring17io_cqring_offsets6__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5linux8io_uring17io_sqring_offsets6__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5linux8io_uring17io_uring_probe_op6__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5linuxQg9if_packet14tpacket_hdr_v16__initZ@Base 15 ++ _D53TypeInfo_S4core3sys5posixQk5types18pthread_condattr_t6__initZ@Base 15 ++ _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D53TypeInfo_S4core8internal2gc4impl12conservativeQw4Pool6__initZ@Base 15 ++ _D54TypeInfo_E3std12experimental9allocator5typed9AllocFlag6__initZ@Base 15 ++ _D54TypeInfo_E4core3sys5linux10perf_event15perf_event_type6__initZ@Base 15 ++ _D54TypeInfo_E4core8internal8spinlock8SpinLock10Contention6__initZ@Base 15 ++ _D54TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw6__initZ@Base 15 ++ _D54TypeInfo_S3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linux10perf_event15perf_event_attr6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linux5stdio21cookie_io_functions_t6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_auxdata6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linuxQg9if_packet15tpacket_stats_u6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5linuxQk8signalfd16signalfd_siginfo6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5posix9semaphore17_pthread_fastlock6__initZ@Base 15 ++ _D54TypeInfo_S4core3sys5posixQk5types19pthread_mutexattr_t6__initZ@Base 15 ++ _D54TypeInfo_xS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D55TypeInfo_E3std6format8internal5write17HasToStringResult6__initZ@Base 15 ++ _D55TypeInfo_E4core3sys5linux10perf_event16perf_hw_cache_id6__initZ@Base 15 ++ _D55TypeInfo_E4core3sys5linuxQg9if_packet16tpacket_versions6__initZ@Base 15 ++ _D55TypeInfo_PS3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 ++ _D55TypeInfo_PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D55TypeInfo_S3std3uni__T8CowArrayTSQwQu13ReallocPolicyZQBf6__initZ@Base 15 ++ _D55TypeInfo_S3std7variant__T8VariantNVmi32ZQp11SizeChecker6__initZ@Base 15 ++ _D55TypeInfo_S4core3sys5linux4tipc13sockaddr_tipc4Addr4Name6__initZ@Base 15 ++ _D55TypeInfo_S4core3sys5linuxQg9if_packet16tpacket_stats_v36__initZ@Base 15 ++ _D55TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t6__initZ@Base 15 ++ _D55TypeInfo_S4core3sys5posixQk5types20pthread_rwlockattr_t6__initZ@Base 15 ++ _D55TypeInfo_S4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 ++ _D55TypeInfo_xPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D55TypeInfo_yS3std8datetime8timezone13PosixTimeZone6TTInfo6__initZ@Base 15 ++ _D56TypeInfo_AxPS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D56TypeInfo_C3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 ++ _D56TypeInfo_E3std8typecons__T4FlagVAyaa7_646f436f756e74ZQBb6__initZ@Base 15 ++ _D56TypeInfo_S3std10checkedint__T7CheckedTmTSQBfQBe5AbortZQz6__initZ@Base 15 ++ _D56TypeInfo_S3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 ++ _D56TypeInfo_S3std8typecons__T5TupleTEQy8encoding3BOMTAhZQBb6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux10perf_event17perf_branch_entry6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux10perf_event17perf_event_header6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux10perf_event17perf_mem_data_src6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux10perf_event17perf_ns_link_info6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5linux8io_uring20io_uring_restriction6__initZ@Base 15 ++ _D56TypeInfo_S4core3sys5posixQk5types21pthread_barrierattr_t6__initZ@Base 15 ++ _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTaZQq6__initZ@Base 15 ++ _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTuZQq6__initZ@Base 15 ++ _D56TypeInfo_S4core6stdcpp11string_view__T11char_traitsTwZQq6__initZ@Base 15 ++ _D56TypeInfo_S4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa6__initZ@Base 15 ++ _D56TypeInfo_S4core8internal6traits23__InoutWorkaroundStruct6__initZ@Base 15 ++ _D56TypeInfo_xS4core8internal9container5array__T5ArrayTAvZQk6__initZ@Base 15 ++ _D57TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 ++ _D57TypeInfo_S4core3sys5linux8io_uring21io_uring_files_update6__initZ@Base 15 ++ _D57TypeInfo_S4core3sys5linuxQg9if_packet18tpacket_block_desc6__initZ@Base 15 ++ _D57TypeInfo_xC3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 ++ _D57TypeInfo_yS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 ++ _D58TypeInfo_AS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 ++ _D58TypeInfo_AyS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 ++ _D58TypeInfo_E2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ7OnCycle6__initZ@Base 15 ++ _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_6164617074697665ZQBd6__initZ@Base 15 ++ _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_636865636b446e73ZQBd6__initZ@Base 15 ++ _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_696e646972656374ZQBd6__initZ@Base 15 ++ _D58TypeInfo_E3std8typecons__T4FlagVAyaa8_706f704669727374ZQBd6__initZ@Base 15 ++ _D58TypeInfo_E4core3sys5linux10perf_event19perf_hw_cache_op_id6__initZ@Base 15 ++ _D58TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D58TypeInfo_OxC3std12experimental9allocator16ISharedAllocator6__initZ@Base 15 ++ _D58TypeInfo_S3etc1c4odbc6odbc3228tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 ++ _D58TypeInfo_S3etc1c4odbc6odbc6428tagTIME_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 ++ _D58TypeInfo_S3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 ++ _D58TypeInfo_S3std6format__T7sformatTaTxdZQoFNkMAaMAxaxdZ4Sink6__initZ@Base 15 ++ _D58TypeInfo_S3std8internal7cstring__T17TempCStringBufferTaZQw6__initZ@Base 15 ++ _D58TypeInfo_S4core3sys5linux8io_uring22io_uring_getevents_arg6__initZ@Base 15 ++ _D58TypeInfo_S4core3sys5linuxQg9if_packet19tpacket_bd_header_u6__initZ@Base 15 ++ _D58TypeInfo_S4core3sys5posix7pthread23_pthread_cleanup_buffer6__initZ@Base 15 ++ _D58TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw4List6__initZ@Base 15 ++ _D58TypeInfo_xS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 ++ _D59TypeInfo_AxS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 ++ _D59TypeInfo_E4core3sys5linux10perf_event20perf_event_ioc_flags6__initZ@Base 15 ++ _D59TypeInfo_E4core3sys5linux10perf_event20perf_sample_regs_abi6__initZ@Base 15 ++ _D59TypeInfo_OS3std12experimental9allocator18RCISharedAllocator6__initZ@Base 15 ++ _D59TypeInfo_S2rt9profilegc25_sharedStaticDtor_L115_C1FZ6Result6__initZ@Base 15.2 ++ _D59TypeInfo_S3etc1c4odbc6odbc3222tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 ++ _D59TypeInfo_S3etc1c4odbc6odbc6422tagSQL_INTERVAL_STRUCT6intval6__initZ@Base 15.2 ++ _D59TypeInfo_S3etc1c4odbc8sqltypes19SQL_INTERVAL_STRUCT7_intval6__initZ@Base 15.2 ++ _D59TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 ++ _D59TypeInfo_S3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 ++ _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10TempTTInfo6__initZ@Base 15 ++ _D59TypeInfo_S3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 ++ _D59TypeInfo_S4core3sys5linux10perf_event20perf_event_mmap_page6__initZ@Base 15 ++ _D59TypeInfo_S4core3sys5linuxQg9if_packet20tpacket_hdr_variant16__initZ@Base 15 ++ _D59TypeInfo_S4core3sys5posix5spawn26posix_spawn_file_actions_t6__initZ@Base 15 ++ _D59TypeInfo_xAS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh6__initZ@Base 15 ++ _D59TypeInfo_xAyS3std8internal14unicode_tables15UnicodeProperty6__initZ@Base 15 ++ _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6175746f5374617274ZQBf6__initZ@Base 15 ++ _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6c65616e5269676874ZQBf6__initZ@Base 15 ++ _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_6f70656e5269676874ZQBf6__initZ@Base 15 ++ _D60TypeInfo_E3std8typecons__T4FlagVAyaa9_706970654f6e506f70ZQBf6__initZ@Base 15 ++ _D60TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw5Range6__initZ@Base 15 ++ _D60TypeInfo_S3std3uni__T16SliceOverIndexedTSQBfQBe8GraphemeZQBk6__initZ@Base 15 ++ _D60TypeInfo_S3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D60TypeInfo_S3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D60TypeInfo_S3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D60TypeInfo_S3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D60TypeInfo_S3std5array__T8AppenderTACQz3zip13ArchiveMemberZQBi6__initZ@Base 15 ++ _D60TypeInfo_S3std8typecons__T5TupleTAyaTSQBc4json9JSONValueZQBf6__initZ@Base 15 ++ _D60TypeInfo_xS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 ++ _D60TypeInfo_xS3std3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D60TypeInfo_xS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 ++ _D60TypeInfo_xS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 ++ _D60TypeInfo_yS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 ++ _D60TypeInfo_yS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 ++ _D61TypeInfo_AxS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 ++ _D61TypeInfo_AxS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 ++ _D61TypeInfo_AyS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 ++ _D61TypeInfo_AyS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 ++ _D61TypeInfo_E4core3sys5linux10perf_event22perf_callchain_context6__initZ@Base 15 ++ _D61TypeInfo_E4core3sys5linux10perf_event22perf_event_read_format6__initZ@Base 15 ++ _D61TypeInfo_E4core8internal2gc4impl12conservativeQw4Pool7ShiftBy6__initZ@Base 15 ++ _D61TypeInfo_PxS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 ++ _D61TypeInfo_S3std5array__T8AppenderTASQz6socket11AddressInfoZQBj6__initZ@Base 15 ++ _D61TypeInfo_S3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 ++ _D61TypeInfo_S3std8bitmanip__T27FloatingPointRepresentationTdZQBg6__initZ@Base 15 ++ _D61TypeInfo_S3std8bitmanip__T27FloatingPointRepresentationTfZQBg6__initZ@Base 15 ++ _D61TypeInfo_S3std8typecons__T5TupleTC15TypeInfo_StructTPG32hZQBg6__initZ@Base 15 ++ _D61TypeInfo_S4core3sys5linuxQg9if_packet22tpacket_rollover_stats6__initZ@Base 15 ++ _D61TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t5_rt_t6__initZ@Base 15 ++ _D61TypeInfo_S4core4time__T12MonoTimeImplVEQBdQBb9ClockTypei0ZQBj6__initZ@Base 15 ++ _D61TypeInfo_S4core8internal6string__T17TempStringNoAllocVhi20ZQz6__initZ@Base 15 ++ _D61TypeInfo_xAS3std8datetime8timezone13PosixTimeZone10LeapSecond6__initZ@Base 15 ++ _D61TypeInfo_xAS3std8datetime8timezone13PosixTimeZone10Transition6__initZ@Base 15 ++ _D61TypeInfo_xPS3std11concurrency__T4ListTSQBbQBa7MessageZQw4Node6__initZ@Base 15 ++ _D61TypeInfo_xS3std3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D61TypeInfo_xS3std3utf__T10byCodeUnitTAxuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D61TypeInfo_xS3std3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D61TypeInfo_xS3std3utf__T10byCodeUnitTAyuZQrFQhZ14ByCodeUnitImpl6__initZ@Base 15 ++ _D62TypeInfo_AS3std5regex8internal12backtracking9CtContext7CtState6__initZ@Base 15 ++ _D62TypeInfo_E4core3sys5linux10perf_event23perf_branch_sample_type6__initZ@Base 15 ++ _D62TypeInfo_S3std12experimental9allocator10mallocator10Mallocator6__initZ@Base 15 ++ _D62TypeInfo_S3std3uni__T5StackTSQt8typecons__T5TupleTkTkTkZQnZQBm6__initZ@Base 15 ++ _D62TypeInfo_S4core8internal2gc4impl12conservativeQw12LeakDetector6__initZ@Base 15 ++ _D62TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 ++ _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_616c6c6f636174654743ZQBi6__initZ@Base 15 ++ _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_65786861757374697665ZQBi6__initZ@Base 15 ++ _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBi6__initZ@Base 15 ++ _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_6d756c7469626c6f636bZQBi6__initZ@Base 15 ++ _D63TypeInfo_E3std8typecons__T4FlagVAyaa10_736f72744f7574707574ZQBi6__initZ@Base 15 ++ _D63TypeInfo_E4core3sys5linux10perf_event24perf_event_sample_format6__initZ@Base 15 ++ _D63TypeInfo_S3etc1c4odbc6odbc3233tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 ++ _D63TypeInfo_S3etc1c4odbc6odbc6433tagTIMESTAMP_WITH_TIMEZONE_STRUCT6__initZ@Base 15.2 ++ _D63TypeInfo_S3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 ++ _D63TypeInfo_S3std6digest3crc__T3CRCVki64VmN2882303761517117440ZQBg6__initZ@Base 15 ++ _D63TypeInfo_S3std6digest3crc__T3CRCVki64VmN3932672073523589310ZQBg6__initZ@Base 15 ++ _D63TypeInfo_S3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 ++ _D63TypeInfo_S3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 ++ _D63TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t7_kill_t6__initZ@Base 15 ++ _D63TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo6__initZ@Base 15.2 ++ _D64TypeInfo_AS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 ++ _D64TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 ++ _D64TypeInfo_OS3std11concurrency__T4ListTSQBbQBa7MessageZQw8SpinLock6__initZ@Base 15 ++ _D64TypeInfo_PS3std8datetime8timezone13PosixTimeZone14TransitionType6__initZ@Base 15 ++ _D64TypeInfo_S3std6random__T14XorshiftEngineTkVki160Vii2ViN1ViN4ZQBl6__initZ@Base 15 ++ _D64TypeInfo_S3std6random__T14XorshiftEngineTkVki192ViN2Vii1Vii4ZQBl6__initZ@Base 15 ++ _D64TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t8_timer_t6__initZ@Base 15 ++ _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp6__initZ@Base 15.2 ++ _D64TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 ++ _D64TypeInfo_xS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 ++ _D65TypeInfo_AxS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 ++ _D65TypeInfo_E3std8typecons__T4FlagVAyaa11_776974685061727469616cZQBk6__initZ@Base 15 ++ _D65TypeInfo_E4core3sys5linux10perf_event26perf_hw_cache_op_result_id6__initZ@Base 15 ++ _D65TypeInfo_S3std12experimental9allocator12gc_allocator11GCAllocator6__initZ@Base 15 ++ _D65TypeInfo_S3std4math10operations__T23FloatingPointBitpatternTdZQBc6__initZ@Base 15 ++ _D65TypeInfo_S3std4math10operations__T23FloatingPointBitpatternTeZQBc6__initZ@Base 15 ++ _D65TypeInfo_S3std6random__T14XorshiftEngineTkVki96Vii10ViN5ViN26ZQBm6__initZ@Base 15 ++ _D65TypeInfo_S3std8typecons__T5TupleTmVAyaa3_706f73TmVQpa3_6c656eZQBk6__initZ@Base 15 ++ _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Reader12MonitorProxy6__initZ@Base 15 ++ _D65TypeInfo_S4core4sync7rwmutex14ReadWriteMutex6Writer12MonitorProxy6__initZ@Base 15 ++ _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15LargeObjectPool6__initZ@Base 15 ++ _D65TypeInfo_S4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTaTaTaZQtFKaKaZ1S6__initZ@Base 15 ++ _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTkTkTkZQtFKkKkZ1S6__initZ@Base 15 ++ _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTmTmTmZQtFKmKmZ1S6__initZ@Base 15 ++ _D65TypeInfo_S4core8internal8lifetime__T10emplaceRefTwTwTwZQtFKwKwZ1S6__initZ@Base 15 ++ _D65TypeInfo_xAS3std8datetime8timezone13PosixTimeZone14TempTransition6__initZ@Base 15 ++ _D65TypeInfo_xE4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa7AddType6__initZ@Base 15 ++ _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki128Vii11ViN8ViN19ZQBn6__initZ@Base 15 ++ _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki32Vii13ViN17Vii15ZQBn6__initZ@Base 15 ++ _D66TypeInfo_S3std6random__T14XorshiftEngineTkVki64Vii10ViN13ViN10ZQBn6__initZ@Base 15 ++ _D66TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii12Vii9ZQw6__initZ@Base 15 ++ _D66TypeInfo_S4core8internal8lifetime__T10emplaceRefTyaTaThZQuFKaKhZ1S6__initZ@Base 15 ++ _D66TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr6__initZ@Base 15.2 ++ _D66TypeInfo_xS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D67TypeInfo_E3std8typecons__T4FlagVAyaa12_437265617465466f6c646572ZQBm6__initZ@Base 15 ++ _D67TypeInfo_E3std8typecons__T4FlagVAyaa12_7468726f774f6e4572726f72ZQBm6__initZ@Base 15 ++ _D67TypeInfo_PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D67TypeInfo_S3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 ++ _D67TypeInfo_S3std3uni__T10assumeSizeS_DQBaQz5low_8FNaNbNiNfkZkVmi8ZQBr6__initZ@Base 15 ++ _D67TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t10_sigpoll_t6__initZ@Base 15 ++ _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi0ZQBa6__initZ@Base 15 ++ _D67TypeInfo_S4core6stdcpp11type_traits__T17integral_constantTbVbi1ZQBa6__initZ@Base 15 ++ _D67TypeInfo_xPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D68TypeInfo_AxPS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D68TypeInfo_E4core3sys5linux10perf_event29perf_branch_sample_type_shift6__initZ@Base 15 ++ _D68TypeInfo_E4core8demangle__T8DemangleTSQBcQBa7NoHooksZQBa10IsDelegate6__initZ@Base 15 ++ _D68TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 ++ _D68TypeInfo_S3std4math11exponential__T5ilogbTdZQjFNaNbNiNexdZ9floatBits6__initZ@Base 15 ++ _D68TypeInfo_S3std4math11exponential__T5ilogbTeZQjFNaNbNiNexeZ9floatBits6__initZ@Base 15 ++ _D68TypeInfo_S3std4math11exponential__T5ilogbTfZQjFNaNbNiNexfZ9floatBits6__initZ@Base 15 ++ _D68TypeInfo_S3std4math8rounding__T9floorImplTdZQnFNaNbNiNexdZ9floatBits6__initZ@Base 15 ++ _D68TypeInfo_S3std4math8rounding__T9floorImplTeZQnFNaNbNiNexeZ9floatBits6__initZ@Base 15 ++ _D68TypeInfo_S3std4math8rounding__T9floorImplTfZQnFNaNbNiNexfZ9floatBits6__initZ@Base 15 ++ _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigchild_t6__initZ@Base 15 ++ _D68TypeInfo_S4core3sys5posix6signal9siginfo_t11_sifields_t11_sigfault_t6__initZ@Base 15 ++ _D68TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D68TypeInfo_S4core8internal8lifetime__T10emplaceRefTxaTaTxaZQvFKaKxaZ1S6__initZ@Base 15 ++ _D68TypeInfo_xS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 ++ _D69TypeInfo_E3std8typecons__T4FlagVAyaa13_6361736553656e736974697665ZQBo6__initZ@Base 15 ++ _D69TypeInfo_E3std8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBo6__initZ@Base 15 ++ _D69TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 ++ _D69TypeInfo_S3std12experimental9allocator10mallocator17AlignedMallocator6__initZ@Base 15 ++ _D69TypeInfo_S3std12experimental9allocator14mmap_allocator13MmapAllocator6__initZ@Base 15 ++ _D69TypeInfo_S3std5array__T15InPlaceAppenderTACQBh3zip13ArchiveMemberZQBr6__initZ@Base 15 ++ _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii8Vii5Vii8ZQz6__initZ@Base 15 ++ _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii8Vii6Vii7ZQz6__initZ@Base 15 ++ _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryThVii8Vii8Vii5ZQz6__initZ@Base 15 ++ _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii8Vii7Vii6ZQz6__initZ@Base 15 ++ _D69TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTtVii8Vii8Vii5ZQz6__initZ@Base 15 ++ _D69TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 ++ _D69TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info21sqlite3_index_orderby6__initZ@Base 15.2 ++ _D69TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi12ZQsTtZQBs6__initZ@Base 15 ++ _D69TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D6Object6__initZ@Base 15 ++ _D6Object6__vtblZ@Base 15 ++ _D6Object7__ClassZ@Base 15 ++ _D6object10ModuleInfo11xgetMembersMxFNaNbNdNiZPv@Base 15 ++ _D6object10ModuleInfo12localClassesMxFNaNbNdNiNjZAC14TypeInfo_Class@Base 15 ++ _D6object10ModuleInfo15importedModulesMxFNaNbNdNiNjZAyPSQCcQBy@Base 15 ++ _D6object10ModuleInfo4ctorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo4dtorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo4nameMxFNaNbNdNiNjZAya@Base 15 ++ _D6object10ModuleInfo5flagsMxFNaNbNdNiZk@Base 15 ++ _D6object10ModuleInfo5ictorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo5indexMxFNaNbNdNiZk@Base 15 ++ _D6object10ModuleInfo6__initZ@Base 15 ++ _D6object10ModuleInfo6addrOfMxFNaNbNiNjiZPv@Base 15 ++ _D6object10ModuleInfo7opApplyFMDFPSQBhQBdZiZi@Base 15 ++ _D6object10ModuleInfo7tlsctorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo7tlsdtorMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10ModuleInfo8opAssignMFMxSQBhQBdZv@Base 15 ++ _D6object10ModuleInfo8unitTestMxFNaNbNdNiZPFZv@Base 15 ++ _D6object10_xopEqualsFIPvIQdZb@Base 15 ++ _D6object10getElementFNaNbNeNkMNgC8TypeInfoZNgQn@Base 15 ++ _D6object11__moduleRefZ@Base 15 ++ _D6object12__ModuleInfoZ@Base 15 ++ _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZ15hasCustomToHashFNaNbNeMxQBrZb@Base 15 ++ _D6object12getArrayHashFNbNeMxC8TypeInfoMxPvxmZm@Base 15 ++ _D6object12setSameMutexFOC6ObjectOQjZv@Base 15 ++ _D6object13TypeInfo_Enum11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object13TypeInfo_Enum4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object13TypeInfo_Enum4swapMxFPvQcZv@Base 15 ++ _D6object13TypeInfo_Enum5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object13TypeInfo_Enum5offTiMxFZAxSQBj14OffsetTypeInfo@Base 15 ++ _D6object13TypeInfo_Enum5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object13TypeInfo_Enum6equalsMxFIPvIQdZb@Base 15 ++ _D6object13TypeInfo_Enum6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object13TypeInfo_Enum6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object13TypeInfo_Enum7compareMxFIPvIQdZi@Base 15 ++ _D6object13TypeInfo_Enum7destroyMxFPvZv@Base 15 ++ _D6object13TypeInfo_Enum7getHashMxFNbNfMxPvZm@Base 15 ++ _D6object13TypeInfo_Enum8opEqualsMFC6ObjectZb@Base 15 ++ _D6object13TypeInfo_Enum8postblitMxFPvZv@Base 15 ++ _D6object13TypeInfo_Enum8toStringMxFNaNbNfZAya@Base 15 ++ _D6object14OffsetTypeInfo11__xopEqualsMxFKxSQBqQBmZb@Base 15 ++ _D6object14OffsetTypeInfo6__initZ@Base 15 ++ _D6object14OffsetTypeInfo9__xtoHashFNbNeKxSQBpQBlZm@Base 15 ++ _D6object14TypeInfo_Array11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object14TypeInfo_Array4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object14TypeInfo_Array4swapMxFPvQcZv@Base 15 ++ _D6object14TypeInfo_Array5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object14TypeInfo_Array5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Array6equalsMxFIPvIQdZb@Base 15 ++ _D6object14TypeInfo_Array6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object14TypeInfo_Array6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Array7compareMxFIPvIQdZi@Base 15 ++ _D6object14TypeInfo_Array7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object14TypeInfo_Array8opEqualsMFC6ObjectZb@Base 15 ++ _D6object14TypeInfo_Array8toStringMxFNbNfZAya@Base 15 ++ _D6object14TypeInfo_Class10ClassFlags6__initZ@Base 15 ++ _D6object14TypeInfo_Class11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object14TypeInfo_Class4findFMxAaZxCQBd@Base 15 ++ _D6object14TypeInfo_Class4infoMxFNaNbNdNiNlNjNfZxCQBp@Base 15 ++ _D6object14TypeInfo_Class5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object14TypeInfo_Class5offTiMxFNaNbNdZAxSQBq14OffsetTypeInfo@Base 15 ++ _D6object14TypeInfo_Class5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Class6createMxFZC6Object@Base 15 ++ _D6object14TypeInfo_Class6equalsMxFIPvIQdZb@Base 15 ++ _D6object14TypeInfo_Class6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object14TypeInfo_Class7compareMxFIPvIQdZi@Base 15 ++ _D6object14TypeInfo_Class7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object14TypeInfo_Class8isBaseOfMxFNaNbNiNeMxCQBnZb@Base 15 ++ _D6object14TypeInfo_Class8opEqualsMxFNbNfxC8TypeInfoZb@Base 15 ++ _D6object14TypeInfo_Class8toStringMxFNaNbNfZAya@Base 15 ++ _D6object14TypeInfo_Class8typeinfoMxFNaNbNdNiNlNjNfZxCQBt@Base 15 ++ _D6object14TypeInfo_Const11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object14TypeInfo_Const4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object14TypeInfo_Const4swapMxFPvQcZv@Base 15 ++ _D6object14TypeInfo_Const5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object14TypeInfo_Const5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Const6equalsMxFIPvIQdZb@Base 15 ++ _D6object14TypeInfo_Const6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Const7compareMxFIPvIQdZi@Base 15 ++ _D6object14TypeInfo_Const7getHashMxFNbNfMxPvZm@Base 15 ++ _D6object14TypeInfo_Const8opEqualsMFC6ObjectZb@Base 15 ++ _D6object14TypeInfo_Const8toStringMxFNbNfZAya@Base 15 ++ _D6object14TypeInfo_Inout8toStringMxFNbNfZAya@Base 15 ++ _D6object14TypeInfo_Tuple11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object14TypeInfo_Tuple4swapMxFPvQcZv@Base 15 ++ _D6object14TypeInfo_Tuple5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Tuple6equalsMxFIPvIQdZb@Base 15 ++ _D6object14TypeInfo_Tuple6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object14TypeInfo_Tuple7compareMxFIPvIQdZi@Base 15 ++ _D6object14TypeInfo_Tuple7destroyMxFPvZv@Base 15 ++ _D6object14TypeInfo_Tuple7getHashMxFNbNfMxPvZm@Base 15 ++ _D6object14TypeInfo_Tuple8opEqualsMFC6ObjectZb@Base 15 ++ _D6object14TypeInfo_Tuple8postblitMxFPvZv@Base 15 ++ _D6object14TypeInfo_Tuple8toStringMxFNbNfZAya@Base 15 ++ _D6object15TypeInfo_Shared8toStringMxFNbNfZAya@Base 15 ++ _D6object15TypeInfo_Struct11StructFlags6__initZ@Base 15 ++ _D6object15TypeInfo_Struct11_memberFunc6__initZ@Base 15 ++ _D6object15TypeInfo_Struct11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object15TypeInfo_Struct4nameMxFNbNdNeZ19demangledNamesCacheHPxvAya@Base 15 ++ _D6object15TypeInfo_Struct4nameMxFNbNdNeZAya@Base 15 ++ _D6object15TypeInfo_Struct5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object15TypeInfo_Struct5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object15TypeInfo_Struct6equalsMxFNaNbNeIPvIQdZb@Base 15 ++ _D6object15TypeInfo_Struct6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object15TypeInfo_Struct6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object15TypeInfo_Struct6toHashMxFNbNfZm@Base 15 ++ _D6object15TypeInfo_Struct7compareMxFNaNbNeIPvIQdZi@Base 15 ++ _D6object15TypeInfo_Struct7destroyMxFPvZv@Base 15 ++ _D6object15TypeInfo_Struct7getHashMxFNaNbNeMxPvZm@Base 15 ++ _D6object15TypeInfo_Struct8opEqualsMFC6ObjectZb@Base 15 ++ _D6object15TypeInfo_Struct8postblitMxFPvZv@Base 15 ++ _D6object15TypeInfo_Struct8toStringMxFNbNfZAya@Base 15 ++ _D6object15TypeInfo_Vector11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object15TypeInfo_Vector4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object15TypeInfo_Vector4swapMxFPvQcZv@Base 15 ++ _D6object15TypeInfo_Vector5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object15TypeInfo_Vector5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object15TypeInfo_Vector6equalsMxFIPvIQdZb@Base 15 ++ _D6object15TypeInfo_Vector6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object15TypeInfo_Vector7compareMxFIPvIQdZi@Base 15 ++ _D6object15TypeInfo_Vector7getHashMxFNbNfMxPvZm@Base 15 ++ _D6object15TypeInfo_Vector8opEqualsMFC6ObjectZb@Base 15 ++ _D6object15TypeInfo_Vector8toStringMxFNbNfZAya@Base 15 ++ _D6object16TypeInfo_Pointer11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object16TypeInfo_Pointer4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object16TypeInfo_Pointer4swapMxFPvQcZv@Base 15 ++ _D6object16TypeInfo_Pointer5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object16TypeInfo_Pointer5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object16TypeInfo_Pointer6equalsMxFIPvIQdZb@Base 15 ++ _D6object16TypeInfo_Pointer7compareMxFIPvIQdZi@Base 15 ++ _D6object16TypeInfo_Pointer7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object16TypeInfo_Pointer8opEqualsMFC6ObjectZb@Base 15 ++ _D6object16TypeInfo_Pointer8toStringMxFNbNfZAya@Base 15 ++ _D6object17TypeInfo_Delegate11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object17TypeInfo_Delegate5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object17TypeInfo_Delegate5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object17TypeInfo_Delegate6equalsMxFIPvIQdZb@Base 15 ++ _D6object17TypeInfo_Delegate6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object17TypeInfo_Delegate6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object17TypeInfo_Delegate7compareMxFIPvIQdZi@Base 15 ++ _D6object17TypeInfo_Delegate7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object17TypeInfo_Delegate8opEqualsMFC6ObjectZb@Base 15 ++ _D6object17TypeInfo_Delegate8toStringMxFNaNbNeZAya@Base 15 ++ _D6object17TypeInfo_Function11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object17TypeInfo_Function5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object17TypeInfo_Function6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object17TypeInfo_Function8opEqualsMFC6ObjectZb@Base 15 ++ _D6object17TypeInfo_Function8toStringMxFNaNbNeZAya@Base 15 ++ _D6object18TypeInfo_Interface11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object18TypeInfo_Interface5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object18TypeInfo_Interface5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object18TypeInfo_Interface6equalsMxFIPvIQdZb@Base 15 ++ _D6object18TypeInfo_Interface7compareMxFIPvIQdZi@Base 15 ++ _D6object18TypeInfo_Interface7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxC14TypeInfo_ClassZb@Base 15 ++ _D6object18TypeInfo_Interface8isBaseOfMxFNaNbNiNeMxCQBrZb@Base 15 ++ _D6object18TypeInfo_Interface8opEqualsMFC6ObjectZb@Base 15 ++ _D6object18TypeInfo_Interface8toStringMxFNaNbNfZAya@Base 15 ++ _D6object18TypeInfo_Invariant8toStringMxFNbNfZAya@Base 15 ++ _D6object19__cpp_type_info_ptr6__initZ@Base 15 ++ _D6object19__cpp_type_info_ptr6__vtblZ@Base 15 ++ _D6object19__cpp_type_info_ptr7__ClassZ@Base 15 ++ _D6object20TypeInfo_StaticArray11initializerMxFNaNbNiNfZAxv@Base 15 ++ _D6object20TypeInfo_StaticArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object20TypeInfo_StaticArray4swapMxFPvQcZv@Base 15 ++ _D6object20TypeInfo_StaticArray5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object20TypeInfo_StaticArray5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object20TypeInfo_StaticArray6equalsMxFIPvIQdZb@Base 15 ++ _D6object20TypeInfo_StaticArray6rtInfoMxFNaNbNdNiNfZPyv@Base 15 ++ _D6object20TypeInfo_StaticArray6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object20TypeInfo_StaticArray7compareMxFIPvIQdZi@Base 15 ++ _D6object20TypeInfo_StaticArray7destroyMxFPvZv@Base 15 ++ _D6object20TypeInfo_StaticArray7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object20TypeInfo_StaticArray8opEqualsMFC6ObjectZb@Base 15 ++ _D6object20TypeInfo_StaticArray8postblitMxFPvZv@Base 15 ++ _D6object20TypeInfo_StaticArray8toStringMxFNbNfZAya@Base 15 ++ _D6object25TypeInfo_AssociativeArray11initializerMxFNaNbNiNeZAxv@Base 15 ++ _D6object25TypeInfo_AssociativeArray4nextMNgFNaNbNdNiZNgC8TypeInfo@Base 15 ++ _D6object25TypeInfo_AssociativeArray5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object25TypeInfo_AssociativeArray5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object25TypeInfo_AssociativeArray6equalsMxFNeIPvIQdZb@Base 15 ++ _D6object25TypeInfo_AssociativeArray6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object25TypeInfo_AssociativeArray7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object25TypeInfo_AssociativeArray8opEqualsMFC6ObjectZb@Base 15 ++ _D6object25TypeInfo_AssociativeArray8toStringMxFNbNfZAya@Base 15 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn11__xopEqualsMxFKxSQCtQCp__TQBrTQBoTmZQCbZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAxaTmZQn9__xtoHashFNbNeKxSQCsQCo__TQBqTQBnTmZQCaZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAQfZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr11__xopEqualsMxFKxSQCxQCt__TQBvTQBsTQBsZQChZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTAxAyaZQr9__xtoHashFNbNeKxSQCwQCs__TQBuTQBrTQBrZQCgZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk11__xopEqualsMxFKxSQDrQDn__TQCpTQCmTQCmZQDbZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk9__xtoHashFNbNeKxSQDqQDm__TQCoTQClTQClZQDaZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt11__xopEqualsMxFKxSQEaQDw__TQCyTQCvTQCvZQDkZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt9__xtoHashFNbNeKxSQDzQDv__TQCxTQCuTQCuZQDjZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo11__xopEqualsMxFKxSQCuQCq__TQBsTQBpTQBtZQCeZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTQeZQo9__xtoHashFNbNeKxSQCtQCp__TQBrTQBoTQBsZQCdZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi11__xopEqualsMxFKxSQDpQDl__TQCnTQCkTQCkZQCzZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi9__xtoHashFNbNeKxSQDoQDk__TQCmTQCjTQCjZQCyZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg11__xopEqualsMxFKxSQDnQDj__TQClTQCiTQCiZQCxZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg9__xtoHashFNbNeKxSQDmQDi__TQCkTQChTQChZQCwZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp11__xopEqualsMxFKxSQDwQDs__TQCuTQCrTQCvZQDgZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp9__xtoHashFNbNeKxSQDvQDr__TQCtTQCqTQCuZQDfZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp11__xopEqualsMxFKxSQCvQCr__TQBtTQBqTQBqZQCfZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTPxvTAyaZQp9__xtoHashFNbNeKxSQCuQCq__TQBsTQBpTQBpZQCeZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj11__xopEqualsMxFKxSQDqQDm__TQCoTQClTQBsZQDaZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj9__xtoHashFNbNeKxSQDpQDl__TQCnTQCkTQBrZQCzZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg11__xopEqualsMxFKxSQDnQDj__TQClTQCiTbZQCvZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg9__xtoHashFNbNeKxSQDmQDi__TQCkTQChTbZQCuZm@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo11__fieldDtorMFNaNbNiNeZv@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo11__xopEqualsMxFKxSQFvQFr__TQEtTQEqTQCxZQFfZb@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo15__fieldPostblitMFNaNbNiNlNeZv@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo6__initZ@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo8opAssignMFNaNbNcNiNjNeSQGaQFw__TQEyTQEvTQDcZQFkZQBa@Base 15.2 ++ _D6object25TypeInfo_AssociativeArray__T5EntryTS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhTSQBx5regex8internal2ir11CharMatcherZQDo9__xtoHashFNbNeKxSQFuQFq__TQEsTQEpTQCwZQFeZm@Base 15.2 ++ _D6object2AA6__initZ@Base 15 ++ _D6object5Error6__ctorMFNaNbNiNfAyaCQBi9ThrowableZCQBxQBt@Base 15 ++ _D6object5Error6__ctorMFNaNbNiNfAyaQdmCQBl9ThrowableZCQCaQBw@Base 15 ++ _D6object5Error6__initZ@Base 15 ++ _D6object5Error6__vtblZ@Base 15 ++ _D6object5Error7__ClassZ@Base 15 ++ _D6object6Object5opCmpMFCQqZi@Base 15 ++ _D6object6Object6toHashMFNbNeZm@Base 15 ++ _D6object6Object7Monitor11__InterfaceZ@Base 15 ++ _D6object6Object7factoryFAyaZCQv@Base 15 ++ _D6object6Object8opEqualsMFCQtZb@Base 15 ++ _D6object6Object8toStringMFZAya@Base 15 ++ _D6object7AARange6__initZ@Base 15 ++ _D6object7_xopCmpFIPvIQdZb@Base 15 ++ _D6object8TypeInfo4nextMNgFNaNbNdNiZNgCQBe@Base 15 ++ _D6object8TypeInfo4swapMxFPvQcZv@Base 15 ++ _D6object8TypeInfo5flagsMxFNaNbNdNiNfZk@Base 15 ++ _D6object8TypeInfo5offTiMxFZAxSQBd14OffsetTypeInfo@Base 15 ++ _D6object8TypeInfo5opCmpMFC6ObjectZi@Base 15 ++ _D6object8TypeInfo5tsizeMxFNaNbNdNiNfZm@Base 15 ++ _D6object8TypeInfo6equalsMxFIPvIQdZb@Base 15 ++ _D6object8TypeInfo6rtInfoMxFNaNbNdNiNeZPyv@Base 15 ++ _D6object8TypeInfo6talignMxFNaNbNdNiNfZm@Base 15 ++ _D6object8TypeInfo6toHashMxFNbNeZm@Base 15 ++ _D6object8TypeInfo7compareMxFIPvIQdZi@Base 15 ++ _D6object8TypeInfo7destroyMxFPvZv@Base 15 ++ _D6object8TypeInfo7getHashMxFNbNeMxPvZm@Base 15 ++ _D6object8TypeInfo8opEqualsMFC6ObjectZb@Base 15 ++ _D6object8TypeInfo8opEqualsMxFNbNfxCQBbZb@Base 15 ++ _D6object8TypeInfo8postblitMxFPvZv@Base 15 ++ _D6object8TypeInfo8toStringMxFNbNfZAya@Base 15 ++ _D6object9Exception6__ctorMFNaNbNiNfAyaCQBm9ThrowableQrmZCQBx@Base 15 ++ _D6object9Exception6__ctorMFNaNbNiNfAyaQdmCQBp9ThrowableZCQBx@Base 15 ++ _D6object9Interface11__xopEqualsMxFKxSQBkQBgZb@Base 15 ++ _D6object9Interface6__initZ@Base 15 ++ _D6object9Interface9__xtoHashFNbNeKxSQBjQBfZm@Base 15 ++ _D6object9Throwable13chainTogetherFNaNbNiNkMCQBrQBnNkMQkZQn@Base 15 ++ _D6object9Throwable4nextMFNaNbNdNiNlNfCQBlQBhZv@Base 15 ++ _D6object9Throwable4nextMNgFNaNbNdNiNjNlNfZNgCQBsQBo@Base 15 ++ _D6object9Throwable6__ctorMFNaNbNiNfAyaCQBmQBiZQi@Base 15 ++ _D6object9Throwable6__ctorMFNaNbNiNfAyaQdmCQBpQBlZQi@Base 15 ++ _D6object9Throwable6__dtorMFNbNlNeZv@Base 15 ++ _D6object9Throwable6__initZ@Base 15 ++ _D6object9Throwable6__vtblZ@Base 15 ++ _D6object9Throwable7__ClassZ@Base 15 ++ _D6object9Throwable7messageMxFNbNfZAxa@Base 15 ++ _D6object9Throwable7opApplyMFMDFCQBfQBbZiZi@Base 15 ++ _D6object9Throwable8refcountMFNaNbNcNiNlNjZk@Base 15 ++ _D6object9Throwable8toStringMFZAya@Base 15 ++ _D6object9Throwable8toStringMxFMDFIAaZvZv@Base 15 ++ _D6object9Throwable9TraceInfo11__InterfaceZ@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i18ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i2048ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i2ZQyyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i104i4160ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i4776ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i680ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i6824ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i104i7083ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i11178ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i11274ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i1225ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i3ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i4776ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i5462ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i721ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i8192ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i112i8301ZQBbyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i120i16424ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i17064ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i21610ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i4ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i5462ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i680ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i120i7920ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i128i11304ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i128i12161ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i128i12ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i128i512ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i128i54610ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i12i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i136i2728ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i136i43178ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i136i76461ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i137i4900ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i144i62120ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i144i76461ZQBcyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i152i262144ZQBdyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i156i4900ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i168i2076ZQBbyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i168i2ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i168i347816ZQBdyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i168i4244ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i168i4644ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i169i112492ZQBdyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i16i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i16i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i16i3ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i184i6990180ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i184i8125584ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i185i8125584ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i192i3331414ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i192i8388608ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i200i23767396ZQBfyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i200i24902800ZQBfyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i200i3331414ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i208i41943044ZQBfyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i212i2728ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i216i41943044ZQBfyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i216i8011774ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i224i183150948ZQBgyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i240i2728ZQBbyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i3ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i4ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i5ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i6ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i24i7ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i256i8388608ZQBeyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i257i2859116900ZQBhyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i272i1ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i272i2158144171ZQBhyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i28i4ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i10ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i11ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i12ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i13ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i14ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i15ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i3ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i4ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i5ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i6ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i7ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i8ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i32i9ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i36i8ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i10ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i11ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i13ZQyyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i40i15ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i16ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i18ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i20ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i21ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i22ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i23ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i24ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i28ZQyyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i40i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i30ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i31ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i40i8ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i44i12ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i15ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i16ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i1ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i20ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i24ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i26ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i31ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i32ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i42ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i44ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i45ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i56ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i59ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i5ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i48i63ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i123ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i18ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i21ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i24ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i28ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i40ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i42ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i64ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i80ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i56i84ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i10ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i128ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i134ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i168ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i34ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i60ZQyyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i64i9ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i138ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i168ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i171ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i256ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i296ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i4ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i72i5ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i168ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i241ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i248ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i2ZQxyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i512ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i514ZQzyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i80i516ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i546ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i80i672ZQzyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i80i808ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i84i680ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i88i1028ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i88i1462ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i88i1ZQxyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i88i680ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i8i1ZQwyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i1023ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i1048ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i1154ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i2728ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i680ZQzyG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA2i96i90ZQyyG2m@Base 15.2 ++ _D6object__T10RTInfoImplVAmA2i97i2728ZQBayG2m@Base 15 ++ _D6object__T10RTInfoImplVAmA3i968i268435462i0ZQBiyG3m@Base 15 ++ _D6object__T10RTInfoImplVAmA4i1064i549755827528i0i16ZQBpyG4m@Base 15 ++ _D6object__T10RTInfoImplVAmA4i1088i549755827528i0i240ZQBqyG4m@Base 15 ++ _D6object__T10RTInfoImplVAmA4i1152i144107491482206208i565149010231808i0ZQCiyG4m@Base 15 ++ _D6object__T10_aaToRangeHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBzFNaNbNiNfKQByZSQDb7AARange@Base 15 ++ _D6object__T16assumeSafeAppendTS3std8typecons__T5TupleTkTkTkZQnZQCaFNbNcKNgASQBtQBs__TQBmTkTkTkZQBwZNgQBb@Base 15 ++ _D6object__T16assumeSafeAppendTaZQvFNbNgAaZNgQf@Base 15 ++ _D6object__T16assumeSafeAppendTkZQvFNbNcKNgAkZNgQf@Base 15 ++ _D6object__T3dupTAyaZQjFNaNbNdNfAxAyaZAQw@Base 15 ++ _D6object__T3dupTaZQhFNaNbNdNfAxaZAa@Base 15 ++ _D6object__T3dupThZQhFNaNbNdNfAxhZAh@Base 15 ++ _D6object__T3dupTkZQhFNaNbNdNfAxkZAk@Base 15 ++ _D6object__T3dupTmZQhFNaNbNdNfAxmZAm@Base 15 ++ _D6object__T4idupTS3std8datetime8timezone13PosixTimeZone10LeapSecondZQCfFNaNbNdNfAQCmZAySQCsQCrQClQCfQBt@Base 15 ++ _D6object__T4idupTS3std8datetime8timezone13PosixTimeZone10TransitionZQCfFNaNbNdNfAQCmZAySQCsQCrQClQCfQBt@Base 15 ++ _D6object__T4idupTaZQiFNaNbNdNfAaZAya@Base 15 ++ _D6object__T4idupTxaZQjFNaNbNdNfAxaZAya@Base 15 ++ _D6object__T4idupTxhZQjFNaNbNdNfAxhZAyh@Base 15 ++ _D6object__T4keysHTHC4core6thread8osthread6ThreadQBdTQBhTQBlZQBxFNaNbNdNfQCcZAQCg@Base 15 ++ _D6object__T4keysHTHS3std11concurrency3TidbTbTQBaZQBmFNaNbNdNfQBrZAQBv@Base 15 ++ _D6object__T5clearTAyaTQeZQoFNaNbNeHQrQtZv@Base 15 ++ _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result4saveMFNaNbNdNiNfZSQDv__TQDrHTQDmTQDpTQDqZQEiFNaNbNiNfQEkZQCn@Base 15 ++ _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result5emptyMFNaNbNdNiNfZb@Base 15 ++ _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result5frontMFNaNbNcNdNiNeZQCz@Base 15 ++ _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result6__initZ@Base 15 ++ _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result8popFrontMFNaNbNiNfZv@Base 15 ++ _D6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZSQCw__TQCsHTQCnTQCqTQCrZQDjFNaNbNiNfQDlZ6Result@Base 15 ++ _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQEmFNaNbNiNfKQClZv@Base 15 ++ _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQEnFNaNbNiNfKQCmZv@Base 15 ++ _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf3utf__T10byCodeUnitTQCgZQrFQCnZ14ByCodeUnitImplZQEoFNaNbNiNfKQCnZv@Base 15 ++ _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf4conv__T7toCharsVhi10TaVEQDh5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6ResultZQFnFNaNbNiNfKQDmZv@Base 15 ++ _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf5range__T10OnlyResultTaZQpZQDtFNaNbNiNfKQBsZv@Base 15 ++ _D6object__T7destroyVE3std8typecons__T4FlagVAyaa10_696e697469616c697a65ZQBii0TSQCf5range__T4TakeTSQCyQt__T6RepeatTaZQkZQBcZQEhFNaNbNiNfKQCgZv@Base 15 ++ _D6object__T7destroyVbi1TC4core2gc11gcinterface2GCZQBnFNbQBgZv@Base 15 ++ _D6object__T7destroyVbi1TC6ObjectZQwFNbQoZv@Base 15 ++ _D6object__T7destroyVbi1TS3gcc8sections3elf9ThreadDSOZQBqFNaNbNiNfKQBqZv@Base 15 ++ _D6object__T7destroyVbi1TS3std11concurrency7MessageZQBoFNfKQBiZv@Base 15 ++ _D6object__T7destroyVbi1TS3std12experimental9allocator15building_blocks15stats_collector__T14StatsCollectorTSQDfQDeQCtQCm6region__T6RegionTSQEkQEjQDy14mmap_allocator13MmapAllocatorVki16VEQGf8typecons__T4FlagVAyaa13_67726f77446f776e7761726473ZQBoi0ZQEnVmi4096Vmi0ZQGqZQJvFNaNbNiKQJtZv@Base 15 ++ _D6object__T7destroyVbi1TS3std3net4curl3FTP4ImplZQBlFKQBdZv@Base 15 ++ _D6object__T7destroyVbi1TS3std3net4curl4HTTP4ImplZQBmFKQBeZv@Base 15 ++ _D6object__T7destroyVbi1TS3std3net4curl4SMTP4ImplZQBmFKQBeZv@Base 15 ++ _D6object__T7destroyVbi1TS3std4file15DirIteratorImplZQBpFNfKQBjZv@Base 15 ++ _D6object__T7destroyVbi1TS3std5stdio4FileZQBeFNfKQyZv@Base 15 ++ _D6object__T7destroyVbi1TS4core2gc11gcinterface4RootZQBpFNaNbNiNfKQBpZv@Base 15 ++ _D6object__T7destroyVbi1TS4core2gc11gcinterface5RangeZQBqFNaNbNiNfKQBqZv@Base 15 ++ _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4NodeZQDoFNaNbNiNfKQDoZv@Base 15 ++ _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4NodeZQDqFNaNbNiNfKQDqZv@Base 15 ++ _D6object__T7destroyVbi1TS4core8internal9container7hashtab__T7HashTabTPySQCt10ModuleInfoTiZQBe4NodeZQDkFNaNbNiNfKQDkZv@Base 15 ++ _D6object__T7reserveTS3std5regex8internal2ir8BytecodeZQBqFNaNbNeKAQBtmZm@Base 15 ++ _D6object__T7reserveTaZQlFNaNbNeKAamZm@Base 15 ++ _D6object__T7reserveTuZQlFNaNbNeKAumZm@Base 15 ++ _D6object__T8capacityTAyaZQoFNaNbNdNeAQqZm@Base 15 ++ _D6object__T8capacityTC3std3zip13ArchiveMemberZQBjFNaNbNdNeAQBmZm@Base 15 ++ _D6object__T8capacityTS3std6socket11AddressInfoZQBkFNaNbNdNeAQBnZm@Base 15 ++ _D6object__T8capacityTaZQmFNaNbNdNeAaZm@Base 15 ++ _D6object__T8capacityThZQmFNaNbNdNeAhZm@Base 15 ++ _D6object__T8capacityTlZQmFNaNbNdNeAlZm@Base 15 ++ _D6object__T8opEqualsTC14TypeInfo_ClassTQsZQBfFNbNfQBdQBgZb@Base 15 ++ _D6object__T8opEqualsTC3std11concurrency10MessageBoxTQBfZQBtFQBnQBqZb@Base 15 ++ _D6object__T8opEqualsTC6ObjectTQjZQwFQpQrZb@Base 15 ++ _D6object__T8opEqualsTC8TypeInfoTC14TypeInfo_ConstZQBnFQBhQzZb@Base 15 ++ _D6object__T8opEqualsTC8TypeInfoTC15TypeInfo_StructZQBoFQBiQBaZb@Base 15 ++ _D6object__T8opEqualsTC8TypeInfoTQlZQyFNbNfQvQxZb@Base 15 ++ _D6object__T8opEqualsTC8TypeInfoTxCQmZQBaFNbNfQyxQpZb@Base 15 ++ _D6object__T8opEqualsTxC14TypeInfo_ClassTxQtZQBhFNbNfxQBfxQBjZb@Base 15 ++ _D6object__T8opEqualsTxC15TypeInfo_StructTxQuZQBiFxQBcxQBgZb@Base 15 ++ _D6object__T8opEqualsTxC3std11concurrency10MessageBoxTxQBgZQBvFxQBpxQBtZb@Base 15 ++ _D6object__T8opEqualsTxC3std11parallelism8TaskPoolTxQBdZQBsFxQBmxQBqZb@Base 15 ++ _D6object__T8opEqualsTxC3std3zip13ArchiveMemberTxQBaZQBpFxQBjxQBnZb@Base 15 ++ _D6object__T8opEqualsTxC3std6logger4core6LoggerTxQBaZQBpFxQBjxQBnZb@Base 15 ++ _D6object__T8opEqualsTxC3std6socket7AddressTxQwZQBkFxQBexQBiZb@Base 15 ++ _D6object__T8opEqualsTxC3std7process3PidTxQtZQBhFxQBbxQBfZb@Base 15 ++ _D6object__T8opEqualsTxC3std8datetime8timezone8TimeZoneTxQBiZQBxFxQBrxQBvZb@Base 15 ++ _D6object__T8opEqualsTxC4core6thread8osthread6ThreadTxQBfZQBuFxQBoxQBsZb@Base 15.2 ++ _D6object__T8opEqualsTxC6ObjectTxQkZQyFxQrxQuZb@Base 15 ++ _D6object__T8opEqualsTxC8TypeInfoTxQmZQBaFNbNfxQyxQBbZb@Base 15 ++ _D6object__T8opEqualsTxCQw9ThrowableTxQpZQBdFxQxxQBaZb@Base 15 ++ _D70TypeInfo_G14PxS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D70TypeInfo_PxS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D70TypeInfo_S3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 ++ _D70TypeInfo_S3std3uni__T10assumeSizeS_DQBaQz8midlow_8FNaNbNiNfkZkVmi8ZQBu6__initZ@Base 15 ++ _D70TypeInfo_S3std5array__T15InPlaceAppenderTASQBh6socket11AddressInfoZQBs6__initZ@Base 15 ++ _D70TypeInfo_S3std6format4spec__T10singleSpecTyaZQqFAyaZ16DummyOutputRange6__initZ@Base 15 ++ _D70TypeInfo_xG14PS4core8internal2gc4impl12conservativeQw15SmallObjectPool6__initZ@Base 15 ++ _D70TypeInfo_xPS4core8internal2gc4impl12conservativeQw3Gcx14ScanThreadData6__initZ@Base 15 ++ _D70TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks6__initZ@Base 15 ++ _D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b656570536570617261746f7273ZQBq6__initZ@Base 15 ++ _D71TypeInfo_E3std8typecons__T4FlagVAyaa14_6b6565705465726d696e61746f72ZQBq6__initZ@Base 15 ++ _D71TypeInfo_S3std8typecons__T5TupleTkVAyaa4_64617461TmVQra5_636f756e74ZQBq6__initZ@Base 15 ++ _D71TypeInfo_S4core8internal8lifetime__T10emplaceRefTAyaTQeTQhZQxFKQoKQrZ1S6__initZ@Base 15 ++ _D71TypeInfo_xS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 ++ _D72TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 ++ _D72TypeInfo_S3std6format__T7sformatTaTykTykTkTkTkZQxFNkMAaMAxaykykkkkZ4Sink6__initZ@Base 15 ++ _D72TypeInfo_S3std9algorithm9searching__T15FindSplitResultVhi1TAxaTQeTQhZQBg6__initZ@Base 15 ++ _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi0ZQp6__initZ@Base 15 ++ _D72TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T9ScanRangeVbi1ZQp6__initZ@Base 15 ++ _D72TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info24sqlite3_index_constraint6__initZ@Base 15.2 ++ _D73TypeInfo_S3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 ++ _D73TypeInfo_S3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 ++ _D74TypeInfo_S3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 ++ _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTbVmi1ZQrVmi1ZQBy6__initZ@Base 15 ++ _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi7ZQrVmi8ZQBy6__initZ@Base 15 ++ _D74TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi8ZQrVmi8ZQBy6__initZ@Base 15 ++ _D74TypeInfo_S3std8internal14unicode_tables__T9TrieEntryTbVii7Vii4Vii4Vii6ZQBd6__initZ@Base 15 ++ _D74TypeInfo_S4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 ++ _D74TypeInfo_xS3std8typecons__T10RebindableTSQBe5range__T10OnlyResultTaZQpZQBs6__initZ@Base 15 ++ _D74TypeInfo_xS3std9algorithm9iteration__T9MapResultSQBm5ascii7toLowerTAxaZQBh6__initZ@Base 15 ++ _D75TypeInfo_E3std8typecons__T4FlagVAyaa16_616c6c6f774461794f766572666c6f77ZQBu6__initZ@Base 15 ++ _D75TypeInfo_S3std8typecons__T10RebindableTyCQBf8datetime8timezone8TimeZoneZQBu6__initZ@Base 15 ++ _D75TypeInfo_xS3std12experimental9allocator8showcase14mmapRegionListFmZ7Factory6__initZ@Base 15 ++ _D75TypeInfo_xS4core8internal2gc4impl12conservativeQw3Gcx__T11ToScanStackTPvZQr6__initZ@Base 15 ++ _D76TypeInfo_S3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 ++ _D76TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 ++ _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi11ZQsVmi16ZQCa6__initZ@Base 15 ++ _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi12ZQsVmi16ZQCa6__initZ@Base 15 ++ _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi13ZQsVmi16ZQCa6__initZ@Base 15 ++ _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi14ZQsVmi16ZQCa6__initZ@Base 15 ++ _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi15ZQsVmi16ZQCa6__initZ@Base 15 ++ _D76TypeInfo_S3std3uni__T13PackedPtrImplTSQBcQBb__T9BitPackedTkVmi16ZQsVmi16ZQCa6__initZ@Base 15 ++ _D77TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAxkZQp6__initZ@Base 15 ++ _D77TypeInfo_S3std8datetime4date4Date14isoWeekAndYearMxFNaNbNdNfZ14ISOWeekAndYear6__initZ@Base 15 ++ _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZmZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D77TypeInfo_S4core8demangle__T6mangleTFNbNiZvZQqFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D77TypeInfo_S4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 ++ _D77TypeInfo_xS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 ++ _D77TypeInfo_xS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh__T9IntervalsTAkZQo6__initZ@Base 15 ++ _D78TypeInfo_PxS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 ++ _D78TypeInfo_S3std8typecons__T5TupleTC15TypeInfo_StructTPSQBs11concurrency3TidZQBx6__initZ@Base 15 ++ _D78TypeInfo_S3std8typecons__T5TupleTiVAyaa6_737461747573TQtVQwa6_6f7574707574ZQBx6__initZ@Base 15 ++ _D78TypeInfo_S4core8demangle__T6mangleTFNbNiZPvZQrFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D78TypeInfo_xPS3etc1c7sqlite318sqlite3_index_info30sqlite3_index_constraint_usage6__initZ@Base 15.2 ++ _D78TypeInfo_xS4core8internal9container5array__T5ArrayTPS3gcc8sections3elf3DSOZQBf6__initZ@Base 15 ++ _D79TypeInfo_E3std8typecons__T4FlagVAyaa18_616c6c4b6e6f776e53616d654c656e677468ZQBy6__initZ@Base 15 ++ _D79TypeInfo_E3std8typecons__T4FlagVAyaa18_707265736572766541747472696275746573ZQBy6__initZ@Base 15 ++ _D79TypeInfo_S2rt5minfo11ModuleGroup9sortCtorsMFNbAyaZ8findDepsMFNbmPmZ10stackFrame6__initZ@Base 15 ++ _D79TypeInfo_S4core8demangle__T6mangleTFNbNiPvZvZQsFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D79TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D79TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D80TypeInfo_E3std12experimental9allocator15building_blocks15stats_collector7Options6__initZ@Base 15 ++ _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTbVmi1ZQrVmi1ZQCe6__initZ@Base 15 ++ _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi7ZQrVmi8ZQCe6__initZ@Base 15 ++ _D80TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi8ZQrVmi8ZQCe6__initZ@Base 15 ++ _D80TypeInfo_S4core8demangle__T6mangleTFNbNiPvZQdZQtFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D80TypeInfo_S4core8internal5array7casting__T11__ArrayCastThTuZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 ++ _D80TypeInfo_S4core8internal5array7casting__T11__ArrayCastThTwZQsFNaNiNeNkMAhZ5Array6__initZ@Base 15 ++ _D80TypeInfo_S4core8internal9container5array__T5ArrayTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D80TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D80TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh6__initZ@Base 15 ++ _D81TypeInfo_E3std8typecons__T4FlagVAyaa19_7573655265706c6163656d656e744463686172ZQCa6__initZ@Base 15 ++ _D81TypeInfo_S3std6random__T24LinearCongruentialEngineTkVki16807Vki0Vki2147483647ZQCc6__initZ@Base 15 ++ _D81TypeInfo_S3std6random__T24LinearCongruentialEngineTkVki48271Vki0Vki2147483647ZQCc6__initZ@Base 15 ++ _D81TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi6__initZ@Base 15 ++ _D82TypeInfo_S3std12experimental9allocator15building_blocks15bitmapped_block9BitVector6__initZ@Base 15 ++ _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi11ZQsVmi16ZQCg6__initZ@Base 15 ++ _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi12ZQsVmi16ZQCg6__initZ@Base 15 ++ _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi13ZQsVmi16ZQCg6__initZ@Base 15 ++ _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi14ZQsVmi16ZQCg6__initZ@Base 15 ++ _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi15ZQsVmi16ZQCg6__initZ@Base 15 ++ _D82TypeInfo_S3std3uni__T19PackedArrayViewImplTSQBiQBh__T9BitPackedTkVmi16ZQsVmi16ZQCg6__initZ@Base 15 ++ _D82TypeInfo_S4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D82TypeInfo_S4core8internal9container5array__T5ArrayTS3gcc8sections3elf9ThreadDSOZQBk6__initZ@Base 15 ++ _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi6__initZ@Base 15 ++ _D82TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi6__initZ@Base 15 ++ _D82TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std4json9JSONValueZQBg6__initZ@Base 15.2 ++ _D82TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTbZQBg6__initZ@Base 15.2 ++ _D83TypeInfo_AS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D83TypeInfo_S3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i2Z4Impl6__initZ@Base 15 ++ _D83TypeInfo_S3std4meta__T10aliasSeqOfVSQBa5range__T4iotaTmTmZQkFmmZ6ResultS2i0i3Z4Impl6__initZ@Base 15 ++ _D83TypeInfo_S4core8internal5array7casting__T11__ArrayCastTxhTxuZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 ++ _D83TypeInfo_S4core8internal5array7casting__T11__ArrayCastTxhTxwZQuFNaNiNeNkMAxhZ5Array6__initZ@Base 15 ++ _D83TypeInfo_xS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D84TypeInfo_AxS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D84TypeInfo_S4core8demangle__T6mangleTFNbMDFNbPvZvZvZQxFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D84TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface4RootZQBh4Node6__initZ@Base 15 ++ _D84TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk6__initZ@Base 15 ++ _D84TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTS3std11concurrency3TidZQBi6__initZ@Base 15.2 ++ _D84TypeInfo_xAS4core8demangle15reencodeMangledFNaNbNfNkMAxaZ12PrependHooks11Replacement6__initZ@Base 15 ++ _D85TypeInfo_S4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D85TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTS3std11concurrency3TidTAAyaZQBj6__initZ@Base 15.2 ++ _D86TypeInfo_S3std12experimental9allocator15building_blocks14null_allocator13NullAllocator6__initZ@Base 15 ++ _D86TypeInfo_S3std4conv__T7toCharsVhi10TaVEQBd5ascii10LetterCasei1TiZQBrFNaNbNiNfiZ6Result6__initZ@Base 15 ++ _D86TypeInfo_S4core8demangle__T6mangleTFNbNiAyakQeQgmZvZQzFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D86TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTC3std3zip13ArchiveMemberZQBk6__initZ@Base 15.2 ++ _D86TypeInfo_xS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D87TypeInfo_PxS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D87TypeInfo_S3std8typecons__T10RebindableTSQBe5range__T4TakeTSQBxQt__T6RepeatTaZQkZQBcZQCg6__initZ@Base 15 ++ _D87TypeInfo_S3std8typecons__T5TupleTbVAyaa10_7465726d696e61746564TiVQBea6_737461747573ZQCg6__initZ@Base 15 ++ _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D87TypeInfo_S4core8internal9container7hashtab__T7HashTabTPyS6object10ModuleInfoTiZQBi4Node6__initZ@Base 15 ++ _D87TypeInfo_xPS4core8internal9container5treap__T5TreapTSQBp2gc11gcinterface5RangeZQBi4Node6__initZ@Base 15 ++ _D88TypeInfo_xS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D89TypeInfo_PxS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D89TypeInfo_S3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 ++ _D89TypeInfo_S4core8demangle__T6mangleTFNbPvMDFNbQhQjZvZvZQBbFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D89TypeInfo_S4core8internal9container7hashtab__T7HashTabTPvTPS3gcc8sections3elf3DSOZQBk4Node6__initZ@Base 15 ++ _D89TypeInfo_xPS4core8internal9container7hashtab__T7HashTabTAxaTS2rt9profilegc5EntryZQBi4Node6__initZ@Base 15 ++ _D8TypeInfo6__initZ@Base 15 ++ _D8TypeInfo6__vtblZ@Base 15 ++ _D8TypeInfo7__ClassZ@Base 15 ++ _D90TypeInfo_AS3std8typecons__T5TupleTAyaVQea3_6b6579TSQBo4json9JSONValueVQBka5_76616c7565ZQCi6__initZ@Base 15 ++ _D90TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 ++ _D90TypeInfo_S3std5range__T11SortedRangeTAkVAyaa5_61203c2062VEQBwQBv18SortedRangeOptionsi0ZQCm6__initZ@Base 15 ++ _D90TypeInfo_S6object__T7byValueHTHAyaC3std3zip13ArchiveMemberTQBcTQBdZQBvFNaNbNiNfQBxZ6Result6__initZ@Base 15 ++ _D91TypeInfo_S3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 ++ _D91TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTC4core6thread8osthread6ThreadTQBeZQBp6__initZ@Base 15.2 ++ _D91TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi13ZQsTSQCcQCb__TQBfTbVmi1ZQBpZQCo6__initZ@Base 15 ++ _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 ++ _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 ++ _D92TypeInfo_S3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 ++ _D92TypeInfo_S3std5range__T11SortedRangeTAkVAyaa6_61203c3d2062VEQByQBx18SortedRangeOptionsi0ZQCo6__initZ@Base 15 ++ _D92TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 ++ _D92TypeInfo_S4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 ++ _D92TypeInfo_xS3std5range__T11SortedRangeTAAyaVQea5_61203c2062VEQBxQBw18SortedRangeOptionsi0ZQCn6__initZ@Base 15 ++ _D93TypeInfo_HS3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBhSQBw5regex8internal2ir11CharMatcher6__initZ@Base 15 ++ _D93TypeInfo_S3std3uni__T13InversionListTSQBcQBb8GcPolicyZQBh11byCodepointMFNdNfZ14CodepointRange6__initZ@Base 15 ++ _D93TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 ++ _D93TypeInfo_S3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 ++ _D93TypeInfo_S4core8demangle__T8DemangleTSQBcQBa15reencodeMangledFNaNbNfNkMAxaZ12PrependHooksZQCl6__initZ@Base 15 ++ _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi15ZQBpTtZQCq6__initZ@Base 15 ++ _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpThZQCq6__initZ@Base 15 ++ _D93TypeInfo_xS3std3uni__T10MultiArrayTSQzQx__T9BitPackedTkVmi8ZQrTSQCbQCa__TQBeTkVmi16ZQBpTtZQCq6__initZ@Base 15 ++ _D93TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAaZQqFQgZ14ByCodeUnitImplZQCl6__initZ@Base 15 ++ _D93TypeInfo_xS4core8internal2gc9pooltable__T9PoolTableTSQBqQBoQBi4impl12conservativeQCe4PoolZQBx6__initZ@Base 15 ++ _D94TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std11concurrency3TidTQxTQBaZQBrFKQBjKQBnZ1S6__initZ@Base 15 ++ _D94TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAxaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 ++ _D94TypeInfo_xS3std8typecons__T10RebindableTSQBe3utf__T10byCodeUnitTAyaZQrFQhZ14ByCodeUnitImplZQCm6__initZ@Base 15 ++ _D95TypeInfo_S3gcc8sections3elf18findDSOInfoForAddrFNbNiIPvPS4core3sys5linux4link12dl_phdr_infoZ2DG6__initZ@Base 15 ++ _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTaTSQBzQBxQBt__T11char_traitsTaZQqZQCc6__initZ@Base 15 ++ _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTuTSQBzQBxQBt__T11char_traitsTuZQqZQCc6__initZ@Base 15 ++ _D95TypeInfo_S4core6stdcpp11string_view__T17basic_string_viewTwTSQBzQBxQBt__T11char_traitsTwZQqZQCc6__initZ@Base 15 ++ _D95TypeInfo_S4core8demangle__T6mangleTFNbNiAyaMDFNbNiQkZQnbZQrZQBhFNaNbNfNkMAxaNkMAaZ11DotSplitter6__initZ@Base 15 ++ _D95TypeInfo_S6object25TypeInfo_AssociativeArray__T5EntryTAyaTPFZC3std8encoding14EncodingSchemeZQBt6__initZ@Base 15.2 ++ _D96TypeInfo_S4core8internal8lifetime__T10emplaceRefTC3std3zip13ArchiveMemberTQzTQBcZQBtFKQBlKQBpZ1S6__initZ@Base 15 ++ _D97TypeInfo_S3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 ++ _D98TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std6socket11AddressInfoTQBaTQBeZQBvFKQBnKQBrZ1S6__initZ@Base 15 ++ _D98TypeInfo_yS3std8typecons__T5TupleTEQy8encoding3BOMVAyaa6_736368656d61TAhVQwa8_73657175656e6365ZQCq6__initZ@Base 15 ++ _D99TypeInfo_S4core8internal8lifetime__T10emplaceRefTS3std5regexQBt2ir8BytecodeTQBbTQBfZQBwFKQBoKQBsZ1S6__initZ@Base 15 ++ _D9Exception6__initZ@Base 15 ++ _D9Exception6__vtblZ@Base 15 ++ _D9Exception7__ClassZ@Base 15 ++ _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKmKxAaZiZi@Base 15 ++ _DTi16_D3gcc9backtrace12LibBacktrace7opApplyMxFMDFKxAaZiZi@Base 15 ++ _DTi16_D3gcc9backtrace12LibBacktrace8toStringMxFZAya@Base 15 ++ _DTi16_D3std11concurrency14FiberScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 ++ _DTi16_D3std11concurrency14FiberScheduler5spawnMFNbDFZvZv@Base 15 ++ _DTi16_D3std11concurrency14FiberScheduler5startMFDFZvZv@Base 15 ++ _DTi16_D3std11concurrency14FiberScheduler5yieldMFNbZv@Base 15 ++ _DTi16_D3std11concurrency14FiberScheduler8thisInfoMFNbNcNdZSQCaQBz10ThreadInfo@Base 15 ++ _DTi16_D3std11concurrency15ThreadScheduler12newConditionMFNbC4core4sync5mutex5MutexZCQyQv9condition9Condition@Base 15 ++ _DTi16_D3std11concurrency15ThreadScheduler5spawnMFDFZvZv@Base 15 ++ _DTi16_D3std11concurrency15ThreadScheduler5startMFDFZvZv@Base 15 ++ _DTi16_D3std11concurrency15ThreadScheduler5yieldMFNbZv@Base 15 ++ _DTi16_D3std11concurrency15ThreadScheduler8thisInfoMFNbNcNdZSQCbQCa10ThreadInfo@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10deallocateMFNbAvZb@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator10reallocateMFNbKAvmZb@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator11allocateAllMFNbZAv@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13deallocateAllMFNbZb@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator13goodAllocSizeMFNbmZm@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator15alignedAllocateMFNbmkZAv@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator17alignedReallocateMFNbKAvmkZb@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator22resolveInternalPointerMFNbxPvKAvZSQEj8typecons7Ternary@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator4ownsMFNbAvZSQDm8typecons7Ternary@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator5emptyMFNbZSQDl8typecons7Ternary@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6decRefMFNaNbNiNfZb@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6expandMFNbKAvmZb@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator6incRefMFNaNbNiNfZv@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator8allocateMFNbmC8TypeInfoZAv@Base 15 ++ _DTi16_D3std12experimental9allocator20setupThreadAllocatorFNbNcNiNfZ15ThreadAllocator9alignmentMFNbNdZk@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10deallocateMOFNbAvZb@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk10reallocateMOFNbKAvmZb@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk11allocateAllMOFNbZAv@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13deallocateAllMOFNbZb@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk13goodAllocSizeMOFNbmZm@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk15alignedAllocateMOFNbmkZAv@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk17alignedReallocateMOFNbKAvmkZb@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk22resolveInternalPointerMOFNbxPvKAvZSQHdQDm7Ternary@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk4ownsMOFNbAvZSQGgQCp7Ternary@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk5emptyMOFNbZSQGfQCo7Ternary@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6decRefMOFNaNbNiNeZb@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6expandMOFNbKAvmZb@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk6incRefMOFNaNbNiNfZv@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk8allocateMOFNbmC8TypeInfoZAv@Base 15 ++ _DTi16_D3std12experimental9allocator__T20CSharedAllocatorImplTOxSQCfQCeQBt12gc_allocator11GCAllocatorVEQDr8typecons__T4FlagVAyaa8_696e646972656374ZQBdi0ZQEk9alignmentMOFNbNdZk@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe2md3MD5ZQBf6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki32Vmi3988292384ZQxZQCe6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN2882303761517117440ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3crc__T3CRCVki64VmN3932672073523589310ZQBgZQCo6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki224ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki256ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki384ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki1024Vki512ZQsZQBz6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki160ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki224ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe3sha__T3SHAVki512Vki256ZQrZQBy6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp3putMFNbNeAxhXv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp5resetMFNbNeZv@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbAhZQd@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6finishMFNbNeZAh@Base 15 ++ _DTi16_D3std6digest__T13WrapperDigestTSQBfQBe6ripemd9RIPEMD160ZQBp6lengthMxFNaNbNdNeZm@Base 15 ++ _DTi16_D4core4sync5mutex5Mutex4lockMFNeZv@Base 15 ++ _DTi16_D4core4sync5mutex5Mutex6unlockMFNeZv@Base 15 ++ _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader4lockMFNeZv@Base 15 ++ _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Reader6unlockMFNeZv@Base 15 ++ _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer4lockMFNeZv@Base 15 ++ _DTi16_D4core4sync7rwmutex14ReadWriteMutex6Writer6unlockMFNeZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC10removeRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11inFinalizerMFNbNiNfZb@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC11removeRangeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC12profileStatsMFNbNiNeZSQDa6memory2GC12ProfileStats@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC13runFinalizersMFNbMxAvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15expandArrayUsedMFNbNeAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC20reserveArrayCapacityMFNbNeAvmbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC4freeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5queryMFNbPvZSQCq6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC5statsMFNbNiNfZSQCs6memory2GC5Stats@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6addrOfMFNbNiPvZQd@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6callocMFNbmkxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6enableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6qallocMFNbmkMxC8TypeInfoZSQDd6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC6sizeOfMFNbNiPvZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7addRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7clrAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7collectMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7disableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7getAttrMFNbPvZk@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7reserveMFNbmZm@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC7setAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8minimizeMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC8rootIterMFNdNiZDFMDFNbKSQDbQCq11gcinterface4RootZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl12conservativeQw14ConservativeGC9rangeIterMFNdNiZDFMDFNbKSQDcQCr11gcinterface5RangeZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC10removeRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11inFinalizerMFNbNiNfZb@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC11removeRangeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC12profileStatsMFNbNiNfZSQCk6memory2GC12ProfileStats@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC13runFinalizersMFNbMxAvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15expandArrayUsedMFNbNfAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC4freeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5queryMFNbPvZSQCa6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC5statsMFNbNiNfZSQCc6memory2GC5Stats@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6addrOfMFNbNiPvZQd@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6callocMFNbmkMxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6enableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6extendMFNbPvmmMxC8TypeInfoZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6mallocMFNbmkMxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6qallocMFNbmkMxC8TypeInfoZSQCn6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC6sizeOfMFNbNiPvZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7addRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7clrAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7collectMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7disableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7getAttrMFNbPvZk@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reallocMFNbPvmkMxC8TypeInfoZQr@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7reserveMFNbmZm@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC7setAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8minimizeMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC8rootIterMFNdNiNlNjZDFMDFNbKSQCpQCe11gcinterface4RootZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl5protoQo7ProtoGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCqQCf11gcinterface5RangeZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC10removeRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11inFinalizerMFNbNiNfZb@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC11removeRangeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12getArrayUsedMFNbPvbZAv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC12profileStatsMFNbNiNfZSQCm6memory2GC12ProfileStats@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC13runFinalizersMFNbMxAvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15expandArrayUsedMFNbNfAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC15shrinkArrayUsedMFNbAvmbZb@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC20reserveArrayCapacityMFNbNfAvmbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC24allocatedInCurrentThreadMFNbZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC4freeMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5queryMFNbPvZSQCc6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC5statsMFNbNiNfZSQCe6memory2GC5Stats@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6addrOfMFNbNiPvZQd@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6callocMFNbmkxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6enableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6extendMFNbPvmmxC8TypeInfoZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6mallocMFNbmkxC8TypeInfoZPv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6qallocMFNbmkMxC8TypeInfoZSQCp6memory8BlkInfo_@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC6sizeOfMFNbNiPvZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7addRootMFNbNiPvZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7clrAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7collectMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7disableMFZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7getAttrMFNbPvZk@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reallocMFNbPvmkxC8TypeInfoZQq@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7reserveMFNbmZm@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC7setAttrMFNbPvkZk@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8addRangeMFNbNiPvmxC8TypeInfoZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8minimizeMFNbZv@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC8rootIterMFNdNiNlNjZDFMDFNbKSQCrQCg11gcinterface4RootZiZi@Base 15 ++ _DTi16_D4core8internal2gc4impl6manualQp8ManualGC9rangeIterMFNdNiNlNjZDFMDFNbKSQCsQCh11gcinterface5RangeZiZi@Base 15 ++ _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKmKxAaZiZi@Base 15 ++ _DTi16_D4core9exception17SuppressTraceInfo7opApplyMxFMDFKxAaZiZi@Base 15 ++ _DTi16_D4core9exception17SuppressTraceInfo8toStringMxFZAya@Base 15 ++ _ZNKSt10bad_typeid4whatEv@Base 15 ++ _ZNKSt13bad_exception4whatEv@Base 15 ++ _ZNKSt8bad_cast4whatEv@Base 15 ++ _ZNKSt9exception4whatEv@Base 15 ++ _ZNKSt9type_info4nameEv@Base 15 ++ _ZNKSt9type_info6beforeEPKS_@Base 15 ++ _ZNSt9exceptionD1Ev@Base 15 ++ _ZNSt9type_infoD1Ev@Base 15 ++ __CPUELT@Base 15 ++ __CPUMASK@Base 15 ++ __CPU_ALLOC@Base 15 ++ __CPU_ALLOC_SIZE@Base 15 ++ __CPU_COUNT_S@Base 15 ++ __CPU_FREE@Base 15 ++ __CPU_ISSET_S@Base 15 ++ __CPU_SET_S@Base 15 ++ __atomic_add_fetch_16@Base 15 ++ __atomic_add_fetch_1@Base 15 ++ __atomic_add_fetch_2@Base 15 ++ __atomic_add_fetch_4@Base 15 ++ __atomic_add_fetch_8@Base 15 ++ __atomic_and_fetch_16@Base 15 ++ __atomic_and_fetch_1@Base 15 ++ __atomic_and_fetch_2@Base 15 ++ __atomic_and_fetch_4@Base 15 ++ __atomic_and_fetch_8@Base 15 ++ __atomic_compare_exchange@Base 15 ++ __atomic_compare_exchange_16@Base 15 ++ __atomic_compare_exchange_1@Base 15 ++ __atomic_compare_exchange_2@Base 15 ++ __atomic_compare_exchange_4@Base 15 ++ __atomic_compare_exchange_8@Base 15 ++ __atomic_exchange@Base 15 ++ __atomic_exchange_16@Base 15 ++ __atomic_exchange_1@Base 15 ++ __atomic_exchange_2@Base 15 ++ __atomic_exchange_4@Base 15 ++ __atomic_exchange_8@Base 15 ++ __atomic_feraiseexcept@Base 15 ++ __atomic_fetch_add_16@Base 15 ++ __atomic_fetch_add_1@Base 15 ++ __atomic_fetch_add_2@Base 15 ++ __atomic_fetch_add_4@Base 15 ++ __atomic_fetch_add_8@Base 15 ++ __atomic_fetch_and_16@Base 15 ++ __atomic_fetch_and_1@Base 15 ++ __atomic_fetch_and_2@Base 15 ++ __atomic_fetch_and_4@Base 15 ++ __atomic_fetch_and_8@Base 15 ++ __atomic_fetch_nand_16@Base 15 ++ __atomic_fetch_nand_1@Base 15 ++ __atomic_fetch_nand_2@Base 15 ++ __atomic_fetch_nand_4@Base 15 ++ __atomic_fetch_nand_8@Base 15 ++ __atomic_fetch_or_16@Base 15 ++ __atomic_fetch_or_1@Base 15 ++ __atomic_fetch_or_2@Base 15 ++ __atomic_fetch_or_4@Base 15 ++ __atomic_fetch_or_8@Base 15 ++ __atomic_fetch_sub_16@Base 15 ++ __atomic_fetch_sub_1@Base 15 ++ __atomic_fetch_sub_2@Base 15 ++ __atomic_fetch_sub_4@Base 15 ++ __atomic_fetch_sub_8@Base 15 ++ __atomic_fetch_xor_16@Base 15 ++ __atomic_fetch_xor_1@Base 15 ++ __atomic_fetch_xor_2@Base 15 ++ __atomic_fetch_xor_4@Base 15 ++ __atomic_fetch_xor_8@Base 15 ++ __atomic_is_lock_free@Base 15 ++ __atomic_load@Base 15 ++ __atomic_load_16@Base 15 ++ __atomic_load_1@Base 15 ++ __atomic_load_2@Base 15 ++ __atomic_load_4@Base 15 ++ __atomic_load_8@Base 15 ++ __atomic_nand_fetch_16@Base 15 ++ __atomic_nand_fetch_1@Base 15 ++ __atomic_nand_fetch_2@Base 15 ++ __atomic_nand_fetch_4@Base 15 ++ __atomic_nand_fetch_8@Base 15 ++ __atomic_or_fetch_16@Base 15 ++ __atomic_or_fetch_1@Base 15 ++ __atomic_or_fetch_2@Base 15 ++ __atomic_or_fetch_4@Base 15 ++ __atomic_or_fetch_8@Base 15 ++ __atomic_store@Base 15 ++ __atomic_store_16@Base 15 ++ __atomic_store_1@Base 15 ++ __atomic_store_2@Base 15 ++ __atomic_store_4@Base 15 ++ __atomic_store_8@Base 15 ++ __atomic_sub_fetch_16@Base 15 ++ __atomic_sub_fetch_1@Base 15 ++ __atomic_sub_fetch_2@Base 15 ++ __atomic_sub_fetch_4@Base 15 ++ __atomic_sub_fetch_8@Base 15 ++ __atomic_test_and_set_16@Base 15 ++ __atomic_test_and_set_1@Base 15 ++ __atomic_test_and_set_2@Base 15 ++ __atomic_test_and_set_4@Base 15 ++ __atomic_test_and_set_8@Base 15 ++ __atomic_xor_fetch_16@Base 15 ++ __atomic_xor_fetch_1@Base 15 ++ __atomic_xor_fetch_2@Base 15 ++ __atomic_xor_fetch_4@Base 15 ++ __atomic_xor_fetch_8@Base 15 ++ __gdc_begin_catch@Base 15 ++ __gdc_personality_v0@Base 15 ++ _aApplyRcd1@Base 15 ++ _aApplyRcd2@Base 15 ++ _aApplyRcw1@Base 15 ++ _aApplyRcw2@Base 15 ++ _aApplyRdc1@Base 15 ++ _aApplyRdc2@Base 15 ++ _aApplyRdw1@Base 15 ++ _aApplyRdw2@Base 15 ++ _aApplyRwc1@Base 15 ++ _aApplyRwc2@Base 15 ++ _aApplyRwd1@Base 15 ++ _aApplyRwd2@Base 15 ++ _aApplycd1@Base 15 ++ _aApplycd2@Base 15 ++ _aApplycw1@Base 15 ++ _aApplycw2@Base 15 ++ _aApplydc1@Base 15 ++ _aApplydc2@Base 15 ++ _aApplydw1@Base 15 ++ _aApplydw2@Base 15 ++ _aApplywc1@Base 15 ++ _aApplywc2@Base 15 ++ _aApplywd1@Base 15 ++ _aApplywd2@Base 15 ++ _aaApply2@Base 15 ++ _aaApply@Base 15 ++ _aaClear@Base 15 ++ _aaDelX@Base 15 ++ _aaEqual@Base 15 ++ _aaGetHash@Base 15 ++ _aaGetRvalueX@Base 15 ++ _aaGetX@Base 15 ++ _aaGetY@Base 15 ++ _aaInX@Base 15 ++ _aaKeys@Base 15 ++ _aaLen@Base 15 ++ _aaNew@Base 15 ++ _aaRange@Base 15 ++ _aaRangeEmpty@Base 15 ++ _aaRangeFrontKey@Base 15 ++ _aaRangeFrontValue@Base 15 ++ _aaRangePopFront@Base 15 ++ _aaRehash@Base 15 ++ _aaValues@Base 15 ++ _aaVersion@Base 15 ++ _adEq2@Base 15 ++ _adSort@Base 15 ++ _d_allocmemory@Base 15 ++ _d_arrayappendcTX@Base 15 ++ _d_arrayappendcd@Base 15 ++ _d_arrayappendwd@Base 15 ++ _d_arraybounds@Base 15 ++ _d_arraybounds_index@Base 15 ++ _d_arraybounds_indexp@Base 15 ++ _d_arraybounds_slice@Base 15 ++ _d_arraybounds_slicep@Base 15 ++ _d_arrayboundsp@Base 15 ++ _d_arraycopy@Base 15 ++ _d_arrayliteralTX@Base 15 ++ _d_arraysetcapacity@Base 15 ++ _d_arraysetlengthT@Base 15 ++ _d_arraysetlengthiT@Base 15 ++ _d_arrayshrinkfit@Base 15 ++ _d_assert@Base 15 ++ _d_assert_msg@Base 15 ++ _d_assertp@Base 15 ++ _d_assocarrayliteralTX@Base 15 ++ _d_callfinalizer@Base 15 ++ _d_callinterfacefinalizer@Base 15 ++ _d_class_cast@Base 15 ++ _d_createTrace@Base 15 ++ _d_critical_init@Base 15 ++ _d_critical_term@Base 15 ++ _d_criticalenter2@Base 15 ++ _d_criticalenter@Base 15 ++ _d_criticalexit@Base 15 ++ _d_delThrowable@Base 15 ++ _d_delclass@Base 15 ++ _d_delinterface@Base 15 ++ _d_delmemory@Base 15 ++ _d_dso_registry@Base 15 ++ _d_dynamic_cast@Base 15 ++ _d_eh_swapContext@Base 15 ++ _d_initMonoTime@Base 15 ++ _d_interface_cast@Base 15 ++ _d_isbaseof2@Base 15 ++ _d_isbaseof@Base 15 ++ _d_monitor_staticctor@Base 15 ++ _d_monitor_staticdtor@Base 15 ++ _d_monitordelete@Base 15 ++ _d_monitordelete_nogc@Base 15 ++ _d_monitorenter@Base 15 ++ _d_monitorexit@Base 15 ++ _d_newarrayT@Base 15 ++ _d_newarrayU@Base 15 ++ _d_newarrayiT@Base 15 ++ _d_newclass@Base 15 ++ _d_newitemU@Base 15 ++ _d_paint_cast@Base 15 ++ _d_print_throwable@Base 15 ++ _d_register_conservative_gc@Base 15 ++ _d_register_manual_gc@Base 15 ++ _d_register_precise_gc@Base 15 ++ _d_run_main2@Base 15 ++ _d_run_main@Base 15 ++ _d_setSameMutex@Base 15 ++ _d_throw@Base 15 ++ _d_toObject@Base 15 ++ _d_traceContext@Base 15 ++ _d_unittest@Base 15 ++ _d_unittest_msg@Base 15 ++ _d_unittestp@Base 15 ++ atomic_flag_clear@Base 15 ++ atomic_flag_clear_explicit@Base 15 ++ atomic_flag_test_and_set@Base 15 ++ atomic_flag_test_and_set_explicit@Base 15 ++ atomic_signal_fence@Base 15 ++ atomic_thread_fence@Base 15 ++ backtrace_alloc@Base 15 ++ backtrace_close@Base 15 ++ backtrace_create_state@Base 15 ++ backtrace_dwarf_add@Base 15 ++ backtrace_free@Base 15 ++ backtrace_full@Base 15 ++ backtrace_get_view@Base 15 ++ backtrace_initialize@Base 15 ++ backtrace_open@Base 15 ++ backtrace_pcinfo@Base 15 ++ backtrace_print@Base 15 ++ backtrace_qsort@Base 15 ++ backtrace_release_view@Base 15 ++ backtrace_simple@Base 15 ++ backtrace_syminfo@Base 15 ++ backtrace_syminfo_to_full_callback@Base 15 ++ backtrace_syminfo_to_full_error_callback@Base 15 ++ backtrace_uncompress_lzma@Base 15 ++ backtrace_uncompress_zdebug@Base 15 ++ backtrace_uncompress_zstd@Base 15 ++ backtrace_vector_finish@Base 15 ++ backtrace_vector_grow@Base 15 ++ backtrace_vector_release@Base 15 ++ cimag@Base 15 ++ cimagf@Base 15 ++ cimagl@Base 15 ++ creald@Base 15 ++ crealf@Base 15 ++ creall@Base 15 ++ deflateInit2@Base 15 ++ deflateInit@Base 15 ++ fakePureErrnoImpl@Base 15 ++ fakePureReprintReal@Base 15 ++ fiber_entryPoint@Base 15 ++ fiber_switchContext@Base 15 ++ gc_addRange@Base 15 ++ gc_addRoot@Base 15 ++ gc_addrOf@Base 15 ++ gc_allocatedInCurrentThread@Base 15 ++ gc_calloc@Base 15 ++ gc_clrAttr@Base 15 ++ gc_clrProxy@Base 15 ++ gc_collect@Base 15 ++ gc_disable@Base 15 ++ gc_enable@Base 15 ++ gc_expandArrayUsed@Base 15 ++ gc_extend@Base 15 ++ gc_free@Base 15 ++ gc_getArrayUsed@Base 15 ++ gc_getAttr@Base 15 ++ gc_getProxy@Base 15 ++ gc_inFinalizer@Base 15 ++ gc_init@Base 15 ++ gc_init_nothrow@Base 15 ++ gc_malloc@Base 15 ++ gc_minimize@Base 15 ++ gc_profileStats@Base 15 ++ gc_qalloc@Base 15 ++ gc_query@Base 15 ++ gc_realloc@Base 15 ++ gc_removeRange@Base 15 ++ gc_removeRoot@Base 15 ++ gc_reserve@Base 15 ++ gc_reserveArrayCapacity@Base 15 ++ gc_runFinalizers@Base 15 ++ gc_setAttr@Base 15 ++ gc_setProxy@Base 15 ++ gc_shrinkArrayUsed@Base 15 ++ gc_sizeOf@Base 15 ++ gc_stats@Base 15 ++ gc_term@Base 15 ++ getErrno@Base 15 ++ inflateBackInit@Base 15 ++ inflateInit2@Base 15 ++ inflateInit@Base 15 ++ libat_lock_n@Base 15 ++ libat_unlock_n@Base 15 ++ lifetime_init@Base 15 ++ onArrayIndexError@Base 15 ++ onArraySliceError@Base 15 ++ onAssertError@Base 15 ++ onAssertErrorMsg@Base 15 ++ onFinalizeError@Base 15 ++ onForkError@Base 15 ++ onInvalidMemoryOperationError@Base 15 ++ onOutOfMemoryError@Base 15 ++ onOutOfMemoryErrorNoGC@Base 15 ++ onRangeError@Base 15 ++ onUnicodeError@Base 15 ++ onUnittestErrorMsg@Base 15 ++ pcinfoCallback@Base 15 ++ pcinfoErrorCallback@Base 15 ++ perf_event_open@Base 15 ++ profilegc_setlogfilename@Base 15 ++ register_default_gcs@Base 15 ++ rt_args@Base 15 ++ rt_attachDisposeEvent@Base 15 ++ rt_cArgs@Base 15 ++ rt_cmdline_enabled@Base 15 ++ rt_detachDisposeEvent@Base 15 ++ rt_envvars_enabled@Base 15 ++ rt_finalize2@Base 15 ++ rt_finalize@Base 15 ++ rt_finalizeFromGC@Base 15 ++ rt_getCollectHandler@Base 15 ++ rt_getTraceDeallocator@Base 15 ++ rt_getTraceHandler@Base 15 ++ rt_hasFinalizerInSegment@Base 15 ++ rt_init@Base 15 ++ rt_loadLibrary@Base 15 ++ rt_moduleCtor@Base 15 ++ rt_moduleDtor@Base 15 ++ rt_moduleTlsCtor@Base 15 ++ rt_moduleTlsDtor@Base 15 ++ rt_options@Base 15 ++ rt_setCollectHandler@Base 15 ++ rt_setTraceHandler@Base 15 ++ rt_term@Base 15 ++ rt_trapExceptions@Base 15 ++ rt_unloadLibrary@Base 15 ++ runModuleUnitTests@Base 15 ++ setErrno@Base 15 ++ simpleCallback@Base 15 ++ simpleErrorCallback@Base 15 ++ syminfoCallback2@Base 15 ++ syminfoCallback@Base 15 ++ thread_attachThis@Base 15 ++ thread_detachByAddr@Base 15 ++ thread_detachInstance@Base 15 ++ thread_detachThis@Base 15 ++ thread_entryPoint@Base 15 ++ thread_init@Base 15 ++ thread_isMainThread@Base 15 ++ thread_joinAll@Base 15 ++ thread_postRestartTheWorld@Base 15 ++ thread_postSuspend@Base 15 ++ thread_preStopTheWorld@Base 15 ++ thread_preSuspend@Base 15 ++ thread_resumeAll@Base 15 ++ thread_resumeHandler@Base 15 ++ thread_scanAll@Base 15 ++ thread_scanAllType@Base 15 ++ thread_setGCSignals@Base 15 ++ thread_setThis@Base 15 ++ thread_stackBottom@Base 15 ++ thread_stackTop@Base 15 ++ thread_suspendAll@Base 15 ++ thread_suspendHandler@Base 15 ++ thread_term@Base 15 ++ tipc_addr@Base 15 ++ tipc_cluster@Base 15 ++ tipc_node@Base 15 ++ tipc_zone@Base 15 diff --cc debian/libhwasan0.symbols index 0000000,0000000..c66ab6c new file mode 100644 --- /dev/null +++ b/debian/libhwasan0.symbols @@@ -1,0 -1,0 +1,1016 @@@ ++libhwasan.so.0 #PACKAGE# #MINVER# ++ _ZdaPv@Base 13 ++ _ZdaPvRKSt9nothrow_t@Base 13 ++ _ZdaPvSt11align_val_t@Base 13 ++ _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 13 ++ _ZdaPvm@Base 14 ++ _ZdaPvmSt11align_val_t@Base 14 ++ _ZdaPvmSt11align_val_tRKSt9nothrow_t@Base 14 ++ _ZdlPv@Base 13 ++ _ZdlPvRKSt9nothrow_t@Base 13 ++ _ZdlPvSt11align_val_t@Base 13 ++ _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 13 ++ _ZdlPvm@Base 14 ++ _ZdlPvmSt11align_val_t@Base 14 ++ _ZdlPvmSt11align_val_tRKSt9nothrow_t@Base 14 ++ _Znam@Base 13 ++ _ZnamRKSt9nothrow_t@Base 13 ++ _ZnamSt11align_val_t@Base 13 ++ _ZnamSt11align_val_tRKSt9nothrow_t@Base 13 ++ _Znwm@Base 13 ++ _ZnwmRKSt9nothrow_t@Base 13 ++ _ZnwmSt11align_val_t@Base 13 ++ _ZnwmSt11align_val_tRKSt9nothrow_t@Base 13 ++ ___interceptor___libc_longjmp@Base 14 ++ ___interceptor___libc_memalign@Base 14 ++ ___interceptor_aligned_alloc@Base 14 ++ ___interceptor_bcmp@Base 14 ++ ___interceptor_calloc@Base 14 ++ ___interceptor_cfree@Base 14 ++ ___interceptor_free@Base 14 ++ ___interceptor_longjmp@Base 14 ++ ___interceptor_mallinfo@Base 14 ++ ___interceptor_malloc@Base 14 ++ ___interceptor_malloc_stats@Base 14 ++ ___interceptor_malloc_usable_size@Base 14 ++ ___interceptor_mallopt@Base 14 ++ ___interceptor_memalign@Base 14 ++ ___interceptor_memcmp@Base 14 ++ ___interceptor_memcpy@Base 14 ++ ___interceptor_memmove@Base 14 ++ ___interceptor_memset@Base 14 ++ ___interceptor_mmap@Base 14 ++ ___interceptor_mprotect@Base 14 ++ ___interceptor_munmap@Base 14 ++ ___interceptor_posix_memalign@Base 14 ++ ___interceptor_preadv2@Base 15 ++ ___interceptor_pthread_create@Base 14 ++ ___interceptor_pthread_detach@Base 14 ++ ___interceptor_pthread_exit@Base 14 ++ ___interceptor_pthread_join@Base 14 ++ ___interceptor_pthread_timedjoin_np@Base 14 ++ ___interceptor_pthread_tryjoin_np@Base 14 ++ ___interceptor_pvalloc@Base 14 ++ ___interceptor_pwritev2@Base 15 ++ ___interceptor_realloc@Base 14 ++ ___interceptor_reallocarray@Base 14 ++ ___interceptor_setjmp@Base 14 ++ ___interceptor_siglongjmp@Base 14 ++ ___interceptor_sigsetjmp@Base 14 ++ ___interceptor_valloc@Base 14 ++ ___interceptor_vfork@Base 14 ++ __asan_backtrace_alloc@Base 13 ++ __asan_backtrace_close@Base 13 ++ __asan_backtrace_create_state@Base 13 ++ __asan_backtrace_dwarf_add@Base 13 ++ __asan_backtrace_free@Base 13 ++ __asan_backtrace_get_view@Base 13 ++ __asan_backtrace_initialize@Base 13 ++ __asan_backtrace_open@Base 13 ++ __asan_backtrace_pcinfo@Base 13 ++ __asan_backtrace_qsort@Base 13 ++ __asan_backtrace_release_view@Base 13 ++ __asan_backtrace_syminfo@Base 13 ++ __asan_backtrace_syminfo_to_full_callback@Base 13 ++ __asan_backtrace_syminfo_to_full_error_callback@Base 13 ++ __asan_backtrace_uncompress_lzma@Base 13 ++ __asan_backtrace_uncompress_zdebug@Base 13 ++ __asan_backtrace_uncompress_zstd@Base 13 ++ __asan_backtrace_vector_finish@Base 13 ++ __asan_backtrace_vector_grow@Base 13 ++ __asan_backtrace_vector_release@Base 13 ++ __asan_cplus_demangle_builtin_types@Base 13 ++ __asan_cplus_demangle_fill_ctor@Base 13 ++ __asan_cplus_demangle_fill_dtor@Base 13 ++ __asan_cplus_demangle_fill_extended_operator@Base 13 ++ __asan_cplus_demangle_fill_name@Base 13 ++ __asan_cplus_demangle_init_info@Base 13 ++ __asan_cplus_demangle_mangled_name@Base 13 ++ __asan_cplus_demangle_operators@Base 13 ++ __asan_cplus_demangle_print@Base 13 ++ __asan_cplus_demangle_print_callback@Base 13 ++ __asan_cplus_demangle_type@Base 13 ++ __asan_cplus_demangle_v3@Base 13 ++ __asan_cplus_demangle_v3_callback@Base 13 ++ __asan_internal_memcmp@Base 13 ++ __asan_internal_memcpy@Base 13 ++ __asan_internal_memset@Base 13 ++ __asan_internal_strcmp@Base 13 ++ __asan_internal_strlen@Base 13 ++ __asan_internal_strncmp@Base 13 ++ __asan_internal_strnlen@Base 13 ++ __asan_is_gnu_v3_mangled_ctor@Base 13 ++ __asan_is_gnu_v3_mangled_dtor@Base 13 ++ __asan_java_demangle_v3@Base 13 ++ __asan_java_demangle_v3_callback@Base 13 ++ __hwasan_add_frame_record@Base 13 ++ __hwasan_disable_allocator_tagging@Base 13 ++ __hwasan_enable_allocator_tagging@Base 13 ++ __hwasan_generate_tag@Base 13 ++ __hwasan_get_tag_from_pointer@Base 15 ++ __hwasan_handle_longjmp@Base 13 ++ __hwasan_handle_vfork@Base 13 ++ __hwasan_init@Base 13 ++ __hwasan_init_frames@Base 13 ++ __hwasan_init_static@Base 13 ++ __hwasan_library_loaded@Base 13 ++ __hwasan_library_unloaded@Base 13 ++ __hwasan_load16@Base 13 ++ __hwasan_load16_match_all@Base 14 ++ __hwasan_load16_match_all_noabort@Base 14 ++ __hwasan_load16_noabort@Base 13 ++ __hwasan_load1@Base 13 ++ __hwasan_load1_match_all@Base 14 ++ __hwasan_load1_match_all_noabort@Base 14 ++ __hwasan_load1_noabort@Base 13 ++ __hwasan_load2@Base 13 ++ __hwasan_load2_match_all@Base 14 ++ __hwasan_load2_match_all_noabort@Base 14 ++ __hwasan_load2_noabort@Base 13 ++ __hwasan_load4@Base 13 ++ __hwasan_load4_match_all@Base 14 ++ __hwasan_load4_match_all_noabort@Base 14 ++ __hwasan_load4_noabort@Base 13 ++ __hwasan_load8@Base 13 ++ __hwasan_load8_match_all@Base 14 ++ __hwasan_load8_match_all_noabort@Base 14 ++ __hwasan_load8_noabort@Base 13 ++ __hwasan_loadN@Base 13 ++ __hwasan_loadN_match_all@Base 14 ++ __hwasan_loadN_match_all_noabort@Base 14 ++ __hwasan_loadN_noabort@Base 13 ++ __hwasan_memcpy@Base 13 ++ __hwasan_memcpy_match_all@Base 14 ++ __hwasan_memmove@Base 13 ++ __hwasan_memmove_match_all@Base 14 ++ __hwasan_memset@Base 13 ++ __hwasan_memset_match_all@Base 14 ++ __hwasan_personality_wrapper@Base 13 ++ __hwasan_print_memory_usage@Base 13 ++ __hwasan_print_shadow@Base 13 ++ __hwasan_set_error_report_callback@Base 13 ++ __hwasan_shadow_memory_dynamic_address@Base 13 ++ __hwasan_store16@Base 13 ++ __hwasan_store16_match_all@Base 14 ++ __hwasan_store16_match_all_noabort@Base 14 ++ __hwasan_store16_noabort@Base 13 ++ __hwasan_store1@Base 13 ++ __hwasan_store1_match_all@Base 14 ++ __hwasan_store1_match_all_noabort@Base 14 ++ __hwasan_store1_noabort@Base 13 ++ __hwasan_store2@Base 13 ++ __hwasan_store2_match_all@Base 14 ++ __hwasan_store2_match_all_noabort@Base 14 ++ __hwasan_store2_noabort@Base 13 ++ __hwasan_store4@Base 13 ++ __hwasan_store4_match_all@Base 14 ++ __hwasan_store4_match_all_noabort@Base 14 ++ __hwasan_store4_noabort@Base 13 ++ __hwasan_store8@Base 13 ++ __hwasan_store8_match_all@Base 14 ++ __hwasan_store8_match_all_noabort@Base 14 ++ __hwasan_store8_noabort@Base 13 ++ __hwasan_storeN@Base 13 ++ __hwasan_storeN_match_all@Base 14 ++ __hwasan_storeN_match_all_noabort@Base 14 ++ __hwasan_storeN_noabort@Base 13 ++ __hwasan_tag_memory@Base 13 ++ __hwasan_tag_mismatch4@Base 13 ++ (arch=arm64)__hwasan_tag_mismatch@Base 13 ++ (arch=arm64)__hwasan_tag_mismatch_v2@Base 13 ++ __hwasan_tag_pointer@Base 13 ++ __hwasan_test_shadow@Base 13 ++ __hwasan_thread_enter@Base 15 ++ __hwasan_thread_exit@Base 15 ++ __hwasan_tls@Base 13 ++ __interceptor___libc_longjmp@Base 13 ++ __interceptor_bcmp@Base 14 ++ __interceptor_longjmp@Base 13 ++ __interceptor_memcmp@Base 14 ++ __interceptor_memcpy@Base 14 ++ __interceptor_memmove@Base 14 ++ __interceptor_memset@Base 14 ++ __interceptor_mmap@Base 14 ++ __interceptor_mprotect@Base 14 ++ __interceptor_munmap@Base 14 ++ __interceptor_preadv2@Base 15 ++ __interceptor_pthread_create@Base 13 ++ __interceptor_pthread_detach@Base 14 ++ __interceptor_pthread_exit@Base 14 ++ __interceptor_pthread_join@Base 13 ++ __interceptor_pthread_timedjoin_np@Base 14 ++ __interceptor_pthread_tryjoin_np@Base 14 ++ __interceptor_pwritev2@Base 15 ++ __interceptor_setjmp@Base 13 ++ __interceptor_siglongjmp@Base 13 ++ __interceptor_sigsetjmp@Base 13 ++ __interceptor_trampoline___libc_longjmp@Base 14 ++ __interceptor_trampoline_bcmp@Base 14 ++ __interceptor_trampoline_longjmp@Base 14 ++ __interceptor_trampoline_memcmp@Base 14 ++ __interceptor_trampoline_memcpy@Base 14 ++ __interceptor_trampoline_memmove@Base 14 ++ __interceptor_trampoline_memset@Base 14 ++ __interceptor_trampoline_mmap@Base 14 ++ __interceptor_trampoline_mprotect@Base 14 ++ __interceptor_trampoline_munmap@Base 14 ++ __interceptor_trampoline_preadv2@Base 15 ++ __interceptor_trampoline_pthread_create@Base 14 ++ __interceptor_trampoline_pthread_detach@Base 14 ++ __interceptor_trampoline_pthread_exit@Base 14 ++ __interceptor_trampoline_pthread_join@Base 14 ++ __interceptor_trampoline_pthread_timedjoin_np@Base 14 ++ __interceptor_trampoline_pthread_tryjoin_np@Base 14 ++ __interceptor_trampoline_pwritev2@Base 15 ++ __interceptor_trampoline_setjmp@Base 14 ++ __interceptor_trampoline_siglongjmp@Base 14 ++ __interceptor_trampoline_sigsetjmp@Base 14 ++ __interceptor_trampoline_vfork@Base 14 ++ __interceptor_vfork@Base 13 ++ __libc_longjmp@Base 13 ++ __libc_memalign@Base 13 ++ __lsan_default_options@Base 14 ++ __lsan_disable@Base 14 ++ __lsan_do_leak_check@Base 14 ++ __lsan_do_recoverable_leak_check@Base 14 ++ __lsan_enable@Base 14 ++ __lsan_ignore_object@Base 14 ++ __lsan_register_root_region@Base 14 ++ __lsan_unregister_root_region@Base 14 ++ __sancov_default_options@Base 13 ++ __sancov_lowest_stack@Base 13 ++ __sanitizer___libc_memalign@Base 13 ++ __sanitizer_acquire_crash_state@Base 13 ++ __sanitizer_aligned_alloc@Base 13 ++ __sanitizer_calloc@Base 13 ++ __sanitizer_cfree@Base 13 ++ __sanitizer_cov_8bit_counters_init@Base 13 ++ __sanitizer_cov_bool_flag_init@Base 13 ++ __sanitizer_cov_dump@Base 13 ++ __sanitizer_cov_load16@Base 13 ++ __sanitizer_cov_load1@Base 13 ++ __sanitizer_cov_load2@Base 13 ++ __sanitizer_cov_load4@Base 13 ++ __sanitizer_cov_load8@Base 13 ++ __sanitizer_cov_pcs_init@Base 13 ++ __sanitizer_cov_reset@Base 13 ++ __sanitizer_cov_store16@Base 13 ++ __sanitizer_cov_store1@Base 13 ++ __sanitizer_cov_store2@Base 13 ++ __sanitizer_cov_store4@Base 13 ++ __sanitizer_cov_store8@Base 13 ++ __sanitizer_cov_trace_cmp1@Base 13 ++ __sanitizer_cov_trace_cmp2@Base 13 ++ __sanitizer_cov_trace_cmp4@Base 13 ++ __sanitizer_cov_trace_cmp8@Base 13 ++ __sanitizer_cov_trace_cmp@Base 13 ++ __sanitizer_cov_trace_const_cmp1@Base 13 ++ __sanitizer_cov_trace_const_cmp2@Base 13 ++ __sanitizer_cov_trace_const_cmp4@Base 13 ++ __sanitizer_cov_trace_const_cmp8@Base 13 ++ __sanitizer_cov_trace_div4@Base 13 ++ __sanitizer_cov_trace_div8@Base 13 ++ __sanitizer_cov_trace_gep@Base 13 ++ __sanitizer_cov_trace_pc_guard@Base 13 ++ __sanitizer_cov_trace_pc_guard_init@Base 13 ++ __sanitizer_cov_trace_pc_indir@Base 13 ++ __sanitizer_cov_trace_switch@Base 13 ++ __sanitizer_dump_coverage@Base 13 ++ __sanitizer_dump_trace_pc_guard_coverage@Base 13 ++ __sanitizer_free@Base 13 ++ __sanitizer_free_hook@Base 13 ++ __sanitizer_get_allocated_begin@Base 14 ++ __sanitizer_get_allocated_size@Base 13 ++ __sanitizer_get_allocated_size_fast@Base 14 ++ __sanitizer_get_current_allocated_bytes@Base 13 ++ __sanitizer_get_dtls_size@Base 15 ++ __sanitizer_get_estimated_allocated_size@Base 13 ++ __sanitizer_get_free_bytes@Base 13 ++ __sanitizer_get_heap_size@Base 13 ++ __sanitizer_get_module_and_offset_for_pc@Base 13 ++ __sanitizer_get_ownership@Base 13 ++ __sanitizer_get_report_path@Base 13 ++ __sanitizer_get_unmapped_bytes@Base 13 ++ __sanitizer_ignore_free_hook@Base 15 ++ __sanitizer_install_malloc_and_free_hooks@Base 13 ++ __sanitizer_internal_memcpy@Base 14 ++ __sanitizer_internal_memmove@Base 14 ++ __sanitizer_internal_memset@Base 14 ++ __sanitizer_mallinfo@Base 13 ++ __sanitizer_malloc@Base 13 ++ __sanitizer_malloc_hook@Base 13 ++ __sanitizer_malloc_stats@Base 13 ++ __sanitizer_malloc_usable_size@Base 13 ++ __sanitizer_mallopt@Base 13 ++ __sanitizer_memalign@Base 13 ++ __sanitizer_on_print@Base 13 ++ __sanitizer_posix_memalign@Base 13 ++ __sanitizer_print_stack_trace@Base 13 ++ __sanitizer_purge_allocator@Base 14 ++ __sanitizer_pvalloc@Base 13 ++ __sanitizer_realloc@Base 13 ++ __sanitizer_reallocarray@Base 13 ++ __sanitizer_report_error_summary@Base 13 ++ __sanitizer_sandbox_on_notify@Base 13 ++ __sanitizer_set_death_callback@Base 13 ++ __sanitizer_set_report_fd@Base 13 ++ __sanitizer_set_report_path@Base 13 ++ __sanitizer_symbolize_global@Base 13 ++ __sanitizer_symbolize_pc@Base 13 ++ __sanitizer_syscall_post_impl_accept4@Base 14 ++ __sanitizer_syscall_post_impl_accept@Base 14 ++ __sanitizer_syscall_post_impl_access@Base 14 ++ __sanitizer_syscall_post_impl_acct@Base 14 ++ __sanitizer_syscall_post_impl_add_key@Base 14 ++ __sanitizer_syscall_post_impl_adjtimex@Base 14 ++ __sanitizer_syscall_post_impl_alarm@Base 14 ++ __sanitizer_syscall_post_impl_bdflush@Base 14 ++ __sanitizer_syscall_post_impl_bind@Base 14 ++ __sanitizer_syscall_post_impl_brk@Base 14 ++ __sanitizer_syscall_post_impl_capget@Base 14 ++ __sanitizer_syscall_post_impl_capset@Base 14 ++ __sanitizer_syscall_post_impl_chdir@Base 14 ++ __sanitizer_syscall_post_impl_chmod@Base 14 ++ __sanitizer_syscall_post_impl_chown@Base 14 ++ __sanitizer_syscall_post_impl_chroot@Base 14 ++ __sanitizer_syscall_post_impl_clock_adjtime@Base 14 ++ __sanitizer_syscall_post_impl_clock_getres@Base 14 ++ __sanitizer_syscall_post_impl_clock_gettime@Base 14 ++ __sanitizer_syscall_post_impl_clock_nanosleep@Base 14 ++ __sanitizer_syscall_post_impl_clock_settime@Base 14 ++ __sanitizer_syscall_post_impl_close@Base 14 ++ __sanitizer_syscall_post_impl_connect@Base 14 ++ __sanitizer_syscall_post_impl_creat@Base 14 ++ __sanitizer_syscall_post_impl_delete_module@Base 14 ++ __sanitizer_syscall_post_impl_dup2@Base 14 ++ __sanitizer_syscall_post_impl_dup3@Base 14 ++ __sanitizer_syscall_post_impl_dup@Base 14 ++ __sanitizer_syscall_post_impl_epoll_create1@Base 14 ++ __sanitizer_syscall_post_impl_epoll_create@Base 14 ++ __sanitizer_syscall_post_impl_epoll_ctl@Base 14 ++ __sanitizer_syscall_post_impl_epoll_pwait2@Base 14 ++ __sanitizer_syscall_post_impl_epoll_pwait@Base 14 ++ __sanitizer_syscall_post_impl_epoll_wait@Base 14 ++ __sanitizer_syscall_post_impl_eventfd2@Base 14 ++ __sanitizer_syscall_post_impl_eventfd@Base 14 ++ __sanitizer_syscall_post_impl_exit@Base 14 ++ __sanitizer_syscall_post_impl_exit_group@Base 14 ++ __sanitizer_syscall_post_impl_faccessat@Base 14 ++ __sanitizer_syscall_post_impl_fchdir@Base 14 ++ __sanitizer_syscall_post_impl_fchmod@Base 14 ++ __sanitizer_syscall_post_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat@Base 14 ++ __sanitizer_syscall_post_impl_fchown@Base 14 ++ __sanitizer_syscall_post_impl_fchownat@Base 14 ++ __sanitizer_syscall_post_impl_fcntl64@Base 14 ++ __sanitizer_syscall_post_impl_fcntl@Base 14 ++ __sanitizer_syscall_post_impl_fdatasync@Base 14 ++ __sanitizer_syscall_post_impl_fgetxattr@Base 14 ++ __sanitizer_syscall_post_impl_flistxattr@Base 14 ++ __sanitizer_syscall_post_impl_flock@Base 14 ++ __sanitizer_syscall_post_impl_fork@Base 14 ++ __sanitizer_syscall_post_impl_fremovexattr@Base 14 ++ __sanitizer_syscall_post_impl_fsetxattr@Base 14 ++ __sanitizer_syscall_post_impl_fstat64@Base 14 ++ __sanitizer_syscall_post_impl_fstat@Base 14 ++ __sanitizer_syscall_post_impl_fstatat64@Base 14 ++ __sanitizer_syscall_post_impl_fstatfs64@Base 14 ++ __sanitizer_syscall_post_impl_fstatfs@Base 14 ++ __sanitizer_syscall_post_impl_fsync@Base 14 ++ __sanitizer_syscall_post_impl_ftruncate@Base 14 ++ __sanitizer_syscall_post_impl_futex@Base 15 ++ __sanitizer_syscall_post_impl_futimesat@Base 14 ++ __sanitizer_syscall_post_impl_get_mempolicy@Base 14 ++ __sanitizer_syscall_post_impl_get_robust_list@Base 14 ++ __sanitizer_syscall_post_impl_getcpu@Base 14 ++ __sanitizer_syscall_post_impl_getcwd@Base 14 ++ __sanitizer_syscall_post_impl_getdents64@Base 14 ++ __sanitizer_syscall_post_impl_getdents@Base 14 ++ __sanitizer_syscall_post_impl_getegid@Base 14 ++ __sanitizer_syscall_post_impl_geteuid@Base 14 ++ __sanitizer_syscall_post_impl_getgid@Base 14 ++ __sanitizer_syscall_post_impl_getgroups@Base 14 ++ __sanitizer_syscall_post_impl_gethostname@Base 14 ++ __sanitizer_syscall_post_impl_getitimer@Base 14 ++ __sanitizer_syscall_post_impl_getpeername@Base 14 ++ __sanitizer_syscall_post_impl_getpgid@Base 14 ++ __sanitizer_syscall_post_impl_getpgrp@Base 14 ++ __sanitizer_syscall_post_impl_getpid@Base 14 ++ __sanitizer_syscall_post_impl_getppid@Base 14 ++ __sanitizer_syscall_post_impl_getpriority@Base 14 ++ __sanitizer_syscall_post_impl_getrandom@Base 14 ++ __sanitizer_syscall_post_impl_getresgid@Base 14 ++ __sanitizer_syscall_post_impl_getresuid@Base 14 ++ __sanitizer_syscall_post_impl_getrlimit@Base 14 ++ __sanitizer_syscall_post_impl_getrusage@Base 14 ++ __sanitizer_syscall_post_impl_getsid@Base 14 ++ __sanitizer_syscall_post_impl_getsockname@Base 14 ++ __sanitizer_syscall_post_impl_getsockopt@Base 14 ++ __sanitizer_syscall_post_impl_gettid@Base 14 ++ __sanitizer_syscall_post_impl_gettimeofday@Base 14 ++ __sanitizer_syscall_post_impl_getuid@Base 14 ++ __sanitizer_syscall_post_impl_getxattr@Base 14 ++ __sanitizer_syscall_post_impl_init_module@Base 14 ++ __sanitizer_syscall_post_impl_inotify_add_watch@Base 14 ++ __sanitizer_syscall_post_impl_inotify_init1@Base 14 ++ __sanitizer_syscall_post_impl_inotify_init@Base 14 ++ __sanitizer_syscall_post_impl_inotify_rm_watch@Base 14 ++ __sanitizer_syscall_post_impl_io_cancel@Base 14 ++ __sanitizer_syscall_post_impl_io_destroy@Base 14 ++ __sanitizer_syscall_post_impl_io_getevents@Base 14 ++ __sanitizer_syscall_post_impl_io_setup@Base 14 ++ __sanitizer_syscall_post_impl_io_submit@Base 14 ++ __sanitizer_syscall_post_impl_ioctl@Base 14 ++ __sanitizer_syscall_post_impl_ioperm@Base 14 ++ __sanitizer_syscall_post_impl_ioprio_get@Base 14 ++ __sanitizer_syscall_post_impl_ioprio_set@Base 14 ++ __sanitizer_syscall_post_impl_ipc@Base 14 ++ __sanitizer_syscall_post_impl_kexec_load@Base 14 ++ __sanitizer_syscall_post_impl_keyctl@Base 14 ++ __sanitizer_syscall_post_impl_kill@Base 14 ++ __sanitizer_syscall_post_impl_lchown@Base 14 ++ __sanitizer_syscall_post_impl_lgetxattr@Base 14 ++ __sanitizer_syscall_post_impl_link@Base 14 ++ __sanitizer_syscall_post_impl_linkat@Base 14 ++ __sanitizer_syscall_post_impl_listen@Base 14 ++ __sanitizer_syscall_post_impl_listxattr@Base 14 ++ __sanitizer_syscall_post_impl_llistxattr@Base 14 ++ __sanitizer_syscall_post_impl_llseek@Base 14 ++ __sanitizer_syscall_post_impl_lookup_dcookie@Base 14 ++ __sanitizer_syscall_post_impl_lremovexattr@Base 14 ++ __sanitizer_syscall_post_impl_lseek@Base 14 ++ __sanitizer_syscall_post_impl_lsetxattr@Base 14 ++ __sanitizer_syscall_post_impl_lstat64@Base 14 ++ __sanitizer_syscall_post_impl_lstat@Base 14 ++ __sanitizer_syscall_post_impl_madvise@Base 14 ++ __sanitizer_syscall_post_impl_mbind@Base 14 ++ __sanitizer_syscall_post_impl_migrate_pages@Base 14 ++ __sanitizer_syscall_post_impl_mincore@Base 14 ++ __sanitizer_syscall_post_impl_mkdir@Base 14 ++ __sanitizer_syscall_post_impl_mkdirat@Base 14 ++ __sanitizer_syscall_post_impl_mknod@Base 14 ++ __sanitizer_syscall_post_impl_mknodat@Base 14 ++ __sanitizer_syscall_post_impl_mlock@Base 14 ++ __sanitizer_syscall_post_impl_mlockall@Base 14 ++ __sanitizer_syscall_post_impl_mmap_pgoff@Base 14 ++ __sanitizer_syscall_post_impl_mount@Base 14 ++ __sanitizer_syscall_post_impl_move_pages@Base 14 ++ __sanitizer_syscall_post_impl_mprotect@Base 14 ++ __sanitizer_syscall_post_impl_mq_getsetattr@Base 14 ++ __sanitizer_syscall_post_impl_mq_notify@Base 14 ++ __sanitizer_syscall_post_impl_mq_open@Base 14 ++ __sanitizer_syscall_post_impl_mq_timedreceive@Base 14 ++ __sanitizer_syscall_post_impl_mq_timedsend@Base 14 ++ __sanitizer_syscall_post_impl_mq_unlink@Base 14 ++ __sanitizer_syscall_post_impl_mremap@Base 14 ++ __sanitizer_syscall_post_impl_msgctl@Base 14 ++ __sanitizer_syscall_post_impl_msgget@Base 14 ++ __sanitizer_syscall_post_impl_msgrcv@Base 14 ++ __sanitizer_syscall_post_impl_msgsnd@Base 14 ++ __sanitizer_syscall_post_impl_msync@Base 14 ++ __sanitizer_syscall_post_impl_munlock@Base 14 ++ __sanitizer_syscall_post_impl_munlockall@Base 14 ++ __sanitizer_syscall_post_impl_munmap@Base 14 ++ __sanitizer_syscall_post_impl_name_to_handle_at@Base 14 ++ __sanitizer_syscall_post_impl_nanosleep@Base 14 ++ __sanitizer_syscall_post_impl_newfstat@Base 14 ++ __sanitizer_syscall_post_impl_newfstatat@Base 14 ++ __sanitizer_syscall_post_impl_newlstat@Base 14 ++ __sanitizer_syscall_post_impl_newstat@Base 14 ++ __sanitizer_syscall_post_impl_newuname@Base 14 ++ __sanitizer_syscall_post_impl_ni_syscall@Base 14 ++ __sanitizer_syscall_post_impl_nice@Base 14 ++ __sanitizer_syscall_post_impl_old_getrlimit@Base 14 ++ __sanitizer_syscall_post_impl_old_mmap@Base 14 ++ __sanitizer_syscall_post_impl_old_readdir@Base 14 ++ __sanitizer_syscall_post_impl_old_select@Base 14 ++ __sanitizer_syscall_post_impl_oldumount@Base 14 ++ __sanitizer_syscall_post_impl_olduname@Base 14 ++ __sanitizer_syscall_post_impl_open@Base 14 ++ __sanitizer_syscall_post_impl_open_by_handle_at@Base 14 ++ __sanitizer_syscall_post_impl_openat@Base 14 ++ __sanitizer_syscall_post_impl_pause@Base 14 ++ __sanitizer_syscall_post_impl_pciconfig_iobase@Base 14 ++ __sanitizer_syscall_post_impl_pciconfig_read@Base 14 ++ __sanitizer_syscall_post_impl_pciconfig_write@Base 14 ++ __sanitizer_syscall_post_impl_perf_event_open@Base 14 ++ __sanitizer_syscall_post_impl_personality@Base 14 ++ __sanitizer_syscall_post_impl_pipe2@Base 14 ++ __sanitizer_syscall_post_impl_pipe@Base 14 ++ __sanitizer_syscall_post_impl_pivot_root@Base 14 ++ __sanitizer_syscall_post_impl_poll@Base 14 ++ __sanitizer_syscall_post_impl_ppoll@Base 14 ++ __sanitizer_syscall_post_impl_pread64@Base 14 ++ __sanitizer_syscall_post_impl_preadv@Base 14 ++ __sanitizer_syscall_post_impl_prlimit64@Base 14 ++ __sanitizer_syscall_post_impl_process_vm_readv@Base 14 ++ __sanitizer_syscall_post_impl_process_vm_writev@Base 14 ++ __sanitizer_syscall_post_impl_pselect6@Base 14 ++ __sanitizer_syscall_post_impl_ptrace@Base 14 ++ __sanitizer_syscall_post_impl_pwrite64@Base 14 ++ __sanitizer_syscall_post_impl_pwritev@Base 14 ++ __sanitizer_syscall_post_impl_quotactl@Base 14 ++ __sanitizer_syscall_post_impl_read@Base 14 ++ __sanitizer_syscall_post_impl_readlink@Base 14 ++ __sanitizer_syscall_post_impl_readlinkat@Base 14 ++ __sanitizer_syscall_post_impl_readv@Base 14 ++ __sanitizer_syscall_post_impl_reboot@Base 14 ++ __sanitizer_syscall_post_impl_recv@Base 14 ++ __sanitizer_syscall_post_impl_recvfrom@Base 14 ++ __sanitizer_syscall_post_impl_recvmmsg@Base 14 ++ __sanitizer_syscall_post_impl_recvmsg@Base 14 ++ __sanitizer_syscall_post_impl_remap_file_pages@Base 14 ++ __sanitizer_syscall_post_impl_removexattr@Base 14 ++ __sanitizer_syscall_post_impl_rename@Base 14 ++ __sanitizer_syscall_post_impl_renameat@Base 14 ++ __sanitizer_syscall_post_impl_request_key@Base 14 ++ __sanitizer_syscall_post_impl_restart_syscall@Base 14 ++ __sanitizer_syscall_post_impl_rmdir@Base 14 ++ __sanitizer_syscall_post_impl_rt_sigaction@Base 14 ++ __sanitizer_syscall_post_impl_rt_sigpending@Base 14 ++ __sanitizer_syscall_post_impl_rt_sigprocmask@Base 14 ++ __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 14 ++ __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 14 ++ __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 14 ++ __sanitizer_syscall_post_impl_sched_get_priority_max@Base 14 ++ __sanitizer_syscall_post_impl_sched_get_priority_min@Base 14 ++ __sanitizer_syscall_post_impl_sched_getaffinity@Base 14 ++ __sanitizer_syscall_post_impl_sched_getparam@Base 14 ++ __sanitizer_syscall_post_impl_sched_getscheduler@Base 14 ++ __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 14 ++ __sanitizer_syscall_post_impl_sched_setaffinity@Base 14 ++ __sanitizer_syscall_post_impl_sched_setparam@Base 14 ++ __sanitizer_syscall_post_impl_sched_setscheduler@Base 14 ++ __sanitizer_syscall_post_impl_sched_yield@Base 14 ++ __sanitizer_syscall_post_impl_select@Base 14 ++ __sanitizer_syscall_post_impl_semctl@Base 14 ++ __sanitizer_syscall_post_impl_semget@Base 14 ++ __sanitizer_syscall_post_impl_semop@Base 14 ++ __sanitizer_syscall_post_impl_semtimedop@Base 14 ++ __sanitizer_syscall_post_impl_send@Base 14 ++ __sanitizer_syscall_post_impl_sendfile64@Base 14 ++ __sanitizer_syscall_post_impl_sendfile@Base 14 ++ __sanitizer_syscall_post_impl_sendmmsg@Base 14 ++ __sanitizer_syscall_post_impl_sendmsg@Base 14 ++ __sanitizer_syscall_post_impl_sendto@Base 14 ++ __sanitizer_syscall_post_impl_set_mempolicy@Base 14 ++ __sanitizer_syscall_post_impl_set_robust_list@Base 14 ++ __sanitizer_syscall_post_impl_set_tid_address@Base 14 ++ __sanitizer_syscall_post_impl_setdomainname@Base 14 ++ __sanitizer_syscall_post_impl_setfsgid@Base 14 ++ __sanitizer_syscall_post_impl_setfsuid@Base 14 ++ __sanitizer_syscall_post_impl_setgid@Base 14 ++ __sanitizer_syscall_post_impl_setgroups@Base 14 ++ __sanitizer_syscall_post_impl_sethostname@Base 14 ++ __sanitizer_syscall_post_impl_setitimer@Base 14 ++ __sanitizer_syscall_post_impl_setns@Base 14 ++ __sanitizer_syscall_post_impl_setpgid@Base 14 ++ __sanitizer_syscall_post_impl_setpriority@Base 14 ++ __sanitizer_syscall_post_impl_setregid@Base 14 ++ __sanitizer_syscall_post_impl_setresgid@Base 14 ++ __sanitizer_syscall_post_impl_setresuid@Base 14 ++ __sanitizer_syscall_post_impl_setreuid@Base 14 ++ __sanitizer_syscall_post_impl_setrlimit@Base 14 ++ __sanitizer_syscall_post_impl_setsid@Base 14 ++ __sanitizer_syscall_post_impl_setsockopt@Base 14 ++ __sanitizer_syscall_post_impl_settimeofday@Base 14 ++ __sanitizer_syscall_post_impl_setuid@Base 14 ++ __sanitizer_syscall_post_impl_setxattr@Base 14 ++ __sanitizer_syscall_post_impl_sgetmask@Base 14 ++ __sanitizer_syscall_post_impl_shmat@Base 14 ++ __sanitizer_syscall_post_impl_shmctl@Base 14 ++ __sanitizer_syscall_post_impl_shmdt@Base 14 ++ __sanitizer_syscall_post_impl_shmget@Base 14 ++ __sanitizer_syscall_post_impl_shutdown@Base 14 ++ __sanitizer_syscall_post_impl_sigaction@Base 14 ++ __sanitizer_syscall_post_impl_sigaltstack@Base 14 ++ __sanitizer_syscall_post_impl_signal@Base 14 ++ __sanitizer_syscall_post_impl_signalfd4@Base 14 ++ __sanitizer_syscall_post_impl_signalfd@Base 14 ++ __sanitizer_syscall_post_impl_sigpending@Base 14 ++ __sanitizer_syscall_post_impl_sigprocmask@Base 14 ++ __sanitizer_syscall_post_impl_socket@Base 14 ++ __sanitizer_syscall_post_impl_socketcall@Base 14 ++ __sanitizer_syscall_post_impl_socketpair@Base 14 ++ __sanitizer_syscall_post_impl_splice@Base 14 ++ __sanitizer_syscall_post_impl_spu_create@Base 14 ++ __sanitizer_syscall_post_impl_spu_run@Base 14 ++ __sanitizer_syscall_post_impl_ssetmask@Base 14 ++ __sanitizer_syscall_post_impl_stat64@Base 14 ++ __sanitizer_syscall_post_impl_stat@Base 14 ++ __sanitizer_syscall_post_impl_statfs64@Base 14 ++ __sanitizer_syscall_post_impl_statfs@Base 14 ++ __sanitizer_syscall_post_impl_stime@Base 14 ++ __sanitizer_syscall_post_impl_swapoff@Base 14 ++ __sanitizer_syscall_post_impl_swapon@Base 14 ++ __sanitizer_syscall_post_impl_symlink@Base 14 ++ __sanitizer_syscall_post_impl_symlinkat@Base 14 ++ __sanitizer_syscall_post_impl_sync@Base 14 ++ __sanitizer_syscall_post_impl_syncfs@Base 14 ++ __sanitizer_syscall_post_impl_sysctl@Base 14 ++ __sanitizer_syscall_post_impl_sysfs@Base 14 ++ __sanitizer_syscall_post_impl_sysinfo@Base 14 ++ __sanitizer_syscall_post_impl_syslog@Base 14 ++ __sanitizer_syscall_post_impl_tee@Base 14 ++ __sanitizer_syscall_post_impl_tgkill@Base 14 ++ __sanitizer_syscall_post_impl_time@Base 14 ++ __sanitizer_syscall_post_impl_timer_create@Base 14 ++ __sanitizer_syscall_post_impl_timer_delete@Base 14 ++ __sanitizer_syscall_post_impl_timer_getoverrun@Base 14 ++ __sanitizer_syscall_post_impl_timer_gettime@Base 14 ++ __sanitizer_syscall_post_impl_timer_settime@Base 14 ++ __sanitizer_syscall_post_impl_timerfd_create@Base 14 ++ __sanitizer_syscall_post_impl_timerfd_gettime@Base 14 ++ __sanitizer_syscall_post_impl_timerfd_settime@Base 14 ++ __sanitizer_syscall_post_impl_times@Base 14 ++ __sanitizer_syscall_post_impl_tkill@Base 14 ++ __sanitizer_syscall_post_impl_truncate@Base 14 ++ __sanitizer_syscall_post_impl_umask@Base 14 ++ __sanitizer_syscall_post_impl_umount@Base 14 ++ __sanitizer_syscall_post_impl_uname@Base 14 ++ __sanitizer_syscall_post_impl_unlink@Base 14 ++ __sanitizer_syscall_post_impl_unlinkat@Base 14 ++ __sanitizer_syscall_post_impl_unshare@Base 14 ++ __sanitizer_syscall_post_impl_uselib@Base 14 ++ __sanitizer_syscall_post_impl_ustat@Base 14 ++ __sanitizer_syscall_post_impl_utime@Base 14 ++ __sanitizer_syscall_post_impl_utimensat@Base 14 ++ __sanitizer_syscall_post_impl_utimes@Base 14 ++ __sanitizer_syscall_post_impl_vfork@Base 14 ++ __sanitizer_syscall_post_impl_vhangup@Base 14 ++ __sanitizer_syscall_post_impl_vmsplice@Base 14 ++ __sanitizer_syscall_post_impl_wait4@Base 14 ++ __sanitizer_syscall_post_impl_waitid@Base 14 ++ __sanitizer_syscall_post_impl_waitpid@Base 14 ++ __sanitizer_syscall_post_impl_write@Base 14 ++ __sanitizer_syscall_post_impl_writev@Base 14 ++ __sanitizer_syscall_pre_impl_accept4@Base 14 ++ __sanitizer_syscall_pre_impl_accept@Base 14 ++ __sanitizer_syscall_pre_impl_access@Base 14 ++ __sanitizer_syscall_pre_impl_acct@Base 14 ++ __sanitizer_syscall_pre_impl_add_key@Base 14 ++ __sanitizer_syscall_pre_impl_adjtimex@Base 14 ++ __sanitizer_syscall_pre_impl_alarm@Base 14 ++ __sanitizer_syscall_pre_impl_bdflush@Base 14 ++ __sanitizer_syscall_pre_impl_bind@Base 14 ++ __sanitizer_syscall_pre_impl_brk@Base 14 ++ __sanitizer_syscall_pre_impl_capget@Base 14 ++ __sanitizer_syscall_pre_impl_capset@Base 14 ++ __sanitizer_syscall_pre_impl_chdir@Base 14 ++ __sanitizer_syscall_pre_impl_chmod@Base 14 ++ __sanitizer_syscall_pre_impl_chown@Base 14 ++ __sanitizer_syscall_pre_impl_chroot@Base 14 ++ __sanitizer_syscall_pre_impl_clock_adjtime@Base 14 ++ __sanitizer_syscall_pre_impl_clock_getres@Base 14 ++ __sanitizer_syscall_pre_impl_clock_gettime@Base 14 ++ __sanitizer_syscall_pre_impl_clock_nanosleep@Base 14 ++ __sanitizer_syscall_pre_impl_clock_settime@Base 14 ++ __sanitizer_syscall_pre_impl_close@Base 14 ++ __sanitizer_syscall_pre_impl_connect@Base 14 ++ __sanitizer_syscall_pre_impl_creat@Base 14 ++ __sanitizer_syscall_pre_impl_delete_module@Base 14 ++ __sanitizer_syscall_pre_impl_dup2@Base 14 ++ __sanitizer_syscall_pre_impl_dup3@Base 14 ++ __sanitizer_syscall_pre_impl_dup@Base 14 ++ __sanitizer_syscall_pre_impl_epoll_create1@Base 14 ++ __sanitizer_syscall_pre_impl_epoll_create@Base 14 ++ __sanitizer_syscall_pre_impl_epoll_ctl@Base 14 ++ __sanitizer_syscall_pre_impl_epoll_pwait2@Base 14 ++ __sanitizer_syscall_pre_impl_epoll_pwait@Base 14 ++ __sanitizer_syscall_pre_impl_epoll_wait@Base 14 ++ __sanitizer_syscall_pre_impl_eventfd2@Base 14 ++ __sanitizer_syscall_pre_impl_eventfd@Base 14 ++ __sanitizer_syscall_pre_impl_exit@Base 14 ++ __sanitizer_syscall_pre_impl_exit_group@Base 14 ++ __sanitizer_syscall_pre_impl_faccessat@Base 14 ++ __sanitizer_syscall_pre_impl_fchdir@Base 14 ++ __sanitizer_syscall_pre_impl_fchmod@Base 14 ++ __sanitizer_syscall_pre_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat@Base 14 ++ __sanitizer_syscall_pre_impl_fchown@Base 14 ++ __sanitizer_syscall_pre_impl_fchownat@Base 14 ++ __sanitizer_syscall_pre_impl_fcntl64@Base 14 ++ __sanitizer_syscall_pre_impl_fcntl@Base 14 ++ __sanitizer_syscall_pre_impl_fdatasync@Base 14 ++ __sanitizer_syscall_pre_impl_fgetxattr@Base 14 ++ __sanitizer_syscall_pre_impl_flistxattr@Base 14 ++ __sanitizer_syscall_pre_impl_flock@Base 14 ++ __sanitizer_syscall_pre_impl_fork@Base 14 ++ __sanitizer_syscall_pre_impl_fremovexattr@Base 14 ++ __sanitizer_syscall_pre_impl_fsetxattr@Base 14 ++ __sanitizer_syscall_pre_impl_fstat64@Base 14 ++ __sanitizer_syscall_pre_impl_fstat@Base 14 ++ __sanitizer_syscall_pre_impl_fstatat64@Base 14 ++ __sanitizer_syscall_pre_impl_fstatfs64@Base 14 ++ __sanitizer_syscall_pre_impl_fstatfs@Base 14 ++ __sanitizer_syscall_pre_impl_fsync@Base 14 ++ __sanitizer_syscall_pre_impl_ftruncate@Base 14 ++ __sanitizer_syscall_pre_impl_futex@Base 15 ++ __sanitizer_syscall_pre_impl_futimesat@Base 14 ++ __sanitizer_syscall_pre_impl_get_mempolicy@Base 14 ++ __sanitizer_syscall_pre_impl_get_robust_list@Base 14 ++ __sanitizer_syscall_pre_impl_getcpu@Base 14 ++ __sanitizer_syscall_pre_impl_getcwd@Base 14 ++ __sanitizer_syscall_pre_impl_getdents64@Base 14 ++ __sanitizer_syscall_pre_impl_getdents@Base 14 ++ __sanitizer_syscall_pre_impl_getegid@Base 14 ++ __sanitizer_syscall_pre_impl_geteuid@Base 14 ++ __sanitizer_syscall_pre_impl_getgid@Base 14 ++ __sanitizer_syscall_pre_impl_getgroups@Base 14 ++ __sanitizer_syscall_pre_impl_gethostname@Base 14 ++ __sanitizer_syscall_pre_impl_getitimer@Base 14 ++ __sanitizer_syscall_pre_impl_getpeername@Base 14 ++ __sanitizer_syscall_pre_impl_getpgid@Base 14 ++ __sanitizer_syscall_pre_impl_getpgrp@Base 14 ++ __sanitizer_syscall_pre_impl_getpid@Base 14 ++ __sanitizer_syscall_pre_impl_getppid@Base 14 ++ __sanitizer_syscall_pre_impl_getpriority@Base 14 ++ __sanitizer_syscall_pre_impl_getrandom@Base 14 ++ __sanitizer_syscall_pre_impl_getresgid@Base 14 ++ __sanitizer_syscall_pre_impl_getresuid@Base 14 ++ __sanitizer_syscall_pre_impl_getrlimit@Base 14 ++ __sanitizer_syscall_pre_impl_getrusage@Base 14 ++ __sanitizer_syscall_pre_impl_getsid@Base 14 ++ __sanitizer_syscall_pre_impl_getsockname@Base 14 ++ __sanitizer_syscall_pre_impl_getsockopt@Base 14 ++ __sanitizer_syscall_pre_impl_gettid@Base 14 ++ __sanitizer_syscall_pre_impl_gettimeofday@Base 14 ++ __sanitizer_syscall_pre_impl_getuid@Base 14 ++ __sanitizer_syscall_pre_impl_getxattr@Base 14 ++ __sanitizer_syscall_pre_impl_init_module@Base 14 ++ __sanitizer_syscall_pre_impl_inotify_add_watch@Base 14 ++ __sanitizer_syscall_pre_impl_inotify_init1@Base 14 ++ __sanitizer_syscall_pre_impl_inotify_init@Base 14 ++ __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 14 ++ __sanitizer_syscall_pre_impl_io_cancel@Base 14 ++ __sanitizer_syscall_pre_impl_io_destroy@Base 14 ++ __sanitizer_syscall_pre_impl_io_getevents@Base 14 ++ __sanitizer_syscall_pre_impl_io_setup@Base 14 ++ __sanitizer_syscall_pre_impl_io_submit@Base 14 ++ __sanitizer_syscall_pre_impl_ioctl@Base 14 ++ __sanitizer_syscall_pre_impl_ioperm@Base 14 ++ __sanitizer_syscall_pre_impl_ioprio_get@Base 14 ++ __sanitizer_syscall_pre_impl_ioprio_set@Base 14 ++ __sanitizer_syscall_pre_impl_ipc@Base 14 ++ __sanitizer_syscall_pre_impl_kexec_load@Base 14 ++ __sanitizer_syscall_pre_impl_keyctl@Base 14 ++ __sanitizer_syscall_pre_impl_kill@Base 14 ++ __sanitizer_syscall_pre_impl_lchown@Base 14 ++ __sanitizer_syscall_pre_impl_lgetxattr@Base 14 ++ __sanitizer_syscall_pre_impl_link@Base 14 ++ __sanitizer_syscall_pre_impl_linkat@Base 14 ++ __sanitizer_syscall_pre_impl_listen@Base 14 ++ __sanitizer_syscall_pre_impl_listxattr@Base 14 ++ __sanitizer_syscall_pre_impl_llistxattr@Base 14 ++ __sanitizer_syscall_pre_impl_llseek@Base 14 ++ __sanitizer_syscall_pre_impl_lookup_dcookie@Base 14 ++ __sanitizer_syscall_pre_impl_lremovexattr@Base 14 ++ __sanitizer_syscall_pre_impl_lseek@Base 14 ++ __sanitizer_syscall_pre_impl_lsetxattr@Base 14 ++ __sanitizer_syscall_pre_impl_lstat64@Base 14 ++ __sanitizer_syscall_pre_impl_lstat@Base 14 ++ __sanitizer_syscall_pre_impl_madvise@Base 14 ++ __sanitizer_syscall_pre_impl_mbind@Base 14 ++ __sanitizer_syscall_pre_impl_migrate_pages@Base 14 ++ __sanitizer_syscall_pre_impl_mincore@Base 14 ++ __sanitizer_syscall_pre_impl_mkdir@Base 14 ++ __sanitizer_syscall_pre_impl_mkdirat@Base 14 ++ __sanitizer_syscall_pre_impl_mknod@Base 14 ++ __sanitizer_syscall_pre_impl_mknodat@Base 14 ++ __sanitizer_syscall_pre_impl_mlock@Base 14 ++ __sanitizer_syscall_pre_impl_mlockall@Base 14 ++ __sanitizer_syscall_pre_impl_mmap_pgoff@Base 14 ++ __sanitizer_syscall_pre_impl_mount@Base 14 ++ __sanitizer_syscall_pre_impl_move_pages@Base 14 ++ __sanitizer_syscall_pre_impl_mprotect@Base 14 ++ __sanitizer_syscall_pre_impl_mq_getsetattr@Base 14 ++ __sanitizer_syscall_pre_impl_mq_notify@Base 14 ++ __sanitizer_syscall_pre_impl_mq_open@Base 14 ++ __sanitizer_syscall_pre_impl_mq_timedreceive@Base 14 ++ __sanitizer_syscall_pre_impl_mq_timedsend@Base 14 ++ __sanitizer_syscall_pre_impl_mq_unlink@Base 14 ++ __sanitizer_syscall_pre_impl_mremap@Base 14 ++ __sanitizer_syscall_pre_impl_msgctl@Base 14 ++ __sanitizer_syscall_pre_impl_msgget@Base 14 ++ __sanitizer_syscall_pre_impl_msgrcv@Base 14 ++ __sanitizer_syscall_pre_impl_msgsnd@Base 14 ++ __sanitizer_syscall_pre_impl_msync@Base 14 ++ __sanitizer_syscall_pre_impl_munlock@Base 14 ++ __sanitizer_syscall_pre_impl_munlockall@Base 14 ++ __sanitizer_syscall_pre_impl_munmap@Base 14 ++ __sanitizer_syscall_pre_impl_name_to_handle_at@Base 14 ++ __sanitizer_syscall_pre_impl_nanosleep@Base 14 ++ __sanitizer_syscall_pre_impl_newfstat@Base 14 ++ __sanitizer_syscall_pre_impl_newfstatat@Base 14 ++ __sanitizer_syscall_pre_impl_newlstat@Base 14 ++ __sanitizer_syscall_pre_impl_newstat@Base 14 ++ __sanitizer_syscall_pre_impl_newuname@Base 14 ++ __sanitizer_syscall_pre_impl_ni_syscall@Base 14 ++ __sanitizer_syscall_pre_impl_nice@Base 14 ++ __sanitizer_syscall_pre_impl_old_getrlimit@Base 14 ++ __sanitizer_syscall_pre_impl_old_mmap@Base 14 ++ __sanitizer_syscall_pre_impl_old_readdir@Base 14 ++ __sanitizer_syscall_pre_impl_old_select@Base 14 ++ __sanitizer_syscall_pre_impl_oldumount@Base 14 ++ __sanitizer_syscall_pre_impl_olduname@Base 14 ++ __sanitizer_syscall_pre_impl_open@Base 14 ++ __sanitizer_syscall_pre_impl_open_by_handle_at@Base 14 ++ __sanitizer_syscall_pre_impl_openat@Base 14 ++ __sanitizer_syscall_pre_impl_pause@Base 14 ++ __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 14 ++ __sanitizer_syscall_pre_impl_pciconfig_read@Base 14 ++ __sanitizer_syscall_pre_impl_pciconfig_write@Base 14 ++ __sanitizer_syscall_pre_impl_perf_event_open@Base 14 ++ __sanitizer_syscall_pre_impl_personality@Base 14 ++ __sanitizer_syscall_pre_impl_pipe2@Base 14 ++ __sanitizer_syscall_pre_impl_pipe@Base 14 ++ __sanitizer_syscall_pre_impl_pivot_root@Base 14 ++ __sanitizer_syscall_pre_impl_poll@Base 14 ++ __sanitizer_syscall_pre_impl_ppoll@Base 14 ++ __sanitizer_syscall_pre_impl_pread64@Base 14 ++ __sanitizer_syscall_pre_impl_preadv@Base 14 ++ __sanitizer_syscall_pre_impl_prlimit64@Base 14 ++ __sanitizer_syscall_pre_impl_process_vm_readv@Base 14 ++ __sanitizer_syscall_pre_impl_process_vm_writev@Base 14 ++ __sanitizer_syscall_pre_impl_pselect6@Base 14 ++ __sanitizer_syscall_pre_impl_ptrace@Base 14 ++ __sanitizer_syscall_pre_impl_pwrite64@Base 14 ++ __sanitizer_syscall_pre_impl_pwritev@Base 14 ++ __sanitizer_syscall_pre_impl_quotactl@Base 14 ++ __sanitizer_syscall_pre_impl_read@Base 14 ++ __sanitizer_syscall_pre_impl_readlink@Base 14 ++ __sanitizer_syscall_pre_impl_readlinkat@Base 14 ++ __sanitizer_syscall_pre_impl_readv@Base 14 ++ __sanitizer_syscall_pre_impl_reboot@Base 14 ++ __sanitizer_syscall_pre_impl_recv@Base 14 ++ __sanitizer_syscall_pre_impl_recvfrom@Base 14 ++ __sanitizer_syscall_pre_impl_recvmmsg@Base 14 ++ __sanitizer_syscall_pre_impl_recvmsg@Base 14 ++ __sanitizer_syscall_pre_impl_remap_file_pages@Base 14 ++ __sanitizer_syscall_pre_impl_removexattr@Base 14 ++ __sanitizer_syscall_pre_impl_rename@Base 14 ++ __sanitizer_syscall_pre_impl_renameat@Base 14 ++ __sanitizer_syscall_pre_impl_request_key@Base 14 ++ __sanitizer_syscall_pre_impl_restart_syscall@Base 14 ++ __sanitizer_syscall_pre_impl_rmdir@Base 14 ++ __sanitizer_syscall_pre_impl_rt_sigaction@Base 14 ++ __sanitizer_syscall_pre_impl_rt_sigpending@Base 14 ++ __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 14 ++ __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 14 ++ __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 14 ++ __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 14 ++ __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 14 ++ __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 14 ++ __sanitizer_syscall_pre_impl_sched_getaffinity@Base 14 ++ __sanitizer_syscall_pre_impl_sched_getparam@Base 14 ++ __sanitizer_syscall_pre_impl_sched_getscheduler@Base 14 ++ __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 14 ++ __sanitizer_syscall_pre_impl_sched_setaffinity@Base 14 ++ __sanitizer_syscall_pre_impl_sched_setparam@Base 14 ++ __sanitizer_syscall_pre_impl_sched_setscheduler@Base 14 ++ __sanitizer_syscall_pre_impl_sched_yield@Base 14 ++ __sanitizer_syscall_pre_impl_select@Base 14 ++ __sanitizer_syscall_pre_impl_semctl@Base 14 ++ __sanitizer_syscall_pre_impl_semget@Base 14 ++ __sanitizer_syscall_pre_impl_semop@Base 14 ++ __sanitizer_syscall_pre_impl_semtimedop@Base 14 ++ __sanitizer_syscall_pre_impl_send@Base 14 ++ __sanitizer_syscall_pre_impl_sendfile64@Base 14 ++ __sanitizer_syscall_pre_impl_sendfile@Base 14 ++ __sanitizer_syscall_pre_impl_sendmmsg@Base 14 ++ __sanitizer_syscall_pre_impl_sendmsg@Base 14 ++ __sanitizer_syscall_pre_impl_sendto@Base 14 ++ __sanitizer_syscall_pre_impl_set_mempolicy@Base 14 ++ __sanitizer_syscall_pre_impl_set_robust_list@Base 14 ++ __sanitizer_syscall_pre_impl_set_tid_address@Base 14 ++ __sanitizer_syscall_pre_impl_setdomainname@Base 14 ++ __sanitizer_syscall_pre_impl_setfsgid@Base 14 ++ __sanitizer_syscall_pre_impl_setfsuid@Base 14 ++ __sanitizer_syscall_pre_impl_setgid@Base 14 ++ __sanitizer_syscall_pre_impl_setgroups@Base 14 ++ __sanitizer_syscall_pre_impl_sethostname@Base 14 ++ __sanitizer_syscall_pre_impl_setitimer@Base 14 ++ __sanitizer_syscall_pre_impl_setns@Base 14 ++ __sanitizer_syscall_pre_impl_setpgid@Base 14 ++ __sanitizer_syscall_pre_impl_setpriority@Base 14 ++ __sanitizer_syscall_pre_impl_setregid@Base 14 ++ __sanitizer_syscall_pre_impl_setresgid@Base 14 ++ __sanitizer_syscall_pre_impl_setresuid@Base 14 ++ __sanitizer_syscall_pre_impl_setreuid@Base 14 ++ __sanitizer_syscall_pre_impl_setrlimit@Base 14 ++ __sanitizer_syscall_pre_impl_setsid@Base 14 ++ __sanitizer_syscall_pre_impl_setsockopt@Base 14 ++ __sanitizer_syscall_pre_impl_settimeofday@Base 14 ++ __sanitizer_syscall_pre_impl_setuid@Base 14 ++ __sanitizer_syscall_pre_impl_setxattr@Base 14 ++ __sanitizer_syscall_pre_impl_sgetmask@Base 14 ++ __sanitizer_syscall_pre_impl_shmat@Base 14 ++ __sanitizer_syscall_pre_impl_shmctl@Base 14 ++ __sanitizer_syscall_pre_impl_shmdt@Base 14 ++ __sanitizer_syscall_pre_impl_shmget@Base 14 ++ __sanitizer_syscall_pre_impl_shutdown@Base 14 ++ __sanitizer_syscall_pre_impl_sigaction@Base 14 ++ __sanitizer_syscall_pre_impl_sigaltstack@Base 14 ++ __sanitizer_syscall_pre_impl_signal@Base 14 ++ __sanitizer_syscall_pre_impl_signalfd4@Base 14 ++ __sanitizer_syscall_pre_impl_signalfd@Base 14 ++ __sanitizer_syscall_pre_impl_sigpending@Base 14 ++ __sanitizer_syscall_pre_impl_sigprocmask@Base 14 ++ __sanitizer_syscall_pre_impl_socket@Base 14 ++ __sanitizer_syscall_pre_impl_socketcall@Base 14 ++ __sanitizer_syscall_pre_impl_socketpair@Base 14 ++ __sanitizer_syscall_pre_impl_splice@Base 14 ++ __sanitizer_syscall_pre_impl_spu_create@Base 14 ++ __sanitizer_syscall_pre_impl_spu_run@Base 14 ++ __sanitizer_syscall_pre_impl_ssetmask@Base 14 ++ __sanitizer_syscall_pre_impl_stat64@Base 14 ++ __sanitizer_syscall_pre_impl_stat@Base 14 ++ __sanitizer_syscall_pre_impl_statfs64@Base 14 ++ __sanitizer_syscall_pre_impl_statfs@Base 14 ++ __sanitizer_syscall_pre_impl_stime@Base 14 ++ __sanitizer_syscall_pre_impl_swapoff@Base 14 ++ __sanitizer_syscall_pre_impl_swapon@Base 14 ++ __sanitizer_syscall_pre_impl_symlink@Base 14 ++ __sanitizer_syscall_pre_impl_symlinkat@Base 14 ++ __sanitizer_syscall_pre_impl_sync@Base 14 ++ __sanitizer_syscall_pre_impl_syncfs@Base 14 ++ __sanitizer_syscall_pre_impl_sysctl@Base 14 ++ __sanitizer_syscall_pre_impl_sysfs@Base 14 ++ __sanitizer_syscall_pre_impl_sysinfo@Base 14 ++ __sanitizer_syscall_pre_impl_syslog@Base 14 ++ __sanitizer_syscall_pre_impl_tee@Base 14 ++ __sanitizer_syscall_pre_impl_tgkill@Base 14 ++ __sanitizer_syscall_pre_impl_time@Base 14 ++ __sanitizer_syscall_pre_impl_timer_create@Base 14 ++ __sanitizer_syscall_pre_impl_timer_delete@Base 14 ++ __sanitizer_syscall_pre_impl_timer_getoverrun@Base 14 ++ __sanitizer_syscall_pre_impl_timer_gettime@Base 14 ++ __sanitizer_syscall_pre_impl_timer_settime@Base 14 ++ __sanitizer_syscall_pre_impl_timerfd_create@Base 14 ++ __sanitizer_syscall_pre_impl_timerfd_gettime@Base 14 ++ __sanitizer_syscall_pre_impl_timerfd_settime@Base 14 ++ __sanitizer_syscall_pre_impl_times@Base 14 ++ __sanitizer_syscall_pre_impl_tkill@Base 14 ++ __sanitizer_syscall_pre_impl_truncate@Base 14 ++ __sanitizer_syscall_pre_impl_umask@Base 14 ++ __sanitizer_syscall_pre_impl_umount@Base 14 ++ __sanitizer_syscall_pre_impl_uname@Base 14 ++ __sanitizer_syscall_pre_impl_unlink@Base 14 ++ __sanitizer_syscall_pre_impl_unlinkat@Base 14 ++ __sanitizer_syscall_pre_impl_unshare@Base 14 ++ __sanitizer_syscall_pre_impl_uselib@Base 14 ++ __sanitizer_syscall_pre_impl_ustat@Base 14 ++ __sanitizer_syscall_pre_impl_utime@Base 14 ++ __sanitizer_syscall_pre_impl_utimensat@Base 14 ++ __sanitizer_syscall_pre_impl_utimes@Base 14 ++ __sanitizer_syscall_pre_impl_vfork@Base 14 ++ __sanitizer_syscall_pre_impl_vhangup@Base 14 ++ __sanitizer_syscall_pre_impl_vmsplice@Base 14 ++ __sanitizer_syscall_pre_impl_wait4@Base 14 ++ __sanitizer_syscall_pre_impl_waitid@Base 14 ++ __sanitizer_syscall_pre_impl_waitpid@Base 14 ++ __sanitizer_syscall_pre_impl_write@Base 14 ++ __sanitizer_syscall_pre_impl_writev@Base 14 ++ __sanitizer_unaligned_load16@Base 13 ++ __sanitizer_unaligned_load32@Base 13 ++ __sanitizer_unaligned_load64@Base 13 ++ __sanitizer_unaligned_store16@Base 13 ++ __sanitizer_unaligned_store32@Base 13 ++ __sanitizer_unaligned_store64@Base 13 ++ __sanitizer_valloc@Base 13 ++ __sigsetjmp@Base 13 ++ _setjmp@Base 13 ++ aligned_alloc@Base 13 ++ bcmp@Base 14 ++ calloc@Base 13 ++ cfree@Base 13 ++ free@Base 13 ++ longjmp@Base 13 ++ mallinfo@Base 13 ++ malloc@Base 13 ++ malloc_stats@Base 13 ++ malloc_usable_size@Base 13 ++ mallopt@Base 13 ++ memalign@Base 13 ++ memcmp@Base 14 ++ memcpy@Base 14 ++ memmove@Base 14 ++ memset@Base 14 ++ mmap@Base 14 ++ mprotect@Base 14 ++ munmap@Base 14 ++ posix_memalign@Base 13 ++ preadv2@Base 15 ++ pthread_create@Base 13 ++ pthread_detach@Base 14 ++ pthread_exit@Base 14 ++ pthread_join@Base 13 ++ pthread_timedjoin_np@Base 14 ++ pthread_tryjoin_np@Base 14 ++ pvalloc@Base 13 ++ pwritev2@Base 15 ++ realloc@Base 13 ++ reallocarray@Base 13 ++ siglongjmp@Base 13 ++ valloc@Base 13 ++ vfork@Base 13 diff --cc debian/libitm.symbols index 0000000,0000000..c97c8bc new file mode 100644 --- /dev/null +++ b/debian/libitm.symbols @@@ -1,0 -1,0 +1,3 @@@ ++libitm.so.1 #PACKAGE# #MINVER# ++ (symver)LIBITM_1.0 4.7 ++ (symver)LIBITM_1.1 6 diff --cc debian/liblsan0.symbols index 0000000,0000000..992a451 new file mode 100644 --- /dev/null +++ b/debian/liblsan0.symbols @@@ -1,0 -1,0 +1,252 @@@ ++# SymbolsHelper-Confirmed: 15 amd64 arm64 loong64 ppc64 ppc64el riscv64 ++liblsan.so.0 liblsan0 #MINVER# ++ _ZdaPv@Base 4.9 ++ _ZdaPvRKSt9nothrow_t@Base 4.9 ++ _ZdaPvSt11align_val_t@Base 8 ++ _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 8 ++ _ZdaPvm@Base 8 ++ _ZdaPvmSt11align_val_t@Base 8 ++ _ZdlPv@Base 4.9 ++ _ZdlPvRKSt9nothrow_t@Base 4.9 ++ _ZdlPvSt11align_val_t@Base 8 ++ _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 8 ++ _ZdlPvm@Base 8 ++ _ZdlPvmSt11align_val_t@Base 8 ++ _Znam@Base 4.9 ++ _ZnamRKSt9nothrow_t@Base 4.9 ++ _ZnamSt11align_val_t@Base 8 ++ _ZnamSt11align_val_tRKSt9nothrow_t@Base 8 ++ _Znwm@Base 4.9 ++ _ZnwmRKSt9nothrow_t@Base 4.9 ++ _ZnwmSt11align_val_t@Base 8 ++ _ZnwmSt11align_val_tRKSt9nothrow_t@Base 8 ++ (arch=!ppc64 !ppc64el)___interceptor___libc_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor__exit@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_aligned_alloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_calloc@Base 15 ++ (arch=!ppc64 !ppc64el !riscv64)___interceptor_cfree@Base 14 ++ (arch=!ppc64 !ppc64el)___interceptor_free@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mallinfo@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_malloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_malloc_usable_size@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mallopt@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mcheck@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mcheck_pedantic@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mprobe@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_posix_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_create@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_detach@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_exit@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_join@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_timedjoin_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_tryjoin_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pvalloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_realloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_reallocarray@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigaction@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_signal@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strerror@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_valloc@Base 15 ++ __asan_backtrace_alloc@Base 4.9 ++ __asan_backtrace_close@Base 4.9 ++ __asan_backtrace_create_state@Base 4.9 ++ __asan_backtrace_dwarf_add@Base 4.9 ++ __asan_backtrace_free@Base 4.9 ++ __asan_backtrace_get_view@Base 4.9 ++ __asan_backtrace_initialize@Base 4.9 ++ __asan_backtrace_open@Base 4.9 ++ __asan_backtrace_pcinfo@Base 4.9 ++ __asan_backtrace_qsort@Base 4.9 ++ __asan_backtrace_release_view@Base 4.9 ++ __asan_backtrace_syminfo@Base 4.9 ++ __asan_backtrace_syminfo_to_full_callback@Base 11 ++ __asan_backtrace_syminfo_to_full_error_callback@Base 11 ++ __asan_backtrace_uncompress_lzma@Base 11 ++ __asan_backtrace_uncompress_zdebug@Base 8 ++ __asan_backtrace_uncompress_zstd@Base 13 ++ __asan_backtrace_vector_finish@Base 4.9 ++ __asan_backtrace_vector_grow@Base 4.9 ++ __asan_backtrace_vector_release@Base 4.9 ++ __asan_cplus_demangle_builtin_types@Base 4.9 ++ __asan_cplus_demangle_fill_ctor@Base 4.9 ++ __asan_cplus_demangle_fill_dtor@Base 4.9 ++ __asan_cplus_demangle_fill_extended_operator@Base 4.9 ++ __asan_cplus_demangle_fill_name@Base 4.9 ++ __asan_cplus_demangle_init_info@Base 4.9 ++ __asan_cplus_demangle_mangled_name@Base 4.9 ++ __asan_cplus_demangle_operators@Base 4.9 ++ __asan_cplus_demangle_print@Base 4.9 ++ __asan_cplus_demangle_print_callback@Base 4.9 ++ __asan_cplus_demangle_type@Base 4.9 ++ __asan_cplus_demangle_v3@Base 4.9 ++ __asan_cplus_demangle_v3_callback@Base 4.9 ++ __asan_internal_memcmp@Base 4.9 ++ __asan_internal_memcpy@Base 4.9 ++ __asan_internal_memset@Base 4.9 ++ __asan_internal_strcmp@Base 4.9 ++ __asan_internal_strlen@Base 4.9 ++ __asan_internal_strncmp@Base 4.9 ++ __asan_internal_strnlen@Base 4.9 ++ __asan_is_gnu_v3_mangled_ctor@Base 4.9 ++ __asan_is_gnu_v3_mangled_dtor@Base 4.9 ++ __asan_java_demangle_v3@Base 4.9 ++ __asan_java_demangle_v3_callback@Base 4.9 ++ __interceptor___libc_memalign@Base 4.9 ++ __interceptor__exit@Base 8 ++ __interceptor_aligned_alloc@Base 5 ++ __interceptor_calloc@Base 4.9 ++ (arch=!riscv64)__interceptor_cfree@Base 4.9 ++ __interceptor_free@Base 4.9 ++ __interceptor_mallinfo@Base 4.9 ++ __interceptor_malloc@Base 4.9 ++ __interceptor_malloc_usable_size@Base 4.9 ++ __interceptor_mallopt@Base 4.9 ++ __interceptor_mcheck@Base 8 ++ __interceptor_mcheck_pedantic@Base 8 ++ __interceptor_memalign@Base 4.9 ++ __interceptor_mprobe@Base 8 ++ __interceptor_posix_memalign@Base 4.9 ++ __interceptor_pthread_create@Base 4.9 ++ __interceptor_pthread_detach@Base 14 ++ __interceptor_pthread_exit@Base 14 ++ __interceptor_pthread_join@Base 4.9 ++ __interceptor_pthread_timedjoin_np@Base 14 ++ __interceptor_pthread_tryjoin_np@Base 14 ++ __interceptor_pvalloc@Base 4.9 ++ __interceptor_realloc@Base 4.9 ++ __interceptor_reallocarray@Base 10 ++ __interceptor_sigaction@Base 8 ++ __interceptor_signal@Base 8 ++ __interceptor_strerror@Base 10 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___libc_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline__exit@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_aligned_alloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_calloc@Base 15 ++ (arch=!ppc64 !ppc64el !riscv64)__interceptor_trampoline_cfree@Base 14 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_free@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mallinfo@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc_usable_size@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mallopt@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck_pedantic@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprobe@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_create@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_detach@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_exit@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_join@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_timedjoin_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_tryjoin_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pvalloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_realloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_reallocarray@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaction@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_signal@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_valloc@Base 15 ++ __interceptor_valloc@Base 4.9 ++ __libc_memalign@Base 4.9 ++ __lsan_default_options@Base 11 ++ __lsan_disable@Base 4.9 ++ __lsan_do_leak_check@Base 4.9 ++ __lsan_do_recoverable_leak_check@Base 6 ++ __lsan_enable@Base 4.9 ++ __lsan_ignore_object@Base 4.9 ++ __lsan_init@Base 8 ++ __lsan_register_root_region@Base 5 ++ __lsan_unregister_root_region@Base 5 ++ __sancov_default_options@Base 8 ++ __sancov_lowest_stack@Base 8 ++ __sanitizer_acquire_crash_state@Base 9 ++ __sanitizer_cov_8bit_counters_init@Base 8 ++ __sanitizer_cov_bool_flag_init@Base 11 ++ __sanitizer_cov_dump@Base 4.9 ++ __sanitizer_cov_load16@Base 13 ++ __sanitizer_cov_load1@Base 13 ++ __sanitizer_cov_load2@Base 13 ++ __sanitizer_cov_load4@Base 13 ++ __sanitizer_cov_load8@Base 13 ++ __sanitizer_cov_pcs_init@Base 8 ++ __sanitizer_cov_reset@Base 8 ++ __sanitizer_cov_store16@Base 13 ++ __sanitizer_cov_store1@Base 13 ++ __sanitizer_cov_store2@Base 13 ++ __sanitizer_cov_store4@Base 13 ++ __sanitizer_cov_store8@Base 13 ++ __sanitizer_cov_trace_cmp1@Base 7 ++ __sanitizer_cov_trace_cmp2@Base 7 ++ __sanitizer_cov_trace_cmp4@Base 7 ++ __sanitizer_cov_trace_cmp8@Base 7 ++ __sanitizer_cov_trace_cmp@Base 6 ++ __sanitizer_cov_trace_const_cmp1@Base 8 ++ __sanitizer_cov_trace_const_cmp2@Base 8 ++ __sanitizer_cov_trace_const_cmp4@Base 8 ++ __sanitizer_cov_trace_const_cmp8@Base 8 ++ __sanitizer_cov_trace_div4@Base 7 ++ __sanitizer_cov_trace_div8@Base 7 ++ __sanitizer_cov_trace_gep@Base 7 ++ __sanitizer_cov_trace_pc_guard@Base 7 ++ __sanitizer_cov_trace_pc_guard_init@Base 7 ++ __sanitizer_cov_trace_pc_indir@Base 7 ++ __sanitizer_cov_trace_switch@Base 6 ++ __sanitizer_dump_coverage@Base 8 ++ __sanitizer_dump_trace_pc_guard_coverage@Base 8 ++ __sanitizer_free_hook@Base 13 ++ __sanitizer_get_allocated_begin@Base 14 ++ __sanitizer_get_allocated_size@Base 5 ++ __sanitizer_get_allocated_size_fast@Base 14 ++ __sanitizer_get_current_allocated_bytes@Base 5 ++ __sanitizer_get_dtls_size@Base 15 ++ __sanitizer_get_estimated_allocated_size@Base 5 ++ __sanitizer_get_free_bytes@Base 5 ++ __sanitizer_get_heap_size@Base 5 ++ __sanitizer_get_module_and_offset_for_pc@Base 8 ++ __sanitizer_get_ownership@Base 5 ++ __sanitizer_get_report_path@Base 12 ++ __sanitizer_get_unmapped_bytes@Base 5 ++ __sanitizer_ignore_free_hook@Base 15 ++ __sanitizer_install_malloc_and_free_hooks@Base 7 ++ __sanitizer_internal_memcpy@Base 14 ++ __sanitizer_internal_memmove@Base 14 ++ __sanitizer_internal_memset@Base 14 ++ __sanitizer_malloc_hook@Base 13 ++ __sanitizer_on_print@Base 10 ++ __sanitizer_print_stack_trace@Base 5 ++ __sanitizer_purge_allocator@Base 14 ++ __sanitizer_report_error_summary@Base 4.9 ++ __sanitizer_sandbox_on_notify@Base 4.9 ++ __sanitizer_set_death_callback@Base 6 ++ __sanitizer_set_report_fd@Base 7 ++ __sanitizer_set_report_path@Base 4.9 ++ __sanitizer_symbolize_global@Base 7 ++ __sanitizer_symbolize_pc@Base 7 ++ _exit@Base 8 ++ aligned_alloc@Base 5 ++ calloc@Base 4.9 ++ (arch=!riscv64)cfree@Base 4.9 ++ free@Base 4.9 ++ mallinfo@Base 4.9 ++ malloc@Base 4.9 ++ malloc_usable_size@Base 4.9 ++ mallopt@Base 4.9 ++ mcheck@Base 8 ++ mcheck_pedantic@Base 8 ++ memalign@Base 4.9 ++ mprobe@Base 8 ++ posix_memalign@Base 4.9 ++ pthread_create@Base 4.9 ++ pthread_detach@Base 14 ++ pthread_exit@Base 14 ++ pthread_join@Base 4.9 ++ pthread_timedjoin_np@Base 14 ++ pthread_tryjoin_np@Base 14 ++ pvalloc@Base 4.9 ++ realloc@Base 4.9 ++ reallocarray@Base 10 ++ sigaction@Base 8 ++ signal@Base 8 ++ strerror@Base 10 ++ valloc@Base 4.9 diff --cc debian/libobjc.symbols index 0000000,0000000..f107f68 new file mode 100644 --- /dev/null +++ b/debian/libobjc.symbols @@@ -1,0 -1,0 +1,11 @@@ ++libobjc.so.4 #PACKAGE# #MINVER# ++#include "libobjc.symbols.common" ++ __gnu_objc_personality_v0@Base 4.2.1 ++ (arch=armel armhf)__objc_exception_class@Base 4.3.0 ++libobjc_gc.so.4 #PACKAGE# #MINVER# ++#include "libobjc.symbols.common" ++(optional)#include "libobjc.symbols.gc" ++ __gnu_objc_personality_v0@Base 4.2.1 ++ (arch=armel armhf)__objc_exception_class@Base 4.3.0 ++ (arch=sparc64)_etext@Base 15 ++ (arch=riscv64)end@Base 15 diff --cc debian/libobjc.symbols.common index 0000000,0000000..2ec5ecc new file mode 100644 --- /dev/null +++ b/debian/libobjc.symbols.common @@@ -1,0 -1,0 +1,205 @@@ ++ __objc_accessors_init@Base 4.6 ++ __objc_add_class_to_hash@Base 4.2.1 ++ __objc_class_links_resolved@Base 4.2.1 ++ __objc_class_name_NXConstantString@Base 4.2.1 ++ __objc_class_name_Object@Base 4.2.1 ++ __objc_class_name_Protocol@Base 4.2.1 ++ __objc_dangling_categories@Base 4.2.1 ++ __objc_exec_class@Base 4.2.1 ++ __objc_force_linking@Base 4.2.1 ++ __objc_generate_gc_type_description@Base 4.2.1 ++ __objc_get_forward_imp@Base 4.2.1 ++ __objc_init_class@Base 4.6 ++ __objc_init_class_tables@Base 4.2.1 ++ __objc_init_dispatch_tables@Base 4.2.1 ++ __objc_init_selector_tables@Base 4.2.1 ++ __objc_init_thread_system@Base 4.2.1 ++ __objc_install_premature_dtable@Base 4.2.1 ++ __objc_is_multi_threaded@Base 4.2.1 ++ __objc_linking@Base 4.2.1 ++ __objc_msg_forward@Base 4.2.1 ++ __objc_msg_forward2@Base 4.3 ++ __objc_print_dtable_stats@Base 4.2.1 ++ __objc_protocols_add_protocol@Base 4.6 ++ __objc_protocols_init@Base 4.6 ++ __objc_register_instance_methods_to_class@Base 4.2.1 ++ __objc_register_selectors_from_class@Base 4.2.1 ++ __objc_register_selectors_from_description_list@Base 4.6 ++ __objc_register_selectors_from_list@Base 4.2.1 ++ __objc_register_selectors_from_module@Base 4.6 ++ __objc_resolve_class_links@Base 4.2.1 ++ __objc_responds_to@Base 4.2.1 ++ __objc_runtime_mutex@Base 4.2.1 ++ __objc_runtime_threads_alive@Base 4.2.1 ++ __objc_selector_max_index@Base 4.2.1 ++ __objc_sparse2_id@Base 4.2.1 ++ __objc_sync_init@Base 4.6 ++ __objc_thread_exit_status@Base 4.2.1 ++ __objc_uninstalled_dtable@Base 4.2.1 ++ __objc_update_classes_with_methods@Base 4.6 ++ __objc_update_dispatch_table_for_class@Base 4.2.1 ++ _objc_abort@Base 4.6 ++ _objc_became_multi_threaded@Base 4.2.1 ++ _objc_load_callback@Base 4.2.1 ++ _objc_lookup_class@Base 4.6 ++ class_addIvar@Base 4.6 ++ class_addMethod@Base 4.6 ++ class_addProtocol@Base 4.6 ++ class_add_method_list@Base 4.2.1 ++ class_conformsToProtocol@Base 4.6 ++ class_copyIvarList@Base 4.6 ++ class_copyMethodList@Base 4.6 ++ class_copyPropertyList@Base 4.6 ++ class_copyProtocolList@Base 4.6 ++ class_createInstance@Base 4.6 ++ class_getClassMethod@Base 4.6 ++ class_getClassVariable@Base 4.6 ++ class_getInstanceMethod@Base 4.6 ++ class_getInstanceSize@Base 4.6 ++ class_getInstanceVariable@Base 4.6 ++ class_getIvarLayout@Base 4.6 ++ class_getMethodImplementation@Base 4.6 ++ class_getName@Base 4.6 ++ class_getProperty@Base 4.6 ++ class_getSuperclass@Base 4.6 ++ class_getVersion@Base 4.6 ++ class_getWeakIvarLayout@Base 4.6 ++ class_isMetaClass@Base 4.6 ++ class_ivar_set_gcinvisible@Base 4.2.1 ++ class_replaceMethod@Base 4.6 ++ class_respondsToSelector@Base 4.6 ++ class_setIvarLayout@Base 4.6 ++ class_setVersion@Base 4.6 ++ class_setWeakIvarLayout@Base 4.6 ++ get_imp@Base 4.2.1 ++ idxsize@Base 4.2.1 ++ ivar_getName@Base 4.6 ++ ivar_getOffset@Base 4.6 ++ ivar_getTypeEncoding@Base 4.6 ++ method_copyArgumentType@Base 4.6 ++ method_copyReturnType@Base 4.6 ++ method_exchangeImplementations@Base 4.6 ++ method_getArgumentType@Base 4.6 ++ method_getDescription@Base 4.6 ++ method_getImplementation@Base 4.6 ++ method_getName@Base 4.6 ++ method_getNumberOfArguments@Base 4.6 ++ method_getReturnType@Base 4.6 ++ method_getTypeEncoding@Base 4.6 ++ method_get_imp@Base 4.6 ++ method_setImplementation@Base 4.6 ++ narrays@Base 4.2.1 ++ nbuckets@Base 4.2.1 ++ nil_method@Base 4.2.1 ++ nindices@Base 4.2.1 ++ objc_aligned_size@Base 4.2.1 ++ objc_alignof_type@Base 4.2.1 ++ objc_allocateClassPair@Base 4.6 ++ objc_atomic_malloc@Base 4.2.1 ++ objc_calloc@Base 4.2.1 ++ objc_condition_allocate@Base 4.2.1 ++ objc_condition_broadcast@Base 4.2.1 ++ objc_condition_deallocate@Base 4.2.1 ++ objc_condition_signal@Base 4.2.1 ++ objc_condition_wait@Base 4.2.1 ++ objc_copyProtocolList@Base 4.6 ++ objc_copyStruct@Base 4.6 ++ objc_disposeClassPair@Base 4.6 ++ objc_enumerationMutation@Base 4.6 ++ objc_exception_throw@Base 4.2.1 ++ objc_free@Base 4.2.1 ++ objc_getClass@Base 4.6 ++ objc_getClassList@Base 4.6 ++ objc_getMetaClass@Base 4.6 ++ objc_getProperty@Base 4.6 ++ objc_getPropertyStruct@Base 4.6 ++ objc_getProtocol@Base 4.6 ++ objc_getRequiredClass@Base 4.6 ++ objc_get_class@Base 4.2.1 ++ objc_get_meta_class@Base 4.2.1 ++ objc_get_type_qualifiers@Base 4.2.1 ++ objc_hash_add@Base 4.2.1 ++ objc_hash_delete@Base 4.2.1 ++ objc_hash_is_key_in_hash@Base 4.2.1 ++ objc_hash_new@Base 4.2.1 ++ objc_hash_next@Base 4.2.1 ++ objc_hash_remove@Base 4.2.1 ++ objc_hash_value_for_key@Base 4.2.1 ++ objc_layout_finish_structure@Base 4.2.1 ++ objc_layout_structure@Base 4.2.1 ++ objc_layout_structure_get_info@Base 4.2.1 ++ objc_layout_structure_next_member@Base 4.2.1 ++ objc_lookUpClass@Base 4.6 ++ objc_lookup_class@Base 4.2.1 ++ objc_malloc@Base 4.2.1 ++ objc_msg_lookup@Base 4.2.1 ++ objc_msg_lookup_super@Base 4.2.1 ++ objc_mutex_allocate@Base 4.2.1 ++ objc_mutex_deallocate@Base 4.2.1 ++ objc_mutex_lock@Base 4.2.1 ++ objc_mutex_trylock@Base 4.2.1 ++ objc_mutex_unlock@Base 4.2.1 ++ objc_promoted_size@Base 4.2.1 ++ objc_realloc@Base 4.2.1 ++ objc_registerClassPair@Base 4.6 ++ objc_setEnumerationMutationHandler@Base 4.6 ++ objc_setExceptionMatcher@Base 4.6 ++ objc_setGetUnknownClassHandler@Base 4.6 ++ objc_setProperty@Base 4.6 ++ objc_setPropertyStruct@Base 4.6 ++ objc_setUncaughtExceptionHandler@Base 4.6 ++ objc_set_thread_callback@Base 4.2.1 ++ objc_sizeof_type@Base 4.2.1 ++ objc_skip_argspec@Base 4.2.1 ++ objc_skip_offset@Base 4.2.1 ++ objc_skip_type_qualifiers@Base 4.2.1 ++ objc_skip_typespec@Base 4.2.1 ++ objc_sync_enter@Base 4.6 ++ objc_sync_exit@Base 4.6 ++ objc_thread_add@Base 4.2.1 ++ objc_thread_detach@Base 4.2.1 ++ objc_thread_exit@Base 4.2.1 ++ objc_thread_get_data@Base 4.2.1 ++ objc_thread_get_priority@Base 4.2.1 ++ objc_thread_id@Base 4.2.1 ++ objc_thread_remove@Base 4.2.1 ++ objc_thread_set_data@Base 4.2.1 ++ objc_thread_set_priority@Base 4.2.1 ++ objc_thread_yield@Base 4.2.1 ++ object_copy@Base 4.2.1 ++ object_dispose@Base 4.2.1 ++ object_getClassName@Base 4.6 ++ object_getIndexedIvars@Base 4.6 ++ object_getInstanceVariable@Base 4.6 ++ object_getIvar@Base 4.6 ++ object_setClass@Base 4.6 ++ object_setInstanceVariable@Base 4.6 ++ object_setIvar@Base 4.6 ++ property_getAttributes@Base 4.6 ++ property_getName@Base 4.6 ++ protocol_conformsToProtocol@Base 4.6 ++ protocol_copyMethodDescriptionList@Base 4.6 ++ protocol_copyPropertyList@Base 4.6 ++ protocol_copyProtocolList@Base 4.6 ++ protocol_getMethodDescription@Base 4.6 ++ protocol_getName@Base 4.6 ++ protocol_getProperty@Base 4.6 ++ protocol_isEqual@Base 4.6 ++ sarray_at_put@Base 4.2.1 ++ sarray_at_put_safe@Base 4.2.1 ++ sarray_free@Base 4.2.1 ++ sarray_lazy_copy@Base 4.2.1 ++ sarray_new@Base 4.2.1 ++ sarray_realloc@Base 4.2.1 ++ sarray_remove_garbage@Base 4.2.1 ++ search_for_method_in_list@Base 4.2.1 ++ sel_copyTypedSelectorList@Base 4.6 ++ sel_getName@Base 4.6 ++ sel_getTypeEncoding@Base 4.6 ++ sel_getTypedSelector@Base 4.6 ++ sel_getUid@Base 4.6 ++ sel_get_any_uid@Base 4.2.1 ++ sel_isEqual@Base 4.6 ++ sel_is_mapped@Base 4.2.1 ++ sel_registerName@Base 4.6 ++ sel_registerTypedName@Base 4.6 diff --cc debian/libobjc.symbols.gc index 0000000,0000000..87681af new file mode 100644 --- /dev/null +++ b/debian/libobjc.symbols.gc @@@ -1,0 -1,0 +1,522 @@@ ++ async_set_pht_entry_from_index@Base 4.2.1 ++ free_list_index_of@Base 4.2.1 ++ suspend_self@Base 4.2.1 ++ GC_abort@Base 6 ++ GC_acquire_mark_lock@Base 6 ++ GC_add_ext_descriptor@Base 6 ++ GC_add_leaked@Base 6 ++ GC_add_map_entry@Base 6 ++ GC_add_roots@Base 6 ++ GC_add_roots_inner@Base 6 ++ GC_add_smashed@Base 6 ++ GC_add_to_black_list_normal@Base 6 ++ GC_add_to_black_list_stack@Base 6 ++ GC_add_to_fl@Base 6 ++ GC_add_to_heap@Base 6 ++ GC_adj_words_allocd@Base 6 ++ GC_all_bottom_indices@Base 6 ++ GC_all_bottom_indices_end@Base 6 ++ GC_all_interior_pointers@Base 6 ++ GC_alloc_large@Base 6 ++ GC_alloc_large_and_clear@Base 6 ++ GC_alloc_reclaim_list@Base 6 ++ GC_allocate_ml@Base 6 ++ GC_allochblk@Base 6 ++ GC_allochblk_nth@Base 6 ++ GC_allocobj@Base 6 ++ GC_aobjfreelist_ptr@Base 6 ++ GC_apply_to_all_blocks@Base 6 ++ GC_apply_to_maps@Base 6 ++ GC_approx_sp@Base 6 ++ GC_arobjfreelist@Base 6 ++ GC_array_kind@Base 6 ++ GC_array_mark_proc@Base 6 ++ GC_array_mark_proc_index@Base 6 ++ GC_arrays@Base 6 ++ GC_auobjfreelist_ptr@Base 6 ++ GC_avail_descr@Base 6 ++ GC_base@Base 6 ++ GC_begin_syscall@Base 6 ++ GC_bl_init@Base 6 ++ GC_black_list_spacing@Base 6 ++ GC_block_count@Base 6 ++ GC_block_empty@Base 6 ++ GC_block_nearly_full1@Base 6 ++ GC_block_nearly_full3@Base 6 ++ GC_block_nearly_full@Base 6 ++ GC_block_was_dirty@Base 6 ++ GC_bm_table@Base 6 ++ GC_brief_async_signal_safe_sleep@Base 6 ++ GC_build_fl1@Base 6 ++ GC_build_fl2@Base 6 ++ GC_build_fl4@Base 6 ++ GC_build_fl@Base 6 ++ GC_build_fl_clear2@Base 6 ++ GC_build_fl_clear3@Base 6 ++ GC_build_fl_clear4@Base 6 ++ GC_call_with_alloc_lock@Base 6 ++ GC_calloc_explicitly_typed@Base 6 ++ GC_change_stubborn@Base 6 ++ GC_check_annotated_obj@Base 6 ++ GC_check_heap@Base 6 ++ GC_check_heap_block@Base 6 ++ GC_check_heap_proc@Base 6 ++ GC_clear_a_few_frames@Base 6 ++ GC_clear_bl@Base 6 ++ GC_clear_fl_links@Base 6 ++ GC_clear_fl_marks@Base 6 ++ GC_clear_hdr_marks@Base 6 ++ GC_clear_mark_bit@Base 6 ++ GC_clear_marks@Base 6 ++ GC_clear_roots@Base 6 ++ GC_clear_stack@Base 6 ++ GC_clear_stack_inner@Base 6 ++ GC_collect_a_little@Base 6 ++ GC_collect_a_little_inner@Base 6 ++ GC_collect_or_expand@Base 6 ++ GC_collecting@Base 6 ++ GC_collection_in_progress@Base 6 ++ GC_cond_register_dynamic_libraries@Base 6 ++ GC_continue_reclaim@Base 6 ++ GC_copy_bl@Base 6 ++ GC_copyright@Base 6 ++ GC_current_warn_proc@Base 6 ++ GC_data_start@Base 6 ++ GC_debug_change_stubborn@Base 6 ++ GC_debug_end_stubborn_change@Base 6 ++ GC_debug_free@Base 6 ++ GC_debug_free_inner@Base 6 ++ GC_debug_gcj_fast_malloc@Base 6 ++ GC_debug_gcj_malloc@Base 6 ++ GC_debug_header_size@Base 6 ++ GC_debug_invoke_finalizer@Base 6 ++ GC_debug_malloc@Base 6 ++ GC_debug_malloc_atomic@Base 6 ++ GC_debug_malloc_atomic_ignore_off_page@Base 6 ++ GC_debug_malloc_atomic_uncollectable@Base 6 ++ GC_debug_malloc_ignore_off_page@Base 6 ++ GC_debug_malloc_replacement@Base 6 ++ GC_debug_malloc_stubborn@Base 6 ++ GC_debug_malloc_uncollectable@Base 6 ++ GC_debug_print_heap_obj_proc@Base 6 ++ GC_debug_realloc@Base 6 ++ GC_debug_realloc_replacement@Base 6 ++ GC_debug_register_displacement@Base 6 ++ GC_debug_register_finalizer@Base 6 ++ GC_debug_register_finalizer_ignore_self@Base 6 ++ GC_debug_register_finalizer_no_order@Base 6 ++ GC_debug_register_finalizer_unreachable@Base 6 ++ GC_debugging_started@Base 6 ++ GC_default_is_valid_displacement_print_proc@Base 6 ++ GC_default_is_visible_print_proc@Base 6 ++ GC_default_oom_fn@Base 6 ++ GC_default_print_heap_obj_proc@Base 6 ++ GC_default_push_other_roots@Base 6 ++ GC_default_same_obj_print_proc@Base 6 ++ GC_default_warn_proc@Base 6 ++ GC_deficit@Base 6 ++ GC_delete_gc_thread@Base 6 ++ GC_delete_thread@Base 6 ++ GC_descr_obj_size@Base 6 ++ GC_destroy_thread_local@Base 6 ++ GC_dirty_init@Base 6 ++ GC_dirty_maintained@Base 6 ++ GC_disable@Base 6 ++ GC_disable_signals@Base 6 ++ GC_dl_entries@Base 6 ++ GC_dlopen@Base 6 ++ GC_do_nothing@Base 6 ++ GC_dont_expand@Base 6 ++ GC_dont_gc@Base 6 ++ GC_dont_precollect@Base 6 ++ GC_double_descr@Base 6 ++ GC_dump@Base 6 ++ GC_dump_finalization@Base 6 ++ GC_dump_regions@Base 6 ++ GC_dump_regularly@Base 6 ++ GC_ed_size@Base 6 ++ GC_enable@Base 6 ++ GC_enable_incremental@Base 6 ++ GC_enable_signals@Base 6 ++ GC_end_blocking@Base 6 ++ GC_end_stubborn_change@Base 6 ++ GC_end_syscall@Base 6 ++ GC_enqueue_all_finalizers@Base 6 ++ GC_eobjfreelist@Base 6 ++ GC_err_printf@Base 6 ++ GC_err_puts@Base 6 ++ GC_err_write@Base 6 ++ GC_excl_table_entries@Base 6 ++ GC_exclude_static_roots@Base 6 ++ GC_exit_check@Base 6 ++ GC_expand_hp@Base 6 ++ GC_expand_hp_inner@Base 6 ++ GC_explicit_kind@Base 6 ++ GC_explicit_typing_initialized@Base 6 ++ GC_ext_descriptors@Base 6 ++ GC_extend_size_map@Base 6 ++ GC_fail_count@Base 6 ++ GC_fault_handler@Base 6 ++ GC_finalization_failures@Base 6 ++ GC_finalize@Base 6 ++ GC_finalize_all@Base 6 ++ GC_finalize_now@Base 6 ++ GC_finalize_on_demand@Base 6 ++ GC_finalizer_notifier@Base 6 ++ GC_find_header@Base 6 ++ GC_find_leak@Base 6 ++ GC_find_limit@Base 6 ++ GC_find_start@Base 6 ++ GC_finish_collection@Base 6 ++ GC_fl_builder_count@Base 6 ++ GC_fo_entries@Base 6 ++ GC_free@Base 6 ++ GC_free_block_ending_at@Base 6 ++ GC_free_bytes@Base 6 ++ GC_free_inner@Base 6 ++ GC_free_space_divisor@Base 6 ++ GC_freehblk@Base 6 ++ GC_freehblk_ptr@Base 6 ++ GC_full_freq@Base 6 ++ GC_gc_no@Base 6 ++ GC_gcj_debug_kind@Base 6 ++ GC_gcj_fast_malloc@Base 6 ++ GC_gcj_kind@Base 6 ++ GC_gcj_malloc@Base 6 ++ GC_gcj_malloc_ignore_off_page@Base 6 ++ GC_gcj_malloc_initialized@Base 6 ++ GC_gcjdebugobjfreelist@Base 6 ++ GC_gcjobjfreelist@Base 6 ++ GC_gcollect@Base 6 ++ GC_general_register_disappearing_link@Base 6 ++ GC_generic_lock@Base 6 ++ GC_generic_malloc@Base 6 ++ GC_generic_malloc_ignore_off_page@Base 6 ++ GC_generic_malloc_inner@Base 6 ++ GC_generic_malloc_inner_ignore_off_page@Base 6 ++ GC_generic_malloc_many@Base 6 ++ GC_generic_malloc_words_small@Base 6 ++ GC_generic_malloc_words_small_inner@Base 6 ++ GC_generic_or_special_malloc@Base 6 ++ GC_generic_push_regs@Base 6 ++ GC_get_bytes_since_gc@Base 6 ++ GC_get_first_part@Base 6 ++ GC_get_free_bytes@Base 6 ++ GC_get_heap_size@Base 6 ++ GC_get_nprocs@Base 6 ++ GC_get_stack_base@Base 6 ++ GC_get_thread_stack_base@Base 6 ++ GC_get_total_bytes@Base 6 ++ GC_greatest_plausible_heap_addr@Base 6 ++ GC_grow_table@Base 6 ++ GC_has_other_debug_info@Base 6 ++ GC_have_errors@Base 6 ++ GC_hblk_fl_from_blocks@Base 6 ++ GC_hblkfreelist@Base 6 ++ GC_hdr_cache_hits@Base 6 ++ GC_hdr_cache_misses@Base 6 ++ GC_high_water@Base 6 ++ GC_ignore_self_finalize_mark_proc@Base 6 ++ GC_in_thread_creation@Base 6 ++ GC_incomplete_normal_bl@Base 6 ++ GC_incomplete_stack_bl@Base 6 ++ GC_incr_mem_freed@Base 6 ++ GC_incr_words_allocd@Base 6 ++ GC_incremental@Base 6 ++ GC_incremental_protection_needs@Base 6 ++ GC_init@Base 6 ++ GC_init_explicit_typing@Base 6 ++ GC_init_gcj_malloc@Base 6 ++ GC_init_headers@Base 6 ++ GC_init_inner@Base 6 ++ GC_init_linux_data_start@Base 6 ++ GC_init_parallel@Base 6 ++ GC_init_size_map@Base 6 ++ GC_init_thread_local@Base 6 ++ GC_initiate_gc@Base 6 ++ GC_install_counts@Base 6 ++ GC_install_header@Base 6 ++ GC_invalid_header@Base 6 ++ GC_invalid_map@Base 6 ++ GC_invalidate_map@Base 6 ++ GC_invalidate_mark_state@Base 6 ++ GC_invoke_finalizers@Base 6 ++ GC_is_black_listed@Base 6 ++ GC_is_fresh@Base 6 ++ GC_is_full_gc@Base 6 ++ GC_is_initialized@Base 6 ++ GC_is_marked@Base 6 ++ GC_is_static_root@Base 6 ++ GC_is_thread_suspended@Base 6 ++ GC_is_valid_displacement@Base 6 ++ GC_is_valid_displacement_print_proc@Base 6 ++ GC_is_visible@Base 6 ++ GC_is_visible_print_proc@Base 6 ++ GC_java_finalization@Base 6 ++ GC_jmp_buf@Base 6 ++ GC_key_create@Base 6 ++ GC_large_alloc_warn_interval@Base 6 ++ GC_large_alloc_warn_suppressed@Base 6 ++ GC_leaked@Base 6 ++ GC_least_plausible_heap_addr@Base 6 ++ GC_linux_stack_base@Base 6 ++ GC_local_gcj_malloc@Base 6 ++ GC_local_malloc@Base 6 ++ GC_local_malloc_atomic@Base 6 ++ GC_lock@Base 6 ++ GC_lock_holder@Base 6 ++ GC_lookup_thread@Base 6 ++ GC_make_array_descriptor@Base 6 ++ GC_make_closure@Base 6 ++ GC_make_descriptor@Base 6 ++ GC_make_sequence_descriptor@Base 6 ++ GC_malloc@Base 6 ++ GC_malloc_atomic@Base 6 ++ GC_malloc_atomic_ignore_off_page@Base 6 ++ GC_malloc_atomic_uncollectable@Base 6 ++ GC_malloc_explicitly_typed@Base 6 ++ GC_malloc_explicitly_typed_ignore_off_page@Base 6 ++ GC_malloc_ignore_off_page@Base 6 ++ GC_malloc_many@Base 6 ++ GC_malloc_stubborn@Base 6 ++ GC_malloc_uncollectable@Base 6 ++ GC_mark_and_push@Base 6 ++ GC_mark_and_push_stack@Base 6 ++ GC_mark_from@Base 6 ++ GC_mark_init@Base 6 ++ GC_mark_some@Base 6 ++ GC_mark_stack@Base 6 ++ GC_mark_stack_empty@Base 6 ++ GC_mark_stack_limit@Base 6 ++ GC_mark_stack_size@Base 6 ++ GC_mark_stack_too_small@Base 6 ++ GC_mark_stack_top@Base 6 ++ GC_mark_state@Base 6 ++ GC_mark_thread_local_free_lists@Base 6 ++ GC_max@Base 6 ++ GC_max_retries@Base 6 ++ GC_maybe_gc@Base 6 ++ GC_mem_found@Base 6 ++ GC_memalign@Base 6 ++ GC_min@Base 6 ++ GC_min_sp@Base 6 ++ GC_n_attempts@Base 6 ++ GC_n_heap_sects@Base 6 ++ GC_n_kinds@Base 6 ++ GC_n_leaked@Base 6 ++ GC_n_mark_procs@Base 6 ++ GC_n_rescuing_pages@Base 6 ++ GC_n_set_marks@Base 6 ++ GC_n_smashed@Base 6 ++ GC_need_full_gc@Base 6 ++ GC_never_stop_func@Base 6 ++ GC_new_free_list@Base 6 ++ GC_new_free_list_inner@Base 6 ++ GC_new_hblk@Base 6 ++ GC_new_kind@Base 6 ++ GC_new_kind_inner@Base 6 ++ GC_new_proc@Base 6 ++ GC_new_proc_inner@Base 6 ++ GC_new_thread@Base 6 ++ GC_next_exclusion@Base 6 ++ GC_next_used_block@Base 6 ++ GC_no_dls@Base 6 ++ GC_non_gc_bytes@Base 6 ++ GC_noop1@Base 6 ++ GC_noop@Base 6 ++ GC_normal_finalize_mark_proc@Base 6 ++ GC_notify_all_builder@Base 6 ++ GC_notify_full_gc@Base 6 ++ GC_notify_or_invoke_finalizers@Base 6 ++ GC_nprocs@Base 6 ++ GC_null_finalize_mark_proc@Base 6 ++ GC_number_stack_black_listed@Base 6 ++ GC_obj_kinds@Base 6 ++ GC_objects_are_marked@Base 6 ++ GC_objfreelist_ptr@Base 6 ++ GC_old_bus_handler@Base 6 ++ GC_old_normal_bl@Base 6 ++ GC_old_segv_handler@Base 6 ++ GC_old_stack_bl@Base 6 ++ GC_on_stack@Base 6 ++ GC_oom_fn@Base 6 ++ GC_page_size@Base 6 ++ GC_page_was_dirty@Base 6 ++ GC_page_was_ever_dirty@Base 6 ++ GC_parallel@Base 6 ++ GC_pause@Base 6 ++ GC_post_incr@Base 6 ++ GC_pre_incr@Base 6 ++ GC_prev_block@Base 6 ++ GC_print_address_map@Base 6 ++ GC_print_all_errors@Base 6 ++ GC_print_all_smashed@Base 6 ++ GC_print_all_smashed_proc@Base 6 ++ GC_print_back_height@Base 6 ++ GC_print_block_descr@Base 6 ++ GC_print_block_list@Base 6 ++ GC_print_finalization_stats@Base 6 ++ GC_print_hblkfreelist@Base 6 ++ GC_print_heap_obj@Base 6 ++ GC_print_heap_sects@Base 6 ++ GC_print_obj@Base 6 ++ GC_print_smashed_obj@Base 6 ++ GC_print_source_ptr@Base 6 ++ GC_print_static_roots@Base 6 ++ GC_print_stats@Base 6 ++ GC_print_type@Base 6 ++ GC_printf@Base 6 ++ GC_project2@Base 6 ++ GC_promote_black_lists@Base 6 ++ GC_protect_heap@Base 6 ++ GC_pthread_create@Base 6 ++ GC_pthread_detach@Base 6 ++ GC_pthread_join@Base 6 ++ GC_pthread_sigmask@Base 6 ++ GC_push_all@Base 6 ++ GC_push_all_eager@Base 6 ++ GC_push_all_stack@Base 6 ++ GC_push_all_stacks@Base 6 ++ GC_push_complex_descriptor@Base 6 ++ GC_push_conditional@Base 6 ++ GC_push_conditional_with_exclusions@Base 6 ++ GC_push_current_stack@Base 6 ++ GC_push_finalizer_structures@Base 6 ++ GC_push_gc_structures@Base 6 ++ GC_push_marked1@Base 6 ++ GC_push_marked2@Base 6 ++ GC_push_marked4@Base 6 ++ GC_push_marked@Base 6 ++ GC_push_next_marked@Base 6 ++ GC_push_next_marked_dirty@Base 6 ++ GC_push_next_marked_uncollectable@Base 6 ++ GC_push_one@Base 6 ++ GC_push_other_roots@Base 6 ++ GC_push_roots@Base 6 ++ GC_push_selected@Base 6 ++ GC_push_stubborn_structures@Base 6 ++ GC_push_thread_structures@Base 6 ++ GC_quiet@Base 6 ++ GC_read_dirty@Base 6 ++ GC_realloc@Base 6 ++ GC_reclaim1@Base 6 ++ GC_reclaim_all@Base 6 ++ GC_reclaim_block@Base 6 ++ GC_reclaim_check@Base 6 ++ GC_reclaim_clear2@Base 6 ++ GC_reclaim_clear4@Base 6 ++ GC_reclaim_clear@Base 6 ++ GC_reclaim_generic@Base 6 ++ GC_reclaim_small_nonempty_block@Base 6 ++ GC_reclaim_uninit2@Base 6 ++ GC_reclaim_uninit4@Base 6 ++ GC_reclaim_uninit@Base 6 ++ GC_register_data_segments@Base 6 ++ GC_register_describe_type_fn@Base 6 ++ GC_register_disappearing_link@Base 6 ++ GC_register_displacement@Base 6 ++ GC_register_displacement_inner@Base 6 ++ GC_register_dynamic_libraries@Base 6 ++ GC_register_dynamic_libraries_dl_iterate_phdr@Base 6 ++ GC_register_finalizer@Base 6 ++ GC_register_finalizer_ignore_self@Base 6 ++ GC_register_finalizer_inner@Base 6 ++ GC_register_finalizer_no_order@Base 6 ++ GC_register_finalizer_unreachable@Base 6 ++ GC_register_has_static_roots_callback@Base 6 ++ GC_register_main_static_data@Base 6 ++ GC_register_my_thread@Base 6 ++ GC_release_mark_lock@Base 6 ++ GC_remove_allowed_signals@Base 6 ++ GC_remove_counts@Base 6 ++ GC_remove_from_fl@Base 6 ++ GC_remove_header@Base 6 ++ GC_remove_protection@Base 6 ++ GC_remove_roots@Base 6 ++ GC_remove_roots_inner@Base 6 ++ GC_remove_specific@Base 6 ++ GC_remove_tmp_roots@Base 6 ++ GC_repeat_read@Base 6 ++ GC_reset_fault_handler@Base 6 ++ GC_restart_handler@Base 6 ++ GC_resume_thread@Base 6 ++ GC_retry_signals@Base 6 ++ GC_root_size@Base 6 ++ GC_roots_present@Base 6 ++ GC_same_obj@Base 6 ++ GC_same_obj_print_proc@Base 6 ++ GC_scratch_alloc@Base 6 ++ GC_set_and_save_fault_handler@Base 6 ++ GC_set_fl_marks@Base 6 ++ GC_set_free_space_divisor@Base 6 ++ GC_set_hdr_marks@Base 6 ++ GC_set_mark_bit@Base 6 ++ GC_set_max_heap_size@Base 6 ++ GC_set_warn_proc@Base 6 ++ GC_setpagesize@Base 6 ++ GC_setspecific@Base 6 ++ GC_setup_temporary_fault_handler@Base 6 ++ GC_should_collect@Base 6 ++ GC_should_invoke_finalizers@Base 6 ++ GC_signal_mark_stack_overflow@Base 6 ++ GC_size@Base 6 ++ GC_sleep@Base 6 ++ GC_slow_getspecific@Base 6 ++ GC_smashed@Base 6 ++ GC_spin_count@Base 6 ++ GC_split_block@Base 6 ++ GC_stack_last_cleared@Base 6 ++ GC_stackbottom@Base 6 ++ GC_start_blocking@Base 6 ++ GC_start_call_back@Base 6 ++ GC_start_debugging@Base 6 ++ GC_start_reclaim@Base 6 ++ GC_start_routine@Base 6 ++ GC_start_time@Base 6 ++ GC_start_world@Base 6 ++ GC_stderr@Base 6 ++ GC_stdout@Base 6 ++ GC_stop_count@Base 6 ++ GC_stop_init@Base 6 ++ GC_stop_world@Base 6 ++ GC_stopped_mark@Base 6 ++ GC_stopping_pid@Base 6 ++ GC_stopping_thread@Base 6 ++ GC_store_debug_info@Base 6 ++ GC_suspend_ack_sem@Base 6 ++ GC_suspend_all@Base 6 ++ GC_suspend_handler@Base 6 ++ GC_suspend_handler_inner@Base 6 ++ GC_suspend_thread@Base 6 ++ GC_thr_init@Base 6 ++ GC_thr_initialized@Base 6 ++ GC_thread_exit_proc@Base 6 ++ GC_thread_key@Base 6 ++ GC_threads@Base 6 ++ GC_time_limit@Base 6 ++ GC_timeout_stop_func@Base 6 ++ GC_total_stack_black_listed@Base 6 ++ GC_try_to_collect@Base 6 ++ GC_try_to_collect_inner@Base 6 ++ GC_typed_mark_proc@Base 6 ++ GC_typed_mark_proc_index@Base 6 ++ GC_unix_get_mem@Base 6 ++ GC_unlocked_count@Base 6 ++ GC_unpromote_black_lists@Base 6 ++ GC_unprotect_range@Base 6 ++ GC_unreachable_finalize_mark_proc@Base 6 ++ GC_unregister_disappearing_link@Base 6 ++ GC_unregister_my_thread@Base 6 ++ GC_uobjfreelist_ptr@Base 6 ++ GC_use_entire_heap@Base 6 ++ GC_used_heap_size_after_full@Base 6 ++ GC_version@Base 6 ++ GC_wait_builder@Base 6 ++ GC_wait_for_gc_completion@Base 6 ++ GC_wait_for_reclaim@Base 6 ++ GC_with_callee_saves_pushed@Base 6 ++ GC_words_allocd_at_reset@Base 6 ++ GC_world_is_stopped@Base 6 ++ GC_world_stopped@Base 6 ++ GC_write@Base 6 ++ GC_write_fault_handler@Base 6 diff --cc debian/libquadmath.symbols index 0000000,0000000..cd8ce65 new file mode 100644 --- /dev/null +++ b/debian/libquadmath.symbols @@@ -1,0 -1,0 +1,4 @@@ ++libquadmath.so.0 #PACKAGE# #MINVER# ++ (symver)QUADMATH_1.0 4.6 ++ (symver)QUADMATH_1.1 6 ++ (symver)QUADMATH_1.2 9 diff --cc debian/libstdc++-BV-doc.doc-base index 0000000,0000000..c5fd048 new file mode 100644 --- /dev/null +++ b/debian/libstdc++-BV-doc.doc-base @@@ -1,0 -1,0 +1,13 @@@ ++Document: libstdc++-@BV@-doc ++Title: The GNU Standard C++ Library v3 (gcc-@BV@) ++Author: Various ++Abstract: This package contains documentation files for the GNU stdc++ library. ++ One set is the distribution documentation, the other set is the ++ source documentation including a namespace list, class hierarchy, ++ alphabetical list, compound list, file list, namespace members, ++ compound members and file members. ++Section: Programming/C++ ++ ++Format: html ++Index: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/index.html ++Files: /usr/share/doc/libstdc++-@BV@-doc/libstdc++/* diff --cc debian/libstdc++-BV-doc.overrides index 0000000,0000000..9685ae8 new file mode 100644 --- /dev/null +++ b/debian/libstdc++-BV-doc.overrides @@@ -1,0 -1,0 +1,8 @@@ ++libstdc++-@BV@-doc binary: manpage-has-bad-whatis-entry ++ ++# 3xx used by intent to avoid conficts ++libstdc++-@BV@-doc binary: manpage-section-mismatch ++ ++# some very long identifiers ++# doxygen accepts formulas in man pages ... ++libstdc++-@BV@-doc binary: groff-message diff --cc debian/libstdc++.symbols index 0000000,0000000..e74a9d9 new file mode 100644 --- /dev/null +++ b/debian/libstdc++.symbols @@@ -1,0 -1,0 +1,67 @@@ ++libstdc++.so.6 #PACKAGE# #MINVER# ++ (symver)CXXABI_1.3 4.1.1 ++ (symver)CXXABI_1.3.1 4.1.1 ++ (symver)CXXABI_1.3.2 4.3 ++ (symver)CXXABI_1.3.3 4.3 ++ (symver)CXXABI_1.3.4 4.3 ++ (symver)CXXABI_1.3.5 4.3 ++ (symver)CXXABI_1.3.6 4.3 ++ (symver)CXXABI_1.3.7 4.3 ++ (symver)CXXABI_1.3.8 4.3 ++ (symver)CXXABI_1.3.9 5 ++ (symver)CXXABI_1.3.10 6 ++ (symver)CXXABI_1.3.11 10.2 ++ (symver)CXXABI_1.3.12 9 ++ (symver)CXXABI_1.3.13 11 ++ (symver)CXXABI_1.3.14 13 ++ (symver)CXXABI_1.3.15 14 ++ (symver|arch=riscv64)CXXABI_1.3.16 15 ++ (symver|arch=armel armhf)CXXABI_ARM_1.3.3 4.4 ++ (symver|arch=amd64 i386 loong64 x32 hurd-amd64 hurd-i386)CXXABI_FLOAT128 5 ++ (symver|arch=alpha ppc64 ppc64el powerpc s390x)CXXABI_LDBL_1.3 4.2.1 ++ (symver|arch=ppc64el)CXXABI_IEEE128_1.3.13 11 ++ (symver)CXXABI_TM_1 4.7 ++ (symver)GLIBCXX_3.4 4.1.1 ++ (symver)GLIBCXX_3.4.1 4.1.1 ++ (symver)GLIBCXX_3.4.2 4.1.1 ++ (symver)GLIBCXX_3.4.3 4.1.1 ++ (symver)GLIBCXX_3.4.4 4.1.1 ++ (symver)GLIBCXX_3.4.5 4.1.1 ++ (symver)GLIBCXX_3.4.6 4.1.1 ++ (symver)GLIBCXX_3.4.7 4.1.1 ++ (symver)GLIBCXX_3.4.8 4.1.1 ++ (symver)GLIBCXX_3.4.9 4.2.1 ++ (symver)GLIBCXX_3.4.10 4.3 ++ (symver)GLIBCXX_3.4.11 4.4 ++ (symver)GLIBCXX_3.4.12 4.4 ++ (symver)GLIBCXX_3.4.13 4.4.2 ++ (symver)GLIBCXX_3.4.14 4.5 ++ (symver)GLIBCXX_3.4.15 4.6 ++ (symver)GLIBCXX_3.4.16 4.6 ++ (symver)GLIBCXX_3.4.17 4.7 ++ (symver)GLIBCXX_3.4.18 4.8 ++ (symver)GLIBCXX_3.4.19 4.8 ++ (symver)GLIBCXX_3.4.20 4.9 ++ (symver)GLIBCXX_3.4.21 5.2 ++ (symver)GLIBCXX_3.4.22 6 ++ (symver)GLIBCXX_3.4.23 10.2 ++ (symver)GLIBCXX_3.4.24 7 ++ (symver)GLIBCXX_3.4.25 8 ++ (symver)GLIBCXX_3.4.26 9 ++ (symver)GLIBCXX_3.4.27 9.1 ++ (symver)GLIBCXX_3.4.28 10.2 ++ (symver)GLIBCXX_3.4.29 11 ++ (symver)GLIBCXX_3.4.30 12 ++ (symver)GLIBCXX_3.4.31 13 ++ (symver)GLIBCXX_3.4.32 13.1 ++ (symver)GLIBCXX_3.4.33 14 ++ (symver)GLIBCXX_3.4.34 15 ++ (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4 4.2.1 ++ (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.7 4.2.1 ++ (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.10 4.3 ++ (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.21 5 ++ (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.29 11 ++ (symver|arch=alpha ppc64 ppc64el powerpc s390x)GLIBCXX_LDBL_3.4.31 13 ++ (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.29 11 ++ (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.30 12 ++ (symver|arch=ppc64el)GLIBCXX_IEEE128_3.4.31 13 diff --cc debian/libstdc++CXX.prerm index 0000000,0000000..d4a6b38 new file mode 100644 --- /dev/null +++ b/debian/libstdc++CXX.prerm @@@ -1,0 -1,0 +1,13 @@@ ++#! /bin/sh ++ ++set -e ++ ++case "$1" in ++ remove|upgrade) ++ files=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {$NF=sprintf("__pycache__/%s.*.py[co]", substr($NF,1,length($NF)-3)); print}') ++ rm -f $files ++ dirs=$(dpkg -L libstdc++@CXX@@TARGET_QUAL@ | awk -F/ 'BEGIN {OFS="/"} /\.py$/ {NF--; print}' | sort -u) ++ find $dirs -mindepth 1 -maxdepth 1 -name __pycache__ -type d -empty | xargs -r rmdir ++esac ++ ++#DEBHELPER# diff --cc debian/libtsan2.symbols index 0000000,0000000..a5bf6ac new file mode 100644 --- /dev/null +++ b/debian/libtsan2.symbols @@@ -1,0 -1,0 +1,3298 @@@ ++# SymbolsHelper-Confirmed: 15 amd64 arm64 loong64 ppc64 ppc64el riscv64 ++libtsan.so.2 libtsan2 #MINVER# ++ AnnotateBenignRace@Base 4.9 ++ AnnotateBenignRaceSized@Base 4.9 ++ AnnotateCondVarSignal@Base 4.9 ++ AnnotateCondVarSignalAll@Base 4.9 ++ AnnotateCondVarWait@Base 4.9 ++ AnnotateEnableRaceDetection@Base 4.9 ++ AnnotateExpectRace@Base 4.9 ++ AnnotateFlushExpectedRaces@Base 4.9 ++ AnnotateFlushState@Base 4.9 ++ AnnotateHappensAfter@Base 4.9 ++ AnnotateHappensBefore@Base 4.9 ++ AnnotateIgnoreReadsBegin@Base 4.9 ++ AnnotateIgnoreReadsEnd@Base 4.9 ++ AnnotateIgnoreSyncBegin@Base 4.9 ++ AnnotateIgnoreSyncEnd@Base 4.9 ++ AnnotateIgnoreWritesBegin@Base 4.9 ++ AnnotateIgnoreWritesEnd@Base 4.9 ++ AnnotateMemoryIsInitialized@Base 4.9 ++ AnnotateMemoryIsUninitialized@Base 5 ++ AnnotateMutexIsNotPHB@Base 4.9 ++ AnnotateMutexIsUsedAsCondVar@Base 4.9 ++ AnnotateNewMemory@Base 4.9 ++ AnnotateNoOp@Base 4.9 ++ AnnotatePCQCreate@Base 4.9 ++ AnnotatePCQDestroy@Base 4.9 ++ AnnotatePCQGet@Base 4.9 ++ AnnotatePCQPut@Base 4.9 ++ AnnotatePublishMemoryRange@Base 4.9 ++ AnnotateRWLockAcquired@Base 4.9 ++ AnnotateRWLockCreate@Base 4.9 ++ AnnotateRWLockCreateStatic@Base 4.9 ++ AnnotateRWLockDestroy@Base 4.9 ++ AnnotateRWLockReleased@Base 4.9 ++ AnnotateThreadName@Base 4.9 ++ AnnotateTraceMemory@Base 4.9 ++ AnnotateUnpublishMemoryRange@Base 4.9 ++ RunningOnValgrind@Base 4.9 ++ ThreadSanitizerQuery@Base 4.9 ++ ValgrindSlowdown@Base 4.9 ++ WTFAnnotateBenignRaceSized@Base 4.9 ++ WTFAnnotateHappensAfter@Base 4.9 ++ WTFAnnotateHappensBefore@Base 4.9 ++ _ZN6__tsan10OnFinalizeEb@Base 4.9 ++ _ZN6__tsan12OnInitializeEv@Base 5 ++ _ZN6__tsan30OnPotentiallyBlockingRegionEndEv@Base 10 ++ _ZN6__tsan32OnPotentiallyBlockingRegionBeginEv@Base 10 ++ _ZN6__tsan8OnReportEPKNS_10ReportDescEb@Base 4.9 ++ _ZdaPv@Base 4.9 ++ _ZdaPvRKSt9nothrow_t@Base 4.9 ++ _ZdaPvSt11align_val_t@Base 9 ++ _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 9 ++ _ZdaPvm@Base 9 ++ _ZdaPvmSt11align_val_t@Base 9 ++ _ZdlPv@Base 4.9 ++ _ZdlPvRKSt9nothrow_t@Base 4.9 ++ _ZdlPvSt11align_val_t@Base 9 ++ _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 9 ++ _ZdlPvm@Base 9 ++ _ZdlPvmSt11align_val_t@Base 9 ++ _Znam@Base 4.9 ++ _ZnamRKSt9nothrow_t@Base 4.9 ++ _ZnamSt11align_val_t@Base 9 ++ _ZnamSt11align_val_tRKSt9nothrow_t@Base 9 ++ _Znwm@Base 4.9 ++ _ZnwmRKSt9nothrow_t@Base 4.9 ++ _ZnwmSt11align_val_t@Base 9 ++ _ZnwmSt11align_val_tRKSt9nothrow_t@Base 9 ++ (arch=!ppc64 !ppc64el)___interceptor___b64_ntop@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___b64_pton@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___bzero@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___close@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___cxa_atexit@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___fprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___fxstat64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___fxstat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___getdelim@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc23_fscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc23_scanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc23_sscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc23_strtoimax@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc23_strtoumax@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc23_vfscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc23_vscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc23_vsscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_fprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_fscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_printf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_scanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_snprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_sprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_sscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_vfprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_vfscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_vprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_vscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsnprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___isoc99_vsscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___libc_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___lxstat64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___lxstat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___overflow@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___res_iclose@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___snprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___sprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___strndup@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___strxfrm_l@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___tls_get_addr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___uflow@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___underflow@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___vsnprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___vsprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___wcsxfrm_l@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___woverflow@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___wuflow@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___wunderflow@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___xpg_strerror_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___xstat64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor___xstat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor__exit@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor__obstack_begin@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor__obstack_begin_1@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor__obstack_newchunk@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_abort@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_accept4@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_accept@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_aligned_alloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_argp_parse@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_asctime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_asctime_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_asprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_atexit@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_backtrace@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_backtrace_symbols@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_bcmp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_bind@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_bsearch@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_bzero@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_calloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_canonicalize_file_name@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_capget@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_capset@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_cfree@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_clock_getcpuclockid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_clock_getres@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_clock_gettime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_clock_settime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_clone@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_close@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_closedir@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_confstr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_connect@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_creat64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_creat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ctermid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ctime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ctime_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_dl_iterate_phdr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_dlclose@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_dlopen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_dn_comp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_dn_expand@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_drand48_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_dup2@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_dup3@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_dup@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_endgrent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_endpwent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_epoll_create1@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_epoll_create@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_epoll_ctl@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_epoll_pwait2@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_epoll_pwait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_epoll_wait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ether_aton@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ether_aton_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ether_hostton@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ether_line@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ether_ntoa@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ether_ntoa_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ether_ntohost@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_eventfd@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_eventfd_read@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_eventfd_write@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fclose@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fdopen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fflush@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fgetgrent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fgetgrent_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fgetpwent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fgetpwent_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fgets@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fgetxattr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_flistxattr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fmemopen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fopen64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fopen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fopencookie@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fork@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fputs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fread@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_free@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_freopen64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_freopen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_frexp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_frexpf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_frexpl@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fstat64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fstat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fstatfs64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fstatfs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fstatvfs64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fstatvfs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ftime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_fwrite@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_get_current_dir_name@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getaddrinfo@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getcwd@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getdelim@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getentropy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getgrent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getgrent_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getgrgid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getgrgid_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getgrnam@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getgrnam_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getgrouplist@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getgroups@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gethostbyaddr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gethostbyaddr_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gethostbyname2@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gethostbyname2_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gethostbyname@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gethostbyname_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gethostent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gethostent_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getifaddrs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getitimer@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getline@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getloadavg@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getmntent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getmntent_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getnameinfo@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getnetbyaddr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getnetbyname@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getnetent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getpass@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getpeername@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getprotobyname@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getprotobyname_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getprotobynumber@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getprotobynumber_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getprotoent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getprotoent_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getpwent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getpwent_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getpwnam@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getpwnam_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getpwuid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getpwuid_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getrandom@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getresgid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getresuid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getsockname@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getsockopt@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gettimeofday@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getusershell@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getutent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getutid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getutline@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getutxent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getutxid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getutxline@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_getxattr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_glob64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_glob@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gmtime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_gmtime_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_iconv@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_if_indextoname@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_if_nametoindex@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_inet_aton@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_inet_ntop@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_inet_pton@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_initgroups@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_inotify_init1@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_inotify_init@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ioctl@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_kill@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lgamma@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lgamma_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lgammaf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lgammaf_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lgammal@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lgammal_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lgetxattr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_listen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_listxattr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_llistxattr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_localtime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_localtime_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_longjmp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lrand48_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lstat64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_lstat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_malloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_malloc_usable_size@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mbsnrtowcs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mbsrtowcs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mbstowcs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mcheck@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mcheck_pedantic@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memchr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memcmp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memcpy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memmem@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memmove@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memrchr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_memset@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mincore@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mktime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mlockall@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mmap64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mmap@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_modf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_modff@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_modfl@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mprobe@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_mprotect@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_msgrcv@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_msgsnd@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_munlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_munlockall@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_munmap@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_name_to_handle_at@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_nanosleep@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_on_exit@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_open64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_open@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_open_by_handle_at@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_open_memstream@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_open_wmemstream@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_opendir@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pause@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pclose@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pipe2@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pipe@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_poll@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_popen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_posix_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_posix_spawn@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_posix_spawnp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ppoll@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_prctl@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pread64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pread@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_preadv2@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_preadv64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_preadv@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_printf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_process_vm_readv@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_process_vm_writev@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getaffinity_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getdetachstate@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getguardsize@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getinheritsched@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getschedparam@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getschedpolicy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getscope@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getstack@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_attr_getstacksize@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_init@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_barrier_wait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_barrierattr_getpshared@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_broadcast@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_clockwait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_init@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_signal@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_timedwait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_cond_wait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_condattr_getclock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_condattr_getpshared@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_create@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_detach@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_exit@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_getaffinity_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_getcpuclockid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_getname_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_getschedparam@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_join@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_kill@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_clocklock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_init@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_lock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_timedlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_trylock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutex_unlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getprioceiling@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getprotocol@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getpshared@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getrobust@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_getrobust_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_mutexattr_gettype@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_once@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_init@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_rdlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_timedrdlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_timedwrlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_tryrdlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_trywrlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_unlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlock_wrlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlockattr_getkind_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_rwlockattr_getpshared@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_setcancelstate@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_setcanceltype@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_setname_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_sigmask@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_init@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_lock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_trylock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_spin_unlock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_timedjoin_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pthread_tryjoin_np@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ptrace@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ptsname@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ptsname_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_puts@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pututxline@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pvalloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pwrite64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pwrite@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pwritev2@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pwritev64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_pwritev@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_qsort@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_qsort_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_raise@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_rand_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_random_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_read@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_readdir64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_readdir64_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_readdir@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_readdir_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_readlink@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_readlinkat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_readv@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_realloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_reallocarray@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_realpath@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_recv@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_recvfrom@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_recvmmsg@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_recvmsg@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_regcomp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_regerror@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_regexec@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_regfree@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_remquo@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_remquof@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_remquol@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_rmdir@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_scandir64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_scandir@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_scanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sched_getaffinity@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sched_getparam@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_getvalue@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_init@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_open@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_post@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_timedwait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_trywait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_unlink@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sem_wait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_send@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sendmmsg@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sendmsg@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sendto@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_setbuf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_setbuffer@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_setgrent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_setitimer@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_setlinebuf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_setlocale@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_setpwent@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_setvbuf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_shmctl@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigaction@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigaltstack@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigandset@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigblock@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigemptyset@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigfillset@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_siglongjmp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_signal@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_signalfd@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigorset@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigpending@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigprocmask@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigsetmask@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigsuspend@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigtimedwait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigwait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sigwaitinfo@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sincos@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sincosf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sincosl@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sleep@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_snprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_socket@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_socketpair@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_stat64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_stat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_statfs64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_statfs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_statvfs64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_statvfs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strcasecmp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strcasestr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strchr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strchrnul@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strcmp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strcpy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strcspn@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strdup@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strerror@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strerror_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strlen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strncasecmp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strncmp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strncpy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strndup@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strnlen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strpbrk@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strptime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strrchr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strspn@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strstr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strtoimax@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strtok@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strtoumax@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strxfrm@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_strxfrm_l@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_sysinfo@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_tcgetattr@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_tempnam@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_textdomain@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_time@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_timerfd_gettime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_timerfd_settime@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_times@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_tmpfile64@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_tmpfile@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_tmpnam@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_tmpnam_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_tsearch@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ttyname@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_ttyname_r@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_uname@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_unlink@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_usleep@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_valloc@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vasprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vfork@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vfprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vfscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vsnprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vsprintf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_vsscanf@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wait3@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wait4@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wait@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_waitid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_waitpid@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcrtomb@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcscat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcsdup@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcslen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcsncat@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcsnlen@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcsnrtombs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcsrtombs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcstombs@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcsxfrm@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wcsxfrm_l@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wctomb@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_wordexp@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_write@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_writev@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_bool@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_bytes@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_char@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_double@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_enum@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_float@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_hyper@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_int16_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_int32_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_int64_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_int8_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_int@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_long@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_longlong_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_quad_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_short@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_string@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_u_char@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_u_hyper@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_u_int@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_u_long@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_u_longlong_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_u_quad_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_u_short@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_uint16_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_uint32_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_uint64_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdr_uint8_t@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdrmem_create@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdrrec_create@Base 15 ++ (arch=!ppc64 !ppc64el)___interceptor_xdrstdio_create@Base 15 ++ __asan_backtrace_alloc@Base 4.9 ++ __asan_backtrace_close@Base 4.9 ++ __asan_backtrace_create_state@Base 4.9 ++ __asan_backtrace_dwarf_add@Base 4.9 ++ __asan_backtrace_free@Base 4.9 ++ __asan_backtrace_get_view@Base 4.9 ++ __asan_backtrace_initialize@Base 4.9 ++ __asan_backtrace_open@Base 4.9 ++ __asan_backtrace_pcinfo@Base 4.9 ++ __asan_backtrace_qsort@Base 4.9 ++ __asan_backtrace_release_view@Base 4.9 ++ __asan_backtrace_syminfo@Base 4.9 ++ __asan_backtrace_syminfo_to_full_callback@Base 11 ++ __asan_backtrace_syminfo_to_full_error_callback@Base 11 ++ __asan_backtrace_uncompress_lzma@Base 11 ++ __asan_backtrace_uncompress_zdebug@Base 8 ++ __asan_backtrace_uncompress_zstd@Base 13 ++ __asan_backtrace_vector_finish@Base 4.9 ++ __asan_backtrace_vector_grow@Base 4.9 ++ __asan_backtrace_vector_release@Base 4.9 ++ __asan_cplus_demangle_builtin_types@Base 4.9 ++ __asan_cplus_demangle_fill_ctor@Base 4.9 ++ __asan_cplus_demangle_fill_dtor@Base 4.9 ++ __asan_cplus_demangle_fill_extended_operator@Base 4.9 ++ __asan_cplus_demangle_fill_name@Base 4.9 ++ __asan_cplus_demangle_init_info@Base 4.9 ++ __asan_cplus_demangle_mangled_name@Base 4.9 ++ __asan_cplus_demangle_operators@Base 4.9 ++ __asan_cplus_demangle_print@Base 4.9 ++ __asan_cplus_demangle_print_callback@Base 4.9 ++ __asan_cplus_demangle_type@Base 4.9 ++ __asan_cplus_demangle_v3@Base 4.9 ++ __asan_cplus_demangle_v3_callback@Base 4.9 ++ __asan_internal_memcmp@Base 4.9 ++ __asan_internal_memcpy@Base 4.9 ++ __asan_internal_memset@Base 4.9 ++ __asan_internal_strcmp@Base 4.9 ++ __asan_internal_strlen@Base 4.9 ++ __asan_internal_strncmp@Base 4.9 ++ __asan_internal_strnlen@Base 4.9 ++ __asan_is_gnu_v3_mangled_ctor@Base 4.9 ++ __asan_is_gnu_v3_mangled_dtor@Base 4.9 ++ __asan_java_demangle_v3@Base 4.9 ++ __asan_java_demangle_v3_callback@Base 4.9 ++ __b64_ntop@Base 13 ++ __b64_pton@Base 13 ++ __bzero@Base 10 ++ __close@Base 4.9 ++ __cxa_atexit@Base 4.9 ++ __cxa_guard_abort@Base 4.9 ++ __cxa_guard_acquire@Base 4.9 ++ __cxa_guard_release@Base 4.9 ++ __fprintf_chk@Base 9 ++ __fxstat64@Base 4.9 ++ __fxstat@Base 4.9 ++ __getdelim@Base 5 ++ __interceptor___b64_ntop@Base 13 ++ __interceptor___b64_pton@Base 13 ++ __interceptor___bzero@Base 10 ++ __interceptor___close@Base 4.9 ++ __interceptor___cxa_atexit@Base 4.9 ++ __interceptor___fprintf_chk@Base 9 ++ __interceptor___fxstat64@Base 4.9 ++ __interceptor___fxstat@Base 4.9 ++ __interceptor___getdelim@Base 5 ++ __interceptor___isoc23_fscanf@Base 14 ++ __interceptor___isoc23_scanf@Base 14 ++ __interceptor___isoc23_sscanf@Base 14 ++ __interceptor___isoc23_strtoimax@Base 14 ++ __interceptor___isoc23_strtoumax@Base 14 ++ __interceptor___isoc23_vfscanf@Base 14 ++ __interceptor___isoc23_vscanf@Base 14 ++ __interceptor___isoc23_vsscanf@Base 14 ++ __interceptor___isoc99_fprintf@Base 5 ++ __interceptor___isoc99_fscanf@Base 4.9 ++ __interceptor___isoc99_printf@Base 5 ++ __interceptor___isoc99_scanf@Base 4.9 ++ __interceptor___isoc99_snprintf@Base 5 ++ __interceptor___isoc99_sprintf@Base 5 ++ __interceptor___isoc99_sscanf@Base 4.9 ++ __interceptor___isoc99_vfprintf@Base 5 ++ __interceptor___isoc99_vfscanf@Base 4.9 ++ __interceptor___isoc99_vprintf@Base 5 ++ __interceptor___isoc99_vscanf@Base 4.9 ++ __interceptor___isoc99_vsnprintf@Base 5 ++ __interceptor___isoc99_vsprintf@Base 5 ++ __interceptor___isoc99_vsscanf@Base 4.9 ++ __interceptor___libc_memalign@Base 4.9 ++ __interceptor___lxstat64@Base 4.9 ++ __interceptor___lxstat@Base 4.9 ++ __interceptor___overflow@Base 5 ++ __interceptor___res_iclose@Base 4.9 ++ __interceptor___snprintf_chk@Base 9 ++ __interceptor___sprintf_chk@Base 9 ++ __interceptor___strndup@Base 8 ++ __interceptor___strxfrm_l@Base 9 ++ __interceptor___tls_get_addr@Base 6 ++ __interceptor___uflow@Base 5 ++ __interceptor___underflow@Base 5 ++ __interceptor___vsnprintf_chk@Base 9 ++ __interceptor___vsprintf_chk@Base 9 ++ __interceptor___wcsxfrm_l@Base 9 ++ __interceptor___woverflow@Base 5 ++ __interceptor___wuflow@Base 5 ++ __interceptor___wunderflow@Base 5 ++ __interceptor___xpg_strerror_r@Base 4.9 ++ __interceptor___xstat64@Base 4.9 ++ __interceptor___xstat@Base 4.9 ++ __interceptor__exit@Base 4.9 ++ __interceptor__obstack_begin@Base 5 ++ __interceptor__obstack_begin_1@Base 5 ++ __interceptor__obstack_newchunk@Base 5 ++ __interceptor_abort@Base 4.9 ++ __interceptor_accept4@Base 4.9 ++ __interceptor_accept@Base 4.9 ++ __interceptor_aligned_alloc@Base 5 ++ __interceptor_argp_parse@Base 14 ++ __interceptor_asctime@Base 4.9 ++ __interceptor_asctime_r@Base 4.9 ++ __interceptor_asprintf@Base 5 ++ __interceptor_atexit@Base 4.9 ++ __interceptor_backtrace@Base 4.9 ++ __interceptor_backtrace_symbols@Base 4.9 ++ __interceptor_bcmp@Base 10 ++ __interceptor_bind@Base 4.9 ++ __interceptor_bsearch@Base 13 ++ __interceptor_bzero@Base 10 ++ __interceptor_calloc@Base 4.9 ++ __interceptor_canonicalize_file_name@Base 4.9 ++ __interceptor_capget@Base 5 ++ __interceptor_capset@Base 5 ++ __interceptor_cfree@Base 4.9 ++ __interceptor_clock_getcpuclockid@Base 11 ++ __interceptor_clock_getres@Base 4.9 ++ __interceptor_clock_gettime@Base 4.9 ++ __interceptor_clock_settime@Base 4.9 ++ __interceptor_clone@Base 13 ++ __interceptor_close@Base 4.9 ++ __interceptor_closedir@Base 6 ++ __interceptor_confstr@Base 4.9 ++ __interceptor_connect@Base 4.9 ++ __interceptor_creat64@Base 4.9 ++ __interceptor_creat@Base 4.9 ++ __interceptor_ctermid@Base 7 ++ __interceptor_ctime@Base 4.9 ++ __interceptor_ctime_r@Base 4.9 ++ __interceptor_dl_iterate_phdr@Base 6 ++ __interceptor_dlclose@Base 4.9 ++ __interceptor_dlopen@Base 4.9 ++ __interceptor_dn_comp@Base 13 ++ __interceptor_dn_expand@Base 13 ++ __interceptor_drand48_r@Base 4.9 ++ __interceptor_dup2@Base 4.9 ++ __interceptor_dup3@Base 4.9 ++ __interceptor_dup@Base 4.9 ++ __interceptor_endgrent@Base 5 ++ __interceptor_endpwent@Base 5 ++ __interceptor_epoll_create1@Base 4.9 ++ __interceptor_epoll_create@Base 4.9 ++ __interceptor_epoll_ctl@Base 4.9 ++ __interceptor_epoll_pwait2@Base 14 ++ __interceptor_epoll_pwait@Base 7 ++ __interceptor_epoll_wait@Base 4.9 ++ __interceptor_ether_aton@Base 4.9 ++ __interceptor_ether_aton_r@Base 4.9 ++ __interceptor_ether_hostton@Base 4.9 ++ __interceptor_ether_line@Base 4.9 ++ __interceptor_ether_ntoa@Base 4.9 ++ __interceptor_ether_ntoa_r@Base 4.9 ++ __interceptor_ether_ntohost@Base 4.9 ++ __interceptor_eventfd@Base 4.9 ++ __interceptor_eventfd_read@Base 7 ++ __interceptor_eventfd_write@Base 7 ++ __interceptor_fclose@Base 4.9 ++ __interceptor_fdopen@Base 5 ++ __interceptor_fflush@Base 4.9 ++ __interceptor_fgetgrent@Base 10 ++ __interceptor_fgetgrent_r@Base 10 ++ __interceptor_fgetpwent@Base 10 ++ __interceptor_fgetpwent_r@Base 10 ++ __interceptor_fgets@Base 9 ++ __interceptor_fgetxattr@Base 5 ++ __interceptor_flistxattr@Base 5 ++ __interceptor_fmemopen@Base 5 ++ __interceptor_fopen64@Base 5 ++ __interceptor_fopen@Base 4.9 ++ __interceptor_fopencookie@Base 6 ++ __interceptor_fork@Base 4.9 ++ __interceptor_fprintf@Base 5 ++ __interceptor_fputs@Base 9 ++ __interceptor_fread@Base 4.9 ++ __interceptor_free@Base 4.9 ++ __interceptor_freopen64@Base 5 ++ __interceptor_freopen@Base 4.9 ++ __interceptor_frexp@Base 4.9 ++ __interceptor_frexpf@Base 4.9 ++ __interceptor_frexpl@Base 4.9 ++ __interceptor_fscanf@Base 4.9 ++ __interceptor_fstat64@Base 4.9 ++ __interceptor_fstat@Base 4.9 ++ __interceptor_fstatfs64@Base 4.9 ++ __interceptor_fstatfs@Base 4.9 ++ __interceptor_fstatvfs64@Base 4.9 ++ __interceptor_fstatvfs@Base 4.9 ++ __interceptor_ftime@Base 5 ++ __interceptor_fwrite@Base 4.9 ++ __interceptor_get_current_dir_name@Base 4.9 ++ __interceptor_getaddrinfo@Base 4.9 ++ __interceptor_getcwd@Base 4.9 ++ __interceptor_getdelim@Base 4.9 ++ __interceptor_getentropy@Base 14 ++ __interceptor_getgrent@Base 10 ++ __interceptor_getgrent_r@Base 10 ++ __interceptor_getgrgid@Base 10 ++ __interceptor_getgrgid_r@Base 10 ++ __interceptor_getgrnam@Base 10 ++ __interceptor_getgrnam_r@Base 10 ++ __interceptor_getgrouplist@Base 13 ++ __interceptor_getgroups@Base 4.9 ++ __interceptor_gethostbyaddr@Base 4.9 ++ __interceptor_gethostbyaddr_r@Base 4.9 ++ __interceptor_gethostbyname2@Base 4.9 ++ __interceptor_gethostbyname2_r@Base 4.9 ++ __interceptor_gethostbyname@Base 4.9 ++ __interceptor_gethostbyname_r@Base 4.9 ++ __interceptor_gethostent@Base 4.9 ++ __interceptor_gethostent_r@Base 4.9 ++ __interceptor_getifaddrs@Base 5 ++ __interceptor_getitimer@Base 4.9 ++ __interceptor_getline@Base 4.9 ++ __interceptor_getloadavg@Base 8 ++ __interceptor_getmntent@Base 4.9 ++ __interceptor_getmntent_r@Base 4.9 ++ __interceptor_getnameinfo@Base 5 ++ __interceptor_getnetbyaddr@Base 13 ++ __interceptor_getnetbyname@Base 13 ++ __interceptor_getnetent@Base 13 ++ __interceptor_getpass@Base 5 ++ __interceptor_getpeername@Base 4.9 ++ __interceptor_getprotobyname@Base 11 ++ __interceptor_getprotobyname_r@Base 11 ++ __interceptor_getprotobynumber@Base 11 ++ __interceptor_getprotobynumber_r@Base 11 ++ __interceptor_getprotoent@Base 11 ++ __interceptor_getprotoent_r@Base 11 ++ __interceptor_getpwent@Base 10 ++ __interceptor_getpwent_r@Base 10 ++ __interceptor_getpwnam@Base 10 ++ __interceptor_getpwnam_r@Base 10 ++ __interceptor_getpwuid@Base 10 ++ __interceptor_getpwuid_r@Base 10 ++ __interceptor_getrandom@Base 10 ++ __interceptor_getresgid@Base 5 ++ __interceptor_getresuid@Base 5 ++ __interceptor_getsockname@Base 4.9 ++ __interceptor_getsockopt@Base 4.9 ++ __interceptor_gettimeofday@Base 4.9 ++ __interceptor_getusershell@Base 10 ++ __interceptor_getutent@Base 8 ++ __interceptor_getutid@Base 8 ++ __interceptor_getutline@Base 8 ++ __interceptor_getutxent@Base 8 ++ __interceptor_getutxid@Base 8 ++ __interceptor_getutxline@Base 8 ++ __interceptor_getxattr@Base 5 ++ __interceptor_glob64@Base 5 ++ __interceptor_glob@Base 5 ++ __interceptor_gmtime@Base 4.9 ++ __interceptor_gmtime_r@Base 4.9 ++ __interceptor_iconv@Base 4.9 ++ __interceptor_if_indextoname@Base 5 ++ __interceptor_if_nametoindex@Base 5 ++ __interceptor_inet_aton@Base 4.9 ++ __interceptor_inet_ntop@Base 4.9 ++ __interceptor_inet_pton@Base 4.9 ++ __interceptor_initgroups@Base 4.9 ++ __interceptor_inotify_init1@Base 4.9 ++ __interceptor_inotify_init@Base 4.9 ++ __interceptor_ioctl@Base 4.9 ++ __interceptor_kill@Base 4.9 ++ __interceptor_lgamma@Base 4.9 ++ __interceptor_lgamma_r@Base 4.9 ++ __interceptor_lgammaf@Base 4.9 ++ __interceptor_lgammaf_r@Base 4.9 ++ __interceptor_lgammal@Base 4.9 ++ __interceptor_lgammal_r@Base 4.9 ++ __interceptor_lgetxattr@Base 5 ++ __interceptor_listen@Base 4.9 ++ __interceptor_listxattr@Base 5 ++ __interceptor_llistxattr@Base 5 ++ __interceptor_localtime@Base 4.9 ++ __interceptor_localtime_r@Base 4.9 ++ __interceptor_longjmp@Base 4.9 ++ __interceptor_lrand48_r@Base 4.9 ++ __interceptor_lstat64@Base 13 ++ __interceptor_lstat@Base 13 ++ __interceptor_malloc@Base 4.9 ++ __interceptor_malloc_usable_size@Base 4.9 ++ __interceptor_mbsnrtowcs@Base 4.9 ++ __interceptor_mbsrtowcs@Base 4.9 ++ __interceptor_mbstowcs@Base 4.9 ++ __interceptor_mcheck@Base 8 ++ __interceptor_mcheck_pedantic@Base 8 ++ __interceptor_memalign@Base 4.9 ++ __interceptor_memchr@Base 4.9 ++ __interceptor_memcmp@Base 4.9 ++ __interceptor_memcpy@Base 4.9 ++ __interceptor_memmem@Base 7 ++ __interceptor_memmove@Base 4.9 ++ __interceptor_memrchr@Base 4.9 ++ __interceptor_memset@Base 4.9 ++ __interceptor_mincore@Base 6 ++ __interceptor_mktime@Base 5 ++ __interceptor_mlock@Base 4.9 ++ __interceptor_mlockall@Base 4.9 ++ __interceptor_mmap64@Base 4.9 ++ __interceptor_mmap@Base 4.9 ++ __interceptor_modf@Base 4.9 ++ __interceptor_modff@Base 4.9 ++ __interceptor_modfl@Base 4.9 ++ __interceptor_mprobe@Base 8 ++ __interceptor_mprotect@Base 9 ++ __interceptor_msgrcv@Base 11 ++ __interceptor_msgsnd@Base 11 ++ __interceptor_munlock@Base 4.9 ++ __interceptor_munlockall@Base 4.9 ++ __interceptor_munmap@Base 4.9 ++ __interceptor_name_to_handle_at@Base 9 ++ __interceptor_nanosleep@Base 4.9 ++ __interceptor_on_exit@Base 4.9 ++ __interceptor_open64@Base 4.9 ++ __interceptor_open@Base 4.9 ++ __interceptor_open_by_handle_at@Base 9 ++ __interceptor_open_memstream@Base 5 ++ __interceptor_open_wmemstream@Base 5 ++ __interceptor_opendir@Base 4.9 ++ __interceptor_pause@Base 8 ++ __interceptor_pclose@Base 10 ++ __interceptor_pipe2@Base 4.9 ++ __interceptor_pipe@Base 4.9 ++ __interceptor_poll@Base 4.9 ++ __interceptor_popen@Base 10 ++ __interceptor_posix_memalign@Base 4.9 ++ __interceptor_posix_spawn@Base 13 ++ __interceptor_posix_spawnp@Base 13 ++ __interceptor_ppoll@Base 4.9 ++ __interceptor_prctl@Base 4.9 ++ __interceptor_pread64@Base 4.9 ++ __interceptor_pread@Base 4.9 ++ __interceptor_preadv2@Base 15 ++ __interceptor_preadv64@Base 4.9 ++ __interceptor_preadv@Base 4.9 ++ __interceptor_printf@Base 5 ++ __interceptor_process_vm_readv@Base 6 ++ __interceptor_process_vm_writev@Base 6 ++ __interceptor_pthread_attr_getaffinity_np@Base 4.9 ++ __interceptor_pthread_attr_getdetachstate@Base 4.9 ++ __interceptor_pthread_attr_getguardsize@Base 4.9 ++ __interceptor_pthread_attr_getinheritsched@Base 4.9 ++ __interceptor_pthread_attr_getschedparam@Base 4.9 ++ __interceptor_pthread_attr_getschedpolicy@Base 4.9 ++ __interceptor_pthread_attr_getscope@Base 4.9 ++ __interceptor_pthread_attr_getstack@Base 4.9 ++ __interceptor_pthread_attr_getstacksize@Base 4.9 ++ __interceptor_pthread_barrier_destroy@Base 4.9 ++ __interceptor_pthread_barrier_init@Base 4.9 ++ __interceptor_pthread_barrier_wait@Base 4.9 ++ __interceptor_pthread_barrierattr_getpshared@Base 5 ++ __interceptor_pthread_cond_broadcast@Base 4.9 ++ __interceptor_pthread_cond_clockwait@Base 13 ++ __interceptor_pthread_cond_destroy@Base 4.9 ++ __interceptor_pthread_cond_init@Base 4.9 ++ __interceptor_pthread_cond_signal@Base 4.9 ++ __interceptor_pthread_cond_timedwait@Base 4.9 ++ __interceptor_pthread_cond_wait@Base 4.9 ++ __interceptor_pthread_condattr_getclock@Base 5 ++ __interceptor_pthread_condattr_getpshared@Base 5 ++ __interceptor_pthread_create@Base 4.9 ++ __interceptor_pthread_detach@Base 4.9 ++ __interceptor_pthread_exit@Base 10 ++ __interceptor_pthread_getaffinity_np@Base 13 ++ __interceptor_pthread_getcpuclockid@Base 13 ++ __interceptor_pthread_getname_np@Base 9 ++ __interceptor_pthread_getschedparam@Base 4.9 ++ __interceptor_pthread_join@Base 4.9 ++ __interceptor_pthread_kill@Base 4.9 ++ __interceptor_pthread_mutex_clocklock@Base 15 ++ __interceptor_pthread_mutex_destroy@Base 4.9 ++ __interceptor_pthread_mutex_init@Base 4.9 ++ __interceptor_pthread_mutex_lock@Base 4.9 ++ __interceptor_pthread_mutex_timedlock@Base 4.9 ++ __interceptor_pthread_mutex_trylock@Base 4.9 ++ __interceptor_pthread_mutex_unlock@Base 4.9 ++ __interceptor_pthread_mutexattr_getprioceiling@Base 5 ++ __interceptor_pthread_mutexattr_getprotocol@Base 5 ++ __interceptor_pthread_mutexattr_getpshared@Base 5 ++ __interceptor_pthread_mutexattr_getrobust@Base 5 ++ __interceptor_pthread_mutexattr_getrobust_np@Base 5 ++ __interceptor_pthread_mutexattr_gettype@Base 5 ++ __interceptor_pthread_once@Base 4.9 ++ __interceptor_pthread_rwlock_destroy@Base 4.9 ++ __interceptor_pthread_rwlock_init@Base 4.9 ++ __interceptor_pthread_rwlock_rdlock@Base 4.9 ++ __interceptor_pthread_rwlock_timedrdlock@Base 4.9 ++ __interceptor_pthread_rwlock_timedwrlock@Base 4.9 ++ __interceptor_pthread_rwlock_tryrdlock@Base 4.9 ++ __interceptor_pthread_rwlock_trywrlock@Base 4.9 ++ __interceptor_pthread_rwlock_unlock@Base 4.9 ++ __interceptor_pthread_rwlock_wrlock@Base 4.9 ++ __interceptor_pthread_rwlockattr_getkind_np@Base 5 ++ __interceptor_pthread_rwlockattr_getpshared@Base 5 ++ __interceptor_pthread_setcancelstate@Base 6 ++ __interceptor_pthread_setcanceltype@Base 6 ++ __interceptor_pthread_setname_np@Base 4.9 ++ __interceptor_pthread_sigmask@Base 7 ++ __interceptor_pthread_spin_destroy@Base 4.9 ++ __interceptor_pthread_spin_init@Base 4.9 ++ __interceptor_pthread_spin_lock@Base 4.9 ++ __interceptor_pthread_spin_trylock@Base 4.9 ++ __interceptor_pthread_spin_unlock@Base 4.9 ++ __interceptor_pthread_timedjoin_np@Base 10 ++ __interceptor_pthread_tryjoin_np@Base 10 ++ __interceptor_ptrace@Base 4.9 ++ __interceptor_ptsname@Base 11 ++ __interceptor_ptsname_r@Base 11 ++ __interceptor_puts@Base 4.9 ++ __interceptor_pututxline@Base 10 ++ __interceptor_pvalloc@Base 4.9 ++ __interceptor_pwrite64@Base 4.9 ++ __interceptor_pwrite@Base 4.9 ++ __interceptor_pwritev2@Base 15 ++ __interceptor_pwritev64@Base 4.9 ++ __interceptor_pwritev@Base 4.9 ++ __interceptor_qsort@Base 11 ++ __interceptor_qsort_r@Base 11 ++ __interceptor_raise@Base 4.9 ++ __interceptor_rand_r@Base 5 ++ __interceptor_random_r@Base 4.9 ++ __interceptor_read@Base 4.9 ++ __interceptor_readdir64@Base 4.9 ++ __interceptor_readdir64_r@Base 4.9 ++ __interceptor_readdir@Base 4.9 ++ __interceptor_readdir_r@Base 4.9 ++ __interceptor_readlink@Base 9 ++ __interceptor_readlinkat@Base 9 ++ __interceptor_readv@Base 4.9 ++ __interceptor_realloc@Base 4.9 ++ __interceptor_reallocarray@Base 10 ++ __interceptor_realpath@Base 4.9 ++ __interceptor_recv@Base 4.9 ++ __interceptor_recvfrom@Base 7 ++ __interceptor_recvmmsg@Base 9 ++ __interceptor_recvmsg@Base 4.9 ++ __interceptor_regcomp@Base 10 ++ __interceptor_regerror@Base 10 ++ __interceptor_regexec@Base 10 ++ __interceptor_regfree@Base 10 ++ __interceptor_remquo@Base 4.9 ++ __interceptor_remquof@Base 4.9 ++ __interceptor_remquol@Base 4.9 ++ __interceptor_rmdir@Base 4.9 ++ __interceptor_scandir64@Base 4.9 ++ __interceptor_scandir@Base 4.9 ++ __interceptor_scanf@Base 4.9 ++ __interceptor_sched_getaffinity@Base 4.9 ++ __interceptor_sched_getparam@Base 6 ++ __interceptor_sem_destroy@Base 4.9 ++ __interceptor_sem_getvalue@Base 4.9 ++ __interceptor_sem_init@Base 4.9 ++ __interceptor_sem_open@Base 13 ++ __interceptor_sem_post@Base 4.9 ++ __interceptor_sem_timedwait@Base 4.9 ++ __interceptor_sem_trywait@Base 4.9 ++ __interceptor_sem_unlink@Base 13 ++ __interceptor_sem_wait@Base 4.9 ++ __interceptor_send@Base 4.9 ++ __interceptor_sendmmsg@Base 9 ++ __interceptor_sendmsg@Base 4.9 ++ __interceptor_sendto@Base 7 ++ __interceptor_setbuf@Base 10 ++ __interceptor_setbuffer@Base 10 ++ __interceptor_setgrent@Base 5 ++ __interceptor_setitimer@Base 4.9 ++ __interceptor_setlinebuf@Base 10 ++ __interceptor_setlocale@Base 4.9 ++ __interceptor_setpwent@Base 5 ++ __interceptor_setvbuf@Base 10 ++ __interceptor_shmctl@Base 4.9 ++ __interceptor_sigaction@Base 4.9 ++ __interceptor_sigaltstack@Base 11 ++ __interceptor_sigandset@Base 11 ++ __interceptor_sigblock@Base 7 ++ __interceptor_sigemptyset@Base 4.9 ++ __interceptor_sigfillset@Base 4.9 ++ __interceptor_siglongjmp@Base 4.9 ++ __interceptor_signal@Base 4.9 ++ __interceptor_signalfd@Base 4.9 ++ __interceptor_sigorset@Base 11 ++ __interceptor_sigpending@Base 4.9 ++ __interceptor_sigprocmask@Base 4.9 ++ __interceptor_sigsetmask@Base 7 ++ __interceptor_sigsuspend@Base 4.9 ++ __interceptor_sigtimedwait@Base 4.9 ++ __interceptor_sigwait@Base 4.9 ++ __interceptor_sigwaitinfo@Base 4.9 ++ __interceptor_sincos@Base 4.9 ++ __interceptor_sincosf@Base 4.9 ++ __interceptor_sincosl@Base 4.9 ++ __interceptor_sleep@Base 4.9 ++ __interceptor_snprintf@Base 5 ++ __interceptor_socket@Base 4.9 ++ __interceptor_socketpair@Base 4.9 ++ __interceptor_sprintf@Base 5 ++ __interceptor_sscanf@Base 4.9 ++ __interceptor_stat64@Base 13 ++ __interceptor_stat@Base 13 ++ __interceptor_statfs64@Base 4.9 ++ __interceptor_statfs@Base 4.9 ++ __interceptor_statvfs64@Base 4.9 ++ __interceptor_statvfs@Base 4.9 ++ __interceptor_strcasecmp@Base 4.9 ++ __interceptor_strcasestr@Base 6 ++ __interceptor_strchr@Base 4.9 ++ __interceptor_strchrnul@Base 4.9 ++ __interceptor_strcmp@Base 4.9 ++ __interceptor_strcpy@Base 4.9 ++ __interceptor_strcspn@Base 6 ++ __interceptor_strdup@Base 4.9 ++ __interceptor_strerror@Base 4.9 ++ __interceptor_strerror_r@Base 4.9 ++ __interceptor_strlen@Base 4.9 ++ __interceptor_strncasecmp@Base 4.9 ++ __interceptor_strncmp@Base 4.9 ++ __interceptor_strncpy@Base 4.9 ++ __interceptor_strndup@Base 8 ++ __interceptor_strnlen@Base 7 ++ __interceptor_strpbrk@Base 6 ++ __interceptor_strptime@Base 4.9 ++ __interceptor_strrchr@Base 4.9 ++ __interceptor_strspn@Base 6 ++ __interceptor_strstr@Base 4.9 ++ __interceptor_strtoimax@Base 4.9 ++ __interceptor_strtok@Base 8 ++ __interceptor_strtoumax@Base 4.9 ++ __interceptor_strxfrm@Base 9 ++ __interceptor_strxfrm_l@Base 9 ++ __interceptor_sysinfo@Base 4.9 ++ __interceptor_tcgetattr@Base 4.9 ++ __interceptor_tempnam@Base 4.9 ++ __interceptor_textdomain@Base 4.9 ++ __interceptor_time@Base 4.9 ++ __interceptor_timerfd_gettime@Base 5 ++ __interceptor_timerfd_settime@Base 5 ++ __interceptor_times@Base 4.9 ++ __interceptor_tmpfile64@Base 5 ++ __interceptor_tmpfile@Base 5 ++ __interceptor_tmpnam@Base 4.9 ++ __interceptor_tmpnam_r@Base 4.9 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___b64_ntop@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___b64_pton@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___bzero@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___close@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___cxa_atexit@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___fprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___fxstat64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___fxstat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___getdelim@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_fscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_scanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_sscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_strtoimax@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_strtoumax@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vfscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc23_vsscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_fprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_fscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_printf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_scanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_snprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_sprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_sscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vfprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vfscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsnprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___isoc99_vsscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___libc_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___lxstat64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___lxstat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___overflow@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___res_iclose@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___snprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___sprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___strndup@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___strxfrm_l@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___tls_get_addr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___uflow@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___underflow@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___vsnprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___vsprintf_chk@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___wcsxfrm_l@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___woverflow@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___wuflow@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___wunderflow@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___xpg_strerror_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___xstat64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline___xstat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline__exit@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_begin@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_begin_1@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline__obstack_newchunk@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_abort@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_accept4@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_accept@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_aligned_alloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_argp_parse@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_asctime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_asctime_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_asprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_atexit@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_backtrace@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_backtrace_symbols@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_bcmp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_bind@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_bsearch@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_bzero@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_calloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_canonicalize_file_name@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_capget@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_capset@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_cfree@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_getcpuclockid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_getres@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_gettime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_clock_settime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_clone@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_close@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_closedir@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_confstr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_connect@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_creat64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_creat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctermid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ctime_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_dl_iterate_phdr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_dlclose@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_dlopen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_dn_comp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_dn_expand@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_drand48_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup2@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup3@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_dup@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_endgrent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_endpwent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_create1@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_create@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_ctl@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_pwait2@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_pwait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_epoll_wait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_aton@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_aton_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_hostton@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_line@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntoa@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntoa_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ether_ntohost@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd_read@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_eventfd_write@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fclose@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fdopen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fflush@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetgrent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetgrent_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetpwent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetpwent_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgets@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fgetxattr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_flistxattr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fmemopen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopen64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fopencookie@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fork@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fputs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fread@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_free@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_freopen64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_freopen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexpf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_frexpl@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstat64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatfs64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatfs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatvfs64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fstatvfs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ftime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_fwrite@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_get_current_dir_name@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getaddrinfo@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getcwd@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getdelim@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getentropy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrent_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrgid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrgid_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrnam@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrnam_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgrouplist@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getgroups@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyaddr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyaddr_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname2@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname2_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostbyname_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gethostent_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getifaddrs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getitimer@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getline@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getloadavg@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getmntent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getmntent_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnameinfo@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetbyaddr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetbyname@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getnetent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpass@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpeername@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobyname@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobyname_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobynumber@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotobynumber_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotoent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getprotoent_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwent_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwnam@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwnam_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwuid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getpwuid_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getrandom@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getresgid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getresuid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getsockname@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getsockopt@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gettimeofday@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getusershell@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutline@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getutxline@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_getxattr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_glob64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_glob@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gmtime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_gmtime_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_iconv@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_if_indextoname@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_if_nametoindex@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_aton@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_ntop@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_inet_pton@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_initgroups@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_inotify_init1@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_inotify_init@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ioctl@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_kill@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgamma@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgamma_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammaf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammaf_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammal@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgammal_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lgetxattr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_listen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_listxattr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_llistxattr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_localtime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_localtime_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_longjmp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lrand48_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lstat64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_lstat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_malloc_usable_size@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbsnrtowcs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbsrtowcs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mbstowcs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mcheck_pedantic@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memchr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memcmp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memcpy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memmem@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memmove@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memrchr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_memset@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mincore@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mktime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mlockall@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mmap64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mmap@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_modf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_modff@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_modfl@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprobe@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_mprotect@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_msgrcv@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_msgsnd@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_munlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_munlockall@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_munmap@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_name_to_handle_at@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_nanosleep@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_on_exit@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_open64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_open@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_by_handle_at@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_memstream@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_open_wmemstream@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_opendir@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pause@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pclose@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pipe2@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pipe@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_poll@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_popen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_memalign@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_spawn@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_posix_spawnp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ppoll@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_prctl@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pread64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pread@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv2@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_preadv@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_printf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_process_vm_readv@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_process_vm_writev@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getdetachstate@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getguardsize@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getinheritsched@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getschedparam@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getscope@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getstack@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_attr_getstacksize@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_init@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrier_wait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_broadcast@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_clockwait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_init@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_signal@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_timedwait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_cond_wait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_condattr_getclock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_condattr_getpshared@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_create@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_detach@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_exit@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getaffinity_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getcpuclockid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getname_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_getschedparam@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_join@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_kill@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_clocklock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_init@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_lock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_timedlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_trylock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutex_unlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_mutexattr_gettype@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_once@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_init@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_rdlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_timedrdlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_timedwrlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_tryrdlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_trywrlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_unlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlock_wrlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setcancelstate@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setcanceltype@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_setname_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_sigmask@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_init@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_lock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_trylock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_spin_unlock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_timedjoin_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pthread_tryjoin_np@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptrace@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptsname@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ptsname_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_puts@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pututxline@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pvalloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwrite64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwrite@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev2@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_pwritev@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_qsort@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_qsort_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_raise@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_rand_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_random_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_read@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir64_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_readdir_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_readlink@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_readlinkat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_readv@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_realloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_reallocarray@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_realpath@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_recv@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvfrom@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvmmsg@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_recvmsg@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_regcomp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_regerror@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_regexec@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_regfree@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquo@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquof@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_remquol@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_rmdir@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_scandir64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_scandir@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_scanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sched_getaffinity@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sched_getparam@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_getvalue@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_init@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_open@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_post@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_timedwait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_trywait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_unlink@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sem_wait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_send@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendmmsg@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendmsg@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sendto@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_setbuf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_setbuffer@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_setgrent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_setitimer@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_setlinebuf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_setlocale@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_setpwent@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_setvbuf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_shmctl@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaction@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigaltstack@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigandset@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigblock@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigemptyset@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigfillset@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_siglongjmp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_signal@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_signalfd@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigorset@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigpending@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigprocmask@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigsetmask@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigsuspend@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigtimedwait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigwait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sigwaitinfo@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincos@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincosf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sincosl@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sleep@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_snprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_socket@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_socketpair@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_stat64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_stat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_statfs64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_statfs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_statvfs64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_statvfs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcasecmp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcasestr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strchr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strchrnul@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcmp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcpy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strcspn@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strdup@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strerror_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strlen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncasecmp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncmp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strncpy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strndup@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strnlen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strpbrk@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strptime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strrchr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strspn@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strstr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtoimax@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtok@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strtoumax@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strxfrm@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_strxfrm_l@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_sysinfo@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_tcgetattr@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_tempnam@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_textdomain@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_time@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_timerfd_gettime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_timerfd_settime@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_times@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpfile64@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpfile@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpnam@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_tmpnam_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_tsearch@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ttyname@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_ttyname_r@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_uname@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_unlink@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_usleep@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_valloc@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vasprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfork@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vfscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsnprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsprintf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_vsscanf@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait3@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait4@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wait@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_waitid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_waitpid@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcrtomb@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcscat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsdup@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcslen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsncat@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsnlen@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsnrtombs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsrtombs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcstombs@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsxfrm@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wcsxfrm_l@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wctomb@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_wordexp@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_write@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_writev@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_bool@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_bytes@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_char@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_destroy@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_double@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_enum@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_float@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_hyper@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int16_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int32_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int64_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int8_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_int@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_long@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_longlong_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_quad_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_short@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_string@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_char@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_hyper@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_int@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_long@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_longlong_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_quad_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_u_short@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint16_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint32_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint64_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdr_uint8_t@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrmem_create@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrrec_create@Base 15 ++ (arch=!ppc64 !ppc64el)__interceptor_trampoline_xdrstdio_create@Base 15 ++ __interceptor_tsearch@Base 5 ++ __interceptor_ttyname@Base 10 ++ __interceptor_ttyname_r@Base 7 ++ __interceptor_uname@Base 11 ++ __interceptor_unlink@Base 4.9 ++ __interceptor_usleep@Base 4.9 ++ __interceptor_valloc@Base 4.9 ++ __interceptor_vasprintf@Base 5 ++ __interceptor_vfork@Base 5 ++ __interceptor_vfprintf@Base 5 ++ __interceptor_vfscanf@Base 4.9 ++ __interceptor_vprintf@Base 5 ++ __interceptor_vscanf@Base 4.9 ++ __interceptor_vsnprintf@Base 5 ++ __interceptor_vsprintf@Base 5 ++ __interceptor_vsscanf@Base 4.9 ++ __interceptor_wait3@Base 4.9 ++ __interceptor_wait4@Base 4.9 ++ __interceptor_wait@Base 4.9 ++ __interceptor_waitid@Base 4.9 ++ __interceptor_waitpid@Base 4.9 ++ __interceptor_wcrtomb@Base 6 ++ __interceptor_wcscat@Base 8 ++ __interceptor_wcsdup@Base 10 ++ __interceptor_wcslen@Base 8 ++ __interceptor_wcsncat@Base 8 ++ __interceptor_wcsnlen@Base 8 ++ __interceptor_wcsnrtombs@Base 4.9 ++ __interceptor_wcsrtombs@Base 4.9 ++ __interceptor_wcstombs@Base 4.9 ++ __interceptor_wcsxfrm@Base 9 ++ __interceptor_wcsxfrm_l@Base 9 ++ __interceptor_wctomb@Base 10 ++ __interceptor_wordexp@Base 4.9 ++ __interceptor_write@Base 4.9 ++ __interceptor_writev@Base 4.9 ++ __interceptor_xdr_bool@Base 5 ++ __interceptor_xdr_bytes@Base 5 ++ __interceptor_xdr_char@Base 5 ++ __interceptor_xdr_destroy@Base 11 ++ __interceptor_xdr_double@Base 5 ++ __interceptor_xdr_enum@Base 5 ++ __interceptor_xdr_float@Base 5 ++ __interceptor_xdr_hyper@Base 5 ++ __interceptor_xdr_int16_t@Base 5 ++ __interceptor_xdr_int32_t@Base 5 ++ __interceptor_xdr_int64_t@Base 5 ++ __interceptor_xdr_int8_t@Base 5 ++ __interceptor_xdr_int@Base 5 ++ __interceptor_xdr_long@Base 5 ++ __interceptor_xdr_longlong_t@Base 5 ++ __interceptor_xdr_quad_t@Base 5 ++ __interceptor_xdr_short@Base 5 ++ __interceptor_xdr_string@Base 5 ++ __interceptor_xdr_u_char@Base 5 ++ __interceptor_xdr_u_hyper@Base 5 ++ __interceptor_xdr_u_int@Base 5 ++ __interceptor_xdr_u_long@Base 5 ++ __interceptor_xdr_u_longlong_t@Base 5 ++ __interceptor_xdr_u_quad_t@Base 5 ++ __interceptor_xdr_u_short@Base 5 ++ __interceptor_xdr_uint16_t@Base 5 ++ __interceptor_xdr_uint32_t@Base 5 ++ __interceptor_xdr_uint64_t@Base 5 ++ __interceptor_xdr_uint8_t@Base 5 ++ __interceptor_xdrmem_create@Base 5 ++ __interceptor_xdrrec_create@Base 11 ++ __interceptor_xdrstdio_create@Base 5 ++ __isoc23_fscanf@Base 14 ++ __isoc23_scanf@Base 14 ++ __isoc23_sscanf@Base 14 ++ __isoc23_strtoimax@Base 14 ++ __isoc23_strtoumax@Base 14 ++ __isoc23_vfscanf@Base 14 ++ __isoc23_vscanf@Base 14 ++ __isoc23_vsscanf@Base 14 ++ __isoc99_fprintf@Base 5 ++ __isoc99_fscanf@Base 4.9 ++ __isoc99_printf@Base 5 ++ __isoc99_scanf@Base 4.9 ++ __isoc99_snprintf@Base 5 ++ __isoc99_sprintf@Base 5 ++ __isoc99_sscanf@Base 4.9 ++ __isoc99_vfprintf@Base 5 ++ __isoc99_vfscanf@Base 4.9 ++ __isoc99_vprintf@Base 5 ++ __isoc99_vscanf@Base 4.9 ++ __isoc99_vsnprintf@Base 5 ++ __isoc99_vsprintf@Base 5 ++ __isoc99_vsscanf@Base 4.9 ++ __libc_memalign@Base 4.9 ++ __lxstat64@Base 4.9 ++ __lxstat@Base 4.9 ++ __overflow@Base 5 ++ __res_iclose@Base 4.9 ++ __sancov_default_options@Base 8 ++ __sancov_lowest_stack@Base 8 ++ __sanitizer_acquire_crash_state@Base 9 ++ __sanitizer_cov_8bit_counters_init@Base 8 ++ __sanitizer_cov_bool_flag_init@Base 11 ++ __sanitizer_cov_dump@Base 4.9 ++ __sanitizer_cov_load16@Base 13 ++ __sanitizer_cov_load1@Base 13 ++ __sanitizer_cov_load2@Base 13 ++ __sanitizer_cov_load4@Base 13 ++ __sanitizer_cov_load8@Base 13 ++ __sanitizer_cov_pcs_init@Base 8 ++ __sanitizer_cov_reset@Base 8 ++ __sanitizer_cov_store16@Base 13 ++ __sanitizer_cov_store1@Base 13 ++ __sanitizer_cov_store2@Base 13 ++ __sanitizer_cov_store4@Base 13 ++ __sanitizer_cov_store8@Base 13 ++ __sanitizer_cov_trace_cmp1@Base 7 ++ __sanitizer_cov_trace_cmp2@Base 7 ++ __sanitizer_cov_trace_cmp4@Base 7 ++ __sanitizer_cov_trace_cmp8@Base 7 ++ __sanitizer_cov_trace_cmp@Base 6 ++ __sanitizer_cov_trace_const_cmp1@Base 8 ++ __sanitizer_cov_trace_const_cmp2@Base 8 ++ __sanitizer_cov_trace_const_cmp4@Base 8 ++ __sanitizer_cov_trace_const_cmp8@Base 8 ++ __sanitizer_cov_trace_div4@Base 7 ++ __sanitizer_cov_trace_div8@Base 7 ++ __sanitizer_cov_trace_gep@Base 7 ++ __sanitizer_cov_trace_pc_guard@Base 7 ++ __sanitizer_cov_trace_pc_guard_init@Base 7 ++ __sanitizer_cov_trace_pc_indir@Base 7 ++ __sanitizer_cov_trace_switch@Base 6 ++ __sanitizer_dump_coverage@Base 8 ++ __sanitizer_dump_trace_pc_guard_coverage@Base 8 ++ __sanitizer_free_hook@Base 5 ++ __sanitizer_get_allocated_begin@Base 14 ++ __sanitizer_get_allocated_size@Base 5 ++ __sanitizer_get_allocated_size_fast@Base 14 ++ __sanitizer_get_current_allocated_bytes@Base 5 ++ __sanitizer_get_dtls_size@Base 15 ++ __sanitizer_get_estimated_allocated_size@Base 5 ++ __sanitizer_get_free_bytes@Base 5 ++ __sanitizer_get_heap_size@Base 5 ++ __sanitizer_get_module_and_offset_for_pc@Base 8 ++ __sanitizer_get_ownership@Base 5 ++ __sanitizer_get_report_path@Base 13 ++ __sanitizer_get_unmapped_bytes@Base 5 ++ __sanitizer_ignore_free_hook@Base 15 ++ __sanitizer_install_malloc_and_free_hooks@Base 7 ++ __sanitizer_internal_memcpy@Base 14 ++ __sanitizer_internal_memmove@Base 14 ++ __sanitizer_internal_memset@Base 14 ++ __sanitizer_malloc_hook@Base 5 ++ __sanitizer_on_print@Base 10 ++ __sanitizer_print_stack_trace@Base 5 ++ __sanitizer_purge_allocator@Base 14 ++ __sanitizer_report_error_summary@Base 4.9 ++ __sanitizer_sandbox_on_notify@Base 4.9 ++ __sanitizer_set_death_callback@Base 6 ++ __sanitizer_set_report_fd@Base 7 ++ __sanitizer_set_report_path@Base 4.9 ++ __sanitizer_symbolize_global@Base 7 ++ __sanitizer_symbolize_pc@Base 7 ++ __sanitizer_syscall_post_impl_accept4@Base 4.9 ++ __sanitizer_syscall_post_impl_accept@Base 4.9 ++ __sanitizer_syscall_post_impl_access@Base 4.9 ++ __sanitizer_syscall_post_impl_acct@Base 4.9 ++ __sanitizer_syscall_post_impl_add_key@Base 4.9 ++ __sanitizer_syscall_post_impl_adjtimex@Base 4.9 ++ __sanitizer_syscall_post_impl_alarm@Base 4.9 ++ __sanitizer_syscall_post_impl_bdflush@Base 4.9 ++ __sanitizer_syscall_post_impl_bind@Base 4.9 ++ __sanitizer_syscall_post_impl_brk@Base 4.9 ++ __sanitizer_syscall_post_impl_capget@Base 4.9 ++ __sanitizer_syscall_post_impl_capset@Base 4.9 ++ __sanitizer_syscall_post_impl_chdir@Base 4.9 ++ __sanitizer_syscall_post_impl_chmod@Base 4.9 ++ __sanitizer_syscall_post_impl_chown@Base 4.9 ++ __sanitizer_syscall_post_impl_chroot@Base 4.9 ++ __sanitizer_syscall_post_impl_clock_adjtime@Base 4.9 ++ __sanitizer_syscall_post_impl_clock_getres@Base 4.9 ++ __sanitizer_syscall_post_impl_clock_gettime@Base 4.9 ++ __sanitizer_syscall_post_impl_clock_nanosleep@Base 4.9 ++ __sanitizer_syscall_post_impl_clock_settime@Base 4.9 ++ __sanitizer_syscall_post_impl_close@Base 4.9 ++ __sanitizer_syscall_post_impl_connect@Base 4.9 ++ __sanitizer_syscall_post_impl_creat@Base 4.9 ++ __sanitizer_syscall_post_impl_delete_module@Base 4.9 ++ __sanitizer_syscall_post_impl_dup2@Base 4.9 ++ __sanitizer_syscall_post_impl_dup3@Base 4.9 ++ __sanitizer_syscall_post_impl_dup@Base 4.9 ++ __sanitizer_syscall_post_impl_epoll_create1@Base 4.9 ++ __sanitizer_syscall_post_impl_epoll_create@Base 4.9 ++ __sanitizer_syscall_post_impl_epoll_ctl@Base 4.9 ++ __sanitizer_syscall_post_impl_epoll_pwait2@Base 13 ++ __sanitizer_syscall_post_impl_epoll_pwait@Base 4.9 ++ __sanitizer_syscall_post_impl_epoll_wait@Base 4.9 ++ __sanitizer_syscall_post_impl_eventfd2@Base 4.9 ++ __sanitizer_syscall_post_impl_eventfd@Base 4.9 ++ __sanitizer_syscall_post_impl_exit@Base 4.9 ++ __sanitizer_syscall_post_impl_exit_group@Base 4.9 ++ __sanitizer_syscall_post_impl_faccessat@Base 4.9 ++ __sanitizer_syscall_post_impl_fchdir@Base 4.9 ++ __sanitizer_syscall_post_impl_fchmod@Base 4.9 ++ __sanitizer_syscall_post_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat@Base 4.9 ++ __sanitizer_syscall_post_impl_fchown@Base 4.9 ++ __sanitizer_syscall_post_impl_fchownat@Base 4.9 ++ __sanitizer_syscall_post_impl_fcntl64@Base 4.9 ++ __sanitizer_syscall_post_impl_fcntl@Base 4.9 ++ __sanitizer_syscall_post_impl_fdatasync@Base 4.9 ++ __sanitizer_syscall_post_impl_fgetxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_flistxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_flock@Base 4.9 ++ __sanitizer_syscall_post_impl_fork@Base 4.9 ++ __sanitizer_syscall_post_impl_fremovexattr@Base 4.9 ++ __sanitizer_syscall_post_impl_fsetxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_fstat64@Base 4.9 ++ __sanitizer_syscall_post_impl_fstat@Base 4.9 ++ __sanitizer_syscall_post_impl_fstatat64@Base 4.9 ++ __sanitizer_syscall_post_impl_fstatfs64@Base 4.9 ++ __sanitizer_syscall_post_impl_fstatfs@Base 4.9 ++ __sanitizer_syscall_post_impl_fsync@Base 4.9 ++ __sanitizer_syscall_post_impl_ftruncate@Base 4.9 ++ __sanitizer_syscall_post_impl_futex@Base 15 ++ __sanitizer_syscall_post_impl_futimesat@Base 4.9 ++ __sanitizer_syscall_post_impl_get_mempolicy@Base 4.9 ++ __sanitizer_syscall_post_impl_get_robust_list@Base 4.9 ++ __sanitizer_syscall_post_impl_getcpu@Base 4.9 ++ __sanitizer_syscall_post_impl_getcwd@Base 4.9 ++ __sanitizer_syscall_post_impl_getdents64@Base 4.9 ++ __sanitizer_syscall_post_impl_getdents@Base 4.9 ++ __sanitizer_syscall_post_impl_getegid@Base 4.9 ++ __sanitizer_syscall_post_impl_geteuid@Base 4.9 ++ __sanitizer_syscall_post_impl_getgid@Base 4.9 ++ __sanitizer_syscall_post_impl_getgroups@Base 4.9 ++ __sanitizer_syscall_post_impl_gethostname@Base 4.9 ++ __sanitizer_syscall_post_impl_getitimer@Base 4.9 ++ __sanitizer_syscall_post_impl_getpeername@Base 4.9 ++ __sanitizer_syscall_post_impl_getpgid@Base 4.9 ++ __sanitizer_syscall_post_impl_getpgrp@Base 4.9 ++ __sanitizer_syscall_post_impl_getpid@Base 4.9 ++ __sanitizer_syscall_post_impl_getppid@Base 4.9 ++ __sanitizer_syscall_post_impl_getpriority@Base 4.9 ++ __sanitizer_syscall_post_impl_getrandom@Base 10 ++ __sanitizer_syscall_post_impl_getresgid@Base 4.9 ++ __sanitizer_syscall_post_impl_getresuid@Base 4.9 ++ __sanitizer_syscall_post_impl_getrlimit@Base 4.9 ++ __sanitizer_syscall_post_impl_getrusage@Base 4.9 ++ __sanitizer_syscall_post_impl_getsid@Base 4.9 ++ __sanitizer_syscall_post_impl_getsockname@Base 4.9 ++ __sanitizer_syscall_post_impl_getsockopt@Base 4.9 ++ __sanitizer_syscall_post_impl_gettid@Base 4.9 ++ __sanitizer_syscall_post_impl_gettimeofday@Base 4.9 ++ __sanitizer_syscall_post_impl_getuid@Base 4.9 ++ __sanitizer_syscall_post_impl_getxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_init_module@Base 4.9 ++ __sanitizer_syscall_post_impl_inotify_add_watch@Base 4.9 ++ __sanitizer_syscall_post_impl_inotify_init1@Base 4.9 ++ __sanitizer_syscall_post_impl_inotify_init@Base 4.9 ++ __sanitizer_syscall_post_impl_inotify_rm_watch@Base 4.9 ++ __sanitizer_syscall_post_impl_io_cancel@Base 4.9 ++ __sanitizer_syscall_post_impl_io_destroy@Base 4.9 ++ __sanitizer_syscall_post_impl_io_getevents@Base 4.9 ++ __sanitizer_syscall_post_impl_io_setup@Base 4.9 ++ __sanitizer_syscall_post_impl_io_submit@Base 4.9 ++ __sanitizer_syscall_post_impl_ioctl@Base 4.9 ++ __sanitizer_syscall_post_impl_ioperm@Base 4.9 ++ __sanitizer_syscall_post_impl_ioprio_get@Base 4.9 ++ __sanitizer_syscall_post_impl_ioprio_set@Base 4.9 ++ __sanitizer_syscall_post_impl_ipc@Base 4.9 ++ __sanitizer_syscall_post_impl_kexec_load@Base 4.9 ++ __sanitizer_syscall_post_impl_keyctl@Base 4.9 ++ __sanitizer_syscall_post_impl_kill@Base 4.9 ++ __sanitizer_syscall_post_impl_lchown@Base 4.9 ++ __sanitizer_syscall_post_impl_lgetxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_link@Base 4.9 ++ __sanitizer_syscall_post_impl_linkat@Base 4.9 ++ __sanitizer_syscall_post_impl_listen@Base 4.9 ++ __sanitizer_syscall_post_impl_listxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_llistxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_llseek@Base 4.9 ++ __sanitizer_syscall_post_impl_lookup_dcookie@Base 4.9 ++ __sanitizer_syscall_post_impl_lremovexattr@Base 4.9 ++ __sanitizer_syscall_post_impl_lseek@Base 4.9 ++ __sanitizer_syscall_post_impl_lsetxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_lstat64@Base 4.9 ++ __sanitizer_syscall_post_impl_lstat@Base 4.9 ++ __sanitizer_syscall_post_impl_madvise@Base 4.9 ++ __sanitizer_syscall_post_impl_mbind@Base 4.9 ++ __sanitizer_syscall_post_impl_migrate_pages@Base 4.9 ++ __sanitizer_syscall_post_impl_mincore@Base 4.9 ++ __sanitizer_syscall_post_impl_mkdir@Base 4.9 ++ __sanitizer_syscall_post_impl_mkdirat@Base 4.9 ++ __sanitizer_syscall_post_impl_mknod@Base 4.9 ++ __sanitizer_syscall_post_impl_mknodat@Base 4.9 ++ __sanitizer_syscall_post_impl_mlock@Base 4.9 ++ __sanitizer_syscall_post_impl_mlockall@Base 4.9 ++ __sanitizer_syscall_post_impl_mmap_pgoff@Base 4.9 ++ __sanitizer_syscall_post_impl_mount@Base 4.9 ++ __sanitizer_syscall_post_impl_move_pages@Base 4.9 ++ __sanitizer_syscall_post_impl_mprotect@Base 4.9 ++ __sanitizer_syscall_post_impl_mq_getsetattr@Base 4.9 ++ __sanitizer_syscall_post_impl_mq_notify@Base 4.9 ++ __sanitizer_syscall_post_impl_mq_open@Base 4.9 ++ __sanitizer_syscall_post_impl_mq_timedreceive@Base 4.9 ++ __sanitizer_syscall_post_impl_mq_timedsend@Base 4.9 ++ __sanitizer_syscall_post_impl_mq_unlink@Base 4.9 ++ __sanitizer_syscall_post_impl_mremap@Base 4.9 ++ __sanitizer_syscall_post_impl_msgctl@Base 4.9 ++ __sanitizer_syscall_post_impl_msgget@Base 4.9 ++ __sanitizer_syscall_post_impl_msgrcv@Base 4.9 ++ __sanitizer_syscall_post_impl_msgsnd@Base 4.9 ++ __sanitizer_syscall_post_impl_msync@Base 4.9 ++ __sanitizer_syscall_post_impl_munlock@Base 4.9 ++ __sanitizer_syscall_post_impl_munlockall@Base 4.9 ++ __sanitizer_syscall_post_impl_munmap@Base 4.9 ++ __sanitizer_syscall_post_impl_name_to_handle_at@Base 4.9 ++ __sanitizer_syscall_post_impl_nanosleep@Base 4.9 ++ __sanitizer_syscall_post_impl_newfstat@Base 4.9 ++ __sanitizer_syscall_post_impl_newfstatat@Base 4.9 ++ __sanitizer_syscall_post_impl_newlstat@Base 4.9 ++ __sanitizer_syscall_post_impl_newstat@Base 4.9 ++ __sanitizer_syscall_post_impl_newuname@Base 4.9 ++ __sanitizer_syscall_post_impl_ni_syscall@Base 4.9 ++ __sanitizer_syscall_post_impl_nice@Base 4.9 ++ __sanitizer_syscall_post_impl_old_getrlimit@Base 4.9 ++ __sanitizer_syscall_post_impl_old_mmap@Base 4.9 ++ __sanitizer_syscall_post_impl_old_readdir@Base 4.9 ++ __sanitizer_syscall_post_impl_old_select@Base 4.9 ++ __sanitizer_syscall_post_impl_oldumount@Base 4.9 ++ __sanitizer_syscall_post_impl_olduname@Base 4.9 ++ __sanitizer_syscall_post_impl_open@Base 4.9 ++ __sanitizer_syscall_post_impl_open_by_handle_at@Base 4.9 ++ __sanitizer_syscall_post_impl_openat@Base 4.9 ++ __sanitizer_syscall_post_impl_pause@Base 4.9 ++ __sanitizer_syscall_post_impl_pciconfig_iobase@Base 4.9 ++ __sanitizer_syscall_post_impl_pciconfig_read@Base 4.9 ++ __sanitizer_syscall_post_impl_pciconfig_write@Base 4.9 ++ __sanitizer_syscall_post_impl_perf_event_open@Base 4.9 ++ __sanitizer_syscall_post_impl_personality@Base 4.9 ++ __sanitizer_syscall_post_impl_pipe2@Base 4.9 ++ __sanitizer_syscall_post_impl_pipe@Base 4.9 ++ __sanitizer_syscall_post_impl_pivot_root@Base 4.9 ++ __sanitizer_syscall_post_impl_poll@Base 4.9 ++ __sanitizer_syscall_post_impl_ppoll@Base 4.9 ++ __sanitizer_syscall_post_impl_pread64@Base 4.9 ++ __sanitizer_syscall_post_impl_preadv@Base 4.9 ++ __sanitizer_syscall_post_impl_prlimit64@Base 4.9 ++ __sanitizer_syscall_post_impl_process_vm_readv@Base 4.9 ++ __sanitizer_syscall_post_impl_process_vm_writev@Base 4.9 ++ __sanitizer_syscall_post_impl_pselect6@Base 4.9 ++ __sanitizer_syscall_post_impl_ptrace@Base 4.9 ++ __sanitizer_syscall_post_impl_pwrite64@Base 4.9 ++ __sanitizer_syscall_post_impl_pwritev@Base 4.9 ++ __sanitizer_syscall_post_impl_quotactl@Base 4.9 ++ __sanitizer_syscall_post_impl_read@Base 4.9 ++ __sanitizer_syscall_post_impl_readlink@Base 4.9 ++ __sanitizer_syscall_post_impl_readlinkat@Base 4.9 ++ __sanitizer_syscall_post_impl_readv@Base 4.9 ++ __sanitizer_syscall_post_impl_reboot@Base 4.9 ++ __sanitizer_syscall_post_impl_recv@Base 4.9 ++ __sanitizer_syscall_post_impl_recvfrom@Base 4.9 ++ __sanitizer_syscall_post_impl_recvmmsg@Base 4.9 ++ __sanitizer_syscall_post_impl_recvmsg@Base 4.9 ++ __sanitizer_syscall_post_impl_remap_file_pages@Base 4.9 ++ __sanitizer_syscall_post_impl_removexattr@Base 4.9 ++ __sanitizer_syscall_post_impl_rename@Base 4.9 ++ __sanitizer_syscall_post_impl_renameat@Base 4.9 ++ __sanitizer_syscall_post_impl_request_key@Base 4.9 ++ __sanitizer_syscall_post_impl_restart_syscall@Base 4.9 ++ __sanitizer_syscall_post_impl_rmdir@Base 4.9 ++ __sanitizer_syscall_post_impl_rt_sigaction@Base 7 ++ __sanitizer_syscall_post_impl_rt_sigpending@Base 4.9 ++ __sanitizer_syscall_post_impl_rt_sigprocmask@Base 4.9 ++ __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 4.9 ++ __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 4.9 ++ __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_get_priority_max@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_get_priority_min@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_getaffinity@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_getparam@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_getscheduler@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_setaffinity@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_setparam@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_setscheduler@Base 4.9 ++ __sanitizer_syscall_post_impl_sched_yield@Base 4.9 ++ __sanitizer_syscall_post_impl_select@Base 4.9 ++ __sanitizer_syscall_post_impl_semctl@Base 4.9 ++ __sanitizer_syscall_post_impl_semget@Base 4.9 ++ __sanitizer_syscall_post_impl_semop@Base 4.9 ++ __sanitizer_syscall_post_impl_semtimedop@Base 4.9 ++ __sanitizer_syscall_post_impl_send@Base 4.9 ++ __sanitizer_syscall_post_impl_sendfile64@Base 4.9 ++ __sanitizer_syscall_post_impl_sendfile@Base 4.9 ++ __sanitizer_syscall_post_impl_sendmmsg@Base 4.9 ++ __sanitizer_syscall_post_impl_sendmsg@Base 4.9 ++ __sanitizer_syscall_post_impl_sendto@Base 4.9 ++ __sanitizer_syscall_post_impl_set_mempolicy@Base 4.9 ++ __sanitizer_syscall_post_impl_set_robust_list@Base 4.9 ++ __sanitizer_syscall_post_impl_set_tid_address@Base 4.9 ++ __sanitizer_syscall_post_impl_setdomainname@Base 4.9 ++ __sanitizer_syscall_post_impl_setfsgid@Base 4.9 ++ __sanitizer_syscall_post_impl_setfsuid@Base 4.9 ++ __sanitizer_syscall_post_impl_setgid@Base 4.9 ++ __sanitizer_syscall_post_impl_setgroups@Base 4.9 ++ __sanitizer_syscall_post_impl_sethostname@Base 4.9 ++ __sanitizer_syscall_post_impl_setitimer@Base 4.9 ++ __sanitizer_syscall_post_impl_setns@Base 4.9 ++ __sanitizer_syscall_post_impl_setpgid@Base 4.9 ++ __sanitizer_syscall_post_impl_setpriority@Base 4.9 ++ __sanitizer_syscall_post_impl_setregid@Base 4.9 ++ __sanitizer_syscall_post_impl_setresgid@Base 4.9 ++ __sanitizer_syscall_post_impl_setresuid@Base 4.9 ++ __sanitizer_syscall_post_impl_setreuid@Base 4.9 ++ __sanitizer_syscall_post_impl_setrlimit@Base 4.9 ++ __sanitizer_syscall_post_impl_setsid@Base 4.9 ++ __sanitizer_syscall_post_impl_setsockopt@Base 4.9 ++ __sanitizer_syscall_post_impl_settimeofday@Base 4.9 ++ __sanitizer_syscall_post_impl_setuid@Base 4.9 ++ __sanitizer_syscall_post_impl_setxattr@Base 4.9 ++ __sanitizer_syscall_post_impl_sgetmask@Base 4.9 ++ __sanitizer_syscall_post_impl_shmat@Base 4.9 ++ __sanitizer_syscall_post_impl_shmctl@Base 4.9 ++ __sanitizer_syscall_post_impl_shmdt@Base 4.9 ++ __sanitizer_syscall_post_impl_shmget@Base 4.9 ++ __sanitizer_syscall_post_impl_shutdown@Base 4.9 ++ __sanitizer_syscall_post_impl_sigaction@Base 7 ++ __sanitizer_syscall_post_impl_sigaltstack@Base 11 ++ __sanitizer_syscall_post_impl_signal@Base 4.9 ++ __sanitizer_syscall_post_impl_signalfd4@Base 4.9 ++ __sanitizer_syscall_post_impl_signalfd@Base 4.9 ++ __sanitizer_syscall_post_impl_sigpending@Base 4.9 ++ __sanitizer_syscall_post_impl_sigprocmask@Base 4.9 ++ __sanitizer_syscall_post_impl_socket@Base 4.9 ++ __sanitizer_syscall_post_impl_socketcall@Base 4.9 ++ __sanitizer_syscall_post_impl_socketpair@Base 4.9 ++ __sanitizer_syscall_post_impl_splice@Base 4.9 ++ __sanitizer_syscall_post_impl_spu_create@Base 4.9 ++ __sanitizer_syscall_post_impl_spu_run@Base 4.9 ++ __sanitizer_syscall_post_impl_ssetmask@Base 4.9 ++ __sanitizer_syscall_post_impl_stat64@Base 4.9 ++ __sanitizer_syscall_post_impl_stat@Base 4.9 ++ __sanitizer_syscall_post_impl_statfs64@Base 4.9 ++ __sanitizer_syscall_post_impl_statfs@Base 4.9 ++ __sanitizer_syscall_post_impl_stime@Base 4.9 ++ __sanitizer_syscall_post_impl_swapoff@Base 4.9 ++ __sanitizer_syscall_post_impl_swapon@Base 4.9 ++ __sanitizer_syscall_post_impl_symlink@Base 4.9 ++ __sanitizer_syscall_post_impl_symlinkat@Base 4.9 ++ __sanitizer_syscall_post_impl_sync@Base 4.9 ++ __sanitizer_syscall_post_impl_syncfs@Base 4.9 ++ __sanitizer_syscall_post_impl_sysctl@Base 4.9 ++ __sanitizer_syscall_post_impl_sysfs@Base 4.9 ++ __sanitizer_syscall_post_impl_sysinfo@Base 4.9 ++ __sanitizer_syscall_post_impl_syslog@Base 4.9 ++ __sanitizer_syscall_post_impl_tee@Base 4.9 ++ __sanitizer_syscall_post_impl_tgkill@Base 4.9 ++ __sanitizer_syscall_post_impl_time@Base 4.9 ++ __sanitizer_syscall_post_impl_timer_create@Base 4.9 ++ __sanitizer_syscall_post_impl_timer_delete@Base 4.9 ++ __sanitizer_syscall_post_impl_timer_getoverrun@Base 4.9 ++ __sanitizer_syscall_post_impl_timer_gettime@Base 4.9 ++ __sanitizer_syscall_post_impl_timer_settime@Base 4.9 ++ __sanitizer_syscall_post_impl_timerfd_create@Base 4.9 ++ __sanitizer_syscall_post_impl_timerfd_gettime@Base 4.9 ++ __sanitizer_syscall_post_impl_timerfd_settime@Base 4.9 ++ __sanitizer_syscall_post_impl_times@Base 4.9 ++ __sanitizer_syscall_post_impl_tkill@Base 4.9 ++ __sanitizer_syscall_post_impl_truncate@Base 4.9 ++ __sanitizer_syscall_post_impl_umask@Base 4.9 ++ __sanitizer_syscall_post_impl_umount@Base 4.9 ++ __sanitizer_syscall_post_impl_uname@Base 4.9 ++ __sanitizer_syscall_post_impl_unlink@Base 4.9 ++ __sanitizer_syscall_post_impl_unlinkat@Base 4.9 ++ __sanitizer_syscall_post_impl_unshare@Base 4.9 ++ __sanitizer_syscall_post_impl_uselib@Base 4.9 ++ __sanitizer_syscall_post_impl_ustat@Base 4.9 ++ __sanitizer_syscall_post_impl_utime@Base 4.9 ++ __sanitizer_syscall_post_impl_utimensat@Base 4.9 ++ __sanitizer_syscall_post_impl_utimes@Base 4.9 ++ __sanitizer_syscall_post_impl_vfork@Base 4.9 ++ __sanitizer_syscall_post_impl_vhangup@Base 4.9 ++ __sanitizer_syscall_post_impl_vmsplice@Base 4.9 ++ __sanitizer_syscall_post_impl_wait4@Base 4.9 ++ __sanitizer_syscall_post_impl_waitid@Base 4.9 ++ __sanitizer_syscall_post_impl_waitpid@Base 4.9 ++ __sanitizer_syscall_post_impl_write@Base 4.9 ++ __sanitizer_syscall_post_impl_writev@Base 4.9 ++ __sanitizer_syscall_pre_impl_accept4@Base 4.9 ++ __sanitizer_syscall_pre_impl_accept@Base 4.9 ++ __sanitizer_syscall_pre_impl_access@Base 4.9 ++ __sanitizer_syscall_pre_impl_acct@Base 4.9 ++ __sanitizer_syscall_pre_impl_add_key@Base 4.9 ++ __sanitizer_syscall_pre_impl_adjtimex@Base 4.9 ++ __sanitizer_syscall_pre_impl_alarm@Base 4.9 ++ __sanitizer_syscall_pre_impl_bdflush@Base 4.9 ++ __sanitizer_syscall_pre_impl_bind@Base 4.9 ++ __sanitizer_syscall_pre_impl_brk@Base 4.9 ++ __sanitizer_syscall_pre_impl_capget@Base 4.9 ++ __sanitizer_syscall_pre_impl_capset@Base 4.9 ++ __sanitizer_syscall_pre_impl_chdir@Base 4.9 ++ __sanitizer_syscall_pre_impl_chmod@Base 4.9 ++ __sanitizer_syscall_pre_impl_chown@Base 4.9 ++ __sanitizer_syscall_pre_impl_chroot@Base 4.9 ++ __sanitizer_syscall_pre_impl_clock_adjtime@Base 4.9 ++ __sanitizer_syscall_pre_impl_clock_getres@Base 4.9 ++ __sanitizer_syscall_pre_impl_clock_gettime@Base 4.9 ++ __sanitizer_syscall_pre_impl_clock_nanosleep@Base 4.9 ++ __sanitizer_syscall_pre_impl_clock_settime@Base 4.9 ++ __sanitizer_syscall_pre_impl_close@Base 4.9 ++ __sanitizer_syscall_pre_impl_connect@Base 4.9 ++ __sanitizer_syscall_pre_impl_creat@Base 4.9 ++ __sanitizer_syscall_pre_impl_delete_module@Base 4.9 ++ __sanitizer_syscall_pre_impl_dup2@Base 4.9 ++ __sanitizer_syscall_pre_impl_dup3@Base 4.9 ++ __sanitizer_syscall_pre_impl_dup@Base 4.9 ++ __sanitizer_syscall_pre_impl_epoll_create1@Base 4.9 ++ __sanitizer_syscall_pre_impl_epoll_create@Base 4.9 ++ __sanitizer_syscall_pre_impl_epoll_ctl@Base 4.9 ++ __sanitizer_syscall_pre_impl_epoll_pwait2@Base 13 ++ __sanitizer_syscall_pre_impl_epoll_pwait@Base 4.9 ++ __sanitizer_syscall_pre_impl_epoll_wait@Base 4.9 ++ __sanitizer_syscall_pre_impl_eventfd2@Base 4.9 ++ __sanitizer_syscall_pre_impl_eventfd@Base 4.9 ++ __sanitizer_syscall_pre_impl_exit@Base 4.9 ++ __sanitizer_syscall_pre_impl_exit_group@Base 4.9 ++ __sanitizer_syscall_pre_impl_faccessat@Base 4.9 ++ __sanitizer_syscall_pre_impl_fchdir@Base 4.9 ++ __sanitizer_syscall_pre_impl_fchmod@Base 4.9 ++ __sanitizer_syscall_pre_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat@Base 4.9 ++ __sanitizer_syscall_pre_impl_fchown@Base 4.9 ++ __sanitizer_syscall_pre_impl_fchownat@Base 4.9 ++ __sanitizer_syscall_pre_impl_fcntl64@Base 4.9 ++ __sanitizer_syscall_pre_impl_fcntl@Base 4.9 ++ __sanitizer_syscall_pre_impl_fdatasync@Base 4.9 ++ __sanitizer_syscall_pre_impl_fgetxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_flistxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_flock@Base 4.9 ++ __sanitizer_syscall_pre_impl_fork@Base 4.9 ++ __sanitizer_syscall_pre_impl_fremovexattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_fsetxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_fstat64@Base 4.9 ++ __sanitizer_syscall_pre_impl_fstat@Base 4.9 ++ __sanitizer_syscall_pre_impl_fstatat64@Base 4.9 ++ __sanitizer_syscall_pre_impl_fstatfs64@Base 4.9 ++ __sanitizer_syscall_pre_impl_fstatfs@Base 4.9 ++ __sanitizer_syscall_pre_impl_fsync@Base 4.9 ++ __sanitizer_syscall_pre_impl_ftruncate@Base 4.9 ++ __sanitizer_syscall_pre_impl_futex@Base 15 ++ __sanitizer_syscall_pre_impl_futimesat@Base 4.9 ++ __sanitizer_syscall_pre_impl_get_mempolicy@Base 4.9 ++ __sanitizer_syscall_pre_impl_get_robust_list@Base 4.9 ++ __sanitizer_syscall_pre_impl_getcpu@Base 4.9 ++ __sanitizer_syscall_pre_impl_getcwd@Base 4.9 ++ __sanitizer_syscall_pre_impl_getdents64@Base 4.9 ++ __sanitizer_syscall_pre_impl_getdents@Base 4.9 ++ __sanitizer_syscall_pre_impl_getegid@Base 4.9 ++ __sanitizer_syscall_pre_impl_geteuid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getgid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getgroups@Base 4.9 ++ __sanitizer_syscall_pre_impl_gethostname@Base 4.9 ++ __sanitizer_syscall_pre_impl_getitimer@Base 4.9 ++ __sanitizer_syscall_pre_impl_getpeername@Base 4.9 ++ __sanitizer_syscall_pre_impl_getpgid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getpgrp@Base 4.9 ++ __sanitizer_syscall_pre_impl_getpid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getppid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getpriority@Base 4.9 ++ __sanitizer_syscall_pre_impl_getrandom@Base 10 ++ __sanitizer_syscall_pre_impl_getresgid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getresuid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getrlimit@Base 4.9 ++ __sanitizer_syscall_pre_impl_getrusage@Base 4.9 ++ __sanitizer_syscall_pre_impl_getsid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getsockname@Base 4.9 ++ __sanitizer_syscall_pre_impl_getsockopt@Base 4.9 ++ __sanitizer_syscall_pre_impl_gettid@Base 4.9 ++ __sanitizer_syscall_pre_impl_gettimeofday@Base 4.9 ++ __sanitizer_syscall_pre_impl_getuid@Base 4.9 ++ __sanitizer_syscall_pre_impl_getxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_init_module@Base 4.9 ++ __sanitizer_syscall_pre_impl_inotify_add_watch@Base 4.9 ++ __sanitizer_syscall_pre_impl_inotify_init1@Base 4.9 ++ __sanitizer_syscall_pre_impl_inotify_init@Base 4.9 ++ __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 4.9 ++ __sanitizer_syscall_pre_impl_io_cancel@Base 4.9 ++ __sanitizer_syscall_pre_impl_io_destroy@Base 4.9 ++ __sanitizer_syscall_pre_impl_io_getevents@Base 4.9 ++ __sanitizer_syscall_pre_impl_io_setup@Base 4.9 ++ __sanitizer_syscall_pre_impl_io_submit@Base 4.9 ++ __sanitizer_syscall_pre_impl_ioctl@Base 4.9 ++ __sanitizer_syscall_pre_impl_ioperm@Base 4.9 ++ __sanitizer_syscall_pre_impl_ioprio_get@Base 4.9 ++ __sanitizer_syscall_pre_impl_ioprio_set@Base 4.9 ++ __sanitizer_syscall_pre_impl_ipc@Base 4.9 ++ __sanitizer_syscall_pre_impl_kexec_load@Base 4.9 ++ __sanitizer_syscall_pre_impl_keyctl@Base 4.9 ++ __sanitizer_syscall_pre_impl_kill@Base 4.9 ++ __sanitizer_syscall_pre_impl_lchown@Base 4.9 ++ __sanitizer_syscall_pre_impl_lgetxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_link@Base 4.9 ++ __sanitizer_syscall_pre_impl_linkat@Base 4.9 ++ __sanitizer_syscall_pre_impl_listen@Base 4.9 ++ __sanitizer_syscall_pre_impl_listxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_llistxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_llseek@Base 4.9 ++ __sanitizer_syscall_pre_impl_lookup_dcookie@Base 4.9 ++ __sanitizer_syscall_pre_impl_lremovexattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_lseek@Base 4.9 ++ __sanitizer_syscall_pre_impl_lsetxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_lstat64@Base 4.9 ++ __sanitizer_syscall_pre_impl_lstat@Base 4.9 ++ __sanitizer_syscall_pre_impl_madvise@Base 4.9 ++ __sanitizer_syscall_pre_impl_mbind@Base 4.9 ++ __sanitizer_syscall_pre_impl_migrate_pages@Base 4.9 ++ __sanitizer_syscall_pre_impl_mincore@Base 4.9 ++ __sanitizer_syscall_pre_impl_mkdir@Base 4.9 ++ __sanitizer_syscall_pre_impl_mkdirat@Base 4.9 ++ __sanitizer_syscall_pre_impl_mknod@Base 4.9 ++ __sanitizer_syscall_pre_impl_mknodat@Base 4.9 ++ __sanitizer_syscall_pre_impl_mlock@Base 4.9 ++ __sanitizer_syscall_pre_impl_mlockall@Base 4.9 ++ __sanitizer_syscall_pre_impl_mmap_pgoff@Base 4.9 ++ __sanitizer_syscall_pre_impl_mount@Base 4.9 ++ __sanitizer_syscall_pre_impl_move_pages@Base 4.9 ++ __sanitizer_syscall_pre_impl_mprotect@Base 4.9 ++ __sanitizer_syscall_pre_impl_mq_getsetattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_mq_notify@Base 4.9 ++ __sanitizer_syscall_pre_impl_mq_open@Base 4.9 ++ __sanitizer_syscall_pre_impl_mq_timedreceive@Base 4.9 ++ __sanitizer_syscall_pre_impl_mq_timedsend@Base 4.9 ++ __sanitizer_syscall_pre_impl_mq_unlink@Base 4.9 ++ __sanitizer_syscall_pre_impl_mremap@Base 4.9 ++ __sanitizer_syscall_pre_impl_msgctl@Base 4.9 ++ __sanitizer_syscall_pre_impl_msgget@Base 4.9 ++ __sanitizer_syscall_pre_impl_msgrcv@Base 4.9 ++ __sanitizer_syscall_pre_impl_msgsnd@Base 4.9 ++ __sanitizer_syscall_pre_impl_msync@Base 4.9 ++ __sanitizer_syscall_pre_impl_munlock@Base 4.9 ++ __sanitizer_syscall_pre_impl_munlockall@Base 4.9 ++ __sanitizer_syscall_pre_impl_munmap@Base 4.9 ++ __sanitizer_syscall_pre_impl_name_to_handle_at@Base 4.9 ++ __sanitizer_syscall_pre_impl_nanosleep@Base 4.9 ++ __sanitizer_syscall_pre_impl_newfstat@Base 4.9 ++ __sanitizer_syscall_pre_impl_newfstatat@Base 4.9 ++ __sanitizer_syscall_pre_impl_newlstat@Base 4.9 ++ __sanitizer_syscall_pre_impl_newstat@Base 4.9 ++ __sanitizer_syscall_pre_impl_newuname@Base 4.9 ++ __sanitizer_syscall_pre_impl_ni_syscall@Base 4.9 ++ __sanitizer_syscall_pre_impl_nice@Base 4.9 ++ __sanitizer_syscall_pre_impl_old_getrlimit@Base 4.9 ++ __sanitizer_syscall_pre_impl_old_mmap@Base 4.9 ++ __sanitizer_syscall_pre_impl_old_readdir@Base 4.9 ++ __sanitizer_syscall_pre_impl_old_select@Base 4.9 ++ __sanitizer_syscall_pre_impl_oldumount@Base 4.9 ++ __sanitizer_syscall_pre_impl_olduname@Base 4.9 ++ __sanitizer_syscall_pre_impl_open@Base 4.9 ++ __sanitizer_syscall_pre_impl_open_by_handle_at@Base 4.9 ++ __sanitizer_syscall_pre_impl_openat@Base 4.9 ++ __sanitizer_syscall_pre_impl_pause@Base 4.9 ++ __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 4.9 ++ __sanitizer_syscall_pre_impl_pciconfig_read@Base 4.9 ++ __sanitizer_syscall_pre_impl_pciconfig_write@Base 4.9 ++ __sanitizer_syscall_pre_impl_perf_event_open@Base 4.9 ++ __sanitizer_syscall_pre_impl_personality@Base 4.9 ++ __sanitizer_syscall_pre_impl_pipe2@Base 4.9 ++ __sanitizer_syscall_pre_impl_pipe@Base 4.9 ++ __sanitizer_syscall_pre_impl_pivot_root@Base 4.9 ++ __sanitizer_syscall_pre_impl_poll@Base 4.9 ++ __sanitizer_syscall_pre_impl_ppoll@Base 4.9 ++ __sanitizer_syscall_pre_impl_pread64@Base 4.9 ++ __sanitizer_syscall_pre_impl_preadv@Base 4.9 ++ __sanitizer_syscall_pre_impl_prlimit64@Base 4.9 ++ __sanitizer_syscall_pre_impl_process_vm_readv@Base 4.9 ++ __sanitizer_syscall_pre_impl_process_vm_writev@Base 4.9 ++ __sanitizer_syscall_pre_impl_pselect6@Base 4.9 ++ __sanitizer_syscall_pre_impl_ptrace@Base 4.9 ++ __sanitizer_syscall_pre_impl_pwrite64@Base 4.9 ++ __sanitizer_syscall_pre_impl_pwritev@Base 4.9 ++ __sanitizer_syscall_pre_impl_quotactl@Base 4.9 ++ __sanitizer_syscall_pre_impl_read@Base 4.9 ++ __sanitizer_syscall_pre_impl_readlink@Base 4.9 ++ __sanitizer_syscall_pre_impl_readlinkat@Base 4.9 ++ __sanitizer_syscall_pre_impl_readv@Base 4.9 ++ __sanitizer_syscall_pre_impl_reboot@Base 4.9 ++ __sanitizer_syscall_pre_impl_recv@Base 4.9 ++ __sanitizer_syscall_pre_impl_recvfrom@Base 4.9 ++ __sanitizer_syscall_pre_impl_recvmmsg@Base 4.9 ++ __sanitizer_syscall_pre_impl_recvmsg@Base 4.9 ++ __sanitizer_syscall_pre_impl_remap_file_pages@Base 4.9 ++ __sanitizer_syscall_pre_impl_removexattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_rename@Base 4.9 ++ __sanitizer_syscall_pre_impl_renameat@Base 4.9 ++ __sanitizer_syscall_pre_impl_request_key@Base 4.9 ++ __sanitizer_syscall_pre_impl_restart_syscall@Base 4.9 ++ __sanitizer_syscall_pre_impl_rmdir@Base 4.9 ++ __sanitizer_syscall_pre_impl_rt_sigaction@Base 7 ++ __sanitizer_syscall_pre_impl_rt_sigpending@Base 4.9 ++ __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 4.9 ++ __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 4.9 ++ __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 4.9 ++ __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_getaffinity@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_getparam@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_getscheduler@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_setaffinity@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_setparam@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_setscheduler@Base 4.9 ++ __sanitizer_syscall_pre_impl_sched_yield@Base 4.9 ++ __sanitizer_syscall_pre_impl_select@Base 4.9 ++ __sanitizer_syscall_pre_impl_semctl@Base 4.9 ++ __sanitizer_syscall_pre_impl_semget@Base 4.9 ++ __sanitizer_syscall_pre_impl_semop@Base 4.9 ++ __sanitizer_syscall_pre_impl_semtimedop@Base 4.9 ++ __sanitizer_syscall_pre_impl_send@Base 4.9 ++ __sanitizer_syscall_pre_impl_sendfile64@Base 4.9 ++ __sanitizer_syscall_pre_impl_sendfile@Base 4.9 ++ __sanitizer_syscall_pre_impl_sendmmsg@Base 4.9 ++ __sanitizer_syscall_pre_impl_sendmsg@Base 4.9 ++ __sanitizer_syscall_pre_impl_sendto@Base 4.9 ++ __sanitizer_syscall_pre_impl_set_mempolicy@Base 4.9 ++ __sanitizer_syscall_pre_impl_set_robust_list@Base 4.9 ++ __sanitizer_syscall_pre_impl_set_tid_address@Base 4.9 ++ __sanitizer_syscall_pre_impl_setdomainname@Base 4.9 ++ __sanitizer_syscall_pre_impl_setfsgid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setfsuid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setgid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setgroups@Base 4.9 ++ __sanitizer_syscall_pre_impl_sethostname@Base 4.9 ++ __sanitizer_syscall_pre_impl_setitimer@Base 4.9 ++ __sanitizer_syscall_pre_impl_setns@Base 4.9 ++ __sanitizer_syscall_pre_impl_setpgid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setpriority@Base 4.9 ++ __sanitizer_syscall_pre_impl_setregid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setresgid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setresuid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setreuid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setrlimit@Base 4.9 ++ __sanitizer_syscall_pre_impl_setsid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setsockopt@Base 4.9 ++ __sanitizer_syscall_pre_impl_settimeofday@Base 4.9 ++ __sanitizer_syscall_pre_impl_setuid@Base 4.9 ++ __sanitizer_syscall_pre_impl_setxattr@Base 4.9 ++ __sanitizer_syscall_pre_impl_sgetmask@Base 4.9 ++ __sanitizer_syscall_pre_impl_shmat@Base 4.9 ++ __sanitizer_syscall_pre_impl_shmctl@Base 4.9 ++ __sanitizer_syscall_pre_impl_shmdt@Base 4.9 ++ __sanitizer_syscall_pre_impl_shmget@Base 4.9 ++ __sanitizer_syscall_pre_impl_shutdown@Base 4.9 ++ __sanitizer_syscall_pre_impl_sigaction@Base 7 ++ __sanitizer_syscall_pre_impl_sigaltstack@Base 11 ++ __sanitizer_syscall_pre_impl_signal@Base 4.9 ++ __sanitizer_syscall_pre_impl_signalfd4@Base 4.9 ++ __sanitizer_syscall_pre_impl_signalfd@Base 4.9 ++ __sanitizer_syscall_pre_impl_sigpending@Base 4.9 ++ __sanitizer_syscall_pre_impl_sigprocmask@Base 4.9 ++ __sanitizer_syscall_pre_impl_socket@Base 4.9 ++ __sanitizer_syscall_pre_impl_socketcall@Base 4.9 ++ __sanitizer_syscall_pre_impl_socketpair@Base 4.9 ++ __sanitizer_syscall_pre_impl_splice@Base 4.9 ++ __sanitizer_syscall_pre_impl_spu_create@Base 4.9 ++ __sanitizer_syscall_pre_impl_spu_run@Base 4.9 ++ __sanitizer_syscall_pre_impl_ssetmask@Base 4.9 ++ __sanitizer_syscall_pre_impl_stat64@Base 4.9 ++ __sanitizer_syscall_pre_impl_stat@Base 4.9 ++ __sanitizer_syscall_pre_impl_statfs64@Base 4.9 ++ __sanitizer_syscall_pre_impl_statfs@Base 4.9 ++ __sanitizer_syscall_pre_impl_stime@Base 4.9 ++ __sanitizer_syscall_pre_impl_swapoff@Base 4.9 ++ __sanitizer_syscall_pre_impl_swapon@Base 4.9 ++ __sanitizer_syscall_pre_impl_symlink@Base 4.9 ++ __sanitizer_syscall_pre_impl_symlinkat@Base 4.9 ++ __sanitizer_syscall_pre_impl_sync@Base 4.9 ++ __sanitizer_syscall_pre_impl_syncfs@Base 4.9 ++ __sanitizer_syscall_pre_impl_sysctl@Base 4.9 ++ __sanitizer_syscall_pre_impl_sysfs@Base 4.9 ++ __sanitizer_syscall_pre_impl_sysinfo@Base 4.9 ++ __sanitizer_syscall_pre_impl_syslog@Base 4.9 ++ __sanitizer_syscall_pre_impl_tee@Base 4.9 ++ __sanitizer_syscall_pre_impl_tgkill@Base 4.9 ++ __sanitizer_syscall_pre_impl_time@Base 4.9 ++ __sanitizer_syscall_pre_impl_timer_create@Base 4.9 ++ __sanitizer_syscall_pre_impl_timer_delete@Base 4.9 ++ __sanitizer_syscall_pre_impl_timer_getoverrun@Base 4.9 ++ __sanitizer_syscall_pre_impl_timer_gettime@Base 4.9 ++ __sanitizer_syscall_pre_impl_timer_settime@Base 4.9 ++ __sanitizer_syscall_pre_impl_timerfd_create@Base 4.9 ++ __sanitizer_syscall_pre_impl_timerfd_gettime@Base 4.9 ++ __sanitizer_syscall_pre_impl_timerfd_settime@Base 4.9 ++ __sanitizer_syscall_pre_impl_times@Base 4.9 ++ __sanitizer_syscall_pre_impl_tkill@Base 4.9 ++ __sanitizer_syscall_pre_impl_truncate@Base 4.9 ++ __sanitizer_syscall_pre_impl_umask@Base 4.9 ++ __sanitizer_syscall_pre_impl_umount@Base 4.9 ++ __sanitizer_syscall_pre_impl_uname@Base 4.9 ++ __sanitizer_syscall_pre_impl_unlink@Base 4.9 ++ __sanitizer_syscall_pre_impl_unlinkat@Base 4.9 ++ __sanitizer_syscall_pre_impl_unshare@Base 4.9 ++ __sanitizer_syscall_pre_impl_uselib@Base 4.9 ++ __sanitizer_syscall_pre_impl_ustat@Base 4.9 ++ __sanitizer_syscall_pre_impl_utime@Base 4.9 ++ __sanitizer_syscall_pre_impl_utimensat@Base 4.9 ++ __sanitizer_syscall_pre_impl_utimes@Base 4.9 ++ __sanitizer_syscall_pre_impl_vfork@Base 4.9 ++ __sanitizer_syscall_pre_impl_vhangup@Base 4.9 ++ __sanitizer_syscall_pre_impl_vmsplice@Base 4.9 ++ __sanitizer_syscall_pre_impl_wait4@Base 4.9 ++ __sanitizer_syscall_pre_impl_waitid@Base 4.9 ++ __sanitizer_syscall_pre_impl_waitpid@Base 4.9 ++ __sanitizer_syscall_pre_impl_write@Base 4.9 ++ __sanitizer_syscall_pre_impl_writev@Base 4.9 ++ __sanitizer_unaligned_load16@Base 4.9 ++ __sanitizer_unaligned_load32@Base 4.9 ++ __sanitizer_unaligned_load64@Base 4.9 ++ __sanitizer_unaligned_store16@Base 4.9 ++ __sanitizer_unaligned_store32@Base 4.9 ++ __sanitizer_unaligned_store64@Base 4.9 ++ __sanitizer_weak_hook_memcmp@Base 8 ++ __sanitizer_weak_hook_memmem@Base 8 ++ __sanitizer_weak_hook_strcasecmp@Base 8 ++ __sanitizer_weak_hook_strcasestr@Base 8 ++ __sanitizer_weak_hook_strcmp@Base 8 ++ __sanitizer_weak_hook_strncasecmp@Base 8 ++ __sanitizer_weak_hook_strncmp@Base 8 ++ __sanitizer_weak_hook_strstr@Base 8 ++ __sigsetjmp@Base 4.9 ++ __snprintf_chk@Base 9 ++ __sprintf_chk@Base 9 ++ __strndup@Base 8 ++ __strxfrm_l@Base 9 ++ __tls_get_addr@Base 6 ++ __tsan_acquire@Base 4.9 ++ __tsan_atomic128_compare_exchange_strong@Base 4.9 ++ __tsan_atomic128_compare_exchange_val@Base 4.9 ++ __tsan_atomic128_compare_exchange_weak@Base 4.9 ++ __tsan_atomic128_exchange@Base 4.9 ++ __tsan_atomic128_fetch_add@Base 4.9 ++ __tsan_atomic128_fetch_and@Base 4.9 ++ __tsan_atomic128_fetch_nand@Base 4.9 ++ __tsan_atomic128_fetch_or@Base 4.9 ++ __tsan_atomic128_fetch_sub@Base 4.9 ++ __tsan_atomic128_fetch_xor@Base 4.9 ++ __tsan_atomic128_load@Base 4.9 ++ __tsan_atomic128_store@Base 4.9 ++ __tsan_atomic16_compare_exchange_strong@Base 4.9 ++ __tsan_atomic16_compare_exchange_val@Base 4.9 ++ __tsan_atomic16_compare_exchange_weak@Base 4.9 ++ __tsan_atomic16_exchange@Base 4.9 ++ __tsan_atomic16_fetch_add@Base 4.9 ++ __tsan_atomic16_fetch_and@Base 4.9 ++ __tsan_atomic16_fetch_nand@Base 4.9 ++ __tsan_atomic16_fetch_or@Base 4.9 ++ __tsan_atomic16_fetch_sub@Base 4.9 ++ __tsan_atomic16_fetch_xor@Base 4.9 ++ __tsan_atomic16_load@Base 4.9 ++ __tsan_atomic16_store@Base 4.9 ++ __tsan_atomic32_compare_exchange_strong@Base 4.9 ++ __tsan_atomic32_compare_exchange_val@Base 4.9 ++ __tsan_atomic32_compare_exchange_weak@Base 4.9 ++ __tsan_atomic32_exchange@Base 4.9 ++ __tsan_atomic32_fetch_add@Base 4.9 ++ __tsan_atomic32_fetch_and@Base 4.9 ++ __tsan_atomic32_fetch_nand@Base 4.9 ++ __tsan_atomic32_fetch_or@Base 4.9 ++ __tsan_atomic32_fetch_sub@Base 4.9 ++ __tsan_atomic32_fetch_xor@Base 4.9 ++ __tsan_atomic32_load@Base 4.9 ++ __tsan_atomic32_store@Base 4.9 ++ __tsan_atomic64_compare_exchange_strong@Base 4.9 ++ __tsan_atomic64_compare_exchange_val@Base 4.9 ++ __tsan_atomic64_compare_exchange_weak@Base 4.9 ++ __tsan_atomic64_exchange@Base 4.9 ++ __tsan_atomic64_fetch_add@Base 4.9 ++ __tsan_atomic64_fetch_and@Base 4.9 ++ __tsan_atomic64_fetch_nand@Base 4.9 ++ __tsan_atomic64_fetch_or@Base 4.9 ++ __tsan_atomic64_fetch_sub@Base 4.9 ++ __tsan_atomic64_fetch_xor@Base 4.9 ++ __tsan_atomic64_load@Base 4.9 ++ __tsan_atomic64_store@Base 4.9 ++ __tsan_atomic8_compare_exchange_strong@Base 4.9 ++ __tsan_atomic8_compare_exchange_val@Base 4.9 ++ __tsan_atomic8_compare_exchange_weak@Base 4.9 ++ __tsan_atomic8_exchange@Base 4.9 ++ __tsan_atomic8_fetch_add@Base 4.9 ++ __tsan_atomic8_fetch_and@Base 4.9 ++ __tsan_atomic8_fetch_nand@Base 4.9 ++ __tsan_atomic8_fetch_or@Base 4.9 ++ __tsan_atomic8_fetch_sub@Base 4.9 ++ __tsan_atomic8_fetch_xor@Base 4.9 ++ __tsan_atomic8_load@Base 4.9 ++ __tsan_atomic8_store@Base 4.9 ++ __tsan_atomic_signal_fence@Base 4.9 ++ __tsan_atomic_thread_fence@Base 4.9 ++ __tsan_check_no_mutexes_held@Base 14 ++ __tsan_create_fiber@Base 10 ++ __tsan_default_options@Base 4.9 ++ __tsan_default_suppressions@Base 7 ++ __tsan_destroy_fiber@Base 10 ++ __tsan_external_assign_tag@Base 8 ++ __tsan_external_read@Base 8 ++ __tsan_external_register_header@Base 8 ++ __tsan_external_register_tag@Base 8 ++ __tsan_external_write@Base 8 ++ __tsan_flush_memory@Base 8 ++ __tsan_func_entry@Base 4.9 ++ __tsan_func_exit@Base 4.9 ++ __tsan_get_alloc_stack@Base 8 ++ __tsan_get_current_fiber@Base 10 ++ __tsan_get_current_report@Base 7 ++ __tsan_get_report_data@Base 7 ++ __tsan_get_report_loc@Base 7 ++ __tsan_get_report_loc_object_type@Base 8 ++ __tsan_get_report_mop@Base 7 ++ __tsan_get_report_mutex@Base 7 ++ __tsan_get_report_stack@Base 7 ++ __tsan_get_report_tag@Base 9 ++ __tsan_get_report_thread@Base 7 ++ __tsan_get_report_unique_tid@Base 7 ++ __tsan_ignore_thread_begin@Base 8 ++ __tsan_ignore_thread_end@Base 8 ++ __tsan_init@Base 4.9 ++ __tsan_java_acquire@Base 6 ++ __tsan_java_alloc@Base 4.9 ++ __tsan_java_finalize@Base 5 ++ __tsan_java_find@Base 8 ++ __tsan_java_fini@Base 4.9 ++ __tsan_java_free@Base 4.9 ++ __tsan_java_init@Base 4.9 ++ __tsan_java_move@Base 4.9 ++ __tsan_java_mutex_lock@Base 4.9 ++ __tsan_java_mutex_lock_rec@Base 4.9 ++ __tsan_java_mutex_read_lock@Base 4.9 ++ __tsan_java_mutex_read_unlock@Base 4.9 ++ __tsan_java_mutex_unlock@Base 4.9 ++ __tsan_java_mutex_unlock_rec@Base 4.9 ++ __tsan_java_release@Base 6 ++ __tsan_java_release_store@Base 6 ++ __tsan_locate_address@Base 8 ++ __tsan_memcpy@Base 13 ++ __tsan_memmove@Base 13 ++ __tsan_memset@Base 13 ++ __tsan_mutex_create@Base 8 ++ __tsan_mutex_destroy@Base 8 ++ __tsan_mutex_post_divert@Base 8 ++ __tsan_mutex_post_lock@Base 8 ++ __tsan_mutex_post_signal@Base 8 ++ __tsan_mutex_post_unlock@Base 8 ++ __tsan_mutex_pre_divert@Base 8 ++ __tsan_mutex_pre_lock@Base 8 ++ __tsan_mutex_pre_signal@Base 8 ++ __tsan_mutex_pre_unlock@Base 8 ++ __tsan_on_report@Base 7 ++ __tsan_on_thread_idle@Base 14 ++ __tsan_read16@Base 4.9 ++ __tsan_read16_pc@Base 6 ++ __tsan_read1@Base 4.9 ++ __tsan_read1_pc@Base 6 ++ __tsan_read2@Base 4.9 ++ __tsan_read2_pc@Base 6 ++ __tsan_read4@Base 4.9 ++ __tsan_read4_pc@Base 6 ++ __tsan_read8@Base 4.9 ++ __tsan_read8_pc@Base 6 ++ __tsan_read_range@Base 4.9 ++ __tsan_read_range_pc@Base 10 ++ __tsan_release@Base 4.9 ++ __tsan_set_fiber_name@Base 10 ++ __tsan_switch_to_fiber@Base 10 ++ __tsan_symbolize_external@Base 7 ++ __tsan_symbolize_external_ex@Base 9 ++ __tsan_testonly_barrier_init@Base 7 ++ __tsan_testonly_barrier_wait@Base 7 ++ __tsan_testonly_shadow_stack_current_size@Base 8 ++ __tsan_unaligned_read16@Base 6 ++ __tsan_unaligned_read2@Base 4.9 ++ __tsan_unaligned_read4@Base 4.9 ++ __tsan_unaligned_read8@Base 4.9 ++ __tsan_unaligned_write16@Base 6 ++ __tsan_unaligned_write2@Base 4.9 ++ __tsan_unaligned_write4@Base 4.9 ++ __tsan_unaligned_write8@Base 4.9 ++ __tsan_vptr_read@Base 4.9 ++ __tsan_vptr_update@Base 4.9 ++ __tsan_write16@Base 4.9 ++ __tsan_write16_pc@Base 6 ++ __tsan_write1@Base 4.9 ++ __tsan_write1_pc@Base 6 ++ __tsan_write2@Base 4.9 ++ __tsan_write2_pc@Base 6 ++ __tsan_write4@Base 4.9 ++ __tsan_write4_pc@Base 6 ++ __tsan_write8@Base 4.9 ++ __tsan_write8_pc@Base 6 ++ __tsan_write_range@Base 4.9 ++ __tsan_write_range_pc@Base 10 ++ __uflow@Base 5 ++ __underflow@Base 5 ++ __vsnprintf_chk@Base 9 ++ __vsprintf_chk@Base 9 ++ __wcsxfrm_l@Base 9 ++ __woverflow@Base 5 ++ __wuflow@Base 5 ++ __wunderflow@Base 5 ++ __xpg_strerror_r@Base 4.9 ++ __xstat64@Base 4.9 ++ __xstat@Base 4.9 ++ _exit@Base 4.9 ++ _obstack_begin@Base 5 ++ _obstack_begin_1@Base 5 ++ _obstack_newchunk@Base 5 ++ _setjmp@Base 4.9 ++ abort@Base 4.9 ++ accept4@Base 4.9 ++ accept@Base 4.9 ++ aligned_alloc@Base 5 ++ argp_parse@Base 14 ++ asctime@Base 4.9 ++ asctime_r@Base 4.9 ++ asprintf@Base 5 ++ atexit@Base 4.9 ++ backtrace@Base 4.9 ++ backtrace_symbols@Base 4.9 ++ bcmp@Base 10 ++ bind@Base 4.9 ++ bsearch@Base 13 ++ bzero@Base 10 ++ calloc@Base 4.9 ++ canonicalize_file_name@Base 4.9 ++ capget@Base 5 ++ capset@Base 5 ++ cfree@Base 4.9 ++ clock_getcpuclockid@Base 11 ++ clock_getres@Base 4.9 ++ clock_gettime@Base 4.9 ++ clock_settime@Base 4.9 ++ clone@Base 13 ++ close@Base 4.9 ++ closedir@Base 6 ++ confstr@Base 4.9 ++ connect@Base 4.9 ++ creat64@Base 4.9 ++ creat@Base 4.9 ++ ctermid@Base 7 ++ ctime@Base 4.9 ++ ctime_r@Base 4.9 ++ dl_iterate_phdr@Base 6 ++ dlclose@Base 4.9 ++ dlopen@Base 4.9 ++ dn_comp@Base 13 ++ dn_expand@Base 13 ++ drand48_r@Base 4.9 ++ dup2@Base 4.9 ++ dup3@Base 4.9 ++ dup@Base 4.9 ++ endgrent@Base 5 ++ endpwent@Base 5 ++ epoll_create1@Base 4.9 ++ epoll_create@Base 4.9 ++ epoll_ctl@Base 4.9 ++ epoll_pwait2@Base 14 ++ epoll_pwait@Base 7 ++ epoll_wait@Base 4.9 ++ ether_aton@Base 4.9 ++ ether_aton_r@Base 4.9 ++ ether_hostton@Base 4.9 ++ ether_line@Base 4.9 ++ ether_ntoa@Base 4.9 ++ ether_ntoa_r@Base 4.9 ++ ether_ntohost@Base 4.9 ++ eventfd@Base 4.9 ++ eventfd_read@Base 7 ++ eventfd_write@Base 7 ++ fclose@Base 4.9 ++ fdopen@Base 5 ++ fflush@Base 4.9 ++ fgetgrent@Base 10 ++ fgetgrent_r@Base 10 ++ fgetpwent@Base 10 ++ fgetpwent_r@Base 10 ++ fgets@Base 9 ++ fgetxattr@Base 5 ++ flistxattr@Base 5 ++ fmemopen@Base 5 ++ fopen64@Base 5 ++ fopen@Base 4.9 ++ fopencookie@Base 6 ++ fork@Base 4.9 ++ fprintf@Base 5 ++ fputs@Base 9 ++ fread@Base 4.9 ++ free@Base 4.9 ++ freopen64@Base 5 ++ freopen@Base 4.9 ++ frexp@Base 4.9 ++ frexpf@Base 4.9 ++ frexpl@Base 4.9 ++ fscanf@Base 4.9 ++ fstat64@Base 4.9 ++ fstat@Base 4.9 ++ fstatfs64@Base 4.9 ++ fstatfs@Base 4.9 ++ fstatvfs64@Base 4.9 ++ fstatvfs@Base 4.9 ++ ftime@Base 5 ++ fwrite@Base 4.9 ++ get_current_dir_name@Base 4.9 ++ getaddrinfo@Base 4.9 ++ getcwd@Base 4.9 ++ getdelim@Base 4.9 ++ getentropy@Base 14 ++ getgrent@Base 10 ++ getgrent_r@Base 10 ++ getgrgid@Base 10 ++ getgrgid_r@Base 10 ++ getgrnam@Base 10 ++ getgrnam_r@Base 10 ++ getgrouplist@Base 13 ++ getgroups@Base 4.9 ++ gethostbyaddr@Base 4.9 ++ gethostbyaddr_r@Base 4.9 ++ gethostbyname2@Base 4.9 ++ gethostbyname2_r@Base 4.9 ++ gethostbyname@Base 4.9 ++ gethostbyname_r@Base 4.9 ++ gethostent@Base 4.9 ++ gethostent_r@Base 4.9 ++ getifaddrs@Base 5 ++ getitimer@Base 4.9 ++ getline@Base 4.9 ++ getloadavg@Base 8 ++ getmntent@Base 4.9 ++ getmntent_r@Base 4.9 ++ getnameinfo@Base 5 ++ getnetbyaddr@Base 13 ++ getnetbyname@Base 13 ++ getnetent@Base 13 ++ getpass@Base 5 ++ getpeername@Base 4.9 ++ getprotobyname@Base 11 ++ getprotobyname_r@Base 11 ++ getprotobynumber@Base 11 ++ getprotobynumber_r@Base 11 ++ getprotoent@Base 11 ++ getprotoent_r@Base 11 ++ getpwent@Base 10 ++ getpwent_r@Base 10 ++ getpwnam@Base 10 ++ getpwnam_r@Base 10 ++ getpwuid@Base 10 ++ getpwuid_r@Base 10 ++ getrandom@Base 10 ++ getresgid@Base 5 ++ getresuid@Base 5 ++ getsockname@Base 4.9 ++ getsockopt@Base 4.9 ++ gettimeofday@Base 4.9 ++ getusershell@Base 10 ++ getutent@Base 8 ++ getutid@Base 8 ++ getutline@Base 8 ++ getutxent@Base 8 ++ getutxid@Base 8 ++ getutxline@Base 8 ++ getxattr@Base 5 ++ glob64@Base 5 ++ glob@Base 5 ++ gmtime@Base 4.9 ++ gmtime_r@Base 4.9 ++ iconv@Base 4.9 ++ if_indextoname@Base 5 ++ if_nametoindex@Base 5 ++ inet_aton@Base 4.9 ++ inet_ntop@Base 4.9 ++ inet_pton@Base 4.9 ++ initgroups@Base 4.9 ++ inotify_init1@Base 4.9 ++ inotify_init@Base 4.9 ++ ioctl@Base 4.9 ++ kill@Base 4.9 ++ lgamma@Base 4.9 ++ lgamma_r@Base 4.9 ++ lgammaf@Base 4.9 ++ lgammaf_r@Base 4.9 ++ lgammal@Base 4.9 ++ lgammal_r@Base 4.9 ++ lgetxattr@Base 5 ++ listen@Base 4.9 ++ listxattr@Base 5 ++ llistxattr@Base 5 ++ localtime@Base 4.9 ++ localtime_r@Base 4.9 ++ longjmp@Base 4.9 ++ lrand48_r@Base 4.9 ++ lstat64@Base 13 ++ lstat@Base 13 ++ malloc@Base 4.9 ++ malloc_usable_size@Base 4.9 ++ mbsnrtowcs@Base 4.9 ++ mbsrtowcs@Base 4.9 ++ mbstowcs@Base 4.9 ++ mcheck@Base 8 ++ mcheck_pedantic@Base 8 ++ memalign@Base 4.9 ++ memchr@Base 4.9 ++ memcmp@Base 4.9 ++ memcpy@Base 4.9 ++ memmem@Base 7 ++ memmove@Base 4.9 ++ memrchr@Base 4.9 ++ memset@Base 4.9 ++ mincore@Base 6 ++ mktime@Base 5 ++ mlock@Base 4.9 ++ mlockall@Base 4.9 ++ mmap64@Base 4.9 ++ mmap@Base 4.9 ++ modf@Base 4.9 ++ modff@Base 4.9 ++ modfl@Base 4.9 ++ mprobe@Base 8 ++ mprotect@Base 9 ++ msgrcv@Base 11 ++ msgsnd@Base 11 ++ munlock@Base 4.9 ++ munlockall@Base 4.9 ++ munmap@Base 4.9 ++ name_to_handle_at@Base 9 ++ nanosleep@Base 4.9 ++ on_exit@Base 4.9 ++ open64@Base 4.9 ++ open@Base 4.9 ++ open_by_handle_at@Base 9 ++ open_memstream@Base 5 ++ open_wmemstream@Base 5 ++ opendir@Base 4.9 ++ pause@Base 8 ++ pclose@Base 10 ++ pipe2@Base 4.9 ++ pipe@Base 4.9 ++ poll@Base 4.9 ++ popen@Base 10 ++ posix_memalign@Base 4.9 ++ posix_spawn@Base 13 ++ posix_spawnp@Base 13 ++ ppoll@Base 4.9 ++ prctl@Base 4.9 ++ pread64@Base 4.9 ++ pread@Base 4.9 ++ preadv2@Base 15 ++ preadv64@Base 4.9 ++ preadv@Base 4.9 ++ printf@Base 5 ++ process_vm_readv@Base 6 ++ process_vm_writev@Base 6 ++ pthread_attr_getaffinity_np@Base 4.9 ++ pthread_attr_getdetachstate@Base 4.9 ++ pthread_attr_getguardsize@Base 4.9 ++ pthread_attr_getinheritsched@Base 4.9 ++ pthread_attr_getschedparam@Base 4.9 ++ pthread_attr_getschedpolicy@Base 4.9 ++ pthread_attr_getscope@Base 4.9 ++ pthread_attr_getstack@Base 4.9 ++ pthread_attr_getstacksize@Base 4.9 ++ pthread_barrier_destroy@Base 4.9 ++ pthread_barrier_init@Base 4.9 ++ pthread_barrier_wait@Base 4.9 ++ pthread_barrierattr_getpshared@Base 5 ++ pthread_cond_broadcast@Base 4.9 ++ pthread_cond_clockwait@Base 13 ++ pthread_cond_destroy@Base 4.9 ++ pthread_cond_init@Base 4.9 ++ pthread_cond_signal@Base 4.9 ++ pthread_cond_timedwait@Base 4.9 ++ pthread_cond_wait@Base 4.9 ++ pthread_condattr_getclock@Base 5 ++ pthread_condattr_getpshared@Base 5 ++ pthread_create@Base 4.9 ++ pthread_detach@Base 4.9 ++ pthread_exit@Base 10 ++ pthread_getaffinity_np@Base 13 ++ pthread_getcpuclockid@Base 13 ++ pthread_getname_np@Base 9 ++ pthread_getschedparam@Base 4.9 ++ pthread_join@Base 4.9 ++ pthread_kill@Base 4.9 ++ pthread_mutex_clocklock@Base 15 ++ pthread_mutex_destroy@Base 4.9 ++ pthread_mutex_init@Base 4.9 ++ pthread_mutex_lock@Base 4.9 ++ pthread_mutex_timedlock@Base 4.9 ++ pthread_mutex_trylock@Base 4.9 ++ pthread_mutex_unlock@Base 4.9 ++ pthread_mutexattr_getprioceiling@Base 5 ++ pthread_mutexattr_getprotocol@Base 5 ++ pthread_mutexattr_getpshared@Base 5 ++ pthread_mutexattr_getrobust@Base 5 ++ pthread_mutexattr_getrobust_np@Base 5 ++ pthread_mutexattr_gettype@Base 5 ++ pthread_once@Base 4.9 ++ pthread_rwlock_destroy@Base 4.9 ++ pthread_rwlock_init@Base 4.9 ++ pthread_rwlock_rdlock@Base 4.9 ++ pthread_rwlock_timedrdlock@Base 4.9 ++ pthread_rwlock_timedwrlock@Base 4.9 ++ pthread_rwlock_tryrdlock@Base 4.9 ++ pthread_rwlock_trywrlock@Base 4.9 ++ pthread_rwlock_unlock@Base 4.9 ++ pthread_rwlock_wrlock@Base 4.9 ++ pthread_rwlockattr_getkind_np@Base 5 ++ pthread_rwlockattr_getpshared@Base 5 ++ pthread_setcancelstate@Base 6 ++ pthread_setcanceltype@Base 6 ++ pthread_setname_np@Base 4.9 ++ pthread_sigmask@Base 7 ++ pthread_spin_destroy@Base 4.9 ++ pthread_spin_init@Base 4.9 ++ pthread_spin_lock@Base 4.9 ++ pthread_spin_trylock@Base 4.9 ++ pthread_spin_unlock@Base 4.9 ++ pthread_timedjoin_np@Base 10 ++ pthread_tryjoin_np@Base 10 ++ ptrace@Base 4.9 ++ ptsname@Base 11 ++ ptsname_r@Base 11 ++ puts@Base 4.9 ++ pututxline@Base 10 ++ pvalloc@Base 4.9 ++ pwrite64@Base 4.9 ++ pwrite@Base 4.9 ++ pwritev2@Base 15 ++ pwritev64@Base 4.9 ++ pwritev@Base 4.9 ++ qsort@Base 11 ++ qsort_r@Base 11 ++ raise@Base 4.9 ++ rand_r@Base 5 ++ random_r@Base 4.9 ++ read@Base 4.9 ++ readdir64@Base 4.9 ++ readdir64_r@Base 4.9 ++ readdir@Base 4.9 ++ readdir_r@Base 4.9 ++ readlink@Base 9 ++ readlinkat@Base 9 ++ readv@Base 4.9 ++ realloc@Base 4.9 ++ reallocarray@Base 10 ++ realpath@Base 4.9 ++ recv@Base 4.9 ++ recvfrom@Base 7 ++ recvmmsg@Base 9 ++ recvmsg@Base 4.9 ++ regcomp@Base 10 ++ regerror@Base 10 ++ regexec@Base 10 ++ regfree@Base 10 ++ remquo@Base 4.9 ++ remquof@Base 4.9 ++ remquol@Base 4.9 ++ rmdir@Base 4.9 ++ scandir64@Base 4.9 ++ scandir@Base 4.9 ++ scanf@Base 4.9 ++ sched_getaffinity@Base 4.9 ++ sched_getparam@Base 6 ++ sem_destroy@Base 4.9 ++ sem_getvalue@Base 4.9 ++ sem_init@Base 4.9 ++ sem_open@Base 13 ++ sem_post@Base 4.9 ++ sem_timedwait@Base 4.9 ++ sem_trywait@Base 4.9 ++ sem_unlink@Base 13 ++ sem_wait@Base 4.9 ++ send@Base 4.9 ++ sendmmsg@Base 9 ++ sendmsg@Base 4.9 ++ sendto@Base 7 ++ setbuf@Base 10 ++ setbuffer@Base 10 ++ setgrent@Base 5 ++ setitimer@Base 4.9 ++ setjmp@Base 8 ++ setlinebuf@Base 10 ++ setlocale@Base 4.9 ++ setpwent@Base 5 ++ setvbuf@Base 10 ++ shmctl@Base 4.9 ++ sigaction@Base 4.9 ++ sigaltstack@Base 11 ++ sigandset@Base 11 ++ sigblock@Base 7 ++ sigemptyset@Base 4.9 ++ sigfillset@Base 4.9 ++ siglongjmp@Base 4.9 ++ signal@Base 4.9 ++ signalfd@Base 4.9 ++ sigorset@Base 11 ++ sigpending@Base 4.9 ++ sigprocmask@Base 4.9 ++ sigsetjmp@Base 4.9 ++ sigsetmask@Base 7 ++ sigsuspend@Base 4.9 ++ sigtimedwait@Base 4.9 ++ sigwait@Base 4.9 ++ sigwaitinfo@Base 4.9 ++ sincos@Base 4.9 ++ sincosf@Base 4.9 ++ sincosl@Base 4.9 ++ sleep@Base 4.9 ++ snprintf@Base 5 ++ socket@Base 4.9 ++ socketpair@Base 4.9 ++ sprintf@Base 5 ++ sscanf@Base 4.9 ++ stat64@Base 13 ++ stat@Base 13 ++ statfs64@Base 4.9 ++ statfs@Base 4.9 ++ statvfs64@Base 4.9 ++ statvfs@Base 4.9 ++ strcasecmp@Base 4.9 ++ strcasestr@Base 6 ++ strchr@Base 4.9 ++ strchrnul@Base 4.9 ++ strcmp@Base 4.9 ++ strcpy@Base 4.9 ++ strcspn@Base 6 ++ strdup@Base 4.9 ++ strerror@Base 4.9 ++ strerror_r@Base 4.9 ++ strlen@Base 4.9 ++ strncasecmp@Base 4.9 ++ strncmp@Base 4.9 ++ strncpy@Base 4.9 ++ strndup@Base 8 ++ strnlen@Base 7 ++ strpbrk@Base 6 ++ strptime@Base 4.9 ++ strrchr@Base 4.9 ++ strspn@Base 6 ++ strstr@Base 4.9 ++ strtoimax@Base 4.9 ++ strtok@Base 8 ++ strtoumax@Base 4.9 ++ strxfrm@Base 9 ++ strxfrm_l@Base 9 ++ sysinfo@Base 4.9 ++ tcgetattr@Base 4.9 ++ tempnam@Base 4.9 ++ textdomain@Base 4.9 ++ time@Base 4.9 ++ timerfd_gettime@Base 5 ++ timerfd_settime@Base 5 ++ times@Base 4.9 ++ tmpfile64@Base 5 ++ tmpfile@Base 5 ++ tmpnam@Base 4.9 ++ tmpnam_r@Base 4.9 ++ tsearch@Base 5 ++ ttyname@Base 10 ++ ttyname_r@Base 7 ++ uname@Base 11 ++ unlink@Base 4.9 ++ usleep@Base 4.9 ++ valloc@Base 4.9 ++ vasprintf@Base 5 ++ vfork@Base 5 ++ vfprintf@Base 5 ++ vfscanf@Base 4.9 ++ vprintf@Base 5 ++ vscanf@Base 4.9 ++ vsnprintf@Base 5 ++ vsprintf@Base 5 ++ vsscanf@Base 4.9 ++ wait3@Base 4.9 ++ wait4@Base 4.9 ++ wait@Base 4.9 ++ waitid@Base 4.9 ++ waitpid@Base 4.9 ++ wcrtomb@Base 6 ++ wcscat@Base 8 ++ wcsdup@Base 10 ++ wcslen@Base 8 ++ wcsncat@Base 8 ++ wcsnlen@Base 8 ++ wcsnrtombs@Base 4.9 ++ wcsrtombs@Base 4.9 ++ wcstombs@Base 4.9 ++ wcsxfrm@Base 9 ++ wcsxfrm_l@Base 9 ++ wctomb@Base 10 ++ wordexp@Base 4.9 ++ write@Base 4.9 ++ writev@Base 4.9 ++ xdr_bool@Base 5 ++ xdr_bytes@Base 5 ++ xdr_char@Base 5 ++ xdr_destroy@Base 11 ++ xdr_double@Base 5 ++ xdr_enum@Base 5 ++ xdr_float@Base 5 ++ xdr_hyper@Base 5 ++ xdr_int16_t@Base 5 ++ xdr_int32_t@Base 5 ++ xdr_int64_t@Base 5 ++ xdr_int8_t@Base 5 ++ xdr_int@Base 5 ++ xdr_long@Base 5 ++ xdr_longlong_t@Base 5 ++ xdr_quad_t@Base 5 ++ xdr_short@Base 5 ++ xdr_string@Base 5 ++ xdr_u_char@Base 5 ++ xdr_u_hyper@Base 5 ++ xdr_u_int@Base 5 ++ xdr_u_long@Base 5 ++ xdr_u_longlong_t@Base 5 ++ xdr_u_quad_t@Base 5 ++ xdr_u_short@Base 5 ++ xdr_uint16_t@Base 5 ++ xdr_uint32_t@Base 5 ++ xdr_uint64_t@Base 5 ++ xdr_uint8_t@Base 5 ++ xdrmem_create@Base 5 ++ xdrrec_create@Base 11 ++ xdrstdio_create@Base 5 diff --cc debian/libubsan1.symbols index 0000000,0000000..a14ceb3 new file mode 100644 --- /dev/null +++ b/debian/libubsan1.symbols @@@ -1,0 -1,0 +1,157 @@@ ++libubsan.so.1 libubsan1 #MINVER# ++ _ZN7__ubsan31RegisterUndefinedBehaviorReportEPNS_23UndefinedBehaviorReportE@Base 9 ++ __asan_backtrace_alloc@Base 4.9 ++ __asan_backtrace_close@Base 4.9 ++ __asan_backtrace_create_state@Base 4.9 ++ __asan_backtrace_dwarf_add@Base 4.9 ++ __asan_backtrace_free@Base 4.9 ++ __asan_backtrace_get_view@Base 4.9 ++ __asan_backtrace_initialize@Base 4.9 ++ __asan_backtrace_open@Base 4.9 ++ __asan_backtrace_pcinfo@Base 4.9 ++ __asan_backtrace_qsort@Base 4.9 ++ __asan_backtrace_release_view@Base 4.9 ++ __asan_backtrace_syminfo@Base 4.9 ++ __asan_backtrace_syminfo_to_full_callback@Base 11 ++ __asan_backtrace_syminfo_to_full_error_callback@Base 11 ++ __asan_backtrace_uncompress_lzma@Base 11 ++ __asan_backtrace_uncompress_zdebug@Base 8 ++ __asan_backtrace_uncompress_zstd@Base 13 ++ __asan_backtrace_vector_finish@Base 4.9 ++ __asan_backtrace_vector_grow@Base 4.9 ++ __asan_backtrace_vector_release@Base 4.9 ++ __asan_cplus_demangle_builtin_types@Base 4.9 ++ __asan_cplus_demangle_fill_ctor@Base 4.9 ++ __asan_cplus_demangle_fill_dtor@Base 4.9 ++ __asan_cplus_demangle_fill_extended_operator@Base 4.9 ++ __asan_cplus_demangle_fill_name@Base 4.9 ++ __asan_cplus_demangle_init_info@Base 4.9 ++ __asan_cplus_demangle_mangled_name@Base 4.9 ++ __asan_cplus_demangle_operators@Base 4.9 ++ __asan_cplus_demangle_print@Base 4.9 ++ __asan_cplus_demangle_print_callback@Base 4.9 ++ __asan_cplus_demangle_type@Base 4.9 ++ __asan_cplus_demangle_v3@Base 4.9 ++ __asan_cplus_demangle_v3_callback@Base 4.9 ++ __asan_internal_memcmp@Base 4.9 ++ __asan_internal_memcpy@Base 4.9 ++ __asan_internal_memset@Base 4.9 ++ __asan_internal_strcmp@Base 4.9 ++ __asan_internal_strlen@Base 4.9 ++ __asan_internal_strncmp@Base 4.9 ++ __asan_internal_strnlen@Base 4.9 ++ __asan_is_gnu_v3_mangled_ctor@Base 4.9 ++ __asan_is_gnu_v3_mangled_dtor@Base 4.9 ++ __asan_java_demangle_v3@Base 4.9 ++ __asan_java_demangle_v3_callback@Base 4.9 ++ __sancov_default_options@Base 8 ++ __sancov_lowest_stack@Base 8 ++ __sanitizer_acquire_crash_state@Base 9 ++ __sanitizer_cov_8bit_counters_init@Base 8 ++ __sanitizer_cov_bool_flag_init@Base 11 ++ __sanitizer_cov_dump@Base 4.9 ++ __sanitizer_cov_load16@Base 13 ++ __sanitizer_cov_load1@Base 13 ++ __sanitizer_cov_load2@Base 13 ++ __sanitizer_cov_load4@Base 13 ++ __sanitizer_cov_load8@Base 13 ++ __sanitizer_cov_pcs_init@Base 8 ++ __sanitizer_cov_reset@Base 8 ++ __sanitizer_cov_store16@Base 13 ++ __sanitizer_cov_store1@Base 13 ++ __sanitizer_cov_store2@Base 13 ++ __sanitizer_cov_store4@Base 13 ++ __sanitizer_cov_store8@Base 13 ++ __sanitizer_cov_trace_cmp1@Base 7 ++ __sanitizer_cov_trace_cmp2@Base 7 ++ __sanitizer_cov_trace_cmp4@Base 7 ++ __sanitizer_cov_trace_cmp8@Base 7 ++ __sanitizer_cov_trace_cmp@Base 6 ++ __sanitizer_cov_trace_const_cmp1@Base 8 ++ __sanitizer_cov_trace_const_cmp2@Base 8 ++ __sanitizer_cov_trace_const_cmp4@Base 8 ++ __sanitizer_cov_trace_const_cmp8@Base 8 ++ __sanitizer_cov_trace_div4@Base 7 ++ __sanitizer_cov_trace_div8@Base 7 ++ __sanitizer_cov_trace_gep@Base 7 ++ __sanitizer_cov_trace_pc_guard@Base 7 ++ __sanitizer_cov_trace_pc_guard_init@Base 7 ++ __sanitizer_cov_trace_pc_indir@Base 7 ++ __sanitizer_cov_trace_switch@Base 6 ++ __sanitizer_dump_coverage@Base 8 ++ __sanitizer_dump_trace_pc_guard_coverage@Base 8 ++ __sanitizer_free_hook@Base 13 ++ __sanitizer_get_dtls_size@Base 15 ++ __sanitizer_get_module_and_offset_for_pc@Base 8 ++ __sanitizer_get_report_path@Base 12 ++ __sanitizer_ignore_free_hook@Base 15 ++ __sanitizer_install_malloc_and_free_hooks@Base 7 ++ __sanitizer_internal_memcpy@Base 14 ++ __sanitizer_internal_memmove@Base 14 ++ __sanitizer_internal_memset@Base 14 ++ __sanitizer_malloc_hook@Base 13 ++ __sanitizer_on_print@Base 10 ++ __sanitizer_report_error_summary@Base 4.9 ++ __sanitizer_sandbox_on_notify@Base 4.9 ++ __sanitizer_set_death_callback@Base 6 ++ __sanitizer_set_report_fd@Base 7 ++ __sanitizer_set_report_path@Base 4.9 ++ __sanitizer_symbolize_global@Base 7 ++ __sanitizer_symbolize_pc@Base 7 ++ __ubsan_default_options@Base 8 ++ __ubsan_get_current_report_data@Base 9 ++ __ubsan_handle_add_overflow@Base 4.9 ++ __ubsan_handle_add_overflow_abort@Base 4.9 ++ __ubsan_handle_alignment_assumption@Base 10 ++ __ubsan_handle_alignment_assumption_abort@Base 10 ++ __ubsan_handle_builtin_unreachable@Base 4.9 ++ __ubsan_handle_cfi_bad_icall@Base 9 ++ __ubsan_handle_cfi_bad_icall_abort@Base 9 ++ __ubsan_handle_cfi_bad_type@Base 7 ++ __ubsan_handle_cfi_check_fail@Base 7 ++ __ubsan_handle_cfi_check_fail_abort@Base 7 ++ __ubsan_handle_divrem_overflow@Base 4.9 ++ __ubsan_handle_divrem_overflow_abort@Base 4.9 ++ __ubsan_handle_dynamic_type_cache_miss@Base 4.9 ++ __ubsan_handle_dynamic_type_cache_miss_abort@Base 4.9 ++ __ubsan_handle_float_cast_overflow@Base 4.9 ++ __ubsan_handle_float_cast_overflow_abort@Base 4.9 ++ __ubsan_handle_function_type_mismatch@Base 14 ++ __ubsan_handle_function_type_mismatch_abort@Base 14 ++ __ubsan_handle_function_type_mismatch_v1@Base 4.9 ++ __ubsan_handle_function_type_mismatch_v1_abort@Base 4.9 ++ __ubsan_handle_implicit_conversion@Base 9 ++ __ubsan_handle_implicit_conversion_abort@Base 9 ++ __ubsan_handle_invalid_builtin@Base 8 ++ __ubsan_handle_invalid_builtin_abort@Base 8 ++ __ubsan_handle_invalid_objc_cast@Base 11 ++ __ubsan_handle_invalid_objc_cast_abort@Base 11 ++ __ubsan_handle_load_invalid_value@Base 4.9 ++ __ubsan_handle_load_invalid_value_abort@Base 4.9 ++ __ubsan_handle_missing_return@Base 4.9 ++ __ubsan_handle_mul_overflow@Base 4.9 ++ __ubsan_handle_mul_overflow_abort@Base 4.9 ++ __ubsan_handle_negate_overflow@Base 4.9 ++ __ubsan_handle_negate_overflow_abort@Base 4.9 ++ __ubsan_handle_nonnull_arg@Base 5 ++ __ubsan_handle_nonnull_arg_abort@Base 5 ++ __ubsan_handle_nonnull_return_v1@Base 8 ++ __ubsan_handle_nonnull_return_v1_abort@Base 8 ++ __ubsan_handle_nullability_arg@Base 8 ++ __ubsan_handle_nullability_arg_abort@Base 8 ++ __ubsan_handle_nullability_return_v1@Base 8 ++ __ubsan_handle_nullability_return_v1_abort@Base 8 ++ __ubsan_handle_out_of_bounds@Base 4.9 ++ __ubsan_handle_out_of_bounds_abort@Base 4.9 ++ __ubsan_handle_pointer_overflow@Base 8 ++ __ubsan_handle_pointer_overflow_abort@Base 8 ++ __ubsan_handle_shift_out_of_bounds@Base 4.9 ++ __ubsan_handle_shift_out_of_bounds_abort@Base 4.9 ++ __ubsan_handle_sub_overflow@Base 4.9 ++ __ubsan_handle_sub_overflow_abort@Base 4.9 ++ __ubsan_handle_type_mismatch_v1@Base 8 ++ __ubsan_handle_type_mismatch_v1_abort@Base 8 ++ __ubsan_handle_vla_bound_not_positive@Base 4.9 ++ __ubsan_handle_vla_bound_not_positive_abort@Base 4.9 ++ __ubsan_on_report@Base 9 ++ __ubsan_vptr_type_cache@Base 4.9 diff --cc debian/libvtv0.symbols index 0000000,0000000..908a64e new file mode 100644 --- /dev/null +++ b/debian/libvtv0.symbols @@@ -1,0 -1,0 +1,68 @@@ ++libvtv.so.0 libvtv0 #MINVER# ++ _Z10__vtv_freePv@Base 4.9.0 ++ (arch=amd64)_Z12__vtv_mallocm@Base 4.9.0 ++ (arch=i386)_Z12__vtv_mallocj@Base 4.9.0 ++ _Z14__VLTDumpStatsv@Base 4.9.0 ++ _Z14__vtv_open_logPKc@Base 4.9.0 ++ (arch=amd64)_Z16__VLTRegisterSetPPvPKvmmS0_@Base 4.9.0 ++ (arch=i386)_Z16__VLTRegisterSetPPvPKvjjS0_@Base 4.9.0 ++ _Z16__vtv_add_to_logiPKcz@Base 4.9.0 ++ (arch=amd64)_Z17__VLTRegisterPairPPvPKvmS2_@Base 4.9.0 ++ (arch=i386)_Z17__VLTRegisterPairPPvPKvjS2_@Base 4.9.0 ++ _Z17__vtv_malloc_initv@Base 4.9.0 ++ _Z17__vtv_really_failPKc@Base 4.9.0 ++ _Z17__vtv_verify_failPPvPKv@Base 4.9.0 ++ _Z18__vtv_malloc_statsv@Base 4.9.0 ++ _Z20__vtv_malloc_protectv@Base 4.9.0 ++ (arch=amd64)_Z21__VLTRegisterSetDebugPPvPKvmmS0_@Base 4.9.0 ++ (arch=i386)_Z21__VLTRegisterSetDebugPPvPKvjjS0_@Base 4.9.0 ++ (arch=amd64)_Z22__VLTRegisterPairDebugPPvPKvmS2_PKcS4_@Base 4.9.0 ++ (arch=i386)_Z22__VLTRegisterPairDebugPPvPKvjS2_PKcS4_@Base 4.9.0 ++ _Z22__vtv_malloc_unprotectv@Base 4.9.0 ++ _Z23__vtv_malloc_dump_statsv@Base 4.9.0 ++ _Z23__vtv_verify_fail_debugPPvPKvPKc@Base 4.9.0 ++ (arch=amd64)_Z23search_cached_file_datam@Base 4.9.0 ++ (arch=i386)_Z23search_cached_file_dataj@Base 4.9.0 ++ _Z24__VLTVerifyVtablePointerPPvPKv@Base 4.9.0 ++ _Z25__vtv_count_mmapped_pagesv@Base 4.9.0 ++ _Z29__VLTVerifyVtablePointerDebugPPvPKvPKcS4_@Base 4.9.0 ++ _Z30__vtv_log_verification_failurePKcb@Base 4.9.0 ++ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 ++ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 ++ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 ++ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 ++ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEm@Base 4.9.0 ++ (arch=amd64)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 ++ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEm@Base 4.9.0 ++ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 ++ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 ++ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 ++ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 ++ (arch=amd64)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIm9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 ++ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12put_internalEPKNS8_8key_typeERKS6_b@Base 4.9.0 ++ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE15find_or_add_keyEPKNS8_8key_typeEPPS6_@Base 4.9.0 ++ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE16destructive_copyEv@Base 4.9.0 ++ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3putEPKNS8_8key_typeERKS6_@Base 4.9.0 ++ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE6createEj@Base 4.9.0 ++ (arch=i386)_ZN20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE7destroyEPS8_@Base 4.9.0 ++ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE11is_too_fullEj@Base 4.9.0 ++ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE12bucket_countEv@Base 4.9.0 ++ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE3getEPKNS8_8key_typeE@Base 4.9.0 ++ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE4sizeEv@Base 4.9.0 ++ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE5emptyEv@Base 4.9.0 ++ (arch=i386)_ZNK20insert_only_hash_mapIPPN21insert_only_hash_setsIj9vptr_hash14vptr_set_allocE20insert_only_hash_setE30insert_only_hash_map_allocatorE8key_type6equalsEPKS9_@Base 4.9.0 ++ __VLTChangePermission@Base 4.9.0 ++ __VLTprotect@Base 4.9.0 ++ __VLTunprotect@Base 4.9.0 ++ _vtable_map_vars_end@Base 4.9.0 ++ _vtable_map_vars_start@Base 4.9.0 ++ mprotect_cycles@Base 4.9.0 ++ num_cache_entries@Base 4.9.0 ++ num_calls_to_mprotect@Base 4.9.0 ++ num_calls_to_regpair@Base 4.9.0 ++ num_calls_to_regset@Base 4.9.0 ++ num_calls_to_verify_vtable@Base 4.9.0 ++ num_pages_protected@Base 4.9.0 ++ regpair_cycles@Base 4.9.0 ++ regset_cycles@Base 4.9.0 ++ verify_vtable_cycles@Base 4.9.0 diff --cc debian/libx32asan8.symbols index 0000000,0000000..ed11d05 new file mode 100644 --- /dev/null +++ b/debian/libx32asan8.symbols @@@ -1,0 -1,0 +1,3045 @@@ ++# SymbolsHelper-Confirmed: 15 amd64 i386 ++libasan.so.8 libx32asan8 #MINVER# ++ _Unwind_RaiseException@Base 15 ++ _ZdaPv@Base 15 ++ _ZdaPvRKSt9nothrow_t@Base 15 ++ _ZdaPvSt11align_val_t@Base 15 ++ _ZdaPvSt11align_val_tRKSt9nothrow_t@Base 15 ++ _ZdaPvj@Base 15 ++ _ZdaPvjSt11align_val_t@Base 15 ++ _ZdlPv@Base 15 ++ _ZdlPvRKSt9nothrow_t@Base 15 ++ _ZdlPvSt11align_val_t@Base 15 ++ _ZdlPvSt11align_val_tRKSt9nothrow_t@Base 15 ++ _ZdlPvj@Base 15 ++ _ZdlPvjSt11align_val_t@Base 15 ++ _Znaj@Base 15 ++ _ZnajRKSt9nothrow_t@Base 15 ++ _ZnajSt11align_val_t@Base 15 ++ _ZnajSt11align_val_tRKSt9nothrow_t@Base 15 ++ _Znwj@Base 15 ++ _ZnwjRKSt9nothrow_t@Base 15 ++ _ZnwjSt11align_val_t@Base 15 ++ _ZnwjSt11align_val_tRKSt9nothrow_t@Base 15 ++ ___interceptor__Unwind_RaiseException@Base 15 ++ ___interceptor___b64_ntop@Base 15 ++ ___interceptor___b64_pton@Base 15 ++ ___interceptor___bzero@Base 15 ++ ___interceptor___cxa_atexit@Base 15 ++ ___interceptor___cxa_throw@Base 15 ++ ___interceptor___fprintf_chk@Base 15 ++ ___interceptor___getdelim@Base 15 ++ ___interceptor___isoc23_fscanf@Base 15 ++ ___interceptor___isoc23_scanf@Base 15 ++ ___interceptor___isoc23_sscanf@Base 15 ++ ___interceptor___isoc23_strtoimax@Base 15 ++ ___interceptor___isoc23_strtol@Base 15 ++ ___interceptor___isoc23_strtoll@Base 15 ++ ___interceptor___isoc23_strtoumax@Base 15 ++ ___interceptor___isoc23_vfscanf@Base 15 ++ ___interceptor___isoc23_vscanf@Base 15 ++ ___interceptor___isoc23_vsscanf@Base 15 ++ ___interceptor___isoc99_fprintf@Base 15 ++ ___interceptor___isoc99_fscanf@Base 15 ++ ___interceptor___isoc99_printf@Base 15 ++ ___interceptor___isoc99_scanf@Base 15 ++ ___interceptor___isoc99_snprintf@Base 15 ++ ___interceptor___isoc99_sprintf@Base 15 ++ ___interceptor___isoc99_sscanf@Base 15 ++ ___interceptor___isoc99_vfprintf@Base 15 ++ ___interceptor___isoc99_vfscanf@Base 15 ++ ___interceptor___isoc99_vprintf@Base 15 ++ ___interceptor___isoc99_vscanf@Base 15 ++ ___interceptor___isoc99_vsnprintf@Base 15 ++ ___interceptor___isoc99_vsprintf@Base 15 ++ ___interceptor___isoc99_vsscanf@Base 15 ++ ___interceptor___libc_memalign@Base 15 ++ ___interceptor___longjmp_chk@Base 15 ++ ___interceptor___lxstat64@Base 15 ++ ___interceptor___lxstat@Base 15 ++ ___interceptor___overflow@Base 15 ++ ___interceptor___snprintf_chk@Base 15 ++ ___interceptor___sprintf_chk@Base 15 ++ ___interceptor___strdup@Base 15 ++ ___interceptor___strndup@Base 15 ++ ___interceptor___strxfrm_l@Base 15 ++ ___interceptor___tls_get_addr@Base 15 ++ ___interceptor___uflow@Base 15 ++ ___interceptor___underflow@Base 15 ++ ___interceptor___vsnprintf_chk@Base 15 ++ ___interceptor___vsprintf_chk@Base 15 ++ ___interceptor___wcsxfrm_l@Base 15 ++ ___interceptor___woverflow@Base 15 ++ ___interceptor___wuflow@Base 15 ++ ___interceptor___wunderflow@Base 15 ++ ___interceptor___xpg_strerror_r@Base 15 ++ ___interceptor___xstat64@Base 15 ++ ___interceptor___xstat@Base 15 ++ ___interceptor__exit@Base 15 ++ ___interceptor__longjmp@Base 15 ++ ___interceptor__obstack_begin@Base 15 ++ ___interceptor__obstack_begin_1@Base 15 ++ ___interceptor__obstack_newchunk@Base 15 ++ ___interceptor_accept4@Base 15 ++ ___interceptor_accept@Base 15 ++ ___interceptor_aligned_alloc@Base 15 ++ ___interceptor_argp_parse@Base 15 ++ ___interceptor_asctime@Base 15 ++ ___interceptor_asctime_r@Base 15 ++ ___interceptor_asprintf@Base 15 ++ ___interceptor_atoi@Base 15 ++ ___interceptor_atol@Base 15 ++ ___interceptor_atoll@Base 15 ++ ___interceptor_backtrace@Base 15 ++ ___interceptor_backtrace_symbols@Base 15 ++ ___interceptor_bcmp@Base 15 ++ ___interceptor_bsearch@Base 15 ++ ___interceptor_bzero@Base 15 ++ ___interceptor_calloc@Base 15 ++ ___interceptor_canonicalize_file_name@Base 15 ++ ___interceptor_capget@Base 15 ++ ___interceptor_capset@Base 15 ++ ___interceptor_cfree@Base 15 ++ ___interceptor_clock_getcpuclockid@Base 15 ++ ___interceptor_clock_getres@Base 15 ++ ___interceptor_clock_gettime@Base 15 ++ ___interceptor_clock_settime@Base 15 ++ ___interceptor_confstr@Base 15 ++ ___interceptor_ctermid@Base 15 ++ ___interceptor_ctime@Base 15 ++ ___interceptor_ctime_r@Base 15 ++ ___interceptor_dlclose@Base 15 ++ ___interceptor_dlopen@Base 15 ++ ___interceptor_dn_comp@Base 15 ++ ___interceptor_dn_expand@Base 15 ++ ___interceptor_drand48_r@Base 15 ++ ___interceptor_endgrent@Base 15 ++ ___interceptor_endpwent@Base 15 ++ ___interceptor_ether_aton@Base 15 ++ ___interceptor_ether_aton_r@Base 15 ++ ___interceptor_ether_hostton@Base 15 ++ ___interceptor_ether_line@Base 15 ++ ___interceptor_ether_ntoa@Base 15 ++ ___interceptor_ether_ntoa_r@Base 15 ++ ___interceptor_ether_ntohost@Base 15 ++ ___interceptor_eventfd_read@Base 15 ++ ___interceptor_eventfd_write@Base 15 ++ ___interceptor_fclose@Base 15 ++ ___interceptor_fdopen@Base 15 ++ ___interceptor_fflush@Base 15 ++ ___interceptor_fgetgrent@Base 15 ++ ___interceptor_fgetgrent_r@Base 15 ++ ___interceptor_fgetpwent@Base 15 ++ ___interceptor_fgetpwent_r@Base 15 ++ ___interceptor_fgets@Base 15 ++ ___interceptor_fgetxattr@Base 15 ++ ___interceptor_flistxattr@Base 15 ++ ___interceptor_fmemopen@Base 15 ++ ___interceptor_fopen64@Base 15 ++ ___interceptor_fopen@Base 15 ++ ___interceptor_fopencookie@Base 15 ++ ___interceptor_fprintf@Base 15 ++ ___interceptor_fputs@Base 15 ++ ___interceptor_fread@Base 15 ++ ___interceptor_free@Base 15 ++ ___interceptor_freopen64@Base 15 ++ ___interceptor_freopen@Base 15 ++ ___interceptor_frexp@Base 15 ++ ___interceptor_frexpf@Base 15 ++ ___interceptor_frexpl@Base 15 ++ ___interceptor_fscanf@Base 15 ++ ___interceptor_fstatfs64@Base 15 ++ ___interceptor_fstatfs@Base 15 ++ ___interceptor_fstatvfs64@Base 15 ++ ___interceptor_fstatvfs@Base 15 ++ ___interceptor_ftime@Base 15 ++ ___interceptor_fwrite@Base 15 ++ ___interceptor_get_current_dir_name@Base 15 ++ ___interceptor_getaddrinfo@Base 15 ++ ___interceptor_getcwd@Base 15 ++ ___interceptor_getdelim@Base 15 ++ ___interceptor_getentropy@Base 15 ++ ___interceptor_getgrent@Base 15 ++ ___interceptor_getgrent_r@Base 15 ++ ___interceptor_getgrgid@Base 15 ++ ___interceptor_getgrgid_r@Base 15 ++ ___interceptor_getgrnam@Base 15 ++ ___interceptor_getgrnam_r@Base 15 ++ ___interceptor_getgrouplist@Base 15 ++ ___interceptor_getgroups@Base 15 ++ ___interceptor_gethostbyaddr@Base 15 ++ ___interceptor_gethostbyaddr_r@Base 15 ++ ___interceptor_gethostbyname2@Base 15 ++ ___interceptor_gethostbyname2_r@Base 15 ++ ___interceptor_gethostbyname@Base 15 ++ ___interceptor_gethostbyname_r@Base 15 ++ ___interceptor_gethostent@Base 15 ++ ___interceptor_gethostent_r@Base 15 ++ ___interceptor_getifaddrs@Base 15 ++ ___interceptor_getitimer@Base 15 ++ ___interceptor_getline@Base 15 ++ ___interceptor_getloadavg@Base 15 ++ ___interceptor_getmntent@Base 15 ++ ___interceptor_getmntent_r@Base 15 ++ ___interceptor_getnameinfo@Base 15 ++ ___interceptor_getnetbyaddr@Base 15 ++ ___interceptor_getnetbyname@Base 15 ++ ___interceptor_getnetent@Base 15 ++ ___interceptor_getpass@Base 15 ++ ___interceptor_getpeername@Base 15 ++ ___interceptor_getprotobyname@Base 15 ++ ___interceptor_getprotobyname_r@Base 15 ++ ___interceptor_getprotobynumber@Base 15 ++ ___interceptor_getprotobynumber_r@Base 15 ++ ___interceptor_getprotoent@Base 15 ++ ___interceptor_getprotoent_r@Base 15 ++ ___interceptor_getpwent@Base 15 ++ ___interceptor_getpwent_r@Base 15 ++ ___interceptor_getpwnam@Base 15 ++ ___interceptor_getpwnam_r@Base 15 ++ ___interceptor_getpwuid@Base 15 ++ ___interceptor_getpwuid_r@Base 15 ++ ___interceptor_getrandom@Base 15 ++ ___interceptor_getresgid@Base 15 ++ ___interceptor_getresuid@Base 15 ++ ___interceptor_getsockname@Base 15 ++ ___interceptor_getsockopt@Base 15 ++ ___interceptor_getusershell@Base 15 ++ ___interceptor_getutent@Base 15 ++ ___interceptor_getutid@Base 15 ++ ___interceptor_getutline@Base 15 ++ ___interceptor_getutxent@Base 15 ++ ___interceptor_getutxid@Base 15 ++ ___interceptor_getutxline@Base 15 ++ ___interceptor_getxattr@Base 15 ++ ___interceptor_glob64@Base 15 ++ ___interceptor_glob@Base 15 ++ ___interceptor_gmtime@Base 15 ++ ___interceptor_gmtime_r@Base 15 ++ ___interceptor_iconv@Base 15 ++ ___interceptor_if_indextoname@Base 15 ++ ___interceptor_if_nametoindex@Base 15 ++ ___interceptor_index@Base 15 ++ ___interceptor_inet_aton@Base 15 ++ ___interceptor_inet_ntop@Base 15 ++ ___interceptor_inet_pton@Base 15 ++ ___interceptor_initgroups@Base 15 ++ ___interceptor_ioctl@Base 15 ++ ___interceptor_lgamma@Base 15 ++ ___interceptor_lgamma_r@Base 15 ++ ___interceptor_lgammaf@Base 15 ++ ___interceptor_lgammaf_r@Base 15 ++ ___interceptor_lgammal@Base 15 ++ ___interceptor_lgammal_r@Base 15 ++ ___interceptor_lgetxattr@Base 15 ++ ___interceptor_listxattr@Base 15 ++ ___interceptor_llistxattr@Base 15 ++ ___interceptor_localtime@Base 15 ++ ___interceptor_localtime_r@Base 15 ++ ___interceptor_longjmp@Base 15 ++ ___interceptor_lrand48_r@Base 15 ++ ___interceptor_lstat64@Base 15 ++ ___interceptor_lstat@Base 15 ++ ___interceptor_makecontext@Base 15 ++ ___interceptor_mallinfo@Base 15 ++ ___interceptor_malloc@Base 15 ++ ___interceptor_malloc_stats@Base 15 ++ ___interceptor_malloc_usable_size@Base 15 ++ ___interceptor_mallopt@Base 15 ++ ___interceptor_mbsnrtowcs@Base 15 ++ ___interceptor_mbsrtowcs@Base 15 ++ ___interceptor_mbstowcs@Base 15 ++ ___interceptor_mcheck@Base 15 ++ ___interceptor_mcheck_pedantic@Base 15 ++ ___interceptor_memalign@Base 15 ++ ___interceptor_memchr@Base 15 ++ ___interceptor_memcmp@Base 15 ++ ___interceptor_memcpy@Base 15 ++ ___interceptor_memmem@Base 15 ++ ___interceptor_memmove@Base 15 ++ ___interceptor_memrchr@Base 15 ++ ___interceptor_memset@Base 15 ++ ___interceptor_mincore@Base 15 ++ ___interceptor_mktime@Base 15 ++ ___interceptor_mlock@Base 15 ++ ___interceptor_mlockall@Base 15 ++ ___interceptor_mmap64@Base 15 ++ ___interceptor_mmap@Base 15 ++ ___interceptor_modf@Base 15 ++ ___interceptor_modff@Base 15 ++ ___interceptor_modfl@Base 15 ++ ___interceptor_mprobe@Base 15 ++ ___interceptor_mprotect@Base 15 ++ ___interceptor_msgrcv@Base 15 ++ ___interceptor_msgsnd@Base 15 ++ ___interceptor_munlock@Base 15 ++ ___interceptor_munlockall@Base 15 ++ ___interceptor_munmap@Base 15 ++ ___interceptor_name_to_handle_at@Base 15 ++ ___interceptor_open_by_handle_at@Base 15 ++ ___interceptor_open_memstream@Base 15 ++ ___interceptor_open_wmemstream@Base 15 ++ ___interceptor_opendir@Base 15 ++ ___interceptor_pclose@Base 15 ++ ___interceptor_poll@Base 15 ++ ___interceptor_popen@Base 15 ++ ___interceptor_posix_memalign@Base 15 ++ ___interceptor_posix_spawn@Base 15 ++ ___interceptor_posix_spawnp@Base 15 ++ ___interceptor_ppoll@Base 15 ++ ___interceptor_prctl@Base 15 ++ ___interceptor_pread64@Base 15 ++ ___interceptor_pread@Base 15 ++ ___interceptor_preadv2@Base 15 ++ ___interceptor_preadv64@Base 15 ++ ___interceptor_preadv@Base 15 ++ ___interceptor_printf@Base 15 ++ ___interceptor_process_vm_readv@Base 15 ++ ___interceptor_process_vm_writev@Base 15 ++ ___interceptor_pthread_attr_getaffinity_np@Base 15 ++ ___interceptor_pthread_attr_getdetachstate@Base 15 ++ ___interceptor_pthread_attr_getguardsize@Base 15 ++ ___interceptor_pthread_attr_getinheritsched@Base 15 ++ ___interceptor_pthread_attr_getschedparam@Base 15 ++ ___interceptor_pthread_attr_getschedpolicy@Base 15 ++ ___interceptor_pthread_attr_getscope@Base 15 ++ ___interceptor_pthread_attr_getstack@Base 15 ++ ___interceptor_pthread_attr_getstacksize@Base 15 ++ ___interceptor_pthread_barrierattr_getpshared@Base 15 ++ ___interceptor_pthread_condattr_getclock@Base 15 ++ ___interceptor_pthread_condattr_getpshared@Base 15 ++ ___interceptor_pthread_create@Base 15 ++ ___interceptor_pthread_detach@Base 15 ++ ___interceptor_pthread_exit@Base 15 ++ ___interceptor_pthread_getaffinity_np@Base 15 ++ ___interceptor_pthread_getcpuclockid@Base 15 ++ ___interceptor_pthread_getname_np@Base 15 ++ ___interceptor_pthread_getschedparam@Base 15 ++ ___interceptor_pthread_join@Base 15 ++ ___interceptor_pthread_mutexattr_getprioceiling@Base 15 ++ ___interceptor_pthread_mutexattr_getprotocol@Base 15 ++ ___interceptor_pthread_mutexattr_getpshared@Base 15 ++ ___interceptor_pthread_mutexattr_getrobust@Base 15 ++ ___interceptor_pthread_mutexattr_getrobust_np@Base 15 ++ ___interceptor_pthread_mutexattr_gettype@Base 15 ++ ___interceptor_pthread_rwlockattr_getkind_np@Base 15 ++ ___interceptor_pthread_rwlockattr_getpshared@Base 15 ++ ___interceptor_pthread_setcancelstate@Base 15 ++ ___interceptor_pthread_setcanceltype@Base 15 ++ ___interceptor_pthread_setname_np@Base 15 ++ ___interceptor_pthread_sigmask@Base 15 ++ ___interceptor_pthread_timedjoin_np@Base 15 ++ ___interceptor_pthread_tryjoin_np@Base 15 ++ ___interceptor_ptrace@Base 15 ++ ___interceptor_ptsname@Base 15 ++ ___interceptor_ptsname_r@Base 15 ++ ___interceptor_puts@Base 15 ++ ___interceptor_pututxline@Base 15 ++ ___interceptor_pvalloc@Base 15 ++ ___interceptor_pwrite64@Base 15 ++ ___interceptor_pwrite@Base 15 ++ ___interceptor_pwritev2@Base 15 ++ ___interceptor_pwritev64@Base 15 ++ ___interceptor_pwritev@Base 15 ++ ___interceptor_qsort@Base 15 ++ ___interceptor_qsort_r@Base 15 ++ ___interceptor_rand_r@Base 15 ++ ___interceptor_random_r@Base 15 ++ ___interceptor_read@Base 15 ++ ___interceptor_readdir64@Base 15 ++ ___interceptor_readdir64_r@Base 15 ++ ___interceptor_readdir@Base 15 ++ ___interceptor_readdir_r@Base 15 ++ ___interceptor_readlink@Base 15 ++ ___interceptor_readlinkat@Base 15 ++ ___interceptor_readv@Base 15 ++ ___interceptor_realloc@Base 15 ++ ___interceptor_reallocarray@Base 15 ++ ___interceptor_realpath@Base 15 ++ ___interceptor_recv@Base 15 ++ ___interceptor_recvfrom@Base 15 ++ ___interceptor_recvmmsg@Base 15 ++ ___interceptor_recvmsg@Base 15 ++ ___interceptor_regcomp@Base 15 ++ ___interceptor_regerror@Base 15 ++ ___interceptor_regexec@Base 15 ++ ___interceptor_regfree@Base 15 ++ ___interceptor_remquo@Base 15 ++ ___interceptor_remquof@Base 15 ++ ___interceptor_remquol@Base 15 ++ ___interceptor_scandir64@Base 15 ++ ___interceptor_scandir@Base 15 ++ ___interceptor_scanf@Base 15 ++ ___interceptor_sched_getaffinity@Base 15 ++ ___interceptor_sched_getparam@Base 15 ++ ___interceptor_sem_destroy@Base 15 ++ ___interceptor_sem_getvalue@Base 15 ++ ___interceptor_sem_init@Base 15 ++ ___interceptor_sem_open@Base 15 ++ ___interceptor_sem_post@Base 15 ++ ___interceptor_sem_timedwait@Base 15 ++ ___interceptor_sem_trywait@Base 15 ++ ___interceptor_sem_unlink@Base 15 ++ ___interceptor_sem_wait@Base 15 ++ ___interceptor_send@Base 15 ++ ___interceptor_sendmmsg@Base 15 ++ ___interceptor_sendmsg@Base 15 ++ ___interceptor_sendto@Base 15 ++ ___interceptor_setbuf@Base 15 ++ ___interceptor_setbuffer@Base 15 ++ ___interceptor_setgrent@Base 15 ++ ___interceptor_setitimer@Base 15 ++ ___interceptor_setlinebuf@Base 15 ++ ___interceptor_setlocale@Base 15 ++ ___interceptor_setpwent@Base 15 ++ ___interceptor_setvbuf@Base 15 ++ ___interceptor_sigaction@Base 15 ++ ___interceptor_sigaltstack@Base 15 ++ ___interceptor_sigandset@Base 15 ++ ___interceptor_sigemptyset@Base 15 ++ ___interceptor_sigfillset@Base 15 ++ ___interceptor_siglongjmp@Base 15 ++ ___interceptor_signal@Base 15 ++ ___interceptor_sigorset@Base 15 ++ ___interceptor_sigpending@Base 15 ++ ___interceptor_sigprocmask@Base 15 ++ ___interceptor_sigtimedwait@Base 15 ++ ___interceptor_sigwait@Base 15 ++ ___interceptor_sigwaitinfo@Base 15 ++ ___interceptor_sincos@Base 15 ++ ___interceptor_sincosf@Base 15 ++ ___interceptor_sincosl@Base 15 ++ ___interceptor_snprintf@Base 15 ++ ___interceptor_sprintf@Base 15 ++ ___interceptor_sscanf@Base 15 ++ ___interceptor_stat64@Base 15 ++ ___interceptor_stat@Base 15 ++ ___interceptor_statfs64@Base 15 ++ ___interceptor_statfs@Base 15 ++ ___interceptor_statvfs64@Base 15 ++ ___interceptor_statvfs@Base 15 ++ ___interceptor_strcasecmp@Base 15 ++ ___interceptor_strcasestr@Base 15 ++ ___interceptor_strcat@Base 15 ++ ___interceptor_strchr@Base 15 ++ ___interceptor_strchrnul@Base 15 ++ ___interceptor_strcmp@Base 15 ++ ___interceptor_strcpy@Base 15 ++ ___interceptor_strcspn@Base 15 ++ ___interceptor_strdup@Base 15 ++ ___interceptor_strerror@Base 15 ++ ___interceptor_strerror_r@Base 15 ++ ___interceptor_strlen@Base 15 ++ ___interceptor_strncasecmp@Base 15 ++ ___interceptor_strncat@Base 15 ++ ___interceptor_strncmp@Base 15 ++ ___interceptor_strncpy@Base 15 ++ ___interceptor_strndup@Base 15 ++ ___interceptor_strnlen@Base 15 ++ ___interceptor_strpbrk@Base 15 ++ ___interceptor_strptime@Base 15 ++ ___interceptor_strrchr@Base 15 ++ ___interceptor_strspn@Base 15 ++ ___interceptor_strstr@Base 15 ++ ___interceptor_strtoimax@Base 15 ++ ___interceptor_strtok@Base 15 ++ ___interceptor_strtol@Base 15 ++ ___interceptor_strtoll@Base 15 ++ ___interceptor_strtoumax@Base 15 ++ ___interceptor_strxfrm@Base 15 ++ ___interceptor_strxfrm_l@Base 15 ++ ___interceptor_swapcontext@Base 15 ++ ___interceptor_sysinfo@Base 15 ++ ___interceptor_tcgetattr@Base 15 ++ ___interceptor_tempnam@Base 15 ++ ___interceptor_textdomain@Base 15 ++ ___interceptor_time@Base 15 ++ ___interceptor_timerfd_gettime@Base 15 ++ ___interceptor_timerfd_settime@Base 15 ++ ___interceptor_times@Base 15 ++ ___interceptor_tmpnam@Base 15 ++ ___interceptor_tmpnam_r@Base 15 ++ ___interceptor_tsearch@Base 15 ++ ___interceptor_ttyname@Base 15 ++ ___interceptor_ttyname_r@Base 15 ++ ___interceptor_uname@Base 15 ++ ___interceptor_valloc@Base 15 ++ ___interceptor_vasprintf@Base 15 ++ ___interceptor_vfork@Base 15 ++ ___interceptor_vfprintf@Base 15 ++ ___interceptor_vfscanf@Base 15 ++ ___interceptor_vprintf@Base 15 ++ ___interceptor_vscanf@Base 15 ++ ___interceptor_vsnprintf@Base 15 ++ ___interceptor_vsprintf@Base 15 ++ ___interceptor_vsscanf@Base 15 ++ ___interceptor_wait3@Base 15 ++ ___interceptor_wait4@Base 15 ++ ___interceptor_wait@Base 15 ++ ___interceptor_waitid@Base 15 ++ ___interceptor_waitpid@Base 15 ++ ___interceptor_wcrtomb@Base 15 ++ ___interceptor_wcscat@Base 15 ++ ___interceptor_wcsdup@Base 15 ++ ___interceptor_wcslen@Base 15 ++ ___interceptor_wcsncat@Base 15 ++ ___interceptor_wcsnlen@Base 15 ++ ___interceptor_wcsnrtombs@Base 15 ++ ___interceptor_wcsrtombs@Base 15 ++ ___interceptor_wcstombs@Base 15 ++ ___interceptor_wcsxfrm@Base 15 ++ ___interceptor_wcsxfrm_l@Base 15 ++ ___interceptor_wctomb@Base 15 ++ ___interceptor_wordexp@Base 15 ++ ___interceptor_write@Base 15 ++ ___interceptor_writev@Base 15 ++ ___interceptor_xdr_bool@Base 15 ++ ___interceptor_xdr_bytes@Base 15 ++ ___interceptor_xdr_char@Base 15 ++ ___interceptor_xdr_destroy@Base 15 ++ ___interceptor_xdr_double@Base 15 ++ ___interceptor_xdr_enum@Base 15 ++ ___interceptor_xdr_float@Base 15 ++ ___interceptor_xdr_hyper@Base 15 ++ ___interceptor_xdr_int16_t@Base 15 ++ ___interceptor_xdr_int32_t@Base 15 ++ ___interceptor_xdr_int64_t@Base 15 ++ ___interceptor_xdr_int8_t@Base 15 ++ ___interceptor_xdr_int@Base 15 ++ ___interceptor_xdr_long@Base 15 ++ ___interceptor_xdr_longlong_t@Base 15 ++ ___interceptor_xdr_quad_t@Base 15 ++ ___interceptor_xdr_short@Base 15 ++ ___interceptor_xdr_string@Base 15 ++ ___interceptor_xdr_u_char@Base 15 ++ ___interceptor_xdr_u_hyper@Base 15 ++ ___interceptor_xdr_u_int@Base 15 ++ ___interceptor_xdr_u_long@Base 15 ++ ___interceptor_xdr_u_longlong_t@Base 15 ++ ___interceptor_xdr_u_quad_t@Base 15 ++ ___interceptor_xdr_u_short@Base 15 ++ ___interceptor_xdr_uint16_t@Base 15 ++ ___interceptor_xdr_uint32_t@Base 15 ++ ___interceptor_xdr_uint64_t@Base 15 ++ ___interceptor_xdr_uint8_t@Base 15 ++ ___interceptor_xdrmem_create@Base 15 ++ ___interceptor_xdrrec_create@Base 15 ++ ___interceptor_xdrstdio_create@Base 15 ++ __asan_addr_is_in_fake_stack@Base 15 ++ __asan_address_is_poisoned@Base 15 ++ __asan_after_dynamic_init@Base 15 ++ __asan_alloca_poison@Base 15 ++ __asan_allocas_unpoison@Base 15 ++ __asan_backtrace_alloc@Base 15 ++ __asan_backtrace_close@Base 15 ++ __asan_backtrace_create_state@Base 15 ++ __asan_backtrace_dwarf_add@Base 15 ++ __asan_backtrace_free@Base 15 ++ __asan_backtrace_get_view@Base 15 ++ __asan_backtrace_initialize@Base 15 ++ __asan_backtrace_open@Base 15 ++ __asan_backtrace_pcinfo@Base 15 ++ __asan_backtrace_qsort@Base 15 ++ __asan_backtrace_release_view@Base 15 ++ __asan_backtrace_syminfo@Base 15 ++ __asan_backtrace_syminfo_to_full_callback@Base 15 ++ __asan_backtrace_syminfo_to_full_error_callback@Base 15 ++ __asan_backtrace_uncompress_lzma@Base 15 ++ __asan_backtrace_uncompress_zdebug@Base 15 ++ __asan_backtrace_uncompress_zstd@Base 15 ++ __asan_backtrace_vector_finish@Base 15 ++ __asan_backtrace_vector_grow@Base 15 ++ __asan_backtrace_vector_release@Base 15 ++ __asan_before_dynamic_init@Base 15 ++ __asan_cplus_demangle_builtin_types@Base 15 ++ __asan_cplus_demangle_fill_ctor@Base 15 ++ __asan_cplus_demangle_fill_dtor@Base 15 ++ __asan_cplus_demangle_fill_extended_operator@Base 15 ++ __asan_cplus_demangle_fill_name@Base 15 ++ __asan_cplus_demangle_init_info@Base 15 ++ __asan_cplus_demangle_mangled_name@Base 15 ++ __asan_cplus_demangle_operators@Base 15 ++ __asan_cplus_demangle_print@Base 15 ++ __asan_cplus_demangle_print_callback@Base 15 ++ __asan_cplus_demangle_type@Base 15 ++ __asan_cplus_demangle_v3@Base 15 ++ __asan_cplus_demangle_v3_callback@Base 15 ++ __asan_default_options@Base 15 ++ __asan_default_suppressions@Base 15 ++ __asan_describe_address@Base 15 ++ __asan_exp_load16@Base 15 ++ __asan_exp_load1@Base 15 ++ __asan_exp_load2@Base 15 ++ __asan_exp_load4@Base 15 ++ __asan_exp_load8@Base 15 ++ __asan_exp_loadN@Base 15 ++ __asan_exp_store16@Base 15 ++ __asan_exp_store1@Base 15 ++ __asan_exp_store2@Base 15 ++ __asan_exp_store4@Base 15 ++ __asan_exp_store8@Base 15 ++ __asan_exp_storeN@Base 15 ++ __asan_get_alloc_stack@Base 15 ++ __asan_get_current_fake_stack@Base 15 ++ __asan_get_free_stack@Base 15 ++ __asan_get_report_access_size@Base 15 ++ __asan_get_report_access_type@Base 15 ++ __asan_get_report_address@Base 15 ++ __asan_get_report_bp@Base 15 ++ __asan_get_report_description@Base 15 ++ __asan_get_report_pc@Base 15 ++ __asan_get_report_sp@Base 15 ++ __asan_get_shadow_mapping@Base 15 ++ __asan_handle_no_return@Base 15 ++ __asan_handle_vfork@Base 15 ++ __asan_init@Base 15 ++ __asan_internal_memcmp@Base 15 ++ __asan_internal_memcpy@Base 15 ++ __asan_internal_memset@Base 15 ++ __asan_internal_strcmp@Base 15 ++ __asan_internal_strlen@Base 15 ++ __asan_internal_strncmp@Base 15 ++ __asan_internal_strnlen@Base 15 ++ __asan_is_gnu_v3_mangled_ctor@Base 15 ++ __asan_is_gnu_v3_mangled_dtor@Base 15 ++ __asan_java_demangle_v3@Base 15 ++ __asan_java_demangle_v3_callback@Base 15 ++ __asan_load16@Base 15 ++ __asan_load16_noabort@Base 15 ++ __asan_load1@Base 15 ++ __asan_load1_noabort@Base 15 ++ __asan_load2@Base 15 ++ __asan_load2_noabort@Base 15 ++ __asan_load4@Base 15 ++ __asan_load4_noabort@Base 15 ++ __asan_load8@Base 15 ++ __asan_load8_noabort@Base 15 ++ __asan_loadN@Base 15 ++ __asan_loadN_noabort@Base 15 ++ __asan_load_cxx_array_cookie@Base 15 ++ __asan_locate_address@Base 15 ++ __asan_memcpy@Base 15 ++ __asan_memmove@Base 15 ++ __asan_memset@Base 15 ++ __asan_on_error@Base 15 ++ __asan_option_detect_stack_use_after_return@Base 15 ++ __asan_poison_cxx_array_cookie@Base 15 ++ __asan_poison_intra_object_redzone@Base 15 ++ __asan_poison_memory_region@Base 15 ++ __asan_poison_stack_memory@Base 15 ++ __asan_print_accumulated_stats@Base 15 ++ __asan_region_is_poisoned@Base 15 ++ __asan_register_elf_globals@Base 15 ++ __asan_register_globals@Base 15 ++ __asan_register_image_globals@Base 15 ++ __asan_report_error@Base 15 ++ __asan_report_exp_load16@Base 15 ++ __asan_report_exp_load1@Base 15 ++ __asan_report_exp_load2@Base 15 ++ __asan_report_exp_load4@Base 15 ++ __asan_report_exp_load8@Base 15 ++ __asan_report_exp_load_n@Base 15 ++ __asan_report_exp_store16@Base 15 ++ __asan_report_exp_store1@Base 15 ++ __asan_report_exp_store2@Base 15 ++ __asan_report_exp_store4@Base 15 ++ __asan_report_exp_store8@Base 15 ++ __asan_report_exp_store_n@Base 15 ++ __asan_report_load16@Base 15 ++ __asan_report_load16_noabort@Base 15 ++ __asan_report_load1@Base 15 ++ __asan_report_load1_noabort@Base 15 ++ __asan_report_load2@Base 15 ++ __asan_report_load2_noabort@Base 15 ++ __asan_report_load4@Base 15 ++ __asan_report_load4_noabort@Base 15 ++ __asan_report_load8@Base 15 ++ __asan_report_load8_noabort@Base 15 ++ __asan_report_load_n@Base 15 ++ __asan_report_load_n_noabort@Base 15 ++ __asan_report_present@Base 15 ++ __asan_report_store16@Base 15 ++ __asan_report_store16_noabort@Base 15 ++ __asan_report_store1@Base 15 ++ __asan_report_store1_noabort@Base 15 ++ __asan_report_store2@Base 15 ++ __asan_report_store2_noabort@Base 15 ++ __asan_report_store4@Base 15 ++ __asan_report_store4_noabort@Base 15 ++ __asan_report_store8@Base 15 ++ __asan_report_store8_noabort@Base 15 ++ __asan_report_store_n@Base 15 ++ __asan_report_store_n_noabort@Base 15 ++ __asan_rt_version@Base 15 ++ __asan_set_death_callback@Base 15 ++ __asan_set_error_report_callback@Base 15 ++ __asan_set_shadow_00@Base 15 ++ __asan_set_shadow_01@Base 15 ++ __asan_set_shadow_02@Base 15 ++ __asan_set_shadow_03@Base 15 ++ __asan_set_shadow_04@Base 15 ++ __asan_set_shadow_05@Base 15 ++ __asan_set_shadow_06@Base 15 ++ __asan_set_shadow_07@Base 15 ++ __asan_set_shadow_f1@Base 15 ++ __asan_set_shadow_f2@Base 15 ++ __asan_set_shadow_f3@Base 15 ++ __asan_set_shadow_f5@Base 15 ++ __asan_set_shadow_f8@Base 15 ++ __asan_shadow_memory_dynamic_address@Base 15 ++ __asan_stack_free_0@Base 15 ++ __asan_stack_free_10@Base 15 ++ __asan_stack_free_1@Base 15 ++ __asan_stack_free_2@Base 15 ++ __asan_stack_free_3@Base 15 ++ __asan_stack_free_4@Base 15 ++ __asan_stack_free_5@Base 15 ++ __asan_stack_free_6@Base 15 ++ __asan_stack_free_7@Base 15 ++ __asan_stack_free_8@Base 15 ++ __asan_stack_free_9@Base 15 ++ __asan_stack_malloc_0@Base 15 ++ __asan_stack_malloc_10@Base 15 ++ __asan_stack_malloc_1@Base 15 ++ __asan_stack_malloc_2@Base 15 ++ __asan_stack_malloc_3@Base 15 ++ __asan_stack_malloc_4@Base 15 ++ __asan_stack_malloc_5@Base 15 ++ __asan_stack_malloc_6@Base 15 ++ __asan_stack_malloc_7@Base 15 ++ __asan_stack_malloc_8@Base 15 ++ __asan_stack_malloc_9@Base 15 ++ __asan_stack_malloc_always_0@Base 15 ++ __asan_stack_malloc_always_10@Base 15 ++ __asan_stack_malloc_always_1@Base 15 ++ __asan_stack_malloc_always_2@Base 15 ++ __asan_stack_malloc_always_3@Base 15 ++ __asan_stack_malloc_always_4@Base 15 ++ __asan_stack_malloc_always_5@Base 15 ++ __asan_stack_malloc_always_6@Base 15 ++ __asan_stack_malloc_always_7@Base 15 ++ __asan_stack_malloc_always_8@Base 15 ++ __asan_stack_malloc_always_9@Base 15 ++ __asan_store16@Base 15 ++ __asan_store16_noabort@Base 15 ++ __asan_store1@Base 15 ++ __asan_store1_noabort@Base 15 ++ __asan_store2@Base 15 ++ __asan_store2_noabort@Base 15 ++ __asan_store4@Base 15 ++ __asan_store4_noabort@Base 15 ++ __asan_store8@Base 15 ++ __asan_store8_noabort@Base 15 ++ __asan_storeN@Base 15 ++ __asan_storeN_noabort@Base 15 ++ __asan_test_only_reported_buggy_pointer@Base 15 ++ __asan_unpoison_intra_object_redzone@Base 15 ++ __asan_unpoison_memory_region@Base 15 ++ __asan_unpoison_stack_memory@Base 15 ++ __asan_unregister_elf_globals@Base 15 ++ __asan_unregister_globals@Base 15 ++ __asan_unregister_image_globals@Base 15 ++ __asan_update_allocation_context@Base 15 ++ __asan_version_mismatch_check_v8@Base 15 ++ __b64_ntop@Base 15 ++ __b64_pton@Base 15 ++ __bzero@Base 15 ++ __cxa_atexit@Base 15 ++ __cxa_throw@Base 15 ++ __fprintf_chk@Base 15 ++ __getdelim@Base 15 ++ __interceptor__Unwind_RaiseException@Base 15 ++ __interceptor___b64_ntop@Base 15 ++ __interceptor___b64_pton@Base 15 ++ __interceptor___bzero@Base 15 ++ __interceptor___cxa_atexit@Base 15 ++ __interceptor___cxa_throw@Base 15 ++ __interceptor___fprintf_chk@Base 15 ++ __interceptor___getdelim@Base 15 ++ __interceptor___isoc23_fscanf@Base 15 ++ __interceptor___isoc23_scanf@Base 15 ++ __interceptor___isoc23_sscanf@Base 15 ++ __interceptor___isoc23_strtoimax@Base 15 ++ __interceptor___isoc23_strtol@Base 15 ++ __interceptor___isoc23_strtoll@Base 15 ++ __interceptor___isoc23_strtoumax@Base 15 ++ __interceptor___isoc23_vfscanf@Base 15 ++ __interceptor___isoc23_vscanf@Base 15 ++ __interceptor___isoc23_vsscanf@Base 15 ++ __interceptor___isoc99_fprintf@Base 15 ++ __interceptor___isoc99_fscanf@Base 15 ++ __interceptor___isoc99_printf@Base 15 ++ __interceptor___isoc99_scanf@Base 15 ++ __interceptor___isoc99_snprintf@Base 15 ++ __interceptor___isoc99_sprintf@Base 15 ++ __interceptor___isoc99_sscanf@Base 15 ++ __interceptor___isoc99_vfprintf@Base 15 ++ __interceptor___isoc99_vfscanf@Base 15 ++ __interceptor___isoc99_vprintf@Base 15 ++ __interceptor___isoc99_vscanf@Base 15 ++ __interceptor___isoc99_vsnprintf@Base 15 ++ __interceptor___isoc99_vsprintf@Base 15 ++ __interceptor___isoc99_vsscanf@Base 15 ++ __interceptor___libc_memalign@Base 15 ++ __interceptor___longjmp_chk@Base 15 ++ __interceptor___lxstat64@Base 15 ++ __interceptor___lxstat@Base 15 ++ __interceptor___overflow@Base 15 ++ __interceptor___snprintf_chk@Base 15 ++ __interceptor___sprintf_chk@Base 15 ++ __interceptor___strdup@Base 15 ++ __interceptor___strndup@Base 15 ++ __interceptor___strxfrm_l@Base 15 ++ __interceptor___tls_get_addr@Base 15 ++ __interceptor___uflow@Base 15 ++ __interceptor___underflow@Base 15 ++ __interceptor___vsnprintf_chk@Base 15 ++ __interceptor___vsprintf_chk@Base 15 ++ __interceptor___wcsxfrm_l@Base 15 ++ __interceptor___woverflow@Base 15 ++ __interceptor___wuflow@Base 15 ++ __interceptor___wunderflow@Base 15 ++ __interceptor___xpg_strerror_r@Base 15 ++ __interceptor___xstat64@Base 15 ++ __interceptor___xstat@Base 15 ++ __interceptor__exit@Base 15 ++ __interceptor__longjmp@Base 15 ++ __interceptor__obstack_begin@Base 15 ++ __interceptor__obstack_begin_1@Base 15 ++ __interceptor__obstack_newchunk@Base 15 ++ __interceptor_accept4@Base 15 ++ __interceptor_accept@Base 15 ++ __interceptor_aligned_alloc@Base 15 ++ __interceptor_argp_parse@Base 15 ++ __interceptor_asctime@Base 15 ++ __interceptor_asctime_r@Base 15 ++ __interceptor_asprintf@Base 15 ++ __interceptor_atoi@Base 15 ++ __interceptor_atol@Base 15 ++ __interceptor_atoll@Base 15 ++ __interceptor_backtrace@Base 15 ++ __interceptor_backtrace_symbols@Base 15 ++ __interceptor_bcmp@Base 15 ++ __interceptor_bsearch@Base 15 ++ __interceptor_bzero@Base 15 ++ __interceptor_calloc@Base 15 ++ __interceptor_canonicalize_file_name@Base 15 ++ __interceptor_capget@Base 15 ++ __interceptor_capset@Base 15 ++ __interceptor_cfree@Base 15 ++ __interceptor_clock_getcpuclockid@Base 15 ++ __interceptor_clock_getres@Base 15 ++ __interceptor_clock_gettime@Base 15 ++ __interceptor_clock_settime@Base 15 ++ __interceptor_confstr@Base 15 ++ __interceptor_ctermid@Base 15 ++ __interceptor_ctime@Base 15 ++ __interceptor_ctime_r@Base 15 ++ __interceptor_dlclose@Base 15 ++ __interceptor_dlopen@Base 15 ++ __interceptor_dn_comp@Base 15 ++ __interceptor_dn_expand@Base 15 ++ __interceptor_drand48_r@Base 15 ++ __interceptor_endgrent@Base 15 ++ __interceptor_endpwent@Base 15 ++ __interceptor_ether_aton@Base 15 ++ __interceptor_ether_aton_r@Base 15 ++ __interceptor_ether_hostton@Base 15 ++ __interceptor_ether_line@Base 15 ++ __interceptor_ether_ntoa@Base 15 ++ __interceptor_ether_ntoa_r@Base 15 ++ __interceptor_ether_ntohost@Base 15 ++ __interceptor_eventfd_read@Base 15 ++ __interceptor_eventfd_write@Base 15 ++ __interceptor_fclose@Base 15 ++ __interceptor_fdopen@Base 15 ++ __interceptor_fflush@Base 15 ++ __interceptor_fgetgrent@Base 15 ++ __interceptor_fgetgrent_r@Base 15 ++ __interceptor_fgetpwent@Base 15 ++ __interceptor_fgetpwent_r@Base 15 ++ __interceptor_fgets@Base 15 ++ __interceptor_fgetxattr@Base 15 ++ __interceptor_flistxattr@Base 15 ++ __interceptor_fmemopen@Base 15 ++ __interceptor_fopen64@Base 15 ++ __interceptor_fopen@Base 15 ++ __interceptor_fopencookie@Base 15 ++ __interceptor_fprintf@Base 15 ++ __interceptor_fputs@Base 15 ++ __interceptor_fread@Base 15 ++ __interceptor_free@Base 15 ++ __interceptor_freopen64@Base 15 ++ __interceptor_freopen@Base 15 ++ __interceptor_frexp@Base 15 ++ __interceptor_frexpf@Base 15 ++ __interceptor_frexpl@Base 15 ++ __interceptor_fscanf@Base 15 ++ __interceptor_fstatfs64@Base 15 ++ __interceptor_fstatfs@Base 15 ++ __interceptor_fstatvfs64@Base 15 ++ __interceptor_fstatvfs@Base 15 ++ __interceptor_ftime@Base 15 ++ __interceptor_fwrite@Base 15 ++ __interceptor_get_current_dir_name@Base 15 ++ __interceptor_getaddrinfo@Base 15 ++ __interceptor_getcwd@Base 15 ++ __interceptor_getdelim@Base 15 ++ __interceptor_getentropy@Base 15 ++ __interceptor_getgrent@Base 15 ++ __interceptor_getgrent_r@Base 15 ++ __interceptor_getgrgid@Base 15 ++ __interceptor_getgrgid_r@Base 15 ++ __interceptor_getgrnam@Base 15 ++ __interceptor_getgrnam_r@Base 15 ++ __interceptor_getgrouplist@Base 15 ++ __interceptor_getgroups@Base 15 ++ __interceptor_gethostbyaddr@Base 15 ++ __interceptor_gethostbyaddr_r@Base 15 ++ __interceptor_gethostbyname2@Base 15 ++ __interceptor_gethostbyname2_r@Base 15 ++ __interceptor_gethostbyname@Base 15 ++ __interceptor_gethostbyname_r@Base 15 ++ __interceptor_gethostent@Base 15 ++ __interceptor_gethostent_r@Base 15 ++ __interceptor_getifaddrs@Base 15 ++ __interceptor_getitimer@Base 15 ++ __interceptor_getline@Base 15 ++ __interceptor_getloadavg@Base 15 ++ __interceptor_getmntent@Base 15 ++ __interceptor_getmntent_r@Base 15 ++ __interceptor_getnameinfo@Base 15 ++ __interceptor_getnetbyaddr@Base 15 ++ __interceptor_getnetbyname@Base 15 ++ __interceptor_getnetent@Base 15 ++ __interceptor_getpass@Base 15 ++ __interceptor_getpeername@Base 15 ++ __interceptor_getprotobyname@Base 15 ++ __interceptor_getprotobyname_r@Base 15 ++ __interceptor_getprotobynumber@Base 15 ++ __interceptor_getprotobynumber_r@Base 15 ++ __interceptor_getprotoent@Base 15 ++ __interceptor_getprotoent_r@Base 15 ++ __interceptor_getpwent@Base 15 ++ __interceptor_getpwent_r@Base 15 ++ __interceptor_getpwnam@Base 15 ++ __interceptor_getpwnam_r@Base 15 ++ __interceptor_getpwuid@Base 15 ++ __interceptor_getpwuid_r@Base 15 ++ __interceptor_getrandom@Base 15 ++ __interceptor_getresgid@Base 15 ++ __interceptor_getresuid@Base 15 ++ __interceptor_getsockname@Base 15 ++ __interceptor_getsockopt@Base 15 ++ __interceptor_getusershell@Base 15 ++ __interceptor_getutent@Base 15 ++ __interceptor_getutid@Base 15 ++ __interceptor_getutline@Base 15 ++ __interceptor_getutxent@Base 15 ++ __interceptor_getutxid@Base 15 ++ __interceptor_getutxline@Base 15 ++ __interceptor_getxattr@Base 15 ++ __interceptor_glob64@Base 15 ++ __interceptor_glob@Base 15 ++ __interceptor_gmtime@Base 15 ++ __interceptor_gmtime_r@Base 15 ++ __interceptor_iconv@Base 15 ++ __interceptor_if_indextoname@Base 15 ++ __interceptor_if_nametoindex@Base 15 ++ __interceptor_index@Base 15 ++ __interceptor_inet_aton@Base 15 ++ __interceptor_inet_ntop@Base 15 ++ __interceptor_inet_pton@Base 15 ++ __interceptor_initgroups@Base 15 ++ __interceptor_ioctl@Base 15 ++ __interceptor_lgamma@Base 15 ++ __interceptor_lgamma_r@Base 15 ++ __interceptor_lgammaf@Base 15 ++ __interceptor_lgammaf_r@Base 15 ++ __interceptor_lgammal@Base 15 ++ __interceptor_lgammal_r@Base 15 ++ __interceptor_lgetxattr@Base 15 ++ __interceptor_listxattr@Base 15 ++ __interceptor_llistxattr@Base 15 ++ __interceptor_localtime@Base 15 ++ __interceptor_localtime_r@Base 15 ++ __interceptor_longjmp@Base 15 ++ __interceptor_lrand48_r@Base 15 ++ __interceptor_lstat64@Base 15 ++ __interceptor_lstat@Base 15 ++ __interceptor_makecontext@Base 15 ++ __interceptor_mallinfo@Base 15 ++ __interceptor_malloc@Base 15 ++ __interceptor_malloc_stats@Base 15 ++ __interceptor_malloc_usable_size@Base 15 ++ __interceptor_mallopt@Base 15 ++ __interceptor_mbsnrtowcs@Base 15 ++ __interceptor_mbsrtowcs@Base 15 ++ __interceptor_mbstowcs@Base 15 ++ __interceptor_mcheck@Base 15 ++ __interceptor_mcheck_pedantic@Base 15 ++ __interceptor_memalign@Base 15 ++ __interceptor_memchr@Base 15 ++ __interceptor_memcmp@Base 15 ++ __interceptor_memcpy@Base 15 ++ __interceptor_memmem@Base 15 ++ __interceptor_memmove@Base 15 ++ __interceptor_memrchr@Base 15 ++ __interceptor_memset@Base 15 ++ __interceptor_mincore@Base 15 ++ __interceptor_mktime@Base 15 ++ __interceptor_mlock@Base 15 ++ __interceptor_mlockall@Base 15 ++ __interceptor_mmap64@Base 15 ++ __interceptor_mmap@Base 15 ++ __interceptor_modf@Base 15 ++ __interceptor_modff@Base 15 ++ __interceptor_modfl@Base 15 ++ __interceptor_mprobe@Base 15 ++ __interceptor_mprotect@Base 15 ++ __interceptor_msgrcv@Base 15 ++ __interceptor_msgsnd@Base 15 ++ __interceptor_munlock@Base 15 ++ __interceptor_munlockall@Base 15 ++ __interceptor_munmap@Base 15 ++ __interceptor_name_to_handle_at@Base 15 ++ __interceptor_open_by_handle_at@Base 15 ++ __interceptor_open_memstream@Base 15 ++ __interceptor_open_wmemstream@Base 15 ++ __interceptor_opendir@Base 15 ++ __interceptor_pclose@Base 15 ++ __interceptor_poll@Base 15 ++ __interceptor_popen@Base 15 ++ __interceptor_posix_memalign@Base 15 ++ __interceptor_posix_spawn@Base 15 ++ __interceptor_posix_spawnp@Base 15 ++ __interceptor_ppoll@Base 15 ++ __interceptor_prctl@Base 15 ++ __interceptor_pread64@Base 15 ++ __interceptor_pread@Base 15 ++ __interceptor_preadv2@Base 15 ++ __interceptor_preadv64@Base 15 ++ __interceptor_preadv@Base 15 ++ __interceptor_printf@Base 15 ++ __interceptor_process_vm_readv@Base 15 ++ __interceptor_process_vm_writev@Base 15 ++ __interceptor_pthread_attr_getaffinity_np@Base 15 ++ __interceptor_pthread_attr_getdetachstate@Base 15 ++ __interceptor_pthread_attr_getguardsize@Base 15 ++ __interceptor_pthread_attr_getinheritsched@Base 15 ++ __interceptor_pthread_attr_getschedparam@Base 15 ++ __interceptor_pthread_attr_getschedpolicy@Base 15 ++ __interceptor_pthread_attr_getscope@Base 15 ++ __interceptor_pthread_attr_getstack@Base 15 ++ __interceptor_pthread_attr_getstacksize@Base 15 ++ __interceptor_pthread_barrierattr_getpshared@Base 15 ++ __interceptor_pthread_condattr_getclock@Base 15 ++ __interceptor_pthread_condattr_getpshared@Base 15 ++ __interceptor_pthread_create@Base 15 ++ __interceptor_pthread_detach@Base 15 ++ __interceptor_pthread_exit@Base 15 ++ __interceptor_pthread_getaffinity_np@Base 15 ++ __interceptor_pthread_getcpuclockid@Base 15 ++ __interceptor_pthread_getname_np@Base 15 ++ __interceptor_pthread_getschedparam@Base 15 ++ __interceptor_pthread_join@Base 15 ++ __interceptor_pthread_mutexattr_getprioceiling@Base 15 ++ __interceptor_pthread_mutexattr_getprotocol@Base 15 ++ __interceptor_pthread_mutexattr_getpshared@Base 15 ++ __interceptor_pthread_mutexattr_getrobust@Base 15 ++ __interceptor_pthread_mutexattr_getrobust_np@Base 15 ++ __interceptor_pthread_mutexattr_gettype@Base 15 ++ __interceptor_pthread_rwlockattr_getkind_np@Base 15 ++ __interceptor_pthread_rwlockattr_getpshared@Base 15 ++ __interceptor_pthread_setcancelstate@Base 15 ++ __interceptor_pthread_setcanceltype@Base 15 ++ __interceptor_pthread_setname_np@Base 15 ++ __interceptor_pthread_sigmask@Base 15 ++ __interceptor_pthread_timedjoin_np@Base 15 ++ __interceptor_pthread_tryjoin_np@Base 15 ++ __interceptor_ptrace@Base 15 ++ __interceptor_ptsname@Base 15 ++ __interceptor_ptsname_r@Base 15 ++ __interceptor_puts@Base 15 ++ __interceptor_pututxline@Base 15 ++ __interceptor_pvalloc@Base 15 ++ __interceptor_pwrite64@Base 15 ++ __interceptor_pwrite@Base 15 ++ __interceptor_pwritev2@Base 15 ++ __interceptor_pwritev64@Base 15 ++ __interceptor_pwritev@Base 15 ++ __interceptor_qsort@Base 15 ++ __interceptor_qsort_r@Base 15 ++ __interceptor_rand_r@Base 15 ++ __interceptor_random_r@Base 15 ++ __interceptor_read@Base 15 ++ __interceptor_readdir64@Base 15 ++ __interceptor_readdir64_r@Base 15 ++ __interceptor_readdir@Base 15 ++ __interceptor_readdir_r@Base 15 ++ __interceptor_readlink@Base 15 ++ __interceptor_readlinkat@Base 15 ++ __interceptor_readv@Base 15 ++ __interceptor_realloc@Base 15 ++ __interceptor_reallocarray@Base 15 ++ __interceptor_realpath@Base 15 ++ __interceptor_recv@Base 15 ++ __interceptor_recvfrom@Base 15 ++ __interceptor_recvmmsg@Base 15 ++ __interceptor_recvmsg@Base 15 ++ __interceptor_regcomp@Base 15 ++ __interceptor_regerror@Base 15 ++ __interceptor_regexec@Base 15 ++ __interceptor_regfree@Base 15 ++ __interceptor_remquo@Base 15 ++ __interceptor_remquof@Base 15 ++ __interceptor_remquol@Base 15 ++ __interceptor_scandir64@Base 15 ++ __interceptor_scandir@Base 15 ++ __interceptor_scanf@Base 15 ++ __interceptor_sched_getaffinity@Base 15 ++ __interceptor_sched_getparam@Base 15 ++ __interceptor_sem_destroy@Base 15 ++ __interceptor_sem_getvalue@Base 15 ++ __interceptor_sem_init@Base 15 ++ __interceptor_sem_open@Base 15 ++ __interceptor_sem_post@Base 15 ++ __interceptor_sem_timedwait@Base 15 ++ __interceptor_sem_trywait@Base 15 ++ __interceptor_sem_unlink@Base 15 ++ __interceptor_sem_wait@Base 15 ++ __interceptor_send@Base 15 ++ __interceptor_sendmmsg@Base 15 ++ __interceptor_sendmsg@Base 15 ++ __interceptor_sendto@Base 15 ++ __interceptor_setbuf@Base 15 ++ __interceptor_setbuffer@Base 15 ++ __interceptor_setgrent@Base 15 ++ __interceptor_setitimer@Base 15 ++ __interceptor_setlinebuf@Base 15 ++ __interceptor_setlocale@Base 15 ++ __interceptor_setpwent@Base 15 ++ __interceptor_setvbuf@Base 15 ++ __interceptor_sigaction@Base 15 ++ __interceptor_sigaltstack@Base 15 ++ __interceptor_sigandset@Base 15 ++ __interceptor_sigemptyset@Base 15 ++ __interceptor_sigfillset@Base 15 ++ __interceptor_siglongjmp@Base 15 ++ __interceptor_signal@Base 15 ++ __interceptor_sigorset@Base 15 ++ __interceptor_sigpending@Base 15 ++ __interceptor_sigprocmask@Base 15 ++ __interceptor_sigtimedwait@Base 15 ++ __interceptor_sigwait@Base 15 ++ __interceptor_sigwaitinfo@Base 15 ++ __interceptor_sincos@Base 15 ++ __interceptor_sincosf@Base 15 ++ __interceptor_sincosl@Base 15 ++ __interceptor_snprintf@Base 15 ++ __interceptor_sprintf@Base 15 ++ __interceptor_sscanf@Base 15 ++ __interceptor_stat64@Base 15 ++ __interceptor_stat@Base 15 ++ __interceptor_statfs64@Base 15 ++ __interceptor_statfs@Base 15 ++ __interceptor_statvfs64@Base 15 ++ __interceptor_statvfs@Base 15 ++ __interceptor_strcasecmp@Base 15 ++ __interceptor_strcasestr@Base 15 ++ __interceptor_strcat@Base 15 ++ __interceptor_strchr@Base 15 ++ __interceptor_strchrnul@Base 15 ++ __interceptor_strcmp@Base 15 ++ __interceptor_strcpy@Base 15 ++ __interceptor_strcspn@Base 15 ++ __interceptor_strdup@Base 15 ++ __interceptor_strerror@Base 15 ++ __interceptor_strerror_r@Base 15 ++ __interceptor_strlen@Base 15 ++ __interceptor_strncasecmp@Base 15 ++ __interceptor_strncat@Base 15 ++ __interceptor_strncmp@Base 15 ++ __interceptor_strncpy@Base 15 ++ __interceptor_strndup@Base 15 ++ __interceptor_strnlen@Base 15 ++ __interceptor_strpbrk@Base 15 ++ __interceptor_strptime@Base 15 ++ __interceptor_strrchr@Base 15 ++ __interceptor_strspn@Base 15 ++ __interceptor_strstr@Base 15 ++ __interceptor_strtoimax@Base 15 ++ __interceptor_strtok@Base 15 ++ __interceptor_strtol@Base 15 ++ __interceptor_strtoll@Base 15 ++ __interceptor_strtoumax@Base 15 ++ __interceptor_strxfrm@Base 15 ++ __interceptor_strxfrm_l@Base 15 ++ __interceptor_swapcontext@Base 15 ++ __interceptor_sysinfo@Base 15 ++ __interceptor_tcgetattr@Base 15 ++ __interceptor_tempnam@Base 15 ++ __interceptor_textdomain@Base 15 ++ __interceptor_time@Base 15 ++ __interceptor_timerfd_gettime@Base 15 ++ __interceptor_timerfd_settime@Base 15 ++ __interceptor_times@Base 15 ++ __interceptor_tmpnam@Base 15 ++ __interceptor_tmpnam_r@Base 15 ++ __interceptor_trampoline__Unwind_RaiseException@Base 15 ++ __interceptor_trampoline___b64_ntop@Base 15 ++ __interceptor_trampoline___b64_pton@Base 15 ++ __interceptor_trampoline___bzero@Base 15 ++ __interceptor_trampoline___cxa_atexit@Base 15 ++ __interceptor_trampoline___cxa_throw@Base 15 ++ __interceptor_trampoline___fprintf_chk@Base 15 ++ __interceptor_trampoline___getdelim@Base 15 ++ __interceptor_trampoline___isoc23_fscanf@Base 15 ++ __interceptor_trampoline___isoc23_scanf@Base 15 ++ __interceptor_trampoline___isoc23_sscanf@Base 15 ++ __interceptor_trampoline___isoc23_strtoimax@Base 15 ++ __interceptor_trampoline___isoc23_strtol@Base 15 ++ __interceptor_trampoline___isoc23_strtoll@Base 15 ++ __interceptor_trampoline___isoc23_strtoumax@Base 15 ++ __interceptor_trampoline___isoc23_vfscanf@Base 15 ++ __interceptor_trampoline___isoc23_vscanf@Base 15 ++ __interceptor_trampoline___isoc23_vsscanf@Base 15 ++ __interceptor_trampoline___isoc99_fprintf@Base 15 ++ __interceptor_trampoline___isoc99_fscanf@Base 15 ++ __interceptor_trampoline___isoc99_printf@Base 15 ++ __interceptor_trampoline___isoc99_scanf@Base 15 ++ __interceptor_trampoline___isoc99_snprintf@Base 15 ++ __interceptor_trampoline___isoc99_sprintf@Base 15 ++ __interceptor_trampoline___isoc99_sscanf@Base 15 ++ __interceptor_trampoline___isoc99_vfprintf@Base 15 ++ __interceptor_trampoline___isoc99_vfscanf@Base 15 ++ __interceptor_trampoline___isoc99_vprintf@Base 15 ++ __interceptor_trampoline___isoc99_vscanf@Base 15 ++ __interceptor_trampoline___isoc99_vsnprintf@Base 15 ++ __interceptor_trampoline___isoc99_vsprintf@Base 15 ++ __interceptor_trampoline___isoc99_vsscanf@Base 15 ++ __interceptor_trampoline___libc_memalign@Base 15 ++ __interceptor_trampoline___longjmp_chk@Base 15 ++ __interceptor_trampoline___lxstat64@Base 15 ++ __interceptor_trampoline___lxstat@Base 15 ++ __interceptor_trampoline___overflow@Base 15 ++ __interceptor_trampoline___snprintf_chk@Base 15 ++ __interceptor_trampoline___sprintf_chk@Base 15 ++ __interceptor_trampoline___strdup@Base 15 ++ __interceptor_trampoline___strndup@Base 15 ++ __interceptor_trampoline___strxfrm_l@Base 15 ++ __interceptor_trampoline___tls_get_addr@Base 15 ++ __interceptor_trampoline___uflow@Base 15 ++ __interceptor_trampoline___underflow@Base 15 ++ __interceptor_trampoline___vsnprintf_chk@Base 15 ++ __interceptor_trampoline___vsprintf_chk@Base 15 ++ __interceptor_trampoline___wcsxfrm_l@Base 15 ++ __interceptor_trampoline___woverflow@Base 15 ++ __interceptor_trampoline___wuflow@Base 15 ++ __interceptor_trampoline___wunderflow@Base 15 ++ __interceptor_trampoline___xpg_strerror_r@Base 15 ++ __interceptor_trampoline___xstat64@Base 15 ++ __interceptor_trampoline___xstat@Base 15 ++ __interceptor_trampoline__exit@Base 15 ++ __interceptor_trampoline__longjmp@Base 15 ++ __interceptor_trampoline__obstack_begin@Base 15 ++ __interceptor_trampoline__obstack_begin_1@Base 15 ++ __interceptor_trampoline__obstack_newchunk@Base 15 ++ __interceptor_trampoline_accept4@Base 15 ++ __interceptor_trampoline_accept@Base 15 ++ __interceptor_trampoline_aligned_alloc@Base 15 ++ __interceptor_trampoline_argp_parse@Base 15 ++ __interceptor_trampoline_asctime@Base 15 ++ __interceptor_trampoline_asctime_r@Base 15 ++ __interceptor_trampoline_asprintf@Base 15 ++ __interceptor_trampoline_atoi@Base 15 ++ __interceptor_trampoline_atol@Base 15 ++ __interceptor_trampoline_atoll@Base 15 ++ __interceptor_trampoline_backtrace@Base 15 ++ __interceptor_trampoline_backtrace_symbols@Base 15 ++ __interceptor_trampoline_bcmp@Base 15 ++ __interceptor_trampoline_bsearch@Base 15 ++ __interceptor_trampoline_bzero@Base 15 ++ __interceptor_trampoline_calloc@Base 15 ++ __interceptor_trampoline_canonicalize_file_name@Base 15 ++ __interceptor_trampoline_capget@Base 15 ++ __interceptor_trampoline_capset@Base 15 ++ __interceptor_trampoline_cfree@Base 15 ++ __interceptor_trampoline_clock_getcpuclockid@Base 15 ++ __interceptor_trampoline_clock_getres@Base 15 ++ __interceptor_trampoline_clock_gettime@Base 15 ++ __interceptor_trampoline_clock_settime@Base 15 ++ __interceptor_trampoline_confstr@Base 15 ++ __interceptor_trampoline_ctermid@Base 15 ++ __interceptor_trampoline_ctime@Base 15 ++ __interceptor_trampoline_ctime_r@Base 15 ++ __interceptor_trampoline_dlclose@Base 15 ++ __interceptor_trampoline_dlopen@Base 15 ++ __interceptor_trampoline_dn_comp@Base 15 ++ __interceptor_trampoline_dn_expand@Base 15 ++ __interceptor_trampoline_drand48_r@Base 15 ++ __interceptor_trampoline_endgrent@Base 15 ++ __interceptor_trampoline_endpwent@Base 15 ++ __interceptor_trampoline_ether_aton@Base 15 ++ __interceptor_trampoline_ether_aton_r@Base 15 ++ __interceptor_trampoline_ether_hostton@Base 15 ++ __interceptor_trampoline_ether_line@Base 15 ++ __interceptor_trampoline_ether_ntoa@Base 15 ++ __interceptor_trampoline_ether_ntoa_r@Base 15 ++ __interceptor_trampoline_ether_ntohost@Base 15 ++ __interceptor_trampoline_eventfd_read@Base 15 ++ __interceptor_trampoline_eventfd_write@Base 15 ++ __interceptor_trampoline_fclose@Base 15 ++ __interceptor_trampoline_fdopen@Base 15 ++ __interceptor_trampoline_fflush@Base 15 ++ __interceptor_trampoline_fgetgrent@Base 15 ++ __interceptor_trampoline_fgetgrent_r@Base 15 ++ __interceptor_trampoline_fgetpwent@Base 15 ++ __interceptor_trampoline_fgetpwent_r@Base 15 ++ __interceptor_trampoline_fgets@Base 15 ++ __interceptor_trampoline_fgetxattr@Base 15 ++ __interceptor_trampoline_flistxattr@Base 15 ++ __interceptor_trampoline_fmemopen@Base 15 ++ __interceptor_trampoline_fopen64@Base 15 ++ __interceptor_trampoline_fopen@Base 15 ++ __interceptor_trampoline_fopencookie@Base 15 ++ __interceptor_trampoline_fprintf@Base 15 ++ __interceptor_trampoline_fputs@Base 15 ++ __interceptor_trampoline_fread@Base 15 ++ __interceptor_trampoline_free@Base 15 ++ __interceptor_trampoline_freopen64@Base 15 ++ __interceptor_trampoline_freopen@Base 15 ++ __interceptor_trampoline_frexp@Base 15 ++ __interceptor_trampoline_frexpf@Base 15 ++ __interceptor_trampoline_frexpl@Base 15 ++ __interceptor_trampoline_fscanf@Base 15 ++ __interceptor_trampoline_fstatfs64@Base 15 ++ __interceptor_trampoline_fstatfs@Base 15 ++ __interceptor_trampoline_fstatvfs64@Base 15 ++ __interceptor_trampoline_fstatvfs@Base 15 ++ __interceptor_trampoline_ftime@Base 15 ++ __interceptor_trampoline_fwrite@Base 15 ++ __interceptor_trampoline_get_current_dir_name@Base 15 ++ __interceptor_trampoline_getaddrinfo@Base 15 ++ __interceptor_trampoline_getcwd@Base 15 ++ __interceptor_trampoline_getdelim@Base 15 ++ __interceptor_trampoline_getentropy@Base 15 ++ __interceptor_trampoline_getgrent@Base 15 ++ __interceptor_trampoline_getgrent_r@Base 15 ++ __interceptor_trampoline_getgrgid@Base 15 ++ __interceptor_trampoline_getgrgid_r@Base 15 ++ __interceptor_trampoline_getgrnam@Base 15 ++ __interceptor_trampoline_getgrnam_r@Base 15 ++ __interceptor_trampoline_getgrouplist@Base 15 ++ __interceptor_trampoline_getgroups@Base 15 ++ __interceptor_trampoline_gethostbyaddr@Base 15 ++ __interceptor_trampoline_gethostbyaddr_r@Base 15 ++ __interceptor_trampoline_gethostbyname2@Base 15 ++ __interceptor_trampoline_gethostbyname2_r@Base 15 ++ __interceptor_trampoline_gethostbyname@Base 15 ++ __interceptor_trampoline_gethostbyname_r@Base 15 ++ __interceptor_trampoline_gethostent@Base 15 ++ __interceptor_trampoline_gethostent_r@Base 15 ++ __interceptor_trampoline_getifaddrs@Base 15 ++ __interceptor_trampoline_getitimer@Base 15 ++ __interceptor_trampoline_getline@Base 15 ++ __interceptor_trampoline_getloadavg@Base 15 ++ __interceptor_trampoline_getmntent@Base 15 ++ __interceptor_trampoline_getmntent_r@Base 15 ++ __interceptor_trampoline_getnameinfo@Base 15 ++ __interceptor_trampoline_getnetbyaddr@Base 15 ++ __interceptor_trampoline_getnetbyname@Base 15 ++ __interceptor_trampoline_getnetent@Base 15 ++ __interceptor_trampoline_getpass@Base 15 ++ __interceptor_trampoline_getpeername@Base 15 ++ __interceptor_trampoline_getprotobyname@Base 15 ++ __interceptor_trampoline_getprotobyname_r@Base 15 ++ __interceptor_trampoline_getprotobynumber@Base 15 ++ __interceptor_trampoline_getprotobynumber_r@Base 15 ++ __interceptor_trampoline_getprotoent@Base 15 ++ __interceptor_trampoline_getprotoent_r@Base 15 ++ __interceptor_trampoline_getpwent@Base 15 ++ __interceptor_trampoline_getpwent_r@Base 15 ++ __interceptor_trampoline_getpwnam@Base 15 ++ __interceptor_trampoline_getpwnam_r@Base 15 ++ __interceptor_trampoline_getpwuid@Base 15 ++ __interceptor_trampoline_getpwuid_r@Base 15 ++ __interceptor_trampoline_getrandom@Base 15 ++ __interceptor_trampoline_getresgid@Base 15 ++ __interceptor_trampoline_getresuid@Base 15 ++ __interceptor_trampoline_getsockname@Base 15 ++ __interceptor_trampoline_getsockopt@Base 15 ++ __interceptor_trampoline_getusershell@Base 15 ++ __interceptor_trampoline_getutent@Base 15 ++ __interceptor_trampoline_getutid@Base 15 ++ __interceptor_trampoline_getutline@Base 15 ++ __interceptor_trampoline_getutxent@Base 15 ++ __interceptor_trampoline_getutxid@Base 15 ++ __interceptor_trampoline_getutxline@Base 15 ++ __interceptor_trampoline_getxattr@Base 15 ++ __interceptor_trampoline_glob64@Base 15 ++ __interceptor_trampoline_glob@Base 15 ++ __interceptor_trampoline_gmtime@Base 15 ++ __interceptor_trampoline_gmtime_r@Base 15 ++ __interceptor_trampoline_iconv@Base 15 ++ __interceptor_trampoline_if_indextoname@Base 15 ++ __interceptor_trampoline_if_nametoindex@Base 15 ++ __interceptor_trampoline_index@Base 15 ++ __interceptor_trampoline_inet_aton@Base 15 ++ __interceptor_trampoline_inet_ntop@Base 15 ++ __interceptor_trampoline_inet_pton@Base 15 ++ __interceptor_trampoline_initgroups@Base 15 ++ __interceptor_trampoline_ioctl@Base 15 ++ __interceptor_trampoline_lgamma@Base 15 ++ __interceptor_trampoline_lgamma_r@Base 15 ++ __interceptor_trampoline_lgammaf@Base 15 ++ __interceptor_trampoline_lgammaf_r@Base 15 ++ __interceptor_trampoline_lgammal@Base 15 ++ __interceptor_trampoline_lgammal_r@Base 15 ++ __interceptor_trampoline_lgetxattr@Base 15 ++ __interceptor_trampoline_listxattr@Base 15 ++ __interceptor_trampoline_llistxattr@Base 15 ++ __interceptor_trampoline_localtime@Base 15 ++ __interceptor_trampoline_localtime_r@Base 15 ++ __interceptor_trampoline_longjmp@Base 15 ++ __interceptor_trampoline_lrand48_r@Base 15 ++ __interceptor_trampoline_lstat64@Base 15 ++ __interceptor_trampoline_lstat@Base 15 ++ __interceptor_trampoline_makecontext@Base 15 ++ __interceptor_trampoline_mallinfo@Base 15 ++ __interceptor_trampoline_malloc@Base 15 ++ __interceptor_trampoline_malloc_stats@Base 15 ++ __interceptor_trampoline_malloc_usable_size@Base 15 ++ __interceptor_trampoline_mallopt@Base 15 ++ __interceptor_trampoline_mbsnrtowcs@Base 15 ++ __interceptor_trampoline_mbsrtowcs@Base 15 ++ __interceptor_trampoline_mbstowcs@Base 15 ++ __interceptor_trampoline_mcheck@Base 15 ++ __interceptor_trampoline_mcheck_pedantic@Base 15 ++ __interceptor_trampoline_memalign@Base 15 ++ __interceptor_trampoline_memchr@Base 15 ++ __interceptor_trampoline_memcmp@Base 15 ++ __interceptor_trampoline_memcpy@Base 15 ++ __interceptor_trampoline_memmem@Base 15 ++ __interceptor_trampoline_memmove@Base 15 ++ __interceptor_trampoline_memrchr@Base 15 ++ __interceptor_trampoline_memset@Base 15 ++ __interceptor_trampoline_mincore@Base 15 ++ __interceptor_trampoline_mktime@Base 15 ++ __interceptor_trampoline_mlock@Base 15 ++ __interceptor_trampoline_mlockall@Base 15 ++ __interceptor_trampoline_mmap64@Base 15 ++ __interceptor_trampoline_mmap@Base 15 ++ __interceptor_trampoline_modf@Base 15 ++ __interceptor_trampoline_modff@Base 15 ++ __interceptor_trampoline_modfl@Base 15 ++ __interceptor_trampoline_mprobe@Base 15 ++ __interceptor_trampoline_mprotect@Base 15 ++ __interceptor_trampoline_msgrcv@Base 15 ++ __interceptor_trampoline_msgsnd@Base 15 ++ __interceptor_trampoline_munlock@Base 15 ++ __interceptor_trampoline_munlockall@Base 15 ++ __interceptor_trampoline_munmap@Base 15 ++ __interceptor_trampoline_name_to_handle_at@Base 15 ++ __interceptor_trampoline_open_by_handle_at@Base 15 ++ __interceptor_trampoline_open_memstream@Base 15 ++ __interceptor_trampoline_open_wmemstream@Base 15 ++ __interceptor_trampoline_opendir@Base 15 ++ __interceptor_trampoline_pclose@Base 15 ++ __interceptor_trampoline_poll@Base 15 ++ __interceptor_trampoline_popen@Base 15 ++ __interceptor_trampoline_posix_memalign@Base 15 ++ __interceptor_trampoline_posix_spawn@Base 15 ++ __interceptor_trampoline_posix_spawnp@Base 15 ++ __interceptor_trampoline_ppoll@Base 15 ++ __interceptor_trampoline_prctl@Base 15 ++ __interceptor_trampoline_pread64@Base 15 ++ __interceptor_trampoline_pread@Base 15 ++ __interceptor_trampoline_preadv2@Base 15 ++ __interceptor_trampoline_preadv64@Base 15 ++ __interceptor_trampoline_preadv@Base 15 ++ __interceptor_trampoline_printf@Base 15 ++ __interceptor_trampoline_process_vm_readv@Base 15 ++ __interceptor_trampoline_process_vm_writev@Base 15 ++ __interceptor_trampoline_pthread_attr_getaffinity_np@Base 15 ++ __interceptor_trampoline_pthread_attr_getdetachstate@Base 15 ++ __interceptor_trampoline_pthread_attr_getguardsize@Base 15 ++ __interceptor_trampoline_pthread_attr_getinheritsched@Base 15 ++ __interceptor_trampoline_pthread_attr_getschedparam@Base 15 ++ __interceptor_trampoline_pthread_attr_getschedpolicy@Base 15 ++ __interceptor_trampoline_pthread_attr_getscope@Base 15 ++ __interceptor_trampoline_pthread_attr_getstack@Base 15 ++ __interceptor_trampoline_pthread_attr_getstacksize@Base 15 ++ __interceptor_trampoline_pthread_barrierattr_getpshared@Base 15 ++ __interceptor_trampoline_pthread_condattr_getclock@Base 15 ++ __interceptor_trampoline_pthread_condattr_getpshared@Base 15 ++ __interceptor_trampoline_pthread_create@Base 15 ++ __interceptor_trampoline_pthread_detach@Base 15 ++ __interceptor_trampoline_pthread_exit@Base 15 ++ __interceptor_trampoline_pthread_getaffinity_np@Base 15 ++ __interceptor_trampoline_pthread_getcpuclockid@Base 15 ++ __interceptor_trampoline_pthread_getname_np@Base 15 ++ __interceptor_trampoline_pthread_getschedparam@Base 15 ++ __interceptor_trampoline_pthread_join@Base 15 ++ __interceptor_trampoline_pthread_mutexattr_getprioceiling@Base 15 ++ __interceptor_trampoline_pthread_mutexattr_getprotocol@Base 15 ++ __interceptor_trampoline_pthread_mutexattr_getpshared@Base 15 ++ __interceptor_trampoline_pthread_mutexattr_getrobust@Base 15 ++ __interceptor_trampoline_pthread_mutexattr_getrobust_np@Base 15 ++ __interceptor_trampoline_pthread_mutexattr_gettype@Base 15 ++ __interceptor_trampoline_pthread_rwlockattr_getkind_np@Base 15 ++ __interceptor_trampoline_pthread_rwlockattr_getpshared@Base 15 ++ __interceptor_trampoline_pthread_setcancelstate@Base 15 ++ __interceptor_trampoline_pthread_setcanceltype@Base 15 ++ __interceptor_trampoline_pthread_setname_np@Base 15 ++ __interceptor_trampoline_pthread_sigmask@Base 15 ++ __interceptor_trampoline_pthread_timedjoin_np@Base 15 ++ __interceptor_trampoline_pthread_tryjoin_np@Base 15 ++ __interceptor_trampoline_ptrace@Base 15 ++ __interceptor_trampoline_ptsname@Base 15 ++ __interceptor_trampoline_ptsname_r@Base 15 ++ __interceptor_trampoline_puts@Base 15 ++ __interceptor_trampoline_pututxline@Base 15 ++ __interceptor_trampoline_pvalloc@Base 15 ++ __interceptor_trampoline_pwrite64@Base 15 ++ __interceptor_trampoline_pwrite@Base 15 ++ __interceptor_trampoline_pwritev2@Base 15 ++ __interceptor_trampoline_pwritev64@Base 15 ++ __interceptor_trampoline_pwritev@Base 15 ++ __interceptor_trampoline_qsort@Base 15 ++ __interceptor_trampoline_qsort_r@Base 15 ++ __interceptor_trampoline_rand_r@Base 15 ++ __interceptor_trampoline_random_r@Base 15 ++ __interceptor_trampoline_read@Base 15 ++ __interceptor_trampoline_readdir64@Base 15 ++ __interceptor_trampoline_readdir64_r@Base 15 ++ __interceptor_trampoline_readdir@Base 15 ++ __interceptor_trampoline_readdir_r@Base 15 ++ __interceptor_trampoline_readlink@Base 15 ++ __interceptor_trampoline_readlinkat@Base 15 ++ __interceptor_trampoline_readv@Base 15 ++ __interceptor_trampoline_realloc@Base 15 ++ __interceptor_trampoline_reallocarray@Base 15 ++ __interceptor_trampoline_realpath@Base 15 ++ __interceptor_trampoline_recv@Base 15 ++ __interceptor_trampoline_recvfrom@Base 15 ++ __interceptor_trampoline_recvmmsg@Base 15 ++ __interceptor_trampoline_recvmsg@Base 15 ++ __interceptor_trampoline_regcomp@Base 15 ++ __interceptor_trampoline_regerror@Base 15 ++ __interceptor_trampoline_regexec@Base 15 ++ __interceptor_trampoline_regfree@Base 15 ++ __interceptor_trampoline_remquo@Base 15 ++ __interceptor_trampoline_remquof@Base 15 ++ __interceptor_trampoline_remquol@Base 15 ++ __interceptor_trampoline_scandir64@Base 15 ++ __interceptor_trampoline_scandir@Base 15 ++ __interceptor_trampoline_scanf@Base 15 ++ __interceptor_trampoline_sched_getaffinity@Base 15 ++ __interceptor_trampoline_sched_getparam@Base 15 ++ __interceptor_trampoline_sem_destroy@Base 15 ++ __interceptor_trampoline_sem_getvalue@Base 15 ++ __interceptor_trampoline_sem_init@Base 15 ++ __interceptor_trampoline_sem_open@Base 15 ++ __interceptor_trampoline_sem_post@Base 15 ++ __interceptor_trampoline_sem_timedwait@Base 15 ++ __interceptor_trampoline_sem_trywait@Base 15 ++ __interceptor_trampoline_sem_unlink@Base 15 ++ __interceptor_trampoline_sem_wait@Base 15 ++ __interceptor_trampoline_send@Base 15 ++ __interceptor_trampoline_sendmmsg@Base 15 ++ __interceptor_trampoline_sendmsg@Base 15 ++ __interceptor_trampoline_sendto@Base 15 ++ __interceptor_trampoline_setbuf@Base 15 ++ __interceptor_trampoline_setbuffer@Base 15 ++ __interceptor_trampoline_setgrent@Base 15 ++ __interceptor_trampoline_setitimer@Base 15 ++ __interceptor_trampoline_setlinebuf@Base 15 ++ __interceptor_trampoline_setlocale@Base 15 ++ __interceptor_trampoline_setpwent@Base 15 ++ __interceptor_trampoline_setvbuf@Base 15 ++ __interceptor_trampoline_sigaction@Base 15 ++ __interceptor_trampoline_sigaltstack@Base 15 ++ __interceptor_trampoline_sigandset@Base 15 ++ __interceptor_trampoline_sigemptyset@Base 15 ++ __interceptor_trampoline_sigfillset@Base 15 ++ __interceptor_trampoline_siglongjmp@Base 15 ++ __interceptor_trampoline_signal@Base 15 ++ __interceptor_trampoline_sigorset@Base 15 ++ __interceptor_trampoline_sigpending@Base 15 ++ __interceptor_trampoline_sigprocmask@Base 15 ++ __interceptor_trampoline_sigtimedwait@Base 15 ++ __interceptor_trampoline_sigwait@Base 15 ++ __interceptor_trampoline_sigwaitinfo@Base 15 ++ __interceptor_trampoline_sincos@Base 15 ++ __interceptor_trampoline_sincosf@Base 15 ++ __interceptor_trampoline_sincosl@Base 15 ++ __interceptor_trampoline_snprintf@Base 15 ++ __interceptor_trampoline_sprintf@Base 15 ++ __interceptor_trampoline_sscanf@Base 15 ++ __interceptor_trampoline_stat64@Base 15 ++ __interceptor_trampoline_stat@Base 15 ++ __interceptor_trampoline_statfs64@Base 15 ++ __interceptor_trampoline_statfs@Base 15 ++ __interceptor_trampoline_statvfs64@Base 15 ++ __interceptor_trampoline_statvfs@Base 15 ++ __interceptor_trampoline_strcasecmp@Base 15 ++ __interceptor_trampoline_strcasestr@Base 15 ++ __interceptor_trampoline_strcat@Base 15 ++ __interceptor_trampoline_strchr@Base 15 ++ __interceptor_trampoline_strchrnul@Base 15 ++ __interceptor_trampoline_strcmp@Base 15 ++ __interceptor_trampoline_strcpy@Base 15 ++ __interceptor_trampoline_strcspn@Base 15 ++ __interceptor_trampoline_strdup@Base 15 ++ __interceptor_trampoline_strerror@Base 15 ++ __interceptor_trampoline_strerror_r@Base 15 ++ __interceptor_trampoline_strlen@Base 15 ++ __interceptor_trampoline_strncasecmp@Base 15 ++ __interceptor_trampoline_strncat@Base 15 ++ __interceptor_trampoline_strncmp@Base 15 ++ __interceptor_trampoline_strncpy@Base 15 ++ __interceptor_trampoline_strndup@Base 15 ++ __interceptor_trampoline_strnlen@Base 15 ++ __interceptor_trampoline_strpbrk@Base 15 ++ __interceptor_trampoline_strptime@Base 15 ++ __interceptor_trampoline_strrchr@Base 15 ++ __interceptor_trampoline_strspn@Base 15 ++ __interceptor_trampoline_strstr@Base 15 ++ __interceptor_trampoline_strtoimax@Base 15 ++ __interceptor_trampoline_strtok@Base 15 ++ __interceptor_trampoline_strtol@Base 15 ++ __interceptor_trampoline_strtoll@Base 15 ++ __interceptor_trampoline_strtoumax@Base 15 ++ __interceptor_trampoline_strxfrm@Base 15 ++ __interceptor_trampoline_strxfrm_l@Base 15 ++ __interceptor_trampoline_swapcontext@Base 15 ++ __interceptor_trampoline_sysinfo@Base 15 ++ __interceptor_trampoline_tcgetattr@Base 15 ++ __interceptor_trampoline_tempnam@Base 15 ++ __interceptor_trampoline_textdomain@Base 15 ++ __interceptor_trampoline_time@Base 15 ++ __interceptor_trampoline_timerfd_gettime@Base 15 ++ __interceptor_trampoline_timerfd_settime@Base 15 ++ __interceptor_trampoline_times@Base 15 ++ __interceptor_trampoline_tmpnam@Base 15 ++ __interceptor_trampoline_tmpnam_r@Base 15 ++ __interceptor_trampoline_tsearch@Base 15 ++ __interceptor_trampoline_ttyname@Base 15 ++ __interceptor_trampoline_ttyname_r@Base 15 ++ __interceptor_trampoline_uname@Base 15 ++ __interceptor_trampoline_valloc@Base 15 ++ __interceptor_trampoline_vasprintf@Base 15 ++ __interceptor_trampoline_vfork@Base 15 ++ __interceptor_trampoline_vfprintf@Base 15 ++ __interceptor_trampoline_vfscanf@Base 15 ++ __interceptor_trampoline_vprintf@Base 15 ++ __interceptor_trampoline_vscanf@Base 15 ++ __interceptor_trampoline_vsnprintf@Base 15 ++ __interceptor_trampoline_vsprintf@Base 15 ++ __interceptor_trampoline_vsscanf@Base 15 ++ __interceptor_trampoline_wait3@Base 15 ++ __interceptor_trampoline_wait4@Base 15 ++ __interceptor_trampoline_wait@Base 15 ++ __interceptor_trampoline_waitid@Base 15 ++ __interceptor_trampoline_waitpid@Base 15 ++ __interceptor_trampoline_wcrtomb@Base 15 ++ __interceptor_trampoline_wcscat@Base 15 ++ __interceptor_trampoline_wcsdup@Base 15 ++ __interceptor_trampoline_wcslen@Base 15 ++ __interceptor_trampoline_wcsncat@Base 15 ++ __interceptor_trampoline_wcsnlen@Base 15 ++ __interceptor_trampoline_wcsnrtombs@Base 15 ++ __interceptor_trampoline_wcsrtombs@Base 15 ++ __interceptor_trampoline_wcstombs@Base 15 ++ __interceptor_trampoline_wcsxfrm@Base 15 ++ __interceptor_trampoline_wcsxfrm_l@Base 15 ++ __interceptor_trampoline_wctomb@Base 15 ++ __interceptor_trampoline_wordexp@Base 15 ++ __interceptor_trampoline_write@Base 15 ++ __interceptor_trampoline_writev@Base 15 ++ __interceptor_trampoline_xdr_bool@Base 15 ++ __interceptor_trampoline_xdr_bytes@Base 15 ++ __interceptor_trampoline_xdr_char@Base 15 ++ __interceptor_trampoline_xdr_destroy@Base 15 ++ __interceptor_trampoline_xdr_double@Base 15 ++ __interceptor_trampoline_xdr_enum@Base 15 ++ __interceptor_trampoline_xdr_float@Base 15 ++ __interceptor_trampoline_xdr_hyper@Base 15 ++ __interceptor_trampoline_xdr_int16_t@Base 15 ++ __interceptor_trampoline_xdr_int32_t@Base 15 ++ __interceptor_trampoline_xdr_int64_t@Base 15 ++ __interceptor_trampoline_xdr_int8_t@Base 15 ++ __interceptor_trampoline_xdr_int@Base 15 ++ __interceptor_trampoline_xdr_long@Base 15 ++ __interceptor_trampoline_xdr_longlong_t@Base 15 ++ __interceptor_trampoline_xdr_quad_t@Base 15 ++ __interceptor_trampoline_xdr_short@Base 15 ++ __interceptor_trampoline_xdr_string@Base 15 ++ __interceptor_trampoline_xdr_u_char@Base 15 ++ __interceptor_trampoline_xdr_u_hyper@Base 15 ++ __interceptor_trampoline_xdr_u_int@Base 15 ++ __interceptor_trampoline_xdr_u_long@Base 15 ++ __interceptor_trampoline_xdr_u_longlong_t@Base 15 ++ __interceptor_trampoline_xdr_u_quad_t@Base 15 ++ __interceptor_trampoline_xdr_u_short@Base 15 ++ __interceptor_trampoline_xdr_uint16_t@Base 15 ++ __interceptor_trampoline_xdr_uint32_t@Base 15 ++ __interceptor_trampoline_xdr_uint64_t@Base 15 ++ __interceptor_trampoline_xdr_uint8_t@Base 15 ++ __interceptor_trampoline_xdrmem_create@Base 15 ++ __interceptor_trampoline_xdrrec_create@Base 15 ++ __interceptor_trampoline_xdrstdio_create@Base 15 ++ __interceptor_tsearch@Base 15 ++ __interceptor_ttyname@Base 15 ++ __interceptor_ttyname_r@Base 15 ++ __interceptor_uname@Base 15 ++ __interceptor_valloc@Base 15 ++ __interceptor_vasprintf@Base 15 ++ __interceptor_vfork@Base 15 ++ __interceptor_vfprintf@Base 15 ++ __interceptor_vfscanf@Base 15 ++ __interceptor_vprintf@Base 15 ++ __interceptor_vscanf@Base 15 ++ __interceptor_vsnprintf@Base 15 ++ __interceptor_vsprintf@Base 15 ++ __interceptor_vsscanf@Base 15 ++ __interceptor_wait3@Base 15 ++ __interceptor_wait4@Base 15 ++ __interceptor_wait@Base 15 ++ __interceptor_waitid@Base 15 ++ __interceptor_waitpid@Base 15 ++ __interceptor_wcrtomb@Base 15 ++ __interceptor_wcscat@Base 15 ++ __interceptor_wcsdup@Base 15 ++ __interceptor_wcslen@Base 15 ++ __interceptor_wcsncat@Base 15 ++ __interceptor_wcsnlen@Base 15 ++ __interceptor_wcsnrtombs@Base 15 ++ __interceptor_wcsrtombs@Base 15 ++ __interceptor_wcstombs@Base 15 ++ __interceptor_wcsxfrm@Base 15 ++ __interceptor_wcsxfrm_l@Base 15 ++ __interceptor_wctomb@Base 15 ++ __interceptor_wordexp@Base 15 ++ __interceptor_write@Base 15 ++ __interceptor_writev@Base 15 ++ __interceptor_xdr_bool@Base 15 ++ __interceptor_xdr_bytes@Base 15 ++ __interceptor_xdr_char@Base 15 ++ __interceptor_xdr_destroy@Base 15 ++ __interceptor_xdr_double@Base 15 ++ __interceptor_xdr_enum@Base 15 ++ __interceptor_xdr_float@Base 15 ++ __interceptor_xdr_hyper@Base 15 ++ __interceptor_xdr_int16_t@Base 15 ++ __interceptor_xdr_int32_t@Base 15 ++ __interceptor_xdr_int64_t@Base 15 ++ __interceptor_xdr_int8_t@Base 15 ++ __interceptor_xdr_int@Base 15 ++ __interceptor_xdr_long@Base 15 ++ __interceptor_xdr_longlong_t@Base 15 ++ __interceptor_xdr_quad_t@Base 15 ++ __interceptor_xdr_short@Base 15 ++ __interceptor_xdr_string@Base 15 ++ __interceptor_xdr_u_char@Base 15 ++ __interceptor_xdr_u_hyper@Base 15 ++ __interceptor_xdr_u_int@Base 15 ++ __interceptor_xdr_u_long@Base 15 ++ __interceptor_xdr_u_longlong_t@Base 15 ++ __interceptor_xdr_u_quad_t@Base 15 ++ __interceptor_xdr_u_short@Base 15 ++ __interceptor_xdr_uint16_t@Base 15 ++ __interceptor_xdr_uint32_t@Base 15 ++ __interceptor_xdr_uint64_t@Base 15 ++ __interceptor_xdr_uint8_t@Base 15 ++ __interceptor_xdrmem_create@Base 15 ++ __interceptor_xdrrec_create@Base 15 ++ __interceptor_xdrstdio_create@Base 15 ++ __isoc23_fscanf@Base 15 ++ __isoc23_scanf@Base 15 ++ __isoc23_sscanf@Base 15 ++ __isoc23_strtoimax@Base 15 ++ __isoc23_strtol@Base 15 ++ __isoc23_strtoll@Base 15 ++ __isoc23_strtoumax@Base 15 ++ __isoc23_vfscanf@Base 15 ++ __isoc23_vscanf@Base 15 ++ __isoc23_vsscanf@Base 15 ++ __isoc99_fprintf@Base 15 ++ __isoc99_fscanf@Base 15 ++ __isoc99_printf@Base 15 ++ __isoc99_scanf@Base 15 ++ __isoc99_snprintf@Base 15 ++ __isoc99_sprintf@Base 15 ++ __isoc99_sscanf@Base 15 ++ __isoc99_vfprintf@Base 15 ++ __isoc99_vfscanf@Base 15 ++ __isoc99_vprintf@Base 15 ++ __isoc99_vscanf@Base 15 ++ __isoc99_vsnprintf@Base 15 ++ __isoc99_vsprintf@Base 15 ++ __isoc99_vsscanf@Base 15 ++ __libc_memalign@Base 15 ++ __longjmp_chk@Base 15 ++ __lsan_default_options@Base 15 ++ __lsan_disable@Base 15 ++ __lsan_do_leak_check@Base 15 ++ __lsan_do_recoverable_leak_check@Base 15 ++ __lsan_enable@Base 15 ++ __lsan_ignore_object@Base 15 ++ __lsan_register_root_region@Base 15 ++ __lsan_unregister_root_region@Base 15 ++ __lxstat64@Base 15 ++ __lxstat@Base 15 ++ __overflow@Base 15 ++ __sancov_default_options@Base 15 ++ __sancov_lowest_stack@Base 15 ++ __sanitizer_acquire_crash_state@Base 15 ++ __sanitizer_annotate_contiguous_container@Base 15 ++ __sanitizer_annotate_double_ended_contiguous_container@Base 15 ++ __sanitizer_contiguous_container_find_bad_address@Base 15 ++ __sanitizer_copy_contiguous_container_annotations@Base 15 ++ __sanitizer_cov_8bit_counters_init@Base 15 ++ __sanitizer_cov_bool_flag_init@Base 15 ++ __sanitizer_cov_dump@Base 15 ++ __sanitizer_cov_load16@Base 15 ++ __sanitizer_cov_load1@Base 15 ++ __sanitizer_cov_load2@Base 15 ++ __sanitizer_cov_load4@Base 15 ++ __sanitizer_cov_load8@Base 15 ++ __sanitizer_cov_pcs_init@Base 15 ++ __sanitizer_cov_reset@Base 15 ++ __sanitizer_cov_store16@Base 15 ++ __sanitizer_cov_store1@Base 15 ++ __sanitizer_cov_store2@Base 15 ++ __sanitizer_cov_store4@Base 15 ++ __sanitizer_cov_store8@Base 15 ++ __sanitizer_cov_trace_cmp1@Base 15 ++ __sanitizer_cov_trace_cmp2@Base 15 ++ __sanitizer_cov_trace_cmp4@Base 15 ++ __sanitizer_cov_trace_cmp8@Base 15 ++ __sanitizer_cov_trace_cmp@Base 15 ++ __sanitizer_cov_trace_const_cmp1@Base 15 ++ __sanitizer_cov_trace_const_cmp2@Base 15 ++ __sanitizer_cov_trace_const_cmp4@Base 15 ++ __sanitizer_cov_trace_const_cmp8@Base 15 ++ __sanitizer_cov_trace_div4@Base 15 ++ __sanitizer_cov_trace_div8@Base 15 ++ __sanitizer_cov_trace_gep@Base 15 ++ __sanitizer_cov_trace_pc_guard@Base 15 ++ __sanitizer_cov_trace_pc_guard_init@Base 15 ++ __sanitizer_cov_trace_pc_indir@Base 15 ++ __sanitizer_cov_trace_switch@Base 15 ++ __sanitizer_double_ended_contiguous_container_find_bad_address@Base 15 ++ __sanitizer_dump_coverage@Base 15 ++ __sanitizer_dump_trace_pc_guard_coverage@Base 15 ++ __sanitizer_finish_switch_fiber@Base 15 ++ __sanitizer_free_hook@Base 15 ++ __sanitizer_get_allocated_begin@Base 15 ++ __sanitizer_get_allocated_size@Base 15 ++ __sanitizer_get_allocated_size_fast@Base 15 ++ __sanitizer_get_current_allocated_bytes@Base 15 ++ __sanitizer_get_dtls_size@Base 15 ++ __sanitizer_get_estimated_allocated_size@Base 15 ++ __sanitizer_get_free_bytes@Base 15 ++ __sanitizer_get_heap_size@Base 15 ++ __sanitizer_get_module_and_offset_for_pc@Base 15 ++ __sanitizer_get_ownership@Base 15 ++ __sanitizer_get_report_path@Base 15 ++ __sanitizer_get_unmapped_bytes@Base 15 ++ __sanitizer_ignore_free_hook@Base 15 ++ __sanitizer_install_malloc_and_free_hooks@Base 15 ++ __sanitizer_internal_memcpy@Base 15 ++ __sanitizer_internal_memmove@Base 15 ++ __sanitizer_internal_memset@Base 15 ++ __sanitizer_malloc_hook@Base 15 ++ __sanitizer_on_print@Base 15 ++ __sanitizer_print_memory_profile@Base 15 ++ __sanitizer_print_stack_trace@Base 15 ++ __sanitizer_ptr_cmp@Base 15 ++ __sanitizer_ptr_sub@Base 15 ++ __sanitizer_purge_allocator@Base 15 ++ __sanitizer_report_error_summary@Base 15 ++ __sanitizer_sandbox_on_notify@Base 15 ++ __sanitizer_set_death_callback@Base 15 ++ __sanitizer_set_report_fd@Base 15 ++ __sanitizer_set_report_path@Base 15 ++ __sanitizer_start_switch_fiber@Base 15 ++ __sanitizer_symbolize_global@Base 15 ++ __sanitizer_symbolize_pc@Base 15 ++ __sanitizer_syscall_post_impl_accept4@Base 15 ++ __sanitizer_syscall_post_impl_accept@Base 15 ++ __sanitizer_syscall_post_impl_access@Base 15 ++ __sanitizer_syscall_post_impl_acct@Base 15 ++ __sanitizer_syscall_post_impl_add_key@Base 15 ++ __sanitizer_syscall_post_impl_adjtimex@Base 15 ++ __sanitizer_syscall_post_impl_alarm@Base 15 ++ __sanitizer_syscall_post_impl_bdflush@Base 15 ++ __sanitizer_syscall_post_impl_bind@Base 15 ++ __sanitizer_syscall_post_impl_brk@Base 15 ++ __sanitizer_syscall_post_impl_capget@Base 15 ++ __sanitizer_syscall_post_impl_capset@Base 15 ++ __sanitizer_syscall_post_impl_chdir@Base 15 ++ __sanitizer_syscall_post_impl_chmod@Base 15 ++ __sanitizer_syscall_post_impl_chown16@Base 15 ++ __sanitizer_syscall_post_impl_chown@Base 15 ++ __sanitizer_syscall_post_impl_chroot@Base 15 ++ __sanitizer_syscall_post_impl_clock_adjtime@Base 15 ++ __sanitizer_syscall_post_impl_clock_getres@Base 15 ++ __sanitizer_syscall_post_impl_clock_gettime@Base 15 ++ __sanitizer_syscall_post_impl_clock_nanosleep@Base 15 ++ __sanitizer_syscall_post_impl_clock_settime@Base 15 ++ __sanitizer_syscall_post_impl_close@Base 15 ++ __sanitizer_syscall_post_impl_connect@Base 15 ++ __sanitizer_syscall_post_impl_creat@Base 15 ++ __sanitizer_syscall_post_impl_delete_module@Base 15 ++ __sanitizer_syscall_post_impl_dup2@Base 15 ++ __sanitizer_syscall_post_impl_dup3@Base 15 ++ __sanitizer_syscall_post_impl_dup@Base 15 ++ __sanitizer_syscall_post_impl_epoll_create1@Base 15 ++ __sanitizer_syscall_post_impl_epoll_create@Base 15 ++ __sanitizer_syscall_post_impl_epoll_ctl@Base 15 ++ __sanitizer_syscall_post_impl_epoll_pwait2@Base 15 ++ __sanitizer_syscall_post_impl_epoll_pwait@Base 15 ++ __sanitizer_syscall_post_impl_epoll_wait@Base 15 ++ __sanitizer_syscall_post_impl_eventfd2@Base 15 ++ __sanitizer_syscall_post_impl_eventfd@Base 15 ++ __sanitizer_syscall_post_impl_exit@Base 15 ++ __sanitizer_syscall_post_impl_exit_group@Base 15 ++ __sanitizer_syscall_post_impl_faccessat@Base 15 ++ __sanitizer_syscall_post_impl_fchdir@Base 15 ++ __sanitizer_syscall_post_impl_fchmod@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_post_impl_fchmodat@Base 15 ++ __sanitizer_syscall_post_impl_fchown16@Base 15 ++ __sanitizer_syscall_post_impl_fchown@Base 15 ++ __sanitizer_syscall_post_impl_fchownat@Base 15 ++ __sanitizer_syscall_post_impl_fcntl64@Base 15 ++ __sanitizer_syscall_post_impl_fcntl@Base 15 ++ __sanitizer_syscall_post_impl_fdatasync@Base 15 ++ __sanitizer_syscall_post_impl_fgetxattr@Base 15 ++ __sanitizer_syscall_post_impl_flistxattr@Base 15 ++ __sanitizer_syscall_post_impl_flock@Base 15 ++ __sanitizer_syscall_post_impl_fork@Base 15 ++ __sanitizer_syscall_post_impl_fremovexattr@Base 15 ++ __sanitizer_syscall_post_impl_fsetxattr@Base 15 ++ __sanitizer_syscall_post_impl_fstat64@Base 15 ++ __sanitizer_syscall_post_impl_fstat@Base 15 ++ __sanitizer_syscall_post_impl_fstatat64@Base 15 ++ __sanitizer_syscall_post_impl_fstatfs64@Base 15 ++ __sanitizer_syscall_post_impl_fstatfs@Base 15 ++ __sanitizer_syscall_post_impl_fsync@Base 15 ++ __sanitizer_syscall_post_impl_ftruncate@Base 15 ++ __sanitizer_syscall_post_impl_futex@Base 15 ++ __sanitizer_syscall_post_impl_futimesat@Base 15 ++ __sanitizer_syscall_post_impl_get_mempolicy@Base 15 ++ __sanitizer_syscall_post_impl_get_robust_list@Base 15 ++ __sanitizer_syscall_post_impl_getcpu@Base 15 ++ __sanitizer_syscall_post_impl_getcwd@Base 15 ++ __sanitizer_syscall_post_impl_getdents64@Base 15 ++ __sanitizer_syscall_post_impl_getdents@Base 15 ++ __sanitizer_syscall_post_impl_getegid16@Base 15 ++ __sanitizer_syscall_post_impl_getegid@Base 15 ++ __sanitizer_syscall_post_impl_geteuid16@Base 15 ++ __sanitizer_syscall_post_impl_geteuid@Base 15 ++ __sanitizer_syscall_post_impl_getgid16@Base 15 ++ __sanitizer_syscall_post_impl_getgid@Base 15 ++ __sanitizer_syscall_post_impl_getgroups16@Base 15 ++ __sanitizer_syscall_post_impl_getgroups@Base 15 ++ __sanitizer_syscall_post_impl_gethostname@Base 15 ++ __sanitizer_syscall_post_impl_getitimer@Base 15 ++ __sanitizer_syscall_post_impl_getpeername@Base 15 ++ __sanitizer_syscall_post_impl_getpgid@Base 15 ++ __sanitizer_syscall_post_impl_getpgrp@Base 15 ++ __sanitizer_syscall_post_impl_getpid@Base 15 ++ __sanitizer_syscall_post_impl_getppid@Base 15 ++ __sanitizer_syscall_post_impl_getpriority@Base 15 ++ __sanitizer_syscall_post_impl_getrandom@Base 15 ++ __sanitizer_syscall_post_impl_getresgid16@Base 15 ++ __sanitizer_syscall_post_impl_getresgid@Base 15 ++ __sanitizer_syscall_post_impl_getresuid16@Base 15 ++ __sanitizer_syscall_post_impl_getresuid@Base 15 ++ __sanitizer_syscall_post_impl_getrlimit@Base 15 ++ __sanitizer_syscall_post_impl_getrusage@Base 15 ++ __sanitizer_syscall_post_impl_getsid@Base 15 ++ __sanitizer_syscall_post_impl_getsockname@Base 15 ++ __sanitizer_syscall_post_impl_getsockopt@Base 15 ++ __sanitizer_syscall_post_impl_gettid@Base 15 ++ __sanitizer_syscall_post_impl_gettimeofday@Base 15 ++ __sanitizer_syscall_post_impl_getuid16@Base 15 ++ __sanitizer_syscall_post_impl_getuid@Base 15 ++ __sanitizer_syscall_post_impl_getxattr@Base 15 ++ __sanitizer_syscall_post_impl_init_module@Base 15 ++ __sanitizer_syscall_post_impl_inotify_add_watch@Base 15 ++ __sanitizer_syscall_post_impl_inotify_init1@Base 15 ++ __sanitizer_syscall_post_impl_inotify_init@Base 15 ++ __sanitizer_syscall_post_impl_inotify_rm_watch@Base 15 ++ __sanitizer_syscall_post_impl_io_cancel@Base 15 ++ __sanitizer_syscall_post_impl_io_destroy@Base 15 ++ __sanitizer_syscall_post_impl_io_getevents@Base 15 ++ __sanitizer_syscall_post_impl_io_setup@Base 15 ++ __sanitizer_syscall_post_impl_io_submit@Base 15 ++ __sanitizer_syscall_post_impl_ioctl@Base 15 ++ __sanitizer_syscall_post_impl_ioperm@Base 15 ++ __sanitizer_syscall_post_impl_ioprio_get@Base 15 ++ __sanitizer_syscall_post_impl_ioprio_set@Base 15 ++ __sanitizer_syscall_post_impl_ipc@Base 15 ++ __sanitizer_syscall_post_impl_kexec_load@Base 15 ++ __sanitizer_syscall_post_impl_keyctl@Base 15 ++ __sanitizer_syscall_post_impl_kill@Base 15 ++ __sanitizer_syscall_post_impl_lchown16@Base 15 ++ __sanitizer_syscall_post_impl_lchown@Base 15 ++ __sanitizer_syscall_post_impl_lgetxattr@Base 15 ++ __sanitizer_syscall_post_impl_link@Base 15 ++ __sanitizer_syscall_post_impl_linkat@Base 15 ++ __sanitizer_syscall_post_impl_listen@Base 15 ++ __sanitizer_syscall_post_impl_listxattr@Base 15 ++ __sanitizer_syscall_post_impl_llistxattr@Base 15 ++ __sanitizer_syscall_post_impl_llseek@Base 15 ++ __sanitizer_syscall_post_impl_lookup_dcookie@Base 15 ++ __sanitizer_syscall_post_impl_lremovexattr@Base 15 ++ __sanitizer_syscall_post_impl_lseek@Base 15 ++ __sanitizer_syscall_post_impl_lsetxattr@Base 15 ++ __sanitizer_syscall_post_impl_lstat64@Base 15 ++ __sanitizer_syscall_post_impl_lstat@Base 15 ++ __sanitizer_syscall_post_impl_madvise@Base 15 ++ __sanitizer_syscall_post_impl_mbind@Base 15 ++ __sanitizer_syscall_post_impl_migrate_pages@Base 15 ++ __sanitizer_syscall_post_impl_mincore@Base 15 ++ __sanitizer_syscall_post_impl_mkdir@Base 15 ++ __sanitizer_syscall_post_impl_mkdirat@Base 15 ++ __sanitizer_syscall_post_impl_mknod@Base 15 ++ __sanitizer_syscall_post_impl_mknodat@Base 15 ++ __sanitizer_syscall_post_impl_mlock@Base 15 ++ __sanitizer_syscall_post_impl_mlockall@Base 15 ++ __sanitizer_syscall_post_impl_mmap_pgoff@Base 15 ++ __sanitizer_syscall_post_impl_mount@Base 15 ++ __sanitizer_syscall_post_impl_move_pages@Base 15 ++ __sanitizer_syscall_post_impl_mprotect@Base 15 ++ __sanitizer_syscall_post_impl_mq_getsetattr@Base 15 ++ __sanitizer_syscall_post_impl_mq_notify@Base 15 ++ __sanitizer_syscall_post_impl_mq_open@Base 15 ++ __sanitizer_syscall_post_impl_mq_timedreceive@Base 15 ++ __sanitizer_syscall_post_impl_mq_timedsend@Base 15 ++ __sanitizer_syscall_post_impl_mq_unlink@Base 15 ++ __sanitizer_syscall_post_impl_mremap@Base 15 ++ __sanitizer_syscall_post_impl_msgctl@Base 15 ++ __sanitizer_syscall_post_impl_msgget@Base 15 ++ __sanitizer_syscall_post_impl_msgrcv@Base 15 ++ __sanitizer_syscall_post_impl_msgsnd@Base 15 ++ __sanitizer_syscall_post_impl_msync@Base 15 ++ __sanitizer_syscall_post_impl_munlock@Base 15 ++ __sanitizer_syscall_post_impl_munlockall@Base 15 ++ __sanitizer_syscall_post_impl_munmap@Base 15 ++ __sanitizer_syscall_post_impl_name_to_handle_at@Base 15 ++ __sanitizer_syscall_post_impl_nanosleep@Base 15 ++ __sanitizer_syscall_post_impl_newfstat@Base 15 ++ __sanitizer_syscall_post_impl_newfstatat@Base 15 ++ __sanitizer_syscall_post_impl_newlstat@Base 15 ++ __sanitizer_syscall_post_impl_newstat@Base 15 ++ __sanitizer_syscall_post_impl_newuname@Base 15 ++ __sanitizer_syscall_post_impl_ni_syscall@Base 15 ++ __sanitizer_syscall_post_impl_nice@Base 15 ++ __sanitizer_syscall_post_impl_old_getrlimit@Base 15 ++ __sanitizer_syscall_post_impl_old_mmap@Base 15 ++ __sanitizer_syscall_post_impl_old_readdir@Base 15 ++ __sanitizer_syscall_post_impl_old_select@Base 15 ++ __sanitizer_syscall_post_impl_oldumount@Base 15 ++ __sanitizer_syscall_post_impl_olduname@Base 15 ++ __sanitizer_syscall_post_impl_open@Base 15 ++ __sanitizer_syscall_post_impl_open_by_handle_at@Base 15 ++ __sanitizer_syscall_post_impl_openat@Base 15 ++ __sanitizer_syscall_post_impl_pause@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_iobase@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_read@Base 15 ++ __sanitizer_syscall_post_impl_pciconfig_write@Base 15 ++ __sanitizer_syscall_post_impl_perf_event_open@Base 15 ++ __sanitizer_syscall_post_impl_personality@Base 15 ++ __sanitizer_syscall_post_impl_pipe2@Base 15 ++ __sanitizer_syscall_post_impl_pipe@Base 15 ++ __sanitizer_syscall_post_impl_pivot_root@Base 15 ++ __sanitizer_syscall_post_impl_poll@Base 15 ++ __sanitizer_syscall_post_impl_ppoll@Base 15 ++ __sanitizer_syscall_post_impl_pread64@Base 15 ++ __sanitizer_syscall_post_impl_preadv@Base 15 ++ __sanitizer_syscall_post_impl_prlimit64@Base 15 ++ __sanitizer_syscall_post_impl_process_vm_readv@Base 15 ++ __sanitizer_syscall_post_impl_process_vm_writev@Base 15 ++ __sanitizer_syscall_post_impl_pselect6@Base 15 ++ __sanitizer_syscall_post_impl_ptrace@Base 15 ++ __sanitizer_syscall_post_impl_pwrite64@Base 15 ++ __sanitizer_syscall_post_impl_pwritev@Base 15 ++ __sanitizer_syscall_post_impl_quotactl@Base 15 ++ __sanitizer_syscall_post_impl_read@Base 15 ++ __sanitizer_syscall_post_impl_readlink@Base 15 ++ __sanitizer_syscall_post_impl_readlinkat@Base 15 ++ __sanitizer_syscall_post_impl_readv@Base 15 ++ __sanitizer_syscall_post_impl_reboot@Base 15 ++ __sanitizer_syscall_post_impl_recv@Base 15 ++ __sanitizer_syscall_post_impl_recvfrom@Base 15 ++ __sanitizer_syscall_post_impl_recvmmsg@Base 15 ++ __sanitizer_syscall_post_impl_recvmsg@Base 15 ++ __sanitizer_syscall_post_impl_remap_file_pages@Base 15 ++ __sanitizer_syscall_post_impl_removexattr@Base 15 ++ __sanitizer_syscall_post_impl_rename@Base 15 ++ __sanitizer_syscall_post_impl_renameat@Base 15 ++ __sanitizer_syscall_post_impl_request_key@Base 15 ++ __sanitizer_syscall_post_impl_restart_syscall@Base 15 ++ __sanitizer_syscall_post_impl_rmdir@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigaction@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigpending@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigprocmask@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigqueueinfo@Base 15 ++ __sanitizer_syscall_post_impl_rt_sigtimedwait@Base 15 ++ __sanitizer_syscall_post_impl_rt_tgsigqueueinfo@Base 15 ++ __sanitizer_syscall_post_impl_sched_get_priority_max@Base 15 ++ __sanitizer_syscall_post_impl_sched_get_priority_min@Base 15 ++ __sanitizer_syscall_post_impl_sched_getaffinity@Base 15 ++ __sanitizer_syscall_post_impl_sched_getparam@Base 15 ++ __sanitizer_syscall_post_impl_sched_getscheduler@Base 15 ++ __sanitizer_syscall_post_impl_sched_rr_get_interval@Base 15 ++ __sanitizer_syscall_post_impl_sched_setaffinity@Base 15 ++ __sanitizer_syscall_post_impl_sched_setparam@Base 15 ++ __sanitizer_syscall_post_impl_sched_setscheduler@Base 15 ++ __sanitizer_syscall_post_impl_sched_yield@Base 15 ++ __sanitizer_syscall_post_impl_select@Base 15 ++ __sanitizer_syscall_post_impl_semctl@Base 15 ++ __sanitizer_syscall_post_impl_semget@Base 15 ++ __sanitizer_syscall_post_impl_semop@Base 15 ++ __sanitizer_syscall_post_impl_semtimedop@Base 15 ++ __sanitizer_syscall_post_impl_send@Base 15 ++ __sanitizer_syscall_post_impl_sendfile64@Base 15 ++ __sanitizer_syscall_post_impl_sendfile@Base 15 ++ __sanitizer_syscall_post_impl_sendmmsg@Base 15 ++ __sanitizer_syscall_post_impl_sendmsg@Base 15 ++ __sanitizer_syscall_post_impl_sendto@Base 15 ++ __sanitizer_syscall_post_impl_set_mempolicy@Base 15 ++ __sanitizer_syscall_post_impl_set_robust_list@Base 15 ++ __sanitizer_syscall_post_impl_set_tid_address@Base 15 ++ __sanitizer_syscall_post_impl_setdomainname@Base 15 ++ __sanitizer_syscall_post_impl_setfsgid16@Base 15 ++ __sanitizer_syscall_post_impl_setfsgid@Base 15 ++ __sanitizer_syscall_post_impl_setfsuid16@Base 15 ++ __sanitizer_syscall_post_impl_setfsuid@Base 15 ++ __sanitizer_syscall_post_impl_setgid16@Base 15 ++ __sanitizer_syscall_post_impl_setgid@Base 15 ++ __sanitizer_syscall_post_impl_setgroups16@Base 15 ++ __sanitizer_syscall_post_impl_setgroups@Base 15 ++ __sanitizer_syscall_post_impl_sethostname@Base 15 ++ __sanitizer_syscall_post_impl_setitimer@Base 15 ++ __sanitizer_syscall_post_impl_setns@Base 15 ++ __sanitizer_syscall_post_impl_setpgid@Base 15 ++ __sanitizer_syscall_post_impl_setpriority@Base 15 ++ __sanitizer_syscall_post_impl_setregid16@Base 15 ++ __sanitizer_syscall_post_impl_setregid@Base 15 ++ __sanitizer_syscall_post_impl_setresgid16@Base 15 ++ __sanitizer_syscall_post_impl_setresgid@Base 15 ++ __sanitizer_syscall_post_impl_setresuid16@Base 15 ++ __sanitizer_syscall_post_impl_setresuid@Base 15 ++ __sanitizer_syscall_post_impl_setreuid16@Base 15 ++ __sanitizer_syscall_post_impl_setreuid@Base 15 ++ __sanitizer_syscall_post_impl_setrlimit@Base 15 ++ __sanitizer_syscall_post_impl_setsid@Base 15 ++ __sanitizer_syscall_post_impl_setsockopt@Base 15 ++ __sanitizer_syscall_post_impl_settimeofday@Base 15 ++ __sanitizer_syscall_post_impl_setuid16@Base 15 ++ __sanitizer_syscall_post_impl_setuid@Base 15 ++ __sanitizer_syscall_post_impl_setxattr@Base 15 ++ __sanitizer_syscall_post_impl_sgetmask@Base 15 ++ __sanitizer_syscall_post_impl_shmat@Base 15 ++ __sanitizer_syscall_post_impl_shmctl@Base 15 ++ __sanitizer_syscall_post_impl_shmdt@Base 15 ++ __sanitizer_syscall_post_impl_shmget@Base 15 ++ __sanitizer_syscall_post_impl_shutdown@Base 15 ++ __sanitizer_syscall_post_impl_sigaction@Base 15 ++ __sanitizer_syscall_post_impl_sigaltstack@Base 15 ++ __sanitizer_syscall_post_impl_signal@Base 15 ++ __sanitizer_syscall_post_impl_signalfd4@Base 15 ++ __sanitizer_syscall_post_impl_signalfd@Base 15 ++ __sanitizer_syscall_post_impl_sigpending@Base 15 ++ __sanitizer_syscall_post_impl_sigprocmask@Base 15 ++ __sanitizer_syscall_post_impl_socket@Base 15 ++ __sanitizer_syscall_post_impl_socketcall@Base 15 ++ __sanitizer_syscall_post_impl_socketpair@Base 15 ++ __sanitizer_syscall_post_impl_splice@Base 15 ++ __sanitizer_syscall_post_impl_spu_create@Base 15 ++ __sanitizer_syscall_post_impl_spu_run@Base 15 ++ __sanitizer_syscall_post_impl_ssetmask@Base 15 ++ __sanitizer_syscall_post_impl_stat64@Base 15 ++ __sanitizer_syscall_post_impl_stat@Base 15 ++ __sanitizer_syscall_post_impl_statfs64@Base 15 ++ __sanitizer_syscall_post_impl_statfs@Base 15 ++ __sanitizer_syscall_post_impl_stime@Base 15 ++ __sanitizer_syscall_post_impl_swapoff@Base 15 ++ __sanitizer_syscall_post_impl_swapon@Base 15 ++ __sanitizer_syscall_post_impl_symlink@Base 15 ++ __sanitizer_syscall_post_impl_symlinkat@Base 15 ++ __sanitizer_syscall_post_impl_sync@Base 15 ++ __sanitizer_syscall_post_impl_syncfs@Base 15 ++ __sanitizer_syscall_post_impl_sysctl@Base 15 ++ __sanitizer_syscall_post_impl_sysfs@Base 15 ++ __sanitizer_syscall_post_impl_sysinfo@Base 15 ++ __sanitizer_syscall_post_impl_syslog@Base 15 ++ __sanitizer_syscall_post_impl_tee@Base 15 ++ __sanitizer_syscall_post_impl_tgkill@Base 15 ++ __sanitizer_syscall_post_impl_time@Base 15 ++ __sanitizer_syscall_post_impl_timer_create@Base 15 ++ __sanitizer_syscall_post_impl_timer_delete@Base 15 ++ __sanitizer_syscall_post_impl_timer_getoverrun@Base 15 ++ __sanitizer_syscall_post_impl_timer_gettime@Base 15 ++ __sanitizer_syscall_post_impl_timer_settime@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_create@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_gettime@Base 15 ++ __sanitizer_syscall_post_impl_timerfd_settime@Base 15 ++ __sanitizer_syscall_post_impl_times@Base 15 ++ __sanitizer_syscall_post_impl_tkill@Base 15 ++ __sanitizer_syscall_post_impl_truncate@Base 15 ++ __sanitizer_syscall_post_impl_umask@Base 15 ++ __sanitizer_syscall_post_impl_umount@Base 15 ++ __sanitizer_syscall_post_impl_uname@Base 15 ++ __sanitizer_syscall_post_impl_unlink@Base 15 ++ __sanitizer_syscall_post_impl_unlinkat@Base 15 ++ __sanitizer_syscall_post_impl_unshare@Base 15 ++ __sanitizer_syscall_post_impl_uselib@Base 15 ++ __sanitizer_syscall_post_impl_ustat@Base 15 ++ __sanitizer_syscall_post_impl_utime@Base 15 ++ __sanitizer_syscall_post_impl_utimensat@Base 15 ++ __sanitizer_syscall_post_impl_utimes@Base 15 ++ __sanitizer_syscall_post_impl_vfork@Base 15 ++ __sanitizer_syscall_post_impl_vhangup@Base 15 ++ __sanitizer_syscall_post_impl_vmsplice@Base 15 ++ __sanitizer_syscall_post_impl_wait4@Base 15 ++ __sanitizer_syscall_post_impl_waitid@Base 15 ++ __sanitizer_syscall_post_impl_waitpid@Base 15 ++ __sanitizer_syscall_post_impl_write@Base 15 ++ __sanitizer_syscall_post_impl_writev@Base 15 ++ __sanitizer_syscall_pre_impl_accept4@Base 15 ++ __sanitizer_syscall_pre_impl_accept@Base 15 ++ __sanitizer_syscall_pre_impl_access@Base 15 ++ __sanitizer_syscall_pre_impl_acct@Base 15 ++ __sanitizer_syscall_pre_impl_add_key@Base 15 ++ __sanitizer_syscall_pre_impl_adjtimex@Base 15 ++ __sanitizer_syscall_pre_impl_alarm@Base 15 ++ __sanitizer_syscall_pre_impl_bdflush@Base 15 ++ __sanitizer_syscall_pre_impl_bind@Base 15 ++ __sanitizer_syscall_pre_impl_brk@Base 15 ++ __sanitizer_syscall_pre_impl_capget@Base 15 ++ __sanitizer_syscall_pre_impl_capset@Base 15 ++ __sanitizer_syscall_pre_impl_chdir@Base 15 ++ __sanitizer_syscall_pre_impl_chmod@Base 15 ++ __sanitizer_syscall_pre_impl_chown16@Base 15 ++ __sanitizer_syscall_pre_impl_chown@Base 15 ++ __sanitizer_syscall_pre_impl_chroot@Base 15 ++ __sanitizer_syscall_pre_impl_clock_adjtime@Base 15 ++ __sanitizer_syscall_pre_impl_clock_getres@Base 15 ++ __sanitizer_syscall_pre_impl_clock_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_clock_nanosleep@Base 15 ++ __sanitizer_syscall_pre_impl_clock_settime@Base 15 ++ __sanitizer_syscall_pre_impl_close@Base 15 ++ __sanitizer_syscall_pre_impl_connect@Base 15 ++ __sanitizer_syscall_pre_impl_creat@Base 15 ++ __sanitizer_syscall_pre_impl_delete_module@Base 15 ++ __sanitizer_syscall_pre_impl_dup2@Base 15 ++ __sanitizer_syscall_pre_impl_dup3@Base 15 ++ __sanitizer_syscall_pre_impl_dup@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_create1@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_create@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_ctl@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_pwait2@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_pwait@Base 15 ++ __sanitizer_syscall_pre_impl_epoll_wait@Base 15 ++ __sanitizer_syscall_pre_impl_eventfd2@Base 15 ++ __sanitizer_syscall_pre_impl_eventfd@Base 15 ++ __sanitizer_syscall_pre_impl_exit@Base 15 ++ __sanitizer_syscall_pre_impl_exit_group@Base 15 ++ __sanitizer_syscall_pre_impl_faccessat@Base 15 ++ __sanitizer_syscall_pre_impl_fchdir@Base 15 ++ __sanitizer_syscall_pre_impl_fchmod@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat2@Base 15 ++ __sanitizer_syscall_pre_impl_fchmodat@Base 15 ++ __sanitizer_syscall_pre_impl_fchown16@Base 15 ++ __sanitizer_syscall_pre_impl_fchown@Base 15 ++ __sanitizer_syscall_pre_impl_fchownat@Base 15 ++ __sanitizer_syscall_pre_impl_fcntl64@Base 15 ++ __sanitizer_syscall_pre_impl_fcntl@Base 15 ++ __sanitizer_syscall_pre_impl_fdatasync@Base 15 ++ __sanitizer_syscall_pre_impl_fgetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_flistxattr@Base 15 ++ __sanitizer_syscall_pre_impl_flock@Base 15 ++ __sanitizer_syscall_pre_impl_fork@Base 15 ++ __sanitizer_syscall_pre_impl_fremovexattr@Base 15 ++ __sanitizer_syscall_pre_impl_fsetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_fstat64@Base 15 ++ __sanitizer_syscall_pre_impl_fstat@Base 15 ++ __sanitizer_syscall_pre_impl_fstatat64@Base 15 ++ __sanitizer_syscall_pre_impl_fstatfs64@Base 15 ++ __sanitizer_syscall_pre_impl_fstatfs@Base 15 ++ __sanitizer_syscall_pre_impl_fsync@Base 15 ++ __sanitizer_syscall_pre_impl_ftruncate@Base 15 ++ __sanitizer_syscall_pre_impl_futex@Base 15 ++ __sanitizer_syscall_pre_impl_futimesat@Base 15 ++ __sanitizer_syscall_pre_impl_get_mempolicy@Base 15 ++ __sanitizer_syscall_pre_impl_get_robust_list@Base 15 ++ __sanitizer_syscall_pre_impl_getcpu@Base 15 ++ __sanitizer_syscall_pre_impl_getcwd@Base 15 ++ __sanitizer_syscall_pre_impl_getdents64@Base 15 ++ __sanitizer_syscall_pre_impl_getdents@Base 15 ++ __sanitizer_syscall_pre_impl_getegid16@Base 15 ++ __sanitizer_syscall_pre_impl_getegid@Base 15 ++ __sanitizer_syscall_pre_impl_geteuid16@Base 15 ++ __sanitizer_syscall_pre_impl_geteuid@Base 15 ++ __sanitizer_syscall_pre_impl_getgid16@Base 15 ++ __sanitizer_syscall_pre_impl_getgid@Base 15 ++ __sanitizer_syscall_pre_impl_getgroups16@Base 15 ++ __sanitizer_syscall_pre_impl_getgroups@Base 15 ++ __sanitizer_syscall_pre_impl_gethostname@Base 15 ++ __sanitizer_syscall_pre_impl_getitimer@Base 15 ++ __sanitizer_syscall_pre_impl_getpeername@Base 15 ++ __sanitizer_syscall_pre_impl_getpgid@Base 15 ++ __sanitizer_syscall_pre_impl_getpgrp@Base 15 ++ __sanitizer_syscall_pre_impl_getpid@Base 15 ++ __sanitizer_syscall_pre_impl_getppid@Base 15 ++ __sanitizer_syscall_pre_impl_getpriority@Base 15 ++ __sanitizer_syscall_pre_impl_getrandom@Base 15 ++ __sanitizer_syscall_pre_impl_getresgid16@Base 15 ++ __sanitizer_syscall_pre_impl_getresgid@Base 15 ++ __sanitizer_syscall_pre_impl_getresuid16@Base 15 ++ __sanitizer_syscall_pre_impl_getresuid@Base 15 ++ __sanitizer_syscall_pre_impl_getrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_getrusage@Base 15 ++ __sanitizer_syscall_pre_impl_getsid@Base 15 ++ __sanitizer_syscall_pre_impl_getsockname@Base 15 ++ __sanitizer_syscall_pre_impl_getsockopt@Base 15 ++ __sanitizer_syscall_pre_impl_gettid@Base 15 ++ __sanitizer_syscall_pre_impl_gettimeofday@Base 15 ++ __sanitizer_syscall_pre_impl_getuid16@Base 15 ++ __sanitizer_syscall_pre_impl_getuid@Base 15 ++ __sanitizer_syscall_pre_impl_getxattr@Base 15 ++ __sanitizer_syscall_pre_impl_init_module@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_add_watch@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_init1@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_init@Base 15 ++ __sanitizer_syscall_pre_impl_inotify_rm_watch@Base 15 ++ __sanitizer_syscall_pre_impl_io_cancel@Base 15 ++ __sanitizer_syscall_pre_impl_io_destroy@Base 15 ++ __sanitizer_syscall_pre_impl_io_getevents@Base 15 ++ __sanitizer_syscall_pre_impl_io_setup@Base 15 ++ __sanitizer_syscall_pre_impl_io_submit@Base 15 ++ __sanitizer_syscall_pre_impl_ioctl@Base 15 ++ __sanitizer_syscall_pre_impl_ioperm@Base 15 ++ __sanitizer_syscall_pre_impl_ioprio_get@Base 15 ++ __sanitizer_syscall_pre_impl_ioprio_set@Base 15 ++ __sanitizer_syscall_pre_impl_ipc@Base 15 ++ __sanitizer_syscall_pre_impl_kexec_load@Base 15 ++ __sanitizer_syscall_pre_impl_keyctl@Base 15 ++ __sanitizer_syscall_pre_impl_kill@Base 15 ++ __sanitizer_syscall_pre_impl_lchown16@Base 15 ++ __sanitizer_syscall_pre_impl_lchown@Base 15 ++ __sanitizer_syscall_pre_impl_lgetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_link@Base 15 ++ __sanitizer_syscall_pre_impl_linkat@Base 15 ++ __sanitizer_syscall_pre_impl_listen@Base 15 ++ __sanitizer_syscall_pre_impl_listxattr@Base 15 ++ __sanitizer_syscall_pre_impl_llistxattr@Base 15 ++ __sanitizer_syscall_pre_impl_llseek@Base 15 ++ __sanitizer_syscall_pre_impl_lookup_dcookie@Base 15 ++ __sanitizer_syscall_pre_impl_lremovexattr@Base 15 ++ __sanitizer_syscall_pre_impl_lseek@Base 15 ++ __sanitizer_syscall_pre_impl_lsetxattr@Base 15 ++ __sanitizer_syscall_pre_impl_lstat64@Base 15 ++ __sanitizer_syscall_pre_impl_lstat@Base 15 ++ __sanitizer_syscall_pre_impl_madvise@Base 15 ++ __sanitizer_syscall_pre_impl_mbind@Base 15 ++ __sanitizer_syscall_pre_impl_migrate_pages@Base 15 ++ __sanitizer_syscall_pre_impl_mincore@Base 15 ++ __sanitizer_syscall_pre_impl_mkdir@Base 15 ++ __sanitizer_syscall_pre_impl_mkdirat@Base 15 ++ __sanitizer_syscall_pre_impl_mknod@Base 15 ++ __sanitizer_syscall_pre_impl_mknodat@Base 15 ++ __sanitizer_syscall_pre_impl_mlock@Base 15 ++ __sanitizer_syscall_pre_impl_mlockall@Base 15 ++ __sanitizer_syscall_pre_impl_mmap_pgoff@Base 15 ++ __sanitizer_syscall_pre_impl_mount@Base 15 ++ __sanitizer_syscall_pre_impl_move_pages@Base 15 ++ __sanitizer_syscall_pre_impl_mprotect@Base 15 ++ __sanitizer_syscall_pre_impl_mq_getsetattr@Base 15 ++ __sanitizer_syscall_pre_impl_mq_notify@Base 15 ++ __sanitizer_syscall_pre_impl_mq_open@Base 15 ++ __sanitizer_syscall_pre_impl_mq_timedreceive@Base 15 ++ __sanitizer_syscall_pre_impl_mq_timedsend@Base 15 ++ __sanitizer_syscall_pre_impl_mq_unlink@Base 15 ++ __sanitizer_syscall_pre_impl_mremap@Base 15 ++ __sanitizer_syscall_pre_impl_msgctl@Base 15 ++ __sanitizer_syscall_pre_impl_msgget@Base 15 ++ __sanitizer_syscall_pre_impl_msgrcv@Base 15 ++ __sanitizer_syscall_pre_impl_msgsnd@Base 15 ++ __sanitizer_syscall_pre_impl_msync@Base 15 ++ __sanitizer_syscall_pre_impl_munlock@Base 15 ++ __sanitizer_syscall_pre_impl_munlockall@Base 15 ++ __sanitizer_syscall_pre_impl_munmap@Base 15 ++ __sanitizer_syscall_pre_impl_name_to_handle_at@Base 15 ++ __sanitizer_syscall_pre_impl_nanosleep@Base 15 ++ __sanitizer_syscall_pre_impl_newfstat@Base 15 ++ __sanitizer_syscall_pre_impl_newfstatat@Base 15 ++ __sanitizer_syscall_pre_impl_newlstat@Base 15 ++ __sanitizer_syscall_pre_impl_newstat@Base 15 ++ __sanitizer_syscall_pre_impl_newuname@Base 15 ++ __sanitizer_syscall_pre_impl_ni_syscall@Base 15 ++ __sanitizer_syscall_pre_impl_nice@Base 15 ++ __sanitizer_syscall_pre_impl_old_getrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_old_mmap@Base 15 ++ __sanitizer_syscall_pre_impl_old_readdir@Base 15 ++ __sanitizer_syscall_pre_impl_old_select@Base 15 ++ __sanitizer_syscall_pre_impl_oldumount@Base 15 ++ __sanitizer_syscall_pre_impl_olduname@Base 15 ++ __sanitizer_syscall_pre_impl_open@Base 15 ++ __sanitizer_syscall_pre_impl_open_by_handle_at@Base 15 ++ __sanitizer_syscall_pre_impl_openat@Base 15 ++ __sanitizer_syscall_pre_impl_pause@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_iobase@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_read@Base 15 ++ __sanitizer_syscall_pre_impl_pciconfig_write@Base 15 ++ __sanitizer_syscall_pre_impl_perf_event_open@Base 15 ++ __sanitizer_syscall_pre_impl_personality@Base 15 ++ __sanitizer_syscall_pre_impl_pipe2@Base 15 ++ __sanitizer_syscall_pre_impl_pipe@Base 15 ++ __sanitizer_syscall_pre_impl_pivot_root@Base 15 ++ __sanitizer_syscall_pre_impl_poll@Base 15 ++ __sanitizer_syscall_pre_impl_ppoll@Base 15 ++ __sanitizer_syscall_pre_impl_pread64@Base 15 ++ __sanitizer_syscall_pre_impl_preadv@Base 15 ++ __sanitizer_syscall_pre_impl_prlimit64@Base 15 ++ __sanitizer_syscall_pre_impl_process_vm_readv@Base 15 ++ __sanitizer_syscall_pre_impl_process_vm_writev@Base 15 ++ __sanitizer_syscall_pre_impl_pselect6@Base 15 ++ __sanitizer_syscall_pre_impl_ptrace@Base 15 ++ __sanitizer_syscall_pre_impl_pwrite64@Base 15 ++ __sanitizer_syscall_pre_impl_pwritev@Base 15 ++ __sanitizer_syscall_pre_impl_quotactl@Base 15 ++ __sanitizer_syscall_pre_impl_read@Base 15 ++ __sanitizer_syscall_pre_impl_readlink@Base 15 ++ __sanitizer_syscall_pre_impl_readlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_readv@Base 15 ++ __sanitizer_syscall_pre_impl_reboot@Base 15 ++ __sanitizer_syscall_pre_impl_recv@Base 15 ++ __sanitizer_syscall_pre_impl_recvfrom@Base 15 ++ __sanitizer_syscall_pre_impl_recvmmsg@Base 15 ++ __sanitizer_syscall_pre_impl_recvmsg@Base 15 ++ __sanitizer_syscall_pre_impl_remap_file_pages@Base 15 ++ __sanitizer_syscall_pre_impl_removexattr@Base 15 ++ __sanitizer_syscall_pre_impl_rename@Base 15 ++ __sanitizer_syscall_pre_impl_renameat@Base 15 ++ __sanitizer_syscall_pre_impl_request_key@Base 15 ++ __sanitizer_syscall_pre_impl_restart_syscall@Base 15 ++ __sanitizer_syscall_pre_impl_rmdir@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigaction@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigpending@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigprocmask@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigqueueinfo@Base 15 ++ __sanitizer_syscall_pre_impl_rt_sigtimedwait@Base 15 ++ __sanitizer_syscall_pre_impl_rt_tgsigqueueinfo@Base 15 ++ __sanitizer_syscall_pre_impl_sched_get_priority_max@Base 15 ++ __sanitizer_syscall_pre_impl_sched_get_priority_min@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getaffinity@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getparam@Base 15 ++ __sanitizer_syscall_pre_impl_sched_getscheduler@Base 15 ++ __sanitizer_syscall_pre_impl_sched_rr_get_interval@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setaffinity@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setparam@Base 15 ++ __sanitizer_syscall_pre_impl_sched_setscheduler@Base 15 ++ __sanitizer_syscall_pre_impl_sched_yield@Base 15 ++ __sanitizer_syscall_pre_impl_select@Base 15 ++ __sanitizer_syscall_pre_impl_semctl@Base 15 ++ __sanitizer_syscall_pre_impl_semget@Base 15 ++ __sanitizer_syscall_pre_impl_semop@Base 15 ++ __sanitizer_syscall_pre_impl_semtimedop@Base 15 ++ __sanitizer_syscall_pre_impl_send@Base 15 ++ __sanitizer_syscall_pre_impl_sendfile64@Base 15 ++ __sanitizer_syscall_pre_impl_sendfile@Base 15 ++ __sanitizer_syscall_pre_impl_sendmmsg@Base 15 ++ __sanitizer_syscall_pre_impl_sendmsg@Base 15 ++ __sanitizer_syscall_pre_impl_sendto@Base 15 ++ __sanitizer_syscall_pre_impl_set_mempolicy@Base 15 ++ __sanitizer_syscall_pre_impl_set_robust_list@Base 15 ++ __sanitizer_syscall_pre_impl_set_tid_address@Base 15 ++ __sanitizer_syscall_pre_impl_setdomainname@Base 15 ++ __sanitizer_syscall_pre_impl_setfsgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setfsgid@Base 15 ++ __sanitizer_syscall_pre_impl_setfsuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setfsuid@Base 15 ++ __sanitizer_syscall_pre_impl_setgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setgid@Base 15 ++ __sanitizer_syscall_pre_impl_setgroups16@Base 15 ++ __sanitizer_syscall_pre_impl_setgroups@Base 15 ++ __sanitizer_syscall_pre_impl_sethostname@Base 15 ++ __sanitizer_syscall_pre_impl_setitimer@Base 15 ++ __sanitizer_syscall_pre_impl_setns@Base 15 ++ __sanitizer_syscall_pre_impl_setpgid@Base 15 ++ __sanitizer_syscall_pre_impl_setpriority@Base 15 ++ __sanitizer_syscall_pre_impl_setregid16@Base 15 ++ __sanitizer_syscall_pre_impl_setregid@Base 15 ++ __sanitizer_syscall_pre_impl_setresgid16@Base 15 ++ __sanitizer_syscall_pre_impl_setresgid@Base 15 ++ __sanitizer_syscall_pre_impl_setresuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setresuid@Base 15 ++ __sanitizer_syscall_pre_impl_setreuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setreuid@Base 15 ++ __sanitizer_syscall_pre_impl_setrlimit@Base 15 ++ __sanitizer_syscall_pre_impl_setsid@Base 15 ++ __sanitizer_syscall_pre_impl_setsockopt@Base 15 ++ __sanitizer_syscall_pre_impl_settimeofday@Base 15 ++ __sanitizer_syscall_pre_impl_setuid16@Base 15 ++ __sanitizer_syscall_pre_impl_setuid@Base 15 ++ __sanitizer_syscall_pre_impl_setxattr@Base 15 ++ __sanitizer_syscall_pre_impl_sgetmask@Base 15 ++ __sanitizer_syscall_pre_impl_shmat@Base 15 ++ __sanitizer_syscall_pre_impl_shmctl@Base 15 ++ __sanitizer_syscall_pre_impl_shmdt@Base 15 ++ __sanitizer_syscall_pre_impl_shmget@Base 15 ++ __sanitizer_syscall_pre_impl_shutdown@Base 15 ++ __sanitizer_syscall_pre_impl_sigaction@Base 15 ++ __sanitizer_syscall_pre_impl_sigaltstack@Base 15 ++ __sanitizer_syscall_pre_impl_signal@Base 15 ++ __sanitizer_syscall_pre_impl_signalfd4@Base 15 ++ __sanitizer_syscall_pre_impl_signalfd@Base 15 ++ __sanitizer_syscall_pre_impl_sigpending@Base 15 ++ __sanitizer_syscall_pre_impl_sigprocmask@Base 15 ++ __sanitizer_syscall_pre_impl_socket@Base 15 ++ __sanitizer_syscall_pre_impl_socketcall@Base 15 ++ __sanitizer_syscall_pre_impl_socketpair@Base 15 ++ __sanitizer_syscall_pre_impl_splice@Base 15 ++ __sanitizer_syscall_pre_impl_spu_create@Base 15 ++ __sanitizer_syscall_pre_impl_spu_run@Base 15 ++ __sanitizer_syscall_pre_impl_ssetmask@Base 15 ++ __sanitizer_syscall_pre_impl_stat64@Base 15 ++ __sanitizer_syscall_pre_impl_stat@Base 15 ++ __sanitizer_syscall_pre_impl_statfs64@Base 15 ++ __sanitizer_syscall_pre_impl_statfs@Base 15 ++ __sanitizer_syscall_pre_impl_stime@Base 15 ++ __sanitizer_syscall_pre_impl_swapoff@Base 15 ++ __sanitizer_syscall_pre_impl_swapon@Base 15 ++ __sanitizer_syscall_pre_impl_symlink@Base 15 ++ __sanitizer_syscall_pre_impl_symlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_sync@Base 15 ++ __sanitizer_syscall_pre_impl_syncfs@Base 15 ++ __sanitizer_syscall_pre_impl_sysctl@Base 15 ++ __sanitizer_syscall_pre_impl_sysfs@Base 15 ++ __sanitizer_syscall_pre_impl_sysinfo@Base 15 ++ __sanitizer_syscall_pre_impl_syslog@Base 15 ++ __sanitizer_syscall_pre_impl_tee@Base 15 ++ __sanitizer_syscall_pre_impl_tgkill@Base 15 ++ __sanitizer_syscall_pre_impl_time@Base 15 ++ __sanitizer_syscall_pre_impl_timer_create@Base 15 ++ __sanitizer_syscall_pre_impl_timer_delete@Base 15 ++ __sanitizer_syscall_pre_impl_timer_getoverrun@Base 15 ++ __sanitizer_syscall_pre_impl_timer_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_timer_settime@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_create@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_gettime@Base 15 ++ __sanitizer_syscall_pre_impl_timerfd_settime@Base 15 ++ __sanitizer_syscall_pre_impl_times@Base 15 ++ __sanitizer_syscall_pre_impl_tkill@Base 15 ++ __sanitizer_syscall_pre_impl_truncate@Base 15 ++ __sanitizer_syscall_pre_impl_umask@Base 15 ++ __sanitizer_syscall_pre_impl_umount@Base 15 ++ __sanitizer_syscall_pre_impl_uname@Base 15 ++ __sanitizer_syscall_pre_impl_unlink@Base 15 ++ __sanitizer_syscall_pre_impl_unlinkat@Base 15 ++ __sanitizer_syscall_pre_impl_unshare@Base 15 ++ __sanitizer_syscall_pre_impl_uselib@Base 15 ++ __sanitizer_syscall_pre_impl_ustat@Base 15 ++ __sanitizer_syscall_pre_impl_utime@Base 15 ++ __sanitizer_syscall_pre_impl_utimensat@Base 15 ++ __sanitizer_syscall_pre_impl_utimes@Base 15 ++ __sanitizer_syscall_pre_impl_vfork@Base 15 ++ __sanitizer_syscall_pre_impl_vhangup@Base 15 ++ __sanitizer_syscall_pre_impl_vmsplice@Base 15 ++ __sanitizer_syscall_pre_impl_wait4@Base 15 ++ __sanitizer_syscall_pre_impl_waitid@Base 15 ++ __sanitizer_syscall_pre_impl_waitpid@Base 15 ++ __sanitizer_syscall_pre_impl_write@Base 15 ++ __sanitizer_syscall_pre_impl_writev@Base 15 ++ __sanitizer_unaligned_load16@Base 15 ++ __sanitizer_unaligned_load32@Base 15 ++ __sanitizer_unaligned_load64@Base 15 ++ __sanitizer_unaligned_store16@Base 15 ++ __sanitizer_unaligned_store32@Base 15 ++ __sanitizer_unaligned_store64@Base 15 ++ __sanitizer_verify_contiguous_container@Base 15 ++ __sanitizer_verify_double_ended_contiguous_container@Base 15 ++ __sanitizer_weak_hook_memcmp@Base 15 ++ __sanitizer_weak_hook_memmem@Base 15 ++ __sanitizer_weak_hook_strcasecmp@Base 15 ++ __sanitizer_weak_hook_strcasestr@Base 15 ++ __sanitizer_weak_hook_strcmp@Base 15 ++ __sanitizer_weak_hook_strncasecmp@Base 15 ++ __sanitizer_weak_hook_strncmp@Base 15 ++ __sanitizer_weak_hook_strstr@Base 15 ++ __snprintf_chk@Base 15 ++ __sprintf_chk@Base 15 ++ __strdup@Base 15 ++ __strndup@Base 15 ++ __strxfrm_l@Base 15 ++ __tls_get_addr@Base 15 ++ __uflow@Base 15 ++ __underflow@Base 15 ++ __vsnprintf_chk@Base 15 ++ __vsprintf_chk@Base 15 ++ __wcsxfrm_l@Base 15 ++ __woverflow@Base 15 ++ __wuflow@Base 15 ++ __wunderflow@Base 15 ++ __xpg_strerror_r@Base 15 ++ __xstat64@Base 15 ++ __xstat@Base 15 ++ _exit@Base 15 ++ _longjmp@Base 15 ++ _obstack_begin@Base 15 ++ _obstack_begin_1@Base 15 ++ _obstack_newchunk@Base 15 ++ accept4@Base 15 ++ accept@Base 15 ++ aligned_alloc@Base 15 ++ argp_parse@Base 15 ++ asctime@Base 15 ++ asctime_r@Base 15 ++ asprintf@Base 15 ++ atoi@Base 15 ++ atol@Base 15 ++ atoll@Base 15 ++ backtrace@Base 15 ++ backtrace_symbols@Base 15 ++ bcmp@Base 15 ++ bsearch@Base 15 ++ bzero@Base 15 ++ calloc@Base 15 ++ canonicalize_file_name@Base 15 ++ capget@Base 15 ++ capset@Base 15 ++ cfree@Base 15 ++ clock_getcpuclockid@Base 15 ++ clock_getres@Base 15 ++ clock_gettime@Base 15 ++ clock_settime@Base 15 ++ confstr@Base 15 ++ ctermid@Base 15 ++ ctime@Base 15 ++ ctime_r@Base 15 ++ dlclose@Base 15 ++ dlopen@Base 15 ++ dn_comp@Base 15 ++ dn_expand@Base 15 ++ drand48_r@Base 15 ++ endgrent@Base 15 ++ endpwent@Base 15 ++ ether_aton@Base 15 ++ ether_aton_r@Base 15 ++ ether_hostton@Base 15 ++ ether_line@Base 15 ++ ether_ntoa@Base 15 ++ ether_ntoa_r@Base 15 ++ ether_ntohost@Base 15 ++ eventfd_read@Base 15 ++ eventfd_write@Base 15 ++ fclose@Base 15 ++ fdopen@Base 15 ++ fflush@Base 15 ++ fgetgrent@Base 15 ++ fgetgrent_r@Base 15 ++ fgetpwent@Base 15 ++ fgetpwent_r@Base 15 ++ fgets@Base 15 ++ fgetxattr@Base 15 ++ flistxattr@Base 15 ++ fmemopen@Base 15 ++ fopen64@Base 15 ++ fopen@Base 15 ++ fopencookie@Base 15 ++ fprintf@Base 15 ++ fputs@Base 15 ++ fread@Base 15 ++ free@Base 15 ++ freopen64@Base 15 ++ freopen@Base 15 ++ frexp@Base 15 ++ frexpf@Base 15 ++ frexpl@Base 15 ++ fscanf@Base 15 ++ fstatfs64@Base 15 ++ fstatfs@Base 15 ++ fstatvfs64@Base 15 ++ fstatvfs@Base 15 ++ ftime@Base 15 ++ fwrite@Base 15 ++ get_current_dir_name@Base 15 ++ getaddrinfo@Base 15 ++ getcwd@Base 15 ++ getdelim@Base 15 ++ getentropy@Base 15 ++ getgrent@Base 15 ++ getgrent_r@Base 15 ++ getgrgid@Base 15 ++ getgrgid_r@Base 15 ++ getgrnam@Base 15 ++ getgrnam_r@Base 15 ++ getgrouplist@Base 15 ++ getgroups@Base 15 ++ gethostbyaddr@Base 15 ++ gethostbyaddr_r@Base 15 ++ gethostbyname2@Base 15 ++ gethostbyname2_r@Base 15 ++ gethostbyname@Base 15 ++ gethostbyname_r@Base 15 ++ gethostent@Base 15 ++ gethostent_r@Base 15 ++ getifaddrs@Base 15 ++ getitimer@Base 15 ++ getline@Base 15 ++ getloadavg@Base 15 ++ getmntent@Base 15 ++ getmntent_r@Base 15 ++ getnameinfo@Base 15 ++ getnetbyaddr@Base 15 ++ getnetbyname@Base 15 ++ getnetent@Base 15 ++ getpass@Base 15 ++ getpeername@Base 15 ++ getprotobyname@Base 15 ++ getprotobyname_r@Base 15 ++ getprotobynumber@Base 15 ++ getprotobynumber_r@Base 15 ++ getprotoent@Base 15 ++ getprotoent_r@Base 15 ++ getpwent@Base 15 ++ getpwent_r@Base 15 ++ getpwnam@Base 15 ++ getpwnam_r@Base 15 ++ getpwuid@Base 15 ++ getpwuid_r@Base 15 ++ getrandom@Base 15 ++ getresgid@Base 15 ++ getresuid@Base 15 ++ getsockname@Base 15 ++ getsockopt@Base 15 ++ getusershell@Base 15 ++ getutent@Base 15 ++ getutid@Base 15 ++ getutline@Base 15 ++ getutxent@Base 15 ++ getutxid@Base 15 ++ getutxline@Base 15 ++ getxattr@Base 15 ++ glob64@Base 15 ++ glob@Base 15 ++ gmtime@Base 15 ++ gmtime_r@Base 15 ++ iconv@Base 15 ++ if_indextoname@Base 15 ++ if_nametoindex@Base 15 ++ index@Base 15 ++ inet_aton@Base 15 ++ inet_ntop@Base 15 ++ inet_pton@Base 15 ++ initgroups@Base 15 ++ ioctl@Base 15 ++ lgamma@Base 15 ++ lgamma_r@Base 15 ++ lgammaf@Base 15 ++ lgammaf_r@Base 15 ++ lgammal@Base 15 ++ lgammal_r@Base 15 ++ lgetxattr@Base 15 ++ listxattr@Base 15 ++ llistxattr@Base 15 ++ localtime@Base 15 ++ localtime_r@Base 15 ++ longjmp@Base 15 ++ lrand48_r@Base 15 ++ lstat64@Base 15 ++ lstat@Base 15 ++ makecontext@Base 15 ++ mallinfo@Base 15 ++ malloc@Base 15 ++ malloc_stats@Base 15 ++ malloc_usable_size@Base 15 ++ mallopt@Base 15 ++ mbsnrtowcs@Base 15 ++ mbsrtowcs@Base 15 ++ mbstowcs@Base 15 ++ mcheck@Base 15 ++ mcheck_pedantic@Base 15 ++ memalign@Base 15 ++ memchr@Base 15 ++ memcmp@Base 15 ++ memcpy@Base 15 ++ memmem@Base 15 ++ memmove@Base 15 ++ memrchr@Base 15 ++ memset@Base 15 ++ mincore@Base 15 ++ mktime@Base 15 ++ mlock@Base 15 ++ mlockall@Base 15 ++ mmap64@Base 15 ++ mmap@Base 15 ++ modf@Base 15 ++ modff@Base 15 ++ modfl@Base 15 ++ mprobe@Base 15 ++ mprotect@Base 15 ++ msgrcv@Base 15 ++ msgsnd@Base 15 ++ munlock@Base 15 ++ munlockall@Base 15 ++ munmap@Base 15 ++ name_to_handle_at@Base 15 ++ open_by_handle_at@Base 15 ++ open_memstream@Base 15 ++ open_wmemstream@Base 15 ++ opendir@Base 15 ++ pclose@Base 15 ++ poll@Base 15 ++ popen@Base 15 ++ posix_memalign@Base 15 ++ posix_spawn@Base 15 ++ posix_spawnp@Base 15 ++ ppoll@Base 15 ++ prctl@Base 15 ++ pread64@Base 15 ++ pread@Base 15 ++ preadv2@Base 15 ++ preadv64@Base 15 ++ preadv@Base 15 ++ printf@Base 15 ++ process_vm_readv@Base 15 ++ process_vm_writev@Base 15 ++ pthread_attr_getaffinity_np@Base 15 ++ pthread_attr_getdetachstate@Base 15 ++ pthread_attr_getguardsize@Base 15 ++ pthread_attr_getinheritsched@Base 15 ++ pthread_attr_getschedparam@Base 15 ++ pthread_attr_getschedpolicy@Base 15 ++ pthread_attr_getscope@Base 15 ++ pthread_attr_getstack@Base 15 ++ pthread_attr_getstacksize@Base 15 ++ pthread_barrierattr_getpshared@Base 15 ++ pthread_condattr_getclock@Base 15 ++ pthread_condattr_getpshared@Base 15 ++ pthread_create@Base 15 ++ pthread_detach@Base 15 ++ pthread_exit@Base 15 ++ pthread_getaffinity_np@Base 15 ++ pthread_getcpuclockid@Base 15 ++ pthread_getname_np@Base 15 ++ pthread_getschedparam@Base 15 ++ pthread_join@Base 15 ++ pthread_mutexattr_getprioceiling@Base 15 ++ pthread_mutexattr_getprotocol@Base 15 ++ pthread_mutexattr_getpshared@Base 15 ++ pthread_mutexattr_getrobust@Base 15 ++ pthread_mutexattr_getrobust_np@Base 15 ++ pthread_mutexattr_gettype@Base 15 ++ pthread_rwlockattr_getkind_np@Base 15 ++ pthread_rwlockattr_getpshared@Base 15 ++ pthread_setcancelstate@Base 15 ++ pthread_setcanceltype@Base 15 ++ pthread_setname_np@Base 15 ++ pthread_sigmask@Base 15 ++ pthread_timedjoin_np@Base 15 ++ pthread_tryjoin_np@Base 15 ++ ptrace@Base 15 ++ ptsname@Base 15 ++ ptsname_r@Base 15 ++ puts@Base 15 ++ pututxline@Base 15 ++ pvalloc@Base 15 ++ pwrite64@Base 15 ++ pwrite@Base 15 ++ pwritev2@Base 15 ++ pwritev64@Base 15 ++ pwritev@Base 15 ++ qsort@Base 15 ++ qsort_r@Base 15 ++ rand_r@Base 15 ++ random_r@Base 15 ++ read@Base 15 ++ readdir64@Base 15 ++ readdir64_r@Base 15 ++ readdir@Base 15 ++ readdir_r@Base 15 ++ readlink@Base 15 ++ readlinkat@Base 15 ++ readv@Base 15 ++ realloc@Base 15 ++ reallocarray@Base 15 ++ realpath@Base 15 ++ recv@Base 15 ++ recvfrom@Base 15 ++ recvmmsg@Base 15 ++ recvmsg@Base 15 ++ regcomp@Base 15 ++ regerror@Base 15 ++ regexec@Base 15 ++ regfree@Base 15 ++ remquo@Base 15 ++ remquof@Base 15 ++ remquol@Base 15 ++ scandir64@Base 15 ++ scandir@Base 15 ++ scanf@Base 15 ++ sched_getaffinity@Base 15 ++ sched_getparam@Base 15 ++ sem_destroy@Base 15 ++ sem_getvalue@Base 15 ++ sem_init@Base 15 ++ sem_open@Base 15 ++ sem_post@Base 15 ++ sem_timedwait@Base 15 ++ sem_trywait@Base 15 ++ sem_unlink@Base 15 ++ sem_wait@Base 15 ++ send@Base 15 ++ sendmmsg@Base 15 ++ sendmsg@Base 15 ++ sendto@Base 15 ++ setbuf@Base 15 ++ setbuffer@Base 15 ++ setgrent@Base 15 ++ setitimer@Base 15 ++ setlinebuf@Base 15 ++ setlocale@Base 15 ++ setpwent@Base 15 ++ setvbuf@Base 15 ++ sigaction@Base 15 ++ sigaltstack@Base 15 ++ sigandset@Base 15 ++ sigemptyset@Base 15 ++ sigfillset@Base 15 ++ siglongjmp@Base 15 ++ signal@Base 15 ++ sigorset@Base 15 ++ sigpending@Base 15 ++ sigprocmask@Base 15 ++ sigtimedwait@Base 15 ++ sigwait@Base 15 ++ sigwaitinfo@Base 15 ++ sincos@Base 15 ++ sincosf@Base 15 ++ sincosl@Base 15 ++ snprintf@Base 15 ++ sprintf@Base 15 ++ sscanf@Base 15 ++ stat64@Base 15 ++ stat@Base 15 ++ statfs64@Base 15 ++ statfs@Base 15 ++ statvfs64@Base 15 ++ statvfs@Base 15 ++ strcasecmp@Base 15 ++ strcasestr@Base 15 ++ strcat@Base 15 ++ strchr@Base 15 ++ strchrnul@Base 15 ++ strcmp@Base 15 ++ strcpy@Base 15 ++ strcspn@Base 15 ++ strdup@Base 15 ++ strerror@Base 15 ++ strerror_r@Base 15 ++ strlen@Base 15 ++ strncasecmp@Base 15 ++ strncat@Base 15 ++ strncmp@Base 15 ++ strncpy@Base 15 ++ strndup@Base 15 ++ strnlen@Base 15 ++ strpbrk@Base 15 ++ strptime@Base 15 ++ strrchr@Base 15 ++ strspn@Base 15 ++ strstr@Base 15 ++ strtoimax@Base 15 ++ strtok@Base 15 ++ strtol@Base 15 ++ strtoll@Base 15 ++ strtoumax@Base 15 ++ strxfrm@Base 15 ++ strxfrm_l@Base 15 ++ swapcontext@Base 15 ++ sysinfo@Base 15 ++ tcgetattr@Base 15 ++ tempnam@Base 15 ++ textdomain@Base 15 ++ time@Base 15 ++ timerfd_gettime@Base 15 ++ timerfd_settime@Base 15 ++ times@Base 15 ++ tmpnam@Base 15 ++ tmpnam_r@Base 15 ++ tsearch@Base 15 ++ ttyname@Base 15 ++ ttyname_r@Base 15 ++ uname@Base 15 ++ valloc@Base 15 ++ vasprintf@Base 15 ++ vfork@Base 15 ++ vfprintf@Base 15 ++ vfscanf@Base 15 ++ vprintf@Base 15 ++ vscanf@Base 15 ++ vsnprintf@Base 15 ++ vsprintf@Base 15 ++ vsscanf@Base 15 ++ wait3@Base 15 ++ wait4@Base 15 ++ wait@Base 15 ++ waitid@Base 15 ++ waitpid@Base 15 ++ wcrtomb@Base 15 ++ wcscat@Base 15 ++ wcsdup@Base 15 ++ wcslen@Base 15 ++ wcsncat@Base 15 ++ wcsnlen@Base 15 ++ wcsnrtombs@Base 15 ++ wcsrtombs@Base 15 ++ wcstombs@Base 15 ++ wcsxfrm@Base 15 ++ wcsxfrm_l@Base 15 ++ wctomb@Base 15 ++ wordexp@Base 15 ++ write@Base 15 ++ writev@Base 15 ++ xdr_bool@Base 15 ++ xdr_bytes@Base 15 ++ xdr_char@Base 15 ++ xdr_destroy@Base 15 ++ xdr_double@Base 15 ++ xdr_enum@Base 15 ++ xdr_float@Base 15 ++ xdr_hyper@Base 15 ++ xdr_int16_t@Base 15 ++ xdr_int32_t@Base 15 ++ xdr_int64_t@Base 15 ++ xdr_int8_t@Base 15 ++ xdr_int@Base 15 ++ xdr_long@Base 15 ++ xdr_longlong_t@Base 15 ++ xdr_quad_t@Base 15 ++ xdr_short@Base 15 ++ xdr_string@Base 15 ++ xdr_u_char@Base 15 ++ xdr_u_hyper@Base 15 ++ xdr_u_int@Base 15 ++ xdr_u_long@Base 15 ++ xdr_u_longlong_t@Base 15 ++ xdr_u_quad_t@Base 15 ++ xdr_u_short@Base 15 ++ xdr_uint16_t@Base 15 ++ xdr_uint32_t@Base 15 ++ xdr_uint64_t@Base 15 ++ xdr_uint8_t@Base 15 ++ xdrmem_create@Base 15 ++ xdrrec_create@Base 15 ++ xdrstdio_create@Base 15 diff --cc debian/locale-gen index 0000000,0000000..f07fa55 new file mode 100755 --- /dev/null +++ b/debian/locale-gen @@@ -1,0 -1,0 +1,51 @@@ ++#!/bin/sh ++ ++# generate locales that the libstdc++ testsuite depends on ++ ++LOCPATH=`pwd`/locales ++export LOCPATH ++ ++[ -d $LOCPATH ] || mkdir -p $LOCPATH ++ ++[ -n "$USE_CPUS" ] || USE_CPUS=1 ++ ++umask 022 ++ ++echo "Generating locales..." ++xargs -L 1 -P $USE_CPUS -I{} \ ++ sh -c ' ++ set {}; locale=$1; charset=$2 ++ case $locale in \#*) exit;; esac ++ [ -n "$locale" -a -n "$charset" ] || exit ++ echo " `echo $locale | sed \"s/\([^.\@]*\).*/\1/\"`.$charset`echo $locale | sed \"s/\([^\@]*\)\(\@.*\)*/\2/\"`..." ++ if [ -f $LOCPATH/$locale ]; then ++ input=$locale ++ else ++ input=`echo $locale | sed "s/\([^.]*\)[^@]*\(.*\)/\1\2/"` ++ fi ++ localedef -i $input -c -f $charset $LOCPATH/$locale #-A /etc/locale.alias ++ ' <&2 "usage: `basename $0` [-p ] [-t ] [-m ]" ++ echo >&2 " " ++ exit 1 ++} ++ ++while [ $# -gt 0 ]; do ++ case $1 in ++ -p) ++ pidfile=$2 ++ shift ++ shift ++ ;; ++ -t) ++ timeout=$2 ++ shift ++ shift ++ ;; ++ -m) ++ message="$2" ++ shift ++ shift ++ ;; ++ -*) ++ usage ++ ;; ++ *) ++ break ++ esac ++done ++ ++[ $# -gt 0 ] || usage ++ ++logfile="$1" ++shift ++builddir="$1" ++shift ++[ $# -eq 0 ] || usage ++ ++cleanup() ++{ ++ rm -f $pidfile ++ exit 0 ++} ++ ++#trap cleanup 0 1 3 15 ++ ++echo $$ > $pidfile ++ ++declare -A stamps ++ ++find_logs() ++{ ++ for f in $(find $builddir -name '*.log' \ ++ ! -name config.log \ ++ ! -path '*/ada/acats?/tests/*.log' \ ++ ! -path '*/libbacktrace/*.log') ++ do ++ if [ ! -v stamps[$f] ]; then ++ stamps[$f]=$(date -u -r $f '+%s') ++ fi ++ done ++} ++ ++# wait for test startups ++sleep 30 ++find_logs ++ ++# activity in the main log file ++sleep 10 ++st_logfile=$(date -u -r $logfile '+%s') ++ ++sleep 10 ++ ++while true; do ++ find_logs ++ sleep 10 ++ stamp=$(date -u -r $logfile '+%s') ++ if [ $stamp -gt $st_logfile ]; then ++ # there is still action in the primary logfile. do nothing. ++ st_logfile=$stamp ++ else ++ activity=0 ++ for log in "${!stamps[@]}"; do ++ [ -f $log ] || continue ++ stamp=$(date -u -r $log '+%s') ++ if [ $stamp -gt ${stamps[$log]} ]; then ++ if [ $activity -eq 0 ]; then ++ echo ++ fi ++ echo "[$(date -u -r $log '+%T')] $log: $message" ++ tail -3 $log ++ activity=$(expr $activity + 1) ++ stamps[$log]=$stamp ++ fi ++ done ++ if [ $activity -gt 0 ]; then ++ # already emitted messages above ++ echo ++ else ++ # nothing changed in the other log files. maybe a timeout ... ++ : ++ fi ++ fi ++ sleep $timeout ++done ++ ++exit 0 diff --cc debian/patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff index 0000000,0000000..e886a14 new file mode 100644 --- /dev/null +++ b/debian/patches/0001-Ada-merge-all-timeval-and-timespec-definitions-and-c.diff @@@ -1,0 -1,0 +1,1681 @@@ ++PR ada/114065, patches v15 ++ ++In the hope to reduce the rebasing work, ++when a whole file can be kept unchanged in Debian, ++ * files specific to other systems can remain broken ++ * cal.c can remain, it is disabled in Makefile.rtl ++ * declarations of obsolete but unused time types or constants ++the changes affecting it are removed from this patch. ++ ++--- a/src/gcc/ada/Makefile.rtl +++++ b/src/gcc/ada/Makefile.rtl ++@@ -760,6 +760,7 @@ GNATRTL_NONTASKING_OBJS= \ ++ s-string$(objext) \ ++ s-ststop$(objext) \ ++ s-tasloc$(objext) \ +++ s-c_time$(objext) \ ++ s-traceb$(objext) \ ++ s-traent$(objext) \ ++ s-trasym$(objext) \ ++@@ -1422,7 +1423,6 @@ ifeq ($(strip $(filter-out arm% aarch64 ++ a-intnam.ads Clock_Id, tp => TS'Unchecked_Access); ++ pragma Assert (Result = 0); ++ ++- return To_CPU_Time (To_Duration (TS)); +++ return To_CPU_Time (System.C_Time.To_Duration (TS)); ++ end Clock; ++ ++ -------------------------- ++--- a/src/gcc/ada/libgnarl/s-osinte__gnu.adb +++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.adb ++@@ -93,15 +93,6 @@ package body System.OS_Interface is ++ return 0; ++ end pthread_setschedparam; ++ ++- ----------------- ++- -- To_Duration -- ++- ----------------- ++- ++- function To_Duration (TS : timespec) return Duration is ++- begin ++- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; ++- end To_Duration; ++- ++ ------------------------ ++ -- To_Target_Priority -- ++ ------------------------ ++@@ -113,28 +104,4 @@ package body System.OS_Interface is ++ return Interfaces.C.int (Prio); ++ end To_Target_Priority; ++ ++- ----------------- ++- -- To_Timespec -- ++- ----------------- ++- ++- function To_Timespec (D : Duration) return timespec is ++- S : time_t; ++- F : Duration; ++- ++- begin ++- S := time_t (Long_Long_Integer (D)); ++- F := D - Duration (S); ++- ++- -- If F has negative value due to a round-up, adjust for positive F ++- -- value. ++- ++- if F < 0.0 then ++- S := S - 1; ++- F := F + 1.0; ++- end if; ++- ++- return timespec'(tv_sec => S, ++- tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); ++- end To_Timespec; ++- ++ end System.OS_Interface; ++--- a/src/gcc/ada/libgnarl/s-osinte__gnu.ads +++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.ads ++@@ -42,8 +42,8 @@ with Ada.Unchecked_Conversion; ++ ++ with Interfaces.C; ++ +++with System.C_Time; ++ with System.OS_Locks; ++-with System.Parameters; ++ ++ package System.OS_Interface is ++ pragma Preelaborate; ++@@ -210,9 +210,7 @@ package System.OS_Interface is ++ Time_Slice_Supported : constant Boolean := True; ++ -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) ++ ++- type timespec is private; ++- ++- function nanosleep (rqtp, rmtp : access timespec) return int; +++ function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; ++ pragma Import (C, nanosleep, "nanosleep"); ++ ++ type clockid_t is new int; ++@@ -221,21 +219,15 @@ package System.OS_Interface is ++ -- From: /usr/include/time.h ++ function clock_gettime ++ (clock_id : clockid_t; ++- tp : access timespec) +++ tp : access C_Time.timespec) ++ return int; ++ pragma Import (C, clock_gettime, "clock_gettime"); ++ ++ function clock_getres ++ (clock_id : clockid_t; ++- res : access timespec) return int; +++ res : access C_Time.timespec) return int; ++ pragma Import (C, clock_getres, "clock_getres"); ++ ++- function To_Duration (TS : timespec) return Duration; ++- pragma Inline (To_Duration); ++- ++- function To_Timespec (D : Duration) return timespec; ++- pragma Inline (To_Timespec); ++- ++ -- From: /usr/include/unistd.h ++ function sysconf (name : int) return long; ++ pragma Import (C, sysconf); ++@@ -487,7 +479,7 @@ package System.OS_Interface is ++ function pthread_cond_timedwait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++- abstime : access timespec) return int; +++ abstime : access C_Time.timespec) return int; ++ pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ ++ Relative_Timed_Wait : constant Boolean := False; ++@@ -656,15 +648,6 @@ private ++ ++ type pid_t is new int; ++ ++- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) ++- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; ++- ++- type timespec is record ++- tv_sec : time_t; ++- tv_nsec : long; ++- end record; ++- pragma Convention (C, timespec); ++- ++ -- From: /usr/include/pthread/pthreadtypes.h: ++ -- typedef struct __pthread_attr pthread_attr_t; ++ -- /usr/include/i386-gnu/bits/thread-attr.h: struct __pthread_attr... ++--- a/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +++++ b/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads ++@@ -42,8 +42,8 @@ with Ada.Unchecked_Conversion; ++ ++ with Interfaces.C; ++ +++with System.C_Time; ++ with System.OS_Locks; ++-with System.Parameters; ++ ++ package System.OS_Interface is ++ pragma Preelaborate; ++@@ -205,9 +205,7 @@ package System.OS_Interface is ++ Time_Slice_Supported : constant Boolean := True; ++ -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) ++ ++- type timespec is private; ++- ++- function nanosleep (rqtp, rmtp : access timespec) return int; +++ function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; ++ pragma Import (C, nanosleep, "nanosleep"); ++ ++ type clockid_t is new int; ++@@ -215,21 +213,15 @@ package System.OS_Interface is ++ ++ function clock_gettime ++ (clock_id : clockid_t; ++- tp : access timespec) +++ tp : access C_Time.timespec) ++ return int; ++ pragma Import (C, clock_gettime, "clock_gettime"); ++ ++ function clock_getres ++ (clock_id : clockid_t; ++- res : access timespec) return int; +++ res : access C_Time.timespec) return int; ++ pragma Import (C, clock_getres, "clock_getres"); ++ ++- function To_Duration (TS : timespec) return Duration; ++- pragma Inline (To_Duration); ++- ++- function To_Timespec (D : Duration) return timespec; ++- pragma Inline (To_Timespec); ++- ++ function sysconf (name : int) return long; ++ pragma Import (C, sysconf); ++ ++@@ -430,7 +422,7 @@ package System.OS_Interface is ++ function pthread_cond_timedwait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++- abstime : access timespec) return int; +++ abstime : access C_Time.timespec) return int; ++ pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ ++ -------------------------- ++@@ -602,15 +594,6 @@ private ++ ++ type pid_t is new int; ++ ++- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) ++- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; ++- ++- type timespec is record ++- tv_sec : time_t; ++- tv_nsec : long; ++- end record; ++- pragma Convention (C, timespec); ++- ++ type pthread_attr_t is record ++ detachstate : int; ++ schedpolicy : int; ++--- a/src/gcc/ada/libgnarl/s-osinte__linux.ads +++++ b/src/gcc/ada/libgnarl/s-osinte__linux.ads ++@@ -42,6 +42,7 @@ with Ada.Unchecked_Conversion; ++ ++ with Interfaces.C; ++ +++with System.C_Time; ++ with System.Linux; ++ with System.OS_Constants; ++ with System.OS_Locks; ++@@ -54,8 +55,6 @@ package System.OS_Interface is ++ ++ pragma Linker_Options ("-lpthread"); ++ ++- use type System.Linux.time_t; ++- ++ subtype int is Interfaces.C.int; ++ subtype char is Interfaces.C.char; ++ subtype short is Interfaces.C.short; ++@@ -229,26 +228,17 @@ package System.OS_Interface is ++ -- Time -- ++ ---------- ++ ++- subtype time_t is System.Linux.time_t; ++- subtype timespec is System.Linux.timespec; ++- subtype timeval is System.Linux.timeval; ++ subtype clockid_t is System.Linux.clockid_t; ++ ++ function clock_gettime ++- (clock_id : clockid_t; tp : access timespec) return int; +++ (clock_id : clockid_t; tp : access C_Time.timespec) return int; ++ pragma Import (C, clock_gettime, "clock_gettime"); ++ ++ function clock_getres ++ (clock_id : clockid_t; ++- res : access timespec) return int; +++ res : access C_Time.timespec) return int; ++ pragma Import (C, clock_getres, "clock_getres"); ++ ++- function To_Duration (TS : timespec) return Duration; ++- pragma Inline (To_Duration); ++- ++- function To_Timespec (D : Duration) return timespec; ++- pragma Inline (To_Timespec); ++- ++ function sysconf (name : int) return long; ++ pragma Import (C, sysconf); ++ ++@@ -457,7 +447,7 @@ package System.OS_Interface is ++ function pthread_cond_timedwait ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++- abstime : access timespec) return int; +++ abstime : access C_Time.timespec) return int; ++ pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); ++ ++ -------------------------- ++--- a/src/gcc/ada/libgnarl/s-osinte__posix.adb +++++ b/src/gcc/ada/libgnarl/s-osinte__posix.adb ++@@ -58,15 +58,6 @@ package body System.OS_Interface is ++ null; ++ end pthread_init; ++ ++- ----------------- ++- -- To_Duration -- ++- ----------------- ++- ++- function To_Duration (TS : timespec) return Duration is ++- begin ++- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; ++- end To_Duration; ++- ++ ------------------------ ++ -- To_Target_Priority -- ++ ------------------------ ++@@ -78,28 +69,4 @@ package body System.OS_Interface is ++ return Interfaces.C.int (Prio); ++ end To_Target_Priority; ++ ++- ----------------- ++- -- To_Timespec -- ++- ----------------- ++- ++- function To_Timespec (D : Duration) return timespec is ++- S : time_t; ++- F : Duration; ++- ++- begin ++- S := time_t (Long_Long_Integer (D)); ++- F := D - Duration (S); ++- ++- -- If F has negative value due to a round-up, adjust for positive F ++- -- value. ++- ++- if F < 0.0 then ++- S := S - 1; ++- F := F + 1.0; ++- end if; ++- ++- return timespec'(tv_sec => S, ++- tv_nsec => long (Long_Long_Integer (F * 10#1#E9))); ++- end To_Timespec; ++- ++ end System.OS_Interface; ++--- a/src/gcc/ada/libgnarl/s-osinte__x32.adb +++++ b/src/gcc/ada/libgnarl/s-osinte__x32.adb ++@@ -59,15 +59,6 @@ package body System.OS_Interface is ++ null; ++ end pthread_init; ++ ++- ----------------- ++- -- To_Duration -- ++- ----------------- ++- ++- function To_Duration (TS : timespec) return Duration is ++- begin ++- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; ++- end To_Duration; ++- ++ ------------------------ ++ -- To_Target_Priority -- ++ ------------------------ ++@@ -79,28 +70,4 @@ package body System.OS_Interface is ++ return Interfaces.C.int (Prio); ++ end To_Target_Priority; ++ ++- ----------------- ++- -- To_Timespec -- ++- ----------------- ++- ++- function To_Timespec (D : Duration) return timespec is ++- S : time_t; ++- F : Duration; ++- ++- begin ++- S := time_t (Long_Long_Integer (D)); ++- F := D - Duration (S); ++- ++- -- If F has negative value due to a round-up, adjust for positive F ++- -- value. ++- ++- if F < 0.0 then ++- S := S - 1; ++- F := F + 1.0; ++- end if; ++- ++- return timespec'(tv_sec => S, ++- tv_nsec => Long_Long_Integer (F * 10#1#E9)); ++- end To_Timespec; ++- ++ end System.OS_Interface; ++--- a/src/gcc/ada/libgnarl/s-tpopmo.adb +++++ b/src/gcc/ada/libgnarl/s-tpopmo.adb ++@@ -31,6 +31,8 @@ ++ ++ -- This is the Monotonic version of this package for Posix and Linux targets. ++ +++with System.C_Time; +++ ++ separate (System.Task_Primitives.Operations) ++ package body Monotonic is ++ ++@@ -54,14 +56,14 @@ package body Monotonic is ++ --------------------- ++ ++ function Monotonic_Clock return Duration is ++- TS : aliased timespec; +++ TS : aliased C_Time.timespec; ++ Result : Interfaces.C.int; ++ begin ++ Result := clock_gettime ++ (clock_id => OSC.CLOCK_RT_Ada, tp => TS'Unchecked_Access); ++ pragma Assert (Result = 0); ++ ++- return To_Duration (TS); +++ return C_Time.To_Duration (TS); ++ end Monotonic_Clock; ++ ++ ------------------- ++@@ -69,14 +71,14 @@ package body Monotonic is ++ ------------------- ++ ++ function RT_Resolution return Duration is ++- TS : aliased timespec; +++ TS : aliased C_Time.timespec; ++ Result : Interfaces.C.int; ++ ++ begin ++ Result := clock_getres (OSC.CLOCK_REALTIME, TS'Unchecked_Access); ++ pragma Assert (Result = 0); ++ ++- return To_Duration (TS); +++ return C_Time.To_Duration (TS); ++ end RT_Resolution; ++ ++ ---------------------- ++@@ -150,7 +152,7 @@ package body Monotonic is ++ Abs_Time : Duration; ++ P_Abs_Time : Duration; ++ ++- Request : aliased timespec; +++ Request : aliased C_Time.timespec; ++ Result : Interfaces.C.int; ++ Exit_Outer : Boolean := False; ++ ++@@ -184,7 +186,7 @@ package body Monotonic is ++ end if; ++ pragma Warnings (On); ++ ++- Request := To_Timespec (P_Abs_Time); +++ Request := C_Time.To_Timespec (P_Abs_Time); ++ ++ Inner : loop ++ exit Outer ++@@ -236,7 +238,7 @@ package body Monotonic is ++ Check_Time : Duration; ++ Abs_Time : Duration; ++ P_Abs_Time : Duration; ++- Request : aliased timespec; +++ Request : aliased C_Time.timespec; ++ ++ Result : Interfaces.C.int; ++ Exit_Outer : Boolean := False; ++@@ -271,7 +273,7 @@ package body Monotonic is ++ end if; ++ pragma Warnings (On); ++ ++- Request := To_Timespec (P_Abs_Time); +++ Request := C_Time.To_Timespec (P_Abs_Time); ++ ++ Inner : loop ++ exit Outer ++--- a/src/gcc/ada/libgnat/g-calend.adb +++++ b/src/gcc/ada/libgnat/g-calend.adb ++@@ -29,11 +29,8 @@ ++ -- -- ++ ------------------------------------------------------------------------------ ++ ++-with Interfaces.C.Extensions; ++- ++ package body GNAT.Calendar is ++ use Ada.Calendar; ++- use Interfaces; ++ ++ ----------------- ++ -- Day_In_Year -- ++@@ -328,61 +325,6 @@ package body GNAT.Calendar is ++ Time_Zone => 0); ++ end Time_Of_At_Locale; ++ ++- ----------------- ++- -- To_Duration -- ++- ----------------- ++- ++- function To_Duration (T : not null access timeval) return Duration is ++- ++- procedure timeval_to_duration ++- (T : not null access timeval; ++- sec : not null access C.Extensions.long_long; ++- usec : not null access C.long); ++- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); ++- ++- Micro : constant := 10**6; ++- sec : aliased C.Extensions.long_long; ++- usec : aliased C.long; ++- ++- begin ++- timeval_to_duration (T, sec'Access, usec'Access); ++- pragma Annotate (CodePeer, Modified, sec); ++- pragma Annotate (CodePeer, Modified, usec); ++- ++- return Duration (sec) + Duration (usec) / Micro; ++- end To_Duration; ++- ++- ---------------- ++- -- To_Timeval -- ++- ---------------- ++- ++- function To_Timeval (D : Duration) return timeval is ++- ++- procedure duration_to_timeval ++- (Sec : C.Extensions.long_long; ++- Usec : C.long; ++- T : not null access timeval); ++- pragma Import (C, duration_to_timeval, "__gnat_duration_to_timeval"); ++- ++- Micro : constant := 10**6; ++- Result : aliased timeval; ++- sec : C.Extensions.long_long; ++- usec : C.long; ++- ++- begin ++- if D = 0.0 then ++- sec := 0; ++- usec := 0; ++- else ++- sec := C.Extensions.long_long (D - 0.5); ++- usec := C.long ((D - Duration (sec)) * Micro - 0.5); ++- end if; ++- ++- duration_to_timeval (sec, usec, Result'Access); ++- ++- return Result; ++- end To_Timeval; ++- ++ ------------------ ++ -- Week_In_Year -- ++ ------------------ ++--- a/src/gcc/ada/libgnat/g-calend.ads +++++ b/src/gcc/ada/libgnat/g-calend.ads ++@@ -40,7 +40,7 @@ ++ -- Day_Of_Week, Day_In_Year and Week_In_Year. ++ ++ with Ada.Calendar.Formatting; ++-with Interfaces.C; +++with System.C_Time; ++ ++ package GNAT.Calendar is ++ ++@@ -145,24 +145,19 @@ package GNAT.Calendar is ++ -- Return the week number as defined in ISO 8601 along with the year in ++ -- which the week occurs. ++ ++- -- C timeval conversion +++ subtype timeval is System.C_Time.timeval; +++ -- Deprecated. Please use C_Time directly. ++ ++- -- C timeval represent a duration (used in Select for example). This ++- -- structure is composed of a number of seconds and a number of micro ++- -- seconds. The timeval structure is not exposed here because its ++- -- definition is target dependent. Interface to C programs is done via a ++- -- pointer to timeval structure. ++- ++- type timeval is private; ++- ++- function To_Duration (T : not null access timeval) return Duration; ++- function To_Timeval (D : Duration) return timeval; +++ function To_Duration (T : not null access timeval) +++ return System.C_Time.Non_Negative_Duration +++ is (System.C_Time.To_Duration (T.all)); +++ -- Deprecated. Please use C_Time directly. +++ +++ function To_Timeval (D : System.C_Time.Non_Negative_Duration) return timeval +++ renames System.C_Time.To_Timeval; +++ -- Deprecated. Please use C_Time directly. ++ ++ private ++- -- This is a dummy declaration that should be the largest possible timeval ++- -- structure of all supported targets. ++- ++- type timeval is array (1 .. 3) of Interfaces.C.long; ++ ++ function Julian_Day ++ (Year : Ada.Calendar.Year_Number; ++--- a/src/gcc/ada/libgnat/g-socket.adb +++++ b/src/gcc/ada/libgnat/g-socket.adb ++@@ -45,6 +45,7 @@ pragma Warnings (Off, GNAT.Sockets.Linke ++ with GNAT.Sockets.Poll; ++ ++ with System; use System; +++with System.C_Time; ++ with System.Communication; use System.Communication; ++ with System.CRTL; use System.CRTL; ++ with System.Task_Lock; ++@@ -179,13 +180,6 @@ package body GNAT.Sockets is ++ function Value (S : System.Address) return String; ++ -- Same as Interfaces.C.Strings.Value but taking a System.Address ++ ++- function To_Timeval (Val : Timeval_Duration) return Timeval; ++- -- Separate Val in seconds and microseconds ++- ++- function To_Duration (Val : Timeval) return Timeval_Duration; ++- -- Reconstruct a Duration value from a Timeval record (seconds and ++- -- microseconds). ++- ++ function Dedot (Value : String) return String ++ is (if Value /= "" and then Value (Value'Last) = '.' ++ then Value (Value'First .. Value'Last - 1) ++@@ -528,7 +522,7 @@ package body GNAT.Sockets is ++ Res : C.int; ++ Last : C.int; ++ RSig : Socket_Type := No_Socket; ++- TVal : aliased Timeval; +++ TVal : aliased System.C_Time.timeval; ++ TPtr : Timeval_Access; ++ ++ begin ++@@ -543,7 +537,7 @@ package body GNAT.Sockets is ++ if Timeout = Forever then ++ TPtr := null; ++ else ++- TVal := To_Timeval (Timeout); +++ TVal := System.C_Time.To_Timeval (Timeout); ++ TPtr := TVal'Unchecked_Access; ++ end if; ++ ++@@ -1423,7 +1417,7 @@ package body GNAT.Sockets is ++ U4 : aliased C.unsigned; ++ V1 : aliased C.unsigned_char; ++ VS : aliased C.char_array (1 .. NS); -- for devices name ++- VT : aliased Timeval; +++ VT : aliased System.C_Time.timeval; ++ Len : aliased C.int; ++ Add : System.Address; ++ Res : C.int; ++@@ -1596,8 +1590,10 @@ package body GNAT.Sockets is ++ Opt.Timeout := Duration (U4) / 1000; ++ end if; ++ +++ elsif System.C_Time.In_Duration (VT) then +++ Opt.Timeout := System.C_Time.To_Duration (VT); ++ else ++- Opt.Timeout := To_Duration (VT); +++ Opt.Timeout := Forever; ++ end if; ++ ++ when Bind_To_Device => ++@@ -2633,7 +2629,7 @@ package body GNAT.Sockets is ++ (1 .. (if Option.Name = Bind_To_Device ++ then C.size_t (ASU.Length (Option.Device) + 1) ++ else 0)); ++- VT : aliased Timeval; +++ VT : aliased System.C_Time.timeval; ++ Len : C.int; ++ Add : System.Address := Null_Address; ++ Res : C.int; ++@@ -2767,7 +2763,7 @@ package body GNAT.Sockets is ++ end if; ++ ++ else ++- VT := To_Timeval (Option.Timeout); +++ VT := System.C_Time.To_Timeval (Option.Timeout); ++ Len := VT'Size / 8; ++ Add := VT'Address; ++ end if; ++@@ -2865,33 +2861,6 @@ package body GNAT.Sockets is ++ return Integer (Socket); ++ end To_C; ++ ++- ----------------- ++- -- To_Duration -- ++- ----------------- ++- ++- function To_Duration (Val : Timeval) return Timeval_Duration is ++- Max_D : constant Long_Long_Integer := Long_Long_Integer (Forever - 0.5); ++- Tv_sec_64 : constant Boolean := SOSC.SIZEOF_tv_sec = 8; ++- -- Need to separate this condition into the constant declaration to ++- -- avoid GNAT warning about "always true" or "always false". ++- begin ++- if Tv_sec_64 then ++- -- Check for possible Duration overflow when Tv_Sec field is 64 bit ++- -- integer. ++- ++- if Val.Tv_Sec > time_t (Max_D) ++- or else ++- (Val.Tv_Sec = time_t (Max_D) ++- and then ++- Val.Tv_Usec > suseconds_t ((Forever - Duration (Max_D)) * 1E6)) ++- then ++- return Forever; ++- end if; ++- end if; ++- ++- return Duration (Val.Tv_Sec) + Duration (Val.Tv_Usec) * 1.0E-6; ++- end To_Duration; ++- ++ ------------------- ++ -- To_Host_Entry -- ++ ------------------- ++@@ -3041,36 +3010,6 @@ package body GNAT.Sockets is ++ return HN.Name (1 .. HN.Length); ++ end To_String; ++ ++- ---------------- ++- -- To_Timeval -- ++- ---------------- ++- ++- function To_Timeval (Val : Timeval_Duration) return Timeval is ++- S : time_t; ++- uS : suseconds_t; ++- ++- begin ++- -- If zero, set result as zero (otherwise it gets rounded down to -1) ++- ++- if Val = 0.0 then ++- S := 0; ++- uS := 0; ++- ++- -- Normal case where we do round down ++- ++- else ++- S := time_t (Val - 0.5); ++- uS := suseconds_t (1_000_000 * (Val - Selector_Duration (S)) - 0.5); ++- ++- if uS = -1 then ++- -- It happen on integer duration ++- uS := 0; ++- end if; ++- end if; ++- ++- return (S, uS); ++- end To_Timeval; ++- ++ ----------- ++ -- Value -- ++ ----------- ++--- a/src/gcc/ada/libgnat/g-socthi.adb +++++ b/src/gcc/ada/libgnat/g-socthi.adb ++@@ -40,6 +40,8 @@ with GNAT.Task_Lock; ++ ++ with Interfaces.C; use Interfaces.C; ++ +++with System.C_Time; +++ ++ package body GNAT.Sockets.Thin is ++ ++ Non_Blocking_Sockets : aliased Fd_Set; ++@@ -215,7 +217,7 @@ package body GNAT.Sockets.Thin is ++ declare -- unreachable if Thread_Blocking_IO is statically True ++ pragma Warnings (On, "unreachable code"); ++ WSet : aliased Fd_Set; ++- Now : aliased Timeval; +++ Now : aliased System.C_Time.timeval; ++ ++ begin ++ Reset_Socket_Set (WSet'Access); ++--- a/src/gcc/ada/libgnat/g-sothco.ads +++++ b/src/gcc/ada/libgnat/g-sothco.ads ++@@ -34,7 +34,7 @@ ++ ++ with Ada.Unchecked_Conversion; ++ with Interfaces.C.Strings; ++-with System.Parameters; +++with System.C_Time; ++ ++ package GNAT.Sockets.Thin_Common is ++ ++@@ -44,31 +44,13 @@ package GNAT.Sockets.Thin_Common is ++ Success : constant C.int := 0; ++ Failure : constant C.int := -1; ++ ++- type time_t is ++- range -2 ** (System.Parameters.time_t_bits - 1) ++- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; ++- for time_t'Size use System.Parameters.time_t_bits; ++- pragma Convention (C, time_t); ++- ++- type suseconds_t is ++- range -2 ** (8 * SOSC.SIZEOF_tv_usec - 1) ++- .. 2 ** (8 * SOSC.SIZEOF_tv_usec - 1) - 1; ++- for suseconds_t'Size use 8 * SOSC.SIZEOF_tv_usec; ++- pragma Convention (C, suseconds_t); ++- ++- type Timeval is record ++- Tv_Sec : time_t; ++- Tv_Usec : suseconds_t; ++- end record; ++- pragma Convention (C, Timeval); ++- ++- type Timeval_Access is access all Timeval; +++ type Timeval_Access is access all System.C_Time.timeval; ++ pragma Convention (C, Timeval_Access); ++ ++ type socklen_t is mod 2 ** (8 * SOSC.SIZEOF_socklen_t); ++ for socklen_t'Size use (8 * SOSC.SIZEOF_socklen_t); ++ ++- Immediat : constant Timeval := (0, 0); +++ Immediat : System.C_Time.timeval renames System.C_Time.Timeval_Zero; ++ ++ ------------------------------------------- ++ -- Mapping tables to low level constants -- ++--- a/src/gcc/ada/libgnat/g-spogwa.adb +++++ b/src/gcc/ada/libgnat/g-spogwa.adb ++@@ -29,7 +29,7 @@ ++ -- -- ++ ------------------------------------------------------------------------------ ++ ++-with GNAT.Sockets.Thin_Common; +++with System.C_Time; ++ ++ procedure GNAT.Sockets.Poll.G_Wait ++ (Fds : in out Set; Timeout : Interfaces.C.int; Result : out Integer) ++@@ -41,11 +41,11 @@ is ++ readfds : access FD_Set_Type; ++ writefds : access FD_Set_Type; ++ exceptfds : access FD_Set_Type; ++- timeout : access Thin_Common.Timeval) return Integer +++ timeout : access System.C_Time.timeval) return Integer ++ with Import => True, Convention => Stdcall, External_Name => "select"; ++ ++- Timeout_V : aliased Thin_Common.Timeval; ++- Timeout_A : access Thin_Common.Timeval; +++ Timeout_V : aliased System.C_Time.timeval; +++ Timeout_A : access System.C_Time.timeval; ++ ++ Rfds : aliased FD_Set_Type; ++ Rcount : Natural := 0; ++@@ -63,8 +63,7 @@ begin ++ ++ if Timeout >= 0 then ++ Timeout_A := Timeout_V'Access; ++- Timeout_V.Tv_Sec := Thin_Common.time_t (Timeout / 1000); ++- Timeout_V.Tv_Usec := Thin_Common.suseconds_t (Timeout rem 1000 * 1000); +++ Timeout_V := System.C_Time.Milliseconds_To_Timeval (Timeout); ++ end if; ++ ++ Reset_Socket_Set (Rfds); ++--- /dev/null +++++ b/src/gcc/ada/libgnat/s-c_time.adb ++@@ -0,0 +1,248 @@ +++------------------------------------------------------------------------------ +++-- -- +++-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- +++-- -- +++-- S Y S T E M . C _ T I M E -- +++-- -- +++-- B o d y -- +++-- -- +++-- Copyright (C) 1998-2025, Free Software Foundation, Inc. -- +++-- -- +++-- GNARL is free software; you can redistribute it and/or modify it under -- +++-- terms of the GNU General Public License as published by the Free Soft- -- +++-- ware Foundation; either version 3, or (at your option) any later ver- -- +++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +++-- or FITNESS FOR A PARTICULAR PURPOSE. -- +++-- -- +++-- As a special exception under Section 7 of GPL version 3, you are granted -- +++-- additional permissions described in the GCC Runtime Library Exception, -- +++-- version 3.1, as published by the Free Software Foundation. -- +++-- -- +++-- You should have received a copy of the GNU General Public License and -- +++-- a copy of the GCC Runtime Library Exception along with this program; -- +++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- +++-- . -- +++-- -- +++-- GNARL was developed by the GNARL team at Florida State University. -- +++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- +++-- -- +++------------------------------------------------------------------------------ +++ +++package body System.C_Time is +++ +++ -- Two Duration representations are described in targparm.ads. +++ -- Size Delta Last = (2**(Size - 1) - 1) * Delta +++ -- 32 0.02 42_949_672.94 +++ -- 64 0.000_000_001 9_223_372_036.854_775_807 +++ +++ -- The overflows listed in comments must raise Constraint_Error. +++ pragma Unsuppress (Overflow_Check); +++ +++ ----------------- +++ -- In_Duration -- +++ ----------------- +++ +++ function In_Duration (T : timeval) return Boolean is +++ +++ -- Mimic To_Timeval (Duration'Last), except that +++ -- * this computation happens at compile time +++ -- * Sec may be far above MAX_tv_sec +++ -- * on 64 bits, Usec is truncated instead of rounded up +++ Sec : constant := (if Duration'Size = 64 +++ then (2**63 - 1) / 1_000_000_000 +++ else (2**31 - 1) / 50); +++ Usec : constant := (if Duration'Size = 64 +++ then (2**63 - 1) mod 1_000_000_000 / 1_000 +++ else (2**31 - 1) mod 50 * 20_000); +++ +++ pragma Warnings (Off, "condition is always"); +++ Dur_Covers_Tv_Sec : constant Boolean := OS_Constants.MAX_tv_sec < Sec; +++ pragma Warnings (On, "condition is always"); +++ +++ -- When Duration'Size = 64 and time_t'Size = 32, the compiler +++ -- complains that Sec does not fit in time_t, hence cannot be +++ -- compared with T.tv_sec. But then Dur_Covers_Tv_Sec is True +++ -- and the following comparisons are skipped. +++ Maybe_Sec : constant := (if Dur_Covers_Tv_Sec then 1 else Sec); +++ begin +++ return Dur_Covers_Tv_Sec +++ or else T.tv_sec < Maybe_Sec +++ or else (T.tv_sec = Maybe_Sec and then T.tv_usec <= Usec); +++ end In_Duration; +++ +++ ----------------------------- +++ -- Milliseconds_To_Timeval -- +++ ----------------------------- +++ +++ function Milliseconds_To_Timeval (M : Non_Negative_Int) return timeval is +++ use Interfaces.C; +++ Q : constant int range 0 .. int'Last / 1_000 := M / 1_000; +++ R : constant int range 0 .. 999 := M mod 1_000; +++ begin +++ return (tv_sec => time_t (Q), +++ tv_usec => 1_000 * usec_t (R)); +++ end Milliseconds_To_Timeval; +++ +++ ----------------------------- +++ -- Nanoseconds_To_Timespec -- +++ ----------------------------- +++ +++ function Nanoseconds_To_Timespec (N : Non_Negative_Int) return timespec is +++ use Interfaces.C; +++ Q : constant int range 0 .. int'Last / 10**9 := N / 10**9; +++ R : constant int range 0 .. 999_999_999 := N mod 10**9; +++ begin +++ return (tv_sec => time_t (Q), +++ tv_nsec => nsec_t (R)); +++ end Nanoseconds_To_Timespec; +++ +++ ----------------- +++ -- To_Duration -- +++ ----------------- +++ +++ function To_Duration (T : timeval) return Non_Negative_Duration is +++ Usec : usec_t range 0 .. 1_009_999; +++ Frac : Duration range 0.0 .. 1.0; +++ begin +++ if Duration'Size = 64 then +++ Usec := T.tv_usec; +++ else +++ -- Fix the rounding (999_999.0 / 1_000_000 = 0.98) +++ -- with a bias of half Duration'Small = 10 ms. +++ Usec := T.tv_usec + 10_000; +++ end if; +++ Frac := Duration (Usec) / 1_000_000; +++ +++ return Duration (T.tv_sec) + Frac; +++ -- Both the conversion and the addition may overflow. +++ end To_Duration; +++ +++ function To_Duration (T : timespec) return Non_Negative_Duration is +++ Frac : Duration range 0.0 .. 1.0; +++ begin +++ if Duration'Size = 64 then +++ Frac := Duration (T.tv_nsec) / 1_000_000_000; +++ else +++ -- Avoid an overflow (Duration'Last < 999_999_999). +++ -- Fix the rounding (999_999_999.0 / 1_000_000_000 = 0.98) +++ -- with a bias of half Duration'Small = 10 ms. +++ Frac := Duration (T.tv_nsec / 10_000_000 + 1) / 100; +++ end if; +++ +++ return Duration (T.tv_sec) + Frac; +++ -- Both the conversion and the addition may overflow. +++ end To_Duration; +++ +++ function To_Duration (tv_sec : Tv_Sec_Long; +++ tv_nsec : Tv_Nsec_Long) +++ return Non_Negative_Duration is +++ begin +++ return To_Duration (timespec'(tv_sec => time_t (tv_sec), +++ tv_nsec => nsec_t (tv_nsec))); +++ end To_Duration; +++ +++ function To_Duration (tv_sec : Tv_Sec_Long_Long; +++ tv_nsec : Tv_Nsec_Long) +++ return Non_Negative_Duration is +++ begin +++ return To_Duration (timespec'(tv_sec => time_t (tv_sec), +++ tv_nsec => nsec_t (tv_nsec))); +++ end To_Duration; +++ +++ ------------------------ +++ -- To_Struct_Timespec -- +++ ------------------------ +++ +++ procedure To_Struct_Timespec (D : Non_Negative_Duration; +++ tv_sec : out Tv_Sec_Long; +++ tv_nsec : out Tv_Nsec_Long) is +++ T : constant timespec := To_Timespec (D); +++ begin +++ tv_sec := Tv_Sec_Long (T.tv_sec); -- May overflow Interfaces.C.long. +++ tv_nsec := Tv_Nsec_Long (T.tv_nsec); +++ end To_Struct_Timespec; +++ +++ procedure To_Struct_Timespec (D : Non_Negative_Duration; +++ tv_sec : out Tv_Sec_Long_Long; +++ tv_nsec : out Tv_Nsec_Long) is +++ T : constant timespec := To_Timespec (D); +++ begin +++ tv_sec := Tv_Sec_Long_Long (T.tv_sec); +++ tv_nsec := Tv_Nsec_Long (T.tv_nsec); +++ end To_Struct_Timespec; +++ +++ ----------------- +++ -- To_Timespec -- +++ ----------------- +++ +++ function To_Timespec (T : timeval) return timespec is +++ begin +++ return (tv_sec => T.tv_sec, +++ tv_nsec => 1_000 * nsec_t (T.tv_usec)); +++ end To_Timespec; +++ +++ function To_Timespec (D : Non_Negative_Duration) return timespec is +++ -- See To_Timeval. +++ Dm1 : constant Duration range -1.0 .. Duration'Last - 1.0 := D - 1.0; +++ Sec : constant time_t range -1 .. time_t'Last := time_t (Dm1); +++ Frac : constant Duration range -0.5 .. 0.5 := Dm1 - Duration (Sec); +++ Nsec : nsec_t range -500_000_000 .. 500_000_000; +++ begin +++ if Duration'Size = 64 then +++ Nsec := nsec_t (1_000_000_000 * Frac); +++ else +++ -- Duration'Last < 500_000_000 so there is an overflow issue, +++ -- easy to solve because Frac has few significative digits. +++ Nsec := 20_000_000 * nsec_t (50 * Frac); +++ end if; +++ if Nsec < 0 then +++ return (tv_sec => Sec, tv_nsec => Nsec + 1_000_000_000); +++ else +++ return (tv_sec => Sec + 1, tv_nsec => Nsec); +++ end if; +++ end To_Timespec; +++ +++ ----------------- +++ -- To_Timeval -- +++ ----------------- +++ +++ function To_Timeval (D : Non_Negative_Duration) return timeval is +++ +++ -- Most comments also apply to the timespec variant. +++ +++ -- Sec := time_t (D); +++ -- Usec := usec_t (1_000_000 * (D - Duration (Sec))); +++ -- fails when D is +++ -- Duration'Last (Sec is rounded up and Duration (Sec) overflows) +++ -- 0.9 (Sec is rounded up and Usec < 0) +++ +++ -- Sec := time_t (D - 0.5); +++ -- Usec := usec_t (1_000_000 * (D - Duration (Sec))); +++ -- leads to Usec = 1_000_000 when D is +++ -- 0.0 (Sec is rounded down) +++ -- 0.999_999_999 (Usec is rounded up) (not an issue with timespec) +++ +++ Dm1 : constant Duration range -1.0 .. Duration'Last - 1.0 := D - 1.0; +++ -- Converting D - 1 avoids overflows and simplifies roundings. +++ +++ Sec : constant time_t range -1 .. time_t'Last := time_t (Dm1); +++ -- The conversion of Dm1 may overflow if time_t has 32 bits. +++ +++ Frac : constant Duration range -0.5 .. 0.5 := Dm1 - Duration (Sec); +++ -- The conversion back is always possible, Sec <= Duration'Last - 0.5. +++ +++ Usec : constant usec_t range -500_000 .. 500_000 +++ := usec_t (1_000_000 * Frac); +++ begin +++ -- Add the second substracted at the beginning, in a way fixing +++ -- the Usec interval if necessary. +++ -- In both cases, tv_sec may exceed MAX_tv_sec. +++ if Usec < 0 then +++ return (tv_sec => Sec, tv_usec => Usec + 1_000_000); +++ else +++ return (tv_sec => Sec + 1, tv_usec => Usec); +++ end if; +++ end To_Timeval; +++ +++end System.C_Time; ++--- /dev/null +++++ b/src/gcc/ada/libgnat/s-c_time.ads ++@@ -0,0 +1,135 @@ +++------------------------------------------------------------------------------ +++-- -- +++-- GNAT RUN-TIME LIBRARY (GNARL) COMPONENTS -- +++-- -- +++-- S Y S T E M . C _ T I M E -- +++-- -- +++-- S p e c -- +++-- -- +++-- Copyright (C) 1998-2025, Free Software Foundation, Inc. -- +++-- -- +++-- GNARL is free software; you can redistribute it and/or modify it under -- +++-- terms of the GNU General Public License as published by the Free Soft- -- +++-- ware Foundation; either version 3, or (at your option) any later ver- -- +++-- sion. GNAT is distributed in the hope that it will be useful, but WITH- -- +++-- OUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY -- +++-- or FITNESS FOR A PARTICULAR PURPOSE. -- +++-- -- +++-- As a special exception under Section 7 of GPL version 3, you are granted -- +++-- additional permissions described in the GCC Runtime Library Exception, -- +++-- version 3.1, as published by the Free Software Foundation. -- +++-- -- +++-- You should have received a copy of the GNU General Public License and -- +++-- a copy of the GCC Runtime Library Exception along with this program; -- +++-- see the files COPYING3 and COPYING.RUNTIME respectively. If not, see -- +++-- . -- +++-- -- +++-- GNARL was developed by the GNARL team at Florida State University. -- +++-- Extensive contributions were provided by Ada Core Technologies, Inc. -- +++-- -- +++------------------------------------------------------------------------------ +++ +++-- This package provides the timeval, timespec C types and conversions. +++-- It hides all details about time_t, suseconds_t. +++ +++with Interfaces.C; +++private with System.OS_Constants; +++ +++package System.C_Time +++ with Pure +++is +++ +++ -- These C structs represent non negative durations with different +++ -- accuracies and maximal values. +++ type timespec is private; -- accurate to 1 nanosecond +++ type timeval is private; -- accurate to 1 microsecond +++ +++ -- Duration is accurate to either 1 nanosecond or 20 milliseconds. +++ subtype Non_Negative_Duration is Duration range 0.0 .. Duration'Last; +++ +++ -- All conversions round if the target type is less accurate than +++ -- the source type, away from zero if the source value is midway +++ -- between two values of the target type. +++ -- They raise Constraint_Error when the value, after rounding, +++ -- exceeds the last value of the target type. +++ +++ function To_Duration (T : timespec) return Non_Negative_Duration; +++ function To_Duration (T : timeval) return Non_Negative_Duration; +++ +++ function To_Timespec (D : Non_Negative_Duration) return timespec; +++ function To_Timeval (D : Non_Negative_Duration) return timeval; +++ +++ Timeval_Zero : constant timeval; +++ -- g-sothco.ads +++ +++ function In_Duration (T : timeval) return Boolean with Inline; +++ -- True if computing To_Duration (T) is safe, +++ -- False if Constraint Error would be raised. +++ -- g-socket.adb: +++ +++ subtype Non_Negative_Int is +++ Interfaces.C.int range 0 .. Interfaces.C.int'Last; +++ +++ function Milliseconds_To_Timeval (M : Non_Negative_Int) return timeval +++ with Inline; +++ -- g-spogwa.adb +++ +++ function Nanoseconds_To_Timespec (N : Non_Negative_Int) return timespec +++ with Inline; +++ function To_Timespec (T : timeval) return timespec with Inline; +++ -- s-osinte__darwin.adb +++ +++ -- These functions are provided for backward compatibility, +++ -- but lead to non portable interfaces with C. +++ -- Tv_sec and tv_nsec do not match the long int type on x32, +++ -- or on 32 bits ARM with a 2038-compatible GNU libc. +++ subtype Tv_Sec_Long_Long is Interfaces.C.long_long +++ range 0 .. Interfaces.C.long_long'Last; +++ subtype Tv_Sec_Long is Interfaces.C.long range 0 .. Interfaces.C.long'Last; +++ subtype Tv_Nsec_Long is Interfaces.C.long range 0 .. 999_999_999; +++ function To_Duration (tv_sec : Tv_Sec_Long; +++ tv_nsec : Tv_Nsec_Long) return Non_Negative_Duration +++ with Inline; +++ function To_Duration (tv_sec : Tv_Sec_Long_Long; +++ tv_nsec : Tv_Nsec_Long) return Non_Negative_Duration +++ with Inline; +++ procedure To_Struct_Timespec (D : Non_Negative_Duration; +++ tv_sec : out Tv_Sec_Long; +++ tv_nsec : out Tv_Nsec_Long) with Inline; +++ procedure To_Struct_Timespec (D : Non_Negative_Duration; +++ tv_sec : out Tv_Sec_Long_Long; +++ tv_nsec : out Tv_Nsec_Long) with Inline; +++ -- a-calcon.ads +++ +++private +++ +++ type time_t is range -2 ** (OS_Constants.SIZEOF_tv_sec * 8 - 1) .. +++ 2 ** (OS_Constants.SIZEOF_tv_sec * 8 - 1) - 1 +++ with Convention => C, Size => OS_Constants.SIZEOF_tv_sec * 8; +++ +++ type usec_t is range -2 ** (OS_Constants.SIZEOF_tv_usec * 8 - 1) .. +++ 2 ** (OS_Constants.SIZEOF_tv_usec * 8 - 1) - 1 +++ with Convention => C, Size => OS_Constants.SIZEOF_tv_usec * 8; +++ -- Larger than the suseconds_t C type on ARM 32 bits with GNU libc +++ -- when __TIME_BITS=64. +++ +++ type nsec_t is range -2 ** (OS_Constants.SIZEOF_tv_nsec * 8 - 1) .. +++ 2 ** (OS_Constants.SIZEOF_tv_nsec * 8 - 1) - 1 +++ with Convention => C, Size => OS_Constants.SIZEOF_tv_nsec * 8; +++ -- Larger than the signed long int C type on x32. +++ +++ type timeval is record +++ tv_sec : time_t range 0 .. OS_Constants.MAX_tv_sec; -- seconds +++ tv_usec : usec_t range 0 .. 999_999; -- microseconds +++ end record +++ with Convention => C; +++ +++ type timespec is record +++ tv_sec : time_t range 0 .. OS_Constants.MAX_tv_sec; -- seconds +++ tv_nsec : nsec_t range 0 .. 999_999_999; -- nanoseconds +++ end record +++ with Convention => C; +++ +++ Timeval_Zero : constant timeval := (tv_sec => 0, tv_usec => 0); +++ +++end System.C_Time; ++--- a/src/gcc/ada/libgnat/s-optide.adb +++++ b/src/gcc/ada/libgnat/s-optide.adb ++@@ -36,8 +36,8 @@ procedure Timed_Delay ++ (Time : Duration; ++ Mode : Integer) ++ is ++- Request : aliased timespec; ++- Remaind : aliased timespec; +++ Request : aliased C_Time.timespec; +++ Remaind : aliased C_Time.timespec; ++ Rel_Time : Duration; ++ Abs_Time : Duration; ++ Base_Time : constant Duration := Clock; ++@@ -71,7 +71,7 @@ begin ++ end if; ++ pragma Warnings (On); ++ ++- Request := To_Timespec (Time_Chunk); +++ Request := C_Time.To_Timespec (Time_Chunk); ++ Result := nanosleep (Request'Access, Remaind'Access); ++ ++ Check_Time := Clock; ++--- a/src/gcc/ada/libgnat/s-osprim__posix.adb +++++ b/src/gcc/ada/libgnat/s-osprim__posix.adb ++@@ -30,7 +30,7 @@ ++ ------------------------------------------------------------------------------ ++ ++ -- This version is for POSIX-like operating systems ++-with System.Parameters; +++with System.C_Time; ++ ++ package body System.OS_Primitives is ++ ++@@ -39,16 +39,8 @@ package body System.OS_Primitives is ++ -- these declarations in System.OS_Interface and move these ones in ++ -- the spec. ++ ++- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) ++- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; ++- ++- type timespec is record ++- tv_sec : time_t; ++- tv_nsec : Long_Integer; ++- end record; ++- pragma Convention (C, timespec); ++- ++- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; +++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) +++ return Integer; ++ pragma Import (C, nanosleep, "nanosleep"); ++ ++ ----------- ++@@ -57,27 +49,12 @@ package body System.OS_Primitives is ++ ++ function Clock return Duration is ++ ++- type timeval is array (1 .. 3) of Long_Integer; ++- -- The timeval array is sized to contain Long_Long_Integer sec and ++- -- Long_Integer usec. If Long_Long_Integer'Size = Long_Integer'Size then ++- -- it will be overly large but that will not effect the implementation ++- -- since it is not accessed directly. ++- ++- procedure timeval_to_duration ++- (T : not null access timeval; ++- sec : not null access Long_Long_Integer; ++- usec : not null access Long_Integer); ++- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); ++- ++- Micro : constant := 10**6; ++- sec : aliased Long_Long_Integer; ++- usec : aliased Long_Integer; ++- TV : aliased timeval; +++ TV : aliased C_Time.timeval; ++ Result : Integer; ++ pragma Unreferenced (Result); ++ ++ function gettimeofday ++- (Tv : access timeval; +++ (Tv : access C_Time.timeval; ++ Tz : System.Address := System.Null_Address) return Integer; ++ pragma Import (C, gettimeofday, "gettimeofday"); ++ ++@@ -91,38 +68,10 @@ package body System.OS_Primitives is ++ -- value is never checked. ++ ++ Result := gettimeofday (TV'Access, System.Null_Address); ++- timeval_to_duration (TV'Access, sec'Access, usec'Access); ++- return Duration (sec) + Duration (usec) / Micro; +++ return C_Time.To_Duration (TV); ++ end Clock; ++ ++ ----------------- ++- -- To_Timespec -- ++- ----------------- ++- ++- function To_Timespec (D : Duration) return timespec; ++- ++- function To_Timespec (D : Duration) return timespec is ++- S : time_t; ++- F : Duration; ++- ++- begin ++- S := time_t (Long_Long_Integer (D)); ++- F := D - Duration (S); ++- ++- -- If F has negative value due to a round-up, adjust for positive F ++- -- value. ++- ++- if F < 0.0 then ++- S := S - 1; ++- F := F + 1.0; ++- end if; ++- ++- return ++- timespec'(tv_sec => S, ++- tv_nsec => Long_Integer (Long_Long_Integer (F * 10#1#E9))); ++- end To_Timespec; ++- ++- ----------------- ++ -- Timed_Delay -- ++ ----------------- ++ ++--- a/src/gcc/ada/libgnat/s-osprim__posix2008.adb +++++ b/src/gcc/ada/libgnat/s-osprim__posix2008.adb ++@@ -31,9 +31,10 @@ ++ ++ -- This version is for POSIX.1-2008-like operating systems ++ +++with System.C_Time; ++ with System.CRTL; ++ with System.OS_Constants; ++-with System.Parameters; +++ ++ package body System.OS_Primitives is ++ ++ subtype int is System.CRTL.int; ++@@ -42,16 +43,8 @@ package body System.OS_Primitives is ++ -- we don't want to depend on any package. Consider removing these ++ -- declarations in System.OS_Interface and move these ones to the spec. ++ ++- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) ++- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; ++- ++- type timespec is record ++- tv_sec : time_t; ++- tv_nsec : Long_Integer; ++- end record; ++- pragma Convention (C, timespec); ++- ++- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; +++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) +++ return Integer; ++ pragma Import (C, nanosleep, "nanosleep"); ++ ++ ----------- ++@@ -59,7 +52,7 @@ package body System.OS_Primitives is ++ ----------- ++ ++ function Clock return Duration is ++- TS : aliased timespec; +++ TS : aliased C_Time.timespec; ++ Result : int; ++ ++ type clockid_t is new int; ++@@ -68,43 +61,16 @@ package body System.OS_Primitives is ++ ++ function clock_gettime ++ (clock_id : clockid_t; ++- tp : access timespec) return int; +++ tp : access C_Time.timespec) return int; ++ pragma Import (C, clock_gettime, "clock_gettime"); ++ ++ begin ++ Result := clock_gettime (CLOCK_REALTIME, TS'Unchecked_Access); ++ pragma Assert (Result = 0); ++- return Duration (TS.tv_sec) + Duration (TS.tv_nsec) / 10#1#E9; +++ return C_Time.To_Duration (TS); ++ end Clock; ++ ++ ----------------- ++- -- To_Timespec -- ++- ----------------- ++- ++- function To_Timespec (D : Duration) return timespec; ++- ++- function To_Timespec (D : Duration) return timespec is ++- S : time_t; ++- F : Duration; ++- ++- begin ++- S := time_t (Long_Long_Integer (D)); ++- F := D - Duration (S); ++- ++- -- If F has negative value due to a round-up, adjust for positive F ++- -- value. ++- ++- if F < 0.0 then ++- S := S - 1; ++- F := F + 1.0; ++- end if; ++- ++- return ++- timespec'(tv_sec => S, ++- tv_nsec => Long_Integer (Long_Long_Integer (F * 10#1#E9))); ++- end To_Timespec; ++- ++- ----------------- ++ -- Timed_Delay -- ++ ----------------- ++ ++--- a/src/gcc/ada/libgnat/s-osprim__unix.adb +++++ b/src/gcc/ada/libgnat/s-osprim__unix.adb ++@@ -32,6 +32,8 @@ ++ -- This version uses gettimeofday and select ++ -- This file is suitable for OpenNT, Dec Unix and SCO UnixWare. ++ +++with System.C_Time; +++ ++ package body System.OS_Primitives is ++ ++ -- ??? These definitions are duplicated from System.OS_Interface ++@@ -39,14 +41,8 @@ package body System.OS_Primitives is ++ -- these declarations in System.OS_Interface and move these ones in ++ -- the spec. ++ ++- type struct_timeval is record ++- tv_sec : Integer; ++- tv_usec : Integer; ++- end record; ++- pragma Convention (C, struct_timeval); ++- ++ procedure gettimeofday ++- (tv : not null access struct_timeval; +++ (tv : not null access C_Time.timeval; ++ tz : Address := Null_Address); ++ pragma Import (C, gettimeofday, "gettimeofday"); ++ ++@@ -55,7 +51,7 @@ package body System.OS_Primitives is ++ readfds, ++ writefds, ++ exceptfds : Address := Null_Address; ++- timeout : not null access struct_timeval); +++ timeout : not null access C_Time.timeval); ++ pragma Import (C, C_select, "select"); ++ ++ ----------- ++@@ -63,11 +59,11 @@ package body System.OS_Primitives is ++ ----------- ++ ++ function Clock return Duration is ++- TV : aliased struct_timeval; +++ TV : aliased C_Time.timeval; ++ ++ begin ++ gettimeofday (TV'Access); ++- return Duration (TV.tv_sec) + Duration (TV.tv_usec) / 10#1#E6; +++ return C_Time.To_Duration (TV); ++ end Clock; ++ ++ ----------------- ++@@ -82,7 +78,7 @@ package body System.OS_Primitives is ++ Abs_Time : Duration; ++ Base_Time : constant Duration := Clock; ++ Check_Time : Duration := Base_Time; ++- timeval : aliased struct_timeval; +++ timeval : aliased C_Time.timeval; ++ ++ begin ++ if Mode = Relative then ++@@ -95,14 +91,7 @@ package body System.OS_Primitives is ++ ++ if Rel_Time > 0.0 then ++ loop ++- timeval.tv_sec := Integer (Rel_Time); ++- ++- if Duration (timeval.tv_sec) > Rel_Time then ++- timeval.tv_sec := timeval.tv_sec - 1; ++- end if; ++- ++- timeval.tv_usec := ++- Integer ((Rel_Time - Duration (timeval.tv_sec)) * 10#1#E6); +++ timeval := C_Time.To_Timeval (Rel_Time); ++ ++ C_select (timeout => timeval'Unchecked_Access); ++ Check_Time := Clock; ++--- a/src/gcc/ada/libgnat/s-osprim__x32.adb +++++ b/src/gcc/ada/libgnat/s-osprim__x32.adb ++@@ -31,7 +31,7 @@ ++ ++ -- This version is for Linux/x32 ++ ++-with System.Parameters; +++with System.C_Time; ++ ++ package body System.OS_Primitives is ++ ++@@ -40,16 +40,8 @@ package body System.OS_Primitives is ++ -- these declarations in System.OS_Interface and move these ones in ++ -- the spec. ++ ++- type time_t is range -2 ** (System.Parameters.time_t_bits - 1) ++- .. 2 ** (System.Parameters.time_t_bits - 1) - 1; ++- ++- type timespec is record ++- tv_sec : time_t; ++- tv_nsec : Long_Long_Integer; ++- end record; ++- pragma Convention (C, timespec); ++- ++- function nanosleep (rqtp, rmtp : not null access timespec) return Integer; +++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) +++ return Integer; ++ pragma Import (C, nanosleep, "nanosleep"); ++ ++ ----------- ++@@ -57,23 +49,12 @@ package body System.OS_Primitives is ++ ----------- ++ ++ function Clock return Duration is ++- type timeval is array (1 .. 2) of Long_Long_Integer; ++- ++- procedure timeval_to_duration ++- (T : not null access timeval; ++- sec : not null access Long_Integer; ++- usec : not null access Long_Integer); ++- pragma Import (C, timeval_to_duration, "__gnat_timeval_to_duration"); ++- ++- Micro : constant := 10**6; ++- sec : aliased Long_Integer; ++- usec : aliased Long_Integer; ++- TV : aliased timeval; +++ TV : aliased C_Time.timeval; ++ Result : Integer; ++ pragma Unreferenced (Result); ++ ++ function gettimeofday ++- (Tv : access timeval; +++ (Tv : access C_Time.timeval; ++ Tz : System.Address := System.Null_Address) return Integer; ++ pragma Import (C, gettimeofday, "gettimeofday"); ++ ++@@ -87,38 +68,10 @@ package body System.OS_Primitives is ++ -- value is never checked. ++ ++ Result := gettimeofday (TV'Access, System.Null_Address); ++- timeval_to_duration (TV'Access, sec'Access, usec'Access); ++- return Duration (sec) + Duration (usec) / Micro; +++ return C_Time.To_Duration (TV); ++ end Clock; ++ ++ ----------------- ++- -- To_Timespec -- ++- ----------------- ++- ++- function To_Timespec (D : Duration) return timespec; ++- ++- function To_Timespec (D : Duration) return timespec is ++- S : time_t; ++- F : Duration; ++- ++- begin ++- S := time_t (Long_Long_Integer (D)); ++- F := D - Duration (S); ++- ++- -- If F has negative value due to a round-up, adjust for positive F ++- -- value. ++- ++- if F < 0.0 then ++- S := S - 1; ++- F := F + 1.0; ++- end if; ++- ++- return ++- timespec'(tv_sec => S, ++- tv_nsec => Long_Long_Integer (F * 10#1#E9)); ++- end To_Timespec; ++- ++- ----------------- ++ -- Timed_Delay -- ++ ----------------- ++ ++@@ -126,8 +79,8 @@ package body System.OS_Primitives is ++ (Time : Duration; ++ Mode : Integer) ++ is ++- Request : aliased timespec; ++- Remaind : aliased timespec; +++ Request : aliased C_Time.timespec; +++ Remaind : aliased C_Time.timespec; ++ Rel_Time : Duration; ++ Abs_Time : Duration; ++ Base_Time : constant Duration := Clock; ++@@ -147,7 +100,7 @@ package body System.OS_Primitives is ++ ++ if Rel_Time > 0.0 then ++ loop ++- Request := To_Timespec (Rel_Time); +++ Request := C_Time.To_Timespec (Rel_Time); ++ Result := nanosleep (Request'Access, Remaind'Access); ++ Check_Time := Clock; ++ ++--- a/src/gcc/ada/s-oscons-tmplt.c +++++ b/src/gcc/ada/s-oscons-tmplt.c ++@@ -1764,6 +1764,17 @@ CND(SIZEOF_tv_usec, "tv_usec") ++ #endif ++ CNS(MAX_tv_sec, "") ++ } +++ +++{ +++ struct timespec ts; +++/* +++ -- Sizes (in bytes) of the components of struct timespec. +++ -- The tv_sec field is the same than in struct timeval. +++*/ +++#define SIZEOF_tv_nsec (sizeof (ts.tv_nsec)) +++CND(SIZEOF_tv_nsec, "tv_nsec"); +++} +++ ++ /* ++ ++ -- Sizes of various data types diff --cc debian/patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff index 0000000,0000000..7c7bbd3 new file mode 100644 --- /dev/null +++ b/debian/patches/0002-Ada-select-64-bits-time-functions-from-GNU-libc-when.diff @@@ -1,0 -1,0 +1,249 @@@ ++PR ada/114065, patches v15 ++ ++--- a/src/gcc/ada/libgnarl/a-exetim__posix.adb +++++ b/src/gcc/ada/libgnarl/a-exetim__posix.adb ++@@ -35,6 +35,7 @@ with Ada.Task_Identification; use Ada.T ++ with Ada.Unchecked_Conversion; ++ ++ with System.C_Time; +++with System.OS_Constants; ++ with System.Tasking; ++ with System.OS_Interface; use System.OS_Interface; ++ with System.Task_Primitives.Operations; use System.Task_Primitives.Operations; ++@@ -115,7 +116,8 @@ package body Ada.Execution_Time is ++ (clock_id : Interfaces.C.int; ++ tp : access System.C_Time.timespec) ++ return Interfaces.C.int; ++- pragma Import (C, clock_gettime, "clock_gettime"); +++ pragma Import (C, clock_gettime, +++ System.OS_Constants.Y2038_clock_gettime); ++ -- Function from the POSIX.1b Realtime Extensions library ++ ++ function pthread_getcpuclockid ++--- a/src/gcc/ada/libgnarl/s-osinte__gnu.ads +++++ b/src/gcc/ada/libgnarl/s-osinte__gnu.ads ++@@ -43,6 +43,7 @@ with Ada.Unchecked_Conversion; ++ with Interfaces.C; ++ ++ with System.C_Time; +++with System.OS_Constants; ++ with System.OS_Locks; ++ ++ package System.OS_Interface is ++@@ -211,7 +212,7 @@ package System.OS_Interface is ++ -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) ++ ++ function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; ++- pragma Import (C, nanosleep, "nanosleep"); +++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); ++ ++ type clockid_t is new int; ++ CLOCK_REALTIME : constant clockid_t := 0; ++@@ -221,12 +222,12 @@ package System.OS_Interface is ++ (clock_id : clockid_t; ++ tp : access C_Time.timespec) ++ return int; ++- pragma Import (C, clock_gettime, "clock_gettime"); +++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); ++ ++ function clock_getres ++ (clock_id : clockid_t; ++ res : access C_Time.timespec) return int; ++- pragma Import (C, clock_getres, "clock_getres"); +++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); ++ ++ -- From: /usr/include/unistd.h ++ function sysconf (name : int) return long; ++@@ -480,7 +481,8 @@ package System.OS_Interface is ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++ abstime : access C_Time.timespec) return int; ++- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); +++ pragma Import (C, pthread_cond_timedwait, +++ OS_Constants.Y2038_pthread_cond_timedwait); ++ ++ Relative_Timed_Wait : constant Boolean := False; ++ -- pthread_cond_timedwait requires an absolute delay time ++--- a/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads +++++ b/src/gcc/ada/libgnarl/s-osinte__kfreebsd-gnu.ads ++@@ -43,6 +43,7 @@ with Ada.Unchecked_Conversion; ++ with Interfaces.C; ++ ++ with System.C_Time; +++with System.OS_Constants; ++ with System.OS_Locks; ++ ++ package System.OS_Interface is ++@@ -206,7 +207,7 @@ package System.OS_Interface is ++ -- Indicates whether time slicing is supported (i.e SCHED_RR is supported) ++ ++ function nanosleep (rqtp, rmtp : access C_Time.timespec) return int; ++- pragma Import (C, nanosleep, "nanosleep"); +++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); ++ ++ type clockid_t is new int; ++ CLOCK_REALTIME : constant clockid_t := 0; ++@@ -215,12 +216,12 @@ package System.OS_Interface is ++ (clock_id : clockid_t; ++ tp : access C_Time.timespec) ++ return int; ++- pragma Import (C, clock_gettime, "clock_gettime"); +++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); ++ ++ function clock_getres ++ (clock_id : clockid_t; ++ res : access C_Time.timespec) return int; ++- pragma Import (C, clock_getres, "clock_getres"); +++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); ++ ++ function sysconf (name : int) return long; ++ pragma Import (C, sysconf); ++@@ -423,7 +424,8 @@ package System.OS_Interface is ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++ abstime : access C_Time.timespec) return int; ++- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); +++ pragma Import (C, pthread_cond_timedwait, +++ OS_Constants.Y2038_pthread_cond_timedwait); ++ ++ -------------------------- ++ -- POSIX.1c Section 13 -- ++--- a/src/gcc/ada/libgnarl/s-osinte__linux.ads +++++ b/src/gcc/ada/libgnarl/s-osinte__linux.ads ++@@ -232,12 +232,12 @@ package System.OS_Interface is ++ ++ function clock_gettime ++ (clock_id : clockid_t; tp : access C_Time.timespec) return int; ++- pragma Import (C, clock_gettime, "clock_gettime"); +++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); ++ ++ function clock_getres ++ (clock_id : clockid_t; ++ res : access C_Time.timespec) return int; ++- pragma Import (C, clock_getres, "clock_getres"); +++ pragma Import (C, clock_getres, OS_Constants.Y2038_clock_getres); ++ ++ function sysconf (name : int) return long; ++ pragma Import (C, sysconf); ++@@ -448,7 +448,8 @@ package System.OS_Interface is ++ (cond : access pthread_cond_t; ++ mutex : access pthread_mutex_t; ++ abstime : access C_Time.timespec) return int; ++- pragma Import (C, pthread_cond_timedwait, "pthread_cond_timedwait"); +++ pragma Import (C, pthread_cond_timedwait, +++ OS_Constants.Y2038_pthread_cond_timedwait); ++ ++ -------------------------- ++ -- POSIX.1c Section 13 -- ++--- a/src/gcc/ada/libgnat/g-spogwa.adb +++++ b/src/gcc/ada/libgnat/g-spogwa.adb ++@@ -42,7 +42,8 @@ is ++ writefds : access FD_Set_Type; ++ exceptfds : access FD_Set_Type; ++ timeout : access System.C_Time.timeval) return Integer ++- with Import => True, Convention => Stdcall, External_Name => "select"; +++ with Import => True, Convention => Stdcall, +++ External_Name => System.OS_Constants.Y2038_select; ++ ++ Timeout_V : aliased System.C_Time.timeval; ++ Timeout_A : access System.C_Time.timeval; ++--- a/src/gcc/ada/libgnat/s-osprim__posix.adb +++++ b/src/gcc/ada/libgnat/s-osprim__posix.adb ++@@ -31,6 +31,7 @@ ++ ++ -- This version is for POSIX-like operating systems ++ with System.C_Time; +++with System.OS_Constants; ++ ++ package body System.OS_Primitives is ++ ++@@ -41,7 +42,7 @@ package body System.OS_Primitives is ++ ++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) ++ return Integer; ++- pragma Import (C, nanosleep, "nanosleep"); +++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); ++ ++ ----------- ++ -- Clock -- ++@@ -56,7 +57,7 @@ package body System.OS_Primitives is ++ function gettimeofday ++ (Tv : access C_Time.timeval; ++ Tz : System.Address := System.Null_Address) return Integer; ++- pragma Import (C, gettimeofday, "gettimeofday"); +++ pragma Import (C, gettimeofday, OS_Constants.Y2038_gettimeofday); ++ ++ begin ++ -- The return codes for gettimeofday are as follows (from man pages): ++--- a/src/gcc/ada/libgnat/s-osprim__posix2008.adb +++++ b/src/gcc/ada/libgnat/s-osprim__posix2008.adb ++@@ -45,7 +45,7 @@ package body System.OS_Primitives is ++ ++ function nanosleep (rqtp, rmtp : not null access C_Time.timespec) ++ return Integer; ++- pragma Import (C, nanosleep, "nanosleep"); +++ pragma Import (C, nanosleep, OS_Constants.Y2038_nanosleep); ++ ++ ----------- ++ -- Clock -- ++@@ -62,7 +62,7 @@ package body System.OS_Primitives is ++ function clock_gettime ++ (clock_id : clockid_t; ++ tp : access C_Time.timespec) return int; ++- pragma Import (C, clock_gettime, "clock_gettime"); +++ pragma Import (C, clock_gettime, OS_Constants.Y2038_clock_gettime); ++ ++ begin ++ Result := clock_gettime (CLOCK_REALTIME, TS'Unchecked_Access); ++--- a/src/gcc/ada/s-oscons-tmplt.c +++++ b/src/gcc/ada/s-oscons-tmplt.c ++@@ -1777,6 +1777,49 @@ CND(SIZEOF_tv_nsec, "tv_nsec"); ++ ++ /* ++ +++ -- On 32 bits architectures, glibc and musl also support representing time +++ -- types on 64 bits. The usual names are reserved symbols for the 32 bits +++ -- function for backwards compatibility, so distinct symbols are necessary +++ -- for the current version. In other contexts, define Y2038_foo as "foo" +++ -- so that other files may safely Import with External_Name => Y2038_foo. +++*/ +++#if defined(__USE_TIME64_REDIRECTS) || (__TIMESIZE == 32 && __USE_TIME_BITS64) +++/* glibc */ +++# define Y2038_clock_getres "__clock_getres64" +++# define Y2038_clock_gettime "__clock_gettime64" +++# define Y2038_gettimeofday "__gettimeofday64" +++# define Y2038_nanosleep "__nanosleep64" +++# define Y2038_pthread_cond_timedwait "__pthread_cond_timedwait64" +++# define Y2038_pthread_cond_wait "__pthread_cond_wait64" +++# define Y2038_select "__select64" +++#elif defined(_REDIR_TIME64) +++/* musl */ +++# define Y2038_clock_getres "__clock_getres_time64" +++# define Y2038_clock_gettime "__clock_gettime64" +++# define Y2038_gettimeofday "__gettimeofday_time64" +++# define Y2038_nanosleep "__nanosleep_time64" +++# define Y2038_pthread_cond_timedwait "__pthread_cond_timedwait_time64" +++# define Y2038_pthread_cond_wait "__pthread_cond_wait_time64" +++# define Y2038_select "__select_time64" +++#else +++# define Y2038_clock_getres "clock_getres" +++# define Y2038_clock_gettime "clock_gettime" +++# define Y2038_gettimeofday "gettimeofday" +++# define Y2038_nanosleep "nanosleep" +++# define Y2038_pthread_cond_timedwait "pthread_cond_timedwait" +++# define Y2038_pthread_cond_wait "pthread_cond_wait" +++# define Y2038_select "select" +++#endif +++CST(Y2038_clock_getres, "") +++CST(Y2038_clock_gettime, "") +++CST(Y2038_gettimeofday, "") +++CST(Y2038_nanosleep, "") +++CST(Y2038_pthread_cond_timedwait, "") +++CST(Y2038_pthread_cond_wait, "") +++CST(Y2038_select, "") +++ +++/* +++ ++ -- Sizes of various data types ++ */ ++ diff --cc debian/patches/D-22464.diff index 0000000,0000000..2b02545 new file mode 100644 --- /dev/null +++ b/debian/patches/D-22464.diff @@@ -1,0 -1,0 +1,35 @@@ ++--- a/src/gcc/d/dmd/globals.d +++++ b/src/gcc/d/dmd/globals.d ++@@ -301,7 +301,7 @@ extern (C++) struct Global ++ Array!(const(char)*) filePath; /// Array of char*'s which form the file import lookup path ++ ++ private enum string _version = import("VERSION"); ++- char[26] datetime; /// string returned by ctime() +++ char[26] datetime; /// string returned by asctime() ++ CompileEnv compileEnv; ++ ++ Param params; /// command line parameters ++@@ -415,15 +415,19 @@ extern (C++) struct Global ++ import core.stdc.stdlib : getenv; ++ ++ time_t ct; +++ const(char)* p; ++ // https://issues.dlang.org/show_bug.cgi?id=20444 ++- if (auto p = getenv("SOURCE_DATE_EPOCH")) +++ if (auto epoch = getenv("SOURCE_DATE_EPOCH")) ++ { ++- if (!ct.parseDigits(p[0 .. strlen(p)])) ++- errorSink.error(Loc.initial, "value of environment variable `SOURCE_DATE_EPOCH` should be a valid UNIX timestamp, not: `%s`", p); +++ if (!ct.parseDigits(epoch[0 .. strlen(epoch)])) +++ errorSink.error(Loc.initial, "value of environment variable `SOURCE_DATE_EPOCH` should be a valid UNIX timestamp, not: `%s`", epoch); +++ p = asctime(gmtime(&ct)); ++ } ++ else +++ { ++ core.stdc.time.time(&ct); ++- const p = ctime(&ct); +++ p = ctime(&ct); // asctime(localtime(&ct)) +++ } ++ assert(p); ++ datetime[] = p[0 .. 26]; ++ diff --cc debian/patches/ada-armel-libatomic.diff index 0000000,0000000..8094f19 new file mode 100644 --- /dev/null +++ b/debian/patches/ada-armel-libatomic.diff @@@ -1,0 -1,0 +1,79 @@@ ++Description: link libgnarl with libatomic on armel ++ On other architectures, the library is ignored thanks to --as-needed. ++ . ++ Seen with 14-20240429-1: ++ cd rts; [bla]/./gcc/xgcc [bla] -shared [bla] -o libgnarl-14.so [bla] ++ /usr/bin/arm-linux-gnueabi-ld: libgnat-14.so: undefined reference to `__atomic_compare_exchange_8' ++ /usr/bin/arm-linux-gnueabi-ld: libgnat-14.so: undefined reference to `__atomic_load_8' ++ . ++ Libatomic becomes an artificial dependency for Ada in Makefile.def, ++ so a better solution is welcome. ++ . ++ Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} ++ at build time, but we do not want to Build-Depend: guile. ++ # export QUILT_PATCHES=debian/patches ++ # quilt pop $this.diff ++ # quilt add src/Makefile.in ++ # (cd src && autogen Makefile.def) ++ # quilt refresh --no-timestamps --no-index -pab ++ # quilt push -a ++ . ++ The issue is hidden without -Wl,--no-allow-shlib-undefined. ++ (ada-gnattools-cross.diff adds checking options to LDFLAGS, ++ then adds LDFLAGS to the command line). ++Bug-Debian: https://bugs.debian.org/861734 ++Author: Matthias Klose ++Author: Nicolas Boulenguez ++ ++--- a/src/gcc/ada/Makefile.rtl +++++ b/src/gcc/ada/Makefile.rtl ++@@ -2530,7 +2530,7 @@ ifeq ($(strip $(filter-out arm% linux-gn ++ EXTRA_GNATRTL_TASKING_OBJS=s-linux.o ++ EH_MECHANISM=-arm ++ THREADSLIB = -lpthread ++- MISCLIB = -ldl +++ MISCLIB = ../../../$(target_alias)/libatomic/.libs/libatomic.so -ldl ++ GNATLIB_SHARED = gnatlib-shared-dual ++ GMEM_LIB = gmemlib ++ LIBRARY_VERSION := $(LIB_VERSION) ++--- a/src/Makefile.def +++++ b/src/Makefile.def ++@@ -418,6 +418,8 @@ dependencies = { module=all-target-libad ++ dependencies = { module=all-gnattools; on=all-target-libada; }; ++ dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; ++ +++dependencies = { module=all-target-libada; on=all-target-libatomic; }; +++ ++ // Depending on the specific configuration, the LTO plugin will either use the ++ // generic libiberty build or the specific build for linker plugins. ++ dependencies = { module=all-lto-plugin; on=all-libiberty; }; ++--- a/src/Makefile.in +++++ b/src/Makefile.in ++@@ -69199,6 +69199,9 @@ configure-m4: stage_last ++ @endif gcc-bootstrap ++ ++ @if gcc-bootstrap +++@unless target-libatomic-bootstrap +++all-target-libada: maybe-all-target-libatomic +++@endunless target-libatomic-bootstrap ++ @unless target-zlib-bootstrap ++ configure-target-fastjar: maybe-configure-target-zlib ++ @endunless target-zlib-bootstrap ++@@ -69234,6 +69237,7 @@ configure-target-libgo: maybe-all-target ++ @unless gcc-bootstrap ++ all-target-libada: maybe-all-gcc ++ all-gnattools: maybe-all-target-libstdc++-v3 +++all-target-libada: maybe-all-target-libatomic ++ configure-libcc1: maybe-configure-gcc ++ all-libcc1: maybe-all-gcc ++ all-c++tools: maybe-all-gcc ++--- a/src/gcc/ada/gcc-interface/Makefile.in +++++ b/src/gcc/ada/gcc-interface/Makefile.in ++@@ -727,6 +727,7 @@ gnatlib-shared-default: ++ $(GNATRTL_TASKING_OBJS) \ ++ $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ libgnat$(hyphen)$(LIBRARY_VERSION).so \ +++ $(MISCLIB) \ ++ $(THREADSLIB) ++ cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ libgnat$(soext) diff --cc debian/patches/ada-gcc-name.diff index 0000000,0000000..6a7731f new file mode 100644 --- /dev/null +++ b/debian/patches/ada-gcc-name.diff @@@ -1,0 -1,0 +1,240 @@@ ++Description: always call gcc with an explicit target and version ++ When gnat tools call each other, they should use the same prefix ++ and/or suffix in order to ensure the same target and version. ++ . ++ Let gnatchop call Osint.Program_Name instead of duplicating it. ++ This part may be of interest in GCC. ++ . ++ On Debian, the TARGET-TOOL-VERSION commands are always available, so ++ Osint.Program_Name simply prepends Sdefault.Target_Name and appends ++ Gnatvsn.Library_Version, independently of the current program name. ++ . ++ Log for bug 903694 carries regression tests for both bugs. ++ Also see pr79724. ++Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87777 ++Bug-Debian: https://bugs.debian.org/814977 ++Bug-Debian: https://bugs.debian.org/814978 ++Bug-Debian: https://bugs.debian.org/856274 ++Bug-Debian: https://bugs.debian.org/881938 ++Bug-Debian: https://bugs.debian.org/903694 ++Author: Ludovic Brenta ++Author: Nicolas Boulenguez ++Author: Svante Signell ++Author: YunQiang Su ++ ++--- a/src/gcc/ada/osint.ads +++++ b/src/gcc/ada/osint.ads ++@@ -144,14 +144,9 @@ package Osint is ++ -- path) in Name_Buffer, with the length in Name_Len. ++ ++ function Program_Name (Nam : String; Prog : String) return String_Access; ++- -- In the native compilation case, creates a string containing Nam. In the ++- -- cross compilation case, looks at the prefix of the current program being ++- -- run and prepends it to Nam. For instance if the program being run is ++- -- -gnatmake and Nam is "gcc", the returned value will be a pointer ++- -- to "-gcc". This function clobbers Name_Buffer and Name_Len. ++- -- Also looks at any suffix, e.g. gnatmake-4.1 -> "gcc-4.1". Prog is the ++- -- default name of the current program being executed, e.g. "gnatmake", ++- -- "gnatlink". +++ -- On Debian, this function ignores Prog and returns +++ -- Sdefault.Target_Name - Nam - Gnatvsn.Library_Version +++ -- with the final slash removed from Target_Name. ++ ++ procedure Write_Program_Name; ++ -- Writes name of program as invoked to the current output (normally ++--- a/src/gcc/ada/osint.adb +++++ b/src/gcc/ada/osint.adb ++@@ -2258,46 +2258,15 @@ package body Osint is ++ ------------------ ++ ++ function Program_Name (Nam : String; Prog : String) return String_Access is ++- End_Of_Prefix : Natural := 0; ++- Start_Of_Prefix : Positive := 1; ++- Start_Of_Suffix : Positive; +++ pragma Unreferenced (Prog); +++ Prefix : Types.String_Ptr := Sdefault.Target_Name; +++ Result : constant System.OS_Lib.String_Access := new String' +++ (Prefix.all (Prefix'First .. Prefix'Last - 1) & '-' & Nam & '-' +++ & Gnatvsn.Library_Version); ++ ++ begin ++- -- Get the name of the current program being executed ++- ++- Find_Program_Name; ++- ++- -- Find the target prefix if any, for the cross compilation case. ++- -- For instance in "powerpc-elf-gcc" the target prefix is ++- -- "powerpc-elf-" ++- -- Ditto for suffix, e.g. in "gcc-4.1", the suffix is "-4.1" ++- ++- for J in reverse 1 .. Name_Len loop ++- if Is_Directory_Separator (Name_Buffer (J)) ++- or else Name_Buffer (J) = ':' ++- then ++- Start_Of_Prefix := J + 1; ++- exit; ++- end if; ++- end loop; ++- ++- -- Find End_Of_Prefix ++- ++- for J in Start_Of_Prefix .. Name_Len - Prog'Length + 1 loop ++- if Name_Buffer (J .. J + Prog'Length - 1) = Prog then ++- End_Of_Prefix := J - 1; ++- exit; ++- end if; ++- end loop; ++- ++- Start_Of_Suffix := End_Of_Prefix + Prog'Length + 1; ++- ++- -- Create the new program name ++- ++- return new String' ++- (Name_Buffer (Start_Of_Prefix .. End_Of_Prefix) ++- & Nam ++- & Name_Buffer (Start_Of_Suffix .. Name_Len)); +++ Types.Free (Prefix); +++ return Result; ++ end Program_Name; ++ ++ ------------------------------ ++--- a/src/gcc/ada/gnatchop.adb +++++ b/src/gcc/ada/gnatchop.adb ++@@ -36,6 +36,7 @@ with GNAT.OS_Lib; use GNA ++ with GNAT.Heap_Sort_G; ++ with GNAT.Table; ++ +++with Osint; ++ with Switch; use Switch; ++ with Types; ++ ++@@ -44,12 +45,9 @@ procedure Gnatchop is ++ Config_File_Name : constant String_Access := new String'("gnat.adc"); ++ -- The name of the file holding the GNAT configuration pragmas ++ ++- Gcc : String_Access := new String'("gcc"); +++ Gcc : String_Access := null; ++ -- May be modified by switch --GCC= ++ ++- Gcc_Set : Boolean := False; ++- -- True if a switch --GCC= is used ++- ++ Gnat_Cmd : String_Access; ++ -- Command to execute the GNAT compiler ++ ++@@ -222,12 +220,6 @@ procedure Gnatchop is ++ Integer'Image ++ (Maximum_File_Name_Length); ++ ++- function Locate_Executable ++- (Program_Name : String; ++- Look_For_Prefix : Boolean := True) return String_Access; ++- -- Locate executable for given program name. This takes into account ++- -- the target-prefix of the current command, if Look_For_Prefix is True. ++- ++ subtype EOL_Length is Natural range 0 .. 2; ++ -- Possible lengths of end of line sequence ++ ++@@ -492,76 +484,6 @@ procedure Gnatchop is ++ Unit.Table (Sorted_Units.Table (U + 1)).File_Name.all; ++ end Is_Duplicated; ++ ++- ----------------------- ++- -- Locate_Executable -- ++- ----------------------- ++- ++- function Locate_Executable ++- (Program_Name : String; ++- Look_For_Prefix : Boolean := True) return String_Access ++- is ++- Gnatchop_Str : constant String := "gnatchop"; ++- Current_Command : constant String := Normalize_Pathname (Command_Name); ++- End_Of_Prefix : Natural; ++- Start_Of_Prefix : Positive; ++- Start_Of_Suffix : Positive; ++- Result : String_Access; ++- ++- begin ++- Start_Of_Prefix := Current_Command'First; ++- Start_Of_Suffix := Current_Command'Last + 1; ++- End_Of_Prefix := Start_Of_Prefix - 1; ++- ++- if Look_For_Prefix then ++- ++- -- Find Start_Of_Prefix ++- ++- for J in reverse Current_Command'Range loop ++- if Current_Command (J) = '/' or else ++- Current_Command (J) = Directory_Separator or else ++- Current_Command (J) = ':' ++- then ++- Start_Of_Prefix := J + 1; ++- exit; ++- end if; ++- end loop; ++- ++- -- Find End_Of_Prefix ++- ++- for J in Start_Of_Prefix .. ++- Current_Command'Last - Gnatchop_Str'Length + 1 ++- loop ++- if Current_Command (J .. J + Gnatchop_Str'Length - 1) = ++- Gnatchop_Str ++- then ++- End_Of_Prefix := J - 1; ++- exit; ++- end if; ++- end loop; ++- end if; ++- ++- if End_Of_Prefix > Current_Command'First then ++- Start_Of_Suffix := End_Of_Prefix + Gnatchop_Str'Length + 1; ++- end if; ++- ++- declare ++- Command : constant String := ++- Current_Command (Start_Of_Prefix .. End_Of_Prefix) ++- & Program_Name ++- & Current_Command (Start_Of_Suffix .. ++- Current_Command'Last); ++- begin ++- Result := Locate_Exec_On_Path (Command); ++- ++- if Result = null then ++- Error_Msg ++- (Command & ": installation problem, executable not found"); ++- end if; ++- end; ++- ++- return Result; ++- end Locate_Executable; ++- ++ --------------- ++ -- Parse_EOL -- ++ --------------- ++@@ -1088,8 +1010,8 @@ procedure Gnatchop is ++ exit; ++ ++ when '-' => ++- Gcc := new String'(Parameter); ++- Gcc_Set := True; +++ Free (Gcc); +++ Gcc := new String'(Parameter); ++ ++ when 'c' => ++ Compilation_Mode := True; ++@@ -1767,9 +1689,13 @@ begin ++ ++ -- Check presence of required executables ++ ++- Gnat_Cmd := Locate_Executable (Gcc.all, not Gcc_Set); +++ if Gcc = null then +++ Gcc := Osint.Program_Name ("gcc", "gnatchop"); +++ end if; +++ Gnat_Cmd := Locate_Exec_On_Path (Gcc.all); ++ ++ if Gnat_Cmd = null then +++ Error_Msg (Gcc.all & ": installation problem, executable not found"); ++ goto No_Files_Written; ++ end if; ++ diff --cc debian/patches/ada-gnat-name.diff index 0000000,0000000..3e83705 new file mode 100644 --- /dev/null +++ b/debian/patches/ada-gnat-name.diff @@@ -1,0 -1,0 +1,178 @@@ ++# DP: allow override of build and host gnat compilers ++ ++Allow the Debian build system to select the Ada compiler producing ++ * source generators for the build machine ++ * gnat tools for the host machine ++ ++In Makefile.tpl (hence .in), chunk 1 modifies HOST_EXPORTS and chunk 3 ++modifies EXTRA_TARGET_FLAGS. ++ ++When gcc/ada/{Make-generated,/gcc-interface/Makefile}.in are modified, ++ada-verbose.diff must be refreshed. ++ ++Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=120106 ++Bug-Debian: https://bugs.debian.org/1078144 ++ ++--- a/src/Makefile.in +++++ b/src/Makefile.in ++@@ -206,6 +206,7 @@ HOST_EXPORTS = \ ++ GOC="$(GOC)"; export GOC; \ ++ GDC="$(GDC)"; export GDC; \ ++ GM2="$(GM2)"; export GM2; \ +++ GNATMAKE_FOR_BUILD="$(GNATMAKE_FOR_BUILD)"; export GNATMAKE_FOR_BUILD; \ ++ AR="$(AR)"; export AR; \ ++ AS="$(AS)"; export AS; \ ++ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ ++@@ -380,6 +381,7 @@ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD ++ GOC_FOR_BUILD = @GOC_FOR_BUILD@ ++ GDC_FOR_BUILD = @GDC_FOR_BUILD@ ++ GM2_FOR_BUILD = @GM2_FOR_BUILD@ +++GNATMAKE_FOR_BUILD = @GNATMAKE_FOR_BUILD@ ++ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ ++ LD_FOR_BUILD = @LD_FOR_BUILD@ ++ NM_FOR_BUILD = @NM_FOR_BUILD@ ++@@ -1043,6 +1045,7 @@ EXTRA_TARGET_FLAGS = \ ++ 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ ++ 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \ +++ 'GNATMAKE_FOR_BUILD=$(GNATMAKE_FOR_BUILD)' \ ++ 'LD=$(COMPILER_LD_FOR_TARGET)' \ ++ 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ ++ 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ ++--- a/src/Makefile.tpl +++++ b/src/Makefile.tpl ++@@ -209,6 +209,7 @@ HOST_EXPORTS = \ ++ GOC="$(GOC)"; export GOC; \ ++ GDC="$(GDC)"; export GDC; \ ++ GM2="$(GM2)"; export GM2; \ +++ GNATMAKE_FOR_BUILD="$(GNATMAKE_FOR_BUILD)"; export GNATMAKE_FOR_BUILD; \ ++ AR="$(AR)"; export AR; \ ++ AS="$(AS)"; export AS; \ ++ CC_FOR_BUILD="$(CC_FOR_BUILD)"; export CC_FOR_BUILD; \ ++@@ -383,6 +384,7 @@ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD ++ GOC_FOR_BUILD = @GOC_FOR_BUILD@ ++ GDC_FOR_BUILD = @GDC_FOR_BUILD@ ++ GM2_FOR_BUILD = @GM2_FOR_BUILD@ +++GNATMAKE_FOR_BUILD = @GNATMAKE_FOR_BUILD@ ++ LDFLAGS_FOR_BUILD = @LDFLAGS_FOR_BUILD@ ++ LD_FOR_BUILD = @LD_FOR_BUILD@ ++ NM_FOR_BUILD = @NM_FOR_BUILD@ ++@@ -799,6 +801,7 @@ EXTRA_TARGET_FLAGS = \ ++ 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ ++ 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GM2FLAGS=$$(GM2FLAGS_FOR_TARGET)' \ +++ 'GNATMAKE_FOR_BUILD=$(GNATMAKE_FOR_BUILD)' \ ++ 'LD=$(COMPILER_LD_FOR_TARGET)' \ ++ 'LDFLAGS=$$(LDFLAGS_FOR_TARGET)' \ ++ 'LIBCFLAGS=$$(LIBCFLAGS_FOR_TARGET)' \ ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -1453,6 +1453,7 @@ if test "${build}" != "${host}" ; then ++ GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} ++ GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} ++ GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} +++ GNATMAKE_FOR_BUILD=${GNATMAKE_FOR_BUILD-gnatmake} ++ DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} ++ LD_FOR_BUILD=${LD_FOR_BUILD-ld} ++ NM_FOR_BUILD=${NM_FOR_BUILD-nm} ++@@ -1468,6 +1469,7 @@ else ++ GFORTRAN_FOR_BUILD="\$(GFORTRAN)" ++ GOC_FOR_BUILD="\$(GOC)" ++ GDC_FOR_BUILD="\$(GDC)" +++ GNATMAKE_FOR_BUILD="\$(GNATMAKE)" ++ DLLTOOL_FOR_BUILD="\$(DLLTOOL)" ++ LD_FOR_BUILD="\$(LD)" ++ NM_FOR_BUILD="\$(NM)" ++@@ -3910,6 +3912,7 @@ AC_SUBST(DSYMUTIL_FOR_BUILD) ++ AC_SUBST(GFORTRAN_FOR_BUILD) ++ AC_SUBST(GOC_FOR_BUILD) ++ AC_SUBST(GDC_FOR_BUILD) +++AC_SUBST(GNATMAKE_FOR_BUILD) ++ AC_SUBST(LDFLAGS_FOR_BUILD) ++ AC_SUBST(LD_FOR_BUILD) ++ AC_SUBST(NM_FOR_BUILD) ++--- a/src/gcc/ada/Make-generated.in +++++ b/src/gcc/ada/Make-generated.in ++@@ -18,7 +18,7 @@ GEN_IL_FLAGS = -gnata -gnat2012 -gnatw.g ++ ada/seinfo_tables.ads ada/seinfo_tables.adb ada/sinfo.h ada/einfo.h ada/nmake.ads ada/nmake.adb ada/seinfo.ads ada/sinfo-nodes.ads ada/sinfo-nodes.adb ada/einfo-entities.ads ada/einfo-entities.adb: ada/stamp-gen_il ; @true ++ ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* ++ $(MKDIR) ada/gen_il ++- cd ada/gen_il; gnatmake -g $(GEN_IL_FLAGS) gen_il-main +++ cd ada/gen_il; $(GNATMAKE_FOR_BUILD) -g $(GEN_IL_FLAGS) gen_il-main ++ # Ignore errors to work around finalization issues in older compilers ++ - cd ada/gen_il; ./gen_il-main ++ $(fsrcdir)/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads ++@@ -39,14 +39,14 @@ ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* ++ # would cause bootstrapping with older compilers to fail. You can call it by ++ # hand, as a sanity check that these files are legal. ++ ada/seinfo_tables.o: ada/seinfo_tables.ads ada/seinfo_tables.adb ++- cd ada ; gnatmake $(GEN_IL_INCLUDES) seinfo_tables.adb -gnatU -gnatX +++ cd ada ; $(GNATMAKE_FOR_BUILD) $(GEN_IL_INCLUDES) seinfo_tables.adb -gnatU -gnatX ++ ++ ada/snames.h ada/snames.ads ada/snames.adb : ada/stamp-snames ; @true ++ ada/stamp-snames : ada/snames.ads-tmpl ada/snames.adb-tmpl ada/snames.h-tmpl ada/xsnamest.adb ada/xutil.ads ada/xutil.adb ++ -$(MKDIR) ada/bldtools/snamest ++ $(RM) $(addprefix ada/bldtools/snamest/,$(notdir $^)) ++ $(CP) $^ ada/bldtools/snamest ++- cd ada/bldtools/snamest && gnatmake xsnamest && ./xsnamest +++ cd ada/bldtools/snamest && $(GNATMAKE_FOR_BUILD) xsnamest && ./xsnamest ++ $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.ns ada/snames.ads ++ $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nb ada/snames.adb ++ $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nh ada/snames.h ++--- a/src/gcc/ada/gcc-interface/Makefile.in +++++ b/src/gcc/ada/gcc-interface/Makefile.in ++@@ -648,7 +648,7 @@ OSCONS_EXTRACT=$(GCC_FOR_ADA_RTS) $(GNAT ++ -$(MKDIR) ./bldtools/oscons ++ $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) ++ $(CP) $^ ./bldtools/oscons ++- (cd ./bldtools/oscons ; gnatmake xoscons) +++ (cd ./bldtools/oscons ; $(GNATMAKE_FOR_BUILD) xoscons) ++ ++ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons ++ $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s ++--- a/src/gnattools/Makefile.in +++++ b/src/gnattools/Makefile.in ++@@ -33,7 +33,8 @@ INSTALL_PROGRAM = @INSTALL_PROGRAM@ ++ # Nonstandard autoconf-set variables. ++ LN_S=@LN_S@ ++ target_noncanonical=@target_noncanonical@ ++-host_noncanonical=@host_noncanonical@ +++GNATMAKE=@GNATMAKE@ +++GNATBIND=@GNATBIND@ ++ ++ # Variables for the user (or the top level) to override. ++ exeext = @EXEEXT@ ++@@ -122,17 +123,11 @@ TOOLS_FLAGS_TO_PASS_RE= \ ++ "TOOLSCASE=cross" ++ ++ # Variables for gnattools, cross ++-ifeq ($(build), $(host)) ++- GNATMAKE_FOR_HOST=gnatmake ++- GNATLINK_FOR_HOST=gnatlink ++- GNATBIND_FOR_HOST=gnatbind ++- GNATLS_FOR_HOST=gnatls ++-else ++- GNATMAKE_FOR_HOST=$(host_noncanonical)-gnatmake ++- GNATLINK_FOR_HOST=$(host_noncanonical)-gnatlink ++- GNATBIND_FOR_HOST=$(host_noncanonical)-gnatbind ++- GNATLS_FOR_HOST=$(host_noncanonical)-gnatls ++-endif +++# See configure.ac for what "cross" means here. +++GNATMAKE_FOR_HOST=$(GNATMAKE) +++GNATLINK_FOR_HOST=$(subst gnatmake,gnatlink,$(GNATMAKE)) +++GNATBIND_FOR_HOST=$(GNATBIND) +++GNATLS_FOR_HOST=$(subst gnatmake,gnatls,$(GNATMAKE)) ++ ++ # Put the host RTS dir first in the PATH to hide the default runtime ++ # files that are among the sources ++--- a/src/gnattools/configure.ac +++++ b/src/gnattools/configure.ac ++@@ -45,7 +45,7 @@ AC_CANONICAL_BUILD ++ AC_CANONICAL_HOST ++ AC_CANONICAL_TARGET ++ ++-ACX_NONCANONICAL_HOST +++ACX_PROG_GNAT ++ ACX_NONCANONICAL_TARGET ++ ++ # Need to pass this down for now :-P diff --cc debian/patches/ada-gnattools-cross.diff index 0000000,0000000..12896ea new file mode 100644 --- /dev/null +++ b/debian/patches/ada-gnattools-cross.diff @@@ -1,0 -1,0 +1,228 @@@ ++TODO: Check that the part removing the dependency from stamp-gnatlib1 ++to stamp-gnatlib2 is not necessary anymore with gcc-9. ++ ++* Link tools dynamically. ++* Prevent direct embedding of libada objects: ++ Mark ALI files as read-only, remove objects after the build. ++ A solution keeping the objects would be more intrusive. ++* Rebuild gnatbind/make/link with themselves. ++ This removes unneeded objects inherited from the hardcoded bootstrap list. ++ The same thing would be useful for gnat1drv, but is less easy. ++* TOOLS_ALREADY_COMPILED lists LIBGNAT objects that ++ gcc/ada/gcc-interface/Makefile should not rebuild. ++* Link libgnat/gnarl with LDFLAGS. ++* Link libgnarl with an explicit path to a shared object. ++ This prevents undefined symbols or unwanted usage of host libgnat. ++* Compile with -gnatn for efficiency. ++ Double-check the link since Debian moves some symbols. ++* set LD_LIBRARY_PATH so that rebuilt tools can be executed. ++ ++--- a/src/gcc/ada/Makefile.rtl +++++ b/src/gcc/ada/Makefile.rtl ++@@ -2041,6 +2041,11 @@ ifeq ($(strip $(filter-out s390% linux%, ++ endif ++ endif ++ +++ifeq ($(strip $(filter-out hppa% unknown linux gnu,$(targ))),) +++ GNATLIB_SHARED = gnatlib-shared-dual +++ LIBRARY_VERSION := $(LIB_VERSION) +++endif +++ ++ # HP/PA HP-UX 11 ++ ifeq ($(SELECTED_PAIRS),PAIRS_NONE) ++ ifeq ($(strip $(filter-out hppa% hp hpux11%,$(target_cpu) $(target_vendor) $(target_os))),) ++--- a/src/gcc/ada/gcc-interface/Makefile.in +++++ b/src/gcc/ada/gcc-interface/Makefile.in ++@@ -516,6 +516,20 @@ gnatlink-re: ../stamp-tools gnatmake-re ++ --LINK="$(GCC_LINK)" $(TOOLS_LIBS) ++ $(MV) ../../gnatlinknew$(exeext) ../../gnatlink$(exeext) ++ +++gnatbind-re: ../stamp-tools gnatmake-re gnatlink-re +++ $(GNATMAKE) -j0 -c $(ADA_INCLUDES) gnatbind --GCC="$(CC) $(ALL_ADAFLAGS)" +++ $(GNATBIND) $(ADA_INCLUDES) $(GNATBIND_FLAGS) gnatbind +++ $(GNATLINK) -v gnatbind -o ../../gnatbind$(exeext) \ +++ --GCC="$(CC) $(ADA_INCLUDES)" --LINK="$(GCC_LINK)" $(TOOLS_LIBS) +++ +++# When driven by gnattools/Makefile for a native build, +++# TOOLS_ALREADY_COMPILED will list objects in the target standard Ada +++# libraries, that Make should avoid rebuilding. +++# We cannot use recursive variables to avoid an infinite loop, +++# so we must put this after definition of EXTRA_GNATMAKE_OBJS. +++GNATLINK_OBJS := $(filter-out $(TOOLS_ALREADY_COMPILED),$(GNATLINK_OBJS)) +++GNATMAKE_OBJS := $(filter-out $(TOOLS_ALREADY_COMPILED),$(GNATMAKE_OBJS)) +++ ++ # Needs to be built with CC=gcc ++ # Since the RTL should be built with the latest compiler, remove the ++ # stamp target in the parent directory whenever gnat1 is rebuilt ++@@ -643,7 +657,7 @@ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib ++ $(OSCONS_EXTRACT) ; \ ++ ../bldtools/oscons/xoscons s-oscons) ++ ++-gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../stamp-gnatlib2-$(RTSDIR) $(RTSDIR)/s-oscons.ads +++gnatlib: ../stamp-gnatlib1-$(RTSDIR) $(RTSDIR)/s-oscons.ads ++ test -f $(RTSDIR)/s-oscons.ads || exit 1 ++ # C files ++ $(MAKE) -C $(RTSDIR) \ ++@@ -675,18 +689,30 @@ gnatlib: ../stamp-gnatlib1-$(RTSDIR) ../ ++ $(RANLIB_FOR_TARGET) $(RTSDIR)/libgmem$(arext) ++ endif ++ $(CHMOD) a-wx $(RTSDIR)/*.ali +++# Provide .ads .adb (read-only).ali .so .a, but prevent direct use of .o. +++ $(RM) $(RTSDIR)/*.o ++ touch ../stamp-gnatlib-$(RTSDIR) ++ ++ # Warning: this target assumes that LIBRARY_VERSION has been set correctly. ++ gnatlib-shared-default: ++- $(MAKE) $(FLAGS_TO_PASS) \ ++- GNATLIBFLAGS="$(GNATLIBFLAGS)" \ ++- GNATLIBCFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ ++- GNATLIBCFLAGS_FOR_C="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-lto" \ ++- MULTISUBDIR="$(MULTISUBDIR)" \ ++- THREAD_KIND="$(THREAD_KIND)" \ ++- LN_S="$(LN_S)" \ ++- gnatlib +++ $(MAKE) -C $(RTSDIR) \ +++ CC="`echo \"$(GCC_FOR_TARGET)\" \ +++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ +++ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \ +++ CFLAGS="$(GNATLIBCFLAGS_FOR_C) $(PICFLAG_FOR_TARGET) -fno-lto" \ +++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ +++ srcdir=$(fsrcdir) \ +++ -f ../Makefile $(LIBGNAT_OBJS) +++ $(MAKE) -C $(RTSDIR) \ +++ CC="`echo \"$(GCC_FOR_TARGET)\" \ +++ | sed -e 's,\./xgcc,../../xgcc,' -e 's,-B\./,-B../../,'`" \ +++ ADA_INCLUDES="" \ +++ CFLAGS="$(GNATLIBCFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ +++ ADAFLAGS="$(GNATLIBFLAGS) $(PICFLAG_FOR_TARGET) -fno-lto" \ +++ FORCE_DEBUG_ADAFLAGS="$(FORCE_DEBUG_ADAFLAGS)" \ +++ srcdir=$(fsrcdir) \ +++ -f ../Makefile \ +++ $(GNATRTL_OBJS) ++ $(RM) $(RTSDIR)/libgna*$(soext) ++ cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared $(GNATLIBCFLAGS) \ ++ $(PICFLAG_FOR_TARGET) \ ++@@ -697,8 +723,10 @@ gnatlib-shared-default: ++ cd $(RTSDIR); $(GCC_FOR_ADA_RTS) -shared $(GNATLIBCFLAGS) \ ++ $(PICFLAG_FOR_TARGET) \ ++ -o libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +++ $(LDFLAGS) \ ++ $(GNATRTL_TASKING_OBJS) \ ++ $(SO_OPTS)libgnarl$(hyphen)$(LIBRARY_VERSION)$(soext) \ +++ libgnat$(hyphen)$(LIBRARY_VERSION).so \ ++ $(THREADSLIB) ++ cd $(RTSDIR); $(LN_S) libgnat$(hyphen)$(LIBRARY_VERSION)$(soext) \ ++ libgnat$(soext) ++@@ -714,6 +742,10 @@ gnatlib-shared-default: ++ $(addprefix $(RTSDIR)/,$(GNATRTL_TASKING_OBJS)) ++ $(RANLIB_FOR_TARGET) $(RTSDIR)/libgnarl_pic$(arext) ++ +++# Provide .ads .adb (read-only).ali .so .a, but prevent direct use of .o. +++ $(CHMOD) a-wx $(RTSDIR)/*.ali +++ $(RM) $(RTSDIR)/*.o +++ ++ gnatlib-shared-dual: ++ $(MAKE) $(FLAGS_TO_PASS) \ ++ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ ++@@ -723,11 +755,8 @@ gnatlib-shared-dual: ++ MULTISUBDIR="$(MULTISUBDIR)" \ ++ THREAD_KIND="$(THREAD_KIND)" \ ++ LN_S="$(LN_S)" \ ++- gnatlib-shared-default ++- $(MV) $(RTSDIR)/libgna*$(soext) . ++- $(MV) $(RTSDIR)/libgnat_pic$(arext) . ++- $(MV) $(RTSDIR)/libgnarl_pic$(arext) . ++- $(RM) ../stamp-gnatlib2-$(RTSDIR) +++ gnatlib +++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali ++ $(MAKE) $(FLAGS_TO_PASS) \ ++ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ ++ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ ++@@ -735,10 +764,7 @@ gnatlib-shared-dual: ++ MULTISUBDIR="$(MULTISUBDIR)" \ ++ THREAD_KIND="$(THREAD_KIND)" \ ++ LN_S="$(LN_S)" \ ++- gnatlib ++- $(MV) libgna*$(soext) $(RTSDIR) ++- $(MV) libgnat_pic$(arext) $(RTSDIR) ++- $(MV) libgnarl_pic$(arext) $(RTSDIR) +++ gnatlib-shared-default ++ ++ # Remove all the object files. They cannot be reused because they have ++ # been generated for the static library and the shared library will be ++@@ -757,9 +783,8 @@ gnatlib-shared-dual-win32: ++ MULTISUBDIR="$(MULTISUBDIR)" \ ++ THREAD_KIND="$(THREAD_KIND)" \ ++ LN_S="$(LN_S)" \ ++- gnatlib-shared-win32 ++- $(MV) $(RTSDIR)/libgna*$(soext) . ++- $(RM) ../stamp-gnatlib2-$(RTSDIR) +++ gnatlib +++ $(RM) $(RTSDIR)/*.o $(RTSDIR)/*.ali ++ $(MAKE) $(FLAGS_TO_PASS) \ ++ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ ++ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ ++@@ -767,8 +792,7 @@ gnatlib-shared-dual-win32: ++ MULTISUBDIR="$(MULTISUBDIR)" \ ++ THREAD_KIND="$(THREAD_KIND)" \ ++ LN_S="$(LN_S)" \ ++- gnatlib ++- $(MV) libgna*$(soext) $(RTSDIR) +++ gnatlib-shared-win32 ++ ++ # ??? we need to add the option to support auto-import of arrays/records to ++ # the GNATLIBFLAGS when this will be supported by GNAT. At this point we will ++--- a/src/gnattools/Makefile.in +++++ b/src/gnattools/Makefile.in ++@@ -78,16 +78,23 @@ CXX_LFLAGS = \ ++ -L../../../$(target_noncanonical)/libstdc++-v3/src/.libs \ ++ -L../../../$(target_noncanonical)/libstdc++-v3/libsupc++/.libs ++ +++rtsdir := $(abspath ../gcc/ada/rts) +++ ++ # Variables for gnattools, native ++ TOOLS_FLAGS_TO_PASS_NATIVE= \ ++ "CC=../../xgcc -B../../" \ ++ "CXX=../../xg++ -B../../ $(CXX_LFLAGS)" \ ++ "CFLAGS=$(CFLAGS) $(WARN_CFLAGS) $(PICFLAG)" \ ++- "LDFLAGS=$(LDFLAGS) $(LD_PICFLAG)" \ ++- "ADAFLAGS=$(ADAFLAGS)" \ +++ "LDFLAGS=$(LDFLAGS) $(LD_PICFLAG) -Wl,--no-allow-shlib-undefined \ +++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ +++ "ADAFLAGS=$(ADAFLAGS) -gnatn" \ ++ "ADA_CFLAGS=$(ADA_CFLAGS)" \ ++ "INCLUDES=$(INCLUDES_FOR_SUBDIR)" \ ++- "ADA_INCLUDES=-I../rts $(ADA_INCLUDES_FOR_SUBDIR)"\ +++ "ADA_INCLUDES=-I- -nostdinc -I$(rtsdir) $(ADA_INCLUDES_FOR_SUBDIR)" \ +++ "TOOLS_ALREADY_COMPILED=$(foreach d, $(rtsdir), \ +++ $(patsubst $(d)/%.ali,%.o, $(wildcard $(d)/*.ali)))" \ +++ 'LIBGNAT=$(rtsdir)/libgnat-$$(LIB_VERSION).so' \ +++ "GNATBIND_FLAGS=-nostdlib -x" \ ++ "exeext=$(exeext)" \ ++ "fsrcdir=$(fsrcdir)" \ ++ "srcdir=$(fsrcdir)" \ ++@@ -197,6 +204,10 @@ $(GCC_DIR)/stamp-tools: ++ # to be able to build gnatmake without a version of gnatmake around. Once ++ # everything has been compiled once, gnatmake can be recompiled with itself ++ # (see target regnattools) +++gnattools-native: export LD_LIBRARY_PATH := \ +++ $(if $(LD_LIBRARY_PATH),$(LD_LIBRARY_PATH):)$(rtsdir) +++# Useful even for 1st pass, as ../../gnatmake may already be +++# dynamically linked in case this target has already been invoked. ++ gnattools-native: $(GCC_DIR)/stamp-tools $(GCC_DIR)/stamp-gnatlib-rts ++ # gnattools1 ++ $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ ++@@ -205,6 +216,13 @@ gnattools-native: $(GCC_DIR)/stamp-tools ++ # gnattools2 ++ $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ ++ $(TOOLS_FLAGS_TO_PASS_NATIVE) common-tools +++# The hard-coded object lists for gnatbind/make/link contain unneeded +++# objects. Use the fresh tools to recompute dependencies. +++# A separate Make run avoids race conditions between gnatmakes +++# building the same object for common-tools and gnat*-re. +++# (parallelism is already forbidden between gnat*-re targets) +++ $(MAKE) -C $(GCC_DIR)/ada/tools -f ../Makefile \ +++ $(TOOLS_FLAGS_TO_PASS_NATIVE) gnatbind-re gnatmake-re gnatlink-re ++ ++ # gnatmake/link can be built with recent gnatmake/link if they are available. ++ # This is especially convenient for building cross tools or for rebuilding diff --cc debian/patches/ada-lib-info-source-date-epoch.diff index 0000000,0000000..9f27cfb new file mode 100644 --- /dev/null +++ b/debian/patches/ada-lib-info-source-date-epoch.diff @@@ -1,0 -1,0 +1,121 @@@ ++Description: set ALI timestamps from SOURCE_DATE_EPOCH if available. ++ When the SOURCE_DATE_EPOCH environment variable is set, ++ replace timestamps more recent than its value with its value ++ when writing Ada Library Information (ALI) files. ++ This allow reproducible builds from generated or patched Ada sources. ++ https://reproducible-builds.org/specs/source-date-epoch/ ++ . ++ Also see debian/ada/test_ada_source_date_epoch.sh. ++Author: Nicolas Boulenguez ++ ++--- a/src/gcc/ada/osint.adb +++++ b/src/gcc/ada/osint.adb ++@@ -64,6 +64,10 @@ package body Osint is ++ -- Used in Locate_File as a fake directory when Name is already an ++ -- absolute path. ++ +++ Source_Date_Epoch : OS_Time := Invalid_Time; +++ -- Set at startup by the Initialize procedure. +++ -- See the specification of the File_Time_Stamp functions. +++ ++ ------------------------------------- ++ -- Use of Name_Find and Name_Enter -- ++ ------------------------------------- ++@@ -1125,8 +1129,14 @@ package body Osint is ++ is ++ function Internal (N : C_File_Name; A : System.Address) return OS_Time; ++ pragma Import (C, Internal, "__gnat_file_time_name_attr"); +++ T : OS_Time := Internal (Name, Attr.all'Address); ++ begin ++- return Internal (Name, Attr.all'Address); +++ if Source_Date_Epoch /= Invalid_Time and then T /= Invalid_Time +++ and then Source_Date_Epoch < T +++ then +++ T := Source_Date_Epoch; +++ end if; +++ return T; ++ end File_Time_Stamp; ++ ++ function File_Time_Stamp ++@@ -1149,6 +1159,7 @@ package body Osint is ++ ---------------- ++ ++ function File_Stamp (Name : File_Name_Type) return Time_Stamp_Type is +++ T : OS_Time; ++ begin ++ if Name = No_File then ++ return Empty_Time_Stamp; ++@@ -1160,9 +1171,13 @@ package body Osint is ++ -- not exist, and OS_Time_To_GNAT_Time will convert this value to ++ -- Empty_Time_Stamp. Therefore we do not need to first test whether ++ -- the file actually exists, which saves a system call. ++- ++- return OS_Time_To_GNAT_Time ++- (File_Time_Stamp (Name_Buffer (1 .. Name_Len))); +++ T := File_Time_Stamp (Name_Buffer (1 .. Name_Len)); +++ if Source_Date_Epoch /= Invalid_Time and then T /= Invalid_Time +++ and then Source_Date_Epoch < T +++ then +++ T := Source_Date_Epoch; +++ end if; +++ return OS_Time_To_GNAT_Time (T); ++ end File_Stamp; ++ ++ function File_Stamp (Name : Path_Name_Type) return Time_Stamp_Type is ++@@ -3213,4 +3228,34 @@ begin ++ Osint.Initialize; ++ end Initialization; ++ +++ -- When the SOURCE_DATE_EPOCH the environment variable is not empty, +++ -- only contains decimal digits and represents a value lower than 2**63, +++ -- set Source_Date_Epoch to this value. +++ Set_Source_Date_Epoch : declare +++ Env_Var : String_Access := Getenv ("SOURCE_DATE_EPOCH"); +++ Epoch : Long_Long_Integer range 0 .. Long_Long_Integer'Last := 0; +++ Index : Integer range Env_Var.all'First .. Env_Var.all'Last + 1 +++ := Env_Var.all'First; +++ Digit : Long_Long_Integer; +++ begin +++ if Index <= Env_Var.all'Last then +++ -- Calling System.Val_LLI breaks the bootstrap sequence. +++ loop +++ Digit := Character'Pos (Env_Var.all (Index)) - Character'Pos ('0'); +++ exit when Digit not in 0 .. 9; +++ exit when Long_Long_Integer'Last - Digit < Epoch; +++ Epoch := Epoch + Digit; +++ if Index = Env_Var.all'Last then +++ Source_Date_Epoch := To_Ada (Epoch); +++ exit; +++ end if; +++ Index := Index + 1; +++ -- The division is computed once at build time. +++ exit when Long_Long_Integer'Last / 10 < Epoch; +++ Epoch := Epoch * 10; +++ end loop; +++ end if; +++ Free (Env_Var); +++ end Set_Source_Date_Epoch; +++ ++ end Osint; ++--- a/src/gcc/ada/osint.ads +++++ b/src/gcc/ada/osint.ads ++@@ -195,6 +195,7 @@ package Osint is ++ -- information in order to locate it. If the source file cannot be opened, ++ -- or Name = No_File, and all blank time stamp is returned (this is not an ++ -- error situation). +++ -- Handles SOURCE_DATE_EPOCH like File_Time_Stamp functions below. ++ ++ function File_Stamp (Name : Path_Name_Type) return Time_Stamp_Type; ++ -- Same as above for a path name ++@@ -302,6 +303,11 @@ package Osint is ++ (Name : Path_Name_Type; ++ Attr : access File_Attributes) return Time_Stamp_Type; ++ -- Return the time stamp of the file +++ -- If the SOURCE_DATE_EPOCH environment variable exists and represents +++ -- an OS_Type value, any more recent file time stamp is truncated. +++ -- This ensures that gnat1 writes deterministic .ali files even in +++ -- the presence of patched or generated sources. See +++ -- https://reproducible-builds.org/specs/source-date-epoch. ++ ++ function Is_Readable_File ++ (Name : C_File_Name; diff --cc debian/patches/ada-link-lib.diff index 0000000,0000000..62624f1 new file mode 100644 --- /dev/null +++ b/debian/patches/ada-link-lib.diff @@@ -1,0 -1,0 +1,168 @@@ ++Description: adapt libgnat build for Debian ++ Don't include a runtime link path (-rpath), when linking binaries. ++ . ++ Build the shared libraries on hppa-linux (see #786692 below). ++ TODO: ask the reporter (no porterbox) to attempt a rebuild without this ++ chunk, now that we diverge less from upstream. ++ . ++ Instead of building libada as a target library only, build it as ++ both a host and, if different, target library. ++ . ++ Compile with -gnatn for efficiency. ++ Double-check the link since Debian moves some symbols. ++ . ++ Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} ++ at build time, but we do not want to Build-Depend: guile. ++ # export QUILT_PATCHES=debian/patches ++ # quilt pop $this.diff ++ # quilt add src/Makefile.in ++ # (cd src && autogen Makefile.def) ++ # quilt refresh --no-timestamps --no-index -pab ++ # quilt push -a ++Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=786692 ++Forwarded: not-needed ++Author: Ludovic Brenta ++Author: Nicolas Boulenguez ++Author: Matthias Klose ++ ++--- a/src/gcc/ada/gcc-interface/config-lang.in +++++ b/src/gcc/ada/gcc-interface/config-lang.in ++@@ -44,7 +44,7 @@ if test "x$cross_compiling/$build/$host" ++ fi ++ ++ target_libs="target-libada" ++-lang_dirs="gnattools" +++lang_dirs="libada gnattools" ++ ++ # Ada is not enabled by default for the time being. ++ build_by_default=no ++--- a/src/gcc/ada/link.c +++++ b/src/gcc/ada/link.c ++@@ -107,9 +107,9 @@ const char *__gnat_default_libgcc_subdir ++ || defined (__NetBSD__) || defined (__OpenBSD__) \ ++ || defined (__QNX__) ++ const char *__gnat_object_file_option = "-Wl,@"; ++-const char *__gnat_run_path_option = "-Wl,-rpath,"; ++-char __gnat_shared_libgnat_default = STATIC; ++-char __gnat_shared_libgcc_default = STATIC; +++const char *__gnat_run_path_option = ""; +++char __gnat_shared_libgnat_default = SHARED; +++char __gnat_shared_libgcc_default = SHARED; ++ int __gnat_link_max = 8192; ++ unsigned char __gnat_objlist_file_supported = 1; ++ const char *__gnat_object_library_extension = ".a"; ++@@ -129,9 +129,9 @@ const char *__gnat_default_libgcc_subdir ++ ++ #elif defined (__linux__) || defined (__GLIBC__) ++ const char *__gnat_object_file_option = "-Wl,@"; ++-const char *__gnat_run_path_option = "-Wl,-rpath,"; ++-char __gnat_shared_libgnat_default = STATIC; ++-char __gnat_shared_libgcc_default = STATIC; +++const char *__gnat_run_path_option = ""; +++char __gnat_shared_libgnat_default = SHARED; +++char __gnat_shared_libgcc_default = SHARED; ++ int __gnat_link_max = 8192; ++ unsigned char __gnat_objlist_file_supported = 1; ++ const char *__gnat_object_library_extension = ".a"; ++--- a/src/libada/Makefile.in +++++ b/src/libada/Makefile.in ++@@ -79,10 +79,11 @@ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /, ++ # by recursive make invocations in gcc/ada/Makefile.in ++ LIBADA_FLAGS_TO_PASS = \ ++ "MAKEOVERRIDES=" \ ++- "LDFLAGS=$(LDFLAGS)" \ +++ "LDFLAGS=$(LDFLAGS) -Wl,--no-allow-shlib-undefined \ +++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ ++ "LN_S=$(LN_S)" \ ++ "SHELL=$(SHELL)" \ ++- "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS)" \ +++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ ++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ ++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ ++ "PICFLAG_FOR_TARGET=$(PICFLAG)" \ ++--- a/src/Makefile.def +++++ b/src/Makefile.def ++@@ -414,6 +414,7 @@ dependencies = { module=all-libcpp; on=a ++ ++ dependencies = { module=all-fixincludes; on=all-libiberty; }; ++ +++dependencies = { module=all-target-libada; on=all-gcc; }; ++ dependencies = { module=all-gnattools; on=all-target-libada; }; ++ dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; ++ ++--- a/src/Makefile.in +++++ b/src/Makefile.in ++@@ -69229,6 +69229,7 @@ configure-target-libgo: maybe-all-target ++ @endif gcc-bootstrap ++ ++ @unless gcc-bootstrap +++all-target-libada: maybe-all-gcc ++ all-gnattools: maybe-all-target-libstdc++-v3 ++ configure-libcc1: maybe-configure-gcc ++ all-libcc1: maybe-all-gcc ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -143,6 +143,11 @@ host_libs="gettext libiberty opcodes bfd ++ # If --enable-gold is used, "gold" may replace "ld". ++ host_tools="texinfo flex bison binutils gas ld fixincludes gcc cgen sid sim gdb gdbserver gprof etc expect dejagnu m4 utils guile fastjar gnattools libcc1 gm2tools gotools c++tools" ++ +++case "${target}" in +++ hppa64-*linux*) ;; +++ *) target_libiberty="target-libiberty";; +++esac +++ ++ # these libraries are built for the target environment, and are built after ++ # the host libraries and the host tools (which may be a cross compiler) ++ # Note that libiberty is not a target library. ++@@ -163,6 +168,7 @@ target_libraries="target-libgcc \ ++ target-libobjc \ ++ target-libgcobol \ ++ target-libada \ +++ ${target_libiberty} \ ++ target-libgm2 \ ++ target-libgo \ ++ target-libgrust \ ++--- a/src/gcc/ada/gcc-interface/Make-lang.in +++++ b/src/gcc/ada/gcc-interface/Make-lang.in ++@@ -43,7 +43,7 @@ RMDIR = rm -rf ++ ++ ++ # Extra flags to pass to recursive makes. ++-COMMON_ADAFLAGS= -gnatpg +++COMMON_ADAFLAGS= -gnatpgn ++ ifeq ($(TREECHECKING),) ++ CHECKING_ADAFLAGS= ++ else ++@@ -267,7 +267,9 @@ GCC_LINKERFLAGS = $(filter-out -Werror - ++ GCC_LDFLAGS = $(filter-out -static-libgcc, $(LDFLAGS)) ++ else ++ # Strip -Werror during linking for the LTO bootstrap ++-GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) +++GCC_LINKERFLAGS = $(filter-out -Werror, $(ALL_LINKERFLAGS)) \ +++ -Wl,--no-allow-shlib-undefined -Wl,--no-copy-dt-needed-entries \ +++ -Wl,--no-undefined ++ GCC_LDFLAGS = $(LDFLAGS) ++ endif ++ ++--- a/src/gcc/testsuite/lib/gnat.exp +++++ b/src/gcc/testsuite/lib/gnat.exp ++@@ -115,6 +115,7 @@ proc gnat_target_compile { source dest t ++ global TOOL_OPTIONS ++ global gnat_target_current ++ global TEST_ALWAYS_FLAGS +++ global ld_library_path ++ ++ # dg-require-effective-target tests must be compiled as C. ++ if [ string match "*.c" $source ] then { ++@@ -144,6 +145,11 @@ proc gnat_target_compile { source dest t ++ # Always log so compilations can be repeated manually. ++ verbose -log "ADA_INCLUDE_PATH=$rtsdir/adainclude" ++ verbose -log "ADA_OBJECTS_PATH=$rtsdir/adainclude" +++ +++ if { ! [ string match "*/libada/adalib*" $ld_library_path ] } { +++ append ld_library_path ":$rtsdir/adalib" +++ set_ld_library_path_env_vars +++ } ++ } ++ ++ lappend options "compiler=$GNAT_UNDER_TEST -q -f" diff --cc debian/patches/ada-perl-shebang.diff index 0000000,0000000..ea930b1 new file mode 100644 --- /dev/null +++ b/debian/patches/ada-perl-shebang.diff @@@ -1,0 -1,0 +1,10 @@@ ++# DP: Fix perl shebang for the gnathtml binary. ++ ++--- a/src/gcc/ada/gnathtml.pl +++++ b/src/gcc/ada/gnathtml.pl ++@@ -1,4 +1,4 @@ ++-#! /usr/bin/env perl +++#! /usr/bin/perl ++ ++ #----------------------------------------------------------------------------- ++ #- -- diff --cc debian/patches/ada-sjlj.diff index 0000000,0000000..a63a6da new file mode 100644 --- /dev/null +++ b/debian/patches/ada-sjlj.diff @@@ -1,0 -1,0 +1,498 @@@ ++Autogen should refresh src/Makefile.in from src/Makefile.{def,tpl} ++at build time, but we do not want to Build-Depend: guile. ++# export QUILT_PATCHES=debian/patches ++# quilt pop $this.diff ++# quilt add src/Makefile.in ++# (cd src && autogen Makefile.def) ++# quilt refresh --no-timestamps --no-index -pab ++# quilt push -a ++ ++--- /dev/null +++++ b/src/libada-sjlj/Makefile.in ++@@ -0,0 +1,204 @@ +++# Makefile for libada. +++# Copyright (C) 2003-2017 Free Software Foundation, Inc. +++# +++# This file is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with this program; see the file COPYING3. If not see +++# . +++ +++# Default target; must be first. +++all: gnatlib +++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) +++ +++.PHONY: all +++ +++## Multilib support variables. +++MULTISRCTOP = +++MULTIBUILDTOP = +++MULTIDIRS = +++MULTISUBDIR = +++MULTIDO = true +++MULTICLEAN = true +++ +++# Standard autoconf-set variables. +++SHELL = @SHELL@ +++srcdir = @srcdir@ +++libdir = @libdir@ +++build = @build@ +++target = @target@ +++prefix = @prefix@ +++ +++# Nonstandard autoconf-set variables. +++enable_shared = @enable_shared@ +++ +++LN_S=@LN_S@ +++AWK=@AWK@ +++ +++ifeq (cp -p,$(LN_S)) +++LN_S_RECURSIVE = cp -pR +++else +++LN_S_RECURSIVE = $(LN_S) +++endif +++ +++# Variables for the user (or the top level) to override. +++objext=.o +++THREAD_KIND=native +++TRACE=no +++LDFLAGS= +++ +++# The tedious process of getting CFLAGS right. +++CFLAGS=-g +++PICFLAG = @PICFLAG@ +++GNATLIBFLAGS= -W -Wall -gnatpg -nostdinc +++GNATLIBCFLAGS= -g -O2 +++GNATLIBCFLAGS_FOR_C = -W -Wall $(GNATLIBCFLAGS) $(CFLAGS_FOR_TARGET) \ +++ -fexceptions -DIN_RTS @have_getipinfo@ @have_capability@ +++ +++host_subdir = @host_subdir@ +++GCC_DIR=$(MULTIBUILDTOP)../../$(host_subdir)/gcc +++ +++target_noncanonical:=@target_noncanonical@ +++version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) +++libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) +++ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) +++ADA_RTS_SUBDIR=./rts$(subst /,_,$(MULTISUBDIR)) +++ +++# exeext should not be used because it's the *host* exeext. We're building +++# a *target* library, aren't we?!? Likewise for CC. Still, provide bogus +++# definitions just in case something slips through the safety net provided +++# by recursive make invocations in gcc/ada/Makefile.in +++LIBADA_FLAGS_TO_PASS = \ +++ "MAKEOVERRIDES=" \ +++ "LDFLAGS=$(LDFLAGS) -Wl,--no-allow-shlib-undefined \ +++ -Wl,--no-copy-dt-needed-entries -Wl,--no-undefined" \ +++ "LN_S=$(LN_S)" \ +++ "SHELL=$(SHELL)" \ +++ "GNATLIBFLAGS=$(GNATLIBFLAGS) $(MULTIFLAGS) -gnatn" \ +++ "GNATLIBCFLAGS=$(GNATLIBCFLAGS) $(MULTIFLAGS)" \ +++ "GNATLIBCFLAGS_FOR_C=$(GNATLIBCFLAGS_FOR_C) $(MULTIFLAGS)" \ +++ "PICFLAG_FOR_TARGET=$(PICFLAG)" \ +++ "THREAD_KIND=$(THREAD_KIND)" \ +++ "TRACE=$(TRACE)" \ +++ "MULTISUBDIR=$(MULTISUBDIR)" \ +++ "libsubdir=$(libsubdir)" \ +++ "objext=$(objext)" \ +++ "prefix=$(prefix)" \ +++ "exeext=.exeext.should.not.be.used " \ +++ 'CC=the.host.compiler.should.not.be.needed' \ +++ "GCC_FOR_TARGET=$(CC)" \ +++ "CFLAGS=$(CFLAGS)" \ +++ "RTSDIR=rts-sjlj" +++ +++# Rules to build gnatlib. +++.PHONY: gnatlib gnatlib-plain gnatlib-sjlj gnatlib-zcx gnatlib-shared osconstool +++gnatlib: gnatlib-sjlj +++ +++gnatlib-plain: osconstool $(GCC_DIR)/ada/Makefile +++ test -f stamp-libada || \ +++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) gnatlib \ +++ && touch stamp-libada +++ -rm -rf adainclude +++ -rm -rf adalib +++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude +++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib +++ +++gnatlib-sjlj gnatlib-zcx gnatlib-shared: osconstool $(GCC_DIR)/ada/Makefile +++ test -f stamp-libada || \ +++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) $@ \ +++ && touch stamp-libada-sjlj +++ -rm -rf adainclude +++ -rm -rf adalib +++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adainclude +++ $(LN_S_RECURSIVE) $(ADA_RTS_DIR) adalib +++ +++osconstool: +++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) ./bldtools/oscons/xoscons +++ +++install-gnatlib: $(GCC_DIR)/ada/Makefile +++ $(MAKE) -C $(GCC_DIR)/ada $(LIBADA_FLAGS_TO_PASS) install-gnatlib-sjlj +++ +++# Check uninstalled version. +++check: +++ +++# Check installed version. +++installcheck: +++ +++# Build info (none here). +++info: +++ +++# Build DVI (none here). +++dvi: +++ +++# Build PDF (none here). +++pdf: +++ +++# Build html (none here). +++html: +++ +++# Build TAGS (none here). +++TAGS: +++ +++.PHONY: check installcheck info dvi pdf html +++ +++# Installation rules. +++install: install-gnatlib +++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) +++ +++install-strip: install +++ +++install-info: +++ +++install-pdf: +++ +++install-html: +++ +++.PHONY: install install-strip install-info install-pdf install-html +++ +++# Cleaning rules. +++mostlyclean: +++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) +++ +++clean: +++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) +++ +++distclean: +++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) +++ $(RM) Makefile config.status config.log +++ +++maintainer-clean: +++ +++.PHONY: mostlyclean clean distclean maintainer-clean +++ +++# Rules for rebuilding this Makefile. +++Makefile: $(srcdir)/Makefile.in config.status +++ CONFIG_FILES=$@ ; \ +++ CONFIG_HEADERS= ; \ +++ $(SHELL) ./config.status +++ +++config.status: $(srcdir)/configure +++ $(SHELL) ./config.status --recheck +++ +++AUTOCONF = autoconf +++configure_deps = \ +++ $(srcdir)/configure.ac \ +++ $(srcdir)/../config/acx.m4 \ +++ $(srcdir)/../config/multi.m4 \ +++ $(srcdir)/../config/override.m4 \ +++ $(srcdir)/../config/picflag.m4 \ +++ $(srcdir)/../config/unwind_ipinfo.m4 +++ +++$(srcdir)/configure: @MAINT@ $(configure_deps) +++ cd $(srcdir) && $(AUTOCONF) +++ +++# Don't export variables to the environment, in order to not confuse +++# configure. +++.NOEXPORT: ++--- /dev/null +++++ b/src/libada-sjlj/configure.ac ++@@ -0,0 +1,156 @@ +++# Configure script for libada. +++# Copyright (C) 2003-2017 Free Software Foundation, Inc. +++# +++# This file is free software; you can redistribute it and/or modify it +++# under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, but +++# WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +++# General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with this program; see the file COPYING3. If not see +++# . +++ +++sinclude(../config/acx.m4) +++sinclude(../config/multi.m4) +++sinclude(../config/override.m4) +++sinclude(../config/picflag.m4) +++sinclude(../config/unwind_ipinfo.m4) +++ +++AC_INIT +++AC_PREREQ([2.64]) +++ +++AC_CONFIG_SRCDIR([Makefile.in]) +++ +++# Determine the host, build, and target systems +++AC_CANONICAL_BUILD +++AC_CANONICAL_HOST +++AC_CANONICAL_TARGET +++target_alias=${target_alias-$host_alias} +++ +++# Determine the noncanonical target name, for directory use. +++ACX_NONCANONICAL_TARGET +++ +++# Determine the target- and build-specific subdirectories +++GCC_TOPLEV_SUBDIRS +++ +++# Command-line options. +++# Very limited version of AC_MAINTAINER_MODE. +++AC_ARG_ENABLE([maintainer-mode], +++ [AC_HELP_STRING([--enable-maintainer-mode], +++ [enable make rules and dependencies not useful (and +++ sometimes confusing) to the casual installer])], +++ [case ${enable_maintainer_mode} in +++ yes) MAINT='' ;; +++ no) MAINT='#' ;; +++ *) AC_MSG_ERROR([--enable-maintainer-mode must be yes or no]) ;; +++ esac +++ maintainer_mode=${enableval}], +++ [MAINT='#']) +++AC_SUBST([MAINT])dnl +++ +++AM_ENABLE_MULTILIB(, ..) +++# Calculate toolexeclibdir +++# Also toolexecdir, though it's only used in toolexeclibdir +++case ${enable_version_specific_runtime_libs} in +++ yes) +++ # Need the gcc compiler version to know where to install libraries +++ # and header files if --enable-version-specific-runtime-libs option +++ # is selected. +++ toolexecdir='$(libdir)/gcc/$(target_alias)' +++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' +++ ;; +++ no) +++ if test -n "$with_cross_host" && +++ test x"$with_cross_host" != x"no"; then +++ # Install a library built with a cross compiler in tooldir, not libdir. +++ toolexecdir='$(exec_prefix)/$(target_alias)' +++ toolexeclibdir='$(toolexecdir)/lib' +++ else +++ toolexecdir='$(libdir)/gcc-lib/$(target_alias)' +++ toolexeclibdir='$(libdir)' +++ fi +++ multi_os_directory=`$CC -print-multi-os-directory` +++ case $multi_os_directory in +++ .) ;; # Avoid trailing /. +++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; +++ esac +++ ;; +++esac +++AC_SUBST(toolexecdir) +++AC_SUBST(toolexeclibdir) +++#TODO: toolexeclibdir is currently disregarded +++ +++# Check the compiler. +++# The same as in boehm-gc and libstdc++. Have to borrow it from there. +++# We must force CC to /not/ be precious variables; otherwise +++# the wrong, non-multilib-adjusted value will be used in multilibs. +++# As a side effect, we have to subst CFLAGS ourselves. +++ +++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) +++m4_define([_AC_ARG_VAR_PRECIOUS],[]) +++AC_PROG_CC +++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) +++ +++AC_SUBST(CFLAGS) +++ +++AC_ARG_ENABLE([shared], +++[AC_HELP_STRING([--disable-shared], +++ [don't provide a shared libgnat])], +++[ +++case $enable_shared in +++ yes | no) ;; +++ *) +++ enable_shared=no +++ IFS="${IFS= }"; ac_save_ifs="$IFS"; IFS="${IFS}:," +++ for pkg in $enableval; do +++ case $pkg in +++ ada | libada) +++ enable_shared=yes ;; +++ esac +++ done +++ IFS="$ac_save_ifs" +++ ;; +++esac +++], [enable_shared=yes]) +++AC_SUBST([enable_shared]) +++ +++GCC_PICFLAG +++AC_SUBST([PICFLAG]) +++ +++# These must be passed down, or are needed by gcc/libgcc.mvars +++AC_PROG_AWK +++AC_PROG_LN_S +++ +++# Determine what to build for 'gnatlib' +++if test ${enable_shared} = yes; then +++ default_gnatlib_target="gnatlib-shared" +++else +++ default_gnatlib_target="gnatlib-plain" +++fi +++AC_SUBST([default_gnatlib_target]) +++ +++# Check for _Unwind_GetIPInfo +++GCC_CHECK_UNWIND_GETIPINFO +++if test x$have_unwind_getipinfo = xyes; then +++ have_getipinfo=-DHAVE_GETIPINFO +++else +++ have_getipinfo= +++fi +++AC_SUBST([have_getipinfo]) +++ +++# Check for +++AC_CHECK_HEADER([sys/capability.h], have_capability=-DHAVE_CAPABILITY, have_capability=) +++AC_SUBST([have_capability]) +++ +++# Determine what GCC version number to use in filesystem paths. +++GCC_BASE_VER +++ +++# Output: create a Makefile. +++AC_CONFIG_FILES([Makefile]) +++ +++AC_OUTPUT ++--- a/src/Makefile.def +++++ b/src/Makefile.def ++@@ -194,6 +194,7 @@ target_modules = { module= libgnatvsn; n ++ missing= TAGS; ++ missing= install-info; ++ missing= installcheck; }; +++target_modules = { module= libada-sjlj; }; ++ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; ++ target_modules = { module= libitm; lib_path=.libs; }; ++ target_modules = { module= libatomic; lib_path=.libs; }; ++@@ -394,6 +395,7 @@ dependencies = { module=all-libcpp; on=a ++ dependencies = { module=all-fixincludes; on=all-libiberty; }; ++ ++ dependencies = { module=all-target-libada; on=all-gcc; }; +++dependencies = { module=all-target-libada-sjlj; on=all-target-libada; }; ++ dependencies = { module=all-gnattools; on=all-target-libada; }; ++ dependencies = { module=all-gnattools; on=all-target-libstdc++-v3; }; ++ dependencies = { module=all-gnattools; on=all-target-libgnat_util; }; ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -167,6 +167,7 @@ target_libraries="target-libgcc \ ++ target-libffi \ ++ target-libobjc \ ++ target-libada \ +++ target-libada-sjlj \ ++ ${target_libiberty} \ ++ target-libgnat_util \ ++ target-libgo \ ++@@ -454,7 +455,7 @@ AC_ARG_ENABLE(libada, ++ ENABLE_LIBADA=$enableval, ++ ENABLE_LIBADA=yes) ++ if test "${ENABLE_LIBADA}" != "yes" ; then ++- noconfigdirs="$noconfigdirs target-libgnat_util gnattools" +++ noconfigdirs="$noconfigdirs target-libgnat_util gnattools target-libada-sjlj" ++ fi ++ ++ AC_ARG_ENABLE(libssp, ++--- a/src/gcc/ada/gcc-interface/Makefile.in +++++ b/src/gcc/ada/gcc-interface/Makefile.in ++@@ -193,7 +193,7 @@ GNAT_SRC=$(fsrcpfx)ada ++ ++ # Multilib handling ++ MULTISUBDIR = ++-RTSDIR = rts$(subst /,_,$(MULTISUBDIR)) +++RTSDIR := rts$(subst /,_,$(MULTISUBDIR)) ++ ++ # Link flags used to build gnat tools. By default we prefer to statically ++ # link with libgcc to avoid a dependency on shared libgcc (which is tricky ++@@ -561,6 +561,26 @@ install-gnatlib: ../stamp-gnatlib-$(RTSD ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.adb ++ cd $(DESTDIR)$(ADA_INCLUDE_DIR); $(CHMOD) a-wx *.ads ++ +++install-gnatlib-sjlj: ../stamp-gnatlib-$(RTSDIR) +++# Create the directory before deleting it, in case the directory is +++# a list of directories (as it may be on VMS). This ensures we are +++# deleting the right one. +++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) +++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) +++ $(RMDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) +++ $(RMDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) +++ -$(MKDIR) $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ) +++ -$(MKDIR) $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ) +++ for file in $(RTSDIR)/*.ali; do \ +++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_RTL_OBJ_DIR_SJLJ); \ +++ done +++ # This copy must be done preserving the date on the original file. +++ for file in $(RTSDIR)/*.ad?; do \ +++ $(INSTALL_DATA_DATE) $$file $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); \ +++ done +++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.adb +++ cd $(DESTDIR)$(ADA_INCLUDE_DIR_SJLJ); $(CHMOD) a-wx *.ads +++ ++ ../stamp-gnatlib2-$(RTSDIR): ++ $(RM) $(RTSDIR)/s-*.ali ++ $(RM) $(RTSDIR)/s-*$(objext) ++@@ -826,6 +846,7 @@ gnatlib-shared: ++ gnatlib-sjlj: ++ $(MAKE) $(FLAGS_TO_PASS) \ ++ EH_MECHANISM="" \ +++ RTSDIR="$(RTSDIR)" \ ++ MULTISUBDIR="$(MULTISUBDIR)" \ ++ THREAD_KIND="$(THREAD_KIND)" \ ++ ../stamp-gnatlib1-$(RTSDIR) ++@@ -835,6 +856,7 @@ gnatlib-sjlj: ++ $(RTSDIR)/system.ads > $(RTSDIR)/s.ads ++ $(MV) $(RTSDIR)/s.ads $(RTSDIR)/system.ads ++ $(MAKE) $(FLAGS_TO_PASS) \ +++ RTSDIR="$(RTSDIR)" \ ++ EH_MECHANISM="" \ ++ GNATLIBFLAGS="$(GNATLIBFLAGS)" \ ++ GNATLIBCFLAGS="$(GNATLIBCFLAGS)" \ ++@@ -889,6 +911,8 @@ b_gnatm.o : b_gnatm.adb ++ ++ ADA_INCLUDE_DIR = $(libsubdir)/adainclude ++ ADA_RTL_OBJ_DIR = $(libsubdir)/adalib +++ADA_INCLUDE_DIR_SJLJ = $(libsubdir)/rts-sjlj/adainclude +++ADA_RTL_OBJ_DIR_SJLJ = $(libsubdir)/rts-sjlj/adalib ++ ++ # Special flags ++ ++--- a/src/gcc/ada/gcc-interface/config-lang.in +++++ b/src/gcc/ada/gcc-interface/config-lang.in ++@@ -43,8 +43,8 @@ if test "x$cross_compiling/$build/$host" ++ lang_requires="c c++" ++ fi ++ ++-target_libs="target-libada target-libgnat_util" ++-lang_dirs="libada gnattools" +++target_libs="target-libada target-libgnat_util target-libada-sjlj" +++lang_dirs="libada gnattools libada-sjlj" ++ ++ # Ada is not enabled by default for the time being. ++ build_by_default=no ++--- a/src/gcc/ada/gcc-interface/Make-lang.in +++++ b/src/gcc/ada/gcc-interface/Make-lang.in ++@@ -837,6 +837,7 @@ ada.install-common: ++ ++ install-gnatlib: ++ $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib$(LIBGNAT_TARGET) +++ $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) RTSDIR="rts-sjlj" install-gnatlib-sjlj$(LIBGNAT_TARGET) ++ ++ install-gnatlib-obj: ++ $(MAKE) -C ada $(COMMON_FLAGS_TO_PASS) $(ADA_FLAGS_TO_PASS) install-gnatlib-obj diff --cc debian/patches/ada-tv_nsec-size.diff index 0000000,0000000..77dc244 new file mode 100644 --- /dev/null +++ b/debian/patches/ada-tv_nsec-size.diff @@@ -1,0 -1,0 +1,17 @@@ ++--- a/src/gcc/ada/s-oscons-tmplt.c +++++ b/src/gcc/ada/s-oscons-tmplt.c ++@@ -1769,9 +1769,12 @@ CNS(MAX_tv_sec, "") ++ struct timespec ts; ++ /* ++ -- Sizes (in bytes) of the components of struct timespec. ++- -- The tv_sec field is the same than in struct timeval. +++ -- The tv_sec component is the same size as in struct timeval. +++ -- In order to avoid the endian issues in the glibc __timespec64 +++ -- struct, we use the same size for the tv_nsec component as the +++ -- tv_sec component. ++ */ ++-#define SIZEOF_tv_nsec (sizeof (ts.tv_nsec)) +++#define SIZEOF_tv_nsec (sizeof (ts.tv_sec)) ++ CND(SIZEOF_tv_nsec, "tv_nsec"); ++ } ++ diff --cc debian/patches/ada-verbose.diff index 0000000,0000000..cb3cacf new file mode 100644 --- /dev/null +++ b/debian/patches/ada-verbose.diff @@@ -1,0 -1,0 +1,37 @@@ ++Description: Display subprocess command lines when building Ada. ++ The log can be a page longer if it helps debugging. ++Forwarded: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87778 ++Applied-Upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=940bc09b446f4876563b0986231724121b33193d ++Author: Nicolas Boulenguez ++ ++--- a/src/gcc/ada/Make-generated.in +++++ b/src/gcc/ada/Make-generated.in ++@@ -18,7 +18,7 @@ GEN_IL_FLAGS = -gnata -gnat2012 -gnatw.g ++ ada/seinfo_tables.ads ada/seinfo_tables.adb ada/sinfo.h ada/einfo.h ada/nmake.ads ada/nmake.adb ada/seinfo.ads ada/sinfo-nodes.ads ada/sinfo-nodes.adb ada/einfo-entities.ads ada/einfo-entities.adb: ada/stamp-gen_il ; @true ++ ada/stamp-gen_il: $(fsrcdir)/ada/gen_il* ++ $(MKDIR) ada/gen_il ++- cd ada/gen_il; gnatmake -q -g $(GEN_IL_FLAGS) gen_il-main +++ cd ada/gen_il; gnatmake -g $(GEN_IL_FLAGS) gen_il-main ++ # Ignore errors to work around finalization issues in older compilers ++ - cd ada/gen_il; ./gen_il-main ++ $(fsrcdir)/../move-if-change ada/gen_il/seinfo_tables.ads ada/seinfo_tables.ads ++@@ -46,7 +46,7 @@ ada/stamp-snames : ada/snames.ads-tmpl a ++ -$(MKDIR) ada/bldtools/snamest ++ $(RM) $(addprefix ada/bldtools/snamest/,$(notdir $^)) ++ $(CP) $^ ada/bldtools/snamest ++- cd ada/bldtools/snamest && gnatmake -q xsnamest && ./xsnamest +++ cd ada/bldtools/snamest && gnatmake xsnamest && ./xsnamest ++ $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.ns ada/snames.ads ++ $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nb ada/snames.adb ++ $(fsrcdir)/../move-if-change ada/bldtools/snamest/snames.nh ada/snames.h ++--- a/src/gcc/ada/gcc-interface/Makefile.in +++++ b/src/gcc/ada/gcc-interface/Makefile.in ++@@ -648,7 +648,7 @@ OSCONS_EXTRACT=$(GCC_FOR_ADA_RTS) $(GNAT ++ -$(MKDIR) ./bldtools/oscons ++ $(RM) $(addprefix ./bldtools/oscons/,$(notdir $^)) ++ $(CP) $^ ./bldtools/oscons ++- (cd ./bldtools/oscons ; gnatmake -q xoscons) +++ (cd ./bldtools/oscons ; gnatmake xoscons) ++ ++ $(RTSDIR)/s-oscons.ads: ../stamp-gnatlib1-$(RTSDIR) s-oscons-tmplt.c gsocket.h ./bldtools/oscons/xoscons ++ $(RM) $(RTSDIR)/s-oscons-tmplt.i $(RTSDIR)/s-oscons-tmplt.s diff --cc debian/patches/algol68-doc.diff index 0000000,0000000..3382f97 new file mode 100644 --- /dev/null +++ b/debian/patches/algol68-doc.diff @@@ -1,0 -1,0 +1,143 @@@ ++git diff --src-prefix=a/src/ --dst-prefix=b/src/ master..a68 | grep -E -v '^(diff|index|new)' ++ ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -2965,6 +2994,7 @@ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in ++ || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ ++ || test $(srcdir)/doc/tm.texi -nt $(srcdir)/d/d-target.def \ ++ || test $(srcdir)/doc/tm.texi -nt $(srcdir)/rust/rust-target.def \ +++ || test $(srcdir)/doc/tm.texi -nt $(srcdir)/algol68/algol68-target.def \ ++ ); then \ ++ echo >&2 ; \ ++ echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ ++--- a/src/gcc/doc/tm.texi +++++ b/src/gcc/doc/tm.texi ++@@ -54,6 +54,7 @@ through the macros defined in the @file{.h} file. ++ * C++ ABI:: Controlling C++ ABI changes. ++ * D Language and ABI:: Controlling D ABI changes. ++ * Rust Language and ABI:: Controlling Rust ABI changes. +++* ALGOL 68 Language and ABI:: Controlling ALGOL 68 ABI changes. ++ * Named Address Spaces:: Adding support for named address spaces ++ * Misc:: Everything else. ++ @end menu ++@@ -11352,6 +11353,23 @@ Similar to @code{TARGET_RUST_CPU_INFO}, but is used for configuration info ++ relating to the target operating system. ++ @end deftypefn ++ +++@node ALGOL 68 Language and ABI +++@section ALGOL 68 ABI parameters +++@cindex parameters, ALGOL 68 abi +++ +++@deftypefn {Algol68 Target Hook} void TARGET_ALGOL68_CPU_INFO (void) +++Declare all environmental CPU info and features relating to the target CPU +++using the function @code{algol68_add_target_info}, which takes a string +++representing the feature key and a string representing the feature value. +++Configuration pairs predefined by this hook apply to all files that are being +++compiled. +++@end deftypefn +++ +++@deftypefn {Algol68 Target Hook} void TARGET_ALGOL68_OS_INFO (void) +++Similar to @code{TARGET_ALGOL68_CPU_INFO}, but is used for configuration info +++relating to the target operating system. +++@end deftypefn +++ ++ @node Named Address Spaces ++ @section Adding support for named address spaces ++ @cindex named address spaces ++--- a/src/gcc/doc/tm.texi.in +++++ b/src/gcc/doc/tm.texi.in ++@@ -54,6 +54,7 @@ through the macros defined in the @file{.h} file. ++ * C++ ABI:: Controlling C++ ABI changes. ++ * D Language and ABI:: Controlling D ABI changes. ++ * Rust Language and ABI:: Controlling Rust ABI changes. +++* ALGOL 68 Language and ABI:: Controlling ALGOL 68 ABI changes. ++ * Named Address Spaces:: Adding support for named address spaces ++ * Misc:: Everything else. ++ @end menu ++@@ -7278,6 +7279,14 @@ floating-point support; they are not included in this mechanism. ++ ++ @hook TARGET_RUST_OS_INFO ++ +++@node ALGOL 68 Language and ABI +++@section ALGOL 68 ABI parameters +++@cindex parameters, ALGOL 68 abi +++ +++@hook TARGET_ALGOL68_CPU_INFO +++ +++@hook TARGET_ALGOL68_OS_INFO +++ ++ @node Named Address Spaces ++ @section Adding support for named address spaces ++ @cindex named address spaces ++--- a/src/gcc/doc/install.texi +++++ b/src/gcc/doc/install.texi ++@@ -2100,13 +2100,13 @@ their runtime libraries should be built. For a list of valid values for ++ grep ^language= */config-lang.in ++ @end smallexample ++ Currently, you can use any of the following: ++-@code{all}, @code{default}, @code{ada}, @code{c}, @code{c++}, +++@code{all}, @code{default}, @code{ada}, @code{algol68}, @code{c}, @code{c++}, ++ @code{cobol}, @code{d}, @code{fortran}, @code{go}, @code{jit}, ++ @code{lto}, @code{m2}, @code{objc}, @code{obj-c++}. ++ Building the Ada compiler has special requirements, see below. ++ If you do not pass this flag, or specify the option @code{default}, then the ++ default languages available in the @file{gcc} sub-tree will be configured. ++-Ada, COBOL, D, Go, Jit, Objective-C++ and Modula-2 are not default languages. +++Algol 68, Ada, COBOL, D, Go, Jit, Objective-C++ and Modula-2 are not default languages. ++ LTO is not a ++ default language, but is built by default because @option{--enable-lto} is ++ enabled by default. The other languages are default languages. If ++@@ -2899,6 +2899,41 @@ In order to avoid shell and @command{make} quoting issues for complex ++ overrides, you can pass a setting for @env{CONFIG_SITE} and set ++ variables in the site file. ++ +++@subheading Algol 68-Specific Options +++ +++The following options apply to the build of the Algol 68 runtime library. +++ +++@table @code +++@item --enable-algol68-gc +++Specify that an additional variant of the GNU Algol 68 runtime library +++is built, using an external build of the Boehm-Demers-Weiser garbage +++collector (@uref{https://www.hboehm.info/gc/}). +++ +++This library needs to be available for each multilib variant, unless +++configured with @option{--enable-objc-gc=@samp{auto}} in which case +++the build of the additional runtime library is skipped when not +++available and the build continues. +++ +++@item --with-target-bdw-gc=@var{list} +++@itemx --with-target-bdw-gc-include=@var{list} +++@itemx --with-target-bdw-gc-lib=@var{list} +++Specify search directories for the garbage collector header files and +++libraries. @var{list} is a comma separated list of key value pairs of the +++form @samp{@var{multilibdir}=@var{path}}, where the default multilib key +++is named as @samp{.} (dot), or is omitted (e.g.@: +++@samp{--with-target-bdw-gc=/opt/bdw-gc,32=/opt-bdw-gc32}). +++ +++The options @option{--with-target-bdw-gc-include} and +++@option{--with-target-bdw-gc-lib} must always be specified together +++for each multilib variant and they take precedence over +++@option{--with-target-bdw-gc}. If @option{--with-target-bdw-gc-include} +++is missing values for a multilib, then the value for the default +++multilib is used (e.g.@: @samp{--with-target-bdw-gc-include=/opt/bdw-gc/include} +++@samp{--with-target-bdw-gc-lib=/opt/bdw-gc/lib64,32=/opt-bdw-gc/lib32}). +++If none of these options are specified, the library is assumed in +++default locations. +++@end table +++ ++ @subheading Objective-C-Specific Options ++ ++ The following options apply to the build of the Objective-C runtime library. ++--- a/src/gcc/doc/sourcebuild.texi +++++ b/src/gcc/doc/sourcebuild.texi ++@@ -91,6 +91,9 @@ The Decimal Float support library. ++ @item libffi ++ The @code{libffi} library, used as part of the Go runtime library. ++ +++@item libga68 +++The Algol 68 runtime library. +++ ++ @item libgcc ++ The GCC runtime library. ++ diff --cc debian/patches/algol68-link-dynamic.diff index 0000000,0000000..a65c070 new file mode 100644 --- /dev/null +++ b/debian/patches/algol68-link-dynamic.diff @@@ -1,0 -1,0 +1,13 @@@ ++# DP: Link libga68 dynamically. ++ ++--- a/src/gcc/algol68/a68spec.cc +++++ b/src/gcc/algol68/a68spec.cc ++@@ -32,7 +32,7 @@ ++ LIBGA68_DYNAMIC ++ }; ++ ++-static enum libga68_link_mode libga68_link = LIBGA68_STATIC; +++static enum libga68_link_mode libga68_link = LIBGA68_DYNAMIC; ++ ++ /* This bit is set if we saw a `-xfoo' language specification. */ ++ #define LANGSPEC (1 << 1) diff --cc debian/patches/algol68-sparc.diff index 0000000,0000000..3745f45 new file mode 100644 --- /dev/null +++ b/debian/patches/algol68-sparc.diff @@@ -1,0 -1,0 +1,20 @@@ ++--- a/src/gcc/algol68/a68-exports.cc +++++ b/src/gcc/algol68/a68-exports.cc ++@@ -22,6 +22,7 @@ ++ #include "config.h" ++ #include "system.h" ++ #include "coretypes.h" +++#include "memmodel.h" ++ #include "tree.h" ++ #include "target.h" ++ #include "tm_p.h" ++--- a/src/gcc/algol68/a68-imports.cc +++++ b/src/gcc/algol68/a68-imports.cc ++@@ -31,6 +31,7 @@ ++ #include "config.h" ++ #include "system.h" ++ #include "coretypes.h" +++#include "memmodel.h" ++ #include "tree.h" ++ #include "target.h" ++ #include "tm_p.h" diff --cc debian/patches/algol68.diff index 0000000,0000000..8ee0a0f new file mode 100644 --- /dev/null +++ b/debian/patches/algol68.diff @@@ -1,0 -1,0 +1,83798 @@@ ++--- a/src/Makefile.def +++++ b/src/Makefile.def ++@@ -205,6 +205,7 @@ target_modules = { module= zlib; bootstrap=true; }; ++ target_modules = { module= rda; }; ++ target_modules = { module= libada; }; ++ target_modules = { module= libgm2; lib_path=.libs; }; +++target_modules = { module= libga68; lib_path=.libs; }; ++ target_modules = { module= libgomp; bootstrap= true; lib_path=.libs; }; ++ target_modules = { module= libitm; lib_path=.libs; }; ++ target_modules = { module= libatomic; bootstrap=true; lib_path=.libs; }; ++@@ -676,6 +677,7 @@ dependencies = { module=configure-target-libstdc++-v3; on=configure-target-libgo ++ dependencies = { module=configure-target-libsanitizer; on=all-target-libstdc++-v3; }; ++ dependencies = { module=configure-target-libvtv; on=all-target-libstdc++-v3; }; ++ dependencies = { module=configure-target-libgrust; on=all-target-libstdc++-v3; }; +++dependencies = { module=configure-target-libga68; on=all-target-libstdc++-v3; }; ++ // parallel_list.o and parallel_settings.o depend on omp.h, which is ++ // generated by the libgomp configure. Unfortunately, due to the use of ++ // recursive make, we can't be that specific. ++@@ -734,6 +736,8 @@ languages = { language=jit; gcc-check-target=check-jit; }; ++ languages = { language=rust; gcc-check-target=check-rust; }; ++ languages = { language=cobol; gcc-check-target=check-cobol; ++ lib-check-target=check-target-libgcobol; }; +++languages = { language=algol68; gcc-check-target=check-algol68; +++ lib-check-target=check-target-libga68; }; ++ ++ // Toplevel bootstrap ++ bootstrap_stage = { id=1 ; }; ++--- a/src/Makefile.in +++++ b/src/Makefile.in ++@@ -276,6 +276,11 @@ POSTSTAGE1_HOST_EXPORTS = \ ++ CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ ++ $(POSTSTAGE1_CXX_EXPORT) \ ++ $(LTO_EXPORTS) \ +++ GA68="$$r/$(HOST_SUBDIR)/prev-gcc/ga68$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ +++ -B$(build_tooldir)/bin/ $(GA68FLAGS_FOR_TARGET) \ +++ -B$$r/prev-$(TARGET_SUBDIR)/libga68/.libs"; \ +++ export GA68; \ +++ GA68_FOR_BUILD="$$GA68"; export GA68_FOR_BUILD; \ ++ GDC="$$r/$(HOST_SUBDIR)/prev-gcc/gdc$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ ++ -B$(build_tooldir)/bin/ $(GDCFLAGS_FOR_TARGET) \ ++ -B$$r/prev-$(TARGET_SUBDIR)/libphobos/libdruntime/gcc \ ++@@ -308,6 +313,7 @@ BASE_TARGET_EXPORTS = \ ++ CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ ++ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ ++ GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ +++ GA68="$(GA68_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GA68; \ ++ GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ ++ GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ ++ GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \ ++@@ -377,6 +383,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ ++ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ ++ DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@ ++ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ +++GA68_FOR_BUILD = @GA68_FOR_BUILD@ ++ GOC_FOR_BUILD = @GOC_FOR_BUILD@ ++ GDC_FOR_BUILD = @GDC_FOR_BUILD@ ++ GM2_FOR_BUILD = @GM2_FOR_BUILD@ ++@@ -439,6 +446,7 @@ STRIP = @STRIP@ ++ WINDRES = @WINDRES@ ++ WINDMC = @WINDMC@ ++ +++GA68 = @GA68@ ++ GDC = @GDC@ ++ GNATBIND = @GNATBIND@ ++ GNATMAKE = @GNATMAKE@ ++@@ -449,6 +457,7 @@ LIBCFLAGS = $(CFLAGS) ++ CXXFLAGS = @CXXFLAGS@ ++ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates ++ GOCFLAGS = $(CFLAGS) +++GA68FLAGS = @GA68FLAGS@ ++ GDCFLAGS = @GDCFLAGS@ ++ GM2FLAGS = $(CFLAGS) ++ ++@@ -676,6 +685,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ ++ RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ ++ GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ ++ GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ +++GA68_FOR_TARGET=$(STAGE_CC_WRAPPER) @GA68_FOR_TARGET@ ++ GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@ ++ GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@ ++ DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ ++@@ -705,6 +715,7 @@ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates ++ LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@ ++ GM2FLAGS_FOR_TARGET = -O2 -g ++ GOCFLAGS_FOR_TARGET = -O2 -g +++GA68FLAGS_FOR_TARGET = -O2 -g ++ GDCFLAGS_FOR_TARGET = -O2 -g ++ ++ FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ ++@@ -730,7 +741,7 @@ all: ++ ++ # This is the list of directories that may be needed in RPATH_ENVVAR ++ # so that programs built for the target machine work. ++-TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) +++TARGET_LIB_PATH = $(TARGET_LIB_PATH_libstdc++-v3)$(TARGET_LIB_PATH_libsanitizer)$(TARGET_LIB_PATH_libvtv)$(TARGET_LIB_PATH_libssp)$(TARGET_LIB_PATH_libphobos)$(TARGET_LIB_PATH_libgm2)$(TARGET_LIB_PATH_libga68)$(TARGET_LIB_PATH_libgomp)$(TARGET_LIB_PATH_libitm)$(TARGET_LIB_PATH_libatomic)$(HOST_LIB_PATH_gcc) ++ ++ @if target-libstdc++-v3 ++ TARGET_LIB_PATH_libstdc++-v3 = $$r/$(TARGET_SUBDIR)/libstdc++-v3/src/.libs: ++@@ -756,6 +767,10 @@ TARGET_LIB_PATH_libphobos = $$r/$(TARGET_SUBDIR)/libphobos/src/.libs: ++ TARGET_LIB_PATH_libgm2 = $$r/$(TARGET_SUBDIR)/libgm2/.libs: ++ @endif target-libgm2 ++ +++@if target-libga68 +++TARGET_LIB_PATH_libga68 = $$r/$(TARGET_SUBDIR)/libga68/.libs: +++@endif target-libga68 +++ ++ @if target-libgomp ++ TARGET_LIB_PATH_libgomp = $$r/$(TARGET_SUBDIR)/libgomp/.libs: ++ @endif target-libgomp ++@@ -976,6 +991,7 @@ EXTRA_HOST_FLAGS = \ ++ 'DSYMUTIL=$(DSYMUTIL)' \ ++ 'GFORTRAN=$(GFORTRAN)' \ ++ 'GOC=$(GOC)' \ +++ 'GA68=$(GA68)' \ ++ 'GDC=$(GDC)' \ ++ 'GM2=$(GM2)' \ ++ 'LD=$(LD)' \ ++@@ -1004,6 +1020,7 @@ STAGE1_FLAGS_TO_PASS = \ ++ POSTSTAGE1_FLAGS_TO_PASS = \ ++ CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ ++ CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ +++ GA68="$${GA68}" GA68_FOR_BUILD="$${GA68_FOR_BUILD}" \ ++ GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \ ++ GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \ ++ GNATBIND="$${GNATBIND}" \ ++@@ -1039,6 +1056,7 @@ EXTRA_TARGET_FLAGS = \ ++ 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ +++ 'GA68=$$(GA68_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ ++ 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++@@ -1160,6 +1178,7 @@ configure-target: \ ++ maybe-configure-target-rda \ ++ maybe-configure-target-libada \ ++ maybe-configure-target-libgm2 \ +++ maybe-configure-target-libga68 \ ++ maybe-configure-target-libgomp \ ++ maybe-configure-target-libitm \ ++ maybe-configure-target-libatomic \ ++@@ -1360,6 +1379,7 @@ all-target: maybe-all-target-zlib ++ all-target: maybe-all-target-rda ++ all-target: maybe-all-target-libada ++ all-target: maybe-all-target-libgm2 +++all-target: maybe-all-target-libga68 ++ @if target-libgomp-no-bootstrap ++ all-target: maybe-all-target-libgomp ++ @endif target-libgomp-no-bootstrap ++@@ -1463,6 +1483,7 @@ info-target: maybe-info-target-zlib ++ info-target: maybe-info-target-rda ++ info-target: maybe-info-target-libada ++ info-target: maybe-info-target-libgm2 +++info-target: maybe-info-target-libga68 ++ info-target: maybe-info-target-libgomp ++ info-target: maybe-info-target-libitm ++ info-target: maybe-info-target-libatomic ++@@ -1557,6 +1578,7 @@ dvi-target: maybe-dvi-target-zlib ++ dvi-target: maybe-dvi-target-rda ++ dvi-target: maybe-dvi-target-libada ++ dvi-target: maybe-dvi-target-libgm2 +++dvi-target: maybe-dvi-target-libga68 ++ dvi-target: maybe-dvi-target-libgomp ++ dvi-target: maybe-dvi-target-libitm ++ dvi-target: maybe-dvi-target-libatomic ++@@ -1651,6 +1673,7 @@ pdf-target: maybe-pdf-target-zlib ++ pdf-target: maybe-pdf-target-rda ++ pdf-target: maybe-pdf-target-libada ++ pdf-target: maybe-pdf-target-libgm2 +++pdf-target: maybe-pdf-target-libga68 ++ pdf-target: maybe-pdf-target-libgomp ++ pdf-target: maybe-pdf-target-libitm ++ pdf-target: maybe-pdf-target-libatomic ++@@ -1745,6 +1768,7 @@ html-target: maybe-html-target-zlib ++ html-target: maybe-html-target-rda ++ html-target: maybe-html-target-libada ++ html-target: maybe-html-target-libgm2 +++html-target: maybe-html-target-libga68 ++ html-target: maybe-html-target-libgomp ++ html-target: maybe-html-target-libitm ++ html-target: maybe-html-target-libatomic ++@@ -1839,6 +1863,7 @@ TAGS-target: maybe-TAGS-target-zlib ++ TAGS-target: maybe-TAGS-target-rda ++ TAGS-target: maybe-TAGS-target-libada ++ TAGS-target: maybe-TAGS-target-libgm2 +++TAGS-target: maybe-TAGS-target-libga68 ++ TAGS-target: maybe-TAGS-target-libgomp ++ TAGS-target: maybe-TAGS-target-libitm ++ TAGS-target: maybe-TAGS-target-libatomic ++@@ -1933,6 +1958,7 @@ install-info-target: maybe-install-info-target-zlib ++ install-info-target: maybe-install-info-target-rda ++ install-info-target: maybe-install-info-target-libada ++ install-info-target: maybe-install-info-target-libgm2 +++install-info-target: maybe-install-info-target-libga68 ++ install-info-target: maybe-install-info-target-libgomp ++ install-info-target: maybe-install-info-target-libitm ++ install-info-target: maybe-install-info-target-libatomic ++@@ -2027,6 +2053,7 @@ install-dvi-target: maybe-install-dvi-target-zlib ++ install-dvi-target: maybe-install-dvi-target-rda ++ install-dvi-target: maybe-install-dvi-target-libada ++ install-dvi-target: maybe-install-dvi-target-libgm2 +++install-dvi-target: maybe-install-dvi-target-libga68 ++ install-dvi-target: maybe-install-dvi-target-libgomp ++ install-dvi-target: maybe-install-dvi-target-libitm ++ install-dvi-target: maybe-install-dvi-target-libatomic ++@@ -2121,6 +2148,7 @@ install-pdf-target: maybe-install-pdf-target-zlib ++ install-pdf-target: maybe-install-pdf-target-rda ++ install-pdf-target: maybe-install-pdf-target-libada ++ install-pdf-target: maybe-install-pdf-target-libgm2 +++install-pdf-target: maybe-install-pdf-target-libga68 ++ install-pdf-target: maybe-install-pdf-target-libgomp ++ install-pdf-target: maybe-install-pdf-target-libitm ++ install-pdf-target: maybe-install-pdf-target-libatomic ++@@ -2215,6 +2243,7 @@ install-html-target: maybe-install-html-target-zlib ++ install-html-target: maybe-install-html-target-rda ++ install-html-target: maybe-install-html-target-libada ++ install-html-target: maybe-install-html-target-libgm2 +++install-html-target: maybe-install-html-target-libga68 ++ install-html-target: maybe-install-html-target-libgomp ++ install-html-target: maybe-install-html-target-libitm ++ install-html-target: maybe-install-html-target-libatomic ++@@ -2309,6 +2338,7 @@ installcheck-target: maybe-installcheck-target-zlib ++ installcheck-target: maybe-installcheck-target-rda ++ installcheck-target: maybe-installcheck-target-libada ++ installcheck-target: maybe-installcheck-target-libgm2 +++installcheck-target: maybe-installcheck-target-libga68 ++ installcheck-target: maybe-installcheck-target-libgomp ++ installcheck-target: maybe-installcheck-target-libitm ++ installcheck-target: maybe-installcheck-target-libatomic ++@@ -2403,6 +2433,7 @@ mostlyclean-target: maybe-mostlyclean-target-zlib ++ mostlyclean-target: maybe-mostlyclean-target-rda ++ mostlyclean-target: maybe-mostlyclean-target-libada ++ mostlyclean-target: maybe-mostlyclean-target-libgm2 +++mostlyclean-target: maybe-mostlyclean-target-libga68 ++ mostlyclean-target: maybe-mostlyclean-target-libgomp ++ mostlyclean-target: maybe-mostlyclean-target-libitm ++ mostlyclean-target: maybe-mostlyclean-target-libatomic ++@@ -2497,6 +2528,7 @@ clean-target: maybe-clean-target-zlib ++ clean-target: maybe-clean-target-rda ++ clean-target: maybe-clean-target-libada ++ clean-target: maybe-clean-target-libgm2 +++clean-target: maybe-clean-target-libga68 ++ clean-target: maybe-clean-target-libgomp ++ clean-target: maybe-clean-target-libitm ++ clean-target: maybe-clean-target-libatomic ++@@ -2591,6 +2623,7 @@ distclean-target: maybe-distclean-target-zlib ++ distclean-target: maybe-distclean-target-rda ++ distclean-target: maybe-distclean-target-libada ++ distclean-target: maybe-distclean-target-libgm2 +++distclean-target: maybe-distclean-target-libga68 ++ distclean-target: maybe-distclean-target-libgomp ++ distclean-target: maybe-distclean-target-libitm ++ distclean-target: maybe-distclean-target-libatomic ++@@ -2685,6 +2718,7 @@ maintainer-clean-target: maybe-maintainer-clean-target-zlib ++ maintainer-clean-target: maybe-maintainer-clean-target-rda ++ maintainer-clean-target: maybe-maintainer-clean-target-libada ++ maintainer-clean-target: maybe-maintainer-clean-target-libgm2 +++maintainer-clean-target: maybe-maintainer-clean-target-libga68 ++ maintainer-clean-target: maybe-maintainer-clean-target-libgomp ++ maintainer-clean-target: maybe-maintainer-clean-target-libitm ++ maintainer-clean-target: maybe-maintainer-clean-target-libatomic ++@@ -2837,6 +2871,7 @@ check-target: \ ++ maybe-check-target-rda \ ++ maybe-check-target-libada \ ++ maybe-check-target-libgm2 \ +++ maybe-check-target-libga68 \ ++ maybe-check-target-libgomp \ ++ maybe-check-target-libitm \ ++ maybe-check-target-libatomic \ ++@@ -3035,6 +3070,7 @@ install-target: \ ++ maybe-install-target-rda \ ++ maybe-install-target-libada \ ++ maybe-install-target-libgm2 \ +++ maybe-install-target-libga68 \ ++ maybe-install-target-libgomp \ ++ maybe-install-target-libitm \ ++ maybe-install-target-libatomic \ ++@@ -3149,6 +3185,7 @@ install-strip-target: \ ++ maybe-install-strip-target-rda \ ++ maybe-install-strip-target-libada \ ++ maybe-install-strip-target-libgm2 \ +++ maybe-install-strip-target-libga68 \ ++ maybe-install-strip-target-libgomp \ ++ maybe-install-strip-target-libitm \ ++ maybe-install-strip-target-libatomic \ ++@@ -60200,6 +60237,491 @@ maintainer-clean-target-libgm2: ++ ++ ++ +++.PHONY: configure-target-libga68 maybe-configure-target-libga68 +++maybe-configure-target-libga68: +++@if gcc-bootstrap +++configure-target-libga68: stage_current +++@endif gcc-bootstrap +++@if target-libga68 +++maybe-configure-target-libga68: configure-target-libga68 +++configure-target-libga68: +++ @: $(MAKE); $(unstage) +++ @r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ echo "Checking multilib configuration for libga68..."; \ +++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libga68; \ +++ $(CC_FOR_TARGET) --print-multi-lib > $(TARGET_SUBDIR)/libga68/multilib.tmp 2> /dev/null; \ +++ if test -r $(TARGET_SUBDIR)/libga68/multilib.out; then \ +++ if cmp -s $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; then \ +++ rm -f $(TARGET_SUBDIR)/libga68/multilib.tmp; \ +++ else \ +++ rm -f $(TARGET_SUBDIR)/libga68/Makefile; \ +++ mv $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; \ +++ fi; \ +++ else \ +++ mv $(TARGET_SUBDIR)/libga68/multilib.tmp $(TARGET_SUBDIR)/libga68/multilib.out; \ +++ fi; \ +++ test ! -f $(TARGET_SUBDIR)/libga68/Makefile || exit 0; \ +++ $(SHELL) $(srcdir)/mkinstalldirs $(TARGET_SUBDIR)/libga68; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo Configuring in $(TARGET_SUBDIR)/libga68; \ +++ cd "$(TARGET_SUBDIR)/libga68" || exit 1; \ +++ case $(srcdir) in \ +++ /* | [A-Za-z]:[\\/]*) topdir=$(srcdir) ;; \ +++ *) topdir=`echo $(TARGET_SUBDIR)/libga68/ | \ +++ sed -e 's,\./,,g' -e 's,[^/]*/,../,g' `$(srcdir) ;; \ +++ esac; \ +++ module_srcdir=libga68; \ +++ rm -f no-such-file || : ; \ +++ CONFIG_SITE=no-such-file $(SHELL) \ +++ $$s/$$module_srcdir/configure \ +++ --srcdir=$${topdir}/$$module_srcdir \ +++ $(TARGET_CONFIGARGS) --build=${build_alias} --host=${target_alias} \ +++ --target=${target_alias} \ +++ || exit 1 +++@endif target-libga68 +++ +++ +++ +++ +++ +++.PHONY: all-target-libga68 maybe-all-target-libga68 +++maybe-all-target-libga68: +++@if gcc-bootstrap +++all-target-libga68: stage_current +++@endif gcc-bootstrap +++@if target-libga68 +++TARGET-target-libga68=all +++maybe-all-target-libga68: all-target-libga68 +++all-target-libga68: configure-target-libga68 +++ @: $(MAKE); $(unstage) +++ @r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) $(EXTRA_TARGET_FLAGS) \ +++ $(TARGET-target-libga68)) +++@endif target-libga68 +++ +++ +++ +++ +++ +++.PHONY: check-target-libga68 maybe-check-target-libga68 +++maybe-check-target-libga68: +++@if target-libga68 +++maybe-check-target-libga68: check-target-libga68 +++ +++check-target-libga68: +++ @: $(MAKE); $(unstage) +++ @r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(TARGET_FLAGS_TO_PASS) check) +++ +++@endif target-libga68 +++ +++.PHONY: install-target-libga68 maybe-install-target-libga68 +++maybe-install-target-libga68: +++@if target-libga68 +++maybe-install-target-libga68: install-target-libga68 +++ +++install-target-libga68: installdirs +++ @: $(MAKE); $(unstage) +++ @r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install) +++ +++@endif target-libga68 +++ +++.PHONY: install-strip-target-libga68 maybe-install-strip-target-libga68 +++maybe-install-strip-target-libga68: +++@if target-libga68 +++maybe-install-strip-target-libga68: install-strip-target-libga68 +++ +++install-strip-target-libga68: installdirs +++ @: $(MAKE); $(unstage) +++ @r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(TARGET_FLAGS_TO_PASS) install-strip) +++ +++@endif target-libga68 +++ +++# Other targets (info, dvi, pdf, etc.) +++ +++.PHONY: maybe-info-target-libga68 info-target-libga68 +++maybe-info-target-libga68: +++@if target-libga68 +++maybe-info-target-libga68: info-target-libga68 +++ +++info-target-libga68: \ +++ configure-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing info in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ info) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-dvi-target-libga68 dvi-target-libga68 +++maybe-dvi-target-libga68: +++@if target-libga68 +++maybe-dvi-target-libga68: dvi-target-libga68 +++ +++dvi-target-libga68: \ +++ configure-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing dvi in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ dvi) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-pdf-target-libga68 pdf-target-libga68 +++maybe-pdf-target-libga68: +++@if target-libga68 +++maybe-pdf-target-libga68: pdf-target-libga68 +++ +++pdf-target-libga68: \ +++ configure-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing pdf in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ pdf) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-html-target-libga68 html-target-libga68 +++maybe-html-target-libga68: +++@if target-libga68 +++maybe-html-target-libga68: html-target-libga68 +++ +++html-target-libga68: \ +++ configure-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing html in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ html) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-TAGS-target-libga68 TAGS-target-libga68 +++maybe-TAGS-target-libga68: +++@if target-libga68 +++maybe-TAGS-target-libga68: TAGS-target-libga68 +++ +++TAGS-target-libga68: \ +++ configure-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing TAGS in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ TAGS) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-install-info-target-libga68 install-info-target-libga68 +++maybe-install-info-target-libga68: +++@if target-libga68 +++maybe-install-info-target-libga68: install-info-target-libga68 +++ +++install-info-target-libga68: \ +++ configure-target-libga68 \ +++ info-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing install-info in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ install-info) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-install-dvi-target-libga68 install-dvi-target-libga68 +++maybe-install-dvi-target-libga68: +++@if target-libga68 +++maybe-install-dvi-target-libga68: install-dvi-target-libga68 +++ +++install-dvi-target-libga68: \ +++ configure-target-libga68 \ +++ dvi-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing install-dvi in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ install-dvi) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-install-pdf-target-libga68 install-pdf-target-libga68 +++maybe-install-pdf-target-libga68: +++@if target-libga68 +++maybe-install-pdf-target-libga68: install-pdf-target-libga68 +++ +++install-pdf-target-libga68: \ +++ configure-target-libga68 \ +++ pdf-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing install-pdf in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ install-pdf) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-install-html-target-libga68 install-html-target-libga68 +++maybe-install-html-target-libga68: +++@if target-libga68 +++maybe-install-html-target-libga68: install-html-target-libga68 +++ +++install-html-target-libga68: \ +++ configure-target-libga68 \ +++ html-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing install-html in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ install-html) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-installcheck-target-libga68 installcheck-target-libga68 +++maybe-installcheck-target-libga68: +++@if target-libga68 +++maybe-installcheck-target-libga68: installcheck-target-libga68 +++ +++installcheck-target-libga68: \ +++ configure-target-libga68 +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing installcheck in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ installcheck) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-mostlyclean-target-libga68 mostlyclean-target-libga68 +++maybe-mostlyclean-target-libga68: +++@if target-libga68 +++maybe-mostlyclean-target-libga68: mostlyclean-target-libga68 +++ +++mostlyclean-target-libga68: +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing mostlyclean in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ mostlyclean) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-clean-target-libga68 clean-target-libga68 +++maybe-clean-target-libga68: +++@if target-libga68 +++maybe-clean-target-libga68: clean-target-libga68 +++ +++clean-target-libga68: +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing clean in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ clean) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-distclean-target-libga68 distclean-target-libga68 +++maybe-distclean-target-libga68: +++@if target-libga68 +++maybe-distclean-target-libga68: distclean-target-libga68 +++ +++distclean-target-libga68: +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing distclean in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ distclean) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++.PHONY: maybe-maintainer-clean-target-libga68 maintainer-clean-target-libga68 +++maybe-maintainer-clean-target-libga68: +++@if target-libga68 +++maybe-maintainer-clean-target-libga68: maintainer-clean-target-libga68 +++ +++maintainer-clean-target-libga68: +++ @: $(MAKE); $(unstage) +++ @[ -f $(TARGET_SUBDIR)/libga68/Makefile ] || exit 0; \ +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(NORMAL_TARGET_EXPORTS) \ +++ echo "Doing maintainer-clean in $(TARGET_SUBDIR)/libga68"; \ +++ for flag in $(EXTRA_TARGET_FLAGS); do \ +++ eval `echo "$$flag" | sed -e "s|^\([^=]*\)=\(.*\)|\1='\2'; export \1|"`; \ +++ done; \ +++ (cd $(TARGET_SUBDIR)/libga68 && \ +++ $(MAKE) $(BASE_FLAGS_TO_PASS) "AR=$${AR}" "AS=$${AS}" \ +++ "CC=$${CC}" "CXX=$${CXX}" "LD=$${LD}" "NM=$${NM}" \ +++ "RANLIB=$${RANLIB}" \ +++ "DLLTOOL=$${DLLTOOL}" "WINDRES=$${WINDRES}" "WINDMC=$${WINDMC}" \ +++ maintainer-clean) \ +++ || exit 1 +++ +++@endif target-libga68 +++ +++ +++ +++ +++ ++ .PHONY: configure-target-libgomp maybe-configure-target-libgomp ++ maybe-configure-target-libgomp: ++ @if gcc-bootstrap ++@@ -64335,6 +64857,14 @@ check-gcc-cobol: gcc-site.exp ++ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-cobol); ++ check-cobol: check-gcc-cobol check-target-libgcobol ++ +++.PHONY: check-gcc-algol68 check-algol68 +++check-gcc-algol68: gcc-site.exp +++ r=`${PWD_COMMAND}`; export r; \ +++ s=`cd $(srcdir); ${PWD_COMMAND}`; export s; \ +++ $(HOST_EXPORTS) \ +++ (cd gcc && $(MAKE) $(GCC_FLAGS_TO_PASS) check-algol68); +++check-algol68: check-gcc-algol68 check-target-libga68 +++ ++ ++ # The gcc part of install-no-fixedincludes, which relies on an intimate ++ # knowledge of how a number of gcc internal targets (inter)operate. Delegate. ++@@ -67876,6 +68406,7 @@ configure-stageautofeedback-target-zlib: maybe-all-stageautofeedback-gcc ++ configure-target-rda: stage_last ++ configure-target-libada: stage_last ++ configure-target-libgm2: stage_last +++configure-target-libga68: stage_last ++ configure-stage1-target-libgomp: maybe-all-stage1-gcc ++ configure-stage2-target-libgomp: maybe-all-stage2-gcc ++ configure-stage3-target-libgomp: maybe-all-stage3-gcc ++@@ -67920,6 +68451,7 @@ configure-target-zlib: maybe-all-gcc ++ configure-target-rda: maybe-all-gcc ++ configure-target-libada: maybe-all-gcc ++ configure-target-libgm2: maybe-all-gcc +++configure-target-libga68: maybe-all-gcc ++ configure-target-libgomp: maybe-all-gcc ++ configure-target-libitm: maybe-all-gcc ++ configure-target-libatomic: maybe-all-gcc ++@@ -69220,6 +69752,9 @@ all-target-libgm2: maybe-all-target-libatomic ++ @unless target-libstdc++-v3-bootstrap ++ configure-target-libgrust: maybe-all-target-libstdc++-v3 ++ @endunless target-libstdc++-v3-bootstrap +++@unless target-libstdc++-v3-bootstrap +++configure-target-libga68: maybe-all-target-libstdc++-v3 +++@endunless target-libstdc++-v3-bootstrap ++ @unless target-libbacktrace-bootstrap ++ configure-target-libgfortran: maybe-all-target-libbacktrace ++ @endunless target-libbacktrace-bootstrap ++@@ -69281,6 +69816,7 @@ all-target-libgo: maybe-all-target-libatomic ++ configure-target-libgm2: maybe-all-target-libstdc++-v3 ++ all-target-libgm2: maybe-all-target-libatomic ++ configure-target-libgrust: maybe-all-target-libstdc++-v3 +++configure-target-libga68: maybe-all-target-libstdc++-v3 ++ configure-target-newlib: maybe-all-binutils ++ configure-target-newlib: maybe-all-ld ++ configure-target-libgfortran: maybe-all-target-libbacktrace ++@@ -69387,6 +69923,7 @@ configure-target-zlib: maybe-all-target-libgcc ++ configure-target-rda: maybe-all-target-libgcc ++ configure-target-libada: maybe-all-target-libgcc ++ configure-target-libgm2: maybe-all-target-libgcc +++configure-target-libga68: maybe-all-target-libgcc ++ configure-target-libgomp: maybe-all-target-libgcc ++ configure-target-libitm: maybe-all-target-libgcc ++ configure-target-libatomic: maybe-all-target-libgcc ++@@ -69433,6 +69970,8 @@ configure-target-libada: maybe-all-target-newlib maybe-all-target-libgloss ++ ++ configure-target-libgm2: maybe-all-target-newlib maybe-all-target-libgloss ++ +++configure-target-libga68: maybe-all-target-newlib maybe-all-target-libgloss +++ ++ configure-target-libgomp: maybe-all-target-newlib maybe-all-target-libgloss ++ ++ configure-target-libitm: maybe-all-target-newlib maybe-all-target-libgloss ++--- a/src/Makefile.tpl +++++ b/src/Makefile.tpl ++@@ -279,6 +279,11 @@ POSTSTAGE1_HOST_EXPORTS = \ ++ CC_FOR_BUILD="$$CC"; export CC_FOR_BUILD; \ ++ $(POSTSTAGE1_CXX_EXPORT) \ ++ $(LTO_EXPORTS) \ +++ GA68="$$r/$(HOST_SUBDIR)/prev-gcc/ga68$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ +++ -B$(build_tooldir)/bin/ $(GA68FLAGS_FOR_TARGET) \ +++ -B$$r/prev-$(TARGET_SUBDIR)/libga68/.libs"; \ +++ export GA68; \ +++ GA68_FOR_BUILD="$$GA68"; export GA68_FOR_BUILD; \ ++ GDC="$$r/$(HOST_SUBDIR)/prev-gcc/gdc$(exeext) -B$$r/$(HOST_SUBDIR)/prev-gcc/ \ ++ -B$(build_tooldir)/bin/ $(GDCFLAGS_FOR_TARGET) \ ++ -B$$r/prev-$(TARGET_SUBDIR)/libphobos/libdruntime/gcc \ ++@@ -311,6 +316,7 @@ BASE_TARGET_EXPORTS = \ ++ CPPFLAGS="$(CPPFLAGS_FOR_TARGET)"; export CPPFLAGS; \ ++ CXXFLAGS="$(CXXFLAGS_FOR_TARGET)"; export CXXFLAGS; \ ++ GFORTRAN="$(GFORTRAN_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GFORTRAN; \ +++ GA68="$(GA68_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GA68; \ ++ GOC="$(GOC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GOC; \ ++ GDC="$(GDC_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GDC; \ ++ GM2="$(GM2_FOR_TARGET) $(XGCC_FLAGS_FOR_TARGET) $$TFLAGS"; export GM2; \ ++@@ -380,6 +386,7 @@ CXX_FOR_BUILD = @CXX_FOR_BUILD@ ++ DLLTOOL_FOR_BUILD = @DLLTOOL_FOR_BUILD@ ++ DSYMUTIL_FOR_BUILD = @DSYMUTIL_FOR_BUILD@ ++ GFORTRAN_FOR_BUILD = @GFORTRAN_FOR_BUILD@ +++GA68_FOR_BUILD = @GA68_FOR_BUILD@ ++ GOC_FOR_BUILD = @GOC_FOR_BUILD@ ++ GDC_FOR_BUILD = @GDC_FOR_BUILD@ ++ GM2_FOR_BUILD = @GM2_FOR_BUILD@ ++@@ -442,6 +449,7 @@ STRIP = @STRIP@ ++ WINDRES = @WINDRES@ ++ WINDMC = @WINDMC@ ++ +++GA68 = @GA68@ ++ GDC = @GDC@ ++ GNATBIND = @GNATBIND@ ++ GNATMAKE = @GNATMAKE@ ++@@ -452,6 +460,7 @@ LIBCFLAGS = $(CFLAGS) ++ CXXFLAGS = @CXXFLAGS@ ++ LIBCXXFLAGS = $(CXXFLAGS) -fno-implicit-templates ++ GOCFLAGS = $(CFLAGS) +++GA68FLAGS = @GA68FLAGS@ ++ GDCFLAGS = @GDCFLAGS@ ++ GM2FLAGS = $(CFLAGS) ++ ++@@ -599,6 +608,7 @@ CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @CXX_FOR_TARGET@ ++ RAW_CXX_FOR_TARGET=$(STAGE_CC_WRAPPER) @RAW_CXX_FOR_TARGET@ ++ GFORTRAN_FOR_TARGET=$(STAGE_CC_WRAPPER) @GFORTRAN_FOR_TARGET@ ++ GOC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GOC_FOR_TARGET@ +++GA68_FOR_TARGET=$(STAGE_CC_WRAPPER) @GA68_FOR_TARGET@ ++ GDC_FOR_TARGET=$(STAGE_CC_WRAPPER) @GDC_FOR_TARGET@ ++ GM2_FOR_TARGET=$(STAGE_CC_WRAPPER) @GM2_FOR_TARGET@ ++ DLLTOOL_FOR_TARGET=@DLLTOOL_FOR_TARGET@ ++@@ -628,6 +638,7 @@ LIBCXXFLAGS_FOR_TARGET = $(CXXFLAGS_FOR_TARGET) -fno-implicit-templates ++ LDFLAGS_FOR_TARGET = @LDFLAGS_FOR_TARGET@ ++ GM2FLAGS_FOR_TARGET = -O2 -g ++ GOCFLAGS_FOR_TARGET = -O2 -g +++GA68FLAGS_FOR_TARGET = -O2 -g ++ GDCFLAGS_FOR_TARGET = -O2 -g ++ ++ FLAGS_FOR_TARGET = @FLAGS_FOR_TARGET@ ++@@ -732,6 +743,7 @@ EXTRA_HOST_FLAGS = \ ++ 'DSYMUTIL=$(DSYMUTIL)' \ ++ 'GFORTRAN=$(GFORTRAN)' \ ++ 'GOC=$(GOC)' \ +++ 'GA68=$(GA68)' \ ++ 'GDC=$(GDC)' \ ++ 'GM2=$(GM2)' \ ++ 'LD=$(LD)' \ ++@@ -760,6 +772,7 @@ STAGE1_FLAGS_TO_PASS = \ ++ POSTSTAGE1_FLAGS_TO_PASS = \ ++ CC="$${CC}" CC_FOR_BUILD="$${CC_FOR_BUILD}" \ ++ CXX="$${CXX}" CXX_FOR_BUILD="$${CXX_FOR_BUILD}" \ +++ GA68="$${GA68}" GA68_FOR_BUILD="$${GA68_FOR_BUILD}" \ ++ GDC="$${GDC}" GDC_FOR_BUILD="$${GDC_FOR_BUILD}" \ ++ GM2="$${GM2}" GM2_FOR_BUILD="$${GM2_FOR_BUILD}" \ ++ GNATBIND="$${GNATBIND}" \ ++@@ -795,6 +808,7 @@ EXTRA_TARGET_FLAGS = \ ++ 'GFORTRAN=$$(GFORTRAN_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GOC=$$(GOC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GOCFLAGS=$$(GOCFLAGS_FOR_TARGET)' \ +++ 'GA68=$$(GA68_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GDC=$$(GDC_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++ 'GDCFLAGS=$$(GDCFLAGS_FOR_TARGET)' \ ++ 'GM2=$$(GM2_FOR_TARGET) $$(XGCC_FLAGS_FOR_TARGET) $$(TFLAGS)' \ ++--- a/src/config/acx.m4 +++++ b/src/config/acx.m4 ++@@ -434,6 +434,12 @@ else ++ have_cargo=no ++ fi]) ++ +++# Test for Algol 68 +++AC_DEFUN([ACX_PROG_GA68], +++[AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) +++AC_REQUIRE([AC_PROG_CC]) +++AC_CHECK_TOOL(GA68, ga68, no)]) +++ ++ # Test for D. ++ AC_DEFUN([ACX_PROG_GDC], ++ [AC_REQUIRE([AC_CHECK_TOOL_PREFIX]) ++--- a/src/configure +++++ b/src/configure ++@@ -616,6 +616,7 @@ AR_FOR_TARGET ++ GM2_FOR_TARGET ++ GDC_FOR_TARGET ++ GOC_FOR_TARGET +++GA68_FOR_TARGET ++ GFORTRAN_FOR_TARGET ++ GCC_FOR_TARGET ++ CXX_FOR_TARGET ++@@ -624,6 +625,7 @@ RANLIB_PLUGIN_OPTION ++ AR_PLUGIN_OPTION ++ PKG_CONFIG_PATH ++ GDCFLAGS +++GA68FLAGS ++ READELF ++ OTOOL ++ OBJDUMP ++@@ -655,6 +657,7 @@ LD_FOR_BUILD ++ LDFLAGS_FOR_BUILD ++ GDC_FOR_BUILD ++ GOC_FOR_BUILD +++GA68_FOR_BUILD ++ GFORTRAN_FOR_BUILD ++ DSYMUTIL_FOR_BUILD ++ DLLTOOL_FOR_BUILD ++@@ -718,6 +721,7 @@ HAVE_CXX14 ++ do_compare ++ CARGO ++ GDC +++GA68 ++ GNATMAKE ++ GNATBIND ++ ac_ct_CXX ++@@ -818,6 +822,7 @@ enable_libquadmath ++ enable_libquadmath_support ++ enable_libada ++ enable_libgm2 +++enable_libga68 ++ enable_libssp ++ enable_libstdcxx ++ enable_bootstrap ++@@ -848,6 +853,7 @@ enable_host_shared ++ enable_libgdiagnostics ++ enable_stage1_languages ++ enable_objc_gc +++enable_algol68_gc ++ with_target_bdw_gc ++ with_target_bdw_gc_include ++ with_target_bdw_gc_lib ++@@ -895,6 +901,7 @@ CC_FOR_TARGET ++ CXX_FOR_TARGET ++ GCC_FOR_TARGET ++ GFORTRAN_FOR_TARGET +++GA68_FOR_TARGET ++ GOC_FOR_TARGET ++ GDC_FOR_TARGET ++ GM2_FOR_TARGET ++@@ -1564,6 +1571,7 @@ Optional Features: ++ disable libquadmath support for Fortran ++ --enable-libada build libada directory ++ --enable-libgm2 build libgm2 directory +++ --enable-libga68 build libga68 directory ++ --enable-libssp build libssp directory ++ --disable-libstdcxx do not build libstdc++-v3 directory ++ --enable-bootstrap enable bootstrapping [yes if native build] ++@@ -1587,6 +1595,8 @@ Optional Features: ++ Mostly useful for compiler development ++ --enable-objc-gc enable use of Boehm's garbage collector with the GNU ++ Objective-C runtime +++ --enable-algol68-gc enable use of Boehm's garbage collector with the GNU +++ Algol runtime ++ --enable-vtable-verify Enable vtable verification feature ++ --enable-serial-[{host,target,build}-]configure ++ force sequential configuration of sub-packages for ++@@ -1699,6 +1709,8 @@ Some influential environment variables: ++ GCC for the target ++ GFORTRAN_FOR_TARGET ++ GFORTRAN for the target +++ GA68_FOR_TARGET +++ GA68 for the target ++ GOC_FOR_TARGET ++ GOC for the target ++ GDC_FOR_TARGET ++@@ -2866,6 +2878,7 @@ target_libraries="target-libgcc \ ++ target-libgcobol \ ++ target-libada \ ++ target-libgm2 \ +++ target-libga68 \ ++ target-libgo \ ++ target-libgrust \ ++ target-libphobos \ ++@@ -3269,6 +3282,14 @@ if test "${ENABLE_LIBGM2}" != "yes" ; then ++ noconfigdirs="$noconfigdirs gm2tools" ++ fi ++ +++# Check whether --enable-libga68 was given. +++if test "${enable_libga68+set}" = set; then : +++ enableval=$enable_libga68; ENABLE_LIBGA68=$enableval +++else +++ ENABLE_LIBGA68=yes +++fi +++ +++ ++ # Check whether --enable-libssp was given. ++ if test "${enable_libssp+set}" = set; then : ++ enableval=$enable_libssp; ENABLE_LIBSSP=$enableval ++@@ -4247,6 +4268,7 @@ if test "${build}" != "${host}" ; then ++ CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} ++ DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} ++ GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} +++ GA68_FOR_BUILD=${GA68_FOR_BUILD-ga68} ++ GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} ++ GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} ++ DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} ++@@ -4262,6 +4284,7 @@ else ++ CXX_FOR_BUILD="\$(CXX)" ++ DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" ++ GFORTRAN_FOR_BUILD="\$(GFORTRAN)" +++ GA68_FOR_BUILD="\$(GA68)" ++ GOC_FOR_BUILD="\$(GOC)" ++ GDC_FOR_BUILD="\$(GDC)" ++ DLLTOOL_FOR_BUILD="\$(DLLTOOL)" ++@@ -5782,6 +5805,100 @@ fi ++ ++ ++ +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}ga68", so it can be a program name with args. +++set dummy ${ac_tool_prefix}ga68; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_GA68+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$GA68"; then +++ ac_cv_prog_GA68="$GA68" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_GA68="${ac_tool_prefix}ga68" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++GA68=$ac_cv_prog_GA68 +++if test -n "$GA68"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68" >&5 +++$as_echo "$GA68" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_GA68"; then +++ ac_ct_GA68=$GA68 +++ # Extract the first word of "ga68", so it can be a program name with args. +++set dummy ga68; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_GA68+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_GA68"; then +++ ac_cv_prog_ac_ct_GA68="$ac_ct_GA68" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_GA68="ga68" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_GA68=$ac_cv_prog_ac_ct_GA68 +++if test -n "$ac_ct_GA68"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_GA68" >&5 +++$as_echo "$ac_ct_GA68" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_GA68" = x; then +++ GA68="no" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ GA68=$ac_ct_GA68 +++ fi +++else +++ GA68="$ac_cv_prog_GA68" +++fi +++ +++ +++ ++ if test -n "$ac_tool_prefix"; then ++ # Extract the first word of "${ac_tool_prefix}gdc", so it can be a program name with args. ++ set dummy ${ac_tool_prefix}gdc; ac_word=$2 ++@@ -10328,6 +10445,11 @@ if test "${enable_objc_gc+set}" = set; then : ++ enableval=$enable_objc_gc; ++ fi ++ +++# Check whether --enable-algol68-gc was given. +++if test "${enable_algol68_gc+set}" = set; then : +++ enableval=$enable_algol68_gc; +++fi +++ ++ ++ # Check whether --with-target-bdw-gc was given. ++ if test "${with_target_bdw_gc+set}" = set; then : ++@@ -10347,22 +10469,23 @@ if test "${with_target_bdw_gc_lib+set}" = set; then : ++ fi ++ ++ ++-case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) ++- { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 +++case ,${enable_languages},:${enable_objc_gc}:${enable_algol68_gc} in +++ *,objc,*:yes:*|*,objc,*:auto:*|*,algol68,*:*:yes|*,algol68,*:*:auto) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 ++ $as_echo_n "checking for bdw garbage collector... " >&6; } ++- if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++- { $as_echo "$as_me:${as_lineno-$LINENO}: result: using bdw-gc in default locations" >&5 +++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using bdw-gc in default locations" >&5 ++ $as_echo "using bdw-gc in default locations" >&6; } ++- else ++- if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++- as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 ++- elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++- as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 ++ else ++- { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 +++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then +++ as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 +++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then +++ as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 +++ else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 ++ $as_echo "using paths configured with --with-target-bdw-gc options" >&6; } +++ fi ++ fi ++- fi ++ esac ++ ++ # Disable libitm, libsanitizer, libvtv if we're not building C++ ++@@ -11683,6 +11806,7 @@ done ++ ++ ++ +++ ++ ++ # Generate default definitions for YACC, M4, LEX and other programs that run ++ # on the build machine. These are used if the Makefile can't locate these ++@@ -14202,6 +14326,9 @@ fi ++ ++ ++ +++GA68FLAGS=${GA68FLAGS-${CFLAGS}} +++ +++ ++ GDCFLAGS=${GDCFLAGS-${CFLAGS}} ++ ++ ++@@ -15003,6 +15130,167 @@ fi ++ ++ ++ +++if test -n "$GA68_FOR_TARGET"; then +++ ac_cv_prog_GA68_FOR_TARGET=$GA68_FOR_TARGET +++elif test -n "$ac_cv_prog_GA68_FOR_TARGET"; then +++ GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET +++fi +++ +++if test -n "$ac_cv_prog_GA68_FOR_TARGET"; then +++ for ncn_progname in ga68; do +++ # Extract the first word of "${ncn_progname}", so it can be a program name with args. +++set dummy ${ncn_progname}; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$GA68_FOR_TARGET"; then +++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_GA68_FOR_TARGET="${ncn_progname}" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET +++if test -n "$GA68_FOR_TARGET"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 +++$as_echo "$GA68_FOR_TARGET" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ done +++fi +++ +++if test -z "$ac_cv_prog_GA68_FOR_TARGET" && test -n "$with_build_time_tools"; then +++ for ncn_progname in ga68; do +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ncn_progname} in $with_build_time_tools" >&5 +++$as_echo_n "checking for ${ncn_progname} in $with_build_time_tools... " >&6; } +++ if test -x $with_build_time_tools/${ncn_progname}; then +++ ac_cv_prog_GA68_FOR_TARGET=$with_build_time_tools/${ncn_progname} +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +++$as_echo "yes" >&6; } +++ break +++ else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++ fi +++ done +++fi +++ +++if test -z "$ac_cv_prog_GA68_FOR_TARGET"; then +++ for ncn_progname in ga68; do +++ if test -n "$ncn_target_tool_prefix"; then +++ # Extract the first word of "${ncn_target_tool_prefix}${ncn_progname}", so it can be a program name with args. +++set dummy ${ncn_target_tool_prefix}${ncn_progname}; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$GA68_FOR_TARGET"; then +++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_GA68_FOR_TARGET="${ncn_target_tool_prefix}${ncn_progname}" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET +++if test -n "$GA68_FOR_TARGET"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 +++$as_echo "$GA68_FOR_TARGET" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ fi +++ if test -z "$ac_cv_prog_GA68_FOR_TARGET" && test $build = $target ; then +++ # Extract the first word of "${ncn_progname}", so it can be a program name with args. +++set dummy ${ncn_progname}; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_GA68_FOR_TARGET+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$GA68_FOR_TARGET"; then +++ ac_cv_prog_GA68_FOR_TARGET="$GA68_FOR_TARGET" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_GA68_FOR_TARGET="${ncn_progname}" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++GA68_FOR_TARGET=$ac_cv_prog_GA68_FOR_TARGET +++if test -n "$GA68_FOR_TARGET"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $GA68_FOR_TARGET" >&5 +++$as_echo "$GA68_FOR_TARGET" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ fi +++ test -n "$ac_cv_prog_GA68_FOR_TARGET" && break +++ done +++fi +++ +++if test -z "$ac_cv_prog_GA68_FOR_TARGET" ; then +++ set dummy ga68 +++ if test $build = $target ; then +++ GA68_FOR_TARGET="$2" +++ else +++ GA68_FOR_TARGET="${ncn_target_tool_prefix}$2" +++ fi +++else +++ GA68_FOR_TARGET="$ac_cv_prog_GA68_FOR_TARGET" +++fi +++ +++ +++ ++ if test -n "$GOC_FOR_TARGET"; then ++ ac_cv_prog_GOC_FOR_TARGET=$GOC_FOR_TARGET ++ elif test -n "$ac_cv_prog_GOC_FOR_TARGET"; then ++@@ -19469,6 +19757,51 @@ $as_echo "pre-installed" >&6; } ++ fi ++ fi ++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target ga68" >&5 +++$as_echo_n "checking where to find the target ga68... " >&6; } +++if test "x${build}" != "x${host}" ; then +++ if expr "x$GA68_FOR_TARGET" : "x/" > /dev/null; then +++ # We already found the complete path +++ ac_dir=`dirname $GA68_FOR_TARGET` +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5 +++$as_echo "pre-installed in $ac_dir" >&6; } +++ else +++ # Canadian cross, just use what we found +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5 +++$as_echo "pre-installed" >&6; } +++ fi +++else +++ ok=yes +++ case " ${configdirs} " in +++ *" gcc "*) ;; +++ *) ok=no ;; +++ esac +++ case ,${enable_languages}, in +++ *,algol68,*) ;; +++ *) ok=no ;; +++ esac +++ if test $ok = yes; then +++ # An in-tree tool is available and we can use it +++ GA68_FOR_TARGET='$$r/$(HOST_SUBDIR)/gcc/ga68 -B$$r/$(HOST_SUBDIR)/gcc/' +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: just compiled" >&5 +++$as_echo "just compiled" >&6; } +++ elif expr "x$GA68_FOR_TARGET" : "x/" > /dev/null; then +++ # We already found the complete path +++ ac_dir=`dirname $GA68_FOR_TARGET` +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed in $ac_dir" >&5 +++$as_echo "pre-installed in $ac_dir" >&6; } +++ elif test "x$target" = "x$host"; then +++ # We can use an host tool +++ GA68_FOR_TARGET='$(GA68)' +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: host tool" >&5 +++$as_echo "host tool" >&6; } +++ else +++ # We need a cross tool +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: pre-installed" >&5 +++$as_echo "pre-installed" >&6; } +++ fi +++fi +++ ++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking where to find the target gdc" >&5 ++ $as_echo_n "checking where to find the target gdc... " >&6; } ++ if test "x${build}" != "x${host}" ; then ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -164,6 +164,7 @@ target_libraries="target-libgcc \ ++ target-libgcobol \ ++ target-libada \ ++ target-libgm2 \ +++ target-libga68 \ ++ target-libgo \ ++ target-libgrust \ ++ target-libphobos \ ++@@ -512,6 +513,11 @@ if test "${ENABLE_LIBGM2}" != "yes" ; then ++ noconfigdirs="$noconfigdirs gm2tools" ++ fi ++ +++AC_ARG_ENABLE(libga68, +++[AS_HELP_STRING([--enable-libga68], [build libga68 directory])], +++ENABLE_LIBGA68=$enableval, +++ENABLE_LIBGA68=yes) +++ ++ AC_ARG_ENABLE(libssp, ++ [AS_HELP_STRING([--enable-libssp], [build libssp directory])], ++ ENABLE_LIBSSP=$enableval, ++@@ -1445,6 +1451,7 @@ if test "${build}" != "${host}" ; then ++ CXX_FOR_BUILD=${CXX_FOR_BUILD-g++} ++ DSYMUTIL_FOR_BUILD=${DSYMUTIL_FOR_BUILD-dsymutil} ++ GFORTRAN_FOR_BUILD=${GFORTRAN_FOR_BUILD-gfortran} +++ GA68_FOR_BUILD=${GA68_FOR_BUILD-ga68} ++ GOC_FOR_BUILD=${GOC_FOR_BUILD-gccgo} ++ GDC_FOR_BUILD=${GDC_FOR_BUILD-gdc} ++ DLLTOOL_FOR_BUILD=${DLLTOOL_FOR_BUILD-dlltool} ++@@ -1460,6 +1467,7 @@ else ++ CXX_FOR_BUILD="\$(CXX)" ++ DSYMUTIL_FOR_BUILD="\$(DSYMUTIL)" ++ GFORTRAN_FOR_BUILD="\$(GFORTRAN)" +++ GA68_FOR_BUILD="\$(GA68)" ++ GOC_FOR_BUILD="\$(GOC)" ++ GDC_FOR_BUILD="\$(GDC)" ++ DLLTOOL_FOR_BUILD="\$(DLLTOOL)" ++@@ -1513,6 +1521,7 @@ int main() {}])], ++ fi ++ ++ ACX_PROG_GNAT +++ACX_PROG_GA68 ++ ACX_PROG_GDC ++ ACX_PROG_CARGO ++ ACX_PROG_CMP_IGNORE_INITIAL ++@@ -2637,6 +2646,10 @@ AC_ARG_ENABLE(objc-gc, ++ [AS_HELP_STRING([--enable-objc-gc], ++ [enable use of Boehm's garbage collector with the ++ GNU Objective-C runtime])]) +++AC_ARG_ENABLE(algol68-gc, +++[AS_HELP_STRING([--enable-algol68-gc], +++ [enable use of Boehm's garbage collector with the +++ GNU Algol runtime])]) ++ AC_ARG_WITH([target-bdw-gc], ++ [AS_HELP_STRING([--with-target-bdw-gc=PATHLIST], ++ [specify prefix directory for installed bdw-gc package. ++@@ -2649,21 +2662,22 @@ AC_ARG_WITH([target-bdw-gc-lib], ++ [AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST], ++ [specify directories for installed bdw-gc library])]) ++ ++-case ,${enable_languages},:${enable_objc_gc} in *,objc,*:yes|*,objc,*:auto) ++- AC_MSG_CHECKING([for bdw garbage collector]) ++- if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then ++- dnl no bdw-gw options, assume default locations ++- AC_MSG_RESULT([using bdw-gc in default locations]) ++- else ++- dnl bdw-gw options, first error checking, complete checking in libobjc ++- if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then ++- AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) ++- elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then ++- AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) +++case ,${enable_languages},:${enable_objc_gc}:${enable_algol68_gc} in +++ *,objc,*:yes:*|*,objc,*:auto:*|*,algol68,*:*:yes|*,algol68,*:*:auto) +++ AC_MSG_CHECKING([for bdw garbage collector]) +++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +++ dnl no bdw-gw options, assume default locations +++ AC_MSG_RESULT([using bdw-gc in default locations]) ++ else ++- AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) +++ dnl bdw-gw options, first error checking, complete checking in libobjc and libga68 +++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then +++ AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) +++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then +++ AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) +++ else +++ AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) +++ fi ++ fi ++- fi ++ esac ++ ++ # Disable libitm, libsanitizer, libvtv if we're not building C++ ++@@ -3902,6 +3916,7 @@ AC_SUBST(CXX_FOR_BUILD) ++ AC_SUBST(DLLTOOL_FOR_BUILD) ++ AC_SUBST(DSYMUTIL_FOR_BUILD) ++ AC_SUBST(GFORTRAN_FOR_BUILD) +++AC_SUBST(GA68_FOR_BUILD) ++ AC_SUBST(GOC_FOR_BUILD) ++ AC_SUBST(GDC_FOR_BUILD) ++ AC_SUBST(LDFLAGS_FOR_BUILD) ++@@ -3996,6 +4011,9 @@ AC_SUBST(CC) ++ AC_SUBST(CXX) ++ AC_SUBST(CFLAGS) ++ AC_SUBST(CXXFLAGS) +++AC_SUBST(GA68) +++AC_SUBST(GA68FLAGS) +++GA68FLAGS=${GA68FLAGS-${CFLAGS}} ++ AC_SUBST(GDC) ++ AC_SUBST(GDCFLAGS) ++ GDCFLAGS=${GDCFLAGS-${CFLAGS}} ++@@ -4032,6 +4050,7 @@ NCN_STRICT_CHECK_TARGET_TOOLS(CC_FOR_TARGET, cc gcc) ++ NCN_STRICT_CHECK_TARGET_TOOLS(CXX_FOR_TARGET, c++ g++ cxx gxx) ++ NCN_STRICT_CHECK_TARGET_TOOLS(GCC_FOR_TARGET, gcc, ${CC_FOR_TARGET}) ++ NCN_STRICT_CHECK_TARGET_TOOLS(GFORTRAN_FOR_TARGET, gfortran) +++NCN_STRICT_CHECK_TARGET_TOOLS(GA68_FOR_TARGET, ga68) ++ NCN_STRICT_CHECK_TARGET_TOOLS(GOC_FOR_TARGET, gccgo) ++ NCN_STRICT_CHECK_TARGET_TOOLS(GDC_FOR_TARGET, gdc) ++ NCN_STRICT_CHECK_TARGET_TOOLS(GM2_FOR_TARGET, gm2) ++@@ -4083,6 +4102,8 @@ GCC_TARGET_TOOL(gfortran, GFORTRAN_FOR_TARGET, GFORTRAN, ++ [gcc/gfortran -B$$r/$(HOST_SUBDIR)/gcc/], fortran) ++ GCC_TARGET_TOOL(gccgo, GOC_FOR_TARGET, GOC, ++ [gcc/gccgo -B$$r/$(HOST_SUBDIR)/gcc/], go) +++GCC_TARGET_TOOL(ga68, GA68_FOR_TARGET, GA68, +++ [gcc/ga68 -B$$r/$(HOST_SUBDIR)/gcc/], algol68) ++ GCC_TARGET_TOOL(gdc, GDC_FOR_TARGET, GDC, ++ [gcc/gdc -B$$r/$(HOST_SUBDIR)/gcc/], d) ++ GCC_TARGET_TOOL(gm2, GM2_FOR_TARGET, GM2, ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -615,6 +615,8 @@ tm_d_file_list=@tm_d_file_list@ ++ tm_d_include_list=@tm_d_include_list@ ++ tm_rust_file_list=@tm_rust_file_list@ ++ tm_rust_include_list=@tm_rust_include_list@ +++tm_algol68_file_list=@tm_algol68_file_list@ +++tm_algol68_include_list=@tm_algol68_include_list@ ++ build_xm_file_list=@build_xm_file_list@ ++ build_xm_include_list=@build_xm_include_list@ ++ build_xm_defines=@build_xm_defines@ ++@@ -919,6 +921,7 @@ TCONFIG_H = tconfig.h $(xm_file_list) ++ TM_P_H = tm_p.h $(tm_p_file_list) $(TREE_H) ++ TM_D_H = tm_d.h $(tm_d_file_list) ++ TM_RUST_H = tm_rust.h $(tm_rust_file_list) +++TM_ALGOL68_H = tm_algol68.h $(tm_algol68_file_list) ++ GTM_H = tm.h $(tm_file_list) insn-constants.h ++ TM_H = $(GTM_H) insn-flags.h $(OPTIONS_H) ++ ++@@ -978,11 +981,13 @@ C_TARGET_DEF = c-family/c-target.def target-hooks-macros.h ++ COMMON_TARGET_DEF = common/common-target.def target-hooks-macros.h ++ D_TARGET_DEF = d/d-target.def target-hooks-macros.h ++ RUST_TARGET_DEF = rust/rust-target.def target-hooks-macros.h +++ALGOL68_TARGET_DEF = algol68/algol68-target.def target-hooks-macros.h ++ TARGET_H = $(TM_H) target.h $(TARGET_DEF) insn-modes.h insn-codes.h ++ C_TARGET_H = c-family/c-target.h $(C_TARGET_DEF) ++ COMMON_TARGET_H = common/common-target.h $(INPUT_H) $(COMMON_TARGET_DEF) ++ D_TARGET_H = d/d-target.h $(D_TARGET_DEF) ++ RUST_TARGET_H = rust/rust-target.h $(RUST_TARGET_DEF) +++ALGOL68_TARGET_H = algol68/algol68-target.h $(ALGOL68_TARGET_DEF) ++ MACHMODE_H = machmode.h mode-classes.def ++ HOOKS_H = hooks.h ++ HOSTHOOKS_DEF_H = hosthooks-def.h $(HOOKS_H) ++@@ -1303,6 +1308,9 @@ FORTRAN_TARGET_OBJS=@fortran_target_objs@ ++ # Target specific, Rust specific object file ++ RUST_TARGET_OBJS=@rust_target_objs@ ++ +++# Target specific, Algol68 specific object file +++ALGOL68_TARGET_OBJS=@algol68_target_objs@ +++ ++ # Object files for gcc many-languages driver. ++ GCC_OBJS = gcc.o gcc-main.o ggc-none.o gcc-urlifier.o options-urls.o ++ ++@@ -2082,6 +2090,7 @@ tm.h: cs-tm.h ; @true ++ tm_p.h: cs-tm_p.h ; @true ++ tm_d.h: cs-tm_d.h ; @true ++ tm_rust.h: cs-tm_rust.h ; @true +++tm_algol68.h: cs-tm_algol68.h; @true ++ ++ cs-config.h: Makefile ++ TARGET_CPU_DEFAULT="" \ ++@@ -2121,6 +2130,11 @@ cs-tm_rust.h: Makefile ++ HEADERS="$(tm_rust_include_list)" DEFINES="" \ ++ $(SHELL) $(srcdir)/mkconfig.sh tm_rust.h ++ +++cs-tm_algol68.h: Makefile +++ TARGET_CPU_DEFAULT="" \ +++ HEADERS="$(tm_algol68_include_list)" DEFINES="" \ +++ $(SHELL) $(srcdir)/mkconfig.sh tm_algol68.h +++ ++ # Don't automatically run autoconf, since configure.ac might be accidentally ++ # newer than configure. Also, this writes into the source directory which ++ # might be on a read-only file system. If configured for maintainer mode ++@@ -2594,6 +2608,12 @@ default-rust.o: config/default-rust.cc ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++ +++# Files used by the Algol68 language front end. +++ +++default-algol68.o: config/default-algol68.cc +++ $(COMPILE) $< +++ $(POSTCOMPILE) +++ ++ # Language-independent files. ++ ++ DRIVER_DEFINES = \ ++@@ -2940,6 +2960,15 @@ s-rust-target-hooks-def-h: build/genhooks$(build_exeext) ++ rust/rust-target-hooks-def.h ++ $(STAMP) s-rust-target-hooks-def-h ++ +++algol68/algol68-target-hooks-def.h: s-algol68-target-hooks-def-h; @true +++ +++s-algol68-target-hooks-def-h: build/genhooks$(build_exeext) +++ $(RUN_GEN) build/genhooks$(build_exeext) "Algol68 Target Hook" \ +++ > tmp-algol68-target-hooks-def.h +++ $(SHELL) $(srcdir)/../move-if-change tmp-algol68-target-hooks-def.h \ +++ algol68/algol68-target-hooks-def.h +++ $(STAMP) s-algol68-target-hooks-def-h +++ ++ # check if someone mistakenly only changed tm.texi. ++ # We use a different pathname here to avoid a circular dependency. ++ s-tm-texi: $(srcdir)/doc/../doc/tm.texi ++@@ -3148,6 +3178,7 @@ generated_files = config.h tm.h $(TM_P_H) $(TM_D_H) $(TM_H) multilib.h \ ++ gimple-match-auto.h generic-match-auto.h \ ++ c-family/c-target-hooks-def.h d/d-target-hooks-def.h \ ++ $(TM_RUST_H) rust/rust-target-hooks-def.h \ +++ $(TM_ALGOL68_H) algol68/algol68-target-hooks-def.h \ ++ case-cfn-macros.h \ ++ cfn-operators.pd omp-device-properties.h ++ ++@@ -3282,8 +3313,8 @@ build/genrecog.o : genrecog.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ ++ $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) \ ++ $(HASH_TABLE_H) inchash.h ++ build/genhooks.o : genhooks.cc $(TARGET_DEF) $(C_TARGET_DEF) \ ++- $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(RUST_TARGET_DEF) $(BCONFIG_H) \ ++- $(SYSTEM_H) errors.h +++ $(COMMON_TARGET_DEF) $(D_TARGET_DEF) $(RUST_TARGET_DEF) \ +++ $(ALGOL68_TARGET_DEF) $(BCONFIG_H) $(SYSTEM_H) errors.h ++ build/genmddump.o : genmddump.cc $(RTL_BASE_H) $(BCONFIG_H) $(SYSTEM_H) \ ++ $(CORETYPES_H) $(GTM_H) errors.h $(READ_MD_H) $(GENSUPPORT_H) ++ build/genmatch.o : genmatch.cc $(BCONFIG_H) $(SYSTEM_H) $(CORETYPES_H) \ ++@@ -3832,7 +3863,8 @@ $(build_htmldir)/gccinstall/index.html: $(TEXI_GCCINSTALL_FILES) ++ .PHONY: regenerate-opt-urls ++ OPT_URLS_HTML_DEPS = $(build_htmldir)/gcc/Option-Index.html \ ++ $(build_htmldir)/gdc/Option-Index.html \ ++- $(build_htmldir)/gfortran/Option-Index.html +++ $(build_htmldir)/gfortran/Option-Index.html \ +++ $(build_htmldir)/ga68/Option-Index.html ++ $(OPT_URLS_HTML_DEPS): %/Option-Index.html: %/index.html ++ ++ regenerate-opt-urls: $(srcdir)/regenerate-opt-urls.py $(OPT_URLS_HTML_DEPS) ++--- /dev/null +++++ b/src/gcc/algol68/Make-lang.in ++@@ -0,0 +1,287 @@ +++# Make-lang.in -- Top level -*- makefile -*- fragment for GCC Algol 68 +++# frontend. +++ +++# Copyright (C) 2025 Free Software Foundation, Inc. +++ +++# This file is NOT part of GCC. +++ +++# GCC is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3, or (at your option) +++# any later version. +++ +++# GCC is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++ +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# This file provides the language dependent support in the main Makefile. +++ +++.PHONY: algol68 +++ +++# Installation name. +++ +++A68_INSTALL_NAME = $(shell echo ga68|sed '$(program_transform_name)') +++A68_TARGET_INSTALL_NAME = $(target_noncanonical)-$(shell echo ga68|sed '$(program_transform_name)') +++ +++# General hooks +++ +++algol68: a681$(exeext) +++algol68.serial = a681$(exeext) +++ +++.PHONY: algol68 +++ +++# Use maximal warnings for this front end. +++algol68-warn = $(STRICT_WARN) +++ +++# First the driver, ga68. +++ +++GA68_OBJS = \ +++ $(GCC_OBJS) \ +++ algol68/a68spec.o \ +++ $(END) +++ +++a68spec.o: $(srcdir)/algol68/a68spec.cc $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) \ +++ $(CONFIG_H) opts.h +++ $(COMPILER) -c $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(DRIVER_DEFINES) \ +++ $(INCLUDES) $(srcdir)/algol68/a68spec.cc +++ +++ga68$(exeext): $(GA68_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) +++ +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ +++ $(GA68_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \ +++ $(EXTRA_GCC_LIBS) $(LIBS) +++ +++# Now the compiler proper, a681. +++ +++ALGOL68_OBJS = algol68/a68-lang.o \ +++ algol68/a68-unistr.o \ +++ algol68/a68-moids-diagnostics.o \ +++ algol68/a68-moids-misc.o \ +++ algol68/a68-moids-to-string.o \ +++ algol68/a68-postulates.o \ +++ algol68/a68-diagnostics.o \ +++ algol68/a68-exports.o \ +++ algol68/a68-imports.o \ +++ algol68/a68-parser.o \ +++ algol68/a68-parser-keywords.o \ +++ algol68/a68-parser-bottom-up.o \ +++ algol68/a68-parser-brackets.o \ +++ algol68/a68-parser-debug.o \ +++ algol68/a68-parser-extract.o \ +++ algol68/a68-parser-modes.o \ +++ algol68/a68-parser-moids-check.o \ +++ algol68/a68-parser-moids-coerce.o \ +++ algol68/a68-parser-moids-equivalence.o \ +++ algol68/a68-parser-pragmat.o \ +++ algol68/a68-parser-scanner.o \ +++ algol68/a68-parser-scope.o \ +++ algol68/a68-parser-serial-dsa.o \ +++ algol68/a68-parser-taxes.o \ +++ algol68/a68-parser-top-down.o \ +++ algol68/a68-parser-victal.o \ +++ algol68/a68-parser-prelude.o \ +++ algol68/a68-low.o \ +++ algol68/a68-low-builtins.o \ +++ algol68/a68-low-clauses.o \ +++ algol68/a68-low-coercions.o \ +++ algol68/a68-low-decls.o \ +++ algol68/a68-low-generator.o \ +++ algol68/a68-low-misc.o \ +++ algol68/a68-low-moids.o \ +++ algol68/a68-low-multiples.o \ +++ algol68/a68-low-refs.o \ +++ algol68/a68-low-procs.o \ +++ algol68/a68-low-structs.o \ +++ algol68/a68-low-chars.o \ +++ algol68/a68-low-strings.o \ +++ algol68/a68-low-ints.o \ +++ algol68/a68-low-bools.o \ +++ algol68/a68-low-reals.o \ +++ algol68/a68-low-complex.o \ +++ algol68/a68-low-bits.o \ +++ algol68/a68-low-posix.o \ +++ algol68/a68-low-prelude.o \ +++ algol68/a68-low-ranges.o \ +++ algol68/a68-low-runtime.o \ +++ algol68/a68-low-unions.o \ +++ algol68/a68-low-units.o \ +++ $(END) +++ +++ALGOL68_ALL_OBJS = $(ALGOL68_OBJS) $(ALGOL68_TARGET_OBJS) +++ +++algol68_OBJS = $(ALGOL68_ALL_OBJS) algol68/a68spec.o +++ +++a681$(exeext): $(ALGOL68_ALL_OBJS) attribs.o $(BACKEND) $(LIBDEPS) $(algol68.prev) +++ @$(call LINK_PROGRESS,$(INDEX.algol68),start) +++ +$(LLINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \ +++ $(ALGOL68_OBJS) attribs.o $(BACKEND) $(LIBS) $(A681_LIBS) $(BACKENDLIBS) +++ @$(call LINK_PROGRESS,$(INDEX.algol68),end) +++ +++algol68/tfspec.o: $(srcdir)/algol68/tfspec.c \ +++ $(SYSTEM_H) coretypes.h $(TM_H) $(GCC_H) $(CONFIG_H) $(TREE_H) +++ +++# Documentation. +++ +++A68_MANUAL_FILES = +++ +++A68_MANUAL_FILES = \ +++ algol68/ga68.texi \ +++ $(gcc_docdir)/include/fdl.texi \ +++ $(gcc_docdir)/include/gpl_v3.texi \ +++ $(gcc_docdir)/include/gcc-common.texi \ +++ gcc-vers.texi +++ +++A68_INT_MANUAL_FILES = \ +++ algol68/ga68-internals.texi \ +++ $(gcc_docdir)/include/fdl.texi \ +++ $(gcc_docdir)/include/gcc-common.texi \ +++ gcc-vers.texi +++ +++A68_TEXI_FILES = $(A68_MANUAL_FILES) $(A68_INT_MANUAL_FILES) +++ +++doc/ga68.info: $(A68_MANUAL_FILES) +++ if test "x$(BUILD_INFO)" = xinfo; then \ +++ rm -f doc/ga68.info*; \ +++ $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ +++ -I $(gcc_docdir)/include -o $@ $<; \ +++ else true; fi +++ +++doc/ga68-internals.info: $(A68_INT_MANUAL_FILES) +++ if test "x$(BUILD_INFO)" = xinfo; then \ +++ rm -f doc/ga68-internals.info*; \ +++ $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ +++ -I $(gcc_docdir)/include -o $@ $<; \ +++ else true; fi +++ +++doc/ga68.dvi: $(A68_MANUAL_FILES) +++ $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< +++ +++doc/ga68-internals.dvi: $(A68_INT_MANUAL_FILES) +++ $(TEXI2DVI) -I $(abs_docdir)/include -o $@ $< +++ +++doc/ga68.pdf: $(A68_MANUAL_FILES) +++ $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $< +++ +++doc/ga68-internals.pdf: $(A68_INT_MANUAL_FILES) +++ $(TEXI2PDF) -I $(abs_docdir)/include -o $@ $< +++ +++$(build_htmldir)/ga68/index.html: $(A68_MANUAL_FILES) +++ $(mkinstalldirs) $(@D) +++ rm -f $(@D)/* +++ $(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \ +++ -I $(gcc_docdir)/include -I $(srcdir)/d -o $(@D) $< +++ +++$(build_htmldir)/ga68-internals/index.html: $(A68_INT_MANUAL_FILES) +++ $(mkinstalldirs) $(@D) +++ rm -f $(@D)/* +++ $(TEXI2HTML) $(MAKEINFO_TOC_INLINE_FLAG) \ +++ -I $(gcc_docdir)/include -I $(srcdir)/d -o $(@D) $< +++ +++.INTERMEDIATE: ga68.pod +++ +++ga68.pod: algol68/ga68.texi +++ -$(TEXI2POD) -D ga68 < $< > $@ +++ +++# Build hooks. +++ +++algol68.srcextra: +++ +++algol68.all.cross: ga68$(exeext) +++algol68.start.encap: ga68$(exeect) +++algol68.rest.encap: +++algol68.info: doc/ga68.info doc/ga68-internals.info +++algol68.dvi: doc/ga68.dvi doc/ga68-internals.dvi +++algol68.pdf: doc/ga68.pdf doc/ga68-internals.pdf +++algol68.install-pdf: +++algol68.html: $(build_htmldir)/ga68/index.html $(build_htmldir)/ga68-internals/index.html +++algol68.man: doc/ga68.1 +++algol68.srcinfo: doc/ga68.info doc/ga68-internals.info +++ -cp -p $^ $(srcdir)/doc +++algol68.srcinfo: +++algol68.srcman: +++algol68.srcman: doc/ga68.1 +++ -cp -p $^ $(srcdir)/doc +++algol68.install-plugin: +++ +++algol68.tags: force +++ cd $(srcdir)/algol68; etags -o TAGS.sub *.c *.h; \ +++ etags --include TAGS.sub --include ../TAGS.sub +++ +++lang_checks += check-algol68 +++lang_checks_parallelized += check-algol68 +++check_algol68_parallelize = 10 +++ +++selftest-algol68: +++ +++# +++# Install hooks: +++ +++algol68.install-common: installdirs +++ -rm -f $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext) +++ $(INSTALL_PROGRAM) ga68$(exeext) $(DESTDIR)$(bindir)/$(A68_INSTALL_NAME)$(exeext) +++ +++algol68.install-man: $(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext) +++ +++$(DESTDIR)$(man1dir)/$(A68_INSTALL_NAME)$(man1ext): doc/ga68.1 installdirs +++ -rm -f $@ +++ -$(INSTALL_DATA) $< $@ +++ -chmod a-x $@ +++ +++$(DESTDIR)$(man7dir)/%.7algol: doc/%.7algol installdirs +++ -rm -f $@ +++ -$(INSTALL_DATA) $< $@ +++ -chmod a-x $@ +++ +++algol68.install-info: $(DESTDIR)$(infodir)/ga68.info $(DESTDIR)$(infodir)/ga68-internals.info +++ +++algol68.install-html: $(build_htmldir)/ga68 $(build_htmldir)/ga68-internals +++ @$(NORMAL_INSTALL) +++ test -z "$(htmldir)" || $(mkinstalldirs) "$(DESTDIR)$(htmldir)" +++ @for p in $(build_htmldir)/ga68; do \ +++ if test -f "$$p" || test -d "$$p"; then d=""; else d="$(srcdir)/"; fi; \ +++ f=$(html__strip_dir) \ +++ if test -d "$$d$$p"; then \ +++ echo " $(mkinstalldirs) '$(DESTDIR)$(htmldir)/$$f'"; \ +++ $(mkinstalldirs) "$(DESTDIR)$(htmldir)/$$f" || exit 1; \ +++ echo " $(INSTALL_DATA) '$$d$$p'/* '$(DESTDIR)$(htmldir)/$$f'"; \ +++ $(INSTALL_DATA) "$$d$$p"/* "$(DESTDIR)$(htmldir)/$$f"; \ +++ else \ +++ echo " $(INSTALL_DATA) '$$d$$p' '$(DESTDIR)$(htmldir)/$$f'"; \ +++ $(INSTALL_DATA) "$$d$$p" "$(DESTDIR)$(htmldir)/$$f"; \ +++ fi; \ +++ done +++ +++algol68.uninstall: +++# +++# Clean hooks: +++# A lot of the ancillary files are deleted by the main makefile. +++# We just have to delete files specific to us. +++algol68.mostlyclean: +++ -rm -f algol68/*$(objext) algol68/xforward algol68/fflags +++ -rm -f algol68/*$(coverageexts) +++algol68.clean: algol68.mostlyclean +++algol68.distclean: +++ -rm -f algol68/Makefile algol68/Make-host algol68/Make-target +++ -rm -f algol68/config.status algol68/config.cache +++algol68.maintainer-clean: +++ -rm -f $(gcc_docdir)/*.7algol +++ +++# +++# Stage hooks: +++ +++algol68.stage1: stage1-start +++ -mv algol68/*$(objext) stage1/algol68 +++algol68.stage2: stage2-start +++ -mv algol68/*$(objext) stage2/algol68 +++algol68.stage3: stage3-start +++ -mv algol68/*$(objext) stage3/algol68 +++algol68.stage4: stage4-start +++ -mv algol68/*$(objext) stage4/algol68 +++algol68.stageprofile: stageprofile-start +++ -mv algol68/*$(objext) stageprofile/algol68 +++algol68.stagefeedback: stagefeedback-start +++ -mv algol68/*$(objext) stagefeedback/algol68 ++--- /dev/null +++++ b/src/gcc/algol68/README ++@@ -0,0 +1,130 @@ +++This is the GNU Algol 68 compiler. +++ +++This compiler implements the Algol 68 programming language +++(https://www.algol68-lang.org) as defined in the Revised Report, along +++with several GNU extensions to the language which are oriented to +++enhance its application in systems programming and to achieve a good +++integration in POSIX systems. +++ +++The parser component used in this front-end has been adapted from +++Algol 68 Genie, an Algol 68 interpreter written by Marcel van der +++Veer. It is worth noting that this parser is not your typical garden +++variety parser, as it is capable of effectively parsing the two-level +++grammar of Algol 68, which is no small task. Parsing Algol 68 is +++notoriously difficult, and without Marcel's careful work of many years +++this front-end would most probably not exist. It is also a beautiful +++implementation that is a delight to both read and work with. +++ +++The syntax tree built by the parser is lowered into a GENERIC tree by +++a lowering pass, which then invokes the gimplifier and hands the +++resulting gimple IR over to the rest of the compilation, down the +++rabbit hole all the way to optimized assembly code. +++ +++The compiler driver is called `ga68'. +++The compiler proper is called `a681'. +++ +++Programs built by this compiler make use of the libga68 run-time +++library. +++ +++Building +++======== +++ +++Configure and build GCC with: +++ +++ $ mkdir build-algol68 +++ $ cd build-algol68 +++ $ ../configure --enable-languages=algol68 +++ $ make +++ $ make install +++ +++Alternatively you can configure and build a non-bootstrapped compiler, +++which is much faster to build. But note that in this case you better +++pass some flags so the compiler gets built optimized, or the resulting +++compiler will be rather slow: +++ +++ $ mkdir build-algol68 +++ $ cd build-algol68 +++ $ ../configure --enable-languages=algol68 BOOT_CFLAGS="-O2 -g" \ +++ BOOT_CXXFLAGS="-O2 -g" \ +++ STAGE1_CFLAGS="-O2 -g" \ +++ STAGE1_CXXFLAGS="-O2 -g" +++ $ make +++ $ make install +++ +++Debugging +++========= +++ +++A few front-end specific options useful for debugging are: +++ +++ '-fa68-dump-ast' +++ Emits a textual representation of the parse tree as produced by the parser. +++ +++ '-fa68-dump-modes' +++ Emits a list of all parsed modes. +++ +++See the Developer Options section in the GNU Algol Compiler manual for +++more hacking related options. +++ +++Testing +++======= +++ +++Invoke the full testsuite from the build directory: +++ +++ $ make check-algol68 +++ +++You can pass -jN to run tests in parallel: +++ +++ $ make -jN check-algol68 +++ +++Invoke a subset of the testsuite. For example, to only run tests that +++involve compilation but not running: +++ +++ $ make check-algol68 RUNTESTFLAGS="compile.exp" +++ +++There are the following sets of tests: +++ +++ compile.exp - compilation tests +++ +++Invoke only a specific test: +++ +++ $ make check-algol68 RUNTESTFLAGS="--all compile.exp=bad-coercion-1.a68" +++ +++Test in both 32-bit and 64-bit in multilib arches: +++ +++ $ make check-algol68 RUNTESTFLAGS="--target_board=unix\{-m64,-m32\}" +++ +++Test that integration with the GCC GC is correct: +++ +++ $ make check-algol68 RUNTESTFLAGS="CFLAGS_FOR_TARGET='--param=ggc-min-expand=0 --param=ggc-min-heapsize=0'" +++ +++Logs (with corresponding commands) can be found in +++BUILD/gcc/testsuite/algol68/algol68.log. +++ +++See https://gcc.gnu.org/install/test.html for more details. +++ +++Useful Resources +++================ +++ +++- An Emacs mode for editing Algol 68 programs can be found at +++ https://git.sr.ht/~jemarch/a68-mode. It supports automatic +++ indentation, pretty-printing of bold tags, an auto-stropping minor +++ mode and other features. +++ +++- The Algol 68 Jargon File at https://jemarch.net/a68-jargon provides +++ a comprehensive list of definitions of many of the technical and +++ non-technical terms used in the context of Algol 68. +++ +++- The very formal Revised Report on the Algorithmic Language ALGOL 68 +++ can be found at [1]. +++ +++- The truly delightful Informal Introduction to ALGOL 68 by C.H +++ Lindsey and van der Meulen can be found at [2]. +++ +++Community +++========= +++ +++mailing list: algol68@gcc.gnu.org +++irc: irc.oftc.net - #gnualgol +++ +++[1] https://www.softwarepreservation.org/projects/ALGOL/report/Algol68_revised_report-AB-600dpi.pdf +++[2] https://inria.hal.science/hal-03027689/file/Lindsey_van_der_Meulen-IItA68-Revised.pdf ++--- /dev/null +++++ b/src/gcc/algol68/a68-diagnostics.cc ++@@ -0,0 +1,381 @@ +++/* Error and warning routines. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted and expanded for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "diagnostic.h" +++ +++#include "a68.h" +++ +++/* +++ * Error handling routines. +++ */ +++ +++#define TABULATE(n) (8 * (n / 8 + 1) - n) +++ +++/* Severities handled by the DIAGNOSTIC function defined below. */ +++ +++#define A68_ERROR 0 +++#define A68_WARNING 1 +++#define A68_FATAL 2 +++#define A68_SCAN_ERROR 3 +++#define A68_INFORM 4 +++ +++/* Give a diagnostic message. */ +++ +++#if __GNUC__ >= 10 +++#pragma GCC diagnostic ignored "-Wsuggest-attribute=format" +++#endif +++ +++static bool +++diagnostic (int sev, int opt, +++ NODE_T *p, +++ LINE_T *line, +++ char *pos, +++ const char *loc_str, va_list args) +++{ +++ int res = 0; +++ MOID_T *moid = NO_MOID; +++ const char *t = loc_str; +++ obstack b; +++ +++ /* +++ * Synthesize diagnostic message. +++ * +++ * Legend for special symbols: +++ * * as first character, copy rest of string literally +++ * @ AST node +++ * A AST node attribute +++ * B keyword +++ * C context +++ * L line number +++ * M moid - if error mode return without giving a message +++ * O moid - operand +++ * S quoted symbol, when possible with typographical display features +++ * X expected attribute +++ * Y string literal. +++ * Z quoted string. */ +++ +++ static va_list argp; /* Note this is empty. */ +++ gcc_obstack_init (&b); +++ +++ if (t[0] == '*') +++ obstack_grow (&b, t + 1, strlen (t + 1)); +++ else +++ while (t[0] != '\0') +++ { +++ if (t[0] == '@') +++ { +++ const char *nt = a68_attribute_name (ATTRIBUTE (p)); +++ if (t != NO_TEXT) +++ obstack_grow (&b, nt, strlen (nt)); +++ else +++ obstack_grow (&b, "construct", strlen ("construct")); +++ } +++ else if (t[0] == 'A') +++ { +++ enum a68_attribute att = (enum a68_attribute) va_arg (args, int); +++ const char *nt = a68_attribute_name (att); +++ if (nt != NO_TEXT) +++ obstack_grow (&b, nt, strlen (nt)); +++ else +++ obstack_grow (&b, "construct", strlen ("construct")); +++ } +++ else if (t[0] == 'B') +++ { +++ enum a68_attribute att = (enum a68_attribute) va_arg (args, int); +++ KEYWORD_T *nt = a68_find_keyword_from_attribute (A68 (top_keyword), att); +++ if (nt != NO_KEYWORD) +++ { +++ const char *strop_keyword = a68_strop_keyword (TEXT (nt)); +++ +++ obstack_grow (&b, "%<", 2); +++ obstack_grow (&b, strop_keyword, strlen (strop_keyword)); +++ obstack_grow (&b, "%>", 2); +++ } +++ else +++ obstack_grow (&b, "keyword", strlen ("keyword")); +++ } +++ else if (t[0] == 'C') +++ { +++ int att = va_arg (args, int); +++ const char *sort = NULL; +++ +++ switch (att) +++ { +++ case NO_SORT: sort = "this"; break; +++ case SOFT: sort = "a soft"; break; +++ case WEAK: sort = "a weak"; break; +++ case MEEK: sort = "a meek"; break; +++ case FIRM: sort = "a meek"; break; +++ case STRONG: sort = "a strong"; break; +++ default: +++ gcc_unreachable (); +++ } +++ +++ obstack_grow (&b, sort, strlen (sort)); +++ } +++ else if (t[0] == 'L') +++ { +++ LINE_T *a = va_arg (args, LINE_T *); +++ gcc_assert (a != NO_LINE); +++ if (NUMBER (a) == 0) +++ obstack_grow (&b, "in standard environment", +++ strlen ("in standard environment")); +++ else if (p != NO_NODE && NUMBER (a) == LINE_NUMBER (p)) +++ obstack_grow (&b, "in this line", strlen ("in this line")); +++ else +++ { +++ char d[10]; +++ if (snprintf (d, 10, "in line %d", NUMBER (a)) < 0) +++ gcc_unreachable (); +++ obstack_grow (&b, d, strlen (d)); +++ } +++ } +++ else if (t[0] == 'M') +++ { +++ const char *moidstr = NULL; +++ +++ moid = va_arg (args, MOID_T *); +++ if (moid == NO_MOID || moid == M_ERROR) +++ moid = M_UNDEFINED; +++ +++ if (IS (moid, SERIES_MODE)) +++ { +++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) +++ moidstr = a68_moid_to_string (MOID (PACK (moid)), +++ MOID_ERROR_WIDTH, p); +++ else +++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); +++ } +++ else +++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); +++ +++ obstack_grow (&b, "%<", 2); +++ obstack_grow (&b, moidstr, strlen (moidstr)); +++ obstack_grow (&b, "%>", 2); +++ } +++ else if (t[0] == 'O') +++ { +++ moid = va_arg (args, MOID_T *); +++ if (moid == NO_MOID || moid == M_ERROR) +++ moid = M_UNDEFINED; +++ if (moid == M_VOID) +++ obstack_grow (&b, "UNION (VOID, ..)", strlen ("UNION (VOID, ..)")); +++ else if (IS (moid, SERIES_MODE)) +++ { +++ const char *moidstr = NULL; +++ +++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) +++ moidstr = a68_moid_to_string (MOID (PACK (moid)), MOID_ERROR_WIDTH, p); +++ else +++ moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); +++ obstack_grow (&b, moidstr, strlen (moidstr)); +++ } +++ else +++ { +++ const char *moidstr = a68_moid_to_string (moid, MOID_ERROR_WIDTH, p); +++ obstack_grow (&b, moidstr, strlen (moidstr)); +++ } +++ } +++ else if (t[0] == 'S') +++ { +++ if (p != NO_NODE && NSYMBOL (p) != NO_TEXT) +++ { +++ const char *txt = NSYMBOL (p); +++ char *sym = NCHAR_IN_LINE (p); +++ int n = 0, size = (int) strlen (txt); +++ +++ obstack_grow (&b, "%<", 2); +++ if (txt[0] != sym[0] || (int) strlen (sym) < size) +++ obstack_grow (&b, txt, strlen (txt)); +++ else +++ { +++ while (n < size) +++ { +++ if (ISPRINT (sym[0])) +++ obstack_1grow (&b, sym[0]); +++ if (TOLOWER (txt[0]) == TOLOWER (sym[0])) +++ { +++ txt++; +++ n++; +++ } +++ sym++; +++ } +++ } +++ obstack_grow (&b, "%>", 2); +++ } +++ else +++ obstack_grow (&b, "symbol", strlen ("symbol")); +++ } +++ else if (t[0] == 'X') +++ { +++ enum a68_attribute att = (enum a68_attribute) (va_arg (args, int)); +++ const char *att_name = a68_attribute_name (att); +++ obstack_grow (&b, att_name, strlen (att_name)); +++ } +++ else if (t[0] == 'Y') +++ { +++ char *loc_string = va_arg (args, char *); +++ obstack_grow (&b, loc_string, strlen (loc_string)); +++ } +++ else if (t[0] == 'Z') +++ { +++ char *str = va_arg (args, char *); +++ obstack_grow (&b, "%<", 2); +++ obstack_grow (&b, str, strlen (str)); +++ obstack_grow (&b, "%>", 2); +++ } +++ else +++ obstack_1grow (&b, t[0]); +++ +++ t++; +++ } +++ +++ obstack_1grow (&b, '\0'); +++ char *format = (char *) obstack_finish (&b); +++ +++ /* Construct a diagnostic message. */ +++ if (sev == A68_WARNING) +++ WARNING_COUNT (&A68_JOB)++; +++ else if (sev != A68_INFORM) +++ ERROR_COUNT (&A68_JOB)++; +++ +++ /* Emit the corresponding GCC diagnostic at the proper location. */ +++ location_t loc = UNKNOWN_LOCATION; +++ +++ if (p != NO_NODE) +++ loc = a68_get_node_location (p); +++ else if (line != NO_LINE) +++ { +++ if (pos == NO_TEXT) +++ pos = STRING (line); +++ loc = a68_get_line_location (line, pos); +++ } +++ +++ /* Prepare rich location and diagnostics. */ +++ rich_location rich_loc (line_table, loc); +++ diagnostic_info diagnostic; +++ diagnostic_t kind; +++ +++ switch (sev) +++ { +++ case A68_FATAL: +++ kind = DK_FATAL; +++ break; +++ case A68_INFORM: +++ kind = DK_NOTE; +++ break; +++ case A68_WARNING: +++ kind = DK_WARNING; +++ break; +++ case A68_SCAN_ERROR: +++ case A68_ERROR: +++ kind = DK_ERROR; +++ break; +++ default: +++ gcc_unreachable (); +++ } +++ +++ diagnostic_set_info (&diagnostic, format, +++ &argp, +++ &rich_loc, kind); +++ if (opt != 0) +++ diagnostic.option_id = opt; +++ res = diagnostic_report_diagnostic (global_dc, &diagnostic); +++ +++ if (sev == A68_SCAN_ERROR) +++ exit (FATAL_EXIT_CODE); +++ return res; +++} +++ +++/* Give an intelligible error and exit. A line is provided rather than a +++ node so this can be used at scanning time. */ +++ +++void +++a68_scan_error (LINE_T * u, char *v, const char *txt, ...) +++{ +++ va_list args; +++ +++ va_start (args, txt); +++ diagnostic (A68_SCAN_ERROR, 0, NO_NODE, u, v, txt, args); +++ va_end (args); +++} +++ +++/* Report a compilation error. */ +++ +++void +++a68_error (NODE_T *p, const char *loc_str, ...) +++{ +++ va_list args; +++ +++ va_start (args, loc_str); +++ diagnostic (A68_ERROR, 0, p, NO_LINE, NO_TEXT, loc_str, args); +++ va_end (args); +++} +++ +++/* Report a compilation error in a node's pragmat. */ +++ +++void +++a68_error_in_pragmat (NODE_T *p, size_t off, +++ const char *loc_str, ...) +++{ +++ va_list args; +++ +++ LINE_T *line = NPRAGMAT_LINE (p); +++ char *pos = NPRAGMAT_CHAR_IN_LINE (p) + off; +++ +++ va_start (args, loc_str); +++ diagnostic (A68_ERROR, 0, NO_NODE, line, pos, loc_str, args); +++ va_end (args); +++ a68_inform (p, "pragmat applies to this construct"); +++} +++ +++/* Report a compilation warning. +++ This function returns a boolean indicating whether a warning was +++ emitted. */ +++ +++bool +++a68_warning (NODE_T *p, int opt, +++ const char *loc_str, ...) +++{ +++ bool res; +++ va_list args; +++ +++ va_start (args, loc_str); +++ res = diagnostic (A68_WARNING, opt, p, NO_LINE, NO_TEXT, loc_str, args); +++ va_end (args); +++ return res; +++} +++ +++/* Report a compilation note. */ +++ +++void +++a68_inform (NODE_T *p, const char *loc_str, ...) +++{ +++ va_list args; +++ +++ va_start (args, loc_str); +++ diagnostic (A68_INFORM, 0, p, NO_LINE, NO_TEXT, loc_str, args); +++ va_end (args); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-exports.cc ++@@ -0,0 +1,598 @@ +++/* Exporting Algol 68 module interfaces. +++ Copyright (C) 2025 Jose E. Marchesi. +++ Copyright (C) 2010-2025 Free Software Foundation, Inc. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "tree.h" +++#include "target.h" +++#include "tm_p.h" +++#include "simple-object.h" +++#include "varasm.h" +++#include "intl.h" +++#include "output.h" /* for assemble_string */ +++#include "common/common-target.h" +++#include "dwarf2asm.h" +++ +++#include +++ +++#include "a68.h" +++ +++#ifndef TARGET_AIX_OS +++#define TARGET_AIX_OS 0 +++#endif +++ +++/* The size of the target's pointer type. */ +++#ifndef PTR_SIZE +++#define PTR_SIZE (POINTER_SIZE / BITS_PER_UNIT) +++#endif +++ +++/* Create a new module interface, initially with no modes and no +++ extracts. MODULE_NAME is the name of the module as it is accessed at the +++ source level, which corresponds to a bold word. */ +++ +++MOIF_T * +++a68_moif_new (const char *module_name) +++{ +++ MOIF_T *moif = ggc_cleared_alloc (); +++ +++ VERSION (moif) = GA68_EXPORTS_VERSION; +++ NAME (moif) = (module_name == NULL ? NULL : ggc_strdup (module_name)); +++ PRELUDE (moif) = NULL; +++ POSTLUDE (moif) = NULL; +++ vec_alloc (MODES (moif), 16); +++ vec_alloc (MODULES (moif), 16); +++ vec_alloc (IDENTIFIERS (moif), 16); +++ vec_alloc (INDICANTS (moif), 16); +++ vec_alloc (PRIOS (moif), 16); +++ vec_alloc (OPERATORS (moif), 16); +++ return moif; +++} +++ +++/* Add a new mode to a module interface. */ +++ +++static void +++a68_add_moid_to_moif (MOIF_T *moif, MOID_T *m) +++{ +++ if (! MODES(moif)->contains (m)) +++ vec_safe_push (MODES (moif), m); +++} +++ +++/* Add a new identifier extract to a module interface. */ +++ +++void +++a68_add_identifier_to_moif (MOIF_T *moif, TAG_T *tag) +++{ +++ EXTRACT_T *e = ggc_alloc (); +++ const char *tag_symbol = IDENTIFIER_POINTER (DECL_NAME (TAX_TREE_DECL (tag))); +++ +++ EXTRACT_KIND (e) = GA68_EXTRACT_IDEN; +++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); +++ EXTRACT_MODE (e) = MOID (tag); +++ EXTRACT_PRIO (e) = 0; +++ EXTRACT_VARIABLE (e) = VARIABLE (tag); +++ EXTRACT_IN_PROC (e) = IN_PROC (tag); +++ +++ if (! IDENTIFIERS (moif)->contains (e)) +++ { +++ a68_add_moid_to_moif (moif, MOID (tag)); +++ vec_safe_push (IDENTIFIERS (moif), e); +++ } +++} +++ +++/* Add a new mode indicant extract to a module interface. */ +++ +++static void +++a68_add_indicant_to_moif (MOIF_T *moif, TAG_T *tag) +++{ +++ EXTRACT_T *e = ggc_alloc (); +++ /* Mode tags are not associated with declarations, so we have to do the +++ mangling here. */ +++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); +++ const char *tag_symbol = IDENTIFIER_POINTER (id); +++ +++ EXTRACT_KIND (e) = GA68_EXTRACT_MODE; +++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); +++ EXTRACT_MODE (e) = MOID (tag); +++ EXTRACT_PRIO (e) = 0; +++ EXTRACT_VARIABLE (e) = false; +++ EXTRACT_IN_PROC (e) = false; +++ +++ if (! INDICANTS (moif)->contains (e)) +++ { +++ a68_add_moid_to_moif (moif, MOID (tag)); +++ vec_safe_push (INDICANTS (moif), e); +++ } +++} +++ +++/* Add a new module extract to a module interface. */ +++ +++static void +++a68_add_module_to_moif (MOIF_T *moif, TAG_T *tag) +++{ +++ EXTRACT_T *e = ggc_alloc (); +++ /* Module tags are not associated with declarations, so we have to do the +++ mangling here. */ +++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); +++ const char *tag_symbol = IDENTIFIER_POINTER (id); +++ +++ EXTRACT_KIND (e) = GA68_EXTRACT_MODU; +++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); +++ EXTRACT_MODE (e) = NO_MOID; +++ EXTRACT_PRIO (e) = 0; +++ EXTRACT_VARIABLE (e) = false; +++ EXTRACT_IN_PROC (e) = false; +++ +++ if (! MODULES (moif)->contains (e)) +++ vec_safe_push (MODULES (moif), e); +++} +++ +++/* Add a new priority extract to a module interface. */ +++ +++static void +++a68_add_prio_to_moif (MOIF_T *moif, TAG_T *tag) +++{ +++ EXTRACT_T *e = ggc_alloc (); +++ /* Priority tags are not associated with declarations, so we have to do the +++ mangling here. */ +++ tree id = a68_get_mangled_indicant (NSYMBOL (NODE (tag)), NAME (moif)); +++ const char *tag_symbol = IDENTIFIER_POINTER (id); +++ +++ EXTRACT_KIND (e) = GA68_EXTRACT_PRIO; +++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); +++ EXTRACT_MODE (e) = NO_MOID; +++ EXTRACT_PRIO (e) = PRIO (tag); +++ EXTRACT_VARIABLE (e) = false; +++ EXTRACT_IN_PROC (e) = false; +++ +++ if (! PRIOS (moif)->contains (e)) +++ vec_safe_push (PRIOS (moif), e); +++} +++ +++/* Add a new operator extract to a module interface. */ +++ +++static void +++a68_add_operator_to_moif (MOIF_T *moif, TAG_T *tag) +++{ +++ EXTRACT_T *e = ggc_alloc (); +++ const char *tag_symbol = IDENTIFIER_POINTER (DECL_NAME (TAX_TREE_DECL (tag))); +++ +++ EXTRACT_KIND (e) = GA68_EXTRACT_OPER; +++ EXTRACT_SYMBOL (e) = ggc_strdup (tag_symbol); +++ EXTRACT_MODE (e) = MOID (tag); +++ EXTRACT_PRIO (e) = 0; +++ EXTRACT_VARIABLE (e) = EXTRACT_VARIABLE (tag); +++ /* There are no operatorvariable-declarations */ +++ gcc_assert (EXTRACT_VARIABLE (e) == false); +++ EXTRACT_IN_PROC (e) = IN_PROC (tag); +++ +++ if (! OPERATORS (moif)->contains (e)) +++ { +++ a68_add_moid_to_moif (moif, MOID (tag)); +++ vec_safe_push (OPERATORS (moif), e); +++ } +++} +++ +++/* Make the exports section the asm_out_file's new current section. */ +++ +++static void +++a68_switch_to_export_section (void) +++{ +++ static section *exports_sec; +++ +++ if (exports_sec == NULL) +++ { +++ gcc_assert (targetm_common.have_named_sections); +++#ifdef OBJECT_FORMAT_MACHO +++ exports_sec +++ = get_section (A68_EXPORT_SEGMENT_NAME "," A68_EXPORT_SECTION_NAME, +++ SECTION_DEBUG, NULL); +++#else +++ exports_sec = get_section (A68_EXPORT_SECTION_NAME, +++ TARGET_AIX_OS ? SECTION_EXCLUDE : SECTION_DEBUG, +++ NULL); +++#endif +++ } +++ +++ switch_to_section (exports_sec); +++} +++ +++/* Output a sized string. */ +++ +++static void +++a68_asm_output_string (const char *s, const char *comment) +++{ +++ dw2_asm_output_data (2, strlen (s) + 1, comment); +++ assemble_string (s, strlen (s) + 1); +++} +++ +++/* Output a mode to the exports section if it hasn't been emitted already. */ +++ +++static void +++a68_asm_output_mode (MOID_T *m, const char *module_label) +++{ +++ /* Do nothing if the mode has been already emitted and therefore there is +++ already a label to access it. */ +++ if (ASM_LABEL (m) != NULL) +++ return; +++ +++ /* Mode indicants are not emitted in the mode table, but as mode extracts in +++ the extracts table. Still we have to emit the named mode. */ +++ if (IS (m, INDICANT)) +++ m = MOID (NODE (m)); +++ +++ /* Collection of modes. */ +++ if (IS (m, SERIES_MODE) || IS (m, STOWED_MODE)) +++ { +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ a68_asm_output_mode (MOID (p), module_label); +++ return; +++ } +++ +++ /* Ok we got a mode to output. */ +++ +++ /* First emit referred modes and sub-modes. Note how we have to create a +++ label for the mode and install it in the NODE_T in order to avoid infinite +++ recursion in case of ref-induced recursive mode definitions. */ +++ +++ static long int cnt; +++ static char label[100]; +++ ASM_GENERATE_INTERNAL_LABEL (label, "LM", cnt++); +++ ASM_LABEL (m) = ggc_strdup (label); +++ +++ if (IS_REF(m) || IS_FLEX (m)) +++ a68_asm_output_mode (SUB (m), module_label); +++ else if (m != M_STRING && IS_FLEXETY_ROW (m)) +++ a68_asm_output_mode (SUB (m), module_label); +++ else if (!IS_COMPLEX (m) && (IS_STRUCT (m) || IS_UNION (m))) +++ { +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ a68_asm_output_mode (MOID (p), module_label); +++ } +++ else if (IS (m, PROC_SYMBOL)) +++ { +++ a68_asm_output_mode (SUB (m), module_label); +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ a68_asm_output_mode (MOID (p), module_label); +++ } +++ +++ /* No recursion below this point pls. */ +++ +++ /* Emit a label for this mode. */ +++ ASM_OUTPUT_LABEL (asm_out_file, ASM_LABEL (m)); +++ +++ /* Now emit assembly for the mode entry. */ +++ if (m == M_VOID) +++ dw2_asm_output_data (1, GA68_MODE_VOID, "void"); +++ else if (m == M_CHAR) +++ dw2_asm_output_data (1, GA68_MODE_CHAR, "char"); +++ else if (m == M_BOOL) +++ dw2_asm_output_data (1, GA68_MODE_BOOL, "bool"); +++ else if (m == M_STRING) +++ dw2_asm_output_data (1, GA68_MODE_STRING, "string"); +++ else if (IS_INTEGRAL (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_INT, "int"); +++ dw2_asm_output_data (1, DIM (m), "sizety"); +++ } +++ else if (IS_REAL (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_REAL, "real"); +++ dw2_asm_output_data (1, DIM (m), "sizety"); +++ } +++ else if (IS_BITS (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_BITS, "bits"); +++ dw2_asm_output_data (1, DIM (m), "sizety"); +++ } +++ else if (IS_BYTES (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_BYTES, "bytes"); +++ dw2_asm_output_data (1, DIM (m), "sizety"); +++ } +++ else if (IS_COMPLEX (m)) +++ { +++ /* Complex is a struct of two reals of the right sizety. */ +++ int dim = DIM (MOID (PACK (m))); +++ dw2_asm_output_data (1, GA68_MODE_CMPL, "compl"); +++ dw2_asm_output_data (1, dim, "sizety"); +++ } +++ else if (IS_REF (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_NAME, "ref"); +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "referred mode"); +++ } +++ else if (IS_FLEX (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_FLEX, "flex"); +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "flexible row mode"); +++ } +++ else if (IS_ROW (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_ROW, "row"); +++ dw2_asm_output_data (1, DIM (m), "dim"); +++ /* XXX for now emit zeroes as triplets. */ +++ for (int i = 0; i < DIM (m); ++i) +++ { +++ dw2_asm_output_data (PTR_SIZE, 0, "lb"); +++ dw2_asm_output_data (PTR_SIZE, 0, "ub"); +++ } +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "row of"); +++ } +++ else if (IS_STRUCT (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_STRUCT, "struct"); +++ dw2_asm_output_data (2, DIM (m), "nfields"); +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ { +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "field mode"); +++ if (TEXT (p) != NO_TEXT) +++ a68_asm_output_string (TEXT (p), "field name"); +++ else +++ a68_asm_output_string ("", "field name"); +++ } +++ } +++ else if (IS_UNION (m)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_UNION, "union"); +++ dw2_asm_output_data (2, DIM (m), "nmodes"); +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "united mode"); +++ } +++ else if (IS (m, PROC_SYMBOL)) +++ { +++ dw2_asm_output_data (1, GA68_MODE_PROC, "proc"); +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (SUB (m)), module_label, "ret mode"); +++ dw2_asm_output_data (1, DIM (m), "nargs"); +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ { +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (MOID (p)), module_label, "arg mode"); +++ if (TEXT (p) != NO_TEXT) +++ a68_asm_output_string (TEXT (p), "arg name"); +++ else +++ a68_asm_output_string ("", "arg name"); +++ } +++ } +++ else +++ dw2_asm_output_data (1, GA68_MODE_UNKNOWN, "unknown mode %s", +++ a68_moid_to_string (m, 80, NO_NODE, false)); +++} +++ +++/* Output an extract for a given tag to the extracts section. */ +++ +++static void +++a68_asm_output_extract (const char *module_label, int kind, +++ const char *symbol, MOID_T *mode, int prio, +++ bool variable, bool in_proc) +++{ +++ static char begin_label[100]; +++ static char end_label[100]; +++ static long int cnt; +++ +++ ASM_GENERATE_INTERNAL_LABEL (begin_label, "LEBL", cnt); +++ ASM_GENERATE_INTERNAL_LABEL (end_label, "LEEL", cnt); +++ cnt++; +++ +++ dw2_asm_output_delta (PTR_SIZE, end_label, begin_label, "extract size"); +++ ASM_OUTPUT_LABEL (asm_out_file, begin_label); +++ +++ bool encode_mdextra = false; +++ switch (kind) +++ { +++ case GA68_EXTRACT_MODU: +++ dw2_asm_output_data (1, GA68_EXTRACT_MODU, "module extract %s", symbol); +++ a68_asm_output_string (symbol, "module indication"); +++ break; +++ case GA68_EXTRACT_MODE: +++ dw2_asm_output_data (1, GA68_EXTRACT_MODE, "mode extract %s", symbol); +++ a68_asm_output_string (symbol, "mode indication"); +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); +++ break; +++ case GA68_EXTRACT_IDEN: +++ dw2_asm_output_data (1, GA68_EXTRACT_IDEN, "identifier extract %s", symbol); +++ a68_asm_output_string (symbol, "name"); +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); +++ encode_mdextra = true; +++ break; +++ case GA68_EXTRACT_PRIO: +++ dw2_asm_output_data (1, GA68_EXTRACT_PRIO, "prio extract %s", symbol); +++ a68_asm_output_string (symbol, "opname"); +++ dw2_asm_output_data (1, prio, "priority"); +++ break; +++ case GA68_EXTRACT_OPER: +++ dw2_asm_output_data (1, GA68_EXTRACT_OPER, "operator extract %s", symbol); +++ a68_asm_output_string (symbol, "opname"); +++ dw2_asm_output_delta (PTR_SIZE, ASM_LABEL (mode), module_label, "mode"); +++ encode_mdextra = true; +++ break; +++ default: +++ gcc_unreachable (); +++ } +++ +++ if (encode_mdextra) +++ { +++ dw2_asm_output_data (PTR_SIZE, 2, "mdextra size"); +++ dw2_asm_output_data (1, variable, "variable"); +++ dw2_asm_output_data (1, in_proc, "in_proc"); +++ } +++ else +++ dw2_asm_output_data (PTR_SIZE, 0, "mdextra size"); +++ +++ ASM_OUTPUT_LABEL (asm_out_file, end_label); +++} +++ +++/* Output a module interface. */ +++ +++static void +++a68_asm_output_moif (MOIF_T *moif) +++{ +++ a68_switch_to_export_section (); +++ +++ static char module_label[100]; +++ static long int moifcnt; +++ ASM_GENERATE_INTERNAL_LABEL (module_label, "LMOIF", moifcnt++); +++ ASM_OUTPUT_LABEL (asm_out_file, module_label); +++ +++ if (flag_debug_asm) +++ { +++ fputs (ASM_COMMENT_START " MODIF START ", asm_out_file); +++ fputs (NAME (moif), asm_out_file); +++ fputc ('\n', asm_out_file); +++ } +++ +++ dw2_asm_output_data (1, A68_EXPORT_MAGIC1, "magic1"); +++ dw2_asm_output_data (1, A68_EXPORT_MAGIC2, "magic2"); +++ dw2_asm_output_data (2, VERSION (moif), "exports version"); +++ a68_asm_output_string (NAME (moif), "module name"); +++ a68_asm_output_string (PRELUDE (moif) ? PRELUDE (moif) : "", "prelude symbol"); +++ a68_asm_output_string (POSTLUDE (moif) ? POSTLUDE (moif) : "", "postlude symbol"); +++ +++ /* Modes table. */ +++ static char modes_begin_label[100]; +++ static char modes_end_label[100]; +++ static long int modescnt; +++ ASM_GENERATE_INTERNAL_LABEL (modes_begin_label, "LMTL", modescnt++); +++ ASM_GENERATE_INTERNAL_LABEL (modes_end_label, "LMTL", modescnt++); +++ +++ if (flag_debug_asm) +++ fputs ("\t" ASM_COMMENT_START " modes table\n", asm_out_file); +++ dw2_asm_output_delta (PTR_SIZE, modes_end_label, modes_begin_label, +++ "modes size"); +++ ASM_OUTPUT_LABEL (asm_out_file, modes_begin_label); +++ for (MOID_T *m : MODES (moif)) +++ a68_asm_output_mode (m, module_label); +++ ASM_OUTPUT_LABEL (asm_out_file, modes_end_label); +++ +++ /* Extracts table. */ +++ static char extracts_begin_label[100]; +++ static char extracts_end_label[100]; +++ static long int extractscnt; +++ ASM_GENERATE_INTERNAL_LABEL (extracts_begin_label, "LETL", extractscnt++); +++ ASM_GENERATE_INTERNAL_LABEL (extracts_end_label, "LETL", extractscnt++); +++ +++ if (flag_debug_asm) +++ fputs ("\t" ASM_COMMENT_START " extracts table\n", asm_out_file); +++ dw2_asm_output_delta (PTR_SIZE, extracts_end_label, extracts_begin_label, +++ "extracts size"); +++ ASM_OUTPUT_LABEL (asm_out_file, extracts_begin_label); +++ for (EXTRACT_T *e : MODULES (moif)) +++ a68_asm_output_extract (module_label, GA68_EXTRACT_MODU, +++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), +++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); +++ for (EXTRACT_T *e : INDICANTS (moif)) +++ a68_asm_output_extract (module_label, GA68_EXTRACT_MODE, +++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), +++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); +++ for (EXTRACT_T *e : IDENTIFIERS (moif)) +++ a68_asm_output_extract (module_label, GA68_EXTRACT_IDEN, +++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), +++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); +++ for (EXTRACT_T *e : PRIOS (moif)) +++ a68_asm_output_extract (module_label, GA68_EXTRACT_PRIO, +++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), +++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); +++ for (EXTRACT_T *e : OPERATORS (moif)) +++ a68_asm_output_extract (module_label, GA68_EXTRACT_OPER, +++ EXTRACT_SYMBOL (e), EXTRACT_MODE (e), EXTRACT_PRIO (e), +++ EXTRACT_VARIABLE (e), EXTRACT_IN_PROC (e)); +++ ASM_OUTPUT_LABEL (asm_out_file, extracts_end_label); +++ +++ if (flag_debug_asm) +++ { +++ fputs (ASM_COMMENT_START " MODIF END ", asm_out_file); +++ fputs (NAME (moif), asm_out_file); +++ fputc ('\n', asm_out_file); +++ } +++} +++ +++/* Emit export information for the module definition in the parse tree P. */ +++ +++void +++a68_do_exports (NODE_T *p) +++{ +++ for (;p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, DEFINING_MODULE_INDICANT)) +++ { +++ // XXX only do this if the defining module is to be +++ // exported. Accessed modules without PUB are not exported. */ +++ TAG_T *tag = a68_find_tag_global (TABLE (p), MODULE_SYMBOL, NSYMBOL (p)); +++ gcc_assert (tag != NO_TAG); +++ +++ if (EXPORTED (tag)) +++ { +++ tree module_id = a68_get_mangled_indicant (NSYMBOL (p)); +++ MOIF_T *moif = a68_moif_new (IDENTIFIER_POINTER (module_id)); +++ char *prelude = xasprintf ("%s__prelude", IDENTIFIER_POINTER (module_id)); +++ char *postlude = xasprintf ("%s__postlude", IDENTIFIER_POINTER (module_id)); +++ PRELUDE (moif) = ggc_strdup (prelude); +++ POSTLUDE (moif) = ggc_strdup (postlude); +++ free (prelude); +++ free (postlude); +++ +++ NODE_T *module_text = NEXT (NEXT (p)); +++ gcc_assert (IS (module_text, MODULE_TEXT)); +++ NODE_T *def_part = (IS (SUB (module_text), REVELATION_PART) +++ ? NEXT_SUB (module_text) +++ : SUB (module_text)); +++ gcc_assert (IS (def_part, DEF_PART)); +++ TABLE_T *table = TABLE (SUB (def_part)); +++ gcc_assert (PUBLIC_RANGE (table)); +++ +++ for (TAG_T *t = MODULES (table); t != NO_TAG; FORWARD (t)) +++ { +++ if (PUBLICIZED (t)) +++ a68_add_module_to_moif (moif, t); +++ } +++ +++ for (TAG_T *t = INDICANTS (table); t != NO_TAG; FORWARD (t)) +++ { +++ if (PUBLICIZED (t)) +++ a68_add_indicant_to_moif (moif, t); +++ } +++ +++ for (TAG_T *t = IDENTIFIERS (table); t != NO_TAG; FORWARD (t)) +++ { +++ if (PUBLICIZED (t)) +++ a68_add_identifier_to_moif (moif, t); +++ } +++ +++ for (TAG_T *t = PRIO (table); t != NO_TAG; FORWARD (t)) +++ { +++ if (PUBLICIZED (t)) +++ a68_add_prio_to_moif (moif, t); +++ } +++ +++ for (TAG_T *t = OPERATORS (table); t != NO_TAG; FORWARD (t)) +++ { +++ if (PUBLICIZED (t)) +++ a68_add_operator_to_moif (moif, t); +++ } +++ +++ a68_asm_output_moif (moif); +++ if (flag_a68_dump_moif) +++ a68_dump_moif (moif); +++ } +++ } +++ else +++ a68_do_exports (SUB (p)); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-imports.cc ++@@ -0,0 +1,1263 @@ +++/* Importing Algol 68 module interfaces. +++ Copyright (C) 2025 Jose E. Marchesi. +++ Copyright (C) 2010-2025 Free Software Foundation, Inc. +++ +++ Written by Jose E. Marchesi. +++ +++ The following utility functions have been adapted from the Go front-end: +++ +++ a68_open_packet +++ a68_try_packet_in_directory +++ a68_try_suffixes +++ a68_find_export_data +++ a68_find_object_export_data +++ a68_read_export_data +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "tree.h" +++#include "target.h" +++#include "tm_p.h" +++#include "simple-object.h" +++#include "varasm.h" +++#include "intl.h" +++#include "common/common-target.h" +++#include "dwarf2asm.h" +++ +++#include +++ +++#include "a68.h" +++ +++/* Read exports from an object file. +++ +++ FD is a file descriptor open for reading. +++ +++ OFFSET is the offset within the file where the object file starts; this will +++ be 0 except when reading an archive. +++ +++ On success this returns NULL and sets *PBUF to a buffer allocated using +++ malloc, of size *PLEN, holding the export data. +++ +++ If the data is not found this returns NULL and sets *PBUF to NULL and *PLEN +++ to 0. +++ +++ If some error occurs, this returns an error message and sets *PERR to an +++ errno value or 0 if there is no relevant errno. */ +++ +++static const char * +++a68_read_export_data (int fd, uint64_t offset, char **pbuf, size_t *plen, +++ int *perr) +++{ +++ simple_object_read *sobj; +++ const char *errmsg; +++ off_t sec_offset; +++ off_t sec_length; +++ int found; +++ char *buf; +++ ssize_t c; +++ +++ *pbuf = NULL; +++ *plen = 0; +++ +++ sobj = simple_object_start_read (fd, offset, A68_EXPORT_SEGMENT_NAME, +++ &errmsg, perr); +++ if (sobj == NULL) +++ { +++ /* If we get an error here, just pretend that we didn't find any +++ export data. This is the right thing to do if the error is +++ that the file was not recognized as an object file. This +++ will ignore file I/O errors, but it's not too big a deal +++ because we will wind up giving some other error later. */ +++ return NULL; +++ } +++ +++ found = simple_object_find_section (sobj, A68_EXPORT_SECTION_NAME, +++ &sec_offset, &sec_length, +++ &errmsg, perr); +++ simple_object_release_read (sobj); +++ if (!found) +++ return errmsg; +++ +++ if (lseek (fd, offset + sec_offset, SEEK_SET) < 0) +++ { +++ *perr = errno; +++ return _("lseek failed while reading export data"); +++ } +++ +++ buf = XNEWVEC (char, sec_length); +++ if (buf == NULL) +++ { +++ *perr = errno; +++ return _("memory allocation failed while reading export data"); +++ } +++ +++ c = read (fd, buf, sec_length); +++ if (c < 0) +++ { +++ *perr = errno; +++ free (buf); +++ return _("read failed while reading export data"); +++ } +++ +++ if (c < sec_length) +++ { +++ free (buf); +++ return _("short read while reading export data"); +++ } +++ +++ *pbuf = buf; +++ *plen = sec_length; +++ return NULL; +++} +++ +++/* Look for export data in an object file. */ +++ +++static char * +++a68_find_object_export_data (const std::string& filename, +++ int fd, uint64_t offset, size_t *psize) +++{ +++ char *buf; +++ size_t len; +++ int err; +++ +++ const char *errmsg = a68_read_export_data (fd, offset, &buf, &len, &err); +++ if (errmsg != NULL) +++ { +++ if (err == 0) +++ a68_error (NO_NODE, "Z: Z", filename.c_str (), errmsg); +++ else +++ a68_error (NO_NODE, "Z: Z: Z", filename.c_str(), errmsg, +++ xstrerror(err)); +++ return NULL; +++ } +++ +++ *psize = len; +++ return buf; +++} +++ +++/* Look for export data in the file descriptor FD. */ +++ +++static char * +++a68_find_export_data (const std::string &filename, int fd, size_t *psize) +++{ +++ /* See if we can read this as an object file. */ +++ char *exports = a68_find_object_export_data (filename, fd, 0, psize); +++ if (exports != NULL) +++ return exports; +++ +++ if (lseek (fd, 0, SEEK_SET) < 0) +++ { +++ a68_error (NO_NODE, "lseek Z failed", filename.c_str ()); +++ return NULL; +++ } +++ +++ char buf[A68_EXPORT_MAGIC_LEN]; +++ ssize_t c = ::read(fd, buf, A68_EXPORT_MAGIC_LEN); +++ if (c < A68_EXPORT_MAGIC_LEN) +++ return NULL; +++ +++ /* Check for a file containing nothing but Algol 68 export data. */ +++ if (buf[0] == '\x0a' && buf[1] == '\xad') +++ { +++ /* XXX read whole file. */ +++ return exports; +++ } +++ +++#if 0 +++ /* See if we can read this as an archive. */ +++ if (Import::is_archive_magic(buf)) +++ return Import::find_archive_export_data(filename, fd, location); +++#endif +++ +++ return NULL; +++ +++} +++ +++/* Given *PFILENAME, where *PFILENAME does not exist, try various suffixes. If +++ we find one, set *FILENAME to the one we found. Return the open file +++ descriptor. */ +++ +++static int +++a68_try_suffixes (std::string *pfilename) +++{ +++ std::string filename = *pfilename + ".m68"; +++ int fd = open (filename.c_str(), O_RDONLY | O_BINARY); +++ if (fd >= 0) +++ { +++ *pfilename = filename; +++ return fd; +++ } +++ +++ const char* basename = lbasename (pfilename->c_str()); +++ size_t basename_pos = basename - pfilename->c_str (); +++ filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".so"; +++ fd = open (filename.c_str (), O_RDONLY | O_BINARY); +++ if (fd >= 0) +++ { +++ *pfilename = filename; +++ return fd; +++ } +++ +++ filename = pfilename->substr (0, basename_pos) + "lib" + basename + ".a"; +++ fd = open (filename.c_str (), O_RDONLY | O_BINARY); +++ if (fd >= 0) +++ { +++ *pfilename = filename; +++ return fd; +++ } +++ +++ filename = *pfilename + ".o"; +++ fd = open (filename.c_str(), O_RDONLY | O_BINARY); +++ if (fd >= 0) +++ { +++ *pfilename = filename; +++ return fd; +++ } +++ +++ return -1; +++} +++ +++/* Try to find the export data for FILENAME. */ +++ +++static char * +++a68_try_packet_in_directory (const std::string &filename, size_t *psize) +++{ +++ std::string found_filename = filename; +++ int fd = open (found_filename.c_str(), O_RDONLY | O_BINARY); +++ +++ if (fd >= 0) +++ { +++ struct stat s; +++ if (fstat (fd, &s) >= 0 && S_ISDIR (s.st_mode)) +++ { +++ close (fd); +++ fd = -1; +++ errno = EISDIR; +++ } +++ } +++ +++ if (fd < 0) +++ { +++ if (errno != ENOENT && errno != EISDIR) +++ a68_warning (NO_NODE, 0, "cannot open file Z for imports", +++ filename.c_str ()); +++ +++ fd = a68_try_suffixes (&found_filename); +++ if (fd < 0) +++ return NULL; +++ } +++ +++ /* The export data may not be in this file. */ +++ char *exports = a68_find_export_data (found_filename, fd, psize); +++ if (exports != NULL) +++ return exports; +++ +++ close (fd); +++ +++ a68_error (NO_NODE, "file Z exists but does not contain any export data", +++ found_filename.c_str ()); +++ +++ return NULL; +++} +++ +++/* Find import data in FILENAME. +++ +++ This searches the file system for FILENAME, reads exports information from +++ it, and returns a pointer to the beginning of an allocated buffer with the +++ exports data, its size in *psize. It is up to the caller of this function +++ to release the buffer when it is no longer necessary. If the file is not +++ found, this function returns NULL. +++ +++ When FILENAME is not an absolute path and does not start with ./ or ../, we +++ use the search path provided by -I and -L options. +++ +++ When FILENAME does start with ./ or ../, we use RELATIVE_IMPORT_PATH as a +++ prefix. +++ +++ When FILENAME does not exist, we try modifying FILENAME to find the file. +++ We use the first of these which exists: +++ +++ - We append ".m68". +++ - We turn the base of FILENAME info libFILENAME.so. +++ - We turn the base of FILENAME into libFILENAME.a. +++ - We append ".o". +++ +++ When using a search path, we apply each of these transformations at each +++ entry on the search path before moving on to the next entry. If the file +++ exists, but does not contain Algol 68 export data, we stop; we do not keep +++ looking for another file with the same name later in the search path. */ +++ +++static char * +++a68_get_packet_exports (const std::string &filename, +++ const std::string &relative_import_path, +++ size_t *psize) +++{ +++ char *exports; +++ +++ bool is_local; +++ if (IS_ABSOLUTE_PATH (filename)) +++ is_local = true; +++ else if (filename[0] == '.' +++ && (filename[1] == '\0' || IS_DIR_SEPARATOR (filename[1]))) +++ is_local = true; +++ else if (filename[0] == '.' +++ && filename[1] == '.' +++ && (filename[2] == '\0' || IS_DIR_SEPARATOR (filename[2]))) +++ is_local = true; +++ else +++ is_local = false; +++ +++ std::string fn = filename; +++ if (is_local && !IS_ABSOLUTE_PATH (filename) +++ && !relative_import_path.empty ()) +++ { +++ if (fn == ".") +++ /* A special case. */ +++ fn = relative_import_path; +++ else if (fn[0] == '.' && fn[1] == '.' +++ && (fn[2] == '\0' || IS_DIR_SEPARATOR (fn[2]))) +++ { +++ /* We are going to join relative_import_path and fn, and it will look +++ like DIR/../PATH. BUt DIR does not necessarily exist in this +++ case, and if it doesn't the use of .. will fail although it +++ shouldn't. */ +++ size_t index; +++ for (index = relative_import_path.length () - 1; +++ index > 0 && !IS_DIR_SEPARATOR (relative_import_path[index]); +++ index--) +++ ; +++ if (index > 0) +++ fn = relative_import_path.substr (0, index) + fn.substr (2); +++ else +++ fn = relative_import_path + '/' + fn; +++ } +++ else +++ fn = relative_import_path + '/' + fn; +++ is_local = false; +++ } +++ +++ if (!is_local) +++ { +++ for (std::string path : A68_IMPORT_PATHS) +++ { +++ if (path.empty () && path[path.size () - 1] != '/') +++ path += '/'; +++ path += fn; +++ exports = a68_try_packet_in_directory (path, psize); +++ if (exports != NULL) +++ return exports; +++ } +++ } +++ +++ return a68_try_packet_in_directory (fn, psize); +++} +++ +++/* The size of the target's pointer type, in bytes. */ +++#ifndef PTR_SIZE +++#define PTR_SIZE ((int)(POINTER_SIZE / BITS_PER_UNIT)) +++#endif +++ +++/* Collection of decoding helper macros, to be exclusively used in the +++ a68_decode_* functions below. */ +++ +++#define DINT8(V) \ +++ do \ +++ { \ +++ if (pos + 1 > size) \ +++ goto decode_error; \ +++ (V) = (int8_t)data[pos++]; \ +++ } \ +++ while (0) +++ +++#define DUINT8(V) \ +++ do \ +++ { \ +++ if (pos + 1 > size) \ +++ goto decode_error; \ +++ (V) = (uint8_t)data[pos++]; \ +++ } \ +++ while (0) +++ +++#define DUINT16(V) \ +++ do \ +++ { \ +++ if (pos + 2 > size) \ +++ goto decode_error; \ +++ if (BYTES_BIG_ENDIAN) \ +++ (V) = ((uint8_t) data[pos] << 8) | (uint8_t) data[pos + 1]; \ +++ else \ +++ (V) = ((uint8_t) data[pos + 1] << 8) | (uint8_t) data[pos]; \ +++ pos += 2; \ +++ } \ +++ while (0) +++ +++#define DOFFSET(V) \ +++ do \ +++ { \ +++ if (pos + PTR_SIZE > size) \ +++ goto decode_error; \ +++ (V) = 0; \ +++ uint64_t ptr_bit_size = 8 * PTR_SIZE; \ +++ if (BYTES_BIG_ENDIAN) \ +++ { \ +++ for (int i = 0; i < PTR_SIZE; i++) \ +++ (V) = ((V) | ((uint8_t) data[pos + i] << (ptr_bit_size - (i * 8)))); \ +++ } \ +++ else \ +++ { \ +++ for (int i = 0; i < PTR_SIZE; i++) \ +++ (V) = ((V) | ((uint8_t) data[pos + i] << (i * 8))); \ +++ } \ +++ pos += PTR_SIZE; \ +++ } \ +++ while (0) +++ +++#define DSTR(V) \ +++ do \ +++ { \ +++ uint16_t len; \ +++ char *str = NULL; \ +++ DUINT16 (len); \ +++ if (pos + len > size) \ +++ goto decode_error; \ +++ if (len > 0) \ +++ { \ +++ str = (char *) xmalloc (len); \ +++ memcpy (str, data + pos, len); \ +++ pos += len; \ +++ } \ +++ (V) = str; \ +++ } \ +++ while (0) +++ +++/* Types to denote encoded modes. */ +++ +++struct encoded_triplet +++{ +++ uint64_t lb; +++ uint64_t ub; +++}; +++ +++struct encoded_field +++{ +++ uint64_t mode_offset; +++ char *name; +++}; +++ +++struct encoded_arg +++{ +++ uint64_t arg_mode_offset; +++ char *arg_name; +++}; +++ +++struct encoded_mode +++{ +++ MOID_T *moid; +++ uint64_t offset; +++ uint8_t kind; +++ int8_t sizety; +++ union +++ { +++ struct +++ { +++ uint64_t sub_offset; +++ } name; +++ +++ struct +++ { +++ uint8_t sub_offset; +++ } flex; +++ +++ struct +++ { +++ uint8_t ndims; +++ struct encoded_triplet *triplets; +++ uint64_t sub_offset; +++ } row; +++ +++ struct +++ { +++ uint16_t nfields; +++ struct encoded_field *fields; +++ } sct; +++ +++ struct +++ { +++ uint8_t nmodes; +++ uint64_t *modes; +++ } union_; +++ +++ struct +++ { +++ uint64_t ret_mode_offset; +++ uint8_t nargs; +++ struct encoded_arg *args; +++ } proc; +++ +++ } data; +++}; +++ +++/* Free the memory used by an encoded mode. */ +++ +++static void +++encoded_mode_free (struct encoded_mode *em) +++{ +++ switch (em->kind) +++ { +++ case GA68_MODE_ROW: +++ free (em->data.row.triplets); +++ break; +++ case GA68_MODE_STRUCT: +++ /* Note that the field names are installed in moids in +++ encoded_mode_to_moid, so we shoud not free them. */ +++ free (em->data.sct.fields); +++ break; +++ case GA68_MODE_UNION: +++ free (em->data.union_.modes); +++ break; +++ case GA68_MODE_PROC: +++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) +++ free (em->data.proc.args[i].arg_name); +++ free (em->data.proc.args); +++ break; +++ default: +++ break; +++ } +++ free (em); +++} +++ +++/* A collection of encoded modes indexed by offsets. */ +++ +++#define NO_OFFSET ((uint64_t) -1) +++ +++typedef hash_map, +++ struct encoded_mode *> encoded_modes_map_t; +++ +++/* Complete a encoded mode. */ +++ +++static MOID_T * +++complete_encoded_mode (encoded_modes_map_t &encoded_modes, uint64_t offset) +++{ +++ struct encoded_mode *em = *(encoded_modes.get (offset)); +++ MOID_T *sub; +++ PACK_T *pack; +++ +++ if (em->moid != NO_MOID) +++ return em->moid; +++ +++ switch (em->kind) +++ { +++ case GA68_MODE_VOID: em->moid = M_VOID; break; +++ case GA68_MODE_CHAR: em->moid = M_CHAR; break; +++ case GA68_MODE_BOOL: em->moid = M_BOOL; break; +++ case GA68_MODE_STRING: em->moid = M_FLEX_ROW_CHAR; break; +++ case GA68_MODE_INT: +++ switch (em->sizety) +++ { +++ case 0: em->moid = M_INT; break; +++ case 1: em->moid = M_LONG_INT; break; +++ case 2: em->moid = M_LONG_LONG_INT; break; +++ case -1: em->moid = M_SHORT_INT; break; +++ case -2: em->moid = M_SHORT_SHORT_INT; break; +++ default: +++ gcc_unreachable (); +++ } +++ break; +++ case GA68_MODE_BITS: +++ switch (em->sizety) +++ { +++ case 0: em->moid = M_BITS; break; +++ case 1: em->moid = M_LONG_BITS; break; +++ case 2: em->moid = M_LONG_LONG_BITS; break; +++ case -1: em->moid = M_SHORT_BITS; break; +++ case -2: em->moid = M_SHORT_SHORT_BITS; break; +++ default: +++ gcc_unreachable (); +++ } +++ break; +++ case GA68_MODE_BYTES: +++ switch (em->sizety) +++ { +++ case 0: em->moid = M_BYTES; break; +++ case 1: em->moid = M_LONG_BYTES; break; +++ default: +++ gcc_unreachable (); +++ } +++ break; +++ case GA68_MODE_REAL: +++ switch (em->sizety) +++ { +++ case 0: em->moid = M_REAL; break; +++ case 1: em->moid = M_LONG_REAL; break; +++ case 2: em->moid = M_LONG_LONG_REAL; break; +++ default: +++ gcc_unreachable (); +++ } +++ break; +++ case GA68_MODE_CMPL: +++ switch (em->sizety) +++ { +++ case 0: em->moid = M_COMPLEX; break; +++ case 1: em->moid = M_LONG_COMPLEX; break; +++ case 2: em->moid = M_LONG_LONG_COMPLEX; break; +++ default: +++ gcc_unreachable (); +++ } +++ break; +++ case GA68_MODE_NAME: +++ case GA68_MODE_FLEX: +++ /* For recursive declarations. */ +++ em->moid = a68_create_mode (em->kind == GA68_MODE_NAME ? REF_SYMBOL : FLEX_SYMBOL, +++ 0, NO_NODE, M_ERROR, NO_PACK); +++ sub = complete_encoded_mode (encoded_modes, em->data.name.sub_offset); +++ if (sub == NO_MOID) +++ { +++ /* Free em->moid */ +++ return NO_MOID; +++ } +++ SUB (em->moid) = sub; +++ break; +++ case GA68_MODE_ROW: +++ /* XXX how to convey actual bounds. */ +++ /* For recursive declarations. */ +++ em->moid = a68_create_mode (ROW_SYMBOL, 0, NO_NODE, M_ERROR, NO_PACK); +++ sub = complete_encoded_mode (encoded_modes, em->data.row.sub_offset); +++ if (sub == NO_MOID) +++ { +++ /* Free em->moid */ +++ return NO_MOID; +++ } +++ SUB (em->moid) = sub; +++ DIM (em->moid) = em->data.row.ndims; +++ break; +++ case GA68_MODE_STRUCT: +++ /* For recursive declarations. */ +++ em->moid = a68_create_mode (STRUCT_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); +++ pack = NO_PACK; +++ for (uint16_t i = 0; i < em->data.sct.nfields; i++) +++ { +++ /* Note we have to do this from last field to first field, because +++ a68_add_mode_to_pack prepends to the list. */ +++ uint16_t index = em->data.sct.nfields - 1 - i; +++ char *field_name = em->data.sct.fields[index].name; +++ MOID_T *field_moid = complete_encoded_mode (encoded_modes, +++ em->data.sct.fields[index].mode_offset); +++ if (field_moid == NO_MOID) +++ { +++ /* XXX free em->moid */ +++ em->moid = NO_MOID; +++ return NO_MOID; +++ } +++ (void) a68_add_mode_to_pack (&pack, field_moid, field_name, NO_NODE); +++ } +++ DIM (em->moid) = a68_count_pack_members (pack); +++ PACK (em->moid) = pack; +++ break; +++ case GA68_MODE_UNION: +++ /* For recursive declarations. */ +++ em->moid = a68_create_mode (UNION_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); +++ pack = NO_PACK; +++ for (uint8_t i = 0; i < em->data.union_.nmodes; i++) +++ { +++ /* Union alternatives are internally stored in reverse order in the +++ pack. */ +++ uint16_t index = i; +++ MOID_T *united_moid = complete_encoded_mode (encoded_modes, +++ em->data.union_.modes[index]); +++ if (united_moid == NO_MOID) +++ { +++ /* XXX free em->moid */ +++ em->moid = NO_MOID; +++ return NO_MOID; +++ } +++ (void) a68_add_mode_to_pack (&pack, united_moid, NO_TEXT, NO_NODE); +++ } +++ DIM (em->moid) = a68_count_pack_members (pack); +++ PACK (em->moid) = pack; +++ break; +++ case GA68_MODE_PROC: +++ /* For recursive declarations. */ +++ em->moid = a68_create_mode (PROC_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); +++ pack = NO_PACK; +++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) +++ { +++ /* Note we have to do this from last argument mode to first argument +++ mode, because a68_add_mode_to_pack prepends to the list. */ +++ uint16_t index = em->data.proc.nargs - 1 - i; +++ char *arg_name = em->data.proc.args[index].arg_name; +++ MOID_T *arg_moid = complete_encoded_mode (encoded_modes, +++ em->data.proc.args[index].arg_mode_offset); +++ if (arg_moid == NO_MOID) +++ { +++ /* XXX free em->moid */ +++ em->moid = NO_MOID; +++ return NO_MOID; +++ } +++ (void) a68_add_mode_to_pack (&pack, arg_moid, arg_name, NO_NODE); +++ } +++ SUB (em->moid) = complete_encoded_mode (encoded_modes, +++ em->data.proc.ret_mode_offset); +++ if (SUB (em->moid) == NO_MOID) +++ { +++ /* Free em->moid */ +++ em->moid = NO_MOID; +++ return NO_MOID; +++ } +++ DIM (em->moid) = a68_count_pack_members (pack); +++ PACK (em->moid) = pack; +++ break; +++ default: +++ gcc_unreachable (); +++ } +++ +++ return em->moid; +++} +++ +++/* Dump the contents of an encoded_mode, for debugging purposes. */ +++ +++ATTRIBUTE_UNUSED static void +++dump_encoded_mode (struct encoded_mode *em) +++{ +++ printf ("[%" PRIu64 "] kind: %" PRIu8, em->offset, em->kind); +++ switch (em->kind) +++ { +++ case GA68_MODE_VOID: +++ printf (" void\n"); +++ break; +++ case GA68_MODE_CHAR: +++ printf (" char\n"); +++ break; +++ case GA68_MODE_BOOL: +++ printf (" bool\n"); +++ break; +++ case GA68_MODE_STRING: +++ printf (" basic\n"); +++ break; +++ case GA68_MODE_NAME: +++ printf (" name\n"); +++ printf (" sub: %" PRIu64 "\n", em->data.name.sub_offset); +++ break; +++ case GA68_MODE_STRUCT: +++ printf (" struct\n"); +++ printf (" nfields: %" PRIu16 "\n", em->data.sct.nfields); +++ for (uint16_t i = 0; i < em->data.sct.nfields; i++) +++ printf (" %s : [%" PRIu64 "]\n", +++ em->data.sct.fields[i].name, em->data.sct.fields[i].mode_offset); +++ break; +++ case GA68_MODE_FLEX: +++ printf (" flex\n"); +++ printf (" sub: %" PRIu64 "\n", em->data.name.sub_offset); +++ break; +++ case GA68_MODE_UNION: +++ printf (" union\n"); +++ printf (" nmodes: %" PRIu8 "\n", em->data.union_.nmodes); +++ printf (" "); +++ for (uint8_t i = 0; i < em->data.union_.nmodes; i++) +++ printf (" [%" PRIu64 "]", em->data.union_.modes[i]); +++ printf ("\n"); +++ break; +++ case GA68_MODE_PROC: +++ printf (" proc\n"); +++ printf (" retmode: [%" PRIu64 "]\n", em->data.proc.ret_mode_offset); +++ printf (" nargs: %" PRIu8 "\n", em->data.proc.nargs); +++ for (uint8_t i = 0; i < em->data.proc.nargs; i++) +++ printf (" %s : [%" PRIu64 "]\n", +++ em->data.proc.args[i].arg_name, +++ em->data.proc.args[i].arg_mode_offset); +++ break; +++ case GA68_MODE_ROW: +++ printf (" row\n"); +++ printf (" ndims: %" PRIu8 "\n", em->data.row.ndims); +++ for (uint8_t i = 0; i < em->data.row.ndims; i++) +++ { +++ printf (" lb: %" PRIu64 "\n", em->data.row.triplets[i].lb); +++ printf (" ub: %" PRIu64 "\n", em->data.row.triplets[i].ub); +++ } +++ printf (" sub: [%" PRIu64 "]\n", em->data.row.sub_offset); +++ break; +++ default: +++ break; +++ } +++} +++ +++/* Substitute any reference to mode M in T to R. */ +++ +++static void +++a68_replace_submode (MOID_T *t, MOID_T *m, MOID_T *r) +++{ +++ if (SUB (t) == m) +++ SUB (t) = r; +++ +++ for (PACK_T *p = PACK (t); p != NO_PACK; FORWARD (p)) +++ { +++ if (MOID (p) == m) +++ MOID (p) = r; +++ } +++} +++ +++/* Substitute mode M with mode R in all modes in MODES_LIST. +++ The entry for M in MODES_LIST is set to NO_MOID. */ +++ +++static void +++a68_replace_equivalent_mode (vec *mode_list, +++ MOID_T *m, MOID_T *r) +++{ +++ for (size_t i = 0; i < mode_list->length (); ++i) +++ { +++ if ((*mode_list)[i] == m) +++ (*mode_list)[i] = NO_MOID; +++ else if ((*mode_list)[i] != NO_MOID) +++ a68_replace_submode ((*mode_list)[i], m, r); +++ } +++} +++ +++/* Decode a modes table at DATA + POS. */ +++ +++static bool +++a68_decode_modes (MOIF_T *moif, encoded_modes_map_t &encoded_modes, +++ const char *data, size_t size, size_t pos, +++ size_t *ppos, const char **errstr) +++{ +++ bool siga; +++ uint8_t kind; +++ uint64_t mode_table_size, mode_table_end; +++ +++ /* Get the size of the modes table. */ +++ DOFFSET (mode_table_size); +++ mode_table_end = pos + mode_table_size; +++ +++ /* Decode all the mode entries and fill in encoded_modes. */ +++ while (pos < mode_table_end) +++ { +++ int8_t sizety; +++ uint8_t ndims, nmodes, nargs; +++ uint16_t nfields; +++ uint64_t mode_offset = pos; +++ uint64_t sub, ret_mode_offset; +++ struct encoded_mode *encoded_mode; +++ +++ DUINT8 (kind); +++ encoded_mode = (struct encoded_mode *) xmalloc (sizeof (struct encoded_mode)); +++ encoded_mode->moid = NO_MOID; +++ encoded_mode->offset = mode_offset; +++ encoded_mode->kind = kind; +++ encoded_mode->sizety = 0; +++ switch (kind) +++ { +++ case GA68_MODE_VOID: +++ case GA68_MODE_CHAR: +++ case GA68_MODE_BOOL: +++ case GA68_MODE_STRING: +++ break; +++ case GA68_MODE_INT: +++ case GA68_MODE_REAL: +++ case GA68_MODE_BITS: +++ case GA68_MODE_BYTES: +++ case GA68_MODE_CMPL: +++ DINT8 (sizety); +++ encoded_mode->sizety = sizety; +++ break; +++ case GA68_MODE_NAME: +++ DOFFSET (sub); +++ encoded_mode->data.name.sub_offset = sub; +++ break; +++ case GA68_MODE_FLEX: +++ DOFFSET (sub); +++ encoded_mode->data.flex.sub_offset = sub; +++ break; +++ case GA68_MODE_ROW: +++ DUINT8 (ndims); +++ encoded_mode->data.row.triplets +++ = (struct encoded_triplet *) xmalloc (sizeof (struct encoded_triplet) * ndims); +++ for (uint8_t i = 0; i < ndims; i++) +++ { +++ uint64_t lb, ub; +++ DOFFSET (lb); +++ DOFFSET (ub); +++ encoded_mode->data.row.triplets[i].lb = lb; +++ encoded_mode->data.row.triplets[i].ub = ub; +++ } +++ DOFFSET (sub); +++ encoded_mode->data.row.ndims = ndims; +++ encoded_mode->data.row.sub_offset = sub; +++ break; +++ case GA68_MODE_UNION: +++ DUINT16 (nmodes); +++ encoded_mode->data.union_.nmodes = nmodes; +++ encoded_mode->data.union_.modes +++ = (uint64_t *) xmalloc (sizeof (uint64_t) * nmodes); +++ for (uint8_t i = 0; i < nmodes; i++) +++ { +++ uint64_t mode; +++ DOFFSET (mode); +++ encoded_mode->data.union_.modes[i] = mode; +++ } +++ break; +++ case GA68_MODE_PROC: +++ DOFFSET (ret_mode_offset); +++ DUINT8 (nargs); +++ encoded_mode->data.proc.ret_mode_offset = ret_mode_offset; +++ encoded_mode->data.proc.nargs = nargs; +++ encoded_mode->data.proc.args +++ = (struct encoded_arg *) xmalloc (sizeof (struct encoded_arg) * nargs); +++ for (uint8_t i = 0; i < nargs; i++) +++ { +++ uint64_t arg_mode_offset; +++ char *arg_name; +++ DOFFSET (arg_mode_offset); +++ DSTR (arg_name); +++ encoded_mode->data.proc.args[i].arg_mode_offset = arg_mode_offset; +++ encoded_mode->data.proc.args[i].arg_name = arg_name; +++ } +++ break; +++ case GA68_MODE_STRUCT: +++ DUINT16 (nfields); +++ encoded_mode->data.sct.nfields = nfields; +++ encoded_mode->data.sct.fields +++ = (struct encoded_field *) xmalloc (sizeof (struct encoded_field) * nfields); +++ for (uint16_t i = 0; i < nfields; i++) +++ { +++ uint64_t mode_offset; +++ char *field_name; +++ DOFFSET (mode_offset); +++ DSTR (field_name); +++ encoded_mode->data.sct.fields[i].mode_offset = mode_offset; +++ encoded_mode->data.sct.fields[i].name = field_name; +++ } +++ break; +++ case GA68_MODE_UNKNOWN: +++ default: +++ *errstr = "invalid kind in mode"; +++ goto decode_error; +++ break; +++ } +++ +++ encoded_modes.put (mode_offset, encoded_mode); +++ } +++ +++ /* Sanity check. */ +++ if (pos != mode_table_end) +++ { +++ *errstr = "invalid mode table size"; +++ goto decode_error; +++ } +++ +++ /* Complete all encoded modes. +++ This operation must conform a transitive closure. */ +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ for (auto entry : encoded_modes) +++ { +++ uint64_t offset = entry.first; +++ struct encoded_mode *em = entry.second; +++ +++ if (em->moid == NO_MOID +++ && complete_encoded_mode (encoded_modes, offset) != NO_MOID) +++ siga = true; +++ } +++ } +++ +++ /* At this point all the encoded modes are complete and they are all +++ associated with moids. Put them in the moif. */ +++ for (auto entry : encoded_modes) +++ { +++ struct encoded_mode *em = entry.second; +++ vec_safe_push (MODES (moif), em->moid); +++ } +++ +++ /* Next step is to see if equivalent modes the any of the modes in the moif +++ DIM already exist in the compiler's mode list. In that case, replace the +++ DIM moif's mode with the existing mode anywhere in the moif. */ +++ for (MOID_T *m : MODES (moif)) +++ { +++ MOID_T *r = a68_search_equivalent_mode (m); +++ if (r != NO_MOID) +++ { +++ a68_replace_equivalent_mode (MODES (moif), m, r); +++ +++ /* Update encoded_modes to reflect the replacement. */ +++ for (auto entry : encoded_modes) +++ { +++ struct encoded_mode *em = entry.second; +++ if (em->moid == m) +++ em->moid = r; +++ } +++ } +++ } +++ +++ *errstr = NULL; +++ *ppos = pos; +++ return true; +++ decode_error: +++ if (*errstr == NULL) +++ *errstr = "error decoding mode"; +++ return false; +++} +++ +++/* Decode an extracts table at DATA + POS. */ +++ +++static bool +++a68_decode_extracts (MOIF_T *moif, encoded_modes_map_t &encoded_modes, +++ const char *data, size_t size, size_t pos, +++ size_t *ppos, const char **errstr) +++{ +++ uint64_t extracts_table_size, extracts_table_end; +++ +++ /* Get the size of the extracts table. */ +++ DOFFSET (extracts_table_size); +++ extracts_table_end = pos + extracts_table_size; +++ +++ /* Decode all the extracts entries, adding them to MOIF as we go. */ +++ while (pos < extracts_table_end) +++ { +++ uint8_t marker, prio, variable, in_proc; +++ uint64_t extract_size, extract_end, mode_offset; +++ uint64_t mdextra_size; +++ char *name; +++ +++ EXTRACT_T *e = (EXTRACT_T *) ggc_cleared_alloc (); +++ +++ DOFFSET (extract_size); +++ extract_end = pos + extract_size; +++ +++ DUINT8 (marker); +++ switch (marker) +++ { +++ case GA68_EXTRACT_MODU: +++ DSTR (name); +++ DOFFSET (mdextra_size); +++ if (mdextra_size != 0) +++ { +++ *errstr = "non-empty mdextra in module extract"; +++ goto decode_error; +++ } +++ EXTRACT_KIND (e) = GA68_EXTRACT_MODU; +++ EXTRACT_SYMBOL (e) = ggc_strdup (name); +++ EXTRACT_MODE (e) = NO_MOID; +++ EXTRACT_PRIO (e) = 0; +++ EXTRACT_VARIABLE (e) = false; +++ EXTRACT_IN_PROC (e) = false; +++ vec_safe_push (MODULES (moif), e); +++ break; +++ case GA68_EXTRACT_IDEN: +++ DSTR (name); +++ DOFFSET (mode_offset); +++ DOFFSET (mdextra_size); +++ if (mdextra_size != 2) +++ { +++ *errstr = "mdextra size should be 2 in iden extract"; +++ goto decode_error; +++ } +++ DUINT8 (variable); +++ DUINT8 (in_proc); +++ EXTRACT_KIND (e) = GA68_EXTRACT_IDEN; +++ EXTRACT_SYMBOL (e) = ggc_strdup (name); +++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; +++ EXTRACT_PRIO (e) = 0; +++ EXTRACT_VARIABLE (e) = variable; +++ EXTRACT_IN_PROC (e) = in_proc; +++ vec_safe_push (IDENTIFIERS (moif), e); +++ break; +++ case GA68_EXTRACT_MODE: +++ DSTR (name); +++ DOFFSET (mode_offset); +++ DOFFSET (mdextra_size); +++ if (mdextra_size != 0) +++ { +++ *errstr = "non-empty mdextra in indicant extract"; +++ goto decode_error; +++ } +++ EXTRACT_KIND (e) = GA68_EXTRACT_MODE; +++ EXTRACT_SYMBOL (e) = ggc_strdup (name); +++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; +++ EXTRACT_PRIO (e) = 0; +++ EXTRACT_VARIABLE (e) = false; +++ EXTRACT_IN_PROC (e) = false; +++ vec_safe_push (INDICANTS (moif), e); +++ break; +++ case GA68_EXTRACT_PRIO: +++ DSTR (name); +++ DUINT8 (prio); +++ DOFFSET (mdextra_size); +++ if (mdextra_size != 0) +++ { +++ *errstr = "non-empty mdextra in prio extract"; +++ goto decode_error; +++ } +++ EXTRACT_KIND (e) = GA68_EXTRACT_PRIO; +++ EXTRACT_SYMBOL (e) = ggc_strdup (name); +++ EXTRACT_MODE (e) = NO_MOID; +++ EXTRACT_PRIO (e) = prio; +++ EXTRACT_VARIABLE (e) = false; +++ EXTRACT_IN_PROC (e) = false; +++ vec_safe_push (PRIOS (moif), e); +++ break; +++ case GA68_EXTRACT_OPER: +++ DSTR (name); +++ DOFFSET (mode_offset); +++ DOFFSET (mdextra_size); +++ if (mdextra_size != 2) +++ { +++ *errstr = "mdextra size should be 2 in oper extract"; +++ goto decode_error; +++ } +++ DUINT8 (variable); +++ DUINT8 (in_proc); +++ EXTRACT_KIND (e) = GA68_EXTRACT_OPER; +++ EXTRACT_SYMBOL (e) = ggc_strdup (name); +++ EXTRACT_MODE (e) = (*(encoded_modes.get (mode_offset)))->moid; +++ EXTRACT_PRIO (e) = 0; +++ EXTRACT_VARIABLE (e) = variable; +++ EXTRACT_IN_PROC (e) = in_proc; +++ vec_safe_push (OPERATORS (moif), e); +++ break; +++ default: +++ *errstr = "invalid marker in extract"; +++ goto decode_error; +++ break; +++ } +++ +++ /* Sanity check. */ +++ if (pos != extract_end) +++ { +++ *errstr = "invalid extract size"; +++ goto decode_error; +++ } +++ } +++ +++ /* Sanity check. */ +++ if (pos != extracts_table_end) +++ { +++ *errstr = "invalid extracts table size"; +++ goto decode_error; +++ } +++ +++ *errstr = NULL; +++ *ppos = pos; +++ return true; +++ decode_error: +++ if (*errstr == NULL) +++ *errstr = "error decoding extract"; +++ return false; +++} +++ +++/* Decode the given exports data into a moif. If there is a decoding error +++ then put an explicative mssage in *ERRSTR and return NULL. */ +++ +++static MOIF_T * +++a68_decode_moif (const char *data, size_t size, const char **errstr) +++{ +++ size_t pos = 0; +++ MOIF_T *moif = a68_moif_new (NULL /* name */); +++ encoded_modes_map_t encoded_modes (16); +++ +++ uint8_t magic1, magic2; +++ uint16_t version; +++ char *name, *prelude, *postlude; +++ +++ DUINT8 (magic1); +++ DUINT8 (magic2); +++ if (magic1 != A68_EXPORT_MAGIC1 || magic2 != A68_EXPORT_MAGIC2) +++ { +++ *errstr = "invalid magic number"; +++ goto decode_error; +++ } +++ +++ DUINT16 (version); +++ if (version != 1) +++ { +++ *errstr = "invalid a68 exports version"; +++ goto decode_error; +++ } +++ +++ DSTR (name); +++ DSTR (prelude); +++ DSTR (postlude); +++ NAME (moif) = name; +++ PRELUDE (moif) = prelude; +++ POSTLUDE (moif) = postlude; +++ +++ /* Decode the modes table. +++ This installs the resulting moids in MOIF. */ +++ if (!a68_decode_modes (moif, encoded_modes, data, size, pos, &pos, errstr)) +++ goto decode_error; +++ +++ /* Decode the extracts table. +++ This installs the resulting tags in MOIF. */ +++ if (!a68_decode_extracts (moif, encoded_modes, data, size, pos, &pos, errstr)) +++ goto decode_error; +++ +++ /* We don't need the encoded modes anymore. */ +++ for (auto entry : encoded_modes) +++ { +++ struct encoded_mode *em = entry.second; +++ encoded_mode_free (em); +++ } +++ +++ /* Got some juicy exports for youuuuuu... */ +++ return moif; +++ decode_error: +++ if (*errstr == NULL) +++ *errstr = "premature end of data"; +++ return NULL; +++} +++ +++/* Get a moif with the exports for module named MODULE. If no exports can be +++ found then return NULL. */ +++ +++MOIF_T * +++a68_open_packet (const char *module) +++{ +++ /* Look in the modules location maps to see if there is an entry for MODULE. +++ If there is one, use the specified filename. Otherwise canonicalize the +++ module name to a file name. */ +++ char *filename; +++ const char **pfilename = A68_MODULE_FILES->get (module); +++ if (pfilename == NULL) +++ { +++ /* Turn the module indicant in MODULE to lower-case. */ +++ filename = (char *) alloca (strlen (module) + 1); +++ size_t i = 0; +++ for (; i < strlen (module); i++) +++ filename[i] = TOLOWER (module[i]); +++ filename[i] = '\0'; +++ } +++ else +++ { +++ size_t len = strlen (*pfilename) + 1; +++ filename = (char *) alloca (len); +++ memcpy (filename, *pfilename, len); +++ } +++ +++ /* Try to read exports data in a buffer. */ +++ char *exports_data; +++ size_t exports_data_size; +++ exports_data = a68_get_packet_exports (std::string (filename), +++ std::string ("."), +++ &exports_data_size); +++ if (exports_data == NULL) +++ return NULL; +++ +++ /* Got some data. Parse it into a moif. */ +++ const char *errstr = NULL; +++ MOIF_T *moif = a68_decode_moif (exports_data, exports_data_size, &errstr); +++ return moif; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-lang.cc ++@@ -0,0 +1,755 @@ +++/* Language-dependent hooks for Algol 68. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "tree.h" +++#include "toplev.h" +++#include "langhooks.h" +++#include "langhooks-def.h" +++#include "target.h" +++#include "stringpool.h" +++#include "debug.h" +++#include "diagnostic.h" +++#include "opts.h" +++#include "machmode.h" +++#include "stor-layout.h" /* For layout_type */ +++#include "vec.h" +++ +++#include "a68.h" +++ +++/* Global state for the Algol 68 front end. */ +++ +++A68_T a68_common; +++ +++/* Types expected by gcc's garbage collector. +++ These types exist to allow language front-ends to +++ add extra information in gcc's parse tree data structure. */ +++ +++struct GTY(()) lang_type +++{ +++ MOID_T * moid; +++}; +++ +++struct GTY(()) lang_decl +++{ +++ NODE_T * node; +++}; +++ +++/* Language-specific identifier information. This must include a +++ tree_identifier. */ +++struct GTY(()) lang_identifier +++{ +++ struct tree_identifier common; +++}; +++ +++ +++struct GTY(()) language_function +++{ +++ int dummy; +++}; +++ +++/* The Algol68 frontend Type AST for GCC type NODE. */ +++#define TYPE_LANG_FRONTEND(NODE) \ +++ (TYPE_LANG_SPECIFIC (NODE) \ +++ ? TYPE_LANG_SPECIFIC (NODE)->type : NULL) +++ +++/* The resulting tree type. */ +++ +++union GTY((desc ("TREE_CODE (&%h.generic) == IDENTIFIER_NODE"), +++ chain_next ("CODE_CONTAINS_STRUCT (TREE_CODE (&%h.generic), " +++ "TS_COMMON) ? ((union lang_tree_node *) TREE_CHAIN " +++ "(&%h.generic)) : NULL"))) lang_tree_node +++{ +++ union tree_node GTY((tag ("0"), +++ desc ("tree_node_structure (&%h)"))) generic; +++ struct lang_identifier GTY ((tag ("1"))) identifier; +++}; +++ +++/* Allocate and return a lang specific structure for type tree nodes. */ +++ +++struct lang_type * +++a68_build_lang_type (MOID_T *moid) +++{ +++ tree ctype = CTYPE (moid); +++ struct lang_type *lt = ctype ? TYPE_LANG_SPECIFIC (ctype) : NULL; +++ +++ if (lt == NULL) +++ lt = (struct lang_type *) ggc_cleared_alloc (); +++ if (lt->moid == NULL) +++ lt->moid = moid; +++ return lt; +++} +++ +++/* Allocate and return a lang specific structure for decl tree nodes. */ +++ +++struct lang_decl * +++a68_build_lang_decl (NODE_T *node) +++{ +++ tree cdecl = CDECL (node); +++ struct lang_decl *ld = cdecl ? DECL_LANG_SPECIFIC (cdecl) : NULL; +++ +++ if (ld == NULL) +++ ld = (struct lang_decl *) ggc_cleared_alloc (); +++ if (ld->node == NULL) +++ ld->node = node; +++ return ld; +++} +++ +++/* Get the front-end mode associated with the given TYPE. If no mode is +++ associated then this function returns NO_MODE. */ +++ +++MOID_T * +++a68_type_moid (tree type) +++{ +++ gcc_assert (TYPE_LANG_SPECIFIC (type) != NULL +++ && TYPE_LANG_SPECIFIC (type)->moid != NO_MOID); +++ return TYPE_LANG_SPECIFIC (type)->moid; +++} +++ +++/* Build the type trees in a68_global_trees. */ +++ +++static void +++a68_build_a68_type_nodes (void) +++{ +++ /* VOID */ +++ a68_void_type = make_node (RECORD_TYPE); +++ TYPE_NAME (a68_void_type) = get_identifier ("void%"); +++ TYPE_FIELDS (a68_void_type) = NULL_TREE; +++ TYPE_READONLY (a68_void_type) = 1; +++ TYPE_CXX_ODR_P (a68_void_type) = 1; +++ layout_type (a68_void_type); +++ +++ /* BOOL */ +++ a68_bool_type = boolean_type_node; +++ +++ /* CHAR */ +++ a68_char_type = uint32_type_node; +++ +++ /* SHORT SHORT INT +++ SHORT INT +++ INT */ +++ a68_short_short_int_type = signed_char_type_node; +++ a68_short_int_type = short_integer_type_node; +++ a68_int_type = integer_type_node; +++ +++ /* LONG INT */ +++ if (int_size_in_bytes (long_integer_type_node) +++ > int_size_in_bytes (a68_int_type)) +++ a68_long_int_type = long_integer_type_node; +++ else if (int_size_in_bytes (long_long_integer_type_node) +++ > int_size_in_bytes (a68_int_type)) +++ a68_long_int_type = long_long_integer_type_node; +++ else +++ a68_long_int_type = a68_int_type; +++ +++ /* LONG LONG INT */ +++ if (int_size_in_bytes (long_integer_type_node) +++ > int_size_in_bytes (a68_long_int_type)) +++ a68_long_long_int_type = long_integer_type_node; +++ else if (int_size_in_bytes (long_long_integer_type_node) +++ > int_size_in_bytes (a68_long_int_type)) +++ a68_long_long_int_type = long_long_integer_type_node; +++ else +++ a68_long_long_int_type = a68_long_int_type; +++ +++ /* SHORT SHORT BITS +++ SHORT BITS +++ BITS */ +++ a68_short_short_bits_type = unsigned_char_type_node; +++ a68_short_bits_type = short_unsigned_type_node; +++ a68_bits_type = unsigned_type_node; +++ +++ /* LONG BITS */ +++ if (int_size_in_bytes (long_unsigned_type_node) +++ > int_size_in_bytes (a68_bits_type)) +++ a68_long_bits_type = long_unsigned_type_node; +++ else if (int_size_in_bytes (long_long_unsigned_type_node) +++ > int_size_in_bytes (a68_bits_type)) +++ a68_long_bits_type = long_long_unsigned_type_node; +++ else +++ a68_long_bits_type = a68_bits_type; +++ +++ /* LONG LONG BITS */ +++ if (int_size_in_bytes (long_unsigned_type_node) +++ > int_size_in_bytes (a68_long_bits_type)) +++ a68_long_long_bits_type = long_unsigned_type_node; +++ else if (int_size_in_bytes (long_long_unsigned_type_node) +++ > int_size_in_bytes (a68_long_bits_type)) +++ a68_long_long_bits_type = long_long_unsigned_type_node; +++ else +++ a68_long_long_bits_type = a68_long_bits_type; +++ +++ /* BYTES +++ LONG BYTES */ +++ a68_bytes_type = unsigned_type_node; +++ a68_long_bytes_type = long_unsigned_type_node; +++ +++ /* REAL +++ LONG REAL +++ LONG LONG REAL */ +++ a68_real_type = float_type_node; +++ a68_long_real_type = double_type_node; +++ a68_long_long_real_type = long_double_type_node; +++} +++ +++/* Language hooks data structures. This is the main interface between +++ the GCC front-end and the GCC middle-end/back-end. A list of +++ language hooks can be found in langhooks.h. */ +++ +++#undef LANG_HOOKS_NAME +++#define LANG_HOOKS_NAME "GNU Algol 68" +++ +++/* LANG_HOOKS_INIT gets called to initialize the front-end. +++ Invoked after option handling. */ +++ +++static bool +++a68_init (void) +++{ +++ build_common_tree_nodes (false); +++ targetm.init_builtins (); +++ a68_build_a68_type_nodes (); +++ build_common_builtin_nodes (); +++ a68_install_builtins (); +++ +++ /* Initialize binding contexts. */ +++ a68_init_ranges (); +++ +++ /* Set the type of size_t. */ +++ if (TYPE_MODE (long_unsigned_type_node) == ptr_mode) +++ size_type_node = long_unsigned_type_node; +++ else if (TYPE_MODE (long_long_unsigned_type_node) == ptr_mode) +++ size_type_node = long_long_unsigned_type_node; +++ else +++ size_type_node = long_unsigned_type_node; +++ +++ /* Create an empty module files map. */ +++ A68_MODULE_FILES = hash_map::create_ggc (16); +++ A68_MODULE_FILES->empty (); +++ +++ return true; +++} +++ +++#undef LANG_HOOKS_INIT +++#define LANG_HOOKS_INIT a68_init +++ +++/* LANG_HOOKS_OPTION_LANG_MASK */ +++ +++static unsigned int +++a68_option_lang_mask (void) +++{ +++ return CL_Algol68; +++} +++ +++#undef LANG_HOOKS_OPTION_LANG_MASK +++#define LANG_HOOKS_OPTION_LANG_MASK a68_option_lang_mask +++ +++ +++/* Return a data type that has machine mode MODE. If the mode is an +++ integer, then UNSIGNEDP selects between signed and unsigned types. */ +++ +++static tree +++a68_type_for_mode (enum machine_mode mode, int unsignedp) +++{ +++ if (mode == QImode) +++ return unsignedp ? a68_short_short_bits_type :a68_short_short_int_type; +++ +++ if (mode == HImode) +++ return unsignedp ? a68_short_bits_type : a68_short_int_type; +++ +++ if (mode == SImode) +++ return unsignedp ? a68_bits_type : a68_int_type; +++ +++ if (mode == DImode) +++ return unsignedp ? a68_long_bits_type : a68_long_int_type; +++ +++ if (mode == TYPE_MODE (a68_long_long_bits_type)) +++ return unsignedp ? a68_long_long_bits_type : a68_long_long_int_type; +++ +++ if (mode == TYPE_MODE (a68_real_type)) +++ return a68_real_type; +++ +++ if (mode == TYPE_MODE (a68_long_real_type)) +++ return a68_long_real_type; +++ +++ if (mode == TYPE_MODE (a68_long_long_real_type)) +++ return a68_long_long_real_type; +++ +++ if (mode == TYPE_MODE (build_pointer_type (char_type_node))) +++ return build_pointer_type (char_type_node); +++ +++ if (mode == TYPE_MODE (build_pointer_type (integer_type_node))) +++ return build_pointer_type (integer_type_node); +++ +++ for (int i = 0; i < NUM_INT_N_ENTS; i ++) +++ { +++ if (int_n_enabled_p[i] && mode == int_n_data[i].m) +++ { +++ if (unsignedp) +++ return int_n_trees[i].unsigned_type; +++ else +++ return int_n_trees[i].signed_type; +++ } +++ } +++ +++ return 0; +++} +++ +++#undef LANG_HOOKS_TYPE_FOR_MODE +++#define LANG_HOOKS_TYPE_FOR_MODE a68_type_for_mode +++ +++ +++/* Return an integer type with BITS bits of precision, +++ that is unsigned if UNSIGNEDP is nonzero, otherwise signed. */ +++ +++static tree +++a68_type_for_size (unsigned int bits, int unsignedp) +++{ +++ if (unsignedp) +++ { +++ if (bits <= TYPE_PRECISION (a68_short_short_bits_type)) +++ return a68_short_short_bits_type; +++ if (bits <= TYPE_PRECISION (a68_short_bits_type)) +++ return a68_short_bits_type; +++ if (bits <= TYPE_PRECISION (a68_bits_type)) +++ return a68_bits_type; +++ if (bits <= TYPE_PRECISION (a68_long_bits_type)) +++ return a68_long_bits_type; +++ if (bits <= TYPE_PRECISION (a68_long_long_bits_type)) +++ return a68_long_long_bits_type; +++ } +++ else +++ { +++ if (bits <= TYPE_PRECISION (a68_short_short_int_type)) +++ return a68_short_short_int_type; +++ if (bits <= TYPE_PRECISION (a68_short_int_type)) +++ return a68_short_int_type; +++ if (bits <= TYPE_PRECISION (a68_int_type)) +++ return a68_int_type; +++ if (bits <= TYPE_PRECISION (a68_long_int_type)) +++ return a68_long_int_type; +++ if (bits <= TYPE_PRECISION (a68_long_long_int_type)) +++ return a68_long_long_int_type; +++ } +++ +++ for (int i = 0; i < NUM_INT_N_ENTS; ++i) +++ { +++ if (int_n_enabled_p[i] && bits == int_n_data[i].bitsize) +++ { +++ if (unsignedp) +++ return int_n_trees[i].unsigned_type; +++ else +++ return int_n_trees[i].signed_type; +++ } +++ } +++ +++ return 0; +++} +++ +++#undef LANG_HOOKS_TYPE_FOR_SIZE +++#define LANG_HOOKS_TYPE_FOR_SIZE a68_type_for_size +++ +++ +++/* Implements the lang_hooks.decls.global_bindings_p routine for Algol 68. +++ Return true if we are in the global binding level. */ +++ +++static bool +++a68_global_bindings_p (void) +++{ +++ return (current_function_decl == NULL_TREE); +++} +++ +++#undef LANG_HOOKS_GLOBAL_BINDINGS_P +++#define LANG_HOOKS_GLOBAL_BINDINGS_P a68_global_bindings_p +++ +++/* Implements the lang_hooks.decls.getdecls routine. +++ Return the list of declarations of the current level. */ +++ +++static tree +++a68_getdecls (void) +++{ +++ return a68_range_names (); +++} +++ +++#undef LANG_HOOKS_GETDECLS +++#define LANG_HOOKS_GETDECLS a68_getdecls +++ +++/* Return A68_GLOBAL_CONTEXT, but create it first if need be. */ +++ +++static tree +++get_global_context (void) +++{ +++ if (!A68_GLOBAL_CONTEXT) +++ { +++ A68_GLOBAL_CONTEXT = build_translation_unit_decl (NULL_TREE); +++ debug_hooks->register_main_translation_unit (A68_GLOBAL_CONTEXT); +++ } +++ +++ return A68_GLOBAL_CONTEXT; +++} +++ +++/* Implements the lang_hooks.decls.pushdecl routine. +++ Record DECL as belonging to the current lexical scope. */ +++ +++static tree +++pushdecl (tree decl) +++{ +++ /* Set the context of the decl. If current_function_decl did not help in +++ determining the context, use global scope. */ +++ if (!DECL_CONTEXT (decl)) +++ { +++ if (current_function_decl) +++ DECL_CONTEXT (decl) = current_function_decl; +++ else +++ DECL_CONTEXT (decl) = get_global_context (); +++ } +++ +++ /* Put decls on list in reverse order. */ +++ if (TREE_STATIC (decl) || a68_global_bindings_p ()) +++ vec_safe_push (A68_GLOBAL_DECLARATIONS, decl); +++ else +++ a68_add_decl (decl); +++ +++ return decl; +++} +++ +++#undef LANG_HOOKS_PUSHDECL +++#define LANG_HOOKS_PUSHDECL pushdecl +++ +++/* Implements the lang_hooks.init_options routine for language Algol 68. This +++ initializes the global state for the frontend before calling the option +++ handlers. */ +++ +++static void +++a68_init_options (unsigned int argc ATTRIBUTE_UNUSED, +++ cl_decoded_option *decoded_options ATTRIBUTE_UNUSED) +++{ +++ /* Nothing to do here for now. */ +++} +++ +++#undef LANG_HOOKS_INIT_OPTIONS +++#define LANG_HOOKS_INIT_OPTIONS a68_init_options +++ +++ +++/* Handle -fcheck= option. */ +++ +++static void +++a68_handle_runtime_check_option (const char *arg) +++{ +++ int pos = 0; +++ +++ while (*arg) +++ { +++ /* We accept entries like -fcheck=nil,,bounds and -fcheck=,all. */ +++ while (*arg == ',') +++ arg++; +++ +++ while (arg[pos] && arg[pos] != ',') +++ pos++; +++ +++ /* Process an option flag in the -fcheck= specification. +++ +++ "all" means enable all run-time checks. +++ "none" means disable all run-time checks. +++ +++ Options are processed from left to right, with increase +++ precedende. */ +++ +++ if (strncmp (arg, "all", pos) == 0) +++ { +++ OPTION_NIL_CHECKING (&A68_JOB) = true; +++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; +++ } +++ else if (strncmp (arg, "none", pos) == 0) +++ { +++ OPTION_NIL_CHECKING (&A68_JOB) = false; +++ OPTION_BOUNDS_CHECKING (&A68_JOB) = false; +++ } +++ else if (strncmp (arg, "nil", pos) == 0) +++ OPTION_NIL_CHECKING (&A68_JOB) = true; +++ else if (strncmp (arg, "no-nil", pos) == 0) +++ OPTION_NIL_CHECKING (&A68_JOB) = false; +++ else if (strncmp (arg, "bounds", pos) == 0) +++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; +++ else if (strncmp (arg, "no-bounds", pos) == 0) +++ OPTION_BOUNDS_CHECKING (&A68_JOB) = false; +++ else +++ fatal_error (UNKNOWN_LOCATION, +++ "Argument to %<-fcheck%> is not valid: %s", arg); +++ +++ /* Process next flag. */ +++ arg += pos; +++ pos = 0; +++ } +++} +++ +++/* Handle Algol 68 specific options. Return false if we didn't do +++ anything. */ +++ +++static bool +++a68_handle_option (size_t scode, +++ const char *arg, +++ HOST_WIDE_INT value ATTRIBUTE_UNUSED, +++ int kind ATTRIBUTE_UNUSED, +++ location_t loc ATTRIBUTE_UNUSED, +++ const cl_option_handlers *handlers ATTRIBUTE_UNUSED) +++{ +++ opt_code code = (opt_code) scode; +++ +++ switch (code) +++ { +++ case OPT_std_algol68: +++ OPTION_STRICT (&A68_JOB) = 1; +++ break; +++ case OPT_fbrackets: +++ OPTION_BRACKETS (&A68_JOB) = flag_brackets; +++ break; +++ case OPT_fassert: +++ OPTION_ASSERT (&A68_JOB) = flag_assert; +++ break; +++ case OPT_fcheck_: +++ a68_handle_runtime_check_option (arg); +++ break; +++ case OPT_fstropping_: +++ if (value == 0) +++ OPTION_STROPPING (&A68_JOB) = UPPER_STROPPING; +++ else +++ OPTION_STROPPING (&A68_JOB) = SUPPER_STROPPING; +++ break; +++ case OPT_I: +++ vec_safe_push (A68_INCLUDE_PATHS, arg); +++ vec_safe_push (A68_IMPORT_PATHS, arg); +++ break; +++ case OPT_L: +++ vec_safe_push (A68_IMPORT_PATHS, arg); +++ break; +++ default: +++ break; +++ } +++ +++ return true; +++} +++ +++#undef LANG_HOOKS_HANDLE_OPTION +++#define LANG_HOOKS_HANDLE_OPTION a68_handle_option +++ +++/* LANG_HOOKS_INIT_OPTIONS_STRUCT is called so the front-end can +++ change some default values in the compiler's option structure. */ +++ +++static void +++a68_init_options_struct (struct gcc_options *opts) +++{ +++ /* Operations are always wrapping in algol68, even on signed +++ integer. */ +++ opts->x_flag_wrapv = 1; +++ /* Do not warn for voiding by default. */ +++ opts->x_warn_algol68_voiding = 0; +++ /* Do not warn for usage of Algol 68 extensions by default. */ +++ opts->x_warn_algol68_extensions = 0; +++ /* Do not warn for potential scope violations by default. */ +++ opts->x_warn_algol68_scope = 0; +++ /* Do not warn for hidden declarations by default. */ +++ opts->x_warn_algol68_hidden_declarations = 0; +++ /* Enable assertions by default. */ +++ OPTION_ASSERT (&A68_JOB) = 1; +++ /* Disable run-time nil checking by default. */ +++ OPTION_NIL_CHECKING (&A68_JOB) = 0; +++ /* Enable run-time bounds checking by default. */ +++ OPTION_BOUNDS_CHECKING (&A68_JOB) = 1; +++ opts->x_flag_assert = 1; +++ /* Allow GNU extensions by default. */ +++ OPTION_STRICT (&A68_JOB) = 0; +++ /* The default stropping regime is SUPPER. */ +++ OPTION_STROPPING (&A68_JOB) = SUPPER_STROPPING; +++} +++ +++#undef LANG_HOOKS_INIT_OPTIONS_STRUCT +++#define LANG_HOOKS_INIT_OPTIONS_STRUCT a68_init_options_struct +++ +++/* Deal with any options that imply the turning on/off of features. FILENAME +++ is the main input file passed on the command line. */ +++ +++static bool +++a68_post_options (const char **filename ATTRIBUTE_UNUSED) +++{ +++ /* -fbounds-check is equivalent to -fcheck=bounds */ +++ if (flag_bounds_check) +++ OPTION_BOUNDS_CHECKING (&A68_JOB) = true; +++ +++ return false; +++} +++ +++#undef LANG_HOOKS_POST_OPTIONS +++#define LANG_HOOKS_POST_OPTIONS a68_post_options +++ +++/* LANG_HOOKS_PARSE_FILE is called to parse the input files. +++ +++ The input file names are available in the global variables +++ in_fnames and num_in_fnames, and this function is required to +++ create a complete parse tree from them in a global var, then +++ return. */ +++ +++MOIF_T *moif; +++ +++static void +++a68_parse_file (void) +++{ +++ if (num_in_fnames != 1) +++ fatal_error (UNKNOWN_LOCATION, +++ "exactly one source file must be specified on the command line"); +++ +++ /* Run the Mailloux parser. */ +++ a68_parser (in_fnames[0]); +++ +++ if (ERROR_COUNT (&A68_JOB) > 0) +++ goto had_errors; +++ +++ /* Generate dumps if so requested. */ +++ if (flag_a68_dump_modes) +++ a68_dump_modes (TOP_MOID (&A68_JOB)); +++ if (flag_a68_dump_ast) +++ a68_dump_parse_tree (TOP_NODE (&A68_JOB)); +++ +++ /* Lower modes to GENERIC. */ +++ a68_lower_moids (TOP_MOID (&A68_JOB)); +++ /* Lower the particular program. */ +++ a68_lower_top_tree (TOP_NODE (&A68_JOB)); +++ +++ if (ERROR_COUNT (&A68_JOB) > 0) +++ goto had_errors; +++ +++ /* Emit exports information for any compiled module in this packet. Note +++ this must be done after the low pass. */ +++ a68_do_exports (TOP_NODE (&A68_JOB)); +++ +++ /* Process all file scopes in this compilation, and the external_scope, +++ through wrapup_global_declarations. */ +++ for (unsigned int i = 0; i < vec_safe_length (A68_GLOBAL_DECLARATIONS); i++) +++ { +++ tree decl = vec_safe_address (A68_GLOBAL_DECLARATIONS)[i]; +++ wrapup_global_declarations (&decl, 1); +++ } +++ +++ had_errors: +++ errorcount += ERROR_COUNT (&A68_JOB); +++} +++ +++#undef LANG_HOOKS_PARSE_FILE +++#define LANG_HOOKS_PARSE_FILE a68_parse_file +++ +++/* This hook is called for every GENERIC tree that gets gimplified. +++ Its purpose is to gimplify language specific trees. +++ +++ At the moment we are not supporting any Algol 68 specific tree, so +++ we just return FALSE. */ +++ +++static int +++a68_gimplify_expr (tree *expr_p ATTRIBUTE_UNUSED, +++ gimple_seq *pre_p ATTRIBUTE_UNUSED, +++ gimple_seq *post_p ATTRIBUTE_UNUSED) +++{ +++ return false; +++} +++ +++#undef LANG_HOOKS_GIMPLIFY_EXPR +++#define LANG_HOOKS_GIMPLIFY_EXPR a68_gimplify_expr +++ +++/* This function shall return the printable name of the language. */ +++ +++static const char * +++a68_printable_name (tree decl, int kind ATTRIBUTE_UNUSED) +++{ +++ tree decl_name = DECL_NAME (decl); +++ +++ if (decl_name == NULL_TREE) +++ return ""; +++ else +++ return IDENTIFIER_POINTER (decl_name); +++} +++ +++#undef LANG_HOOKS_DECL_PRINTABLE_NAME +++#define LANG_HOOKS_DECL_PRINTABLE_NAME a68_printable_name +++ +++ +++/* Return true if a warning should be given about option OPTION, which is for +++ the wrong language, false if it should be quietly ignored. */ +++ +++static bool +++a68_complain_wrong_lang_p (const struct cl_option *option ATTRIBUTE_UNUSED) +++{ +++ return false; +++} +++ +++#undef LANG_HOOKS_COMPLAIN_WRONG_LANG_P +++#define LANG_HOOKS_COMPLAIN_WRONG_LANG_P a68_complain_wrong_lang_p +++ +++/* Create an expression whose value is that of EXPR, +++ converted to type TYPE. The TREE_TYPE of the value +++ is always TYPE. This function implements all reasonable +++ conversions; callers should filter out those that are +++ not permitted by the language being compiled. +++ +++ Note that this function is not used outside the front-end. This front-end +++ doesn't currently use it at all. */ +++ +++tree convert (tree type ATTRIBUTE_UNUSED, +++ tree expr ATTRIBUTE_UNUSED) +++{ +++ gcc_unreachable (); +++} +++ +++/* Implements the lang_hooks.types_compatible_p routine for Algol 68. +++ Compares two types for equivalence in Algol 68. +++ This routine should only return 1 if it is sure, even though the frontend +++ should have already ensured that all types are compatible before handing +++ over the parsed ASTs to the code generator. */ +++ +++static int +++a68_types_compatible_p (tree x, tree y) +++{ +++ MOID_T *mode_x = a68_type_moid (x); +++ MOID_T *mode_y = a68_type_moid (y); +++ +++ if (mode_x != NO_MOID && mode_y != NO_MOID) +++ return a68_is_equal_modes (mode_x, mode_y, SAFE_DEFLEXING); +++ +++ return false; +++} +++ +++#undef LANG_HOOKS_TYPES_COMPATIBLE_P +++#define LANG_HOOKS_TYPES_COMPATIBLE_P a68_types_compatible_p +++ +++/* Get a value for the SARIF v2.1.0 "artifact.sourceLanguage" property. Algol +++ 68 is not yet listed in SARIF v2.1.0 Appendix J, but if/when it does, it +++ will likely use this string. */ +++ +++const char * +++a68_get_sarif_source_language (const char *) +++{ +++ return "algol68"; +++} +++ +++#undef LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE +++#define LANG_HOOKS_GET_SARIF_SOURCE_LANGUAGE a68_get_sarif_source_language +++ +++/* Expands all LANG_HOOKS_x o GCC. */ +++struct lang_hooks lang_hooks = LANG_HOOKS_INITIALIZER; +++ +++#include "gt-algol68-a68-lang.h" +++#include "gtype-algol68.h" ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-bits.cc ++@@ -0,0 +1,297 @@ +++/* Lowering routines for all things related to BITS values. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with the yielind of SKIP for the given BITS mode. */ +++ +++tree +++a68_get_bits_skip_tree (MOID_T *m) +++{ +++ tree type; +++ +++ if (m == M_BITS) +++ type = a68_bits_type; +++ else if (m == M_LONG_BITS) +++ type = a68_long_bits_type; +++ else if (m == M_LONG_LONG_BITS) +++ type = a68_long_long_bits_type; +++ else if (m == M_SHORT_BITS) +++ type = a68_short_bits_type; +++ else if (m == M_SHORT_SHORT_BITS) +++ type = a68_short_short_bits_type; +++ else +++ gcc_unreachable (); +++ +++ return build_int_cst (type, 0); +++} +++ +++/* Given a BITS type, compute the number of bits that fit in a value of that +++ type. The result is an INT. */ +++ +++tree +++a68_bits_width (tree type) +++{ +++ return fold_convert (a68_int_type, TYPE_SIZE (type)); +++} +++ +++/* Given a BITS type, compute the maximum value that can be expressed with that +++ type. */ +++ +++tree +++a68_bits_maxbits (tree type) +++{ +++ return fold_convert (type, TYPE_MAX_VALUE (type)); +++} +++ +++/* Given a SIZETY INT value VAL, compute and return a SIZETY BITS reflecting +++ its constituent bits. +++ +++ In strict Algol 68 the BIN of a negative value is BITS (SKIP). +++ +++ In GNU 68 the BIN of a negative value is the constituent bits of the two's +++ complement of the value. */ +++ +++tree +++a68_bits_bin (MOID_T *m, tree val) +++{ +++ tree type = CTYPE (m); +++ +++ if (OPTION_STRICT (&A68_JOB)) +++ return a68_get_bits_skip_tree (m); +++ else +++ return fold_convert (type, val); +++} +++ +++/* Given a SIZETY BITS value BITS, compute and return the corresponding SIZETY +++ INT. +++ +++ In strict Algol 68 the ABS of a BITS value reflecting a bit pattern that +++ would correspond a negative integral value is INT (SKIP). +++ +++ In GNU 68 the ABS of a BITS value reflecting a bit pattern that would +++ correspond a negative integral value is that negative integral value. */ +++ +++tree +++a68_bits_abs (MOID_T *m, tree bits) +++{ +++ tree type = CTYPE (m); +++ +++ if (OPTION_STRICT (&A68_JOB)) +++ { +++ tree integral_val = save_expr (fold_convert (type, bits)); +++ return fold_build3 (COND_EXPR, +++ type, +++ fold_build2 (LT_EXPR, type, integral_val, +++ build_int_cst (type, 0)), +++ a68_get_int_skip_tree (m), +++ integral_val); +++ } +++ else +++ return fold_convert (type, bits); +++} +++ +++/* Given a SIZETY BITS value BITS, shorten it into a SIZETY BITS whose tree +++ type is TYPE. */ +++ +++tree +++a68_bits_shorten (tree type, tree bits) +++{ +++ /* This will truncate at the left, which is what is intended. */ +++ return fold_convert (type, bits); +++} +++ +++/* Given a SIZETY BITS value BITS, length it into a SIZETY BITS whose tree type +++ is TYPE. */ +++ +++tree +++a68_bits_leng (tree type, tree bits) +++{ +++ /* This will add zeroes to the left, which is what is intended. */ +++ return fold_convert (type, bits); +++} +++ +++/* Given a SIZETY BITS value BITS, compute and return a new SIZETY BITS whose +++ bits are the logical negation of the bits of BITS. */ +++ +++tree +++a68_bits_not (tree bits) +++{ +++ return fold_build1 (BIT_NOT_EXPR, TREE_TYPE (bits), bits); +++} +++ +++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new +++ SIZETY BITS whose bits are the `and' of the bits of BITS1 and +++ BITS2. */ +++ +++tree +++a68_bits_and (tree bits1, tree bits2) +++{ +++ return fold_build2 (BIT_AND_EXPR, TREE_TYPE (bits1), bits1, bits2); +++} +++ +++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new +++ SIZETY BITS whose bits are the inclusive-or of the bits of BITS1 and +++ BITS2. */ +++ +++tree +++a68_bits_ior (tree bits1, tree bits2) +++{ +++ return fold_build2 (BIT_IOR_EXPR, TREE_TYPE (bits1), bits1, bits2); +++} +++ +++/* Given two SIZETY BITS values BITS1 and BITS2, compute and return a new +++ SIZETY BITS whose bits are the exclusive-or of the bits of BITS1 and +++ BITS2. */ +++ +++tree +++a68_bits_xor (tree bits1, tree bits2) +++{ +++ return fold_build2 (BIT_XOR_EXPR, TREE_TYPE (bits1), bits1, bits2); +++} +++ +++/* Given a position POS of mode INT and a BITS of mode SIZETY BITS, return a +++ BOOL reflecting the state of the bit occupying the position POS in BITS. +++ +++ If POS is out of range a run-time error is emitted. */ +++ +++tree +++a68_bits_elem (NODE_T *p, tree pos, tree bits) +++{ +++ pos = save_expr (pos); +++ tree one = build_int_cst (TREE_TYPE (bits), 1); +++ +++ tree shift = fold_build2 (MINUS_EXPR, bitsizetype, +++ TYPE_SIZE (TREE_TYPE (bits)), +++ fold_convert (bitsizetype, pos)); +++ tree elem = fold_build2 (EQ_EXPR, +++ a68_bool_type, +++ fold_build2 (BIT_AND_EXPR, +++ TREE_TYPE (bits), +++ fold_build2 (RSHIFT_EXPR, +++ TREE_TYPE (bits), +++ bits, shift), +++ one), +++ one); +++ +++ /* Do bounds checking if requested. */ +++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) +++ { +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_BITSBOUNDSERROR, +++ void_type_node, 3, +++ filename, +++ build_int_cst (unsigned_type_node, lineno), +++ fold_convert (ssizetype, pos)); +++ tree check = fold_build2 (TRUTH_AND_EXPR, integer_type_node, +++ fold_build2 (GT_EXPR, integer_type_node, +++ pos, fold_convert (TREE_TYPE (pos), integer_zero_node)), +++ fold_build2 (LE_EXPR, integer_type_node, +++ fold_convert (bitsizetype, pos), +++ TYPE_SIZE (TREE_TYPE (bits)))); +++ +++ check = fold_build2_loc (a68_get_node_location (p), +++ TRUTH_ORIF_EXPR, +++ ssizetype, +++ check, +++ fold_build2 (COMPOUND_EXPR, a68_bool_type, +++ call, boolean_false_node)); +++ elem = fold_build2 (COMPOUND_EXPR, a68_bool_type, +++ check, elem); +++ } +++ +++ return elem; +++} +++ +++/* Given two SIZETY BITS values BITS1 and BITS2, return a BOOL value indicating +++ whether all the bits set in BITS1 are also set in BITS2. */ +++ +++tree +++a68_bits_subset (tree bits1, tree bits2) +++{ +++ /* We compute this operation with `A | B == B' as specified by the Report */ +++ bits2 = save_expr (bits2); +++ return fold_build2 (EQ_EXPR, a68_bool_type, +++ fold_build2 (BIT_IOR_EXPR, TREE_TYPE (bits1), bits1, bits2), +++ bits2); +++} +++ +++/* Rotate the bits in BITS SHIFT bits to the left if SHIFT is positive, or ABS +++ (SHIFT) bits to the right if SHIFT is negative. +++ +++ A run-time error is raised if the count overflows the BITS value. */ +++ +++tree +++a68_bits_shift (tree shift, tree bits) +++{ +++ shift = save_expr (shift); +++ bits = save_expr (bits); +++ return fold_build3 (COND_EXPR, +++ TREE_TYPE (bits), +++ fold_build2 (GE_EXPR, TREE_TYPE (shift), +++ shift, build_int_cst (TREE_TYPE (shift), 0)), +++ fold_build2 (LSHIFT_EXPR, TREE_TYPE (bits), +++ bits, shift), +++ fold_build2 (RSHIFT_EXPR, TREE_TYPE (bits), +++ bits, +++ fold_build1 (ABS_EXPR, TREE_TYPE (shift), shift))); +++} +++ +++/* Given two bits values, build an expression that calculates whether A = B. */ +++ +++tree +++a68_bits_eq (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two bits values, build an expression that calculates whether A /= +++ B. */ +++ +++tree +++a68_bits_ne (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-bools.cc ++@@ -0,0 +1,77 @@ +++/* Lowering routines for all things related to BOOL values. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with the yielind of SKIP of a BOOL mode. */ +++ +++tree +++a68_get_bool_skip_tree (void) +++{ +++ return build_int_cst (a68_bool_type, 0); +++} +++ +++/* The absolute value of a BOOL is a non-zero INT for TRUE and zero for +++ FALSE. */ +++ +++tree +++a68_bool_abs (tree val) +++{ +++ return fold_convert (a68_int_type, val); +++} +++ +++/* Given two boolean values, build an expression that calculates whether A = B. */ +++ +++tree +++a68_bool_eq (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two boolean values, build an expression that calculates whether A /= +++ B. */ +++ +++tree +++a68_bool_ne (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-builtins.cc ++@@ -0,0 +1,533 @@ +++/* GCC built-ins support for Algol 68. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Define a built-in function. */ +++ +++static void +++local_define_builtin (const char *name, tree type, enum built_in_function code, +++ const char *library_name, int ecf_flags) +++{ +++ tree decl; +++ +++ decl = add_builtin_function (name, type, code, BUILT_IN_NORMAL, +++ library_name, NULL_TREE); +++ set_call_expr_flags (decl, ecf_flags); +++ set_builtin_decl (code, decl, true); +++} +++ +++/* Install the GCC built-ins so the front-end can use them. */ +++ +++void +++a68_install_builtins (void) +++{ +++ if (!builtin_decl_explicit_p (BUILT_IN_IROUNDF)) +++ { +++ tree ftype = build_function_type_list (integer_type_node, +++ float_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_iroundf", ftype, BUILT_IN_IROUNDF, +++ "iroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LROUNDF)) +++ { +++ tree ftype = build_function_type_list (long_integer_type_node, +++ float_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_lroundf", ftype, BUILT_IN_LROUNDF, +++ "lroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUNDF)) +++ { +++ tree ftype = build_function_type_list (long_long_integer_type_node, +++ float_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_llroundf", ftype, BUILT_IN_LLROUNDF, +++ "llroundf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_IROUND)) +++ { +++ tree ftype = build_function_type_list (integer_type_node, +++ double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_iround", ftype, BUILT_IN_IROUND, +++ "iround", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LROUND)) +++ { +++ tree ftype = build_function_type_list (long_integer_type_node, +++ double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_lround", ftype, BUILT_IN_LROUND, +++ "lround", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUND)) +++ { +++ tree ftype = build_function_type_list (long_long_integer_type_node, +++ double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_llround", ftype, BUILT_IN_LLROUND, +++ "llround", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_IROUNDL)) +++ { +++ tree ftype = build_function_type_list (integer_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_iroundl", ftype, BUILT_IN_IROUNDL, +++ "iroundl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LROUNDL)) +++ { +++ tree ftype = build_function_type_list (long_integer_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_lroundl", ftype, BUILT_IN_LROUNDL, +++ "lroundl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LLROUNDL)) +++ { +++ tree ftype = build_function_type_list (long_long_integer_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_llroundl", ftype, BUILT_IN_LLROUNDL, +++ "llroundl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOORF)) +++ { +++ tree ftype = build_function_type_list (integer_type_node, +++ float_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_ifloorf", ftype, BUILT_IN_IFLOORF, +++ "ifloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOORF)) +++ { +++ tree ftype = build_function_type_list (long_integer_type_node, +++ float_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_lfloorf", ftype, BUILT_IN_LFLOORF, +++ "lfloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOORF)) +++ { +++ tree ftype = build_function_type_list (long_long_integer_type_node, +++ float_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_llfloorf", ftype, BUILT_IN_LLFLOORF, +++ "llfloorf", ECF_CONST | ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOOR)) +++ { +++ tree ftype = build_function_type_list (integer_type_node, +++ double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_ifloor", ftype, BUILT_IN_IFLOOR, +++ "ifloor", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOOR)) +++ { +++ tree ftype = build_function_type_list (long_integer_type_node, +++ double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_lfloor", ftype, BUILT_IN_LFLOOR, +++ "lfloor", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOOR)) +++ { +++ tree ftype = build_function_type_list (long_long_integer_type_node, +++ double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_llfloor", ftype, BUILT_IN_LLFLOOR, +++ "llfloor", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_IFLOORL)) +++ { +++ tree ftype = build_function_type_list (integer_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_ifloorl", ftype, BUILT_IN_IFLOORL, +++ "ifloorl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LFLOORL)) +++ { +++ tree ftype = build_function_type_list (long_integer_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_lfloorl", ftype, BUILT_IN_LFLOORL, +++ "lfloorl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LLFLOORL)) +++ { +++ tree ftype = build_function_type_list (long_long_integer_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_llfloorl", ftype, BUILT_IN_LLFLOORL, +++ "llfloorl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_POWF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, +++ float_type_node, float_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_powf", ftype, BUILT_IN_POWF, +++ "powf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_POWIF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, +++ float_type_node, integer_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_powif", ftype, BUILT_IN_POWIF, +++ "powif", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_POW)) +++ { +++ tree ftype = build_function_type_list (double_type_node, +++ double_type_node, double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_pow", ftype, BUILT_IN_POW, +++ "pow", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_POWI)) +++ { +++ tree ftype = build_function_type_list (double_type_node, +++ double_type_node, integer_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_powi", ftype, BUILT_IN_POWI, +++ "powi", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_POWL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_powl", ftype, BUILT_IN_POWL, +++ "powl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_POWIL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, integer_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_powil", ftype, BUILT_IN_POWIL, +++ "powil", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_CALLOC)) +++ { +++ tree ftype = build_function_type_list (ptr_type_node, +++ size_type_node, size_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_calloc", ftype, BUILT_IN_CALLOC, +++ "calloc", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_MEMCPY)) +++ { +++ tree ftype = build_function_type_list (ptr_type_node, +++ ptr_type_node, const_ptr_type_node, size_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_memcpy", ftype, BUILT_IN_MEMSET, +++ "memcpy", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_MEMSET)) +++ { +++ tree ftype = build_function_type_list (ptr_type_node, +++ ptr_type_node, integer_type_node, size_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_memset", ftype, BUILT_IN_MEMSET, +++ "memset", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_SQRTF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_sqrtf", ftype, BUILT_IN_SQRTF, +++ "sqrtf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_SQRT)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_sqrt", ftype, BUILT_IN_SQRT, +++ "sqrt", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_SQRTL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_sqrtl", ftype, BUILT_IN_SQRTL, +++ "sqrtl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_TANF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_tanf", ftype, BUILT_IN_TANF, +++ "tanf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_TAN)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_tan", ftype, BUILT_IN_TAN, +++ "tan", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_TANL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_tanl", ftype, BUILT_IN_TANL, +++ "tanl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_SINF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_sinf", ftype, BUILT_IN_SINF, +++ "sinf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_SIN)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_sin", ftype, BUILT_IN_SIN, +++ "sin", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_SINL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_sinl", ftype, BUILT_IN_SINL, +++ "sinl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_COSF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_cosf", ftype, BUILT_IN_COSF, +++ "cosf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_COS)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_cos", ftype, BUILT_IN_COS, +++ "cos", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_COSL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_cosl", ftype, BUILT_IN_COSL, +++ "cosl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ACOSF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_acosf", ftype, BUILT_IN_ACOSF, +++ "acosf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ACOS)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_acos", ftype, BUILT_IN_ACOS, +++ "acos", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ACOSL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_acosl", ftype, BUILT_IN_ACOSL, +++ "acosl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ASINF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_asinf", ftype, BUILT_IN_ASINF, +++ "asinf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ASIN)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_asin", ftype, BUILT_IN_ASIN, +++ "asin", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ASINL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_asinl", ftype, BUILT_IN_ASINL, +++ "asinl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ATANF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_atanf", ftype, BUILT_IN_ATANF, +++ "atanf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ATAN)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_atan", ftype, BUILT_IN_ATAN, +++ "atan", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_ATANL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_atanl", ftype, BUILT_IN_ATANL, +++ "atanl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LOGF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_logf", ftype, BUILT_IN_LOGF, +++ "logf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LOG)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_log", ftype, BUILT_IN_LOG, +++ "log", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LOGL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_logl", ftype, BUILT_IN_LOGL, +++ "logl", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10F)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_log10f", ftype, BUILT_IN_LOG10F, +++ "log10f", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_log10", ftype, BUILT_IN_LOG10, +++ "log10", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_LOG10L)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_log10l", ftype, BUILT_IN_LOG10L, +++ "log10l", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_EXPF)) +++ { +++ tree ftype = build_function_type_list (float_type_node, float_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_expf", ftype, BUILT_IN_EXPF, +++ "expf", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_EXP)) +++ { +++ tree ftype = build_function_type_list (double_type_node, double_type_node, NULL_TREE); +++ local_define_builtin ("__builtin_exp", ftype, BUILT_IN_EXP, +++ "exp", ECF_NOTHROW | ECF_LEAF); +++ } +++ +++ if (!builtin_decl_explicit_p (BUILT_IN_EXPL)) +++ { +++ tree ftype = build_function_type_list (long_double_type_node, +++ long_double_type_node, +++ NULL_TREE); +++ local_define_builtin ("__builtin_expl", ftype, BUILT_IN_EXPL, +++ "expl", ECF_NOTHROW | ECF_LEAF); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-chars.cc ++@@ -0,0 +1,170 @@ +++/* Lowering routines for all things related to STRINGs. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with the yielind of SKIP of a CHAR mode. */ +++ +++tree +++a68_get_char_skip_tree (void) +++{ +++ return build_int_cst (a68_char_type, ' '); +++} +++ +++/* Return the maximum valid character code that can be stored in a CHAR. */ +++tree +++a68_char_max (void) +++{ +++ /* 0x10FFFF is the maximum valid code point in Unicode. */ +++ return build_int_cst (a68_char_type, 0x10FFFF); +++} +++ +++/* Given an integral value, if it denotes a char code build the corresponding +++ CHAR. Otherwise raise a run-time error. */ +++ +++tree +++a68_char_repr (NODE_T *p, tree val) +++{ +++ /* UCS-4 (UTF-32) encodes the Unicode code points using the identity +++ function. Valid code points are in the ranges [U+0000,U+D7FF] and +++ [U+E000,U+10FFFF]. */ +++ +++ tree c = save_expr (val); +++ tree val_type = TREE_TYPE (val); +++ +++ /* (c >= 0 && c < 0xd800) */ +++ tree range1 = fold_build2 (TRUTH_AND_EXPR, integer_type_node, +++ fold_build2 (GE_EXPR, integer_type_node, +++ c, fold_convert (val_type, integer_zero_node)), +++ fold_build2 (LT_EXPR, integer_type_node, +++ c, build_int_cst (val_type, 0xd800))); +++ /* (c >= 0xe000 && c < 0x110000) */ +++ tree range2 = fold_build2 (TRUTH_AND_EXPR, integer_type_node, +++ fold_build2 (GE_EXPR, integer_type_node, +++ c, build_int_cst (val_type, 0xe000)), +++ fold_build2 (LT_EXPR, integer_type_node, +++ c, build_int_cst (val_type, 0x110000))); +++ tree notvalid = fold_build1 (TRUTH_NOT_EXPR, +++ integer_type_node, +++ fold_build2 (TRUTH_OR_EXPR, integer_type_node, +++ range1, range2)); +++ +++ /* Call to the runtime run-time error handler. */ +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_INVALIDCHARERROR, +++ void_type_node, 3, +++ filename, +++ build_int_cst (unsigned_type_node, lineno), +++ fold_convert (a68_int_type, c)); +++ +++ /* Return the REPR of the given integer value, or raise run-time error. */ +++ return fold_build2 (COMPOUND_EXPR, a68_char_type, +++ fold_build3 (COND_EXPR, integer_type_node, +++ notvalid, +++ call, integer_zero_node), +++ fold_convert (a68_char_type, c)); +++} +++ +++/* the ABS of a CHAR is an INT containing an unique value for each permissable +++ char value. */ +++ +++tree +++a68_char_abs (tree val) +++{ +++ return fold_convert (a68_int_type, val); +++} +++ +++/* Given two characters, build an expression that calculates whether A = B. */ +++ +++tree +++a68_char_eq (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two characters, build an expression that calculates whether A /= +++ B. */ +++ +++tree +++a68_char_ne (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two characters, build an expression that calculates +++ whether A < B. */ +++ +++tree +++a68_char_lt (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two characters, build an expression that calculates +++ whether A <= B. */ +++ +++tree +++a68_char_le (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two characters, build an expression that calculates +++ whether A > B. */ +++ +++tree +++a68_char_gt (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two characters, build an expression that calculates +++ whether A >= B. */ +++ +++tree +++a68_char_ge (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-clauses.cc ++@@ -0,0 +1,1480 @@ +++/* Lower clauses to GENERIC. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Given a serial_clause node P, return whether it performs dynamic stack +++ allocations. +++ +++ This function allocates for the fact that the bottom-up parser generates +++ successively nested serial clauses like +++ +++ SERIAL_CLAUSE +++ SERIAL_CLAUSE +++ ... +++ +++ the outer of which corresponds to a single serial clause in the source code, +++ but it is the inner ones annotated by the dsa pass. */ +++ +++static bool +++serial_clause_dsa (NODE_T *p) +++{ +++ NODE_T *s = NEXT (SUB (p)); +++ +++ for (s = p; SUB (s) && IS (s, SERIAL_CLAUSE); s = SUB (s)) +++ { +++ if (DYNAMIC_STACK_ALLOCS (s)) +++ return true; +++ } +++ +++ return false; +++} +++ +++/* Lower one or more labels. +++ +++ label : defining identifier, colon symbol; +++ label, defining identifier, colon symbol; +++ +++ A label lowers into a LABEL_EXPR and the declaration of a LABEL_DECL in the +++ current block and bind. Lists of labels get returned in nested compound +++ expressions. */ +++ +++tree +++a68_lower_label (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree expr = NULL_TREE; +++ +++ if (IS (SUB (p), LABEL)) +++ expr = a68_lower_tree (SUB (p), ctx); +++ +++ NODE_T *defining_identifier; +++ +++ if (IS (SUB (p), DEFINING_IDENTIFIER)) +++ defining_identifier = SUB (p); +++ else +++ { +++ gcc_assert (IS (NEXT (SUB (p)), DEFINING_IDENTIFIER)); +++ defining_identifier = NEXT (SUB (p)); +++ } +++ +++ /* Create LABEL_DECL if necessary. */ +++ tree label_decl = TAX_TREE_DECL (TAX (defining_identifier)); +++ if (label_decl == NULL_TREE) +++ { +++ label_decl = build_decl (a68_get_node_location (defining_identifier), +++ LABEL_DECL, +++ a68_get_mangled_identifier (NSYMBOL (defining_identifier)), +++ void_type_node); +++ TAX_TREE_DECL (TAX (defining_identifier)) = label_decl; +++ } +++ +++ a68_add_decl (label_decl); +++ +++ /* Return the accummulated LABEL_EXPRs. */ +++ tree label_expr = build1 (LABEL_EXPR, void_type_node, label_decl); +++ if (expr) +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ void_type_node, +++ expr, label_expr); +++ else +++ return label_expr; +++} +++ +++/* Lower a labeled unit. +++ +++ labeled unit : label, unit. +++ +++ Lower the label, then the unit. Return them in a compound expression. */ +++ +++tree +++a68_lower_labeled_unit (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree label_expr = a68_lower_tree (SUB (p), ctx); +++ tree unit_expr = a68_lower_tree (NEXT (SUB (p)), ctx); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (unit_expr), +++ label_expr, unit_expr); +++} +++ +++/* Lower a completer. +++ +++ exit_symbol +++ +++ This handler replaces the last expression in stmt_list with a statement +++ assigning it to the clause result of the current serial clause, then jump to +++ the exit label of the current serial clause. Note that a completer is a +++ separator so stmt_list contains at least one expression at this point. Note +++ that a completer can only appear inside a serial clause. +++ +++ This function always returns NULL_TREE, so the traversing code shall always +++ be careful to travese on these nodes explicitly and ignore the returned +++ value. */ +++ +++tree +++a68_lower_completer (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ a68_add_completer (); +++ return NULL_TREE; +++} +++ +++/* Lower an initialiser series. +++ +++ Parse tree: +++ +++ initialiser series : serial clause, semi symbol, declaration list; +++ initialiser series, declaration list; +++ initialiser series, semi symbol, unit; +++ initialiser series, semi symbol, labeled unit; +++ initialiser series, semi symbol, declaration list. +++ +++ GENERIC: +++ +++ Traverse subtree adding units and labels to STMT_LIST, and declarations to +++ BLOCK. +++ +++ This function always returns NULL_TREE, so the traversing code shall always +++ be careful to travese on these nodes explicitly and ignore the returned +++ value. */ +++ +++tree +++a68_lower_initialiser_series (NODE_T *p, LOW_CTX_T ctx) +++{ +++ for (NODE_T *s = SUB (p); s != NO_NODE; FORWARD (s)) +++ { +++ if (!IS (s, SEMI_SYMBOL)) +++ a68_add_stmt (a68_lower_tree (s, ctx)); +++ } +++ return NULL_TREE; +++} +++ +++/* Lower a serial clause. +++ +++ serial clause : labeled unit; +++ unit; +++ serial clause, semi symbol, unit; +++ serial clause, exit symbol, labeled unit; +++ serial clause, semi_symbol, declaration list; +++ initialiser series, semi symbol, unit; +++ initialiser series, semi symbol, labeled unit. +++ +++ Ranges: +++ +++ serial-clause +++ ------------- R1 +++ +++ See the function body to see the lowering actions. +++ +++ This function always returns NULL_TREE, so the traversing code shall always +++ be careful to travese on these nodes explicitly and ignore the returned +++ value. */ +++ +++tree +++a68_lower_serial_clause (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (IS (SUB (p), SERIAL_CLAUSE)) +++ { +++ /* Traverse down for side-effects. */ +++ (void) a68_lower_tree (SUB (p), ctx); +++ +++ if (IS (NEXT (SUB (p)), EXIT_SYMBOL)) +++ { +++ /* Traverse the completer for side-effects. This turns the last +++ expression in the current statements list into an assignment. */ +++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); +++ /* Now append the result of the labeled unit to the current +++ statements list. */ +++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++ } +++ else +++ { +++ /* Append the result of either the unit or the declarations list in +++ the current statements list. */ +++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++ } +++ } +++ else if (IS (SUB (p), INITIALISER_SERIES)) +++ { +++ /* Traverse down for side-effects. */ +++ (void) a68_lower_tree (SUB (p), ctx); +++ +++ /* Append the result of either the unit or the declarations list in the +++ current statements list. */ +++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++ } +++ else +++ { +++ /* Append the result of either the unit or labeled unit in the current +++ statements list. */ +++ a68_add_stmt (a68_lower_tree (SUB (p), ctx)); +++ } +++ +++ return NULL_TREE; +++} +++ +++/* Lower a loop clause. +++ +++ loop clause : for part, from part, by part, to part, while part, alt do part; +++ for part, from part, by part, while part, alt do part; +++ for part, from part, while part, alt do part; +++ for part, by part, to part, while part, alt do part; +++ for part, by part, to part, while part, alt do part; +++ for part, by part, while part, alt do part; +++ for part, while part, alt do part; +++ for part, from part, by part, to part, alt do part; +++ for part, from part, by part, alt do part; +++ for part, from part, alt do part; +++ for part, by part, to part, alt do part; +++ for part, by part, alt do part; +++ for part, to part, alt do part, +++ for part, alt do part; +++ from part, by part, to part, while part, alt do part; +++ from part, by part, while aprt, alt do part; +++ from part, to part, while aprt, alt do part; +++ from part, while part, alt do part; +++ from part, by part, to part, alt do part; +++ from part, by part, alt do part; +++ from part, to part, alt do part; +++ from part, alt do part; +++ by part, to part, while part, alt do part; +++ by part, while part, alt do part; +++ by part, to part, alt do part; +++ by part, alt do part; +++ to part, while part, alt do part; +++ to part, alt do part; +++ while part, alt do part; +++ do part. +++*/ +++ +++tree +++a68_lower_loop_clause (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ NODE_T *s = SUB (p); +++ bool while_part = false; +++ bool has_iterator = false; +++ tree iterator = NULL_TREE; +++ tree while_condition = NULL_TREE; +++ tree do_part = NULL_TREE; +++ tree from_part = NULL_TREE; +++ tree by_part = NULL_TREE; +++ tree to_part = NULL_TREE; +++ tree overflow = NULL_TREE; +++ NODE_T *iterator_defining_identifier = NO_NODE; +++ +++ if (IS (s, FOR_PART)) +++ { +++ /* Get the defining identifier. */ +++ iterator_defining_identifier = NEXT (SUB (s)); +++ has_iterator = true; +++ FORWARD (s); +++ } +++ +++ if (IS (s, FROM_PART)) +++ { +++ /* Lower the unit. */ +++ from_part = a68_lower_tree (NEXT (SUB (s)), ctx); +++ has_iterator = true; +++ FORWARD (s); +++ } +++ +++ if (IS (s, BY_PART)) +++ { +++ /* Lower the unit. */ +++ by_part = a68_lower_tree (NEXT (SUB (s)), ctx); +++ has_iterator = true; +++ FORWARD (s); +++ } +++ +++ if (IS (s, TO_PART)) +++ { +++ /* Lower the unit. */ +++ to_part = a68_lower_tree (NEXT (SUB (s)), ctx); +++ has_iterator = true; +++ FORWARD (s); +++ } +++ +++ if (has_iterator) +++ { +++ /* Introduce a range that spans until the end of the loop clause. */ +++ a68_push_range (M_VOID); +++ +++ /* Compute some defaults for not specified loop parts. Note that to_part +++ defaults to max_int or min_int depending on the signedness of +++ by_part. */ +++ if (from_part == NULL_TREE) +++ from_part = integer_one_node; +++ if (by_part == NULL_TREE) +++ by_part = integer_one_node; +++ if (to_part == NULL_TREE) +++ { +++ to_part = fold_build3 (COND_EXPR, +++ a68_bool_type, +++ fold_build2 (LT_EXPR, a68_int_type, by_part, +++ build_int_cst (a68_int_type, 0)), +++ a68_int_minval (a68_int_type), +++ a68_int_maxval (a68_int_type)); +++ } +++ +++ /* If the user has specified an explicit iterator in the form of a +++ defining-identifier in a for-part, use it as the name in the iterator +++ declaration and install the resulting declaration in the taxes table +++ in order for applied identifiers in the rest of the loop to find it. +++ Otherwise, the iterator is not directly accessible by the +++ programmer. */ +++ const char *iterator_name = (iterator_defining_identifier == NO_NODE +++ ? "iterator%" +++ : NSYMBOL (iterator_defining_identifier)); +++ iterator = a68_lower_tmpvar (iterator_name, a68_int_type, from_part); +++ if (iterator_defining_identifier != NO_NODE) +++ TAX_TREE_DECL (TAX (iterator_defining_identifier)) = iterator; +++ +++ /* The from_part and to_part expressions shall be evaluated once and once +++ only. The expression for from_part is evaluated only once in the +++ initialization expression for iterator% above, but we need to put +++ to_part in a temporary since it is used in the loop body. */ +++ to_part = a68_lower_tmpvar ("to_part%", TREE_TYPE (to_part), to_part); +++ +++ /* We need to detect overflow/underflow of the iterator. */ +++ overflow = a68_lower_tmpvar ("overflow%", boolean_type_node, +++ boolean_false_node); +++ } +++ +++ if (IS (s, WHILE_PART)) +++ { +++ while_part = true; +++ /* Introduce a range that spans until the end of the loop clause. */ +++ a68_push_range (M_VOID); +++ /* Process the enquiry clause, which yields a BOOL. */ +++ a68_push_stmt_list (M_BOOL); +++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); +++ while_condition = a68_pop_stmt_list (); +++ FORWARD (s); +++ } +++ +++ /* DO part. */ +++ gcc_assert (IS (s, ALT_DO_PART) || IS (s, DO_PART)); +++ +++ /* Build the loop's body. */ +++ a68_push_range (NULL); +++ { +++ /* First lower the loop exit condition. */ +++ if (has_iterator || while_part) +++ { +++ tree exit_condition = NULL_TREE; +++ /* IF overflow OREL (by_part < 0 THEN iterator < to_part ELSE iterator > to_part) FI */ +++ if (has_iterator) +++ exit_condition = fold_build2 (TRUTH_ORIF_EXPR, boolean_type_node, +++ overflow, +++ fold_build3 (COND_EXPR, +++ a68_bool_type, +++ fold_build2 (LT_EXPR, a68_int_type, by_part, +++ build_int_cst (a68_int_type, 0)), +++ fold_build2 (LT_EXPR, a68_int_type, +++ iterator, to_part), +++ fold_build2 (GT_EXPR, a68_int_type, +++ iterator, to_part))); +++ /* NOT while_condition */ +++ if (while_part) +++ { +++ tree while_exit_condition = fold_build1 (TRUTH_NOT_EXPR, +++ a68_bool_type, +++ while_condition); +++ if (has_iterator) +++ exit_condition = fold_build2 (TRUTH_ORIF_EXPR, a68_bool_type, +++ exit_condition, while_exit_condition); +++ else +++ exit_condition = while_exit_condition; +++ } +++ +++ if (exit_condition != NULL_TREE) +++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, exit_condition)); +++ } +++ +++ /* Serial clauses in DO .. OD do not yield any value. */ +++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); +++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; +++ a68_push_serial_clause_range (M_VOID, dsa && local); +++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); +++ do_part = a68_pop_serial_clause_range (); +++ a68_add_stmt (do_part); +++ +++ if (has_iterator) +++ { +++ /* Increment the iterator by BY_PART. Detect overflow. +++ Given a + b = sum, overflows = ((~((a) ^ (b)) & ((a) ^ (sum))) < 0) +++ See OVERFLOW_SUM_SIGN in double-int.cc for an explanation +++ of this formula. +++ */ +++ tree type = TREE_TYPE (iterator); +++ tree a = iterator; +++ tree b = save_expr (by_part); +++ tree sum = fold_build2 (PLUS_EXPR, type, a, b); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, boolean_type_node, +++ overflow, +++ fold_build2 (LT_EXPR, boolean_type_node, +++ fold_build2 (BIT_AND_EXPR, type, +++ fold_build1 (BIT_NOT_EXPR, type, +++ fold_build2 (BIT_XOR_EXPR, type, +++ a, b)), +++ fold_build2 (BIT_XOR_EXPR, type, +++ a, sum)), +++ build_int_cst (a68_int_type, 0)))); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, type, iterator, sum)); +++ } +++ } +++ tree loop_body = a68_pop_range (); +++ +++ /* Finally build the LOOP_EXPR and exit the introduced ranges. */ +++ tree loop_clause = fold_build1_loc (a68_get_node_location (p), +++ LOOP_EXPR, a68_void_type, loop_body); +++ if (while_part) +++ { +++ a68_add_stmt (loop_clause); +++ loop_clause = a68_pop_range (); +++ } +++ if (has_iterator) +++ { +++ a68_add_stmt (loop_clause); +++ loop_clause = a68_pop_range (); +++ } +++ +++ return loop_clause; +++} +++ +++/* Lower a conformity clause. +++ +++ conformity clause : case part, conformity in part, out part, esac symbol; +++ case part, conformity in part, esac symbol; +++ case part, conformity in part, conformity ouse part; +++ open part, conformity choice, choice, close symbol; +++ open part, conformity choice, close symbol; +++ open part, conformity choice, brief conformity ouse part. +++ +++ conformity choice : then bar symbol, specified unit list; +++ then bar symbol, specified unit. +++ +++ specified unit list : specified unit list, comma symbol, specified unit; +++ specified unit list, specified unit. +++ +++ specified unit : specifier, colon symbol, unit. +++ +++ specifier : open symbol, declarer, identifier, close symbol; +++ open symbol, declarer, close symbol; +++ open symbol, void symbol, close symbol. +++*/ +++ +++static void +++lower_unite_case_unit (NODE_T *p, +++ tree enquiry, MOID_T *enquiry_mode, +++ tree result, tree exit_label, LOW_CTX_T ctx) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, SPECIFIER)) +++ { +++ MOID_T *spec_moid = MOID (NEXT (SUB (p))); +++ NODE_T *spec_identifier = NEXT (NEXT (SUB (p))); +++ NODE_T *spec_unit = NEXT (NEXT (p)); +++ const char *specifier_identifier_name = NULL; +++ if (IS (spec_identifier, IDENTIFIER)) +++ specifier_identifier_name = NSYMBOL (spec_identifier); +++ +++ tree overhead = a68_union_overhead (enquiry); +++ tree spec_value = NULL_TREE; +++ tree entry_selected = NULL_TREE; +++ if (IS_UNION (spec_moid)) +++ { +++ /* The spec_moid is an united mode, which must be unitable to the +++ enquiry_mode. */ +++ gcc_assert (a68_is_unitable (spec_moid, enquiry_mode, +++ SAFE_DEFLEXING)); +++ +++ /* Build the entry_selected expression. +++ +++ For each mode in spec_moid, determine the corresponding index +++ in enquiry_mode and add a check for it to the expression. */ +++ for (PACK_T *pack = PACK (spec_moid); pack != NO_PACK; FORWARD (pack)) +++ { +++ int index = a68_united_mode_index (enquiry_mode, MOID (pack)); +++ tree expr = fold_build2 (EQ_EXPR, +++ boolean_type_node, +++ overhead, +++ build_int_cst (TREE_TYPE (overhead), index)); +++ if (entry_selected == NULL_TREE) +++ entry_selected = expr; +++ else +++ entry_selected = fold_build2 (TRUTH_OR_EXPR, +++ boolean_type_node, +++ entry_selected, +++ expr); +++ } +++ +++ /* The spec_value is an union of mode spec_moid, with the +++ overhead translated from enquiry_mode. */ +++ tree spec_overhead +++ = a68_union_translate_overhead (enquiry_mode, overhead, spec_moid); +++ a68_push_range (spec_moid); +++ spec_value = a68_lower_tmpvar ("spec_value%", +++ CTYPE (spec_moid), +++ a68_get_skip_tree (spec_moid)); +++ a68_add_stmt (a68_union_set_overhead (spec_value, spec_overhead)); +++ tree from_cunion = a68_union_cunion (enquiry); +++ tree to_cunion = a68_union_cunion (spec_value); +++ a68_add_stmt (a68_lower_memcpy (fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (to_cunion)), +++ to_cunion), +++ fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (from_cunion)), +++ from_cunion), +++ size_in_bytes (TREE_TYPE (to_cunion)))); +++ a68_add_stmt (spec_value); +++ spec_value = a68_pop_range (); +++ } +++ else +++ { +++ int index = a68_united_mode_index (enquiry_mode, spec_moid); +++ spec_value = a68_union_alternative (enquiry, index); +++ entry_selected = fold_build2 (EQ_EXPR, +++ TREE_TYPE (overhead), +++ overhead, +++ build_int_cst (TREE_TYPE (overhead), index)); +++ } +++ +++ a68_push_range (M_VOID); +++ { +++ /* If the enquiry value is ascribed to an identifier in the case +++ entry then create a suitable declaration and turn the identifier +++ into a defining identifier. */ +++ if (specifier_identifier_name) +++ { +++ tree united_value = a68_lower_tmpvar (specifier_identifier_name, +++ CTYPE (spec_moid), spec_value); +++ TAX_TREE_DECL (TAX (spec_identifier)) = united_value; +++ } +++ +++ /* Set result% to the lowering of the unit and jump to the end of +++ the enquiry clause. */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), +++ result, a68_lower_tree (spec_unit, ctx))); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, +++ void_type_node, +++ exit_label)); +++ a68_add_stmt (a68_get_skip_tree (M_VOID)); +++ } +++ tree process_entry = a68_pop_range (); +++ +++ /* IF index = overhead THEN process entry FI */ +++ a68_add_stmt (fold_build3 (COND_EXPR, +++ a68_void_type, +++ entry_selected, +++ process_entry, +++ a68_get_skip_tree (M_VOID))); +++ +++ FORWARD (p); /* Skip specifier. */ +++ FORWARD (p); /* Skip unit. */ +++ /* The unit is skipped in the for loop post-action. */ +++ } +++ else +++ lower_unite_case_unit (SUB (p), +++ enquiry, enquiry_mode, +++ result, exit_label, ctx); +++ } +++} +++ +++tree +++a68_lower_conformity_clause (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *conformity_clause_mode = MOID (p); +++ +++ /* CASE or OUSE. */ +++ NODE_T *s = SUB (p); +++ NODE_T *enquiry_node = NEXT (SUB (s)); +++ MOID_T *enquiry_mode = MOID (SUB (s)); +++ +++ /* Push a binding environment for the enquiry clause. */ +++ a68_push_range (conformity_clause_mode); +++ +++ /* Process the enquiry clause and put the resulting value in enquiry%. */ +++ a68_push_stmt_list (enquiry_mode); +++ (void) a68_lower_tree (enquiry_node, ctx); +++ tree enquiry = a68_lower_tmpvar ("enquiry%", +++ CTYPE (enquiry_mode), +++ a68_pop_stmt_list ()); +++ +++ /* Create a decl for result%. */ +++ tree result = a68_lower_tmpvar ("result%", +++ CTYPE (conformity_clause_mode), +++ a68_get_skip_tree (conformity_clause_mode)); +++ +++ /* Create an exit label. */ +++ tree exit_label = build_decl (UNKNOWN_LOCATION, +++ LABEL_DECL, +++ get_identifier ("exit_label%"), +++ void_type_node); +++ DECL_CONTEXT (exit_label) = a68_range_context (); +++ a68_add_decl (exit_label); +++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (exit_label), exit_label)); +++ +++ /* IN. */ +++ FORWARD (s); +++ lower_unite_case_unit (NEXT (SUB (s)), +++ enquiry, enquiry_mode, +++ result, exit_label, ctx); +++ +++ /* OUT. */ +++ FORWARD (s); +++ switch (ATTRIBUTE (s)) +++ { +++ case CHOICE: +++ case OUT_PART: +++ { +++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); +++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; +++ a68_push_serial_clause_range (conformity_clause_mode, dsa && local); +++ +++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), +++ result, a68_pop_serial_clause_range ())); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); +++ break; +++ } +++ case CLOSE_SYMBOL: +++ case ESAC_SYMBOL: +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (result), +++ result, +++ a68_get_skip_tree (conformity_clause_mode))); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); +++ break; +++ default: +++ /* Recurse. +++ +++ Note that the parser guarantees that the embedded CASE clause is a +++ conformity clause, and that its mode is the same than the containing +++ clause, but it doesn't annotate the mode in the tree node so we have +++ to do it here. */ +++ MOID (s) = conformity_clause_mode; +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (result), +++ result, +++ a68_lower_conformity_clause (s, ctx))); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); +++ break; +++ } +++ +++ /* ESAC */ +++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, exit_label)); +++ a68_add_stmt (result); +++ return a68_pop_range (); +++} +++ +++/* Lower a case clause. +++ +++ case clause : open part, case choice clause, choice, close symbol; +++ open part, case choice clause, close symbol; +++ open part, case shoice clause, brief ouse part; +++ case part, case in part, out part, esac symbol; +++ case part, case in part, esac symbol; +++ case part, case in part, case ouse part; +++*/ +++ +++static void +++lower_int_case_unit (NODE_T *p, +++ tree enquiry, MOID_T *enquiry_mode, +++ tree result, tree exit_label, int *count, +++ LOW_CTX_T ctx) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, UNIT)) +++ { +++ a68_push_range (M_VOID); +++ { +++ /* Set result% to the lowering of the unit and jump to the end of +++ the enquiry clause. */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), +++ result, a68_lower_tree (p, ctx))); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, +++ void_type_node, +++ exit_label)); +++ a68_add_stmt (a68_get_skip_tree (M_VOID)); +++ } +++ tree process_entry = a68_pop_range (); +++ +++ /* IF count = enquiry THEN process entry FI */ +++ a68_add_stmt (fold_build3 (COND_EXPR, +++ a68_void_type, +++ fold_build2 (EQ_EXPR, +++ TREE_TYPE (enquiry), +++ enquiry, +++ build_int_cst (TREE_TYPE (enquiry), *count)), +++ process_entry, +++ a68_get_skip_tree (M_VOID))); +++ *count += 1; +++ } +++ else +++ lower_int_case_unit (SUB (p), +++ enquiry, enquiry_mode, +++ result, exit_label, count, ctx); +++ } +++} +++ +++tree +++a68_lower_case_clause (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ MOID_T *case_clause_mode = MOID (p); +++ +++ /* CASE or OUSE */ +++ NODE_T *s = SUB (p); +++ NODE_T *enquiry_node = NEXT (SUB (s)); +++ MOID_T *enquiry_mode = M_INT; +++ +++ /* Push a bingding environment fo the case clause. */ +++ a68_push_range (case_clause_mode); +++ +++ /* Process the enquiry clause and put the result value in enquiry%. */ +++ a68_push_stmt_list (enquiry_mode); +++ (void) a68_lower_tree (enquiry_node, ctx); +++ tree enquiry = a68_lower_tmpvar ("enquiry%", +++ CTYPE (enquiry_mode), +++ a68_pop_stmt_list ()); +++ /* Create a decl for result%. */ +++ tree result = a68_lower_tmpvar ("result%", +++ CTYPE (case_clause_mode), +++ a68_get_skip_tree (case_clause_mode)); +++ +++ /* Create an exit label. */ +++ tree exit_label = build_decl (UNKNOWN_LOCATION, +++ LABEL_DECL, +++ get_identifier ("exit_label%"), +++ void_type_node); +++ DECL_CONTEXT (exit_label) = a68_range_context (); +++ a68_add_decl (exit_label); +++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (exit_label), exit_label)); +++ +++ /* IN. */ +++ FORWARD (s); +++ int count = 1; +++ lower_int_case_unit (NEXT (SUB (s)), +++ enquiry, enquiry_mode, +++ result, exit_label, &count, ctx); +++ +++ /* OUT. */ +++ FORWARD (s); +++ switch (ATTRIBUTE (s)) +++ { +++ case CHOICE: +++ case OUT_PART: +++ { +++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); +++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; +++ a68_push_serial_clause_range (case_clause_mode, dsa && local); +++ +++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (result), +++ result, a68_pop_serial_clause_range ())); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); +++ break; +++ } +++ case CLOSE_SYMBOL: +++ case ESAC_SYMBOL: +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (result), +++ result, +++ a68_get_skip_tree (case_clause_mode))); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); +++ break; +++ default: +++ /* Recurse. +++ +++ Note that the parser guarantees that the embedded CASE clause has the +++ same mode than the containing clause, but it doesn't annotate the OUSE +++ node with its mode so we have to do it here. */ +++ MOID (s) = case_clause_mode; +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (result), +++ result, +++ a68_lower_case_clause (s, ctx))); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, exit_label)); +++ break; +++ } +++ +++ /* ESAC */ +++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, exit_label)); +++ a68_add_stmt (result); +++ return a68_pop_range (); +++} +++ +++/* Lower an enquiry clause. +++ +++ enquiry clause : unit; +++ enquiry clause, semi symbol, unit; +++ enquiry clause, comma symbol, unit; +++ initialiser series, semi symbol, unit. +++ +++ The units and declarations in the enquiry clause get lowered into +++ expressions and declaration nodes which are added to the current serial +++ clause. +++ +++ This function always returns NULL_TREE, so the traversing code shall always +++ be careful to travese on these nodes explicitly and ignore the returned +++ value. */ +++ +++tree +++a68_lower_enquiry_clause (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (IS (SUB (p), UNIT)) +++ { +++ a68_add_stmt (a68_lower_tree (SUB (p), ctx)); +++ } +++ else if (IS (SUB (p), ENQUIRY_CLAUSE)) +++ { +++ (void) a68_lower_tree (SUB (p), ctx); +++ gcc_assert (IS (NEXT (NEXT (SUB (p))), UNIT)); +++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++ } +++ else +++ { +++ gcc_assert (IS (SUB (p), INITIALISER_SERIES)); +++ gcc_assert (IS (NEXT (NEXT (SUB (p))), UNIT)); +++ (void) a68_lower_tree (SUB (p), ctx); +++ a68_add_stmt (a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++ } +++ +++ return NULL_TREE; +++} +++ +++/* Lower a conditional clause. +++ +++ conditional clause : open part, choice, choice, close symbol; +++ open part, choice, close symbol; +++ open part, choice, brief elif part; +++ if part, then part, else part, fi symbol; +++ if part, then part, elif part; +++ if part, then part, fi symbol. +++ +++ if part : if symbol, enquiry clause; +++ if symbol, initialiser series. +++ +++ then part : then symbol, serial clause; +++ then symbol, initialiser series. +++ +++ elif part : elif if part, then part, else part, fi symbol; +++ elif if part, then part, fi symbol; +++ elif if part, then part, elif part. +++ +++ else part : else symbol, serial clause; +++ else symbol, initialiser series. +++ +++ elif if part : elif symbol, enquiry clause. +++ +++ open part : open symbol, enquiry clause. +++ +++ choice : then bar symbol, serial clause; +++ then bar symbol initialiser series. +++ +++ brief elif part : else open part, choice, choice, close symbol; +++ else open part, choice, close symbol; +++ else open part, choice, bief elif part. +++ +++ else open part : else bar symbol, enquiry clause; +++ else bar symbol, initialiser series. +++ +++ Ranges: +++ +++ IF enquiry-clause THEN expr ELSE expr FI +++ --- R2 ---- R3 +++ ---------------------------------------- R1 +++ +++ The conditional clause lowers into: +++ +++ BIND_EXPR +++ BIND_EXPR_VARS -> delcls in enquiry clause. +++ BIND_EXPR_BODY +++ STMT_LIST +++ enquiry% = ...; +++ COND_EXPR (enquiry%, then_expr, else_expr) */ +++ +++tree +++a68_lower_conditional_clause (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree then_expr = NULL_TREE; +++ tree else_expr = NULL_TREE; +++ +++ MOID_T *conditional_clause_mode = MOID (p); +++ MOID_T *effective_rows_mode = NO_MOID; +++ bool is_rows = false; +++ +++ /* Push a binding environment for the conditional. */ +++ a68_push_range (is_rows ? effective_rows_mode : conditional_clause_mode); +++ +++ /* Create a decl for %enquiry and add it to the bind's declaration chain. */ +++ tree enquiry_decl = build_decl (UNKNOWN_LOCATION, +++ VAR_DECL, +++ NULL, /* Set below. */ +++ a68_bool_type); +++ char *enquiry_name = xasprintf ("enquiry%d%%", DECL_UID(enquiry_decl)); +++ DECL_NAME (enquiry_decl) = get_identifier (enquiry_name); +++ free (enquiry_name); +++ DECL_INITIAL (enquiry_decl) = a68_get_skip_tree (M_BOOL); +++ a68_add_decl (enquiry_decl); +++ +++ /* Add a DECL_EXPR for enquiry_decl% */ +++ a68_add_stmt (fold_build1 (DECL_EXPR, a68_bool_type, enquiry_decl)); +++ +++ /* IF or ELIF part. */ +++ NODE_T *s = SUB (p); +++ +++ /* Process the enquiry clause. */ +++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); +++ +++ /* Assignation enquiry% = .. expr .. +++ Note that since no completers are allowed in enquiry clauses, +++ the last statement in the statement list has to be the unit +++ yielding the boolean value. */ +++ tree_stmt_iterator si = tsi_last (a68_range_stmt_list ()); +++ gcc_assert (TREE_TYPE (tsi_stmt (si)) != void_type_node); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, a68_bool_type, enquiry_decl, tsi_stmt (si))); +++ tsi_delink (&si); +++ +++ /* THEN part. */ +++ FORWARD (s); +++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); +++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; +++ a68_push_serial_clause_range (is_rows ? effective_rows_mode : conditional_clause_mode, +++ dsa && local); +++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); +++ then_expr = a68_pop_serial_clause_range (); +++ +++ /* ELSE part */ +++ FORWARD (s); +++ switch (ATTRIBUTE (s)) +++ { +++ case CHOICE: +++ case ELSE_PART: +++ { +++ bool dsa = serial_clause_dsa (NEXT (SUB (s))); +++ bool local = NON_LOCAL (NEXT (SUB (s))) == NO_TABLE; +++ a68_push_serial_clause_range (is_rows ? effective_rows_mode : conditional_clause_mode, +++ dsa && local); +++ (void) a68_lower_tree (NEXT (SUB (s)), ctx); +++ else_expr = a68_pop_serial_clause_range (); +++ break; +++ } +++ case CLOSE_SYMBOL: +++ case FI_SYMBOL: +++ { +++ else_expr = a68_get_skip_tree (is_rows ? effective_rows_mode : conditional_clause_mode); +++ break; +++ } +++ default: +++ { +++ /* ELIF part. Recurse. */ +++ MOID (s) = conditional_clause_mode; +++ else_expr = a68_lower_conditional_clause (s, ctx); +++ } +++ } +++ +++ /* Build the conditional clause's COND_EXPR. */ +++ a68_add_stmt (fold_build3_loc (a68_get_node_location (p), +++ COND_EXPR, +++ CTYPE (is_rows ? effective_rows_mode : conditional_clause_mode), +++ enquiry_decl, +++ then_expr, else_expr)); +++ +++ return a68_pop_range (); +++} +++ +++/* Lower a comma separated list of zero, two, or more units +++ +++ unit list : unit list, comma symbol, unit; +++ unit list, unit. +++ +++ The list of units lowers into appending the units into the current +++ statements list. +++ +++ This function always returns NULL_TREE, so the traversing code shall always +++ be careful to traverse on these nodes explicitly and ignore the returned +++ value. */ +++ +++tree +++a68_lower_unit_list (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (IS (SUB (p), UNIT_LIST)) +++ (void) a68_lower_tree (SUB (p), ctx); +++ +++ for (NODE_T *s = SUB (p); s != NO_NODE; FORWARD (s)) +++ { +++ if (IS (s, UNIT)) +++ a68_add_stmt (a68_lower_tree (s, ctx)); +++ } +++ +++ return NULL_TREE; +++} +++ +++/* Lower a collateral clause. +++ +++ collateral clause : open symbol, unit list, close symbol; +++ open symbol, close symbol; +++ begin symbol, unit list, end symbol; +++ begin symbol, end symbol. +++ +++ An empty collateral clause lowers into EMPTY. */ +++ +++tree +++a68_lower_collateral_clause (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ bool clause_is_empty = (ATTRIBUTE (NEXT (SUB (p))) != UNIT_LIST); +++ MOID_T *mode = MOID (p); +++ +++ /* Lower the constituent units into a statements list. */ +++ a68_push_stmt_list (mode); +++ if (!clause_is_empty) +++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); +++ tree units = a68_pop_stmt_list (); +++ +++ /* The collateral clause lowers to different constructions depending on its +++ nature. */ +++ if (mode == M_VOID) +++ { +++ /* A VOID-collateral-clause lowers into a STMT_LIST containing all +++ the units. Since there cannot be declarations in a collateral +++ clause, there is no need to introduce a new binding scope. Note +++ that for now we are not really elaborating collaterally, but +++ sequentially. */ +++ return units; +++ } +++ else if (IS_FLEXETY_ROW (mode) || mode == M_STRING) +++ { +++ if (mode == M_STRING) +++ mode = M_FLEX_ROW_CHAR; +++ +++ /* This is a row display. It lowers to a multiple. */ +++ tree row_type = CTYPE (mode); +++ size_t dim = DIM (DEFLEX (mode)); +++ +++ if (clause_is_empty) +++ { +++ /* The clause is empty. This lowers into a multiple with DIM +++ dimension, each dimension having bounds of 1:0, and no +++ elements. */ +++ tree element_pointer_type = a68_row_elements_pointer_type (row_type); +++ tree multiple_elements = build_int_cst (element_pointer_type, 0); +++ tree multiple_elements_size = size_zero_node; +++ +++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); +++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); +++ for (size_t d = 0; d < dim; ++d) +++ { +++ lower_bounds[d] = ssize_one_node; +++ upper_bounds[d] = ssize_zero_node; +++ } +++ +++ tree row = a68_row_value (row_type, dim, +++ multiple_elements, +++ multiple_elements_size, +++ lower_bounds, upper_bounds); +++ TREE_CONSTANT (row) = 1; +++ free (lower_bounds); +++ free (upper_bounds); +++ return row; +++ } +++ +++ if (dim == 1) +++ { +++ /* Create a constructor with the multiple's elements. */ +++ vec *ve = NULL; +++ int num_units = 0; +++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) +++ { +++ tree unit = tsi_stmt (si); +++ if (A68_TYPE_HAS_ROWS_P (TREE_TYPE (unit))) +++ unit = a68_low_dup (unit); +++ CONSTRUCTOR_APPEND_ELT (ve, size_int (num_units), unit); +++ num_units += 1; +++ } +++ +++ tree element_pointer_type = a68_row_elements_pointer_type (row_type); +++ tree array_constructor_type = build_array_type (TREE_TYPE (element_pointer_type), +++ build_index_type (size_int (num_units - 1))); +++ tree array_constructor = build_constructor (array_constructor_type, ve); +++ tree multiple_elements = fold_build1 (ADDR_EXPR, +++ element_pointer_type, +++ array_constructor); +++ tree elements_type = TREE_TYPE (element_pointer_type); +++ tree multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, +++ size_int (num_units), +++ size_in_bytes (elements_type)); +++ tree lower_bound = fold_convert (ssizetype, size_one_node); +++ tree upper_bound = ssize_int (num_units); +++ tree row = a68_row_value (row_type, dim, +++ multiple_elements, +++ multiple_elements_size, +++ &lower_bound, &upper_bound); +++ return row; +++ } +++ else +++ { +++ gcc_assert (dim > 1); +++ +++ /* The units in the collateral clause are multiples, whose elements +++ are to be copied consecutively in a new multiple. The descriptor +++ of this multiple is constructed as follows: +++ +++ The first dimension is: +++ +++ - The lower bound is 1. +++ - The upper bound is the number of sub-multiples processed +++ here. +++ - The stride is the number of elements in each sub-multiple +++ multiplied by the element size. +++ +++ Subsequent dimensions are taken from the first inner multiple. +++ All descriptors of the inner multiples shall be equal. This is +++ checked at run-time, and in case of discrepancy a run-time error +++ is emitted. +++ +++ Let's see an example. Suppose in the stmt-list we have: +++ +++ (1, 2, 3) +++ {triplets: {lb: 1 ub: 3 stride: 1S} elements: {1, 2, 3}} +++ (4, 5, 6) +++ {triplets: {lb: 1 ub: 3 stride: 1S} elements: {4, 5, 6}} +++ +++ The resulting multiple would be: +++ +++ ((1, 2, 3), (4, 5, 6)) +++ {triplets: {{lb: 1 ub: 2 stride: 3S}, {lb: 1 ub: 3 stride: 1S}} +++ elements: {1, 2, 3, 4, 5, 6}} */ +++ +++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ size_t num_units = 0; +++ +++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) +++ num_units++; +++ +++ a68_push_range (mode); +++ +++ /* Process each sub-multiple. The first sub-multiple establishes the +++ bounds that all subsequent sub-multiples shall match. */ +++ tree multiple_elements = NULL_TREE; +++ tree multiple_elements_size = NULL_TREE; +++ tree sub_multiple = NULL_TREE; +++ // tree sub_multiple_lb = NULL_TREE; +++ // tree sub_multiple_ub = NULL_TREE; +++ // tree sub_multiple_stride = NULL_TREE; +++ tree index = a68_lower_tmpvar ("index%", sizetype, size_zero_node); +++ for (tree_stmt_iterator si = tsi_start (units); !tsi_end_p (si); tsi_next (&si)) +++ { +++ if (sub_multiple == NULL) +++ sub_multiple = a68_lower_tmpvar ("sub_multiple%", +++ TREE_TYPE (tsi_stmt (si)), +++ tsi_stmt (si)); +++ else +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (tsi_stmt (si)), +++ sub_multiple, +++ tsi_stmt (si))); +++ +++ if (si == tsi_start (units)) +++ { +++#if 0 +++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); +++ /* The first sub-multiple establishes the bounds that all +++ subsequent sub-multiples shall match. */ +++ sub_multiple_lb = a68_lower_tmpvar ("sub_multiple_lb%", +++ ssizetype, +++ a68_multiple_lower_bound (sub_multiple, +++ ssize_zero_node)); +++ sub_multiple_ub = a68_lower_tmpvar ("sub_multiple_ub%", +++ ssizetype, +++ a68_multiple_upper_bound (sub_multiple, +++ ssize_zero_node)); +++ sub_multiple_stride = a68_lower_tmpvar ("sub_multiple_stride%", +++ sizetype, +++ a68_multiple_stride (sub_multiple, +++ size_zero_node)); +++#endif +++ /* Now we have enough information to calculate the size of +++ the elements of the new multiple and allocate +++ multiple_elements. */ +++ tree sub_multiple_elements = a68_multiple_elements (sub_multiple); +++ tree elements_pointer_type = TREE_TYPE (sub_multiple_elements); +++ tree elements_type = TREE_TYPE (elements_pointer_type); +++ multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, +++ size_int (num_units), +++ size_in_bytes (elements_type)); +++ multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, +++ multiple_elements_size, +++ a68_multiple_num_elems (sub_multiple)); +++ multiple_elements = a68_lower_tmpvar ("multiple_elements%", +++ elements_pointer_type, +++ a68_lower_alloca (elements_type, +++ multiple_elements_size)); +++ +++ /* We can also now calculate the bounds of the new multiple. +++ The top-level triplet has lower bound 1, upper bound is +++ num_units, and stride is the number of elements in each +++ sub-multiple multiplied by the element size. Bounds for +++ the subsequent DIM-1 dimensions are copied from the +++ sub-multiple's descriptor. */ +++ lower_bounds[0] = fold_convert (ssizetype, size_one_node); +++ upper_bounds[0] = ssize_int (num_units); +++ for (size_t d = 1; d < dim; ++d) +++ { +++ lower_bounds[d] = a68_multiple_lower_bound (sub_multiple, +++ ssize_int (d - 1)); +++ upper_bounds[d] = a68_multiple_upper_bound (sub_multiple, +++ ssize_int (d - 1)); +++ } +++ } +++ else +++ { +++ /* Check bounds of this sub-multiple. Note that this is +++ always done at run-time, since the interpretation of a row +++ display depens on the target type, whether it is a row row +++ or a row of rows, for example. */ +++ // XXX use sub_multiple_lb, sub_multiple_ub and sub_multiple_stride +++ } +++ +++ /* Copy the elements of a copy of the sub-multiple in the +++ elements of the multiple. */ +++ tree sub_multiple_elements = a68_multiple_elements (sub_multiple); +++ // XXX should we make a copy of the sub_multiple_elements here? +++ // We DO need to iterate slicing, because of strides: if +++ // the sub_multiple is a trimmer. +++ sub_multiple_elements = sub_multiple_elements; +++ tree sub_multiple_elements_type = TREE_TYPE (sub_multiple_elements); +++ tree sub_multiple_num_elems = a68_multiple_num_elems (sub_multiple); +++ tree sub_multiple_element_type = TREE_TYPE (sub_multiple_elements_type); +++ tree sub_multiple_elements_size = fold_build2 (MULT_EXPR, sizetype, +++ sub_multiple_num_elems, +++ size_in_bytes (sub_multiple_element_type)); +++ +++ /* memcpy (multiple_elements[index], sub_multiple_elements) */ +++ a68_add_stmt (a68_lower_memcpy (fold_build2 (POINTER_PLUS_EXPR, +++ sub_multiple_elements_type, +++ multiple_elements, +++ index), +++ sub_multiple_elements, +++ sub_multiple_elements_size)); +++ /* index += sub_multiple_elements_size */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, sizetype, +++ index, +++ fold_build2 (PLUS_EXPR, sizetype, +++ index, sub_multiple_elements_size))); +++ } +++ +++ tree multiple = a68_lower_tmpvar ("multiple%", +++ row_type, +++ a68_row_value (row_type, dim, +++ multiple_elements, +++ multiple_elements_size, +++ lower_bounds, upper_bounds)); +++ free (lower_bounds); +++ free (upper_bounds); +++ +++ /* Yield the multiple. */ +++ a68_add_stmt (multiple); +++ return a68_pop_range (); +++ } +++ } +++ else if (IS_STRUCT (mode)) +++ { +++ /* This is a struct display. There are as many units in the clause as +++ fields in the struct type. Build a constructor with the values for +++ the fields. */ +++ vec *ve = NULL; +++ tree_stmt_iterator si = tsi_start (units); +++ for (tree f = TYPE_FIELDS (CTYPE (mode)); f; f = DECL_CHAIN (f)) +++ { +++ tree v = tsi_stmt (si); +++ gcc_assert (v != NULL_TREE); +++ v = a68_consolidate_ref (a68_type_moid (TREE_TYPE (f)) ,v); +++ CONSTRUCTOR_APPEND_ELT (ve, f, v); +++ tsi_next (&si); +++ } +++ tree ctor = build_constructor (CTYPE (mode), ve); +++ return ctor; +++ } +++ else +++ gcc_unreachable (); +++} +++ +++/* Lower a parallel clause. +++ +++ parallel clause : par symbol, collateral clause. +++*/ +++ +++tree +++a68_lower_parallel_clause (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* XXX For now treat like a VOID collateral clause. */ +++ return a68_lower_tree (NEXT (SUB (p)), ctx); +++} +++ +++/* Lower a closed clause. +++ +++ closed clause : open symbol, serial clause, close symbol; +++ open symbol, initialiser series, close symbol; +++ begin symbol, serial clause, end symbol; +++ begin symbol, initialiser series, end symbol; +++ +++ This function returns a BIND_EXPR. */ +++ +++tree +++a68_lower_closed_clause (NODE_T *p, LOW_CTX_T ctx) +++{ +++ /* Determine the mode of the closed clause. */ +++ MOID_T *clause_mode = MOID (p); +++ gcc_assert (clause_mode != NO_MOID); +++ gcc_assert (CTYPE (clause_mode) != NULL_TREE); +++ +++ /* Lower the enclosed serial clause. +++ +++ Note that a serial clause can be nested right inside another, and in that +++ case the range we are pushing corresponds to all of them, so we have to +++ keep this into account when determining whether using a DSA serial +++ range. */ +++ +++ bool dsa = serial_clause_dsa (NEXT (SUB (p))); +++ bool local = NON_LOCAL (NEXT (SUB (p))) == NO_TABLE; +++ a68_push_serial_clause_range (clause_mode, dsa && local); +++ (void) a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_pop_serial_clause_range (); +++} +++ +++/* Lower an access clause. +++ +++ access clause : access symbol, joined module indication sequence, +++ enclosed clause. +++*/ +++ +++tree +++a68_lower_access_clause (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *controlled_clause = NEXT (NEXT_SUB (p)); +++ +++ a68_push_range (MOID (p)); +++ +++ /* Call preludes of all ACCESSed modules. */ +++ for (NODE_T *q = SUB (p); q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, MODULE_INDICANT)) +++ { +++ TAG_T *tag = a68_find_tag_global (TABLE (q), MODULE_SYMBOL, NSYMBOL (q)); +++ gcc_assert (tag != NO_TAG); +++ MOIF_T *moif = MOIF (tag); +++ gcc_assert (moif != NO_MOIF); +++ const char *prelude = PRELUDE (moif); +++ +++ tree prelude_decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, +++ get_identifier (prelude), +++ build_function_type_list (void_type_node, +++ void_type_node, +++ NULL_TREE)); +++ DECL_EXTERNAL (prelude_decl) = 1; +++ TREE_PUBLIC (prelude_decl) = 1; +++ a68_add_decl (prelude_decl); +++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (q), +++ prelude_decl, 0)); +++ } +++ } +++ +++ /* Now the controlled clause. */ +++ tree controlled_clause_tree = a68_lower_tree (controlled_clause, ctx); +++ tree tmp = a68_lower_tmpvar ("accessed_clause_result%", +++ TREE_TYPE (controlled_clause_tree), +++ controlled_clause_tree); +++ +++ /* Call postludes of all ACCESSed modules. */ +++ for (NODE_T *q = SUB (p); q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, MODULE_INDICANT)) +++ { +++ TAG_T *tag = a68_find_tag_global (TABLE (q), MODULE_SYMBOL, NSYMBOL (q)); +++ gcc_assert (tag != NO_TAG); +++ MOIF_T *moif = MOIF (tag); +++ gcc_assert (moif != NO_MOIF); +++ const char *postlude = POSTLUDE (moif); +++ +++ tree postlude_decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, +++ get_identifier (postlude), +++ build_function_type_list (void_type_node, +++ void_type_node, +++ NULL_TREE)); +++ DECL_EXTERNAL (postlude_decl) = 1; +++ TREE_PUBLIC (postlude_decl) = 1; +++ a68_add_decl (postlude_decl); +++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (q), +++ postlude_decl, 0)); +++ } +++ } +++ +++ a68_add_stmt (tmp); +++ return a68_pop_range (); +++} +++ +++tree a68_lower_access_clauses (NODE_T *p, LOW_CTX_T ctx); +++ +++/* Lower an enclosed clause. +++ +++ enclosed clause : parallel clause; closed clause; +++ collateral clause; conditional clause; +++ case clause; conformity clause; +++ loop clause ; access clause. +++*/ +++ +++tree +++a68_lower_enclosed_clause (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_lower_tree (SUB (p), ctx); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-coercions.cc ++@@ -0,0 +1,471 @@ +++/* Lower Algol 68 coercions to GENERIC. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Lower a dereferencing coercion. */ +++tree +++a68_lower_dereferencing (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_low_deref (a68_lower_tree (SUB (p), ctx), SUB (p)); +++} +++ +++/* Lower an uniting coercion. */ +++ +++tree +++a68_lower_uniting (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree coercend_tree = a68_lower_tree (SUB (p), ctx); +++ +++ if (MOID (p) == M_ROWS) +++ { +++ /* ROWS is a mode to which any ROW mode can be strongly coerced. It is +++ used as the mode of the second operand of the ELEMS, LWB and UPB +++ operators. The coercion is expressed in the parse tree via uniting. +++ This results in replacing the multiple with a "rows" value that +++ contains dimension and bounds information. */ +++ if (A68_ROW_TYPE_P (TREE_TYPE (coercend_tree))) +++ return a68_rows_value (coercend_tree); +++ else if (A68_UNION_TYPE_P (TREE_TYPE (coercend_tree))) +++ { +++ /* coercend_tree is expanded more than once below. */ +++ coercend_tree = save_expr (coercend_tree); +++ +++ /* Union of row modes. We should create a rows value for the currently +++ selected value. */ +++ a68_push_range (M_ROWS); +++ tree done_label = build_decl (UNKNOWN_LOCATION, +++ LABEL_DECL, +++ get_identifier ("done_label%"), +++ void_type_node); +++ DECL_CONTEXT (done_label) = a68_range_context (); +++ a68_add_decl (done_label); +++ a68_add_decl_expr (fold_build1 (DECL_EXPR, TREE_TYPE (done_label), done_label)); +++ tree rows = a68_lower_tmpvar ("rows%", CTYPE (M_ROWS), +++ a68_get_skip_tree (M_ROWS)); +++ tree coercend_overhead = a68_union_overhead (coercend_tree); +++ tree overhead = a68_lower_tmpvar ("overhead%", TREE_TYPE (coercend_overhead), +++ coercend_overhead); +++ int field_index = 0; +++ for (tree field = TYPE_FIELDS (TREE_TYPE (a68_union_cunion (coercend_tree))); +++ field; +++ field = DECL_CHAIN (field)) +++ { +++ a68_push_range (M_VOID); +++ { +++ /* Set rows% to the rows value computed from coercend_tree.FIELD, +++ which is of some multiple type. */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, CTYPE (M_ROWS), +++ rows, +++ a68_rows_value (a68_union_alternative (coercend_tree, +++ field_index)))); +++ a68_add_stmt (fold_build1 (GOTO_EXPR, void_type_node, done_label)); +++ a68_add_stmt (a68_get_skip_tree (M_VOID)); +++ } +++ tree process_entry = a68_pop_range (); +++ +++ /* IF overhead = field_index THEN rows% = rows_from_multiple FI */ +++ a68_add_stmt (fold_build3 (COND_EXPR, +++ a68_void_type, +++ fold_build2 (EQ_EXPR, +++ TREE_TYPE (overhead), +++ overhead, +++ build_int_cst (TREE_TYPE (overhead), field_index)), +++ process_entry, +++ a68_get_skip_tree (M_VOID))); +++ field_index += 1; +++ } +++ +++ /* This should not be reached. Emit run-time error. */ +++ { +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_UNREACHABLE, +++ void_type_node, 2, +++ filename, +++ build_int_cst (unsigned_type_node, lineno)); +++ a68_add_stmt (call); +++ } +++ +++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, done_label)); +++ a68_add_stmt (rows); +++ return a68_pop_range (); +++ } +++ else +++ { +++ debug_tree (TREE_TYPE (coercend_tree)); +++ gcc_assert (A68_ROWS_TYPE_P (TREE_TYPE (coercend_tree))); +++ return coercend_tree; +++ } +++ } +++ else if (IS_UNION (MOID (SUB (p)))) +++ { +++ /* We have to extract the value of the coercend union. */ +++ a68_push_range (MOID (p)); +++ { +++ MOID_T *coercend_mode = MOID (SUB (p)); +++ MOID_T *coercee_mode = MOID (p); +++ +++ /* Temporaries for the coercend's components. */ +++ tree coercend = a68_lower_tmpvar ("coercend%", TREE_TYPE (coercend_tree), coercend_tree); +++ tree cval = a68_union_cunion (coercend); +++ tree coverhead = a68_union_overhead (coercend); +++ tree coercend_value = a68_lower_tmpvar ("coercend_value%", TREE_TYPE (cval), cval); +++ tree coercend_overhead = a68_lower_tmpvar ("coercend_overhead%", sizetype, coverhead); +++ +++ /* Create the coercee. */ +++ tree coercee = a68_lower_tmpvar ("coercee%", +++ CTYPE (MOID (p)), +++ a68_get_skip_tree (MOID (p))); +++ tree coercee_value = a68_union_cunion (coercee); +++ +++ /* First translate overhead. This is crude, but it works. */ +++ int idx = 0; +++ tree coercee_overhead = size_zero_node; +++ while (EQUIVALENT (coercend_mode) != NO_MOID) +++ coercend_mode = EQUIVALENT (coercend_mode); +++ for (PACK_T *pack = PACK (coercend_mode); pack != NO_PACK; FORWARD (pack)) +++ { +++ coercee_overhead = fold_build3 (COND_EXPR, +++ sizetype, +++ fold_build2 (EQ_EXPR, +++ sizetype, +++ coercend_overhead, +++ size_int (idx)), +++ size_int (a68_united_mode_index (coercee_mode, MOID (pack))), +++ coercee_overhead); +++ idx++; +++ } +++ a68_add_stmt (a68_union_set_overhead (coercee, coercee_overhead)); +++ +++ /* Now copy over the value. This of course relies on the fact the +++ value of the coercend is smaller or of the same size than the value +++ of the built union. */ +++ a68_add_stmt (a68_lower_memcpy (fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (coercee_value)), +++ coercee_value), +++ fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (coercend_value)), +++ coercend_value), +++ size_in_bytes (TREE_TYPE (coercend_value)))); +++ a68_add_stmt (coercee); +++ } +++ return a68_pop_range (); +++ } +++ else +++ { +++ /* Produce a united mode one of whose component modes is the mode of the +++ coercend. */ +++ return a68_union_value (MOID (p), coercend_tree, MOID (SUB (p))); +++ } +++} +++ +++/* Lower a rowing coercion. */ +++ +++tree +++a68_lower_rowing (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *mode = MOID (p); +++ bool did_deref = false; +++ +++ /* If the primary is a REF, we need to dereference it to get the referred +++ value. */ +++ tree primary = NULL_TREE; +++ tree orig_primary = NULL_TREE; +++ MOID_T *target_mode = NO_MOID; +++ if (IS_REF (mode)) +++ { +++ gcc_assert (IS_REF (MOID (SUB (p)))); +++ did_deref = true; +++ target_mode = SUB (mode); +++ +++ a68_push_range (mode); +++ /* Note that we have to consolidate because we need a pointer to compare +++ to NIL below. */ +++ orig_primary = a68_lower_tmpvar ("orig_primary%", +++ CTYPE (MOID (SUB (p))), +++ a68_consolidate_ref (MOID (SUB (p)), +++ a68_lower_tree (SUB (p), ctx))); +++ primary = a68_low_deref (orig_primary, SUB (p)); +++ } +++ else +++ { +++ target_mode = mode; +++ primary = a68_lower_tree (SUB (p), ctx); +++ /* The primary gets expanded more than once below. */ +++ primary = save_expr (primary); +++ } +++ +++ /* Perform the rowing in the primary. */ +++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); +++ tree rowed_primary = NULL_TREE; +++ if (DIM (DEFLEX (target_mode)) >= 2) +++ { +++ /* []A -> [,]A */ +++ +++ /* First determine the number of dimensions of the resulting +++ multiple. */ +++ tree primary_dimensions = a68_multiple_dimensions (primary); +++ gcc_assert (TREE_CODE (primary_dimensions) == INTEGER_CST); +++ int dim = tree_to_shwi (primary_dimensions) + 1; +++ +++ /* Compute bounds. */ +++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ +++ lower_bounds[0] = ssize_one_node; +++ upper_bounds[0] = ssize_one_node; +++ for (int d = 1; d < dim; ++d) +++ { +++ lower_bounds[d] = a68_multiple_lower_bound (primary, ssize_int (d - 1)); +++ upper_bounds[d] = a68_multiple_upper_bound (primary, ssize_int (d - 1)); +++ } +++ +++ rowed_primary = a68_row_value (CTYPE (target_mode), dim, +++ a68_multiple_elements (primary), +++ a68_multiple_elements_size (primary), +++ lower_bounds, upper_bounds); +++ free (lower_bounds); +++ free (upper_bounds); +++ } +++ else +++ { +++ /* A -> []A */ +++ tree row_type = CTYPE (target_mode); +++ tree lower_bound = ssize_one_node; +++ tree upper_bound = ssize_one_node; +++ tree elements = (did_deref +++ ? orig_primary +++ : fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (primary)), +++ build_constructor_va (build_array_type (TREE_TYPE (primary), +++ build_index_type (size_zero_node)), +++ 1, size_zero_node, primary))); +++ tree elements_type = a68_row_elements_type (row_type); +++ tree elements_size = size_in_bytes (elements_type); +++ rowed_primary = a68_row_value (row_type, 1, +++ elements, elements_size, +++ &lower_bound, &upper_bound); +++ } +++ +++ /* Build a ref if we rowed a ref. */ +++ if (did_deref) +++ { +++ tree pointer_type = build_pointer_type (TREE_TYPE (rowed_primary)); +++ rowed_primary = fold_build1 (ADDR_EXPR, pointer_type, rowed_primary); +++ /* Rowing NIL yields NIL. */ +++ rowed_primary = fold_build3_loc (a68_get_node_location (p), +++ COND_EXPR, +++ pointer_type, +++ fold_build2 (EQ_EXPR, +++ pointer_type, +++ fold_convert (pointer_type, orig_primary), +++ build_int_cst (pointer_type, 0)), +++ build_int_cst (pointer_type, 0), +++ rowed_primary); +++ a68_add_stmt (rowed_primary); +++ rowed_primary = a68_pop_range (); +++ } +++ +++ return rowed_primary; +++} +++ +++/* Lower a widening coercion. +++ +++ Widening allows the following conversions of mode: +++ +++ LONGSETY INT to LONGSETY REAL +++ LONGSETY REAL to LONGSETY COMPL +++ LONGSETY BITS to []BOOL +++ LONGSETY BYTES to []CHAR */ +++ +++tree +++a68_lower_widening (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (MOID (p) == M_REAL +++ || MOID (p) == M_LONG_REAL +++ || MOID (p) == M_LONG_LONG_REAL) +++ { +++ return convert_to_real (CTYPE (MOID (p)), a68_lower_tree (SUB (p), ctx)); +++ } +++ if (MOID (p) == M_COMPLEX +++ || MOID (p) == M_LONG_COMPLEX +++ || MOID (p) == M_LONG_LONG_COMPLEX) +++ { +++ return a68_complex_widen_from_real (MOID (p), +++ a68_lower_tree (SUB (p), ctx)); +++ } +++ else if (MOID (p) == M_ROW_BOOL) +++ { +++ /* Widen a LONGSETY BITS to a row of BOOLs. */ +++ tree coercend = a68_lower_tree (SUB (p), ctx); +++ tree coercend_type = TREE_TYPE (coercend); +++ HOST_WIDE_INT bits_size = int_size_in_bytes (coercend_type); +++ gcc_assert (bits_size != -1); +++ bits_size = bits_size * 8; +++ +++ tree pointer_to_bool_type = build_pointer_type (a68_bool_type); +++ a68_push_range (M_ROW_BOOL); +++ /* First allocate space for the elements. */ +++ tree elements = a68_lower_tmpvar ("elements%", +++ pointer_to_bool_type, +++ a68_lower_alloca (a68_bool_type, +++ fold_build2 (MULT_EXPR, +++ sizetype, +++ size_int (bits_size), +++ size_in_bytes (a68_bool_type)))); +++ +++ /* Set the elements, each element is a BOOL which is TRUE if the +++ corresponding bit in the coercend is set, FALSE otherwise. */ +++ tree coercend_one_node = build_int_cst (coercend_type, 1); +++ coercend = save_expr (coercend); +++ for (HOST_WIDE_INT bit = 0; bit < bits_size; ++bit) +++ { +++ tree offset = fold_build2 (MULT_EXPR, sizetype, +++ size_int (bit), size_in_bytes (a68_bool_type)); +++ tree bit_set = fold_convert (a68_bool_type, +++ fold_build2 (BIT_AND_EXPR, coercend_type, +++ fold_build2 (RSHIFT_EXPR, coercend_type, +++ coercend, +++ build_int_cst (coercend_type, +++ bits_size - 1 - bit)), +++ coercend_one_node)); +++ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ a68_bool_type, +++ fold_build2 (MEM_REF, +++ a68_bool_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ pointer_to_bool_type, +++ elements, +++ offset), +++ fold_convert (pointer_to_bool_type, +++ integer_zero_node)), +++ bit_set)); +++ } +++ +++ /* Create multiple. */ +++ tree lower_bound = ssize_int (1); +++ tree upper_bound = ssize_int (bits_size); +++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, +++ size_int (bits_size), +++ size_in_bytes (a68_bool_type)); +++ tree multiple = a68_row_value (CTYPE (M_ROW_BOOL), 1 /* dim */, +++ elements, elements_size, +++ &lower_bound, &upper_bound); +++ a68_add_stmt (multiple); +++ return a68_pop_range (); +++ } +++ else +++ { +++ fatal_error (a68_get_node_location (p), +++ "cannot do widening from %s to %s", +++ a68_moid_to_string (MOID (SUB (p)), MOID_ERROR_WIDTH, SUB (p)), +++ a68_moid_to_string (MOID (p), MOID_ERROR_WIDTH, p)); +++ gcc_unreachable (); +++ } +++} +++ +++/* Lower a voiding coercion. +++ +++ The voiding lowers into a compound expression with the voided expression +++ (for side-effects) and returns EMPTY. */ +++ +++tree +++a68_lower_voiding (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ a68_void_type, +++ a68_lower_tree (SUB (p), ctx), +++ a68_get_empty ()); +++} +++ +++/* Lower a proceduring coercion. +++ +++ proceduring : jump. +++ +++ In the Revised language only jump statements can be procedured. The +++ coercion results in a new function whose body is the jump instruction. */ +++ +++tree +++a68_lower_proceduring (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree jump = a68_lower_tree (SUB (p), ctx); +++ +++ tree procedured_goto = a68_make_anonymous_routine_decl (MOID (p)); +++ a68_add_decl (procedured_goto); +++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), +++ DECL_EXPR, +++ TREE_TYPE (procedured_goto), +++ procedured_goto)); +++ announce_function (procedured_goto); +++ +++ a68_push_function_range (procedured_goto, CTYPE (SUB (MOID (p)))); +++ a68_pop_function_range (jump); +++ return fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (procedured_goto)), +++ procedured_goto); +++} +++ +++/* Lower a deproceduring coercion. +++ The deproceduring lowers into a call expression. */ +++ +++tree +++a68_lower_deproceduring (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree func = a68_lower_tree (SUB (p), ctx); +++ +++ if (POINTER_TYPE_P (TREE_TYPE (func))) +++ { +++ if (TREE_CODE (func) == ADDR_EXPR) +++ func = TREE_OPERAND (func, 0); +++ else +++ func = fold_build1 (INDIRECT_REF, +++ TREE_TYPE (TREE_TYPE (func)), +++ func); +++ } +++ +++ return build_call_expr_loc (a68_get_node_location (p), func, 0); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-complex.cc ++@@ -0,0 +1,141 @@ +++/* Lowering routines for all things related to COMPL values. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Build a new COMPL value with real part RE and imaginary part IM, of mode +++ MODE. */ +++ +++tree +++a68_complex_i (MOID_T *mode, tree re, tree im) +++{ +++ tree compl_type = CTYPE (mode); +++ +++ tree re_field = TYPE_FIELDS (compl_type); +++ tree im_field = TREE_CHAIN (re_field); +++ return build_constructor_va (CTYPE (mode), 2, +++ re_field, re, +++ im_field, im); +++} +++ +++/* Given a COMPL value Z, get its real part. */ +++ +++tree +++a68_complex_re (tree z) +++{ +++ tree re_field = TYPE_FIELDS (TREE_TYPE (z)); +++ return fold_build3 (COMPONENT_REF, TREE_TYPE (re_field), +++ z, re_field, NULL_TREE); +++} +++ +++tree +++a68_complex_im (tree z) +++{ +++ tree im_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (z))); +++ return fold_build3 (COMPONENT_REF, TREE_TYPE (im_field), +++ z, im_field, NULL_TREE); +++} +++ +++/* Return the conjugate of the given complex Z of mode MODE. */ +++ +++tree +++a68_complex_conj (MOID_T *mode, tree z) +++{ +++ tree re_field = TYPE_FIELDS (TREE_TYPE (z)); +++ tree complex_type = build_complex_type (TREE_TYPE (re_field), false /* named */); +++ +++ z = save_expr (z); +++ tree complex = fold_build2 (COMPLEX_EXPR, complex_type, +++ a68_complex_re (z), a68_complex_im (z)); +++ tree conj = fold_build1 (CONJ_EXPR, TREE_TYPE (complex), complex); +++ +++ return a68_complex_i (mode, +++ fold_build1 (REALPART_EXPR, TREE_TYPE (TREE_TYPE (z)), conj), +++ fold_build1 (IMAGPART_EXPR, TREE_TYPE (TREE_TYPE (z)), conj)); +++} +++ +++/* Widen a real R to a complex of mode MODE. */ +++ +++tree +++a68_complex_widen_from_real (MOID_T *mode, tree r) +++{ +++ tree compl_type = CTYPE (mode); +++ gcc_assert (compl_type != NULL_TREE); +++ +++ /* Sanity check. */ +++ if (mode == M_COMPLEX) +++ gcc_assert (TREE_TYPE (r) == a68_real_type); +++ else if (mode == M_LONG_COMPLEX) +++ gcc_assert (TREE_TYPE (r) == a68_long_real_type); +++ else if (mode == M_LONG_LONG_COMPLEX) +++ gcc_assert (TREE_TYPE (r) == a68_long_long_real_type); +++ else +++ gcc_unreachable (); +++ +++ a68_push_range (mode); +++ tree res = a68_lower_tmpvar ("compl%", compl_type, +++ a68_get_skip_tree (mode)); +++ +++ /* Look for the "re" field. */ +++ tree field_id = a68_get_mangled_identifier ("re"); +++ tree field = NULL_TREE; +++ for (tree f = TYPE_FIELDS (compl_type); f; f = DECL_CHAIN (f)) +++ { +++ if (field_id == DECL_NAME (f)) +++ { +++ field = f; +++ break; +++ } +++ } +++ gcc_assert (field != NULL_TREE); +++ +++ /* Set it to the given real value. */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (r), +++ fold_build3 (COMPONENT_REF, +++ TREE_TYPE (field), +++ res, field, +++ NULL_TREE), +++ r)); +++ a68_add_stmt (res); +++ return a68_pop_range (); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-decls.cc ++@@ -0,0 +1,696 @@ +++/* Lower mode, identity and variable declarations to GENERIC. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Lower one or more mode declarations. +++ +++ mode declaration : mode symbol, defining indicant, +++ equals symbol, declarer; +++ mode symbol, defining indicant, +++ equals symbol, void symbol; +++ mode declaration, comma symbol, +++ defining indicant, equals symbol, declarer; +++ mode declaration, comma symbol, +++ defining indicant, equals symbol, void symbol. +++ +++ Each mode declaration lowers into a TYPE_DECL, which are chained in the +++ current block. This function returns void_node. +++ +++ Note that the defining indicant is already annotated with the declared mode +++ so there is no need to go hunting for the declarer in the subtree. */ +++ +++tree +++a68_lower_mode_declaration (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *defining_indicant = NO_NODE; +++ +++ if (IS (SUB (p), MODE_DECLARATION)) +++ { +++ a68_lower_tree (SUB (p), ctx); +++ defining_indicant = NEXT (NEXT (SUB (p))); +++ } +++ else +++ { +++ gcc_assert (IS (SUB (p), MODE_SYMBOL)); +++ defining_indicant = NEXT (SUB (p)); +++ } +++ +++ /* Create a TYPE_DECL declaration for the defined mode and chain it in the +++ current block. */ +++ tree ctype = CTYPE (MOID (defining_indicant)); +++ tree decl_name = a68_get_mangled_indicant (NSYMBOL (defining_indicant), +++ ctx.module_definition_name); +++ tree decl = build_decl (a68_get_node_location (p), +++ TYPE_DECL, decl_name, ctype); +++ SET_DECL_ASSEMBLER_NAME (decl, decl_name); +++ TREE_PUBLIC (decl) = 1; +++ TYPE_CONTEXT (ctype) = DECL_CONTEXT (decl); +++ TYPE_NAME (ctype) = decl; +++ TYPE_STUB_DECL (ctype) = decl; +++ a68_add_decl (decl); +++ +++ return void_node; +++} +++ +++/* Lower one or more variable declarations. +++ +++ variable declaration : qualifier, declarer, defining identifier, +++ assign symbol, unit; +++ qualifier, declarer, defining identiifer; +++ qualifier, declarer, defining identifier; +++ declarer, defining identifier, assign symbol, unit; +++ declarer, defining identifier; +++ variable declaration, comma symbol, +++ defining identifier, assign symbol, unit; +++ variable declaration, comma symbol, +++ defining identifier; +++ +++ Each variable declaration lowers into a VAR_DECL, which are chained in the +++ current block. This function also returns an expression with code to +++ initialize the variable in case there is an initializer. +++ +++ If the variable declaration implies a LOC generator then the VAR_DECL for REF +++ AMODE declares a value of type CTYPE (AMODE). This is an optimization in +++ order to avoid indirect addressing. If the variable declaration implies a +++ HEAP generator, however, then the VAR_DECL declares a value of type pointer +++ to CTYPE (AMODE0. In this later case no optimization is possible and it has +++ exactly the same effect than an identity declaration `REF AMODE +++ defining_identifier = HEAP AMODE'. +++ +++ Note that the defining identifier is annotated with its mode, so there is no +++ need to go hunting for the declarer in the subtree. */ +++ +++tree +++a68_lower_variable_declaration (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *defining_identifier, *unit; +++ NODE_T *declarer = NO_NODE; +++ +++ tree sub_expr = NULL_TREE; +++ +++ if (IS (SUB (p), VARIABLE_DECLARATION)) +++ { +++ LOW_CTX_T new_ctx = ctx; +++ new_ctx.declarer = &declarer; +++ sub_expr = a68_lower_tree (SUB (p), new_ctx); +++ defining_identifier = NEXT (NEXT (SUB (p))); +++ } +++ else if (IS (SUB (p), QUALIFIER)) +++ { +++ /* The qualifier determines what kind of generator is used in the +++ variable declaration. This is already annotated in the tax entry for +++ the definining identifier. */ +++ declarer = NEXT (SUB (p)); +++ defining_identifier = NEXT (NEXT (SUB (p))); +++ } +++ else if (IS (SUB (p), DECLARER)) +++ { +++ declarer = SUB (p); +++ defining_identifier = NEXT (SUB (p)); +++ } +++ else +++ gcc_unreachable (); +++ +++ /* Communicate declarer upward. */ +++ if (ctx.declarer != NULL) +++ *ctx.declarer = declarer; +++ +++ /* See if this variable declaration features an initializing unit. */ +++ if (NEXT (defining_identifier) != NO_NODE) +++ { +++ gcc_assert (NEXT (defining_identifier) +++ && IS (NEXT (defining_identifier), ASSIGN_SYMBOL) +++ && NEXT (NEXT (defining_identifier))); +++ unit = NEXT (NEXT (defining_identifier)); +++ } +++ else +++ unit = NO_NODE; +++ +++ /* If not done already by an applied identifier in lower_identifier, create a +++ declaration for the defined entity and chain it in the current block. The +++ declaration has an initial value of SKIP. */ +++ tree var_decl = TAX_TREE_DECL (TAX (defining_identifier)); +++ if (var_decl == NULL_TREE) +++ { +++ var_decl = a68_make_variable_declaration_decl (defining_identifier, +++ ctx.module_definition_name); +++ TAX_TREE_DECL (TAX (defining_identifier)) = var_decl; +++ } +++ +++ /* If the variable declaration is in a public range then add the declaration +++ to the publicized declarations list. Otherwise chain the declaration in +++ the proper block and bind it. */ +++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) +++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, var_decl); +++ else +++ a68_add_decl (var_decl); +++ +++ /* Add a decl_expr in the current range. */ +++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), +++ DECL_EXPR, +++ TREE_TYPE (var_decl), +++ var_decl)); +++ +++ tree expr = NULL_TREE; +++ +++ /* Allocate memory for the declared variables. +++ +++ This is done differently depending on the sample generator used in the +++ variable declaration, be it explicit or the default LOC. +++ +++ If the LOC generator is used and the value has no rows, it means it +++ doesnt' need a dynamic part and the var_decl created above is not a +++ pointer. So the memory has been allocated already and there is nothing +++ else to do at this point. +++ +++ If the HEAP generator is used, or if the generated value has rows, it +++ means the var_decl created above is a pointer. We need to run a generator +++ to get the memory with descriptors filled in. Note that we cannot set the +++ pointer as the initial of the var_decl because the bouns in the actual +++ declarer shall be elaborated at the point of the code where the +++ declaration appears, not at the beginning of its reach. Note that the +++ mode of the declarer will be always a REF, since this is a varaible +++ declaration: the referred mode is what we pass to the a68_low_generator. +++ +++ If the STATIC generator is used, the var_decl created above is not a +++ pointer. The static part of the value has been already allocated, and if +++ the value needs a dynamic part (i.e. if it has rows) then it is allocated +++ using the heap. Note how we allocate the whole value (including the +++ static part) and then we copy if over the var_decl. */ +++ +++ if (HEAP (TAX (defining_identifier)) == STATIC_SYMBOL) +++ { +++ if (HAS_ROWS (SUB (MOID (defining_identifier)))) +++ { +++ expr = fold_build2 (MODIFY_EXPR, TREE_TYPE (var_decl), +++ var_decl, +++ fold_build1 (INDIRECT_REF, +++ TREE_TYPE (var_decl), +++ a68_low_generator (declarer, +++ SUB (MOID (declarer)), +++ true /* heap */, +++ ctx))); +++ } +++ } +++ else +++ { +++ bool heap = HEAP (TAX (defining_identifier)) == HEAP_SYMBOL; +++ if (heap || HAS_ROWS (SUB (MOID (defining_identifier)))) +++ { +++ gcc_assert(IS_REF (MOID (declarer))); +++ expr = fold_build2 (MODIFY_EXPR, TREE_TYPE (var_decl), +++ var_decl, +++ a68_low_generator (declarer, +++ SUB (MOID (declarer)), +++ heap, ctx)); +++ } +++ } +++ +++ if (unit != NO_NODE) +++ { +++ tree rhs = a68_lower_tree (unit, ctx); +++ tree assignation = a68_low_assignation (p, +++ var_decl, MOID (defining_identifier), +++ rhs, MOID (unit)); +++ if (expr != NULL_TREE) +++ expr = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (assignation), +++ expr, assignation); +++ else +++ expr = assignation; +++ } +++ +++ /* Tail in a compound expression with sub declarations, if any. */ +++ if (sub_expr != NULL_TREE) +++ { +++ if (expr != NULL_TREE) +++ expr = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (var_decl), +++ sub_expr, +++ expr); +++ else +++ expr = sub_expr; +++ } +++ +++ return expr; +++} +++ +++/* Lower one or more identity declarations. +++ +++ identity declaration : declarer, defining identifier, +++ equals symbol, unit; +++ identity declaration, comma symbol, +++ defining identifier, equals symbol, unit; +++ +++ Each identity declaration lowers into a declaration. +++ +++ VAR_DECL with both TREE_CONSTANT and TREE_READONLY set. Note that we cannot +++ use CONST_DECL because of two reasons. First, CONST_DECL only works for +++ scalar modes. Second, since Algol 68 allows usage of identifiers before +++ they get declared, each declaration adds a declaration with a SKIP initial +++ value, and also an assignation of the value at the declaration point. This +++ function also returns an expression with code to initialize the declared +++ constant. */ +++ +++tree +++a68_lower_identity_declaration (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree unit_tree = NULL_TREE; +++ tree sub_expr = NULL_TREE; +++ +++ /* Note that the formal declarer in the construct is not used. This is +++ because it is already reflected in the mode of the identity +++ declaration. */ +++ +++ NODE_T *defining_identifier; +++ if (IS (SUB (p), IDENTITY_DECLARATION)) +++ { +++ sub_expr = a68_lower_tree (SUB (p), ctx); +++ defining_identifier = NEXT (NEXT (SUB (p))); +++ } +++ else if (IS (SUB (p), DECLARER)) +++ { +++ defining_identifier = NEXT (SUB (p)); +++ } +++ else +++ gcc_unreachable (); +++ +++ NODE_T *unit = NEXT (NEXT (defining_identifier)); +++ +++ /* If not done already by an applied identifier in lower_identifier, create a +++ declaration for the defined entity and chain it in the current block. The +++ declaration has an initial value of SKIP. */ +++ tree id_decl = TAX_TREE_DECL (TAX (defining_identifier)); +++ if (id_decl == NULL_TREE) +++ { +++ id_decl = a68_make_identity_declaration_decl (defining_identifier, +++ ctx.module_definition_name); +++ TAX_TREE_DECL (TAX (defining_identifier)) = id_decl; +++ } +++ +++ /* If the identity declaration is in a public range then add the declaration +++ to the publicized declarations list. Otherwise chain the declaration in +++ the proper block and bind it. */ +++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) +++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, id_decl); +++ else +++ a68_add_decl (id_decl); +++ +++ /* Prepare the DECL_EXPR. */ +++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), +++ DECL_EXPR, +++ TREE_TYPE (id_decl), +++ id_decl)); +++ +++ unit_tree = a68_lower_tree (unit, ctx); +++ unit_tree = a68_consolidate_ref (MOID (unit), unit_tree); +++ tree expr = a68_low_ascription (MOID (defining_identifier), +++ id_decl, unit_tree); +++ +++ /* If the ascribed value is constant, mark the declaration as constant. */ +++ TREE_CONSTANT (id_decl) = TREE_CONSTANT (unit_tree); +++ +++ /* Tail in a compound expression with sub declarations, if any. */ +++ if (sub_expr != NULL_TREE) +++ { +++ if (expr != NULL_TREE) +++ expr = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (id_decl), +++ sub_expr, +++ expr); +++ else +++ expr = sub_expr; +++ } +++ +++ return expr; +++} +++ +++/* Lower a declarer. +++ +++ declarer : indicant; +++ longety, indicant; +++ shortety, indicant; +++ flex symbol, declarer; +++ flex symbol, bounds, declarer; +++ flex symbol, formal bounds, declarer; +++ bounds, declarer; +++ formal bounds, declarer; +++ ref symbol, declarer; +++ struct symbol, structure pack; +++ union symbol, union pack; +++ proc symbol, declarer; +++ proc symbol, formal declarers, declarer; +++ proc symbol, formal declarers, void symbol; +++ +++ +++ This handler lowes a DECLARER tree into an expression that evaluates to the +++ size of the actual declarer. Note that this is a self-contained handler and +++ it does traverse the sub-tree on its own. */ +++ +++tree +++a68_lower_declarer (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ gcc_unreachable (); +++} +++ +++/* Lower a declaration list. +++ +++ declaration list : mode declaration; +++ priority declaration; +++ brief operator declaration; +++ operator declaration; +++ identity declaration; +++ procedure declaration; +++ procedure variable declaration; +++ variable declaration; +++ environ name; +++ declaration list, comma symbol, declaration list; +++ +++ Process the subtree, which produces declarations associated with the current +++ context and which get added to the current block. The list of declarations +++ gets returned in nested compound expressions. */ +++ +++tree +++a68_lower_declaration_list (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (IS (SUB (p), DECLARATION_LIST)) +++ { +++ tree left = a68_lower_tree (SUB (p), ctx); +++ tree right = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ /* The trees `left' and `right' may be NULL_TREE if the declarations +++ under them didn't have an initializing expression. In that case, +++ replace them by nops which are removed at fold time. This is ugly, +++ but works. */ +++ if (left == NULL_TREE) +++ left = integer_zero_node; +++ if (right == NULL_TREE) +++ right = integer_zero_node; +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ void_type_node, +++ left, right); +++ } +++ else +++ return a68_lower_tree (SUB (p), ctx); +++} +++ +++/* Lower a procedure declaration. +++ +++ procedure declaration : proc symbol, defining identifier, assign symbol, routine text; +++ procedure declaration, comma symbol, +++ defining identifier, equals symbol, routine text. +++ +++ Each procedure declaration lowers into a declaration. */ +++ +++tree +++a68_lower_procedure_declaration (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree sub_func_decl = NULL_TREE; +++ NODE_T *defining_identifier; +++ if (IS (SUB (p), PROCEDURE_DECLARATION)) +++ { +++ sub_func_decl = a68_lower_tree (SUB (p), ctx); +++ defining_identifier = NEXT (NEXT (SUB (p))); +++ } +++ else if (IS (SUB (p), PROC_SYMBOL)) +++ { +++ defining_identifier = NEXT (SUB (p)); +++ } +++ else +++ gcc_unreachable (); +++ +++ NODE_T *routine_text = NEXT (NEXT (defining_identifier)); +++ +++ /* Lower the routine text to get a function decl. */ +++ ctx.proc_decl_identifier = defining_identifier; +++ ctx.proc_decl_operator = false; +++ tree func_decl = a68_lower_tree (routine_text, ctx); +++ +++ /* Tail in a compound expression with sub declarations, if any. */ +++ if (sub_func_decl != NULL_TREE) +++ { +++ if (func_decl != NULL_TREE) +++ func_decl = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (func_decl), +++ sub_func_decl, +++ func_decl); +++ else +++ func_decl = sub_func_decl; +++ } +++ +++ return func_decl; +++} +++ +++/* Lower a procedure variable declaration. +++ +++ procedure variable declaration +++ : proc symbol, defining identifier, assign symbol, routine text; +++ qualifier, proc symbol, defining identifier, assign symbol, routine text; +++ procedure variable declaration, comma symbol, defining identiier, assign symbol, routine text. +++ +++ This lowers into the declaration of a VAR_DECL which is a pointer to the +++ free standing routine yielded by the routine text. */ +++ +++tree +++a68_lower_procedure_variable_declaration (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree sub_decl = NULL_TREE; +++ NODE_T *defining_identifier; +++ if (IS (SUB (p), PROCEDURE_VARIABLE_DECLARATION)) +++ { +++ sub_decl = a68_lower_tree (SUB (p), ctx); +++ defining_identifier = NEXT (NEXT (SUB (p))); +++ } +++ else if (IS (SUB (p), PROC_SYMBOL)) +++ defining_identifier = NEXT (SUB (p)); +++ else if (IS (SUB (p), QUALIFIER)) +++ /* The qualifier determines what kind of generator is used in the variable +++ declaration. This is already annotated in the tax entry for the +++ definining identifier. */ +++ defining_identifier = NEXT (NEXT (SUB (p))); +++ else +++ gcc_unreachable (); +++ NODE_T *routine_text = NEXT (NEXT (defining_identifier)); +++ +++ /* The routine text lowers into a pointer to function. */ +++ ctx.proc_decl_identifier = NO_NODE; +++ ctx.proc_decl_operator = false; +++ tree routine = a68_lower_tree (routine_text, ctx); +++ +++ /* Create a declaration for the proc variable, if that hasn't been done +++ already. */ +++ tree decl = TAX_TREE_DECL (TAX (defining_identifier)); +++ if (decl == NULL_TREE) +++ { +++ decl = a68_make_variable_declaration_decl (defining_identifier, +++ ctx.module_definition_name); +++ TAX_TREE_DECL (TAX (defining_identifier)) = decl; +++ } +++ +++ /* If the variable declaration is in a public range then add the declaration +++ to the publicized declarations list. Otherwise chain the declaration in +++ the proper block and bind it. */ +++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) +++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, decl); +++ else +++ a68_add_decl (decl); +++ +++ /* Add a decl_expr in the current range. */ +++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), +++ DECL_EXPR, +++ TREE_TYPE (decl), +++ decl)); +++ /* Initialize. +++ +++ If the variable is heap allocated then the var_decl created above is a +++ pointer. We don't allocate the actual function on the heap, because the +++ scope of procedures is not global. */ +++ bool heap = HEAP (TAX (defining_identifier)) == HEAP_SYMBOL; +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (decl), decl, +++ heap ? fold_build1 (ADDR_EXPR, TREE_TYPE (decl), +++ routine) : routine)); +++ +++ /* Tail in a compound expression with sub declarations, if any. */ +++ if (sub_decl != NULL_TREE) +++ { +++ if (decl != NULL_TREE) +++ decl = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (decl), +++ sub_decl, +++ decl); +++ else +++ decl = sub_decl; +++ } +++ +++ return decl; +++} +++ +++/* Lower a priority declaration. +++ +++ This lowers to nothing. Operator priority is fully handled by the parser in +++ order to decide which operator declaration corresponds to each applied +++ operator. */ +++ +++tree +++a68_lower_priority_declaration (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return NULL_TREE; +++} +++ +++/* Lower a brief operator declaration. +++ +++ brief operator declaration +++ : op symbol, defining operator, equals symbol, routine text; +++ brief operator declaration, comma symbol, defining operator, equals symbol, routine text. +++ +++ The declarations low in a series of FUNCTION_DECLs, one per declared +++ operator. */ +++ +++tree +++a68_lower_brief_operator_declaration (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree sub_func_decl = NULL_TREE; +++ NODE_T *defining_operator; +++ +++ if (IS (SUB (p), BRIEF_OPERATOR_DECLARATION)) +++ { +++ sub_func_decl = a68_lower_tree (SUB (p), ctx); +++ defining_operator = NEXT (NEXT (SUB (p))); +++ } +++ else +++ defining_operator = NEXT (SUB (p)); +++ NODE_T *routine_text = NEXT (NEXT (defining_operator)); +++ +++ /* Lower the routine text to get a function decl. */ +++ ctx.proc_decl_identifier = defining_operator; +++ ctx.proc_decl_operator = true; +++ tree func_decl = a68_lower_tree (routine_text, ctx); +++ +++ /* Tail in a compound expression with sub declarations, if any. */ +++ if (sub_func_decl != NULL_TREE) +++ { +++ if (func_decl != NULL_TREE) +++ func_decl = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (func_decl), +++ sub_func_decl, +++ func_decl); +++ else +++ func_decl = sub_func_decl; +++ } +++ +++ return func_decl; +++} +++ +++/* Lower an operator declaration. +++ +++ operator declaration : operator plan, defining operator, equals symbol, unit; +++ operator declaration, comma symbol, defining operator, equals symbol, unit. +++ +++ Each operator declaration lowers into a declaration. */ +++ +++tree +++a68_lower_operator_declaration (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree sub_op_decl = NULL_TREE; +++ NODE_T *defining_operator; +++ +++ if (IS (SUB (p), OPERATOR_DECLARATION)) +++ { +++ sub_op_decl = a68_lower_tree (SUB (p), ctx); +++ defining_operator = NEXT (NEXT (SUB (p))); +++ } +++ else +++ defining_operator = NEXT (SUB (p)); +++ NODE_T *unit = NEXT (NEXT (defining_operator)); +++ +++ tree op_decl = TAX_TREE_DECL (TAX (defining_operator)); +++ if (op_decl == NULL_TREE) +++ { +++ op_decl = a68_make_identity_declaration_decl (defining_operator, +++ ctx.module_definition_name, +++ true /* indicant */); +++ TAX_TREE_DECL (TAX (defining_operator)) = op_decl; +++ } +++ +++ /* If the identity declaration is in a public range then add the declaration +++ to the publicized declarations list. Otherwise chain the declaration in +++ the proper block and bind it. */ +++ if (PUBLIC_RANGE (TABLE (TAX (defining_operator)))) +++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, op_decl); +++ else +++ a68_add_decl (op_decl); +++ +++ /* Prepare the DECL_EXPR. */ +++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), +++ DECL_EXPR, +++ TREE_TYPE (op_decl), +++ op_decl)); +++ /* Initialize. */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (op_decl), op_decl, +++ a68_lower_tree (unit, ctx))); +++ +++ /* Tail in a compound expression with sub declarations, if any. */ +++ if (sub_op_decl != NULL_TREE) +++ { +++ if (op_decl != NULL_TREE) +++ op_decl = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (op_decl), +++ sub_op_decl, +++ op_decl); +++ else +++ op_decl = sub_op_decl; +++ } +++ +++ return op_decl; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-generator.cc ++@@ -0,0 +1,533 @@ +++/* Lower generators. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++ +++typedef tree (*allocator_t) (tree, tree); +++ +++/* Lower to code that fill in BOUNDS and elements pointers in the given buffer +++ pointed by BUFFER at offset OFFSET according to the mode MODE, and evals to +++ BUFFER. */ +++ +++static tree +++fill_in_buffer (tree buffer, tree offset, tree_stmt_iterator *bounds, MOID_T *m, +++ allocator_t allocator) +++{ +++ tree filler = NULL_TREE; +++ tree type = CTYPE (m); +++ tree pointer_type = build_pointer_type (type); +++ +++ a68_push_stmt_list (M_VOID); +++ +++ if (m == M_INT || m == M_BOOL || m == M_CHAR || m == M_REAL || IS_REF (m)) +++ { +++ tree val_address = fold_build2 (POINTER_PLUS_EXPR, pointer_type, buffer, offset); +++ tree init_val = a68_get_skip_tree (m); +++ tree modify = fold_build2 (MODIFY_EXPR, +++ type, +++ fold_build1 (INDIRECT_REF, type, val_address), +++ init_val); +++ a68_add_stmt (modify); +++ } +++ else if (!HAS_ROWS (m)) +++ { +++ /* This mode has no rows. We can just fill in with zeroes, which +++ translates into SKIP values for all possibly contained types. */ +++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); +++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, +++ buffer, +++ integer_zero_node, +++ fold_convert (sizetype, size_in_bytes (CTYPE (m)))); +++ a68_add_stmt (call); +++ } +++ else if (m == M_STRING) +++ { +++ /* Strings are rows but handled especially as they are created empty and +++ don't feature bounds in the formal declarer. */ +++ +++ /* First the descriptor. */ +++ tree pointer_byte_size = size_int (POINTER_SIZE / BITS_PER_UNIT); +++ tree lb_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ fold_build1 (INDIRECT_REF, ssizetype, lb_address), +++ ssize_int (1))); +++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); +++ tree ub_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ fold_build1 (INDIRECT_REF, ssizetype, ub_address), +++ ssize_int (0))); +++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); +++ tree stride_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ fold_build1 (INDIRECT_REF, sizetype, stride_address), +++ size_in_bytes (a68_char_type))); +++ +++ /* The data is an empty string, i.e NULL. */ +++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); +++ tree elems_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ fold_build1 (INDIRECT_REF, build_pointer_type (a68_char_type), +++ elems_address), +++ build_int_cst (build_pointer_type (a68_char_type), 0))); +++ +++ /* The size of the elements is zero. */ +++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); +++ tree elems_size_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ fold_build1 (INDIRECT_REF, build_pointer_type (a68_char_type), +++ elems_size_address), +++ size_zero_node)); +++ } +++ else if (A68_ROW_TYPE_P (type)) +++ { +++ /* If the row mode is flexible we can deflex it now: these also must have +++ bounds specified for them, with the only exception of strings/flexible +++ rows of chars, which are handled above. Note we cannot use DEFLEXED +++ here because that contains the fully deflexed mode. For example, +++ DEFLEXED returns [][]INT for FLEX[]FLEX[]INT, and we want []FLEX[]INT +++ instead. */ +++ if (IS_FLEX (m)) +++ m = SUB (m); +++ +++ /* Consume two bounds from BOUNDS for each dimension and patch them at +++ their right offsets. Note that we have to process from upper +++ dimension to lower dimension so we can calculate the stride as we +++ go. */ +++ size_t dim = DIM (m); +++ +++ /* Collect lower and upper bounds and calculate the number of elements of +++ the multiple. */ +++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ tree num_elems = NULL_TREE; +++ for (size_t i = 0; i < dim; ++i) +++ { +++ /* Note we have to convert the bounds from CTYPE(M_INT) to +++ ssizetype. */ +++ lower_bounds[i] = fold_convert (ssizetype, save_expr (tsi_stmt (*bounds))); +++ tsi_next (bounds); +++ upper_bounds[i] = fold_convert (ssizetype, save_expr (tsi_stmt (*bounds))); +++ tsi_next (bounds); +++ +++ tree dim_num_elems +++ = fold_build2 (PLUS_EXPR, sizetype, +++ fold_convert (sizetype, +++ fold_build2 (MINUS_EXPR, ssizetype, +++ upper_bounds[i], lower_bounds[i])), +++ size_one_node); +++ dim_num_elems = fold_build3 (COND_EXPR, +++ sizetype, +++ fold_build2 (LT_EXPR, ssizetype, +++ upper_bounds[i], lower_bounds[i]), +++ size_zero_node, +++ dim_num_elems); +++ if (num_elems == NULL_TREE) +++ num_elems = dim_num_elems; +++ else +++ num_elems = fold_build2 (MULT_EXPR, sizetype, num_elems, dim_num_elems); +++ } +++ +++ /* Calculate strides. */ +++ tree *strides = (tree *) xmalloc (sizeof (tree) * dim); +++ a68_multiple_compute_strides (type, dim, lower_bounds, upper_bounds, strides); +++ +++ /* Now emit instructions to patch the bounds and strides. */ +++ tree pointer_byte_size = size_int (POINTER_SIZE / BITS_PER_UNIT); +++ for (size_t i = 0; i < dim; ++i) +++ { +++ /* Lower bound. */ +++ tree lb_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ void_type_node, +++ fold_build1 (INDIRECT_REF, ssizetype, lb_address), +++ lower_bounds[i])); +++ /* Upper bound. */ +++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); +++ tree ub_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ void_type_node, +++ fold_build1 (INDIRECT_REF, ssizetype, ub_address), +++ upper_bounds[i])); +++ /* Stride. */ +++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); +++ tree stride_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ void_type_node, +++ fold_build1 (INDIRECT_REF, sizetype, stride_address), +++ strides[i])); +++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); +++ } +++ free (lower_bounds); +++ free (upper_bounds); +++ free (strides); +++ +++ /* Now allocate space for the elements. */ +++ MOID_T *elem_mode = SUB (m); +++ tree elem_size = fold_convert (sizetype, size_in_bytes (CTYPE (elem_mode))); +++ tree elems_size = save_expr (fold_build2 (MULT_EXPR, sizetype, elem_size, num_elems)); +++ tree elemsptr = (*allocator) (CTYPE (elem_mode), elems_size); +++ elemsptr = save_expr (elemsptr); +++ +++ /* And initialize them. */ +++ if (elem_mode == M_INT || elem_mode == M_BOOL || elem_mode == M_CHAR +++ || elem_mode == M_REAL || IS_REF (elem_mode)) +++ { +++ /* Memsetting the buffer with either zeroes or ones satisfies the +++ SKIP value for these modes. */ +++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); +++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, +++ elemsptr, +++ integer_zero_node, +++ elems_size); +++ a68_add_stmt (call); +++ } +++ else +++ { +++ /* Recurse in a loop to fill in elements. */ +++ a68_push_range (NULL); +++ tree num_elems_var = a68_lower_tmpvar ("numelems%", size_type_node, +++ num_elems); +++ tree index = a68_lower_tmpvar ("index%", size_type_node, size_zero_node); +++ tree elems_var = a68_lower_tmpvar ("elems%", TREE_TYPE (elemsptr), +++ elemsptr); +++ tree elem_offset = a68_lower_tmpvar ("elem_offset%", size_type_node, +++ size_zero_node); +++ +++ /* Begin of loop body. */ +++ a68_push_range (NULL); +++ a68_add_stmt (fold_build1 (EXIT_EXPR, +++ void_type_node, +++ fold_build2 (EQ_EXPR, +++ size_type_node, +++ index, num_elems_var))); +++ a68_add_stmt (fill_in_buffer (elems_var, elem_offset, bounds, elem_mode, +++ allocator)); +++ /* Increase elem_offset */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, sizetype, +++ elem_offset, +++ fold_build2 (PLUS_EXPR, sizetype, +++ elem_offset, elem_size))); +++ /* index++ */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, +++ size_type_node, +++ index, size_one_node)); +++ tree loop_body = a68_pop_range (); +++ /* End of loop body. */ +++ a68_add_stmt (fold_build1 (LOOP_EXPR, +++ void_type_node, +++ loop_body)); +++ a68_add_stmt (a68_pop_range ()); +++ } +++ +++ /* Patch the elements% field. */ +++ tree elems_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ void_type_node, +++ fold_build1 (INDIRECT_REF, +++ build_pointer_type (CTYPE (elem_mode)), elems_address), +++ elemsptr)); +++ /* Patch the elements_size% field. */ +++ offset = fold_build2 (PLUS_EXPR, sizetype, offset, pointer_byte_size); +++ tree elems_size_address = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ void_type_node, +++ fold_build1 (INDIRECT_REF, +++ sizetype, +++ elems_size_address), +++ elems_size)); +++ } +++ else if (A68_STRUCT_TYPE_P (type)) +++ { +++ /* Initialize the struct's fields in the allocated buffer. */ +++ tree base = a68_lower_tmpvar ("base%", TREE_TYPE (buffer), +++ fold_build2 (POINTER_PLUS_EXPR, +++ TREE_TYPE (buffer), +++ buffer, offset)); +++ PACK_T *field_pack = PACK (m); +++ for (tree field = TYPE_FIELDS (type); field; field = TREE_CHAIN (field)) +++ { +++ gcc_assert (COMPLETE_TYPE_P (TREE_TYPE (field))); +++ // printf ("BYTE_POSITION\n"); +++ // debug_tree (byte_position (field)); +++ a68_add_stmt (fill_in_buffer (base, byte_position (field), +++ bounds, MOID (field_pack), allocator)); +++ FORWARD (field_pack); +++ } +++ } +++ else if (A68_UNION_TYPE_P (type)) +++ { +++ /* Union values are initialized with an overhead of (sizetype) -1, which +++ means it is not initialized. Note that row declarers in united modes +++ are formal declarers, so they never contribute bounds. */ +++ tree overhead_address +++ = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), buffer, offset); +++ tree uninitialized = fold_convert (sizetype, build_minus_one_cst (ssizetype)); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ fold_build1 (INDIRECT_REF, sizetype, overhead_address), +++ uninitialized)); +++#if 0 +++ /* Set the rest of the union with zeroes. */ +++ tree value_address +++ = fold_build2 (POINTER_PLUS_EXPR, TREE_TYPE (buffer), +++ buffer, +++ fold_build2 (PLUS_EXPR, sizetype, offset, size_in_bytes (sizetype))); +++ +++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); +++ tree call = builtin_decl_explicit (BUILT_IN_MEMSET); +++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 3, +++ value_address, +++ integer_zero_node, +++ size_in_bytes (TREE_TYPE (value_field))); +++ a68_add_stmt (call); +++#endif +++ } +++ else +++ gcc_unreachable (); +++ +++ a68_add_stmt (buffer); +++ filler = a68_pop_stmt_list (); +++ TREE_TYPE (filler) = pointer_type; +++ return filler; +++} +++ +++/* Lower to code that generates storage for a value of mode M, using bounds +++ from BOUNDS. */ +++ +++static tree +++gen_mode (MOID_T *m, tree_stmt_iterator *bounds, allocator_t allocator) +++{ +++ /* Allocate space for the value and fill it. */ +++ tree buffer = (*allocator) (CTYPE (m), size_in_bytes (CTYPE (m))); +++ buffer = save_expr (buffer); +++ return fill_in_buffer (buffer, size_zero_node, bounds, m, allocator); +++} +++ +++/* Collect row bounds from BOUNDS. +++ Lower bounds are optional, and if not found they default to 1. */ +++ +++static void +++collect_bounds (NODE_T *p, LOW_CTX_T ctx) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, BOUNDS_LIST)) +++ collect_bounds (SUB (p), ctx); +++ else if (IS (p, BOUND)) +++ collect_bounds (SUB (p), ctx); +++ else if (IS (p, UNIT)) +++ { +++ /* First the lower bound. */ +++ tree lower_bound; +++ if (NEXT (p) != NO_NODE && IS (NEXT (p), COLON_SYMBOL)) +++ { +++ lower_bound = a68_lower_tree (p, ctx); +++ p = NEXT_NEXT (p); +++ } +++ else +++ /* Default lower bound. */ +++ lower_bound = integer_one_node; +++ +++ /* Now the upper bound. */ +++ tree upper_bound = a68_lower_tree (p, ctx); +++ +++ /* See the comment for collect_declarer_bounds for an explanation for +++ the usage of save_expr here. */ +++ a68_add_stmt (save_expr (lower_bound)); +++ a68_add_stmt (save_expr (upper_bound)); +++ } +++ } +++} +++ +++/* Append all the bounds found in the given declarer in the current statements +++ list. */ +++ +++static void +++collect_declarer_bounds_1 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, BOUNDS)) +++ collect_bounds (SUB (p), ctx); +++ else if (IS (p, INDICANT) && IS_LITERALLY (p, "STRING")) +++ return; +++ else if (IS (p, INDICANT)) +++ { +++ if (TAX (p) != NO_TAG && HAS_ROWS (MOID (TAX (p)))) +++ /* Continue from definition at MODE A = .... */ +++ collect_declarer_bounds_1 (NEXT_NEXT (NODE (TAX (p))), ctx); +++ } +++ else if (IS (p, DECLARER) +++ && (IS_UNION (MOID (p)) || !HAS_ROWS (MOID (p)))) +++ return; +++ else +++ collect_declarer_bounds_1 (SUB (p), ctx); +++ } +++} +++ +++/* Given a declarer node, return a statements list with all the expressions of +++ the bounds within it. +++ +++ Note that the language rules mandates that the bounds expression shall be +++ evaluated just once even when they are used by several generators, such as +++ in +++ +++ [n +:= 1]real a, b; +++ +++ Therefore the expressions are saved in save_exprs and the statements list +++ is cached in the CDECL field of the parse tree node. */ +++ +++static tree +++collect_declarer_bounds (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (CDECL (p) == NULL_TREE) +++ { +++ a68_push_stmt_list (M_VOID); +++ collect_declarer_bounds_1 (SUB (p), ctx); +++ CDECL (p) = a68_pop_stmt_list (); +++ } +++ +++ return CDECL (p); +++} +++ +++/* Low the elaboration of a generator. +++ +++ The lowered code evaluates to a pointer. +++ +++ DECLARER is the actual declarer passed to the generator. +++ +++ MODE is the mode of the value to generate. +++ +++ HEAP is true if we are lowering a heap generator, false if we are lowering a +++ LOC generator. */ +++ +++tree +++a68_low_generator (NODE_T *declarer, +++ MOID_T *mode, +++ bool heap, LOW_CTX_T ctx) +++{ +++ /* If the declarer is a mode indicant which has a recursive definition then +++ we need to lower to a function which gets immediately called rather than +++ an expression, to handle the recursivity. In that case, though, we need +++ to always heap allocated memory for obvious reasons, which sucks, but such +++ is life. */ +++ +++ if (IS (SUB (declarer), INDICANT) && TAX (SUB (declarer)) != NO_TAG +++ && IS_RECURSIVE (TAX (SUB (declarer)))) +++ { +++ if (TAX_TREE_DECL (TAX (SUB (declarer))) != NULL_TREE) +++ { +++ /* This is a recursive mode indicant. Just call the function. */ +++ return save_expr (build_call_expr_loc (a68_get_node_location (SUB (declarer)), +++ TAX_TREE_DECL (TAX (SUB (declarer))), +++ 0)); +++ } +++ +++ tree ret_type = build_pointer_type (CTYPE (mode)); +++ tree func_decl = build_decl (a68_get_node_location (declarer), +++ FUNCTION_DECL, +++ NULL_TREE /* name, set below */, +++ build_function_type (ret_type, void_list_node)); +++ char *name = xasprintf ("genroutine%d", DECL_UID (func_decl)); +++ DECL_NAME (func_decl) = a68_get_mangled_identifier (name); +++ free (name); +++ DECL_EXTERNAL (func_decl) = 0; +++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); +++ TREE_ADDRESSABLE (func_decl) = 1; +++ TREE_PUBLIC (func_decl) = a68_in_global_range (); +++ TREE_STATIC (func_decl) = 1; +++ TAX_TREE_DECL (TAX (SUB (declarer))) = func_decl; +++ +++ a68_add_decl (func_decl); +++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (declarer), +++ DECL_EXPR, +++ TREE_TYPE (func_decl), +++ func_decl)); +++ announce_function (func_decl); +++ a68_push_function_range (func_decl, ret_type); +++ +++ /* Collect bounds from declarer. */ +++ tree bounds = collect_declarer_bounds (declarer, ctx); +++ +++ /* Allocate and initialize a memory buffer for a value of mode MODE with +++ bounds in BOUNDS. */ +++ tree_stmt_iterator bounds_iter = tsi_start (bounds); +++ tree gen = gen_mode (mode, &bounds_iter, a68_lower_malloc); +++ a68_pop_function_range (gen); +++ /* Avoid this generator function, which uses the global lexical +++ environment, to be reused in other contexts. */ +++ TAX_TREE_DECL (TAX (SUB (declarer))) = NULL_TREE; +++ return save_expr (build_call_expr_loc (a68_get_node_location (declarer), +++ func_decl, 0)); +++ } +++ else +++ { +++ /* Collect bounds from declarer. */ +++ tree bounds = collect_declarer_bounds (declarer, ctx); +++ +++ /* Allocate and initialize a memory buffer for a value of mode MODE with +++ bounds in BOUNDS. */ +++ tree_stmt_iterator bounds_iter = tsi_start (bounds); +++ tree gen = gen_mode (mode, &bounds_iter, +++ heap ? a68_lower_malloc : a68_lower_alloca); +++ return gen; +++ } +++} +++ +++/* Allocate storage for a value of mode M. +++ NBOUNDS is the number of bounds in BOUNDS. */ +++ +++tree +++a68_low_gen (MOID_T *m, size_t nbounds, tree *bounds, bool use_heap) +++{ +++ /* First collect bounds from BOUNDS into a statements list, which is what +++ gen_mode expects. */ +++ tree bounds_list = alloc_stmt_list (); +++ for (size_t i = 0; i < nbounds; ++i) +++ append_to_statement_list_force (bounds[i], &bounds_list); +++ allocator_t allocator = use_heap ? a68_lower_malloc : a68_lower_alloca; +++ +++ tree_stmt_iterator q = tsi_start (bounds_list); +++ tree ret = gen_mode (m, &q, allocator); +++ free_stmt_list (bounds_list); +++ return ret; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-ints.cc ++@@ -0,0 +1,327 @@ +++/* Lowering routines for all things related to INT values. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with the yielind of SKIP for the given integral mode. */ +++ +++tree +++a68_get_int_skip_tree (MOID_T *m) +++{ +++ tree type; +++ +++ if (m == M_INT) +++ type = a68_int_type; +++ else if (m == M_LONG_INT) +++ type = a68_long_int_type; +++ else if (m == M_LONG_LONG_INT) +++ type = a68_long_long_int_type; +++ else if (m == M_SHORT_INT) +++ type = a68_short_int_type; +++ else if (m == M_SHORT_SHORT_INT) +++ type = a68_short_short_int_type; +++ else +++ gcc_unreachable (); +++ +++ return build_int_cst (type, 0); +++} +++ +++/* Given an integral type, build the maximum value expressable in that +++ type. */ +++ +++tree +++a68_int_maxval (tree type) +++{ +++ return fold_convert (type, TYPE_MAX_VALUE (type)); +++} +++ +++/* Given an integral type, build the minimum value expressable in that +++ type. */ +++ +++tree +++a68_int_minval (tree type) +++{ +++ return fold_convert (type, TYPE_MIN_VALUE (type)); +++} +++ +++/* Given an integral type, build an INT with the number of decimal digits +++ required to represent a value of that typ, not including sign. */ +++ +++tree +++a68_int_width (tree type) +++{ +++ /* Note that log10 (2) is ~ 0.3. +++ Thanks to Andrew Pinski for suggesting using this expression. */ +++ return fold_build2 (PLUS_EXPR, a68_int_type, +++ build_int_cst (a68_int_type, 1), +++ fold_build2 (TRUNC_DIV_EXPR, +++ a68_int_type, +++ fold_build2 (MULT_EXPR, a68_int_type, +++ build_int_cst (a68_int_type, TYPE_PRECISION (type)), +++ build_int_cst (a68_int_type, 3)), +++ build_int_cst (a68_int_type, 10))); +++} +++ +++/* Given an integer value VAL, return -1 if it is less than zero, 0 if it is +++ zero and +1 if it is bigger than zero. The built value is always of mode +++ M_INT. */ +++ +++tree +++a68_int_sign (tree val) +++{ +++ tree zero = build_int_cst (TREE_TYPE (val), 0); +++ return fold_build3 (COND_EXPR, +++ a68_int_type, +++ fold_build2 (EQ_EXPR, integer_type_node, val, zero), +++ build_int_cst (a68_int_type, 0), +++ fold_build3 (COND_EXPR, +++ a68_int_type, +++ fold_build2 (GT_EXPR, integer_type_node, val, zero), +++ build_int_cst (a68_int_type, 1), +++ build_int_cst (a68_int_type, -1))); +++} +++ +++/* Absolute value of an integer. */ +++ +++tree +++a68_int_abs (tree val) +++{ +++ return fold_build1 (ABS_EXPR, TREE_TYPE (val), val); +++} +++ +++/* Build the integral value lengthened from the value of VAL, from mode +++ FROM_MODE to mode TO_MODE. */ +++ +++tree +++a68_int_leng (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) +++{ +++ /* Lengthening can be done by just a cast. */ +++ return fold_convert (CTYPE (to_mode), val); +++} +++ +++/* Build the integral value that can be lengthened to the value of VAL, from +++ mode FROM_MODE to mode TO_MODE. +++ +++ If VAL cannot be represented in TO_MODE because it is bigger than the most +++ positive value representable in TO_MODE, then it is truncated to that value. +++ +++ Likewise, if VAL cannot be represented in TO_MODE because it is less than +++ the most negative value representable in TO_MODE, then it is truncated to +++ that value. */ +++ +++tree +++a68_int_shorten (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) +++{ +++ tree most_positive_value = fold_convert (CTYPE (from_mode), +++ a68_int_maxval (CTYPE (to_mode))); +++ tree most_negative_value = fold_convert (CTYPE (from_mode), +++ a68_int_minval (CTYPE (to_mode))); +++ +++ val = save_expr (val); +++ most_positive_value = save_expr (most_positive_value); +++ most_negative_value = save_expr (most_negative_value); +++ return fold_build3 (COND_EXPR, CTYPE (to_mode), +++ fold_build2 (GT_EXPR, a68_bool_type, val, most_positive_value), +++ fold_convert (CTYPE (to_mode), most_positive_value), +++ fold_build3 (COND_EXPR, CTYPE (to_mode), +++ fold_build2 (LT_EXPR, a68_bool_type, val, most_negative_value), +++ fold_convert (CTYPE (to_mode), most_negative_value), +++ fold_convert (CTYPE (to_mode), val))); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates the +++ addition of A and B. */ +++ +++tree +++a68_int_plus (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, PLUS_EXPR, CTYPE (m), a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates the +++ subtraction of A by B. */ +++ +++tree +++a68_int_minus (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, MINUS_EXPR, CTYPE (m), a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates the +++ multiplication of A by B. */ +++ +++tree +++a68_int_mult (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, MULT_EXPR, CTYPE (m), a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates the +++ division of A by B. */ +++ +++tree +++a68_int_div (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, TRUNC_DIV_EXPR, CTYPE (m), a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates +++ whether A = B. */ +++ +++tree +++a68_int_eq (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates +++ whether A /= B. */ +++ +++tree +++a68_int_ne (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates +++ whether A < B. */ +++ +++tree +++a68_int_lt (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates +++ whether A <= B. */ +++ +++tree +++a68_int_le (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates +++ whether A > B. */ +++ +++tree +++a68_int_gt (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two integral values of mode M, build an expression that calculates +++ whether A >= B. */ +++ +++tree +++a68_int_ge (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two integral values of mode M, build and expression that calculates the +++ modulus as specified by the Revised Report: +++ +++ OP MOD = (L INT a, b) L INT: +++ (INT r = a - a % b * b; r < 0 | r + ABS b | r) +++*/ +++ +++tree +++a68_int_mod (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ a = save_expr (a); +++ b = save_expr (b); +++ tree r = a68_int_minus (m, a, a68_int_mult (m, a68_int_div (m, a, b), b)); +++ +++ r = save_expr (r); +++ return fold_build3_loc (loc, COND_EXPR, CTYPE (m), +++ a68_int_lt (r, build_int_cst (CTYPE (m), 0)), +++ a68_int_plus (m, r, a68_int_abs (b)), +++ r); +++} +++ +++/* Given two integral values values, the first of mode M an the second of mode +++ INT, build an expression that calculates the exponentiation of A by B, as +++ specified by the Revised Report: +++ +++ OP ** = (L INT a, INT b) L INT: +++ (b >= 0 | L INT p := L 1; TO b DO p := p * a OD; p) +++*/ +++ +++tree +++a68_int_pow (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ tree zero = build_int_cst (CTYPE (m), 0); +++ tree one = build_int_cst (CTYPE (m), 1); +++ +++ a = save_expr (a); +++ b = save_expr (fold_convert (CTYPE (m), b)); +++ +++ a68_push_range (m); +++ tree index = a68_lower_tmpvar ("index%", CTYPE (m), zero); +++ tree p = a68_lower_tmpvar ("p%", CTYPE (m), one); +++ +++ /* Begin of loop body. */ +++ a68_push_range (NULL); +++ { +++ /* if (index == b) break; */ +++ a68_add_stmt (fold_build1 (EXIT_EXPR, +++ void_type_node, +++ fold_build2 (EQ_EXPR, CTYPE (m), +++ index, b))); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, CTYPE (m), +++ p, a68_int_mult (m, p, a))); +++ +++ /* index++ */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, CTYPE (m), +++ index, one)); +++ } +++ tree loop_body = a68_pop_range (); +++ a68_add_stmt (fold_build1 (LOOP_EXPR, +++ void_type_node, +++ loop_body)); +++ a68_add_stmt (p); +++ tree calculate_p = a68_pop_range (); +++ return fold_build3_loc (loc, COND_EXPR, CTYPE (m), +++ a68_int_ge (b, zero), +++ calculate_p, zero); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-misc.cc ++@@ -0,0 +1,234 @@ +++/* Lower miscellaneous tree nodes to GENERIC. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Lower an assertion. +++ +++ assertion : assert symbol, enclosed clause. +++*/ +++ +++tree +++a68_lower_assertion (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (!OPTION_ASSERT (&A68_JOB)) +++ return a68_get_empty(); +++ +++ /* Build the call to the assert run-time function. */ +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_ASSERT, +++ void_type_node, 2, +++ filename, +++ build_int_cst (unsigned_type_node, lineno)); +++ /* Check condition and call assert if required. */ +++ tree assertion = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ a68_void_type, +++ build2_loc (a68_get_node_location (p), +++ TRUTH_ORIF_EXPR, +++ a68_int_type, +++ a68_lower_tree (NEXT (SUB (p)), ctx), +++ fold_build2 (COMPOUND_EXPR, +++ a68_int_type, +++ call, +++ build_int_cst (a68_int_type, 0))), +++ a68_get_empty ()); +++ TREE_SIDE_EFFECTS (assertion) = 1; +++ return assertion; +++} +++ +++/* Lower a jump to a label. +++ +++ jump : goto symbol, identifier; +++ identifier. +++ +++ A jump lowers into a ({ GOTO_EXPR; EMPTY }). */ +++ +++tree +++a68_lower_jump (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *label_identifier = SUB (p); +++ MOID_T *jump_mode = MOID (p); +++ if (!IS (label_identifier, IDENTIFIER)) +++ FORWARD (label_identifier); +++ +++ /* Create LABEL_DECL if necessary and chain it in both current block and bind +++ expression. */ +++ if (TAX_TREE_DECL (TAX (label_identifier)) == NULL_TREE) +++ { +++ tree label_decl = build_decl (a68_get_node_location (label_identifier), +++ LABEL_DECL, +++ a68_get_mangled_identifier (NSYMBOL (label_identifier)), +++ void_type_node); +++ TAX_TREE_DECL (TAX (label_identifier)) = label_decl; +++ } +++ +++ MOID (label_identifier) = M_VOID; +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ CTYPE (jump_mode), +++ fold_build1_loc (a68_get_node_location (p), +++ GOTO_EXPR, +++ void_type_node, +++ a68_lower_tree (label_identifier, ctx)), +++ a68_get_skip_tree (jump_mode)); +++} +++ +++/* Lower a parameter into a chain of PARAM_DECLs. +++ +++ parameter : declarer, identifier; +++ parameter, comma symbol, identifier. +++*/ +++ +++tree +++a68_lower_parameter (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree prev_parm_decls = NULL_TREE; +++ NODE_T *identifier = NO_NODE; +++ if (IS (SUB (p), PARAMETER)) +++ { +++ prev_parm_decls = a68_lower_tree (SUB (p), ctx); +++ identifier = NEXT (NEXT (SUB (p))); +++ } +++ else +++ identifier = NEXT (SUB (p)); +++ +++ /* Create the PARM_DECL. */ +++ tree parm_decl = build_decl (a68_get_node_location (p), +++ PARM_DECL, +++ a68_get_mangled_identifier (NSYMBOL (identifier)), +++ CTYPE (MOID (identifier))); +++ DECL_CONTEXT (parm_decl) = current_function_decl; +++ DECL_ARG_TYPE (parm_decl) = TREE_TYPE (parm_decl); +++ TAX_TREE_DECL (TAX (identifier)) = parm_decl; +++ +++ layout_decl (parm_decl, 0); +++ +++ if (prev_parm_decls != NULL) +++ return chainon (prev_parm_decls, parm_decl); +++ else +++ return parm_decl; +++} +++ +++/* Lower a list of parameters into a chain of PARAM_DECLs. +++ +++ parameter list : parameter; +++ parameter list; comma symbol; parameter. +++*/ +++ +++tree +++a68_lower_parameter_list (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree parm_decl = NULL_TREE; +++ tree prev_parm_decls = NULL_TREE; +++ if (IS (SUB (p), PARAMETER_LIST)) +++ { +++ prev_parm_decls = a68_lower_tree (SUB (p), ctx); +++ parm_decl = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ } +++ else +++ parm_decl = a68_lower_tree (SUB (p), ctx); +++ +++ gcc_assert (parm_decl != NULL_TREE); +++ if (prev_parm_decls != NULL) +++ return chainon (prev_parm_decls, parm_decl); +++ else +++ return parm_decl; +++} +++ +++/* Lower a parameter pack into a chain of PARAM_DECLs. +++ +++ parameter pack : open symbol, parameter list, close symbol. +++*/ +++ +++tree +++a68_lower_parameter_pack (NODE_T *p, LOW_CTX_T ctx) +++{ +++ /* Lower the contained PARAMETER_LIST. */ +++ return a68_lower_tree (NEXT (SUB (p)), ctx); +++} +++ +++/* Lower an applied operator. +++ +++ Applied operators lower into a function object that gets one argument in +++ case of monadic operators, or two arguments in case of dyadic operators. */ +++ +++tree +++a68_lower_operator (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* This is an user defined operator. Handle it in a similar way than applied +++ identifiers. */ +++ tree func_decl = TAX_TREE_DECL (TAX (p)); +++ if (func_decl == NULL_TREE) +++ { +++ bool external = (MOIF (TAX (p)) != NO_MOIF); +++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); +++ if (IN_PROC (TAX (p))) +++ { +++ if (external) +++ func_decl = a68_make_proc_identity_declaration_decl (p, +++ NAME (MOIF (TAX (p))), +++ true /* indicant */, +++ external, +++ extern_symbol); +++ else +++ func_decl = a68_make_proc_identity_declaration_decl (p, +++ ctx.module_definition_name, +++ true /* indicant */); +++ } +++ else +++ { +++ if (external) +++ func_decl = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), +++ true /* indicant */, external, +++ extern_symbol); +++ else +++ func_decl = a68_make_identity_declaration_decl (p, ctx.module_definition_name, +++ true /* indicant */); +++ } +++ TAX_TREE_DECL (TAX (p)) = func_decl; +++ } +++ return func_decl; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-moids.cc ++@@ -0,0 +1,729 @@ +++/* Lower Algol 68 modes to GCC trees. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "stringpool.h" +++#include "tree.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "print-tree.h" +++ +++#include "a68.h" +++ +++static tree a68_lower_mode (MOID_T *m); +++ +++/* +++ * Support routines and definitions. +++ */ +++ +++/* Build a stub TYPE_DECL for a given TYPE. +++ +++ This is used for TYPE_STUB_DECL so we can generate debug info for all our +++ modes, so the TYPE_DECL has no name. */ +++ +++static void +++build_stub_type_decl (tree type, tree context) +++{ +++ if (TYPE_STUB_DECL (type)) +++ return; +++ +++ tree decl = build_decl (UNKNOWN_LOCATION, +++ TYPE_DECL, +++ NULL_TREE /* name */, +++ type); +++ TREE_PUBLIC (decl) = 1; +++ DECL_CONTEXT (decl) = context; +++ TYPE_CONTEXT (type) = DECL_CONTEXT (decl); +++ TYPE_NAME (type) = decl; /* Weird. This is for typedefs! */ +++ TYPE_STUB_DECL (type) = decl; +++} +++ +++/* Builds a record type whose name is NAME. NFIELDS is the number of fields, +++ provided as field ident/type pairs. +++ +++ This code is copied from the D front end. */ +++ +++static tree +++make_struct_type (tree type, const char *name, int nfields, ...) +++{ +++ tree fields = NULL_TREE; +++ va_list ap; +++ +++ va_start (ap, nfields); +++ +++ for (int i = 0; i < nfields; i++) +++ { +++ tree ident = va_arg (ap, tree); +++ tree type = va_arg (ap, tree); +++ tree field = build_decl (BUILTINS_LOCATION, FIELD_DECL, ident, type); +++ DECL_CHAIN (field) = fields; +++ fields = field; +++ } +++ +++ va_end (ap); +++ +++ if (type == NULL_TREE) +++ type = make_node (RECORD_TYPE); +++ finish_builtin_struct (type, name, fields, NULL_TREE); +++ +++ return type; +++} +++ +++/* Iterate over all the field selectors FIELDS of a structure type and add them +++ as fields to CONTEXT. Returns the number of field selectors found. */ +++ +++static size_t +++chain_struct_fields (PACK_T *fields, tree context) +++{ +++ PACK_T *elem; +++ size_t num_fields; +++ +++ for (num_fields = 0, elem = fields; +++ elem != NO_PACK; +++ FORWARD (elem), ++num_fields) +++ { +++ const char *field_name = TEXT (elem); +++ MOID_T *field_mode = MOID (elem); +++ tree field_type = a68_lower_mode (field_mode); +++ +++ /* Create the field declaration. +++ The declaration is not a compiler-generated entity. +++ Do not ignore the declaration for symbolic debug purposes. */ +++ tree field_decl = build_decl ((NODE (field_mode) +++ ? a68_get_node_location (NODE (field_mode)) +++ : UNKNOWN_LOCATION), +++ FIELD_DECL, +++ field_name ? get_identifier (field_name) : NULL_TREE, +++ field_type); +++ DECL_ARTIFICIAL (field_decl) = 0; +++ DECL_IGNORED_P (field_decl) = 0; +++ +++ /* If the mode of the field is not a ref then references to the field +++ cannot appear in a LHS of an assignment. */ +++ TREE_READONLY (field_decl) = IS_REF (field_mode); +++ +++ /* Associate the tree field declaration and the front end node. */ +++ DECL_LANG_SPECIFIC (field_decl) = +++ (NODE (field_mode) ? a68_build_lang_decl (NODE (field_mode)) : NULL); +++ +++ /* Chain the field declaration in its containing context. */ +++ DECL_FIELD_CONTEXT (field_decl) = context; +++ TYPE_FIELDS (context) = chainon (TYPE_FIELDS (context), field_decl); +++ } +++ +++ return num_fields; +++} +++ +++/* If the union or struct type TYPE completes the type of any previous field +++ declarations, lay them out now. */ +++ +++static void +++finish_incomplete_fields (tree type) +++{ +++ for (tree fwdref = TYPE_FORWARD_REFERENCES (type); fwdref != NULL_TREE; +++ fwdref = TREE_CHAIN (fwdref)) +++ { +++ tree field = TREE_VALUE (fwdref); +++ tree struct_or_union_type = DECL_FIELD_CONTEXT (field); +++ +++ relayout_decl (field); +++ bool type_complete = true; +++ for (tree field = TYPE_FIELDS (struct_or_union_type); +++ field; +++ field = DECL_CHAIN (field)) +++ { +++ if (!COMPLETE_TYPE_P (TREE_TYPE (field))) +++ { +++ type_complete = false; +++ break; +++ } +++ } +++ +++ if (type_complete) +++ { +++ // XXX why this fires +++ // gcc_assert (!COMPLETE_TYPE_P (struct_or_union_type)); +++ layout_type (struct_or_union_type); +++ /* Set the back-end type mode now that all fields have had their size +++ set. */ +++ compute_record_mode (struct_or_union_type); +++ } +++ }; +++ +++ /* No more forward references to process. */ +++ TYPE_FORWARD_REFERENCES (type) = NULL_TREE; +++} +++ +++/* +++ * Mode lowering routines. +++ */ +++ +++/* Lower a HIP mode to a GENERIC tree. +++ HIP is the mode of NIL. */ +++ +++static tree +++lower_hip_mode (MOID_T *m) +++{ +++ static tree hip_type; +++ +++ if (hip_type == NULL) +++ { +++ hip_type = build_pointer_type (a68_void_type); +++ TYPE_LANG_SPECIFIC (hip_type) = a68_build_lang_type (m); +++ CTYPE (m) = hip_type; +++ } +++ +++ return hip_type; +++} +++ +++/* Lower a standard mode to a GENERIC tree. +++ +++ Note that this function only has to handle the standard modes that have not +++ been resolved to some equivalent. */ +++ +++static tree +++lower_standard_mode (MOID_T *m) +++{ +++ tree type = NULL_TREE; +++ +++ if (m == M_VOID) +++ type = a68_void_type; +++ else if (m == M_BOOL) +++ type = a68_bool_type; +++ else if (m == M_CHAR) +++ type = a68_char_type; +++ else if (m == M_SHORT_SHORT_INT) +++ type = a68_short_short_int_type; +++ else if (m == M_SHORT_INT) +++ type = a68_short_int_type; +++ else if (m == M_INT) +++ type = a68_int_type; +++ else if (m == M_LONG_INT) +++ type = a68_long_int_type; +++ else if (m == M_LONG_LONG_INT) +++ type = a68_long_long_int_type; +++ else if (m == M_REAL) +++ type = a68_real_type; +++ else if (m == M_LONG_REAL) +++ type = a68_long_real_type; +++ else if (m == M_LONG_LONG_REAL) +++ type = a68_long_long_real_type; +++ else if (m == M_SHORT_SHORT_BITS) +++ type = a68_short_short_bits_type; +++ else if (m == M_SHORT_BITS) +++ type = a68_short_bits_type; +++ else if (m == M_BITS) +++ type = a68_bits_type; +++ else if (m == M_LONG_BITS) +++ type = a68_long_bits_type; +++ else if (m == M_LONG_LONG_BITS) +++ type = a68_long_long_bits_type; +++ else if (m == M_BYTES) +++ type = a68_bytes_type; +++ else if (m == M_LONG_BYTES) +++ type = a68_long_bytes_type; +++ else if (m == M_FILE) +++ /* XXX for now this is a file descriptor. */ +++ type = integer_type_node; +++ else if (m == M_CHANNEL) +++ /* XXX for now this is a channel descriptor. */ +++ type = integer_type_node; +++ else +++ gcc_unreachable (); +++ +++ TYPE_LANG_SPECIFIC (type) = a68_build_lang_type (m); +++ return type; +++} +++ +++/* Lower a struct mode to a GENERIC tree. */ +++ +++static tree +++lower_struct_mode (MOID_T *m) +++{ +++ /* First make the GENERIC struct. This is needed in case of +++ self-references. */ +++ tree struct_type = make_node (RECORD_TYPE); +++ TYPE_NAME (struct_type) = get_identifier ("lalastruct%"); +++ TYPE_FIELDS (struct_type) = NULL_TREE; +++ TYPE_CXX_ODR_P (struct_type) = 0; +++ CTYPE (m) = struct_type; +++ TYPE_LANG_SPECIFIC (struct_type) = a68_build_lang_type (m); /* XXX this will get overrided. */ +++ +++ /* Add field declarations. */ +++ chain_struct_fields (PACK (m), struct_type); +++ +++ /* Layout all fields. */ +++ bool struct_type_complete = true; +++ for (tree field = TYPE_FIELDS (struct_type); field; field = DECL_CHAIN (field)) +++ { +++ tree basetype = TREE_TYPE (field); +++ +++ if (!COMPLETE_TYPE_P (basetype)) +++ { +++ tree field_type = TREE_TYPE (field); +++ tree forward_refs = tree_cons (NULL_TREE, field, +++ TYPE_FORWARD_REFERENCES (field_type)); +++ TYPE_FORWARD_REFERENCES (struct_type) = forward_refs; +++ +++ struct_type_complete = false; +++ continue; +++ } +++ +++ layout_decl (field, 0); +++ gcc_assert (DECL_SIZE (field) != NULL_TREE); +++ } +++ +++ /* If all fields have complete types then we can layout the struct type now. +++ Otherwise it will be done in finish_incomplete_types. */ +++ if (struct_type_complete) +++ { +++ layout_type (struct_type); +++ /* Set the back-end type mode now that all fields have had their size +++ set. */ +++ compute_record_mode (struct_type); +++ } +++ +++ /* Finish debugging output for this type. */ +++ build_stub_type_decl (struct_type, NULL_TREE /* context */); +++ rest_of_type_compilation (struct_type, TYPE_FILE_SCOPE_P (struct_type)); +++ rest_of_decl_compilation (TYPE_NAME (struct_type), 1 /* file scope p */, 0); +++ A68_STRUCT_TYPE_P (struct_type) = 1; +++ return struct_type; +++} +++ +++/* Lower a ref mode to a GENERIC tree. +++ REF AMODE lowers to a pointer. */ +++ +++static tree +++lower_ref_mode (MOID_T *m) +++{ +++ return build_pointer_type (a68_lower_mode (SUB (m))); +++} +++ +++/* Lower a flex mode to a GENERIC tree. */ +++ +++static tree +++lower_flex_mode (MOID_T *m) +++{ +++ /* This is basically a qualifier of the parent REF. */ +++ return a68_lower_mode (SUB (m)); +++} +++ +++/* Lower a proc mode to a GENERIC tree. */ +++ +++static tree +++lower_proc_mode (MOID_T *m) +++{ +++ tree fnargs = NULL_TREE; +++ tree ret_type; +++ +++ /* We have to create the function type in advance because it can appear +++ recursively as the type of arguments and/or of the return value. We +++ cannot use build_function_type, as it doesn't support recursive types. */ +++ tree function_type = make_node (FUNCTION_TYPE); +++ tree ptr_function_type = build_pointer_type (function_type); +++ CTYPE (m) = ptr_function_type; +++ +++ /* Now add arguments and return value types. */ +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ { +++ tree arg_type = a68_lower_mode (MOID (p)); +++ fnargs = chainon (fnargs, build_tree_list (0, arg_type)); +++ } +++ ret_type = a68_lower_mode (SUB (m)); +++ +++ /* Complete the function type. Note that there is some code duplication with +++ build_function_type, which we cannot use, but such is life. */ +++ TREE_TYPE (function_type) = ret_type; /* THIS */ +++ TYPE_ARG_TYPES (function_type) = fnargs; +++ SET_TYPE_STRUCTURAL_EQUALITY (function_type); +++ +++ if (!COMPLETE_TYPE_P (function_type)) +++ layout_type (function_type); +++ +++ return ptr_function_type; +++} +++ +++/* Lower an union mode to a GENERIC tree. +++ +++ overhead% Characterizes the actual mode of the value. +++ value% GENERIC union. */ +++ +++static tree +++lower_union_mode (MOID_T *m) +++{ +++ // XXX make the union type QUAL_UNION_TYPE and relate the fields with the +++ // overhead%. This is necessary for DWARF. +++ tree union_type = make_node (RECORD_TYPE); +++ TYPE_NAME (union_type) = NULL_TREE; +++ TYPE_FIELDS (union_type) = NULL_TREE; +++ TYPE_CXX_ODR_P (union_type) = 0; +++ CTYPE (m) = union_type; +++ +++ /* Then the GENERIC union. */ +++ tree c_union_type = make_node (UNION_TYPE); +++ TYPE_NAME (c_union_type) = NULL_TREE; +++ TYPE_FIELDS (c_union_type) = NULL_TREE; +++ TYPE_CXX_ODR_P (c_union_type) = 0; // XXX otherwise lto complains. why. +++ SET_TYPE_STRUCTURAL_EQUALITY (c_union_type); +++ +++ /* Add field declarations. */ +++ chain_struct_fields (PACK (m), c_union_type); +++ +++ /* Layout all fields now the type is complete. */ +++ bool c_union_type_complete = true; +++ for (tree field = TYPE_FIELDS (c_union_type); field; field = DECL_CHAIN (field)) +++ { +++ tree field_type = TREE_TYPE (field); +++ +++ if (!COMPLETE_TYPE_P (field_type)) +++ { +++ tree field_type = TREE_TYPE (field); +++ tree forward_refs = tree_cons (NULL_TREE, field, +++ TYPE_FORWARD_REFERENCES (field_type)); +++ TYPE_FORWARD_REFERENCES (c_union_type) = forward_refs; +++ +++ c_union_type_complete = false; +++ continue; +++ } +++ +++ layout_decl (field, 0); +++ gcc_assert (DECL_SIZE (field) != NULL_TREE); +++ } +++ +++ /* If all fields have complete types then we can layout the c-union type now. +++ Otherwise it will be done in finish_incomplete_types. */ +++ if (c_union_type_complete) +++ { +++ layout_type (c_union_type); +++ /* Set the back-end type mode now that all fields have had their size +++ set. */ +++ compute_record_mode (c_union_type); +++ } +++ +++ /* Finish debugging output for this type. */ +++ build_stub_type_decl (c_union_type, NULL_TREE /* context */); +++ rest_of_type_compilation (c_union_type, TYPE_FILE_SCOPE_P (c_union_type)); +++ rest_of_decl_compilation (TYPE_NAME (c_union_type), 1 /* file scope p */, 0); +++ +++ /* Now the type with the overhead. */ +++ TYPE_NAME (union_type) = get_identifier ("union%"); +++ tree overhead_field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, +++ get_identifier ("overhead%"), sizetype); +++ tree value_field = build_decl (UNKNOWN_LOCATION, FIELD_DECL, +++ get_identifier ("value%"), c_union_type); +++ DECL_FIELD_CONTEXT (overhead_field) = union_type; +++ DECL_FIELD_CONTEXT (value_field) = union_type; +++ DECL_CHAIN (value_field) = NULL_TREE; +++ DECL_CHAIN (overhead_field) = value_field; +++ TYPE_FIELDS (union_type) = overhead_field; +++ +++ if (c_union_type_complete) +++ { +++ layout_type (union_type); +++ /* Set the back-end type mode now that all fields have had their size +++ set. */ +++ compute_record_mode (union_type); +++ } +++ else +++ { +++ tree forward_refs = tree_cons (NULL_TREE, value_field, +++ TYPE_FORWARD_REFERENCES (union_type)); +++ TYPE_FORWARD_REFERENCES (union_type) = forward_refs; +++ } +++ +++ SET_TYPE_STRUCTURAL_EQUALITY (union_type); +++ A68_UNION_TYPE_P (union_type) = 1; +++ return union_type; +++} +++ +++/* Return the type for an array descriptor triplet. */ +++ +++tree +++a68_triplet_type (void) +++{ +++ static tree triplet_type = NULL_TREE; +++ if (triplet_type == NULL_TREE) +++ { +++ triplet_type = make_struct_type (NULL_TREE, "triplet%", 3, +++ get_identifier ("lb%"), +++ ssizetype, +++ get_identifier ("ub%"), +++ ssizetype, +++ get_identifier ("stride%"), +++ sizetype); +++ } +++ +++ return triplet_type; +++} +++ +++/* Return the lower bound field in an array descriptor triplet. */ +++ +++tree +++a68_triplet_type_lower_bound (tree triplet) +++{ +++ tree lb_field = TYPE_FIELDS (triplet); +++ return lb_field; +++} +++ +++/* Lower a row mode to a GENERIC tree. +++ +++ descriptor% +++ triplets% Value of ARRAY_TYPE with an entry per multiple dimension. +++ { +++ li% Lower bound of dimension. +++ ui% Upper bound of dimension. +++ di% Stride of dimension in bytes. +++ } +++ elements% Pointer to the elements. +++ elements_size% Size of elements% in bytes. +++*/ +++ +++static tree +++lower_row_mode (MOID_T *m) +++{ +++ int num_dimensions = DIM (m); +++ tree triplet_type = a68_triplet_type (); +++ tree triplets_type = build_array_type (triplet_type, +++ build_index_type (size_int (num_dimensions - 1))); +++ tree element_type = a68_lower_mode (SUB (m)); +++ tree row_type = make_struct_type (NULL_TREE, "row%", 3, +++ get_identifier ("triplets%"), +++ triplets_type, +++ get_identifier ("elements%"), +++ build_pointer_type (element_type), +++ get_identifier ("elements_size%"), +++ sizetype); +++ layout_type (row_type); +++ A68_ROW_TYPE_P (row_type) = 1; +++ return row_type; +++} +++ +++/* Given a row type, return the type of the pointer to its elements. */ +++ +++tree +++a68_row_elements_pointer_type (tree type) +++{ +++ gcc_assert (A68_ROW_TYPE_P (type)); +++ /* elements% is the second field. */ +++ return TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (type))); +++} +++ +++/* Given a row type, return the type of its elements. */ +++ +++tree +++a68_row_elements_type (tree type) +++{ +++ return TREE_TYPE (a68_row_elements_pointer_type (type)); +++} +++ +++/* Lower a ROWS mode to a GENERIC tree. +++ +++ dim% Number of dimensions. +++ triplets% Pointer to triplets. +++ +++ Values of this mode are passed to the operators UPB, LWB and ELEMS, which +++ need only descriptor information. There is no need to store any multiple +++ elements. */ +++ +++static tree +++lower_rows_mode (MOID_T *m ATTRIBUTE_UNUSED) +++{ +++ static tree rows_type = NULL_TREE; +++ +++ if (rows_type == NULL_TREE) +++ { +++ rows_type = make_struct_type (NULL_TREE, "rows%", 2, +++ get_identifier ("dim%"), +++ sizetype, +++ get_identifier ("triplets%"), +++ build_pointer_type (a68_triplet_type ())); +++ A68_ROWS_TYPE_P (rows_type) = 1; +++ } +++ return rows_type; +++} +++ +++/* Lower modes in a series. This is used as the mode of the mode yielded by an +++ enclosed clause that yields a series of united rows, for M_ROWS. */ +++ +++static tree +++lower_series (MOID_T *m) +++{ +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ { +++ if (IS (MOID (p), SERIES_MODE) || IS (MOID (p), STOWED_MODE)) +++ lower_series (MOID (p)); +++ else +++ (void) a68_lower_mode (MOID (p)); +++ } +++ +++ return lower_rows_mode (NO_MOID); +++} +++ +++/* Lower a mode to a GENERIC tree. */ +++ +++static tree +++a68_lower_mode (MOID_T *m) +++{ +++ tree type = NULL_TREE; +++ +++ /* If the given mode has already been lowered, return the corresponding +++ tree. */ +++ if (CTYPE (m) != NULL) +++ return CTYPE (m); +++ +++ if (EQUIVALENT (m) != NO_MOID && EQUIVALENT (m) != m) +++ /* This covers INDICANTs and standard MOIDS having an equivalent mode. */ +++ type = a68_lower_mode (EQUIVALENT (m)); +++ else if (m == M_VOID) +++ type = a68_void_type; +++ else if (m == M_HIP) +++ type = lower_hip_mode (m); +++ else if (IS (m, STANDARD)) +++ type = lower_standard_mode (m); +++ else if (IS_REF (m)) +++ type = lower_ref_mode (m); +++ else if (IS_FLEX (m)) +++ type = lower_flex_mode (m); +++ else if (IS (m, PROC_SYMBOL)) +++ type = lower_proc_mode (m); +++ else if (IS_STRUCT (m)) +++ type = lower_struct_mode (m); +++ else if (IS_ROW (m)) +++ type = lower_row_mode (m); +++ else if (IS_UNION (m)) +++ type = lower_union_mode (m); +++ else if (m == M_SIMPLOUT || m == M_SIMPLIN) +++ type = a68_void_type; +++ else if (IS (m, ROWS_SYMBOL)) +++ /* ROWS is a mode that means "any row mode". */ +++ type = lower_rows_mode (m); +++ else if (m == M_VACUUM) +++ /* This is a mode that should not survive the parser. */ +++ type = a68_void_type; +++ else if (IS (m, SERIES_MODE) || IS (m, STOWED_MODE)) +++ { +++ /* When dealing with operators the parser creates some modes that leak +++ SERIES and STOWED "proto-modes" in them, such as for example: +++ +++ UNION ((INT, INT), INT, PROC [] CHAR) +++ +++ These are not really real Algol 68 modes and are useless by +++ themselves, so when we find them, we traverse them (they ultimately +++ contain valid modes that may show up in other contexts and that +++ require being lowered) and just report them as VOID. */ +++ type = lower_series (m); +++ } +++ else +++ { +++ fatal_error (NODE (m) ? a68_get_node_location (NODE (m)) : UNKNOWN_LOCATION, +++ "Cannot lower mode %s", +++ a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m))); +++ } +++ +++ /* Associate the created tree node with the mode, and vice-versa. */ +++ gcc_assert (type != NULL_TREE); +++ TYPE_LANG_SPECIFIC (type) = a68_build_lang_type (m); +++ A68_TYPE_HAS_ROWS_P (type) = HAS_ROWS (m); +++ if (CTYPE (m) == NULL_TREE) +++ CTYPE (m) = type; +++ // printf ("DONE LOWERING %s\n", a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m))); +++ return type; +++} +++ +++/* Lower MOIDs to GENERIC trees. */ +++ +++void +++a68_lower_moids (MOID_T *mode) +++{ +++ /* First pass: all modes but refs. */ +++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) +++ (void) a68_lower_mode (m); +++ +++ /* Try to layout all incomplete types. This is a two-passes process. */ +++ +++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) +++ { +++ if (IS_STRUCT (m)) +++ { +++ tree struct_type = CTYPE (m); +++ finish_incomplete_fields (struct_type); +++ } +++ else if (IS_UNION (m)) +++ { +++ tree union_type = CTYPE (m); +++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); +++ finish_incomplete_fields (c_union_type); +++ finish_incomplete_fields (union_type); +++ } +++ } +++ +++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) +++ { +++ if (!COMPLETE_TYPE_P (CTYPE (m))) +++ { +++ if (IS_STRUCT (m)) +++ { +++ tree struct_type = CTYPE (m); +++ layout_type (struct_type); +++ compute_record_mode (struct_type); +++ } +++ else if (IS_UNION (m)) +++ { +++ tree union_type = CTYPE (m); +++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); +++ +++ if (!COMPLETE_TYPE_P (c_union_type)) +++ { +++ layout_type (c_union_type); +++ compute_record_mode (c_union_type); +++ } +++ +++ layout_type (union_type); +++ compute_record_mode (union_type); +++ } +++ else +++ layout_type (CTYPE (m)); +++ } +++ } +++ +++ /* Sanity check. */ +++ for (MOID_T *m = mode; m != NO_MOID; FORWARD (m)) +++ { +++ gcc_assert (COMPLETE_TYPE_P (CTYPE (m))); +++ if (IS_UNION (m)) +++ { +++ tree union_type = CTYPE (m); +++ tree c_union_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (union_type))); +++ gcc_assert (COMPLETE_TYPE_P (c_union_type)); +++ } +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-multiples.cc ++@@ -0,0 +1,1097 @@ +++/* Lowering routines for all things related to multiples. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Algol 68 multiples are multi-dimensional and dynamically sized. They have a +++ static part and a dynamic part. The static part is conformed by a +++ "descriptor", which contains information about each of the dimensions, and a +++ pointer to the actual elements stored in the multiple. The dynamic part are +++ the elements, which are stored in column order. Both the descriptor and the +++ elements may reside on the stack, data section, or the heap. The mode of a +++ multiple is a "row". +++ +++ Schematically, the descriptor contains: +++ +++ triplets% +++ lb% ub% stride% +++ ... +++ elements% +++ elements_size% +++ +++ Where elements_size% is the size of the buffer pointed by elements%, in +++ bytes. +++ +++ There is a triplet per dimension in the multiple. The number of dimensions +++ in a row mode is static and is determined at compile-time. +++ +++ The infomation stored for each triplet is: +++ +++ lb% is the lower bound of the dimension. +++ ub% is the upper bound of the dimension. +++ stride% is the stride of the dimension. +++ +++ The stride of each dimension is the number of bytes to skip in order to +++ access the next element in that dimension. They express the layout of the +++ multiple in memory. +++ +++ Algol 68 multi-dimensional multiples are stored in row-major (generalized, +++ lexicographical) order: +++ +++ [1:3,1:2]AMODE = ((e1, e2, e3), +++ (e4, e5, e6)) +++ +++ is stored as: +++ +++ 1 2 3 +++ 1 e1 e2 e3 | stride 2S -> stride 1S +++ 2 e4 e5 e6 v +++ +++ Where S is the size in bytes of a single element. That means that for two +++ dimensional multiples, the column stride is always 1S and the row stride is +++ the column size. +++ +++ In general, given a mode with number of elements N1, N2, N3, ...: +++ +++ [N1,N2,N3...,Nn]AMODE +++ +++ the strides of the dimensions are: +++ +++ S1 = N2 * S2 +++ S2 = N3 * S3 +++ S3 = N4 * S4 +++ ... +++ Si = N1 * N2 * ... * Ni-1 +++ +++ Indexing is then performed by a dot-product of an element coordinate and the +++ strides: +++ +++ (i1,i2,i3) . (S1,S2,S3) = offset + i1*S1 + i2*S2 + i3*S3 = index in elements array. +++ +++ Note that the number of elements in each dimension can be easily derived +++ from the bounds and there is no need to store them explicitly, save for +++ performance reasons. Descriptors are bulky enough and often they they are +++ stored on the stack, so we prefer to pay in performance and save in +++ storage. */ +++ +++/* Return a tree with the yielding of SKIP for the given row mode, a +++ multiple. */ +++ +++tree +++a68_get_multiple_skip_tree (MOID_T *m) +++{ +++ tree res = NULL_TREE; +++ int dim = DIM (m); +++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * dim); +++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); +++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); +++ for (int i = 0; i < dim; ++i) +++ { +++ lower_bounds[i] = ssize_one_node; +++ upper_bounds[i] = ssize_zero_node; +++ } +++ res = a68_row_value (CTYPE (m), dim, +++ build_int_cst (build_pointer_type (void_type_node), 0), +++ size_zero_node, /* elements_size */ +++ lower_bounds, upper_bounds); +++ free (lower_bounds); +++ free (upper_bounds); +++ return res; +++} +++ +++/* Return the number of dimensions of the multiple EXP as an integer +++ constant. */ +++ +++tree +++a68_multiple_dimensions (tree exp) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ +++ /* triplets% is the first field in the descriptor. */ +++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); +++ return array_type_nelts_top (TREE_TYPE (triplets_field)); +++} +++ +++/* Return an expression that evaluates to the total number of elements stored +++ in a multiple as a sizetype. */ +++ +++tree +++a68_multiple_num_elems (tree exp) +++{ +++ /* We have to calculate the number of elements based on the dimension +++ triplets in the array type. The number of dimensions is known at compile +++ time, so we don't really need a loop. */ +++ +++ tree num_dimensions_tree = a68_multiple_dimensions (exp); +++ gcc_assert (TREE_CODE (num_dimensions_tree) == INTEGER_CST); +++ int num_dimensions = tree_to_shwi (num_dimensions_tree); +++ +++ tree size = NULL_TREE; +++ for (int dim = 0; dim < num_dimensions; ++dim) +++ { +++ tree size_dim = size_int (dim); +++ tree lower_bound = a68_multiple_lower_bound (exp, size_dim); +++ tree upper_bound = a68_multiple_upper_bound (exp, size_dim); +++ tree dim_size = fold_build2 (PLUS_EXPR, sizetype, +++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, +++ ssizetype, +++ upper_bound, +++ lower_bound)), +++ size_one_node); +++ +++ if (size == NULL_TREE) +++ size = dim_size; +++ else +++ size = fold_build2 (MULT_EXPR, sizetype, size, dim_size); +++ } +++ +++ return size; +++} +++ +++/* Return a size expression that evaluates to the total size, in bytes, of the +++ elements stored in the multiple. */ +++ +++tree +++a68_multiple_elements_size (tree exp) +++{ +++ tree type = TREE_TYPE (exp); +++ gcc_assert (A68_ROW_TYPE_P (type)); +++ +++ /* elements_size% is the third field in the descriptor. */ +++ tree elements_size_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (type))); +++ return fold_build3 (COMPONENT_REF, TREE_TYPE (elements_size_field), +++ exp, elements_size_field, NULL_TREE); +++} +++ +++/* Return the triplet for dimension DIM in the multiple EXP. */ +++ +++static tree +++multiple_triplet (tree exp, tree dim) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ +++ /* triplets% is the first field in the descriptor. */ +++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); +++ tree triplets = fold_build3 (COMPONENT_REF, +++ TREE_TYPE (triplets_field), +++ exp, +++ triplets_field, +++ NULL_TREE); +++ +++ /* Get the triplet for the given dimension. */ +++ return build4 (ARRAY_REF, +++ TREE_TYPE (TREE_TYPE (triplets)), +++ triplets, +++ dim, +++ NULL_TREE, +++ NULL_TREE); +++} +++ +++/* Return the lower bound of dimension DIM of the multiple EXP. The returned +++ value is a ssizetype. */ +++ +++tree +++a68_multiple_lower_bound (tree exp, tree dim) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ +++ /* lb% is the first field in the triplet. */ +++ tree triplet = multiple_triplet (exp, dim); +++ tree lower_bound_field = TYPE_FIELDS (TREE_TYPE (triplet)); +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (lower_bound_field), +++ triplet, +++ lower_bound_field, +++ NULL_TREE); +++} +++ +++/* Return an expression that sets the lower bound of dimension DIM of the +++ multiple EXP to BOUND. */ +++ +++tree +++a68_multiple_set_lower_bound (tree exp, tree dim, tree bound) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ return fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (bound), +++ a68_multiple_lower_bound (exp, dim), +++ bound); +++} +++ +++/* Return the upper bound of dimension DIM of the multiple EXP. The returned +++ value is a ssizetype. */ +++ +++tree +++a68_multiple_upper_bound (tree exp, tree dim) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ +++ /* ub% is the second field in the triplet. */ +++ tree triplet = multiple_triplet (exp, dim); +++ tree upper_bound_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (triplet))); +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (upper_bound_field), +++ triplet, +++ upper_bound_field, +++ NULL_TREE); +++} +++ +++/* Return an expression that sets the upper bound of dimension DIM of the +++ multiple EXP to BOUND. */ +++ +++tree +++a68_multiple_set_upper_bound (tree exp, tree dim, tree bound) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ return fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (bound), +++ a68_multiple_upper_bound (exp, dim), +++ bound); +++} +++ +++/* Return the stride of dimension DIM of the multiple EXP. */ +++ +++tree +++a68_multiple_stride (tree exp, tree dim) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ +++ /* stride% is the third field in the triplet. */ +++ tree triplet = multiple_triplet (exp, dim); +++ tree stride_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (triplet)))); +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (stride_field), +++ triplet, +++ stride_field, +++ NULL_TREE); +++} +++ +++/* Return an expression that sets the stride of dimension DIM of the multiple +++ EXP to STRIDE. +++ +++ STRIDE must be a sizetype. */ +++ +++tree +++a68_multiple_set_stride (tree exp, tree dim, tree stride) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ return fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (stride), +++ a68_multiple_stride (exp, dim), +++ stride); +++} +++ +++/* Return the triplets of the multiple EXP. */ +++ +++tree +++a68_multiple_triplets (tree exp) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ +++ /* triplets% is the first field in the descriptor. */ +++ tree triplets_field = TYPE_FIELDS (TREE_TYPE (exp)); +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (triplets_field), +++ exp, +++ triplets_field, +++ NULL_TREE); +++} +++ +++/* Return the pointer to the elements of the multiple EXP. */ +++ +++tree +++a68_multiple_elements (tree exp) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (exp))); +++ +++ /* elements% is the second field in the descriptor. */ +++ tree elements_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp))); +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (elements_field), +++ exp, +++ elements_field, +++ NULL_TREE); +++} +++ +++/* Return an expression that sets the elements% field of EXP to ELEMENTS. */ +++ +++tree +++a68_multiple_set_elements (tree exp, tree elements) +++{ +++ /* elements% is the second field in the descriptor. */ +++ tree elements_field = TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp))); +++ return fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (elements_field), +++ fold_build3 (COMPONENT_REF, +++ TREE_TYPE (elements_field), +++ exp, +++ elements_field, +++ NULL_TREE), +++ elements); +++} +++ +++/* Return an expression that sets the elements_size% field of EXP to +++ ELEMENTS_SIZE, which must be a sizetype. */ +++ +++tree +++a68_multiple_set_elements_size (tree exp, tree elements_size) +++{ +++ /* elements_size% is the third field in the descriptor. */ +++ tree elements_size_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (TREE_TYPE (exp)))); +++ return fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (elements_size_field), +++ fold_build3 (COMPONENT_REF, +++ TREE_TYPE (elements_size_field), +++ exp, +++ elements_size_field, +++ NULL_TREE), +++ elements_size); +++} +++ +++/* Given two arrays of LOWER_BOUNDs and UPPER_BOUNDs corresponding to DIM +++ dimensions of a multiple of type TYPE, fill in the strides in STRIDES, which +++ is assumed to be a buffer big enough to hold DIM tree nodes. The bounds +++ shall be of type ssizetype, and the calculated strides are of type sizetype, +++ i.e. unsigned. */ +++ +++void +++a68_multiple_compute_strides (tree type, size_t dim, +++ tree *lower_bounds, tree *upper_bounds, +++ tree *strides) +++{ +++ tree stride = size_in_bytes (a68_row_elements_type (type)); +++ for (ssize_t i = dim - 1; i >= 0; --i) +++ { +++ strides[i] = stride; +++ +++ /* Calculate the stride for the previous dimension. */ +++ tree dim_num_elems +++ = save_expr (fold_build2 (PLUS_EXPR, +++ sizetype, +++ fold_convert (sizetype, +++ fold_build2 (MINUS_EXPR, ssizetype, +++ upper_bounds[i], lower_bounds[i])), +++ size_one_node)); +++ stride = fold_build2 (MULT_EXPR, sizetype, stride, dim_num_elems); +++ } +++} +++ +++/* Return a constructor for a multiple of row type TYPE, using TRIPLETS and +++ ELEMENTS. ELEMENTS_SIZE is the size in bytes of the memory pointed by +++ ELEMENTS. */ +++ +++tree +++a68_row_value_raw (tree type, tree triplets, +++ tree elements, tree elements_size) +++{ +++ tree triplets_field; +++ tree elements_field; +++ tree elements_size_field; +++ vec *ce = NULL; +++ +++ gcc_assert (A68_ROW_TYPE_P (type)); +++ triplets_field = TYPE_FIELDS (type); +++ elements_field = TREE_CHAIN (triplets_field); +++ elements_size_field = TREE_CHAIN (elements_field); +++ CONSTRUCTOR_APPEND_ELT (ce, triplets_field, triplets); +++ CONSTRUCTOR_APPEND_ELT (ce, elements_field, +++ fold_build1 (CONVERT_EXPR ,TREE_TYPE (elements_field), elements)); +++ CONSTRUCTOR_APPEND_ELT (ce, elements_size_field, elements_size); +++ return build_constructor (type, ce); +++} +++ +++/* Return a constructor for a multiple of row type TYPE, of DIM dimensions and +++ pointing to ELEMENTS. +++ +++ ELEMENTS_SIZE contains the size in bytes of the memory pointed by ELEMENTS. +++ +++ *LOWER_BOUND and *UPPER_BOUND are the bounds for the DIM dimensions. +++*/ +++ +++tree +++a68_row_value (tree type, size_t dim, +++ tree elements, tree elements_size, +++ tree *lower_bound, tree *upper_bound) +++{ +++ tree triplets_field; +++ tree elements_field; +++ tree elements_size_field; +++ vec *ce = NULL; +++ +++ gcc_assert (A68_ROW_TYPE_P (type)); +++ triplets_field = TYPE_FIELDS (type); +++ elements_field = TREE_CHAIN (triplets_field); +++ elements_size_field = TREE_CHAIN (elements_field); +++ +++ tree triplet_type = TREE_TYPE (TREE_TYPE (triplets_field)); +++ tree lower_bound_field = TYPE_FIELDS (triplet_type); +++ tree upper_bound_field = TREE_CHAIN (TYPE_FIELDS (triplet_type)); +++ tree stride_field = TREE_CHAIN (TREE_CHAIN (TYPE_FIELDS (triplet_type))); +++ +++ /* Calculate strides. */ +++ tree *strides = (tree *) xmalloc (sizeof (tree) * dim); +++ a68_multiple_compute_strides (type, dim, lower_bound, upper_bound, strides); +++ +++ vec *triplets_ce = NULL; +++ for (size_t i = 0; i < dim; ++i) +++ { +++ CONSTRUCTOR_APPEND_ELT (triplets_ce, +++ size_int (i), +++ build_constructor_va (triplet_type, +++ 3, +++ lower_bound_field, lower_bound[i], +++ upper_bound_field, upper_bound[i], +++ stride_field, strides[i])); +++ } +++ free (strides); +++ CONSTRUCTOR_APPEND_ELT (ce, triplets_field, +++ build_constructor (TREE_TYPE (triplets_field), triplets_ce)); +++ CONSTRUCTOR_APPEND_ELT (ce, elements_field, +++ fold_build1 (CONVERT_EXPR, TREE_TYPE (elements_field), elements)); +++ CONSTRUCTOR_APPEND_ELT (ce, elements_size_field, +++ elements_size ? elements_size : size_zero_node); +++ tree multiple = build_constructor (type, ce); +++ return multiple; +++} +++ +++/* Build a tree to slice a multiple given a set of indexes. +++ +++ P is the tree node corresponding to the slice. It is used as the source of +++ location information. +++ +++ MULTIPLE is the multiple value being sliced. If SLICING_NAME is true, it +++ means the slicing operation is for a name and therefore it must yield a +++ name. +++ +++ INDEXES is a list of NUM_INDEXES indexes, which are units. +++ NUM_INDEXES must match the dimension of the multiple. */ +++ +++tree +++a68_multiple_slice (NODE_T *p, +++ tree multiple, bool slicing_name, +++ int num_indexes, tree *indexes) +++{ +++ tree slice = NULL_TREE; +++ tree bounds_check = NULL_TREE; +++ +++ multiple = save_expr (multiple); +++ tree index = NULL_TREE; +++ for (int idx = 0; idx < num_indexes; ++idx) +++ { +++ tree lower_bound = a68_multiple_lower_bound (multiple, size_int (idx)); +++ tree index_expr = save_expr (indexes[idx]); +++ +++ /* Do run-time bound checking if requested. */ +++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) +++ { +++ tree upper_bound = a68_multiple_upper_bound (multiple, size_int (idx)); +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDS, +++ void_type_node, 5, +++ filename, +++ build_int_cst (unsigned_type_node, lineno), +++ fold_convert (ssizetype, index_expr), +++ fold_convert (ssizetype, lower_bound), +++ fold_convert (ssizetype, upper_bound)); +++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); +++ +++ /* If LB > UB, the dimension contains no elements. +++ Otherwise, it must hold IDX >= LB && IDX <= UB */ +++ tree dim_bounds_check = fold_build2 (TRUTH_AND_EXPR, sizetype, +++ fold_build2 (LE_EXPR, ssizetype, +++ lower_bound, upper_bound), +++ fold_build2 (TRUTH_AND_EXPR, +++ boolean_type_node, +++ fold_build2 (GE_EXPR, ssizetype, +++ fold_convert (ssizetype, +++ index_expr), +++ lower_bound), +++ fold_build2 (LE_EXPR, ssizetype, +++ fold_convert (ssizetype, +++ index_expr), +++ upper_bound))); +++ dim_bounds_check = fold_build2_loc (a68_get_node_location (p), +++ TRUTH_ORIF_EXPR, +++ ssizetype, +++ dim_bounds_check, call); +++ +++ /* bounds_check_ok || call_runtime_error */ +++ if (bounds_check == NULL_TREE) +++ bounds_check = dim_bounds_check; +++ else +++ bounds_check = fold_build2 (TRUTH_ANDIF_EXPR, +++ ssizetype, +++ bounds_check, +++ dim_bounds_check); +++ } +++ +++ /* Now add the effect of this dimension's subscript in the index. Note +++ that the stride is expressed in bytes. */ +++ tree stride = a68_multiple_stride (multiple, size_int (idx)); +++ tree adjusted_index +++ = fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, +++ fold_convert (ssizetype, index_expr), +++ lower_bound)); +++ tree term = fold_build2 (MULT_EXPR, sizetype, +++ adjusted_index, stride); +++ if (index == NULL_TREE) +++ index = term; +++ else +++ index = fold_build2 (PLUS_EXPR, sizetype, +++ index, term); +++ } +++ +++ tree elements = a68_multiple_elements (multiple); +++ tree element_pointer_type = TREE_TYPE (elements); +++ tree element_type = TREE_TYPE (element_pointer_type); +++ +++ /* Now refer to the indexed element. In case we are slicing a ref to a +++ multiple, return the address of the element and not the element +++ itself. */ +++ tree element_address = fold_build2 (POINTER_PLUS_EXPR, +++ element_pointer_type, +++ elements, +++ index); +++ if (slicing_name) +++ slice = element_address; +++ else +++ slice = fold_build2 (MEM_REF, +++ element_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ element_pointer_type, +++ elements, +++ index), +++ fold_convert (element_pointer_type, +++ integer_zero_node)); +++ +++ /* Prepend bounds checking code if necessary. */ +++ if (bounds_check != NULL_TREE) +++ { +++ slice = fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (slice), +++ bounds_check, +++ slice); +++ } +++ +++ return slice; +++} +++ +++/* Auxiliary routine for a68_multiple_copy_elemens. */ +++ +++static tree +++copy_multiple_dimension_elems (size_t dim, size_t num_dimensions, +++ tree to, tree from, +++ tree to_elements, tree from_elements, +++ tree *to_offset, tree *from_offset, +++ tree *indexes) +++{ +++ tree element_pointer_type = TREE_TYPE (from_elements); +++ tree element_type = TREE_TYPE (element_pointer_type); +++ tree upb = a68_multiple_upper_bound (from, size_int (dim)); +++ +++ char *name = xasprintf ("r%ld%%", dim); +++ indexes[dim] = a68_lower_tmpvar (name, ssizetype, +++ a68_multiple_lower_bound (from, +++ size_int (dim))); +++ free (name); +++ +++ /* Loop body. */ +++ a68_push_range (NULL); +++ { +++ /* if (indexes[dim] > upb) break; */ +++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, +++ fold_build2 (GT_EXPR, size_type_node, +++ indexes[dim], upb))); +++ +++ /* Add this dimension's contribution to the offsets. */ +++ tree index = fold_convert (sizetype, +++ fold_build2 (MINUS_EXPR, ssizetype, +++ upb, indexes[dim])); +++ *to_offset = fold_build2 (PLUS_EXPR, sizetype, +++ *to_offset, +++ fold_build2 (MULT_EXPR, sizetype, +++ index, +++ a68_multiple_stride (to, size_int (dim)))); +++ *from_offset = fold_build2 (PLUS_EXPR, sizetype, +++ *from_offset, +++ fold_build2 (MULT_EXPR, sizetype, +++ index, +++ a68_multiple_stride (from, size_int (dim)))); +++ +++ if (dim == num_dimensions - 1) +++ { +++ /* Most inner loop, copy one element. */ +++ +++ tree to_off = a68_lower_tmpvar ("to_offset%", sizetype, *to_offset); +++ tree from_off = a68_lower_tmpvar ("from_offset%", sizetype, *from_offset); +++ +++ tree to_elem = fold_build2 (MEM_REF, +++ element_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ element_pointer_type, +++ to_elements, +++ to_off), +++ fold_convert (element_pointer_type, +++ integer_zero_node)); +++ tree from_elem = fold_build2 (MEM_REF, +++ element_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ element_pointer_type, +++ from_elements, +++ from_off), +++ fold_convert (element_pointer_type, +++ integer_zero_node)); +++ +++ /* XXX +++ if may_overlap then modify only if dst_offset < src_offset */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, element_type, +++ to_elem, from_elem)); +++ } +++ else +++ { +++ a68_add_stmt (copy_multiple_dimension_elems (dim + 1, num_dimensions, +++ to, from, +++ to_elements, from_elements, +++ to_offset, from_offset, +++ indexes)); +++ } +++ +++ /* indexes[dim]++ */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, ssizetype, +++ indexes[dim], ssize_int (1))); +++ } +++ tree loop_body = a68_pop_range (); +++ +++ return fold_build1 (LOOP_EXPR, void_type_node, loop_body); +++} +++ +++/* Copy the elements of a given multiple (string) FROM to the multiple (string) +++ TO. +++ +++ The dimensions and bounds of both multiples are supposed to match, and they +++ are supposed to not be flat. +++ +++ XXX simple cases with same strides may be done with a memcpy. +++ XXX compile this into a support routine to reduce code size. */ +++ +++tree +++a68_multiple_copy_elems (MOID_T *mode, tree to, tree from) +++{ +++ gcc_assert (A68_ROW_TYPE_P (TREE_TYPE (to)) +++ && A68_ROW_TYPE_P (TREE_TYPE (from))); +++ +++ /* Deflex modes as needed and determine dimension. */ +++ if (IS_FLEX (mode)) +++ mode = SUB (mode); +++ int num_dimensions = (mode == M_STRING ? 1 : DIM (mode)); +++ +++ a68_push_range (NULL); +++ to = a68_lower_tmpvar ("to%", TREE_TYPE (to), to); +++ from = a68_lower_tmpvar ("from%", TREE_TYPE (from), from); +++ tree from_elements = a68_multiple_elements (from); +++ tree element_pointer_type = TREE_TYPE (from_elements); +++ from_elements = a68_lower_tmpvar ("from_elements%", element_pointer_type, +++ from_elements); +++ tree to_elements = a68_lower_tmpvar ("to_elements%", element_pointer_type, +++ a68_multiple_elements (to)); +++ +++ tree *indexes = (tree *) xmalloc (num_dimensions * sizeof (tree)); +++ tree to_offset = size_zero_node; +++ tree from_offset = size_zero_node; +++ a68_add_stmt (copy_multiple_dimension_elems (0 /* dim */, num_dimensions, +++ to, from, +++ to_elements, from_elements, +++ &to_offset, &from_offset, +++ indexes)); +++ free (indexes); +++ return a68_pop_range (); +++} +++ +++/* Given a rows type, return the number of dimensions. */ +++ +++tree +++a68_rows_dim (tree exp) +++{ +++ gcc_assert (A68_ROWS_TYPE_P (TREE_TYPE (exp))); +++ +++ /* dim% is the first field in the rows struct. */ +++ tree dim_field = TYPE_FIELDS (TREE_TYPE (exp)); +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (dim_field), +++ exp, +++ dim_field, +++ NULL_TREE); +++} +++ +++/* Given a multiple value, create a rows value reflecting the multiple's +++ dimensions and triplets. */ +++ +++tree +++a68_rows_value (tree multiple) +++{ +++ tree rows_type = CTYPE (M_ROWS); +++ tree dim_field = TYPE_FIELDS (rows_type); +++ tree triplets_field = TREE_CHAIN (dim_field); +++ +++ tree dimensions = save_expr (a68_multiple_dimensions (multiple)); +++ tree triplets = fold_build1 (ADDR_EXPR, TREE_TYPE (triplets_field), +++ a68_multiple_triplets (multiple)); +++ return build_constructor_va (rows_type, 2, +++ dim_field, dimensions, +++ triplets_field, triplets); +++} +++ +++/* Given a rows value and a dimension number, return the upper bound or the +++ lower of the given dimension. The returned bound is a ssizetype. +++ +++ DIM must be a sizetype. */ +++ +++static tree +++rows_lower_or_upper_bound (tree rows, tree dim, bool upper) +++{ +++ tree rows_type = TREE_TYPE (rows); +++ tree triplet_type = a68_triplet_type (); +++ tree triplet_pointer_type = build_pointer_type (triplet_type); +++ tree triplet_lb_field = TYPE_FIELDS (triplet_type); +++ tree triplet_ub_field = TREE_CHAIN (TYPE_FIELDS (triplet_type)); +++ tree triplets_field = TREE_CHAIN (TYPE_FIELDS (rows_type)); +++ tree triplets = fold_build3 (COMPONENT_REF, triplet_pointer_type, +++ rows, triplets_field, NULL_TREE); +++ tree triplet_offset = fold_build2 (MULT_EXPR, sizetype, +++ dim, +++ size_in_bytes (triplet_type)); +++ tree bound = fold_build3 (COMPONENT_REF, ssizetype, +++ fold_build1 (INDIRECT_REF, triplet_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ triplet_pointer_type, +++ triplets, +++ triplet_offset)), +++ upper ? triplet_ub_field : triplet_lb_field, +++ NULL_TREE); +++ +++ return bound; +++} +++ +++/* Return the lower bound of dimension DIM of ROWS. */ +++ +++tree +++a68_rows_lower_bound (tree rows, tree dim) +++{ +++ return rows_lower_or_upper_bound (rows, dim, false); +++} +++ +++/* Return the upper bound of dimension DIM of ROWS. */ +++ +++tree +++a68_rows_upper_bound (tree rows, tree dim) +++{ +++ return rows_lower_or_upper_bound (rows, dim, true); +++} +++ +++/* Return a tree that checks that a given INDEX is correct given a multiple's +++ bounds in a given rank DIM. +++ +++ If UPPER_BOUND is true then INDEX shall be less or equal than the multiple's +++ upper bound. Otherwise INDEX shall be bigger or equal than the multiple's +++ lower bound. +++ +++ If the condition above doesn't hold then a call to a run-time function is +++ performed: if UPPER_BOUND is true then ARRAYUPPERBOUND is called. Otherwise +++ ARRAYLOWERBOUND is called. */ +++ +++tree +++a68_multiple_single_bound_check (NODE_T *p, tree dim, +++ tree multiple, tree index, bool upper_bound) +++{ +++ index = save_expr (index); +++ multiple = save_expr (multiple); +++ +++ tree bound = (upper_bound +++ ? a68_multiple_upper_bound (multiple, dim) +++ : a68_multiple_lower_bound (multiple, dim)); +++ a68_libcall_fn libcall = (upper_bound +++ ? A68_LIBCALL_ARRAYUPPERBOUND +++ : A68_LIBCALL_ARRAYLOWERBOUND); +++ +++ /* Build the call to ARRAY*BOUNDS. */ +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (libcall, +++ void_type_node, 4, +++ filename, +++ build_int_cst (unsigned_type_node, lineno), +++ fold_convert (ssizetype, index), +++ fold_convert (ssizetype, bound)); +++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); +++ +++ tree bounds_check = fold_build2 (upper_bound ? LE_EXPR : GE_EXPR, +++ ssizetype, +++ fold_convert (ssizetype, index), +++ bound); +++ return fold_build2_loc (a68_get_node_location (p), +++ TRUTH_ORIF_EXPR, +++ ssizetype, +++ bounds_check, call); +++} +++ +++/* Return a tree that checks whether the given DIM is a valid dimension/rank of +++ a boundable object with dimension BOUNDABLE_DIM. If the provided DIM is not +++ a valid dimention then a call to the run-time function ARRAYDIM is +++ performed. +++ +++ BOUNDABLE_DIM and DIM must be of type sizetype. They are both one-based. +++ +++ The parse tree node P is used as the source for the filename and line number +++ passed to the run-time function. */ +++ +++static tree +++a68_boundable_dim_check (NODE_T *p, tree boundable_dim, tree dim) +++{ +++ boundable_dim = save_expr (boundable_dim); +++ dim = save_expr (dim); +++ +++ /* Build the call to ARRAYDIM. */ +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYDIM, +++ void_type_node, 4, +++ filename, +++ build_int_cst (unsigned_type_node, lineno), +++ boundable_dim, dim); +++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); +++ +++ tree dim_check = fold_build2 (TRUTH_AND_EXPR, boolean_type_node, +++ fold_build2 (GT_EXPR, boolean_type_node, dim, size_zero_node), +++ fold_build2 (LE_EXPR, boolean_type_node, dim, boundable_dim)); +++ return fold_build2_loc (a68_get_node_location (p), +++ TRUTH_ORIF_EXPR, +++ ssizetype, +++ dim_check, call); +++} +++ +++/* Return a tree that checks whether the given DIM is a valid dimension/rank of +++ the given rows value ROWS. +++ +++ DIM is a sizetype. +++ The parse tree node P is used as the source for the filename and line +++ number. */ +++ +++tree +++a68_rows_dim_check (NODE_T *p, tree rows, tree dim) +++{ +++ return a68_boundable_dim_check (p, a68_rows_dim (rows), dim); +++} +++ +++/* Return a tree that checks whether the given DIM is a valid dimension/rank of +++ the given multiple value MULTIPLE. +++ +++ DIM is a sizetype. +++ The parse tree node P is used as the source for the filename and line +++ number. */ +++ +++tree +++a68_multiple_dim_check (NODE_T *p, tree multiple, tree dim) +++{ +++ return a68_boundable_dim_check (p, a68_multiple_dimensions (multiple), dim); +++} +++ +++/* Return a tree that checks whether the given INDEX falls within the bounds of +++ MULTIPLE in the rank DIM. If the provided index is out of bounds then a +++ call to the run-time function ARRAYBOUNDS is performed. +++ +++ DIM must be a sizetype. +++ MULTIPLE must be a multiple value. +++ INDEX must be a ssizetype. +++ +++ The parse tree node P is used as the source for the filename and line number +++ passed to the run-time function. */ +++ +++tree +++a68_multiple_bounds_check (NODE_T *p, tree dim, +++ tree multiple, tree index) +++{ +++ index = save_expr (index); +++ multiple = save_expr (multiple); +++ +++ tree upper_bound = a68_multiple_upper_bound (multiple, dim); +++ tree lower_bound = a68_multiple_lower_bound (multiple, dim); +++ +++ /* Build the call to ARRAYBOUNDS. */ +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDS, +++ void_type_node, 5, +++ filename, +++ build_int_cst (unsigned_type_node, lineno), +++ fold_convert (ssizetype, index), +++ fold_convert (ssizetype, lower_bound), +++ fold_convert (ssizetype, upper_bound)); +++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); +++ +++ /* If LB > UB, the dimension contains no elements. +++ Otherwise, it must hold IDX >= LB && IDX <= UB */ +++ tree bounds_check = fold_build2 (TRUTH_AND_EXPR, sizetype, +++ fold_build2 (LE_EXPR, ssizetype, +++ lower_bound, upper_bound), +++ fold_build2 (TRUTH_AND_EXPR, +++ boolean_type_node, +++ fold_build2 (GE_EXPR, ssizetype, +++ fold_convert (ssizetype, +++ index), +++ lower_bound), +++ fold_build2 (LE_EXPR, ssizetype, +++ fold_convert (ssizetype, +++ index), +++ upper_bound))); +++ return fold_build2_loc (a68_get_node_location (p), +++ TRUTH_ORIF_EXPR, +++ ssizetype, +++ bounds_check, call); +++} +++ +++/* Emit a run-time error if the bounds of M1 and M2 are not the same. Both +++ multiples are assumed to have the same type and therefore feature the same +++ number of dimensions. */ +++ +++tree +++a68_multiple_bounds_check_equal (NODE_T *p, tree m1, tree m2) +++{ +++ m1 = save_expr (m1); +++ m2 = save_expr (m2); +++ +++ /* First determine the rank of the multiples and check they match. */ +++ tree m1_dimensions = a68_multiple_dimensions (m1); +++ tree m2_dimensions = a68_multiple_dimensions (m2); +++ gcc_assert (TREE_CODE (m1_dimensions) == INTEGER_CST +++ && TREE_CODE (m2_dimensions) == INTEGER_CST); +++ +++ int dim1 = tree_to_shwi (m1_dimensions); +++ int dim2 = tree_to_shwi (m2_dimensions); +++ gcc_assert (dim1 == dim2); +++ +++ a68_push_range (NULL /* VOID */); +++ +++ /* For each dimension, check that bounds are the same in both multiples. */ +++ int i; +++ for (i = 0; i < dim1; ++i) +++ { +++ tree dim_tree = build_int_cst (ssizetype, i); +++ tree dim_plus_one = fold_build2 (PLUS_EXPR, ssizetype, +++ dim_tree, +++ fold_convert (ssizetype, size_one_node)); +++ +++ tree lb1 = save_expr (a68_multiple_lower_bound (m1, dim_tree)); +++ tree lb2 = save_expr (a68_multiple_lower_bound (m2, dim_tree)); +++ +++ tree ub1 = save_expr (a68_multiple_upper_bound (m1, dim_tree)); +++ tree ub2 = save_expr (a68_multiple_upper_bound (m2, dim_tree)); +++ +++ tree bounds_equal = fold_build2 (TRUTH_AND_EXPR, +++ boolean_type_node, +++ fold_build2 (EQ_EXPR, boolean_type_node, +++ lb1, lb2), +++ fold_build2 (EQ_EXPR, boolean_type_node, +++ ub1, ub2)); +++ +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_ARRAYBOUNDSMISMATCH, +++ void_type_node, 7, +++ filename, +++ build_int_cst (unsigned_type_node, lineno), +++ dim_plus_one, +++ lb1, ub1, lb2, ub2); +++ call = fold_build2 (COMPOUND_EXPR, boolean_type_node, call, boolean_false_node); +++ +++ tree check = fold_build2_loc (a68_get_node_location (p), +++ TRUTH_ORIF_EXPR, boolean_type_node, +++ bounds_equal, +++ call); +++ a68_add_stmt (check); +++ } +++ +++ return a68_pop_range (); +++} +++ +++/* Allocate a multiple on the heap. +++ +++ M is the mode the multiple to allocate. +++ DIM is the number of dimensions of the multiple. +++ ELEMS is a pointer to the elements of the multiple. +++ ELEMS_SIZE is the size in bytes of ELEMS. +++ *LOWER_BOUND and *UPPER_BOUND are the bounds for the DIM dimensions. */ +++ +++tree +++a68_row_malloc (tree type, int dim, tree elems, tree elems_size, +++ tree *lower_bound, tree *upper_bound) +++{ +++ tree ptr_to_type = build_pointer_type (type); +++ +++ a68_push_range (NULL); +++ +++ /* Allocate space for the descriptor. */ +++ tree ptr_to_multiple = a68_lower_tmpvar ("ptr_to_multiple%", ptr_to_type, +++ a68_lower_malloc (type, size_in_bytes (type))); +++ tree multiple = a68_row_value (type, dim, +++ elems, elems_size, +++ lower_bound, upper_bound); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ fold_build1 (INDIRECT_REF, type, ptr_to_multiple), +++ multiple)); +++ a68_add_stmt (ptr_to_multiple); +++ tree res = a68_pop_range (); +++ TREE_TYPE (res) = ptr_to_type; +++ return res; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-posix.cc ++@@ -0,0 +1,559 @@ +++/* Lowering routines for the POSIX prelude. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Set the exit status of the running process, to be returned to the OS upon +++ exit. */ +++ +++tree +++a68_posix_setexitstatus (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_SET_EXIT_STATUS); +++} +++ +++/* Number of command line arguments passed to the program. */ +++ +++tree +++a68_posix_argc (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_ARGC); +++} +++ +++/* Gets the Nth command line argument passed to the program. If N is out of +++ range the result is an empty string. */ +++ +++tree +++a68_posix_argv (void) +++{ +++ static tree argv_fndecl; +++ +++ if (argv_fndecl == NULL_TREE) +++ { +++ argv_fndecl +++ = a68_low_toplevel_func_decl ("argv", +++ build_function_type_list (CTYPE (M_STRING), +++ a68_int_type, +++ NULL_TREE)); +++ announce_function (argv_fndecl); +++ +++ tree param = a68_low_func_param (argv_fndecl, "n", a68_int_type); +++ DECL_ARGUMENTS (argv_fndecl) = param; +++ +++ a68_push_function_range (argv_fndecl, CTYPE (M_STRING), +++ true /* top_level */); +++ +++ a68_push_range (M_STRING); +++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); +++ TREE_ADDRESSABLE (len) = 1; +++ +++ tree ptrtochar_type = build_pointer_type (a68_char_type); +++ tree elems = a68_lower_tmpvar ("elems%", ptrtochar_type, +++ a68_build_libcall (A68_LIBCALL_POSIX_ARGV, +++ ptrtochar_type, 2, +++ param, +++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), +++ len))); +++ tree lower_bound = ssize_int (1); +++ tree upper_bound = fold_convert (ssizetype, len); +++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, +++ len, +++ size_in_bytes (a68_char_type)); +++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, +++ elems, elems_size, +++ &lower_bound, &upper_bound)); +++ tree body = a68_pop_range (); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (argv_fndecl)), +++ argv_fndecl); +++} +++ +++/* Gets the value of an environment variable, or an empty string if the +++ variable is not set. */ +++ +++tree +++a68_posix_getenv (void) +++{ +++ static tree getenv_fndecl; +++ +++ if (getenv_fndecl == NULL_TREE) +++ { +++ getenv_fndecl +++ = a68_low_toplevel_func_decl ("getenv", +++ build_function_type_list (CTYPE (M_STRING), +++ CTYPE (M_STRING), +++ NULL_TREE)); +++ announce_function (getenv_fndecl); +++ +++ tree param = a68_low_func_param (getenv_fndecl, "varname", CTYPE (M_STRING)); +++ DECL_ARGUMENTS (getenv_fndecl) = param; +++ +++ a68_push_function_range (getenv_fndecl, CTYPE (M_STRING), +++ true /* top_level */); +++ +++ a68_push_range (M_STRING); +++ +++ tree varname = a68_lower_tmpvar ("varname%", CTYPE (M_STRING), +++ param); +++ +++ tree ptrtochar_type = build_pointer_type (a68_char_type); +++ tree convelems = a68_lower_tmpvar ("convelems%", ptrtochar_type, +++ build_int_cst (ptrtochar_type, 0)); +++ TREE_ADDRESSABLE (convelems) = 1; +++ tree convelemslen = a68_lower_tmpvar ("convelemslen%", sizetype, +++ size_int (0)); +++ TREE_ADDRESSABLE (convelemslen) = 1; +++ +++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_GETENV, +++ void_type_node, 5, +++ a68_multiple_elements (varname), +++ a68_multiple_num_elems (varname), +++ a68_multiple_stride (varname, size_zero_node), +++ fold_build1 (ADDR_EXPR, build_pointer_type (ptrtochar_type), +++ convelems), +++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), +++ convelemslen)); +++ a68_add_stmt (call); +++ tree lower_bound = ssize_int (1); +++ tree upper_bound = fold_convert (ssizetype, convelemslen); +++ tree convelems_size = fold_build2 (MULT_EXPR, sizetype, +++ convelemslen, +++ size_in_bytes (a68_char_type)); +++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, +++ convelems, convelems_size, +++ &lower_bound, &upper_bound)); +++ tree body = a68_pop_range (); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (getenv_fndecl)), +++ getenv_fndecl); +++} +++ +++tree +++a68_posix_putchar (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_PUTCHAR); +++} +++ +++tree +++a68_posix_puts (void) +++{ +++ static tree puts_fndecl; +++ +++ if (puts_fndecl == NULL_TREE) +++ { +++ puts_fndecl +++ = a68_low_toplevel_func_decl ("puts", +++ build_function_type_list (void_type_node, +++ CTYPE (M_STRING), +++ NULL_TREE)); +++ announce_function (puts_fndecl); +++ +++ tree param = a68_low_func_param (puts_fndecl, "str", CTYPE (M_STRING)); +++ DECL_ARGUMENTS (puts_fndecl) = param; +++ +++ a68_push_function_range (puts_fndecl, void_type_node, +++ true /* top_level */); +++ +++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_PUTS, +++ void_type_node, 3, +++ a68_multiple_elements (param), +++ a68_multiple_num_elems (param), +++ a68_multiple_stride (param, size_zero_node)); +++ a68_pop_function_range (call); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (puts_fndecl)), +++ puts_fndecl); +++} +++ +++tree +++a68_posix_fconnect (void) +++{ +++ static tree fconnect_fndecl; +++ +++ if (fconnect_fndecl == NULL_TREE) +++ { +++ fconnect_fndecl +++ = a68_low_toplevel_func_decl ("fconnect", +++ build_function_type_list (a68_int_type, +++ CTYPE (M_STRING), +++ a68_bits_type, +++ NULL_TREE)); +++ announce_function (fconnect_fndecl); +++ +++ tree host = a68_low_func_param (fconnect_fndecl, "host", CTYPE (M_STRING)); +++ tree port = a68_low_func_param (fconnect_fndecl, "port", a68_int_type); +++ DECL_ARGUMENTS (fconnect_fndecl) = chainon (host, port); +++ +++ a68_push_function_range (fconnect_fndecl, a68_int_type, +++ true /* top_level */); +++ +++ +++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FCONNECT, +++ a68_int_type, 4, +++ a68_multiple_elements (host), +++ a68_multiple_num_elems (host), +++ a68_multiple_stride (host, size_zero_node), +++ port); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fconnect_fndecl)), +++ fconnect_fndecl); +++} +++ +++tree +++a68_posix_fcreate (void) +++{ +++ static tree fcreate_fndecl; +++ +++ if (fcreate_fndecl == NULL_TREE) +++ { +++ fcreate_fndecl +++ = a68_low_toplevel_func_decl ("fcreate", +++ build_function_type_list (a68_int_type, +++ CTYPE (M_STRING), +++ a68_bits_type, +++ NULL_TREE)); +++ announce_function (fcreate_fndecl); +++ +++ tree pathname = a68_low_func_param (fcreate_fndecl, "pathname", CTYPE (M_STRING)); +++ tree mode = a68_low_func_param (fcreate_fndecl, "mode", a68_int_type); +++ DECL_ARGUMENTS (fcreate_fndecl) = chainon (pathname, mode); +++ +++ a68_push_function_range (fcreate_fndecl, a68_int_type, +++ true /* top_level */); +++ +++ +++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FCREATE, +++ a68_int_type, 4, +++ a68_multiple_elements (pathname), +++ a68_multiple_num_elems (pathname), +++ a68_multiple_stride (pathname, size_zero_node), +++ mode); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fcreate_fndecl)), +++ fcreate_fndecl); +++} +++ +++tree +++a68_posix_fopen (void) +++{ +++ static tree fopen_fndecl; +++ +++ if (fopen_fndecl == NULL_TREE) +++ { +++ fopen_fndecl +++ = a68_low_toplevel_func_decl ("fopen", +++ build_function_type_list (a68_int_type, +++ CTYPE (M_STRING), +++ a68_bits_type, +++ NULL_TREE)); +++ announce_function (fopen_fndecl); +++ +++ tree pathname = a68_low_func_param (fopen_fndecl, "pathname", CTYPE (M_STRING)); +++ tree flags = a68_low_func_param (fopen_fndecl, "flags", a68_int_type); +++ DECL_ARGUMENTS (fopen_fndecl) = chainon (pathname, flags); +++ +++ a68_push_function_range (fopen_fndecl, a68_int_type, +++ true /* top_level */); +++ +++ +++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FOPEN, +++ a68_int_type, 4, +++ a68_multiple_elements (pathname), +++ a68_multiple_num_elems (pathname), +++ a68_multiple_stride (pathname, size_zero_node), +++ flags); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fopen_fndecl)), +++ fopen_fndecl); +++} +++ +++tree +++a68_posix_fclose (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_FCLOSE); +++} +++ +++tree +++a68_posix_fsize (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_FSIZE); +++} +++ +++tree +++a68_posix_lseek (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_LSEEK); +++} +++ +++tree +++a68_posix_errno (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_ERRNO); +++} +++ +++tree +++a68_posix_perror (void) +++{ +++ static tree perror_fndecl; +++ +++ if (perror_fndecl == NULL_TREE) +++ { +++ perror_fndecl +++ = a68_low_toplevel_func_decl ("perror", +++ build_function_type_list (void_type_node, +++ CTYPE (M_STRING), +++ NULL_TREE)); +++ announce_function (perror_fndecl); +++ +++ tree str = a68_low_func_param (perror_fndecl, "str", CTYPE (M_STRING)); +++ DECL_ARGUMENTS (perror_fndecl) = str; +++ +++ a68_push_function_range (perror_fndecl, void_type_node, +++ true /* top_level */); +++ +++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_PERROR, +++ a68_int_type, 3, +++ a68_multiple_elements (str), +++ a68_multiple_num_elems (str), +++ a68_multiple_stride (str, size_zero_node)); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (perror_fndecl)), +++ perror_fndecl); +++} +++ +++tree +++a68_posix_strerror (void) +++{ +++ static tree strerror_fndecl; +++ +++ if (strerror_fndecl == NULL_TREE) +++ { +++ strerror_fndecl +++ = a68_low_toplevel_func_decl ("strerror", +++ build_function_type_list (CTYPE (M_STRING), +++ a68_int_type, +++ NULL_TREE)); +++ announce_function (strerror_fndecl); +++ +++ tree errnum = a68_low_func_param (strerror_fndecl, "errnum", a68_int_type); +++ DECL_ARGUMENTS (strerror_fndecl) = errnum; +++ +++ a68_push_function_range (strerror_fndecl, CTYPE (M_STRING), +++ true /* top_level */); +++ +++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); +++ TREE_ADDRESSABLE (len) = 1; +++ +++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_STRERROR, +++ void_type_node, 2, +++ errnum, +++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); +++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); +++ +++ tree lower_bound = ssize_int (1); +++ tree upper_bound = fold_convert (ssizetype, len); +++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, +++ len, size_in_bytes (a68_char_type)); +++ +++ tree body = a68_row_value (CTYPE (M_STRING), 1 /* dim */, +++ elems, elems_size, +++ &lower_bound, &upper_bound); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (strerror_fndecl)), +++ strerror_fndecl); +++} +++ +++tree +++a68_posix_getchar (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_GETCHAR); +++} +++ +++tree +++a68_posix_fgetc (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_FGETC); +++} +++ +++tree +++a68_posix_fputc (void) +++{ +++ return a68_get_libcall (A68_LIBCALL_POSIX_FPUTC); +++} +++ +++tree +++a68_posix_fputs (void) +++{ +++ static tree fputs_fndecl; +++ +++ if (fputs_fndecl == NULL_TREE) +++ { +++ fputs_fndecl +++ = a68_low_toplevel_func_decl ("fputs", +++ build_function_type_list (a68_int_type, +++ a68_int_type, +++ CTYPE (M_STRING), +++ NULL_TREE)); +++ announce_function (fputs_fndecl); +++ +++ tree fd = a68_low_func_param (fputs_fndecl, "fd", a68_int_type); +++ tree str = a68_low_func_param (fputs_fndecl, "str", CTYPE (M_STRING)); +++ DECL_ARGUMENTS (fputs_fndecl) = chainon (fd, str); +++ +++ a68_push_function_range (fputs_fndecl, a68_int_type, +++ true /* top_level */); +++ +++ +++ tree body = a68_build_libcall (A68_LIBCALL_POSIX_FPUTS, +++ a68_int_type, 4, +++ fd, +++ a68_multiple_elements (str), +++ a68_multiple_num_elems (str), +++ a68_multiple_stride (str, size_zero_node)); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fputs_fndecl)), +++ fputs_fndecl); +++} +++ +++tree +++a68_posix_fgets (void) +++{ +++ static tree fgets_fndecl; +++ +++ if (fgets_fndecl == NULL_TREE) +++ { +++ fgets_fndecl +++ = a68_low_toplevel_func_decl ("fgets", +++ build_function_type_list (CTYPE (M_REF_STRING), +++ a68_int_type, +++ a68_int_type, +++ NULL_TREE)); +++ announce_function (fgets_fndecl); +++ +++ tree fd = a68_low_func_param (fgets_fndecl, "fd", a68_int_type); +++ tree n = a68_low_func_param (fgets_fndecl, "n", a68_int_type); +++ DECL_ARGUMENTS (fgets_fndecl) = chainon (fd, n); +++ +++ a68_push_function_range (fgets_fndecl, CTYPE (M_REF_STRING), +++ true /* top_level */); +++ +++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); +++ TREE_ADDRESSABLE (len) = 1; +++ +++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_FGETS, +++ CTYPE (M_REF_STRING), 3, +++ fd, n, +++ fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); +++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); +++ +++ tree lower_bound = ssize_int (1); +++ tree upper_bound = fold_convert (ssizetype, len); +++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, +++ len, size_in_bytes (a68_char_type)); +++ tree body = a68_row_malloc (CTYPE (M_STRING), 1 /* dim */, +++ elems, elems_size, +++ &lower_bound, &upper_bound); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (fgets_fndecl)), +++ fgets_fndecl); +++} +++ +++tree +++a68_posix_gets (void) +++{ +++ static tree gets_fndecl; +++ +++ if (gets_fndecl == NULL_TREE) +++ { +++ gets_fndecl +++ = a68_low_toplevel_func_decl ("gets", +++ build_function_type_list (CTYPE (M_REF_STRING), +++ a68_int_type, +++ NULL_TREE)); +++ announce_function (gets_fndecl); +++ +++ tree n = a68_low_func_param (gets_fndecl, "n", a68_int_type); +++ DECL_ARGUMENTS (gets_fndecl) = n; +++ +++ a68_push_function_range (gets_fndecl, CTYPE (M_REF_STRING), +++ true /* top_level */); +++ +++ tree len = a68_lower_tmpvar ("len%", sizetype, size_int (0)); +++ TREE_ADDRESSABLE (len) = 1; +++ +++ tree call = a68_build_libcall (A68_LIBCALL_POSIX_GETS, +++ CTYPE (M_REF_STRING), 2, +++ n, fold_build1 (ADDR_EXPR, build_pointer_type (sizetype), len)); +++ tree elems = a68_lower_tmpvar ("elems%", build_pointer_type (a68_char_type), call); +++ +++ tree lower_bound = ssize_int (1); +++ tree upper_bound = fold_convert (ssizetype, len); +++ tree elems_size = fold_build2 (MULT_EXPR, sizetype, +++ len, size_in_bytes (a68_char_type)); +++ tree body = a68_row_malloc (CTYPE (M_STRING), 1 /* dim */, +++ elems, elems_size, +++ &lower_bound, &upper_bound); +++ a68_pop_function_range (body); +++ } +++ +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (gets_fndecl)), +++ gets_fndecl); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-prelude.cc ++@@ -0,0 +1,2193 @@ +++/* Lower Algol 68 pre-defined operators and procedures. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* The following handlers are for lowing the entities defined in +++ a68-parser-prelude.c. */ +++ +++tree +++a68_lower_unimplemented (NODE_T *p, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ fatal_error (a68_get_node_location (p), +++ "no lowering routine installed for construct. jemarch has been lazy"); +++} +++ +++tree +++a68_lower_charabs2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_char_abs (op); +++} +++ +++tree +++a68_lower_boolabs2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_bool_abs (op); +++} +++ +++tree +++a68_lower_intabs2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_int_abs (op); +++} +++ +++tree +++a68_lower_realabs2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_real_abs (op); +++} +++ +++tree +++a68_lower_confirm2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ /* Used to implement monadic +. */ +++ return a68_lower_tree (NEXT (SUB (p)), ctx); +++} +++ +++tree +++a68_lower_negate2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return fold_build1_loc (a68_get_node_location (p), +++ NEGATE_EXPR, +++ CTYPE (MOID (p)), +++ a68_lower_tree (NEXT (SUB (p)), ctx)); +++} +++ +++/* Lower an ENTIER standard monadic operator. */ +++ +++tree +++a68_lower_entier2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *op = NEXT (SUB (p)); +++ return a68_real_entier (a68_lower_tree (op, ctx), MOID (p), MOID (op)); +++} +++ +++/* Lower a ROUND standard monadic operator. +++ +++ This operator gets a LONGSETY REAL and produces a LONGSETY INT which is the +++ nearest integer to the given real. */ +++ +++tree +++a68_lower_round2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *op = NEXT (SUB (p)); +++ return a68_real_round (a68_lower_tree (op, ctx), MOID (p), MOID (op)); +++} +++ +++tree +++a68_lower_not2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return fold_build1_loc (a68_get_node_location (p), +++ TRUTH_NOT_EXPR, +++ CTYPE (MOID (p)), +++ a68_lower_tree (NEXT (SUB (p)), ctx)); +++} +++ +++tree +++a68_lower_and3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return fold_build2_loc (a68_get_node_location (p), +++ TRUTH_AND_EXPR, +++ CTYPE (MOID (p)), +++ a68_lower_tree (SUB (p), ctx), +++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++} +++ +++tree +++a68_lower_or3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return fold_build2_loc (a68_get_node_location (p), +++ TRUTH_OR_EXPR, +++ CTYPE (MOID (p)), +++ a68_lower_tree (SUB (p), ctx), +++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++} +++ +++tree +++a68_lower_xor3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return fold_build2_loc (a68_get_node_location (p), +++ TRUTH_XOR_EXPR, +++ CTYPE (MOID (p)), +++ a68_lower_tree (SUB (p), ctx), +++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++} +++ +++tree +++a68_lower_plus_int (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *m = MOID (p); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_int_plus (m, op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_plus_real (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *m = MOID (p); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_real_plus (m, op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_minus_int (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *m = MOID (p); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_int_minus (m, op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_minus_real (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *m = MOID (p); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_real_minus (m, op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_mult_int (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *m = MOID (p); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_int_mult (m, op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_mult_real (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *m = MOID (p); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_real_mult (m, op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_multab3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree lhs = a68_lower_tree (SUB (p), ctx); +++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); +++ lhs = save_expr (lhs); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = fold_build2_loc (a68_get_node_location (p), +++ MULT_EXPR, +++ TREE_TYPE (rhs), +++ a68_low_deref (lhs, SUB (p)), +++ rhs); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), +++ lhs); +++} +++ +++tree +++a68_lower_over3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *m = MOID (p); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_int_div (m, op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_mod3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *m = MOID (p); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_int_mod (m, op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_div3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_real_div (MOID (p), +++ a68_lower_tree (SUB (p), ctx), +++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx), +++ a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_rdiv3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_real_div (MOID (p), +++ fold_build1 (FLOAT_EXPR, CTYPE (MOID (p)), +++ a68_lower_tree (SUB (p), ctx)), +++ fold_build1 (FLOAT_EXPR, CTYPE (MOID (p)), +++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)), +++ a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_int_eq3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_int_eq (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_int_ne3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_int_ne (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_int_lt3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_int_lt (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_int_le3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_int_le (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_int_gt3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_int_gt (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_int_ge3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_int_ge (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_real_eq3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_real_eq (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_real_ne3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_real_ne (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_real_lt3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_real_lt (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_real_le3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_real_le (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_real_gt3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_real_gt (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_real_ge3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_real_ge (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_char_eq3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_char_eq (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_char_ne3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_char_ne (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_char_lt3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_char_lt (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_char_le3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_char_le (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_char_gt3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_char_gt (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_char_ge3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_char_ge (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_bool_eq3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_bool_eq (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_bool_ne3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_bool_ne (op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_sign2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_int_sign (op); +++} +++ +++tree +++a68_lower_realsign2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_real_sign (op); +++} +++ +++tree +++a68_lower_plusab3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree lhs = a68_lower_tree (SUB (p), ctx); +++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); +++ lhs = save_expr (lhs); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = fold_build2_loc (a68_get_node_location (p), +++ PLUS_EXPR, +++ TREE_TYPE (rhs), +++ a68_low_deref (lhs, SUB (p)), +++ rhs); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), +++ lhs); +++} +++ +++tree +++a68_lower_minusab3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree lhs = a68_lower_tree (SUB (p), ctx); +++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); +++ lhs = save_expr (lhs); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = fold_build2_loc (a68_get_node_location (p), +++ MINUS_EXPR, +++ TREE_TYPE (rhs), +++ a68_low_deref (lhs, SUB (p)), +++ rhs); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), +++ lhs); +++} +++ +++tree +++a68_lower_overab3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree lhs = a68_lower_tree (SUB (p), ctx); +++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); +++ lhs = save_expr (lhs); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = fold_build2_loc (a68_get_node_location (p), +++ TRUNC_DIV_EXPR, +++ TREE_TYPE (rhs), +++ a68_low_deref (lhs, SUB (p)), +++ rhs); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), +++ lhs); +++} +++ +++tree +++a68_lower_modab3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree lhs = a68_lower_tree (SUB (p), ctx); +++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); +++ lhs = save_expr (lhs); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = fold_build2_loc (a68_get_node_location (p), +++ TRUNC_MOD_EXPR, +++ TREE_TYPE (rhs), +++ a68_low_deref (lhs, SUB (p)), +++ rhs); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), +++ lhs); +++} +++ +++tree +++a68_lower_divab3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree lhs = a68_lower_tree (SUB (p), ctx); +++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); +++ lhs = save_expr (lhs); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = fold_build2_loc (a68_get_node_location (p), +++ RDIV_EXPR, +++ TREE_TYPE (rhs), +++ a68_low_deref (lhs, SUB (p)), +++ rhs); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), +++ lhs); +++} +++ +++/* UPB comes in two flavors. +++ +++ The unary operator returns the upper bound of the first dimension of the +++ operand multple. +++ +++ The binary operator returns the upper bound of the given dimension of the +++ operand multiple. The dimension is one-based. If the specified dimension +++ is out of bounds then an a run-time error is raised. */ +++ +++static tree +++upb (NODE_T *p, tree boundable, tree dim) +++{ +++ boundable = save_expr (boundable); +++ dim = save_expr (dim); +++ +++ /* BOUNDABLE can be a multiple or a ROWS. */ +++ tree zero_based_dim +++ = save_expr (fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node)); +++ tree type = TREE_TYPE (boundable); +++ if (A68_ROW_TYPE_P (type)) +++ { +++ return fold_build2 (COMPOUND_EXPR, ssizetype, +++ a68_multiple_dim_check (p, boundable, dim), +++ a68_multiple_upper_bound (boundable, zero_based_dim)); +++ } +++ else if (A68_ROWS_TYPE_P (type)) +++ { +++ return fold_build2 (COMPOUND_EXPR, ssizetype, +++ a68_rows_dim_check (p, boundable, dim), +++ a68_rows_upper_bound (boundable, zero_based_dim)); +++ } +++ else +++ gcc_unreachable (); +++} +++ +++tree +++a68_lower_upb2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return fold_convert (CTYPE (MOID (p)), upb (p, multiple, size_one_node)); +++} +++ +++tree +++a68_lower_upb3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); +++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return fold_convert (CTYPE (MOID (p)), upb (p, multiple, dim)); +++} +++ +++/* LWB comes in two flavors. +++ +++ The unary operator returns the lower bound of the first dimension of the +++ operand multple. +++ +++ The binary operator returns the lower bound of the given dimension of the +++ operand multiple. The dimension is one-based. If the specified dimension +++ is out of bounds then an a run-time error is raised. */ +++ +++static tree +++lwb (NODE_T *p, tree boundable, tree dim) +++{ +++ boundable = save_expr (boundable); +++ dim = save_expr (dim); +++ +++ /* BOUNDABLE can be a multiple or an union whose all alternatives yield a +++ multiple. */ +++ tree zero_based_dim +++ = save_expr (fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node)); +++ tree type = TREE_TYPE (boundable); +++ if (A68_ROW_TYPE_P (type)) +++ { +++ return fold_build2 (COMPOUND_EXPR, ssizetype, +++ a68_multiple_dim_check (p, boundable, dim), +++ a68_multiple_lower_bound (boundable, zero_based_dim)); +++ } +++ else if (A68_ROWS_TYPE_P (type)) +++ { +++ return fold_build2 (COMPOUND_EXPR, ssizetype, +++ a68_rows_dim_check (p, boundable, dim), +++ a68_rows_lower_bound (boundable, zero_based_dim)); +++ } +++ else +++ gcc_unreachable (); +++} +++ +++tree +++a68_lower_lwb2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return fold_convert (CTYPE (MOID (p)), lwb (p, multiple, size_one_node)); +++} +++ +++tree +++a68_lower_lwb3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); +++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return fold_convert (CTYPE (MOID (p)), lwb (p, multiple, dim)); +++} +++ +++/* ELEMS comes in two flavors. +++ +++ The unary operator returns the number of elements in the first dimension of +++ the operand multple. +++ +++ DIM must be a size. +++ +++ The binary operator returns the number of elements in the given dimension of the +++ operand multiple. The dimension is one-based. If the specified dimension +++ is out of bounds then an a run-time error is raised. */ +++ +++static tree +++elems (NODE_T *p, tree boundable, tree dim) +++{ +++ dim = save_expr (dim); +++ +++ /* BOUNDABLE can be a multiple or a ROWS. */ +++ tree type = TREE_TYPE (boundable); +++ +++ /* Make DIM zero-based. */ +++ tree dim_minus_one +++ = fold_build2 (MINUS_EXPR, TREE_TYPE (dim), dim, size_one_node); +++ +++ boundable = save_expr (boundable); +++ tree upper_bound = NULL_TREE; +++ tree lower_bound = NULL_TREE; +++ tree check_dimension = NULL_TREE; +++ if (A68_ROW_TYPE_P (type)) +++ { +++ upper_bound = a68_multiple_upper_bound (boundable, dim_minus_one); +++ lower_bound = a68_multiple_lower_bound (boundable, dim_minus_one); +++ check_dimension = a68_multiple_dim_check (p, boundable, dim); +++ } +++ else if (A68_ROWS_TYPE_P (type)) +++ { +++ upper_bound = a68_rows_upper_bound (boundable, dim_minus_one); +++ lower_bound = a68_rows_lower_bound (boundable, dim_minus_one); +++ check_dimension = a68_rows_dim_check (p, boundable, dim); +++ } +++ else +++ gcc_unreachable (); +++ +++ upper_bound = save_expr (upper_bound); +++ lower_bound = save_expr (lower_bound); +++ +++ tree non_flat = fold_build2 (PLUS_EXPR, +++ sizetype, +++ fold_convert (sizetype, +++ fold_build2 (MINUS_EXPR, ssizetype, +++ upper_bound, lower_bound)), +++ size_one_node); +++ +++ tree elems = fold_build3 (COND_EXPR, sizetype, +++ fold_build2 (LT_EXPR, boolean_type_node, +++ upper_bound, lower_bound), +++ size_zero_node, +++ non_flat); +++ +++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) +++ elems = fold_build2 (COMPOUND_EXPR, sizetype, +++ check_dimension, +++ elems); +++ +++ return elems; +++} +++ +++tree +++a68_lower_elems2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree multiple = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return fold_convert (CTYPE (MOID (p)), elems (p, multiple, size_one_node)); +++} +++ +++tree +++a68_lower_elems3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree dim = fold_convert (sizetype, a68_lower_tree (SUB (p), ctx)); +++ tree multiple = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return fold_convert (CTYPE (MOID (p)), elems (p, multiple, dim)); +++} +++ +++tree +++a68_lower_pow_int (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_int_pow (MOID (p), op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_pow_real (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *mode = MOID (p); +++ MOID_T *op1_mode = MOID (SUB (p)); +++ MOID_T *op2_mode = MOID (NEXT (NEXT (SUB (p)))); +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_real_pow (mode, op1_mode, op2_mode, +++ op1, op2, a68_get_node_location (p)); +++} +++ +++tree +++a68_lower_odd2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *op = NEXT (SUB (p)); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ EQ_EXPR, +++ a68_bool_type, +++ fold_build2 (BIT_AND_EXPR, +++ CTYPE (MOID (op)), +++ a68_lower_tree (op, ctx), +++ build_int_cst (CTYPE (MOID (op)), 1)), +++ build_int_cst (CTYPE (MOID (op)), 1)); +++} +++ +++tree +++a68_lower_string_eq3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ tree cmp = a68_string_cmp (op1, op2); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ EQ_EXPR, +++ a68_bool_type, +++ cmp, +++ build_int_cst (a68_int_type, 0)); +++} +++ +++tree +++a68_lower_string_ne3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ tree cmp = a68_string_cmp (op1, op2); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ NE_EXPR, +++ a68_bool_type, +++ cmp, +++ build_int_cst (a68_int_type, 0)); +++} +++ +++tree +++a68_lower_string_lt3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ tree cmp = a68_string_cmp (op1, op2); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ LT_EXPR, +++ a68_bool_type, +++ cmp, +++ build_int_cst (a68_int_type, 0)); +++} +++ +++tree +++a68_lower_string_le3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ tree cmp = a68_string_cmp (op1, op2); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ LE_EXPR, +++ a68_bool_type, +++ cmp, +++ build_int_cst (a68_int_type, 0)); +++} +++ +++tree +++a68_lower_string_gt3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ tree cmp = a68_string_cmp (op1, op2); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ GT_EXPR, +++ a68_bool_type, +++ cmp, +++ build_int_cst (a68_int_type, 0)); +++} +++ +++tree +++a68_lower_string_ge3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ tree cmp = a68_string_cmp (op1, op2); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ GE_EXPR, +++ a68_bool_type, +++ cmp, +++ build_int_cst (a68_int_type, 0)); +++} +++ +++tree +++a68_lower_string_plus3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_string_concat (a68_lower_tree (SUB (p), ctx), +++ a68_lower_tree (NEXT (NEXT (SUB (p))), ctx)); +++} +++ +++tree +++a68_lower_string_plusab3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree lhs = a68_lower_tree (SUB (p), ctx); +++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); +++ lhs = save_expr (lhs); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = a68_string_concat (a68_low_deref (lhs, SUB (p)), rhs); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), +++ lhs); +++} +++ +++tree +++a68_lower_string_plusto3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *lhs_node = NEXT (NEXT (SUB (p))); +++ tree lhs = a68_lower_tree (lhs_node, ctx); +++ lhs = a68_consolidate_ref (MOID (lhs_node), lhs); +++ lhs = save_expr (lhs); +++ MOID_T *lhs_mode = MOID (lhs_node); +++ NODE_T *rhs_node = SUB (p); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = a68_string_concat (rhs, a68_low_deref (lhs, NEXT (NEXT (SUB (p))))); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, lhs_mode, +++ operation, MOID (rhs_node)), +++ lhs); +++} +++ +++tree +++a68_lower_repr2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *op = NEXT (SUB (p)); +++ return a68_char_repr (op, a68_lower_tree (op, ctx)); +++} +++ +++tree +++a68_lower_char_plus3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ return a68_string_concat (a68_string_from_char (op1), +++ a68_string_from_char (op2)); +++} +++ +++tree +++a68_lower_char_mult3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *n1 = SUB (p); +++ NODE_T *n2 = NEXT (NEXT (SUB (p))); +++ +++ if (MOID (n1) == M_INT) +++ { +++ gcc_assert (MOID (n2) == M_STRING || MOID (n2) == M_ROW_CHAR); +++ return a68_string_mult (a68_string_from_char (a68_lower_tree (n2, ctx)), +++ a68_lower_tree (n1, ctx)); +++ } +++ else +++ { +++ gcc_assert (MOID (n1) == M_CHAR); +++ gcc_assert (MOID (n2) == M_INT); +++ return a68_string_mult (a68_string_from_char (a68_lower_tree (n1, ctx)), +++ a68_lower_tree (n2, ctx)); +++ } +++} +++ +++tree +++a68_lower_string_mult3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *n1 = SUB (p); +++ NODE_T *n2 = NEXT (NEXT (SUB (p))); +++ +++ if (MOID (n1) == M_INT) +++ { +++ gcc_assert (MOID (n2) == M_STRING || MOID (n2) == M_ROW_CHAR); +++ return a68_string_mult (a68_lower_tree (n2, ctx), +++ a68_lower_tree (n1, ctx)); +++ } +++ else +++ { +++ gcc_assert (MOID (n1) == M_STRING || MOID (n1) == M_ROW_CHAR); +++ gcc_assert (MOID (n2) == M_INT); +++ return a68_string_mult (a68_lower_tree (n1, ctx), +++ a68_lower_tree (n2, ctx)); +++ } +++} +++ +++tree +++a68_lower_string_multab3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree lhs = a68_lower_tree (SUB (p), ctx); +++ lhs = a68_consolidate_ref (MOID (SUB (p)), lhs); +++ lhs = save_expr (lhs); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ tree operation = a68_string_mult (a68_low_deref (lhs, SUB (p)), rhs); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ a68_low_assignation (p, lhs, MOID (SUB (p)), operation, MOID (rhs_node)), +++ lhs); +++} +++ +++/* SIZETY BITS operators. */ +++ +++tree +++a68_lower_bin2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_bits_bin (MOID (p), op); +++} +++ +++tree +++a68_lower_bitabs2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_bits_abs (MOID (p), op); +++} +++ +++tree +++a68_lower_bitleng2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_bits_leng (CTYPE (MOID (p)), op); +++} +++ +++tree +++a68_lower_bitshorten2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_bits_shorten (CTYPE (MOID (p)), op); +++} +++ +++tree +++a68_lower_bitnot2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_bits_not (op); +++} +++ +++tree +++a68_lower_bitand3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_and (op1, op2); +++} +++ +++tree +++a68_lower_bitior3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_ior (op1, op2); +++} +++ +++tree +++a68_lower_bitxor3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_xor (op1, op2); +++} +++ +++tree +++a68_lower_shl3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree bits = a68_lower_tree (SUB (p), ctx); +++ tree shift = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_shift (shift, bits); +++} +++ +++tree +++a68_lower_shr3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree bits = a68_lower_tree (SUB (p), ctx); +++ tree shift = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_shift (fold_build1 (NEGATE_EXPR, +++ TREE_TYPE (shift), shift), +++ bits); +++} +++ +++tree +++a68_lower_bitelem3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree pos = a68_lower_tree (SUB (p), ctx); +++ tree bits = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_elem (p, pos, bits); +++} +++ +++tree +++a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_eq (op1, op2); +++} +++ +++tree +++a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_ne (op1, op2); +++} +++ +++tree +++a68_lower_bit_le3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_subset (op1, op2); +++} +++ +++tree +++a68_lower_bit_ge3 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ return a68_bits_subset (op2, op1); +++} +++ +++/* Environment enquiries. */ +++ +++tree +++a68_lower_maxint (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_int_maxval (CTYPE (MOID (p))); +++} +++ +++tree +++a68_lower_minint (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_int_minval (CTYPE (MOID (p))); +++} +++ +++tree +++a68_lower_maxbits (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_bits_maxbits (CTYPE (MOID (p))); +++} +++ +++tree +++a68_lower_maxreal (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_maxval (CTYPE (MOID (p))); +++} +++ +++tree +++a68_lower_minreal (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_minval (CTYPE (MOID (p))); +++} +++ +++tree +++a68_lower_smallreal (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_smallval (CTYPE (MOID (p))); +++} +++ +++tree +++a68_lower_bitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_bits_width (a68_bits_type); +++} +++ +++tree +++a68_lower_longbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_bits_width (a68_long_bits_type); +++} +++ +++tree +++a68_lower_longlongbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_bits_width (a68_long_long_bits_type); +++} +++ +++tree +++a68_lower_shortbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_bits_width (a68_short_bits_type); +++} +++ +++tree +++a68_lower_shortshortbitswidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_bits_width (a68_short_short_bits_type); +++} +++ +++tree +++a68_lower_intwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_int_width (a68_int_type); +++} +++ +++tree +++a68_lower_longintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_int_width (a68_long_int_type); +++} +++ +++tree +++a68_lower_longlongintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_int_width (a68_long_long_int_type); +++} +++ +++tree +++a68_lower_shortintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_int_width (a68_short_int_type); +++} +++ +++tree +++a68_lower_shortshortintwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_int_width (a68_short_short_int_type); +++} +++ +++tree +++a68_lower_realwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_width (a68_real_type); +++} +++ +++tree +++a68_lower_longrealwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_width (a68_long_real_type); +++} +++ +++tree +++a68_lower_longlongrealwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_width (a68_long_long_real_type); +++} +++ +++tree +++a68_lower_expwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_exp_width (a68_real_type); +++} +++ +++tree +++a68_lower_longexpwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_exp_width (a68_long_real_type); +++} +++ +++tree +++a68_lower_longlongexpwidth (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_exp_width (a68_long_long_real_type); +++} +++ +++tree +++a68_lower_pi (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_real_pi (CTYPE (MOID (p))); +++} +++ +++tree +++a68_lower_nullcharacter (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ static tree null_character = NULL_TREE; +++ +++ if (null_character == NULL_TREE) +++ null_character = build_int_cst (a68_char_type, 0); +++ return null_character; +++} +++ +++tree +++a68_lower_flip (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ static tree flip = NULL_TREE; +++ +++ if (flip == NULL_TREE) +++ flip = build_int_cst (a68_char_type, 84); /* T */ +++ return flip; +++} +++ +++tree +++a68_lower_eofchar (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ static tree eofchar = NULL_TREE; +++ +++ if (eofchar == NULL_TREE) +++ eofchar = build_int_cst (a68_char_type, -1); +++ return eofchar; +++} +++ +++tree +++a68_lower_replacementchar (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ static tree replacementchar = NULL_TREE; +++ +++ if (replacementchar == NULL_TREE) +++ replacementchar = build_int_cst (a68_char_type, 0xfffd); +++ return replacementchar; +++} +++ +++tree +++a68_lower_flop (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ static tree flop = NULL_TREE; +++ +++ if (flop == NULL_TREE) +++ flop = build_int_cst (a68_char_type, 70); /* F */ +++ return flop; +++} +++ +++tree +++a68_lower_errorchar (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ static tree errorchar = NULL_TREE; +++ +++ if (errorchar == NULL_TREE) +++ errorchar = build_int_cst (a68_char_type, 42); /* * */ +++ return errorchar; +++} +++ +++tree +++a68_lower_blank (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ static tree blank = NULL_TREE; +++ +++ if (blank == NULL_TREE) +++ blank = build_int_cst (a68_char_type, 32); +++ return blank; +++} +++ +++tree +++a68_lower_intlengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ HOST_WIDE_INT int_size = int_size_in_bytes (a68_int_type); +++ HOST_WIDE_INT long_int_size = int_size_in_bytes (a68_long_int_type); +++ HOST_WIDE_INT long_long_int_size = int_size_in_bytes (a68_long_long_int_type); +++ +++ gcc_assert (int_size != -1); +++ gcc_assert (long_int_size != -1); +++ gcc_assert (long_long_int_size != -1); +++ +++ int lengths = 1; +++ if (long_long_int_size != long_int_size) +++ lengths++; +++ if (long_int_size != int_size) +++ lengths++; +++ +++ return build_int_cst (CTYPE (MOID (p)), lengths); +++} +++ +++tree +++a68_lower_intshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ HOST_WIDE_INT int_size = int_size_in_bytes (a68_int_type); +++ HOST_WIDE_INT short_int_size = int_size_in_bytes (a68_short_int_type); +++ HOST_WIDE_INT short_short_int_size = int_size_in_bytes (a68_short_short_int_type); +++ +++ gcc_assert (int_size != -1); +++ gcc_assert (short_int_size != -1); +++ gcc_assert (short_short_int_size != -1); +++ +++ int shorths = 1; +++ if (short_short_int_size != short_int_size) +++ shorths++; +++ if (short_int_size != int_size) +++ shorths++; +++ +++ return build_int_cst (CTYPE (MOID (p)), shorths); +++} +++ +++tree +++a68_lower_bitslengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ HOST_WIDE_INT bits_size = int_size_in_bytes (a68_bits_type); +++ HOST_WIDE_INT long_bits_size = int_size_in_bytes (a68_long_bits_type); +++ HOST_WIDE_INT long_long_bits_size = int_size_in_bytes (a68_long_long_bits_type); +++ +++ gcc_assert (bits_size != -1); +++ gcc_assert (long_bits_size != -1); +++ gcc_assert (long_long_bits_size != -1); +++ +++ int lengths = 1; +++ if (long_long_bits_size != long_bits_size) +++ lengths++; +++ if (long_bits_size != bits_size) +++ lengths++; +++ +++ return build_int_cst (CTYPE (MOID (p)), lengths); +++} +++ +++tree +++a68_lower_bitsshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ HOST_WIDE_INT bits_size = int_size_in_bytes (a68_bits_type); +++ HOST_WIDE_INT short_bits_size = int_size_in_bytes (a68_short_bits_type); +++ HOST_WIDE_INT short_short_bits_size = int_size_in_bytes (a68_short_short_bits_type); +++ +++ gcc_assert (bits_size != -1); +++ gcc_assert (short_bits_size != -1); +++ gcc_assert (short_short_bits_size != -1); +++ +++ int shorths = 1; +++ if (short_short_bits_size != short_bits_size) +++ shorths++; +++ if (short_bits_size != bits_size) +++ shorths++; +++ +++ return build_int_cst (CTYPE (MOID (p)), shorths); +++} +++ +++tree +++a68_lower_reallengths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ HOST_WIDE_INT real_size = int_size_in_bytes (a68_real_type); +++ HOST_WIDE_INT long_real_size = int_size_in_bytes (a68_long_real_type); +++ HOST_WIDE_INT long_long_real_size = int_size_in_bytes (a68_long_long_real_type); +++ +++ gcc_assert (real_size != -1); +++ gcc_assert (long_real_size != -1); +++ gcc_assert (long_long_real_size != -1); +++ +++ int lengths = 1; +++ if (long_long_real_size != long_real_size) +++ lengths++; +++ if (long_real_size != real_size) +++ lengths++; +++ +++ return build_int_cst (CTYPE (MOID (p)), lengths); +++} +++ +++tree +++a68_lower_realshorths (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_int_cst (CTYPE (MOID (p)), 1); +++} +++ +++tree +++a68_lower_infinity (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_real (CTYPE (MOID (p)), dconstinf); +++} +++ +++tree +++a68_lower_minusinfinity (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_real (CTYPE (MOID (p)), dconstninf); +++} +++ +++tree +++a68_lower_maxabschar (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_char_max (); +++} +++ +++tree +++a68_lower_sqrt (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_sqrt (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_sqrt (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_sqrt (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_sqrt (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_sqrt (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_tan (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_tan (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_tan (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_tan (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_tan (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_tan (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_sin (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_sin (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_sin (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_sin (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_sin (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_sin (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_cos (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_cos (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_cos (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_cos (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_cos (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_cos (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_acos (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_acos (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_acos (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_acos (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_acos (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_acos (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_asin (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_asin (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_asin (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_asin (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_asin (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_asin (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_atan (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_atan (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_atan (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_atan (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_atan (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_atan (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_ln (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_ln (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_ln (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_ln (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_ln (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_ln (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_log (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_log (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_log (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_log (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_log (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_log (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_exp (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_exp (a68_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_exp (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_exp (a68_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_long_long_exp (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_real_exp (a68_long_long_real_type); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_reali (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ tree t = a68_complex_i (M_COMPLEX, op1, op2); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_longreali (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ tree t = a68_complex_i (M_LONG_COMPLEX, op1, op2); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_longlongreali (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ tree t = a68_complex_i (M_LONG_LONG_COMPLEX, op1, op2); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_inti (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ tree t = a68_complex_i (M_COMPLEX, +++ convert_to_real (a68_real_type, op1), +++ convert_to_real (a68_real_type, op2)); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_longinti (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ tree t= a68_complex_i (M_LONG_COMPLEX, +++ convert_to_real (a68_long_real_type, op1), +++ convert_to_real (a68_long_real_type, op2)); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_longlonginti (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op1 = a68_lower_tree (SUB (p), ctx); +++ tree op2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ tree t = a68_complex_i (M_LONG_LONG_COMPLEX, +++ convert_to_real (a68_long_long_real_type, op1), +++ convert_to_real (a68_long_long_real_type, op2)); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_re2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ tree t = a68_complex_re (op); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_im2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ tree t = a68_complex_im (op); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_conj2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ return a68_complex_conj (MOID (p), op); +++} +++ +++tree +++a68_lower_shortenint2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_int_shorten (MOID (p), MOID (NEXT (SUB (p))), +++ a68_lower_tree (NEXT (SUB (p)), ctx)); +++} +++ +++tree +++a68_lower_lengint2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_int_leng (MOID (p), MOID (NEXT (SUB (p))), +++ a68_lower_tree (NEXT (SUB (p)), ctx)); +++} +++ +++tree +++a68_lower_shortenreal2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_real_shorten (MOID (p), MOID (NEXT (SUB (p))), +++ a68_lower_tree (NEXT (SUB (p)), ctx)); +++} +++ +++tree +++a68_lower_lengreal2 (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_real_leng (MOID (p), MOID (NEXT (SUB (p))), +++ a68_lower_tree (NEXT (SUB (p)), ctx)); +++} +++ +++tree +++a68_lower_random (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_get_libcall (A68_LIBCALL_RANDOM); +++} +++ +++tree +++a68_lower_longrandom (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* Note we dont build a call because this will get deprocedured in case it is +++ actually called. */ +++ return a68_get_libcall (A68_LIBCALL_LONGRANDOM); +++} +++ +++tree +++a68_lower_longlongrandom (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_get_libcall (A68_LIBCALL_LONGLONGRANDOM); +++} +++ +++/********* POSIX prelude. ***************/ +++ +++tree +++a68_lower_setexitstatus (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_setexitstatus (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixargc (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_argc (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixargv (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_argv (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixgetenv (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_getenv (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixputchar (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_putchar (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixputs (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_puts (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixfconnect (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fconnect (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixfopen (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fopen (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixfcreate (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fcreate (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixfclose (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fclose (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixfsize (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fsize (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixlseek (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_lseek (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixseekcur (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_int_cst (a68_int_type, 0); +++} +++ +++tree +++a68_lower_posixseekend (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_int_cst (a68_int_type, 1); +++} +++ +++tree +++a68_lower_posixseekset (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_int_cst (a68_int_type, 2); +++} +++ +++tree +++a68_lower_posixstdinfiledes (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_int_cst (a68_int_type, 0); +++} +++ +++tree +++a68_lower_posixstdoutfiledes (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_int_cst (a68_int_type, 1); +++} +++ +++tree +++a68_lower_posixstderrfiledes (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return build_int_cst (a68_int_type, 2); +++} +++ +++tree +++a68_lower_posixfileodefault (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* Please keep in sync with libga68/ga68-posix.c */ +++ return build_int_cst (a68_bits_type, 0x99999999); +++} +++ +++tree +++a68_lower_posixfileordwr (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* Please keep in sync with libga68/ga68-posix.c */ +++ return build_int_cst (a68_bits_type, 0x2); +++} +++ +++tree +++a68_lower_posixfileordonly (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* Please keep in sync with libga68/ga68-posix.c */ +++ return build_int_cst (a68_bits_type, 0x0); +++} +++ +++tree +++a68_lower_posixfileowronly (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* Please keep in sync with libga68/ga68-posix.c */ +++ return build_int_cst (a68_bits_type, 0x1); +++} +++ +++tree +++a68_lower_posixfileotrunc (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* Please keep in sync with libga68/ga68-posix.c */ +++ return build_int_cst (a68_bits_type, 0x8); +++} +++ +++tree +++a68_lower_posixerrno (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_errno (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixperror (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_perror (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixstrerror (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_strerror (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixfputc (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fputc (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixfputs (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fputs (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixgetchar (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_getchar (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++ +++tree +++a68_lower_posixfgetc (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fgetc (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixgets (NODE_T *p ATTRIBUTE_UNUSED, +++ LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_gets (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} +++ +++tree +++a68_lower_posixfgets (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree t = a68_posix_fgets (); +++ if (CAN_HAVE_LOCATION_P (t)) +++ SET_EXPR_LOCATION (t, a68_get_node_location (p)); +++ return t; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-procs.cc ++@@ -0,0 +1,52 @@ +++/* Lowering routines for all things related to procedures. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with the yielding of SKIP for the given procedure mode. */ +++ +++tree +++a68_get_proc_skip_tree (MOID_T *m) +++{ +++ /* A SKIP for a procecure mode lowers to a NULL pointer to a function. */ +++ return build_int_cst (CTYPE (m), 0); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-ranges.cc ++@@ -0,0 +1,699 @@ +++/* Management of ranges in the Algol 68 front-end. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++#include "tree-nested.h" +++ +++#include "a68.h" +++ +++/* Many Algol 68 constructions introduce a new range of definitions. This is +++ the case of clauses and of routine definitions. The stack of ranges at any +++ point in the program determines the "nest" of the constructions declared in +++ the program. This nest carries a record of all the declarations forming the +++ environment in which that construct is to be interpreted. +++ +++ This file contains a manager of ranges of which we allocate one for each +++ range inducing construct. The top-level range corresponds to the primal +++ environment. +++ +++ The ranges are used by the lowering code in order to create GCC tree BLOCK +++ nodes, and also to keep track of the set of declarations and of statements +++ being added by the current serial clause. */ +++ +++struct GTY (()) range +++{ +++ /* Whether this range entry doesn't introduce a lexical frame. Declarations +++ and decl_exprs get added to the nearst enclosing range that is not +++ frameless. */ +++ bool frameless; +++ +++ /* A chain of _DECL nodes for all variables, constants, functions, +++ and typedef types. These are in the reverse of the order supplied. */ +++ tree names; +++ +++ /* A statements list of DECL_EXPR nodes for all the declarations in the +++ range. These are prepended to the statements list when the range is +++ closed. */ +++ tree decl_exprs; +++ +++ /* The context of the range, either a function declaration or a translation +++ unit. */ +++ tree context; +++ +++ /* The range below this one. */ +++ struct range *next; +++ +++ /* Statement list. */ +++ tree stmt_list; +++ +++ /* List of blocks to which the block created for this range is the +++ superblock. */ +++ tree blocks; +++ +++ /* Mode associated with the range. For serial clauses, this is the mode of +++ the value yielded by the clause. */ +++ MOID_T *mode; +++ +++ /* If not TREE_NULL, then the range corresponds to a function, which can be +++ either nested or defined at top-level. */ +++ tree fndecl; +++ bool top_level_function; +++ +++ /* The following fields are used by ranges introduced by serial +++ clauses. */ +++ bool save_restore_stack; +++ bool has_completers; +++ tree clause_result_decl; +++ tree clause_exit_label_decl; +++ tree clause_stack_save_decl; +++}; +++ +++/* Global and current ranges. */ +++ +++static GTY (()) struct range *global_range; +++static GTY (()) struct range *current_range; +++ +++/* Create a new range and push it in the list. */ +++ +++static struct range * +++new_range (void) +++{ +++ struct range *range = ggc_alloc (); +++ +++ range->frameless = false; +++ range->names = NULL; +++ range->decl_exprs = alloc_stmt_list (); +++ range->context = NULL; +++ range->next = NULL; +++ range->blocks = NULL_TREE; +++ range->stmt_list = alloc_stmt_list (); +++ range->fndecl = NULL_TREE; +++ range->top_level_function = false; +++ range->save_restore_stack = false; +++ range->has_completers = false; +++ range->clause_result_decl = NULL_TREE; +++ range->clause_exit_label_decl = NULL_TREE; +++ range->clause_stack_save_decl = NULL_TREE; +++ range->mode = NO_MOID; +++ return range; +++} +++ +++/* Push a new frameless range. */ +++ +++void +++a68_push_stmt_list (MOID_T *mode) +++{ +++ a68_push_range (mode); +++ current_range->frameless = true; +++} +++ +++/* Pop a frameless range. */ +++ +++tree +++a68_pop_stmt_list (void) +++{ +++ /* This will result into a stmt list. */ +++ tree res = a68_pop_range (); +++ gcc_assert (TREE_CODE (res) == STATEMENT_LIST); +++ return res; +++} +++ +++/* Push a new range. */ +++ +++void +++a68_push_range (MOID_T *mode) +++{ +++ struct range *range = new_range (); +++ if (current_range) +++ range->context = current_range->context; +++ range->next = current_range; +++ range->mode = mode; +++ current_range = range; +++} +++ +++/* Pop a range, with a finalizer. +++ +++ Return a BIND_EXPR, a statement list or a TRY_FINALLY_EXPR. */ +++ +++tree +++a68_pop_range_with_finalizer (tree finalizer) +++{ +++ tree range = a68_pop_range (); +++ return fold_build2 (TRY_FINALLY_EXPR, TREE_TYPE (range), +++ range, finalizer); +++} +++ +++/* Pop a range. Return either a BIND_EXPR or a statements list. */ +++ +++tree +++a68_pop_range (void) +++{ +++ struct range *range = current_range; +++ current_range = range->next; +++ tree type = (range->mode == NULL ? void_type_node : CTYPE (range->mode)); +++ +++ /* If TYPE is a pointer type and the last expression in the statement list is +++ a variable of the type pointed by TYPE then take its address. */ +++ tree_stmt_iterator i = tsi_last (range->stmt_list); +++ if (POINTER_TYPE_P (type) && TREE_TYPE (type) == TREE_TYPE (tsi_stmt (i))) +++ { +++ append_to_statement_list_force (a68_consolidate_ref (range->mode, tsi_stmt (i)), +++ &range->stmt_list); +++ tsi_delink (&i); +++ } +++ +++ tree clause = NULL_TREE; +++ if (range->frameless) +++ clause = range->stmt_list; +++ else +++ { +++ /* Create a block and set its declarations and supercontext. */ +++ tree block = make_node (BLOCK); +++ BLOCK_VARS (block) = range->names; +++ BLOCK_SUBBLOCKS (block) = range->blocks; +++ +++ /* In each subblock, record that this is its superior. */ +++ for (tree t = range->blocks; t; t = BLOCK_CHAIN (t)) +++ BLOCK_SUPERCONTEXT (t) = block; +++ +++ if (range->fndecl) +++ { +++ BLOCK_SUPERCONTEXT (block) = range->fndecl; +++ DECL_INITIAL (range->fndecl) = block; +++ } +++ else +++ { +++ current_range->blocks +++ = block_chainon (current_range->blocks, block); +++ } +++ +++ TREE_USED (block) = true; +++ +++ /* Create a BIND if the range contains declarations. Otherwise just +++ use the statements list. */ +++ clause = range->stmt_list; +++ if (range->names != NULL_TREE) +++ { +++ clause = build3 (BIND_EXPR, +++ type, +++ range->names, +++ range->stmt_list, +++ block); +++ TREE_SIDE_EFFECTS (clause) = 1; +++ BIND_EXPR_VARS (clause) = BLOCK_VARS (block); +++ } +++ +++ /* Prepend the decl_exprs to the range's statements list. */ +++ tree_stmt_iterator q = tsi_start (range->stmt_list); +++ tsi_link_before (&q, range->decl_exprs, TSI_SAME_STMT); +++ } +++ +++ /* Set the type of the stmt_list. */ +++ TREE_TYPE (range->stmt_list) = type; +++ TREE_SIDE_EFFECTS (range->stmt_list) = 1; +++ +++ return clause; +++} +++ +++/* Add a new expression to the current range. */ +++ +++void +++a68_add_stmt (tree exp) +++{ +++ if (exp == void_node) +++ /* This may result from a mode declaration. */ +++ return; +++ gcc_assert (current_range != NULL); +++ append_to_statement_list_force (exp, +++ ¤t_range->stmt_list); +++} +++ +++/* Add a new declaration to the current range. */ +++ +++void +++a68_add_decl (tree decl) +++{ +++ gcc_assert (current_range != NULL); +++ struct range *range = current_range; +++ +++ /* Search for the right frame where to add the declaration. */ +++ while (range->frameless) +++ { +++ gcc_assert (range->next != NULL); +++ range = range->next; +++ } +++ +++ tree n = range->names; +++ while (n != decl && n != NULL) +++ n = TREE_CHAIN (n); +++ if (n != decl) +++ { +++ if (decl != current_function_decl) +++ DECL_CONTEXT (decl) = range->context; +++ /* Note this list needs to be in reverse order for compatibility with +++ GCC. */ +++ TREE_CHAIN (decl) = range->names; +++ range->names = decl; +++ } +++} +++ +++/* Add a new declaration expr to the current range. */ +++ +++void +++a68_add_decl_expr (tree decl_expr) +++{ +++ gcc_assert (current_range != NULL); +++ struct range *range = current_range; +++ +++ /* Search for the right frame where to add the declaration expr. */ +++ while (range->frameless) +++ { +++ gcc_assert (range->next != NULL); +++ range = range->next; +++ } +++ +++ append_to_statement_list_force (decl_expr, &range->decl_exprs); +++} +++ +++/* Add a completer in the current range. */ +++ +++void +++a68_add_completer (void) +++{ +++ struct range *range = current_range; +++ +++ /* The last statement in the statements list is either a single unit or a +++ labeled unit, i.e a COMPOUND_EXPR whose first expression is a label and +++ second expression is the unit. Consolidate the unit within the labeled +++ unit to a ref. */ +++ tree_stmt_iterator i = tsi_last (range->stmt_list); +++ tree last_expr = tsi_stmt (i); +++ +++ if (TREE_CODE (last_expr) == COMPOUND_EXPR +++ && TREE_CODE (TREE_OPERAND (last_expr, 0)) == LABEL_EXPR) +++ { +++ TREE_OPERAND (last_expr, 1) = a68_consolidate_ref (range->mode, +++ TREE_OPERAND (last_expr, 1)); +++ TREE_TYPE (last_expr) = TREE_TYPE (TREE_OPERAND (last_expr, 1)); +++ } +++ else +++ last_expr = a68_consolidate_ref (range->mode, last_expr); +++ +++ /* Now assign the labeled unit to the clause result decl then jump to the end +++ of the serial clause. */ +++ append_to_statement_list_force (fold_build2 (MODIFY_EXPR, +++ void_type_node, +++ range->clause_result_decl, +++ last_expr), +++ &range->stmt_list); +++ tsi_delink (&i); +++ append_to_statement_list_force (fold_build1 (GOTO_EXPR, void_type_node, +++ range->clause_exit_label_decl), +++ &range->stmt_list); +++ range->has_completers = true; +++} +++ +++/* Get the context of the current range. */ +++ +++tree +++a68_range_context (void) +++{ +++ gcc_assert (current_range != NULL); +++ return current_range->context; +++} +++ +++/* Get the list of declarations in the current range. */ +++ +++tree +++a68_range_names (void) +++{ +++ struct range *range = current_range; +++ +++ while (range->frameless && range->next != NULL) +++ range = range->next; +++ +++ if (range != NULL) +++ return range->names; +++ else +++ return NULL_TREE; +++} +++ +++/* Get the statements list of the current range. */ +++ +++tree +++a68_range_stmt_list (void) +++{ +++ gcc_assert (current_range != NULL); +++ return current_range->stmt_list; +++} +++ +++/* Push a range for a function. */ +++ +++void +++a68_push_function_range (tree fndecl, tree result_type, +++ bool top_level) +++{ +++ a68_push_range (NULL /* VOID */); +++ current_range->fndecl = fndecl; +++ current_range->top_level_function = top_level; +++ current_range->context = fndecl; +++ +++ /* Setup the result declaration. */ +++ tree resdecl = build_decl (UNKNOWN_LOCATION, +++ RESULT_DECL, +++ get_identifier ("resdecl%"), +++ result_type); +++ DECL_ARTIFICIAL (resdecl) = 1; +++ DECL_IGNORED_P (resdecl) = 1; +++ DECL_CONTEXT (resdecl) = fndecl; +++ DECL_RESULT (fndecl) = resdecl; +++ rest_of_decl_compilation (fndecl, 1, 0); +++ make_decl_rtl (fndecl); +++ allocate_struct_function (fndecl, false); +++ +++ /* Let GCC know the current scope is this function. */ +++ current_function_decl = fndecl; +++} +++ +++/* Pop a range for a function. */ +++ +++void +++a68_pop_function_range (tree body) +++{ +++ tree fndecl = current_range->fndecl; +++ bool top_level = current_range->top_level_function; +++ +++ if (TREE_TYPE (DECL_RESULT (fndecl)) == void_type_node) +++ { +++ a68_add_stmt (body); +++ } +++ else +++ { +++ /* Append the return statement. +++ Note that this does the copy of the returned value. */ +++ tree return_stmt = fold_build1 (RETURN_EXPR, +++ void_type_node, +++ fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (DECL_RESULT (fndecl)), +++ DECL_RESULT (fndecl), +++ a68_low_dup (body, true /* use_heap */))); +++ a68_add_stmt (return_stmt); +++ } +++ +++ /* Set the body of the function. */ +++ DECL_SAVED_TREE (fndecl) = a68_pop_range (); +++ +++ /* Output the GENERIC tree for the function.. */ +++ dump_function (TDI_original, fndecl); +++ /* This compiles the function all the way to assembler language output. +++ Nested functions are finalized when the containing top-level function is +++ finalized. */ +++ if (top_level || a68_in_global_range ()) +++ cgraph_node::finalize_function (fndecl, true); +++ else +++ /* Register this function with cgraph just far enough to get it added to +++ our parent's nested function list. */ +++ (void) cgraph_node::get_create (fndecl); +++ +++ /* Let GCC know the current scope has changed. */ +++ current_function_decl = NULL_TREE; +++ for (struct range *r = current_range; r; r = r->next) +++ { +++ if (r->fndecl != NULL_TREE) +++ current_function_decl = r->fndecl; +++ } +++} +++ +++/* Push a range for a serial clause. +++ +++ label1: BIND_EXPR_BODY (STATEMENT_LIST ( +++ expr1; label1, +++ expr2 expr1, +++ exit label2: clause_result = expr2, +++ expr3; goto exit_label, +++ expr4 label2, +++ exit label3: expr3, +++ expr5 clause_result = expr4, +++ goto exit_label, +++ label3, +++ clause_result = expr5, +++ exit_label, +++ clause_result)) */ +++ +++void +++a68_push_serial_clause_range (MOID_T *clause_mode, +++ bool save_restore_stack) +++{ +++ /* Get the type of the enclosing clause. */ +++ tree clause_type = CTYPE (clause_mode); +++ +++ /* If the serial clause has declarations that involve dynamic allocation, and +++ the environ it establishes is local, then save the stack pointer. */ +++ if (save_restore_stack) +++ { +++ a68_push_range (clause_mode); +++ current_range->save_restore_stack = true; +++ +++ tree outer_clause_result_decl = build_decl (UNKNOWN_LOCATION, +++ VAR_DECL, +++ NULL, /* Set below. */ +++ clause_type); +++ char *outer_clause_result_name = xasprintf ("outer_clause_result%d%%", +++ DECL_UID (outer_clause_result_decl)); +++ DECL_NAME (outer_clause_result_decl) = get_identifier (outer_clause_result_name); +++ free (outer_clause_result_name); +++ current_range->clause_result_decl = outer_clause_result_decl; +++ a68_add_decl (outer_clause_result_decl); +++ +++ /* Variable used to save the stack pointer. */ +++ tree stack_save_decl = build_decl (UNKNOWN_LOCATION, +++ VAR_DECL, +++ get_identifier ("stack_save%"), +++ build_pointer_type (char_type_node)); +++ current_range->clause_stack_save_decl = stack_save_decl; +++ a68_add_decl (stack_save_decl); +++ a68_add_stmt (fold_build1 (DECL_EXPR, +++ TREE_TYPE (stack_save_decl), +++ stack_save_decl)); +++ +++ /* Save stack pointer. */ +++ tree call = builtin_decl_implicit (BUILT_IN_STACK_SAVE); +++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 0); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ stack_save_decl, call)); +++ } +++ +++ /* Push a new range. */ +++ a68_push_range (clause_mode); +++ current_range->save_restore_stack = save_restore_stack; +++ +++ /* Create a decl for clause_result with the right type and add it to the +++ block's declaration list. */ +++ tree clause_result_decl = build_decl (UNKNOWN_LOCATION, +++ VAR_DECL, +++ NULL, /* Set below. */ +++ clause_type); +++ char *clause_result_name = xasprintf ("clause_result%d%%", DECL_UID (clause_result_decl)); +++ DECL_NAME (clause_result_decl) = get_identifier (clause_result_name); +++ // free (clause_result_name); +++ DECL_INITIAL (clause_result_decl) = a68_get_skip_tree (clause_mode); +++ DECL_CONTEXT (clause_result_decl) = current_range->context; +++ current_range->clause_result_decl = clause_result_decl; +++ +++ /* Create a decl for the clause's exit label. */ +++ tree clause_exit_label_decl = build_decl (UNKNOWN_LOCATION, +++ LABEL_DECL, +++ NULL, /* Set below. */ +++ void_type_node); +++ char *exit_label_name = xasprintf ("clause_exit_label%d%%", DECL_UID (clause_exit_label_decl)); +++ DECL_NAME (clause_exit_label_decl) = get_identifier (exit_label_name); +++ free (exit_label_name); +++ DECL_CONTEXT (clause_exit_label_decl) = current_range->context; +++ current_range->clause_exit_label_decl = clause_exit_label_decl; +++} +++ +++/* Pop a range for a serial clause and return the resulting bind +++ expression. */ +++ +++tree +++a68_pop_serial_clause_range (void) +++{ +++ struct range *range = current_range; +++ MOID_T *clause_mode = range->mode; +++ tree clause_type = CTYPE (clause_mode); +++ +++ /* The last expression in the statements list is either a single unit or a +++ labeled unit. Consolidate it to a ref if required by the mode of the +++ serial clause. */ +++ { +++ tree_stmt_iterator si = tsi_last (range->stmt_list); +++ tree last_expr = tsi_stmt (si); +++ if (TREE_CODE (last_expr) == COMPOUND_EXPR +++ && TREE_CODE (TREE_OPERAND (last_expr, 0)) == LABEL_EXPR) +++ { +++ TREE_OPERAND (last_expr, 1) = a68_consolidate_ref (range->mode, +++ TREE_OPERAND (last_expr, 1)); +++ TREE_TYPE (last_expr) = TREE_TYPE (TREE_OPERAND (last_expr, 1)); +++ } +++ else +++ last_expr = a68_consolidate_ref (range->mode, last_expr); +++ a68_add_stmt (last_expr); +++ tsi_delink (&si); +++ } +++ +++ /* If the serial clause has completers, we have to make use of the +++ clause_result% and clause_exit_label% mechanism to assure the statements +++ list has a single exit at the end. */ +++ if (range->has_completers) +++ { +++ /* First prepend EXPR_DECL expressions for clause_result% and +++ clause_exit_label% */ +++ { +++ tree_stmt_iterator si = tsi_start (range->stmt_list); +++ tsi_link_before (&si, +++ fold_build1 (DECL_EXPR, +++ TREE_TYPE (range->clause_result_decl), +++ range->clause_result_decl), +++ TSI_CONTINUE_LINKING); +++ tsi_link_before (&si, +++ fold_build1 (DECL_EXPR, +++ TREE_TYPE (range->clause_exit_label_decl), +++ range->clause_exit_label_decl), +++ TSI_CONTINUE_LINKING); +++ } +++ +++ /* Then turn the last expression in stmt_list to an assignment to +++ clause_result_decl%, but don't bother if it has been voided. */ +++ if (clause_type != a68_void_type) +++ { +++ tree_stmt_iterator si = tsi_last (range->stmt_list); +++ tree last_expr = tsi_stmt (si); +++ +++ a68_add_stmt (build2 (MODIFY_EXPR, +++ clause_type, +++ range->clause_result_decl, +++ last_expr)); +++ tsi_delink (&si); +++ } +++ +++ a68_add_decl (range->clause_result_decl); +++ a68_add_decl (range->clause_exit_label_decl); +++ +++ /* Finally append the exit label and last expression with +++ result_decl. */ +++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, range->clause_exit_label_decl)); +++ a68_add_stmt (build1 (NON_LVALUE_EXPR, clause_type, range->clause_result_decl)); +++ } +++ +++ /* Check that the type of the last statement in the statements list is the +++ same than the type corresponding to the clause mode. */ +++ { +++ tree_stmt_iterator si = tsi_last (range->stmt_list); +++ if (TREE_TYPE (tsi_stmt (si)) != clause_type +++ /* But NIL can appear in a context expecting VOID with no widening. */ +++ && !(clause_type == a68_void_type +++ && POINTER_TYPE_P (TREE_TYPE (tsi_stmt (si))) +++ && TREE_CODE (tsi_stmt (si)) == INTEGER_CST +++ && tree_to_shwi (tsi_stmt (si)) == 0) +++ /* And any row type is valid when M_ROWS is expected. */ +++ && !(A68_ROWS_TYPE_P (clause_type) +++ && A68_ROWS_TYPE_P (TREE_TYPE (tsi_stmt (si)))) +++ /* Do not rely on comparing pointer types, as the equality fails in +++ that case. We need a better way of comparing types, either using +++ TYPE_CANONICAL or caching. */ +++ && !(POINTER_TYPE_P (TREE_TYPE (tsi_stmt (si))) && POINTER_TYPE_P (clause_type))) +++ { +++ printf ("last statement:\n"); +++ debug_tree (tsi_stmt (si)); +++ printf ("expected type:\n"); +++ debug_tree (clause_type); +++ gcc_unreachable (); +++ } +++ } +++ +++ /* If the serial clause has declarations that involve dynamic allocation, and +++ the environ it establishes is local, then restore the stack pointer. */ +++ if (range->save_restore_stack) +++ { +++ /* Turn last expression of inner clause into a modify statement. This +++ may involve a copy. This can be omitted if the serial clause yields +++ void. */ +++ if (clause_type != a68_void_type) +++ { +++ tree_stmt_iterator si = tsi_last (range->stmt_list); +++ tree last_expr = tsi_stmt (si); +++ +++ a68_add_stmt (build2 (MODIFY_EXPR, +++ clause_type, +++ range->next->clause_result_decl, +++ a68_low_dup (last_expr))); +++ tsi_delink (&si); +++ } +++ +++ /* Finish inner clause, restoring stack pointer on finalizing. */ +++ tree restore_sp = builtin_decl_implicit (BUILT_IN_STACK_RESTORE); +++ restore_sp = build_call_expr_loc (UNKNOWN_LOCATION, restore_sp, 1, +++ current_range->next->clause_stack_save_decl); +++ a68_add_stmt (a68_pop_range_with_finalizer (restore_sp)); +++ /* The result value is now in clause_result_decl. */ +++ a68_add_stmt (build1 (NON_LVALUE_EXPR, clause_type, +++ current_range->clause_result_decl)); +++ } +++ +++ return a68_pop_range (); +++} +++ +++/* Whether the current range is the global range. */ +++ +++bool +++a68_in_global_range (void) +++{ +++ return current_range == global_range; +++} +++ +++/* Initialize ranges. */ +++ +++void +++a68_init_ranges (void) +++{ +++ global_range = new_range (); +++ global_range->context = build_translation_unit_decl (NULL); +++ current_range = global_range; +++} +++ +++#include "gt-algol68-a68-low-ranges.h" ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-reals.cc ++@@ -0,0 +1,620 @@ +++/* Lowering routines for all things related to REAL values. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "math.h" /* For log10 */ +++ +++#include "a68.h" +++ +++tree +++a68_get_real_skip_tree (MOID_T *m) +++{ +++ tree int_type = NULL_TREE; +++ tree real_type = NULL_TREE; +++ +++ if (m == M_REAL) +++ { +++ int_type = a68_int_type; +++ real_type = a68_real_type; +++ } +++ else if (m == M_LONG_REAL) +++ { +++ int_type = a68_long_int_type; +++ real_type = a68_long_real_type; +++ } +++ else if (m == M_LONG_LONG_REAL) +++ { +++ int_type = a68_long_long_int_type; +++ real_type = a68_long_long_real_type; +++ } +++ else +++ gcc_unreachable (); +++ +++ return build_real_from_int_cst (real_type, +++ build_int_cst (int_type, 0)); +++} +++ +++static tree +++addr_of_builtin_decl (enum built_in_function fncode) +++{ +++ tree builtin = builtin_decl_explicit (fncode); +++ return fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (builtin)), builtin); +++} +++ +++/* Build PI for the given real type. */ +++ +++tree +++a68_real_pi (tree type) +++{ +++ return build_real (type, dconst_pi ()); +++} +++ +++/* Given a real type, build the maximum value expresssable with that type. */ +++ +++tree +++a68_real_maxval (tree type) +++{ +++ REAL_VALUE_TYPE max; +++ real_maxval (&max, 0, TYPE_MODE (type)); +++ return build_real (type, max); +++} +++ +++/* Given a real type, build the minimum value expressable with that type. */ +++ +++tree +++a68_real_minval (tree type) +++{ +++ REAL_VALUE_TYPE min; +++ real_maxval (&min, 1, TYPE_MODE (type)); +++ return build_real (type, min); +++} +++ +++/* Given a real type, build the smallest value which can be meaningfully added +++ to or substracted from 1. */ +++ +++tree +++a68_real_smallval (tree type) +++{ +++ /* The smallest real value which can be meaningfully added to or subtracted +++ from 1. */ +++ const machine_mode mode = TYPE_MODE (type); +++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); +++ +++ char buf[128]; +++ if (fmt->pnan < fmt->p) +++ snprintf (buf, sizeof (buf), "0x1p%d", fmt->emin - fmt->p); +++ else +++ snprintf (buf, sizeof (buf), "0x1p%d", 1 - fmt->p); +++ +++ REAL_VALUE_TYPE res; +++ real_from_string (&res, buf); +++ return build_real (type, res); +++} +++ +++/* Given a real type, build an INT with the number of decimal digits required +++ to represent a mantissa, such that a real is not reglected in comparison +++ with 1, not including sign. */ +++ +++tree +++a68_real_width (tree type) +++{ +++ const machine_mode mode = TYPE_MODE (type); +++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); +++ return build_int_cst (a68_int_type, fmt->p); +++} +++ +++/* Given a real type, build an INT with the number of decimal digits required +++ to represent a decimal exponent, such that a real can be correctly +++ represented, not including sign. */ +++ +++tree +++a68_real_exp_width (tree type ATTRIBUTE_UNUSED) +++{ +++ const machine_mode mode = TYPE_MODE (type); +++ const struct real_format *fmt = REAL_MODE_FORMAT (mode); +++ const double log10_2 = .30102999566398119521; +++ double log10_b = log10_2; +++ int max_10_exp = fmt->emax * log10_b; +++ +++ return build_int_cst (a68_int_type, 1 + log10 (max_10_exp)); +++} +++ +++/* Given a real value VAL, return -1 if it is less than zero, 0 if it is zero +++ and +1 if it is bigger than zero. The built value is always of mode +++ M_INT. */ +++ +++tree +++a68_real_sign (tree val) +++{ +++ tree zero = build_real (TREE_TYPE (val), dconst0); +++ return fold_build3 (COND_EXPR, +++ a68_int_type, +++ build2 (EQ_EXPR, integer_type_node, val, zero), +++ build_int_cst (a68_int_type, 0), +++ fold_build3 (COND_EXPR, +++ a68_int_type, +++ fold_build2 (GT_EXPR, integer_type_node, val, zero), +++ build_int_cst (a68_int_type, 1), +++ build_int_cst (a68_int_type, -1))); +++} +++ +++/* Absolute value of a real value. */ +++ +++tree +++a68_real_abs (tree val) +++{ +++ return fold_build1 (ABS_EXPR, TREE_TYPE (val), val); +++} +++ +++tree +++a68_real_sqrt (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_SQRTF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_SQRT; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_SQRTL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_tan (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_TANF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_TAN; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_TANL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_sin (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_SINF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_SIN; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_SINL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_cos (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_COSF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_COS; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_COSL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_acos (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_ACOSF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_ACOS; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_ACOSL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_asin (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_ASINF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_ASIN; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_ASINL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_atan (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_ATANF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_ATAN; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_ATANL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_ln (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_LOGF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_LOG; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_LOGL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_log (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_LOG10F; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_LOG10; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_LOG10L; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++tree +++a68_real_exp (tree type) +++{ +++ enum built_in_function builtin; +++ +++ if (type == float_type_node) +++ builtin = BUILT_IN_EXPF; +++ else if (type == double_type_node) +++ builtin = BUILT_IN_EXP; +++ else if (type == long_double_type_node) +++ builtin = BUILT_IN_EXPL; +++ else +++ gcc_unreachable (); +++ +++ return addr_of_builtin_decl (builtin); +++} +++ +++/* Build the real value lengthened from the value of VAL, from mode +++ FROM_MODE to mode TO_MODE. */ +++ +++tree +++a68_real_leng (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) +++{ +++ /* Lengthening can be done by just a conversion. */ +++ return fold_convert (CTYPE (to_mode), val); +++} +++ +++/* Build the real value that can be lengthened to the value of VAL, from mode +++ FROM_MODE to mode TO_MODE. +++ +++ If VAL cannot be represented in TO_MODE because it is bigger than the most +++ positive value representable in TO_MODE, then it is truncated to that value. +++ +++ Likewise, if VAL cannot be represented in TO_MODE because it is less than +++ the most negative value representable in TO_MODE, then it is truncated to +++ that value. */ +++ +++tree +++a68_real_shorten (MOID_T *to_mode, MOID_T *from_mode ATTRIBUTE_UNUSED, tree val) +++{ +++ tree most_positive_value = fold_convert (CTYPE (from_mode), +++ a68_real_maxval (CTYPE (to_mode))); +++ tree most_negative_value = fold_convert (CTYPE (from_mode), +++ a68_real_minval (CTYPE (to_mode))); +++ +++ val = save_expr (val); +++ most_positive_value = save_expr (most_positive_value); +++ most_negative_value = save_expr (most_negative_value); +++ return fold_build3 (COND_EXPR, CTYPE (to_mode), +++ fold_build2 (GT_EXPR, a68_bool_type, val, most_positive_value), +++ fold_convert (CTYPE (to_mode), most_positive_value), +++ fold_build3 (COND_EXPR, CTYPE (to_mode), +++ fold_build2 (LT_EXPR, a68_bool_type, val, most_negative_value), +++ fold_convert (CTYPE (to_mode), most_negative_value), +++ fold_convert (CTYPE (to_mode), val))); +++} +++ +++/* Given a real expression VAL of mode MODE, produce an integral value which is +++ equal to the given real, or the next integer below (more negative than) the +++ given real. */ +++ +++tree +++a68_real_entier (tree val, MOID_T *to_mode, MOID_T *from_mode) +++{ +++ tree fn = NULL_TREE; +++ tree to_type = CTYPE (to_mode); +++ +++ if (from_mode == M_REAL) +++ { +++ if (to_type == integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_IFLOORF); +++ else if (to_type == long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LFLOORF); +++ else if (to_type == long_long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LLFLOORF); +++ else +++ gcc_unreachable (); +++ } +++ else if (from_mode == M_LONG_REAL) +++ { +++ if (to_type == integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_IFLOOR); +++ else if (to_type == long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LFLOOR); +++ else if (to_type == long_long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LLFLOOR); +++ else +++ gcc_unreachable (); +++ } +++ else if (from_mode == M_LONG_LONG_REAL) +++ { +++ if (to_type == integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_IFLOORL); +++ else if (to_type == long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LFLOORL); +++ else if (to_type == long_long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LLFLOORL); +++ else +++ gcc_unreachable (); +++ } +++ else +++ gcc_unreachable (); +++ +++ return build_call_expr_loc (UNKNOWN_LOCATION, fn, 1, val); +++} +++ +++/* Given a real expression VAL of mode MODE, produce an integral value which is +++ the nearest integer to the given real. */ +++ +++tree +++a68_real_round (tree val, MOID_T *to_mode, MOID_T *from_mode) +++{ +++ tree fn = NULL_TREE; +++ tree to_type = CTYPE (to_mode); +++ +++ if (from_mode == M_REAL) +++ { +++ if (to_type == integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_IROUNDF); +++ else if (to_type == long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LROUNDF); +++ else if (to_type == long_long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LLROUNDF); +++ else +++ gcc_unreachable (); +++ } +++ else if (from_mode == M_LONG_REAL) +++ { +++ if (to_type == integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_IROUND); +++ else if (to_type == long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LROUND); +++ else if (to_type == long_long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LLROUND); +++ else +++ gcc_unreachable (); +++ } +++ else if (from_mode == M_LONG_LONG_REAL) +++ { +++ if (to_type == integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_IROUNDL); +++ else if (to_type == long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LROUNDL); +++ else if (to_type == long_long_integer_type_node) +++ fn = builtin_decl_explicit (BUILT_IN_LLROUNDL); +++ else +++ gcc_unreachable (); +++ } +++ else +++ gcc_unreachable (); +++ +++ return build_call_expr_loc (UNKNOWN_LOCATION, fn, 1, val); +++} +++ +++ +++/* Given two real values of mode M, build an expression that calculates the +++ addition of A and B. */ +++ +++tree +++a68_real_plus (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, PLUS_EXPR, CTYPE (m), a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates the +++ subtraction of A by B. */ +++ +++tree +++a68_real_minus (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, MINUS_EXPR, CTYPE (m), a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates the +++ multiplication of A by B. */ +++ +++tree +++a68_real_mult (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, MULT_EXPR, CTYPE (m), a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates the +++ division of A by B. */ +++ +++tree +++a68_real_div (MOID_T *m, tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, RDIV_EXPR, CTYPE (m), a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates whether +++ A = B. */ +++ +++tree +++a68_real_eq (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, EQ_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates whether +++ A /= B. */ +++ +++tree +++a68_real_ne (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, NE_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates whether +++ A < B. */ +++ +++tree +++a68_real_lt (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, LT_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates +++ whether A <= B. */ +++ +++tree +++a68_real_le (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, LE_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates whether +++ A > B. */ +++ +++tree +++a68_real_gt (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, GT_EXPR, boolean_type_node, a, b); +++} +++ +++/* Given two real values of mode M, build an expression that calculates whether +++ A >= B. */ +++ +++tree +++a68_real_ge (tree a, tree b, location_t loc) +++{ +++ return fold_build2_loc (loc, GE_EXPR, boolean_type_node, a, b); +++} +++ +++/* Exponentiation involving real values. +++ +++ REAL <- REAL, REAL +++ REAL <- REAL, INT +++ LONG REAL <- LONG REAL, LONG REAL +++ LONG REAL <- LONG REAL, INT +++ LONG LONG REAL <- LONG LONG REAL, LONG LONG REAL +++ LONG LONG REAL <- LONG LONG REAL, INT */ +++ +++tree +++a68_real_pow (MOID_T *m, MOID_T *a_mode, MOID_T *b_mode, +++ tree a, tree b, location_t loc) +++{ +++ enum built_in_function built_in; +++ if (m == M_REAL) +++ { +++ gcc_assert (a_mode == M_REAL); +++ built_in = b_mode == M_REAL ? BUILT_IN_POWF : BUILT_IN_POWIF; +++ } +++ else if (m == M_LONG_REAL) +++ { +++ gcc_assert (a_mode == M_LONG_REAL); +++ built_in = b_mode == M_LONG_REAL ? BUILT_IN_POW : BUILT_IN_POWI; +++ } +++ else if (m == M_LONG_LONG_REAL) +++ { +++ gcc_assert (a_mode == M_LONG_LONG_REAL); +++ built_in = b_mode == M_LONG_LONG_REAL ? BUILT_IN_POWL : BUILT_IN_POWIL; +++ } +++ else +++ gcc_unreachable (); +++ +++ tree call = builtin_decl_explicit (built_in); +++ gcc_assert (call != NULL_TREE); +++ return build_call_expr_loc (loc, call, 2, a, b); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-refs.cc ++@@ -0,0 +1,52 @@ +++/* Lowering routines for all things related to names. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with the yielding of SKIP for the given name mode. */ +++ +++tree +++a68_get_ref_skip_tree (MOID_T *m) +++{ +++ /* Build a NULL pointer. */ +++ return build_int_cst (CTYPE (m), 0); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-runtime.cc ++@@ -0,0 +1,225 @@ +++/* Libcalls to Algol 68 run-time functions. +++ Copyright (C) 2006-2025 Free Software Foundation, Inc. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ Adapted from gcc/d/runtime.cc. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* The lowering pass may generate expressions to call various runtime library +++ functions. Most of these functions are implemented in libga68. This file +++ provides facilities to compile libcalls to runtime functions. The file +++ a68-low-runtime.def contains a database of available runtime library +++ functions. */ +++ +++enum a68_libcall_type +++{ +++ LCT_VOID, +++ LCT_CHAR, +++ LCT_CONSTCHARPTR, +++ LCT_VOIDPTR, +++ LCT_UNISTR, +++ LCT_UNISTRPTR, +++ LCT_SIZE, +++ LCT_SSIZE, +++ LCT_SIZEPTR, +++ LCT_UINT, +++ LCT_INT, +++ LCT_LONGLONGINT, +++ LCT_FLOAT, +++ LCT_DOUBLE, +++ LCT_LONGDOUBLE, +++ LCT_END +++}; +++ +++/* An array of all types that are used by the runtime functions we need. */ +++ +++static tree libcall_types[LCT_END]; +++ +++/* Internal list of library functions. */ +++ +++static tree libcall_decls[A68_LIBCALL_LAST]; +++ +++/* Return the TREE type that is described by TYPE. */ +++ +++static tree +++get_libcall_type (a68_libcall_type type) +++{ +++ if (libcall_types[type]) +++ return libcall_types[type]; +++ +++ if (type == LCT_VOID) +++ libcall_types[type] = void_type_node; +++ else if (type == LCT_CHAR) +++ libcall_types[type] = uint32_type_node; +++ else if (type == LCT_CONSTCHARPTR) +++ libcall_types[type] = build_pointer_type (build_qualified_type (char_type_node, +++ TYPE_QUAL_CONST)); +++ else if (type == LCT_VOIDPTR) +++ libcall_types[type] = ptr_type_node; +++ else if (type == LCT_UNISTR) +++ libcall_types[type] = build_pointer_type (a68_char_type); +++ else if (type == LCT_UNISTRPTR) +++ libcall_types[type] = build_pointer_type (build_pointer_type (a68_char_type)); +++ else if (type == LCT_SIZE) +++ libcall_types[type] = sizetype; +++ else if (type == LCT_SSIZE) +++ libcall_types[type] = ssizetype; +++ else if (type == LCT_SIZEPTR) +++ libcall_types[type] = build_pointer_type (sizetype); +++ else if (type == LCT_UINT) +++ libcall_types[type] = unsigned_type_node; +++ else if (type == LCT_INT) +++ libcall_types[type] = integer_type_node; +++ else if (type == LCT_LONGLONGINT) +++ libcall_types[type] = long_long_integer_type_node; +++ else if (type == LCT_FLOAT) +++ libcall_types[type] = float_type_node; +++ else if (type == LCT_DOUBLE) +++ libcall_types[type] = double_type_node; +++ else if (type == LCT_LONGDOUBLE) +++ libcall_types[type] = long_double_type_node; +++ else +++ gcc_unreachable (); +++ +++ return libcall_types[type]; +++} +++ +++/* Build and return a function declaration named NAME. The RETURN_TYPE is the +++ type returned, FLAGS are the expression call flags, and NPARAMS is the +++ number of arguments, the types of which are provided in `...'. */ +++ +++static tree +++build_libcall_decl (const char *name, a68_libcall_type return_type, +++ int flags, int nparams, ...) +++{ +++ tree *args = XALLOCAVEC (tree, nparams); +++ bool varargs = false; +++ tree fntype; +++ +++ /* Add parameter types, using `void' as the last parameter type +++ to mean this function accepts a variable list of arguments. */ +++ va_list ap; +++ va_start (ap, nparams); +++ +++ for (int i = 0; i < nparams; i++) +++ { +++ a68_libcall_type ptype = (a68_libcall_type) va_arg (ap, int); +++ tree type = get_libcall_type (ptype); +++ +++ if (type == void_type_node) +++ { +++ varargs = true; +++ nparams = i; +++ } +++ else +++ args[i] = type; +++ } +++ +++ va_end (ap); +++ +++ /* Build the function. */ +++ tree tret = get_libcall_type (return_type); +++ if (varargs) +++ fntype = build_varargs_function_type_array (tret, nparams, args); +++ else +++ fntype = build_function_type_array (tret, nparams, args); +++ +++ tree decl = build_decl (UNKNOWN_LOCATION, FUNCTION_DECL, +++ get_identifier (name), fntype); +++ DECL_EXTERNAL (decl) = 1; +++ TREE_PUBLIC (decl) = 1; +++ DECL_ARTIFICIAL (decl) = 1; +++ DECL_VISIBILITY (decl) = VISIBILITY_DEFAULT; +++ DECL_VISIBILITY_SPECIFIED (decl) = 1; +++ +++ /* Set any attributes on the function, such as malloc or noreturn. */ +++ set_call_expr_flags (decl, flags); +++ return decl; +++} +++ +++/* Return or create the runtime library function declaration for LIBCALL. +++ Library functions are generated as needed. This could probably be changed +++ in the future to be done in the compiler init stage, like GCC builtin trees +++ are. */ +++ +++tree +++a68_get_libcall (a68_libcall_fn libcall) +++{ +++ if (libcall_decls[libcall]) +++ return libcall_decls[libcall]; +++ +++ switch (libcall) +++ { +++#define DEF_A68_RUNTIME(CODE, NAME, TYPE, PARAMS, FLAGS) \ +++ case A68_LIBCALL_ ## CODE: \ +++ libcall_decls[libcall] = build_libcall_decl (NAME, TYPE, FLAGS, PARAMS); \ +++ break; +++#include "a68-low-runtime.def" +++#undef DEF_A68_RUNTIME +++ default: +++ gcc_unreachable (); +++ } +++ +++ return libcall_decls[libcall]; +++} +++ +++/* Generate a call to LIBCALL, returning the result as TYPE. NARGS is the +++ number of call arguments, the expressions of which are provided in `...'. +++ This does not perform conversions or promotions on the arguments. */ +++ +++tree +++a68_build_libcall (a68_libcall_fn libcall, tree type ATTRIBUTE_UNUSED, +++ int nargs, ...) +++{ +++ /* Build the call expression to the runtime function. */ +++ tree decl = a68_get_libcall (libcall); +++ tree *args = XALLOCAVEC (tree, nargs); +++ va_list ap; +++ +++ va_start (ap, nargs); +++ for (int i = 0; i < nargs; i++) +++ args[i] = va_arg (ap, tree); +++ va_end (ap); +++ +++ tree result = build_call_expr_loc_array (input_location, decl, nargs, args); +++ +++ /* Assumes caller knows what it is doing. */ +++ return result; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-runtime.def ++@@ -0,0 +1,92 @@ +++/* a68-low-runtime.def -- Definitions for Algol 68 runtime functions. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++GCC is free software; you can redistribute it and/or modify +++it under the terms of the GNU General Public License as published by +++the Free Software Foundation; either version 3, or (at your option) +++any later version. +++ +++GCC is distributed in the hope that it will be useful, +++but WITHOUT ANY WARRANTY; without even the implied warranty of +++MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++GNU General Public License for more details. +++ +++You should have received a copy of the GNU General Public License +++along with GCC; see the file COPYING3. If not see +++. */ +++ +++/* Helper macros for parameter building. */ +++#define P0() 0 +++#define P1(T1) 1, LCT_ ## T1 +++#define P2(T1, T2) \ +++ 2, LCT_ ## T1, LCT_ ## T2 +++#define P3(T1, T2, T3) \ +++ 3, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3 +++#define P4(T1, T2, T3, T4) \ +++ 4, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4 +++#define P5(T1, T2, T3, T4, T5) \ +++ 5, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5 +++#define P6(T1, T2, T3, T4, T5, T6) \ +++ 6, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5, LCT_ ## T6 +++#define P7(T1, T2, T3, T4, T5, T6, T7) \ +++ 7, LCT_ ## T1, LCT_ ## T2, LCT_ ## T3, LCT_ ## T4, LCT_ ## T5, LCT_ ## T6, LCT_ ## T7 +++#define RT(T1) LCT_ ## T1 +++ +++/* Algol 68 runtime library functions. */ +++ +++/* DEF_A68_RUNTIME (CODE, NAME, TYPE, PARAMS, FLAGS) +++ CODE The enum code used to refer to this function. +++ NAME The name of this function as a string. +++ FLAGS ECF flags to describe attributes of the function. +++ +++ Used for declaring functions that are called by generated code. */ +++ +++DEF_A68_RUNTIME (ASSERT, "_libga68_assert", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) +++DEF_A68_RUNTIME (SET_EXIT_STATUS, "_libga68_set_exit_status", RT(VOID), P1(INT), 0) +++DEF_A68_RUNTIME (MALLOC, "_libga68_malloc", RT(VOIDPTR), P1(SIZE), ECF_NOTHROW | ECF_LEAF | ECF_MALLOC) +++DEF_A68_RUNTIME (DEREFNIL, "_libga68_derefnil", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) +++DEF_A68_RUNTIME (UNREACHABLE, "_libga68_unreachable", RT(VOID), P2(CONSTCHARPTR, UINT), ECF_NORETURN) +++DEF_A68_RUNTIME (INVALIDCHARERROR, "_libga68_invalidcharerror", RT(VOID), P3(CONSTCHARPTR,UINT,INT), ECF_NORETURN) +++DEF_A68_RUNTIME (BITSBOUNDSERROR, "_libga68_bitsboundserror", RT(VOID), P3(CONSTCHARPTR,UINT,SSIZE), ECF_NORETURN) +++DEF_A68_RUNTIME (ARRAYLOWERBOUND, "_libga68_lower_bound", RT(VOID), +++ P4(CONSTCHARPTR, UINT, SSIZE, SSIZE), ECF_NORETURN) +++DEF_A68_RUNTIME (ARRAYUPPERBOUND, "_libga68_upper_bound", RT(VOID), +++ P4(CONSTCHARPTR, UINT, SSIZE, SSIZE), ECF_NORETURN) +++DEF_A68_RUNTIME (ARRAYBOUNDS, "_libga68_bounds", RT(VOID), +++ P5(CONSTCHARPTR, UINT, SSIZE, SSIZE, SSIZE), ECF_NORETURN) +++DEF_A68_RUNTIME (ARRAYBOUNDSMISMATCH, "_libga68_bounds_mismatch", RT(VOID), +++ P7(CONSTCHARPTR, UINT, SIZE, SSIZE, SSIZE, SSIZE, SSIZE), ECF_NORETURN) +++DEF_A68_RUNTIME (ARRAYDIM, "_libga68_dim", RT(VOID), +++ P4(CONSTCHARPTR, UINT, SIZE, SIZE), ECF_NORETURN) +++DEF_A68_RUNTIME (RANDOM, "_libga68_random", RT(FLOAT), P0(), 0) +++DEF_A68_RUNTIME (LONGRANDOM, "_libga68_longrandom", RT(DOUBLE), P0(), 0) +++DEF_A68_RUNTIME (LONGLONGRANDOM, "_libga68_longlongrandom", RT(LONGDOUBLE), P0(), 0) +++DEF_A68_RUNTIME (POSIX_FCONNECT, "_libga68_posixfconnect", RT(INT), P4(UNISTRPTR,SIZE,SIZE,INT), 0) +++DEF_A68_RUNTIME (POSIX_FOPEN, "_libga68_posixfopen", RT(INT), P4(UNISTRPTR,SIZE,SIZE,UINT), 0) +++DEF_A68_RUNTIME (POSIX_FCREATE, "_libga68_posixcreat", RT(INT), P4(UNISTRPTR,SIZE,SIZE,UINT), 0) +++DEF_A68_RUNTIME (POSIX_FCLOSE, "_libga68_posixclose", RT(INT), P0(), 0) +++DEF_A68_RUNTIME (POSIX_FSIZE, "_libga68_posixfsize", RT(LONGLONGINT), P1(INT), 0) +++DEF_A68_RUNTIME (POSIX_ARGC, "_libga68_posixargc", RT(INT), P0(), 0) +++DEF_A68_RUNTIME (POSIX_ARGV, "_libga68_posixargv", RT(UNISTRPTR), P2(INT, SIZEPTR), 0) +++DEF_A68_RUNTIME (POSIX_PUTCHAR, "_libga68_posixputchar", RT(CHAR), P1(CHAR), 0) +++DEF_A68_RUNTIME (POSIX_FPUTC, "_libga68_posixfputc", RT(CHAR), P2(INT,CHAR), 0) +++DEF_A68_RUNTIME (POSIX_PUTS, "_libga68_posixputs", RT(VOID), P3(UNISTR,SIZE,SIZE), 0) +++DEF_A68_RUNTIME (POSIX_FPUTS, "_libga68_posixfputs", RT(INT), P4(INT,UNISTRPTR,SIZE,SIZE), 0) +++DEF_A68_RUNTIME (POSIX_GETCHAR, "_libga68_posixgetchar", RT(CHAR), P0(), 0) +++DEF_A68_RUNTIME (POSIX_FGETC, "_libga68_posixfgetc", RT(CHAR), P1(INT), 0) +++DEF_A68_RUNTIME (POSIX_GETS, "_libga68_posixgets", RT(UNISTRPTR), P2(INT,SIZEPTR), 0) +++DEF_A68_RUNTIME (POSIX_FGETS, "_libga68_posixfgets", RT(UNISTRPTR), P3(INT,INT,SIZEPTR), 0) +++DEF_A68_RUNTIME (POSIX_GETENV, "_libga68_posixgetenv", RT(VOID), P5(UNISTR,SIZE,SIZE,UNISTRPTR,SIZEPTR), 0) +++DEF_A68_RUNTIME (POSIX_ERRNO, "_libga68_posixerrno", RT(INT), P0(), 0) +++DEF_A68_RUNTIME (POSIX_PERROR, "_libga68_posixperror", RT(VOID), P3(UNISTR,SIZE,SIZE), 0) +++DEF_A68_RUNTIME (POSIX_STRERROR, "_libga68_posixstrerror", RT(UNISTRPTR), P2(INT, SIZEPTR), 0) +++DEF_A68_RUNTIME (POSIX_LSEEK, "_libga68_posixlseek", RT(LONGLONGINT), P3(INT,LONGLONGINT,INT), 0) +++DEF_A68_RUNTIME (U32_CMP2, "_libga68_u32_cmp2", RT(INT), P6(UNISTR, SIZE, SIZE, UNISTR, SIZE, SIZE), 0) +++ +++#undef P0 +++#undef P1 +++#undef P2 +++#undef P3 +++#undef P4 +++#undef P5 +++#undef RT ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-strings.cc ++@@ -0,0 +1,399 @@ +++/* Lowering routines for all things related to STRINGs. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with the yielding of SKIP for M_STRING. */ +++ +++tree +++a68_get_string_skip_tree (void) +++{ +++ return a68_get_multiple_skip_tree (M_FLEX_ROW_CHAR); +++} +++ +++/* Copy chars from STR to ELEMENTS starting at TO_INDEX chars in ELEMENTS. */ +++ +++static void +++copy_string (tree elements, tree to_index, tree str) +++{ +++ tree char_pointer_type = build_pointer_type (a68_char_type); +++ tree num_elems +++ = a68_lower_tmpvar ("num_elems%", sizetype, a68_multiple_num_elems (str)); +++ +++ tree from_index +++ = a68_lower_tmpvar ("from_index%", sizetype, size_zero_node); +++ tree from_offset +++ = a68_lower_tmpvar ("from_offset%", sizetype, size_zero_node); +++ +++ /* Begin of loop body. */ +++ a68_push_range (NULL); +++ { +++ /* if (from_index == num_elems) break; */ +++ a68_add_stmt (fold_build1 (EXIT_EXPR, void_type_node, +++ fold_build2 (GE_EXPR, sizetype, +++ from_index, num_elems))); +++ +++ /* *(elements + to_index) = *(elements + from_index) */ +++ tree to_offset = fold_build2 (MULT_EXPR, sizetype, +++ to_index, size_in_bytes (a68_char_type)); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ void_type_node, +++ fold_build2 (MEM_REF, a68_char_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ char_pointer_type, +++ elements, to_offset), +++ fold_convert (char_pointer_type, +++ integer_zero_node)), +++ fold_build2 (MEM_REF, a68_char_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ char_pointer_type, +++ a68_multiple_elements (str), +++ from_offset), +++ fold_convert (char_pointer_type, +++ integer_zero_node)))); +++ +++ /* from_offset = from_offset + stride */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, void_type_node, +++ from_offset, +++ fold_build2 (PLUS_EXPR, sizetype, +++ from_offset, +++ a68_multiple_stride (str, size_zero_node)))); +++ /* to_index = to_index + 1 */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, sizetype, to_index, size_one_node)); +++ +++ /* from_index = from_index + 1 */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, sizetype, from_index, size_one_node)); +++ } +++ +++ /* End of loop body. */ +++ tree loop_body = a68_pop_range (); +++ a68_add_stmt (fold_build1 (LOOP_EXPR, +++ void_type_node, +++ loop_body)); +++} +++ +++/* Given two STRINGs STR1 and STR2, allocate a new string on the stack with a +++ copy of the concatenated characters of the given string. */ +++ +++tree +++a68_string_concat (tree str1, tree str2) +++{ +++ tree char_pointer_type = build_pointer_type (a68_char_type); +++ static tree string_concat_fndecl; +++ +++ if (string_concat_fndecl == NULL_TREE) +++ { +++ string_concat_fndecl +++ = a68_low_toplevel_func_decl ("string_concat", +++ build_function_type_list (char_pointer_type, +++ TREE_TYPE (str1), +++ TREE_TYPE (str2), +++ NULL_TREE)); +++ announce_function (string_concat_fndecl); +++ +++ tree s1 = a68_low_func_param (string_concat_fndecl, "s1", TREE_TYPE (str1)); +++ tree s2 = a68_low_func_param (string_concat_fndecl, "s2", TREE_TYPE (str2)); +++ DECL_ARGUMENTS (string_concat_fndecl) = chainon (s1, s2); +++ +++ a68_push_function_range (string_concat_fndecl, char_pointer_type, +++ true /* top_level */); +++ +++ tree n1 = a68_lower_tmpvar ("n1%", sizetype, a68_multiple_num_elems (s1)); +++ tree n2 = a68_lower_tmpvar ("n2%", sizetype, a68_multiple_num_elems (s2)); +++ tree num_elems = a68_lower_tmpvar ("num_elems%", sizetype, +++ fold_build2 (PLUS_EXPR, sizetype, n1, n2)); +++ +++ /* First allocate memory for the result string. We need enough space to +++ hold the elements of both strings with a stride of 1S. */ +++ tree char_pointer_type = build_pointer_type (a68_char_type); +++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, +++ size_in_bytes (a68_char_type), +++ num_elems); +++ tree elements = a68_lower_tmpvar ("elements%", char_pointer_type, +++ a68_lower_malloc (a68_char_type, elements_size)); +++ +++ /* Copy elements. */ +++ tree to_index = a68_lower_tmpvar ("to_index%", sizetype, size_zero_node); +++ copy_string (elements, to_index, s1); +++ copy_string (elements, to_index, s2); +++ a68_pop_function_range (elements); +++ } +++ +++ /* Build the resulting multiple. */ +++ str1 = save_expr (str1); +++ str2 = save_expr (str2); +++ tree n1 = a68_multiple_num_elems (str1); +++ tree n2 = a68_multiple_num_elems (str2); +++ tree num_elems = save_expr (fold_build2 (PLUS_EXPR, sizetype, n1, n2)); +++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, +++ size_in_bytes (a68_char_type), +++ num_elems); +++ tree lower_bound = ssize_int (1); +++ tree upper_bound = fold_convert (ssizetype, num_elems); +++ tree elements = build_call_nary (char_pointer_type, +++ fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (string_concat_fndecl)), +++ string_concat_fndecl), +++ 2, str1, str2); +++ return a68_row_value (CTYPE (M_STRING), 1 /* dim */, +++ elements, elements_size, +++ &lower_bound, &upper_bound); +++} +++ +++/* Given a STRING STR and an INT FACTOR, return STRING concatenated to itself +++ FACTOR - 1 times. +++ +++ Negative values of FACTOR are interpreted as zero. */ +++ +++tree +++a68_string_mult (tree str, tree factor) +++{ +++ a68_push_range (M_STRING); +++ +++ str = save_expr (str); +++ tree ssize_one_node = ssize_int (1); +++ tree res = a68_lower_tmpvar ("res%", CTYPE (M_STRING), str); +++ tree index = a68_lower_tmpvar ("index%", ssizetype, ssize_one_node); +++ +++ /* Begin of loop body. */ +++ a68_push_range (NULL); +++ +++ /* if (index == FACTOR) break; */ +++ a68_add_stmt (fold_build1 (EXIT_EXPR, +++ void_type_node, +++ fold_build2 (GE_EXPR, ssizetype, +++ index, +++ fold_convert (ssizetype, factor)))); +++ +++ /* res += str */ +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, TREE_TYPE (res), +++ res, +++ a68_string_concat (res, str))); +++ +++ /* index++ */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, +++ ssizetype, +++ index, ssize_one_node)); +++ tree loop_body = a68_pop_range (); +++ /* End of loop body. */ +++ a68_add_stmt (fold_build1 (LOOP_EXPR, +++ void_type_node, +++ loop_body)); +++ a68_add_stmt (res); +++ return a68_pop_range (); +++} +++ +++/* Given a CHAR C, build a string whose contents are just that CHAR. */ +++ +++tree +++a68_string_from_char (tree c) +++{ +++ tree lower_bound = ssize_int (1); +++ tree upper_bound = lower_bound; +++ tree char_pointer_type = build_pointer_type (a68_char_type); +++ +++ a68_push_range (M_STRING); +++ +++ tree elements = a68_lower_tmpvar ("elements%", char_pointer_type, +++ a68_lower_malloc (a68_char_type, +++ size_one_node)); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, +++ void_type_node, +++ fold_build1 (INDIRECT_REF, a68_char_type, elements), +++ c)); +++ a68_add_stmt (a68_row_value (CTYPE (M_STRING), 1 /* dim */, +++ elements, +++ size_in_bytes (a68_char_type), +++ &lower_bound, &upper_bound)); +++ return a68_pop_range (); +++} +++ +++/* Compare the two given strings lexicographically and return -1 (less than), 0 +++ (equal to) or 1 (bigger than) reflecting the result of the comparison. */ +++ +++tree +++a68_string_cmp (tree s1, tree s2) +++{ +++ s1 = save_expr (s1); +++ tree s1_elems = a68_multiple_elements (s1); +++ tree s1_len = a68_multiple_num_elems (s1); +++ tree s1_stride = a68_multiple_stride (s1, size_zero_node); +++ +++ s2 = save_expr (s2); +++ tree s2_elems = a68_multiple_elements (s2); +++ tree s2_len = a68_multiple_num_elems (s2); +++ tree s2_stride = a68_multiple_stride (s2, size_zero_node); +++ +++ return a68_build_libcall (A68_LIBCALL_U32_CMP2, +++ a68_int_type, 6, +++ s1_elems, s1_len, s1_stride, +++ s2_elems, s2_len, s2_stride); +++} +++ +++/* Return a newly allocated UTF-8 string resulting from processing the string +++ breaks in STR. This function assumes the passed string is well-formed (the +++ scanner is in charge of seeing that is true) and just ICEs if it is not. +++ NODE is used as the location for diagnostics in case the string breaks +++ contain some invalid data. */ +++ +++char * +++a68_string_process_breaks (NODE_T *node, const char *str) +++{ +++ size_t len = 0; +++ char *res = NULL; +++ +++ /* First calculate the size of the resulting string. */ +++ for (const char *p = str; *p != '\0';) +++ { +++ if (*p == '\'') +++ { +++ switch (p[1]) +++ { +++ case '\'': +++ case 'n': +++ case 'f': +++ case 'r': +++ case 't': +++ len += 1; +++ p += 2; +++ break; +++ case '(': +++ p += 2; +++ while (1) +++ { +++ if (p[0] == ')') +++ { +++ p++; +++ break; +++ } +++ else if (p[0] == ',' || ISSPACE (p[0])) +++ { +++ p++; +++ continue; +++ } +++ +++ /* An Unicode codepoint encoded in UTF-8 occupies at most six +++ octets. */ +++ len += 6; +++ p += (p[0] == 'u' ? 5 : 9); +++ } +++ break; +++ default: +++ gcc_unreachable (); +++ } +++ } +++ else +++ { +++ len += 1; +++ p += 1; +++ } +++ } +++ +++ /* Now and allocate it, adding space for a trailing NULL. */ +++ res = (char *) xmalloc (len + 1); +++ +++ /* Finally fill it with the result of expanding all the string breaks. */ +++ size_t offset = 0; +++ for (const char *p = str; *p != '\0';) +++ { +++ if (*p == '\'') +++ { +++ switch (p[1]) +++ { +++ case '\'': res[offset] = '\''; p += 2; offset += 1; break; +++ case 'n': res[offset] = '\n'; p += 2; offset += 1; break; +++ case 't': res[offset] = '\t'; p += 2; offset += 1; break; +++ case 'r': res[offset] = '\r'; p += 2; offset += 1; break; +++ case 'f': res[offset] = '\f'; p += 2; offset += 1; break; +++ case '(': +++ { +++ p += 2; +++ while (1) +++ { +++ if (p[0] == ')') +++ { +++ p++; +++ break; +++ } +++ else if (p[0] == ',' || ISSPACE (p[0])) +++ { +++ p++; +++ continue; +++ } +++ +++ /* Skip the u or U. */ +++ gcc_assert (p[0] == 'u' || p[0] == 'U'); +++ p++; +++ +++ const char *begin = p; +++ char *end; +++ int64_t codepoint = strtol (p, &end, 16); +++ gcc_assert (end > p); +++ p = end; +++ /* Append the UTF-8 encoding of the obtained codepoint to +++ the `res' string. */ +++ int n = a68_u8_uctomb ((uint8_t *) res + offset, codepoint, 6); +++ if (n < 0) +++ { +++ char *start = CHAR_IN_LINE (INFO (node)) + (begin - str); +++ a68_scan_error (LINE (INFO (node)), start, +++ "invalid Unicode codepoint in string literal"); +++ } +++ +++ offset += n; +++ } +++ break; +++ } +++ default: gcc_unreachable (); +++ } +++ } +++ else +++ { +++ res[offset] = *p; +++ offset += 1; +++ p += 1; +++ } +++ } +++ res[offset] = '\0'; +++ +++ return res; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-structs.cc ++@@ -0,0 +1,63 @@ +++/* Lowering routines for all things related to structs. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with the yielding of SKIP for the given structured mode. */ +++ +++tree +++a68_get_struct_skip_tree (MOID_T *m) +++{ +++ /* Build a constructor that assigns SKIPs to each field in the struct +++ type. */ +++ +++ vec *ve = NULL; +++ tree field = TYPE_FIELDS (CTYPE (m)); +++ for (PACK_T *elem = PACK (m); elem; FORWARD (elem)) +++ { +++ gcc_assert (field != NULL_TREE); +++ CONSTRUCTOR_APPEND_ELT (ve, field, a68_get_skip_tree (MOID (elem))); +++ field = DECL_CHAIN (field); +++ } +++ +++ return build_constructor (CTYPE (m), ve); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-unions.cc ++@@ -0,0 +1,279 @@ +++/* Lowering routines for all things related to unions. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Algol 68 unions are implemented in this front-end as a data structure +++ consisting of an overhead followed by a value: +++ +++ overhead% +++ value% +++ +++ Where overhead% is an index that identifies the kind of object currently +++ united, and value% is a GENERIC union. The value currently united in the +++ union is the overhead%-th field in value%. +++ +++ At the language level there are no values of union modes in Algol 68. All +++ values are built from either SKIP (for uninitialized UNION values) or as the +++ result of an uniting coercion. */ +++ +++/* Given an union mode P and a mode Q, return whether Q is a mode in P. */ +++ +++bool +++a68_union_contains_mode (MOID_T *p, MOID_T *q) +++{ +++ while (EQUIVALENT (p) != NO_MOID) +++ p = EQUIVALENT (p); +++ +++ for (PACK_T *pack = PACK (p); pack != NO_PACK; FORWARD (pack)) +++ { +++ MOID_T *m = MOID (pack); +++ +++ if (a68_is_equal_modes (q, m, SAFE_DEFLEXING) +++ || (m == M_STRING && IS_ROW (q) && SUB (q) == M_CHAR) +++ || (q == M_STRING && IS_ROW (m) && SUB (m) == M_CHAR)) +++ return true; +++ } +++ +++ return false; +++} +++ +++/* Given an union mode P and a mode Q, return an integer with the index of the +++ occurrence of Q in P. */ +++ +++int +++a68_united_mode_index (MOID_T *p, MOID_T *q) +++{ +++ int ret = 0; +++ while (EQUIVALENT (p) != NO_MOID) +++ p = EQUIVALENT (p); +++ for (PACK_T *pack = PACK (p); pack != NO_PACK; FORWARD (pack)) +++ { +++ MOID_T *m = MOID (pack); +++ +++ if (a68_is_equal_modes (q, m, SAFE_DEFLEXING) +++ || (m == M_STRING && IS_ROW (q) && SUB (q) == M_CHAR) +++ || (q == M_STRING && IS_ROW (m) && SUB (m) == M_CHAR)) +++ return ret; +++ ret += 1; +++ } +++ +++ /* Not found. Shouldn't happen. */ +++ gcc_unreachable (); +++ return 0; +++} +++ +++/* Given two united modes FROM and TO, and an overhead FROM_OVERHEAD in mode +++ FROM, return the corresponding overhead in mode TO. +++ +++ This function assumes that the mode with FROM_OVERHEAD in mode FROM exists +++ in TO. */ +++ +++tree +++a68_union_translate_overhead (MOID_T *from, tree from_overhead, +++ MOID_T *to) +++{ +++ /* Note that the initialization value for to_overhead should never be used. +++ XXX perhaps translate it to a run-time call to abort/compiler-error. */ +++ tree to_overhead = size_int (0); +++ +++ from_overhead = save_expr (from_overhead); +++ +++ int i = 0; +++ for (PACK_T *pack = PACK (from); pack != NO_PACK; FORWARD (pack), ++i) +++ { +++ MOID_T *mode = MOID (pack); +++ +++ if (a68_union_contains_mode (to, mode)) +++ { +++ to_overhead = fold_build3 (COND_EXPR, sizetype, +++ fold_build2 (EQ_EXPR, boolean_type_node, +++ from_overhead, +++ size_int (i)), +++ size_int (a68_united_mode_index (to, mode)), +++ to_overhead); +++ } +++ } +++ +++ return to_overhead; +++} +++ +++/* Get the overhead of a given united value EXP. */ +++ +++tree +++a68_union_overhead (tree exp) +++{ +++ tree type = TREE_TYPE (exp); +++ tree overhead_field = TYPE_FIELDS (type); +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (overhead_field), +++ exp, +++ overhead_field, +++ NULL_TREE); +++} +++ +++/* Set the overhead of a given united value EXP to OVERHEAD. */ +++ +++tree +++a68_union_set_overhead (tree exp, tree overhead) +++{ +++ tree type = TREE_TYPE (exp); +++ tree overhead_field = TYPE_FIELDS (type); +++ return fold_build2 (MODIFY_EXPR, +++ TREE_TYPE (overhead), +++ fold_build3 (COMPONENT_REF, +++ TREE_TYPE (overhead_field), +++ exp, +++ overhead_field, +++ NULL_TREE), +++ overhead); +++} +++ +++/* Get the cunion in the given union EXP. */ +++ +++tree +++a68_union_cunion (tree exp) +++{ +++ tree type = TREE_TYPE (exp); +++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (value_field), +++ exp, +++ value_field, +++ NULL_TREE); +++} +++ +++/* Build a SKIP value for a given union mode M. +++ +++ The SKIP value computed is: +++ +++ overhead% refers to the first united mode in the union +++ value% is the SKIP for the first united mode in the union +++*/ +++ +++tree +++a68_get_union_skip_tree (MOID_T *m) +++{ +++ tree type = CTYPE (m); +++ tree overhead_field = TYPE_FIELDS (type); +++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); +++ +++ /* Overhead selects the first union alternative. */ +++ tree overhead = size_zero_node; +++ /* First union alternative. +++ +++ Note that the first union alternative corresponds to the last alternative +++ in the mode as written in the source program. */ +++ tree value_type = TREE_TYPE (value_field); +++ tree first_alternative_field = TYPE_FIELDS (value_type); +++ tree value = build_constructor_va (TREE_TYPE (value_field), +++ 1, +++ first_alternative_field, +++ a68_get_skip_tree (MOID (PACK (m)))); +++ return build_constructor_va (CTYPE (m), +++ 2, +++ overhead_field, overhead, +++ value_field, value); +++} +++ +++/* Return the alternative (value) at the index INDEX in the united value +++ EXP. */ +++ +++tree +++a68_union_alternative (tree exp, int index) +++{ +++ tree type = TREE_TYPE (exp); +++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); +++ tree value = fold_build3 (COMPONENT_REF, +++ TREE_TYPE (value_field), +++ exp, +++ value_field, +++ NULL_TREE); +++ +++ /* Get the current alternative in the value union. */ +++ tree value_type = TREE_TYPE (value_field); +++ tree alternative_field = TYPE_FIELDS (value_type); +++ for (int i = 0; i < index; ++i) +++ { +++ gcc_assert (TREE_CHAIN (alternative_field)); +++ alternative_field = TREE_CHAIN (alternative_field); +++ } +++ +++ /* Get the current alternative from the value. */ +++ return fold_build3 (COMPONENT_REF, +++ TREE_TYPE (alternative_field), +++ value, +++ alternative_field, +++ NULL_TREE); +++} +++ +++/* Return a constructor for an union of mode MODE, holding the value in EXP +++ which is of mode EXP_MODE. */ +++ +++tree +++a68_union_value (MOID_T *mode, tree exp, MOID_T *exp_mode) +++{ +++ tree type = CTYPE (mode); +++ tree overhead_field = TYPE_FIELDS (type); +++ tree value_field = TREE_CHAIN (TYPE_FIELDS (type)); +++ +++ int alternative_index = a68_united_mode_index (mode, exp_mode); +++ tree overhead = build_int_cst (sizetype, alternative_index); +++ +++ /* Get the field for the alternative corresponding to alternative_index. */ +++ tree value_type = TREE_TYPE (value_field); +++ tree alternative_field = TYPE_FIELDS (value_type); +++ for (int i = 0; i < alternative_index; ++i) +++ { +++ gcc_assert (TREE_CHAIN (alternative_field)); +++ alternative_field = TREE_CHAIN (alternative_field); +++ } +++ +++ tree value = build_constructor_va (TREE_TYPE (value_field), +++ 1, +++ alternative_field, +++ a68_consolidate_ref (exp_mode, exp)); +++ return build_constructor_va (type, +++ 2, +++ overhead_field, overhead, +++ value_field, value); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low-units.cc ++@@ -0,0 +1,1253 @@ +++/* Lower units to GENERIC. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Note that enclosed clauses, which are units, are handled in +++ a68-low-clauses. */ +++ +++/* Lower an applied identifier. +++ +++ This lowers into the declaration of the referred identifier. The +++ declaration of the identifier should now be available in the symbol table +++ entry for the identifier. */ +++ +++tree +++a68_lower_identifier (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (TAG_TABLE (TAX (p)) == A68_STANDENV) +++ { +++ /* This identifier is defined in the standard prelude. Use its lowering +++ handler. */ +++ LOWERER_T lowerer = LOWERER (TAX (p)); +++ return (*lowerer) (p, ctx); +++ } +++ else +++ { +++ tree id_decl = TAX_TREE_DECL (TAX (p)); +++ +++ if (id_decl == NULL_TREE) +++ { +++ /* This is an applied identifier used before the corresponding defining +++ identifier gets defined in either an identity declaration or a +++ variable declaration. Create the declaration and install it in the +++ symbol table. The declaration itself, declaration expr and +++ initialization assignment for the declaration will be emitted by the +++ corresponding declaration lowering handler. Note that the defining +++ identifier (and therefore the declaration associated with this applied +++ identifier) may be in an outer lexical block. */ +++ +++ if (IS (MOID (p), PROC_SYMBOL)) +++ { +++ bool external = (MOIF (TAX (p)) != NO_MOIF); +++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); +++ if (VARIABLE (TAX (p))) +++ { +++ if (external) +++ id_decl +++ = a68_make_variable_declaration_decl (p, NAME (MOIF (TAX (p))), external, +++ extern_symbol); +++ else +++ id_decl +++ = a68_make_variable_declaration_decl (p, ctx.module_definition_name); +++ } +++ else if (IN_PROC (TAX (p))) +++ { +++ if (external) +++ id_decl +++ = a68_make_proc_identity_declaration_decl (p, NAME (MOIF (TAX (p))), +++ false /* indicant */, +++ external, +++ extern_symbol); +++ else +++ id_decl +++ = a68_make_proc_identity_declaration_decl (p, ctx.module_definition_name); +++ } +++ else +++ { +++ if (external) +++ id_decl +++ = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), +++ false /* indicant */, +++ external, extern_symbol); +++ else +++ id_decl +++ = a68_make_identity_declaration_decl (p, ctx.module_definition_name); +++ } +++ } +++ else +++ { +++ bool external = (MOIF (TAX (p)) != NO_MOIF); +++ const char *extern_symbol = EXTERN_SYMBOL (TAX (p)); +++ if (VARIABLE (TAX (p))) +++ { +++ if (external) +++ id_decl +++ = a68_make_variable_declaration_decl (p, NAME (MOIF (TAX (p))), external, +++ extern_symbol); +++ else +++ id_decl +++ = a68_make_variable_declaration_decl (p, ctx.module_definition_name); +++ } +++ else +++ { +++ if (external) +++ id_decl +++ = a68_make_identity_declaration_decl (p, NAME (MOIF (TAX (p))), +++ false /* indicant */, external, +++ extern_symbol); +++ else +++ id_decl +++ = a68_make_identity_declaration_decl (p, ctx.module_definition_name); +++ } +++ } +++ +++ TAX_TREE_DECL (TAX (p)) = id_decl; +++ } +++ +++ /* If the identifier refers to a FUNCTION_DECL, this means the declaration +++ was made by a procecure-identity-dclaration. The applied identifier in +++ that case refers to the address of the corresponding function. */ +++ if (TREE_CODE (id_decl) == FUNCTION_DECL) +++ return fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (id_decl)), +++ id_decl); +++ else +++ return id_decl; +++ } +++} +++ +++/* Lower a string denotation. +++ +++ String denotations are of mode []CHAR, and lower into a multiple with a +++ single dimension, and with the following characteristics: +++ +++ - The lower bound of dimension 0 is 1. +++ - The upper bound of dimension 0 is strlen (NSYMBOL (p)). +++ - The stride of dimension 0 is 0. +++ - The pointed elements are a buffer of CHARs allocated in the stack. */ +++ +++tree +++a68_lower_string_denotation (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ /* First process string breaks. */ +++ char *str = a68_string_process_breaks (p, NSYMBOL (p)); +++ +++ /* Build a multiple of UCS-4 CHARs from the resulting UTF-8 string. */ +++ size_t ucslen; +++ uint32_t *ucsbuf = a68_u8_to_u32 ((const uint8_t *) str, strlen (str), +++ NULL, &ucslen); +++ free (str); +++ tree string_literal = build_string_literal (ucslen * sizeof (uint32_t), +++ (char *) ucsbuf, a68_char_type); +++ tree elements = string_literal; +++ tree lower_bound = fold_convert (ssizetype, size_one_node); +++ tree upper_bound = ssize_int (ucslen); +++ tree elements_size = fold_build2 (MULT_EXPR, sizetype, +++ size_int (ucslen), +++ size_in_bytes (a68_char_type)); +++ tree multiple = a68_row_value (CTYPE (M_ROW_CHAR), 1, +++ elements, elements_size, +++ &lower_bound, &upper_bound); +++ TREE_CONSTANT (multiple) = true; +++ free (ucsbuf); +++ return multiple; +++} +++ +++/* Lower denotation. +++ +++ denotation : int denotation; real denotation; bits denotation; +++ row char denotation; +++ true symbol; false symbol; +++ empty symbol; +++ longety, int denotation; +++ longety, real denotation; +++ longety, bits denotation; +++ shortety, int denotation; +++ shortety, real denotation; +++ shortety, bits denotation. +++ +++ Denotations lower into GENERIC cst expressions. */ +++ +++tree +++a68_lower_denotation (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *moid = MOID (p); +++ +++ if (moid == M_VOID) +++ /* EMPTY */ +++ return a68_lower_empty (p, ctx); +++ else if (moid == M_BOOL) +++ /* TRUE or FALSE. */ +++ return (NSYMBOL (p)[0] == 'T') ? boolean_true_node : boolean_false_node; +++ else if (moid == M_CHAR) +++ { +++ char *s = a68_string_process_breaks (p, NSYMBOL (p)); +++ uint32_t ucs; +++ int length = a68_u8_mbtouc (&ucs, (const uint8_t *) s, 1); +++ gcc_assert (length == 1); +++ free (s); +++ return build_int_cst (a68_char_type, ucs); +++ } +++ else if (moid == M_ROW_CHAR) +++ return a68_lower_string_denotation (p, ctx); +++ else if (moid == M_INT +++ || moid == M_LONG_INT +++ || moid == M_LONG_LONG_INT +++ || moid == M_SHORT_INT +++ || moid == M_SHORT_SHORT_INT) +++ { +++ /* SIZETY INT */ +++ tree type; +++ char *end; +++ NODE_T *s = NO_NODE; +++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) +++ s = NEXT (SUB (p)); +++ else +++ s = SUB (p); +++ +++ type = CTYPE (moid); +++ int64_t val = strtol (NSYMBOL (s), &end, 10); +++ gcc_assert (end[0] == '\0'); +++ return build_int_cst (type, val); +++ } +++ if (moid == M_BITS +++ || moid == M_LONG_BITS +++ || moid == M_LONG_LONG_BITS +++ || moid == M_SHORT_BITS +++ || moid == M_SHORT_SHORT_BITS) +++ { +++ /* SIZETY BITS */ +++ +++ tree type; +++ char *end; +++ NODE_T *s = NO_NODE; +++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) +++ s = NEXT (SUB (p)); +++ else +++ s = SUB (p); +++ +++ type = CTYPE (moid); +++ int64_t radix = strtol (NSYMBOL (s), &end, 10); +++ gcc_assert (end != NSYMBOL (s) && *end == 'r'); +++ end++; +++ int64_t val = strtol (end, &end, radix); +++ gcc_assert (end[0] == '\0'); +++ return build_int_cst (type, val); +++ } +++ else if (moid == M_REAL +++ || moid == M_LONG_REAL +++ || moid == M_LONG_LONG_REAL) +++ { +++ /* SIZETY INT */ +++ tree type; +++ NODE_T *s = NO_NODE; +++ if (IS (SUB (p), LONGETY) || IS (SUB (p), SHORTETY)) +++ s = NEXT (SUB (p)); +++ else +++ s = SUB (p); +++ +++ if (moid == M_REAL) +++ type = float_type_node; +++ else if (moid == M_LONG_REAL) +++ type = double_type_node; +++ else if (moid == M_LONG_LONG_REAL) +++ type = long_double_type_node; +++ else +++ gcc_unreachable (); +++ +++ REAL_VALUE_TYPE val; +++ real_from_string (&val, NSYMBOL (s)); +++ return build_real (type, val); +++ } +++ +++ gcc_unreachable (); +++ return NULL_TREE; +++} +++ +++/* Lower SKIP. +++ +++ skip +++*/ +++ +++tree +++a68_lower_skip (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_get_skip_tree (MOID (p)); +++} +++ +++/* Lower NIHIL. +++ +++ nihil : nil. +++ +++ NIL stands for a name referring to no value and which must be +++ distinguishable from any other name. It is of mode REF AMODE. NIL is never +++ subject to coercion and it may only occur where the context is strong, +++ i.e. where AMODE is known at compile-time. +++ +++ It lowers to a pointer to AMODE with value 0. */ +++ +++tree +++a68_lower_nihil (NODE_T *p, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ tree type = CTYPE (MOID (p)); +++ +++ gcc_assert (type == a68_void_type || POINTER_TYPE_P (type)); +++ if (type == a68_void_type) +++ return a68_lower_empty (p, ctx); +++ else +++ return build_int_cst (type, 0); +++} +++ +++/* Lower EMPTY. */ +++ +++tree +++a68_lower_empty (NODE_T *p ATTRIBUTE_UNUSED, LOW_CTX_T ctx ATTRIBUTE_UNUSED) +++{ +++ return a68_get_empty (); +++} +++ +++/* Lower an identity relation. +++ +++ identity relation : tertiary, is symbol, tertiary; +++ tertiary, isnt symbol, tertiary. +++ +++ An identity relation determines whether two name values are the same. It +++ lowers into EQ_EXPR in case of IS and into NE_EXPR in case of ISNT. */ +++ +++tree +++a68_lower_identity_relation (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *lhs = SUB (p); +++ NODE_T *oper = NEXT (lhs); +++ NODE_T *rhs = NEXT (oper); +++ +++ /* Consolidate arguments to make sure we are comparing pointers in the +++ r-value context of the EQ_EXPR or NE_EXPR operation below. */ +++ tree op1 = a68_consolidate_ref (MOID (lhs), a68_lower_tree (lhs, ctx)); +++ tree op2 = a68_consolidate_ref (MOID (rhs), a68_lower_tree (rhs, ctx)); +++ +++ tree_code code; +++ if (IS (oper, IS_SYMBOL)) +++ code = EQ_EXPR; +++ else if (IS (oper, ISNT_SYMBOL)) +++ code = NE_EXPR; +++ else +++ gcc_unreachable (); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ code, boolean_type_node, op1, op2); +++} +++ +++/* Lower AND_FUNCTION and OR_FUNCTION. +++ +++ and function : tertiary, andf symbol, tertiary. +++ or function : tertiary, orf_symbol, tertiary. +++ +++ These are pseudo-operators that are used to implement short-circuits +++ evaluation of logical expressions. +++ +++ These pseudo-operators lower into TRUTH_ANDIF_EXPR or TRUTH_ORIF_EXPR, +++ respectively. */ +++ +++tree +++a68_lower_logic_function (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *lhs = SUB (p); +++ NODE_T *oper = NEXT (lhs); +++ NODE_T *rhs = NEXT (oper); +++ +++ tree op1 = a68_lower_tree (lhs, ctx); +++ tree op2 = a68_lower_tree (rhs, ctx); +++ +++ tree_code code; +++ if (IS (oper, ANDF_SYMBOL)) +++ code = TRUTH_ANDIF_EXPR; +++ else if (IS (oper, ORF_SYMBOL)) +++ code = TRUTH_ORIF_EXPR; +++ else +++ gcc_unreachable (); +++ +++ return fold_build2_loc (a68_get_node_location (p), +++ code, boolean_type_node, op1, op2); +++} +++ +++/* Lower a primary. +++ +++ primary : identifier; denotation; cast; enclosed clause; format text. +++ +++ The primary lowers into some GENERIC expression. */ +++ +++tree +++a68_lower_primary (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_lower_tree (SUB (p), ctx); +++} +++ +++/* Lower a cast. +++ +++ cast : declarer, enclosed clause; +++ void symbol, enclosed clause. +++ +++ A cast establishes a strong context with some required mode. This context +++ allows coercions to be applied, and these coercions have been inserted in +++ the parse tree by the parser. */ +++ +++tree +++a68_lower_cast (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_lower_tree (NEXT (SUB (p)), ctx); +++} +++ +++/* Lower a slice. +++ +++ slice : MULTIPLE INDEXER +++ +++ Slicing a multiple may result in either an element of the multiple, if the +++ operation is indexing, or another multiple, if the operation is a +++ trimming. */ +++ +++static void +++lower_subscript_for_indexes (NODE_T *p, LOW_CTX_T ctx) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case TRIMMER: +++ /* Because of ANNOTATION (indexer) == SLICE */ +++ gcc_unreachable (); +++ break; +++ case UNIT: +++ a68_add_stmt (a68_lower_tree (p, ctx)); +++ break; +++ case GENERIC_ARGUMENT: +++ case GENERIC_ARGUMENT_LIST: +++ lower_subscript_for_indexes (SUB (p), ctx); +++ break; +++ default: +++ break; +++ } +++ } +++} +++ +++static void +++lower_subscript_for_trimmers (NODE_T *p, LOW_CTX_T ctx, +++ tree multiple, tree new_multiple, +++ int *dim, int *new_dim, +++ tree elements_pointer_type) +++{ +++ /* new.elements := multiple.elements; +++ FOR dim TO num dimensions +++ DO CO t[dim] is either a subscript i or a trimmer i : j @ k CO +++ new.elements +:= i * multiple.strides[dim]; +++ IF t[dim] is a trimmer +++ THEN INT d := ( k is absent | 1 | multiple.lb[dim] - k ); +++ new.lb[dim] := multiple.lb[dim] - d; +++ new.ub[dim] := multiple.ub[dim] - d; +++ new.strides[dim] := multiple.strides[dim] +++ FI +++ OD +++ */ +++ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case UNIT: +++ { +++ tree unit = save_expr (fold_convert (ssizetype, a68_lower_tree (p, ctx))); +++ tree new_elements = a68_multiple_elements (new_multiple); +++ tree size_dim = size_int (*dim); +++ tree dim_lower_bound = save_expr (a68_multiple_lower_bound (multiple, size_dim)); +++ tree stride = save_expr (a68_multiple_stride (multiple, size_dim)); +++ +++ /* Validate bounds. */ +++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) +++ a68_add_stmt (a68_multiple_bounds_check (p, size_dim, multiple, unit)); +++ +++ /* new_elements += i * strides[dim] */ +++ tree offset = fold_build2 (MULT_EXPR, sizetype, +++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, +++ unit, dim_lower_bound)), +++ stride); +++ +++ offset = save_expr (offset); +++ new_elements = fold_build2 (POINTER_PLUS_EXPR, +++ elements_pointer_type, +++ new_elements, +++ offset); +++ a68_add_stmt (a68_multiple_set_elements (new_multiple, new_elements)); +++ +++ /* elements_size -= i * strides[dim] */ +++ tree elements_size = a68_multiple_elements_size (new_multiple); +++ elements_size = fold_build2 (MINUS_EXPR, sizetype, +++ elements_size, offset); +++ a68_add_stmt (a68_multiple_set_elements_size (new_multiple, elements_size)); +++ +++ *dim += 1; +++ break; +++ } +++ case TRIMMER: +++ { +++ /* First collect components from the trimmer. */ +++ tree size_dim = size_int (*dim); +++ tree dim_lower_bound = save_expr (a68_multiple_lower_bound (multiple, size_dim)); +++ tree lower_bound = dim_lower_bound; +++ tree upper_bound = save_expr (a68_multiple_upper_bound (multiple, size_dim)); +++ tree at = ssize_int (1); +++ +++ NODE_T *q = SUB (p); +++ if (q != NO_NODE) +++ { +++ if (IS (q, AT_SYMBOL)) +++ { +++ /* Both bounds are implicit. */ +++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); +++ } +++ else if (IS (q, COLON_SYMBOL)) +++ { +++ /* Lower bound is implicit. */ +++ FORWARD (q); +++ if (IS (q, AT_SYMBOL)) +++ { +++ /* Upper bound is implicit, AT specified. */ +++ gcc_assert (IS (q, AT_SYMBOL)); +++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); +++ } +++ else +++ { +++ upper_bound +++ = save_expr (fold_convert (ssizetype, a68_lower_tree (q, ctx))); +++ FORWARD (q); +++ if (q != NO_NODE) +++ { +++ gcc_assert (IS (q, AT_SYMBOL)); +++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); +++ } +++ } +++ } +++ else +++ { +++ /* Lower bound is explicit. */ +++ lower_bound = fold_convert (ssizetype, a68_lower_tree (q, ctx)); +++ FORWARD (q); +++ gcc_assert (IS (q, COLON_SYMBOL)); +++ FORWARD (q); +++ if (q != NO_NODE) +++ { +++ if (IS (q, AT_SYMBOL)) +++ at = save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); +++ else +++ { +++ upper_bound +++ = save_expr (fold_convert (ssizetype, a68_lower_tree (q, ctx))); +++ FORWARD (q); +++ if (q != NO_NODE && IS (q, AT_SYMBOL)) +++ at = +++ save_expr (fold_convert (ssizetype, a68_lower_tree (NEXT (q), ctx))); +++ } +++ } +++ } +++ } +++ +++ /* Time for some bounds checking. +++ +++ Note that in trimmers, given the current dimension's bounds +++ (L,U), we cannot simply do the check: +++ +++ L <= lower_bound <= U +++ L <= upper_bound <= U +++ +++ This is because the multiple may be flat, and the dimension may +++ have bounds such like U < L. In that case, the expressions +++ above would always eval to false for any lower_bound and +++ upper_bound. +++ +++ So we check for this instead: +++ +++ L <= lower_bound AND upper_bound <= U +++ +++ This allows to trim a "flat dimension" using a trimmer where +++ upper_bound < lower_bound. The result is, of course, another +++ "flat dimension" in the multiple result of the trimming. */ +++ +++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) +++ { +++ a68_add_stmt (a68_multiple_single_bound_check (p, size_dim, multiple, +++ lower_bound, +++ false /* upper_bound */)); +++ a68_add_stmt (a68_multiple_single_bound_check (p, size_dim, multiple, +++ upper_bound, +++ true /* upper_bound */)); +++ } +++ +++ /* new_elements += i * strides[dim] */ +++ tree stride = save_expr (a68_multiple_stride (multiple, size_dim)); +++ tree new_elements = a68_multiple_elements (new_multiple); +++ tree offset = fold_build2 (MULT_EXPR, sizetype, +++ fold_convert (sizetype, fold_build2 (MINUS_EXPR, ssizetype, +++ lower_bound, dim_lower_bound)), +++ stride); +++ +++ offset = save_expr (offset); +++ new_elements = fold_build2 (POINTER_PLUS_EXPR, +++ elements_pointer_type, +++ new_elements, +++ offset); +++ a68_add_stmt (a68_multiple_set_elements (new_multiple, new_elements)); +++ +++ /* elements_size -= i * strides[dim] */ +++ tree elements_size = a68_multiple_elements_size (new_multiple); +++ elements_size = fold_build2 (MINUS_EXPR, sizetype, +++ elements_size, offset); +++ a68_add_stmt (a68_multiple_set_elements_size (new_multiple, +++ elements_size)); +++ +++ /* Fill the triplet for this dimension in new_multiple. */ +++ tree size_new_dim = size_int (*new_dim); +++ tree d = fold_build2 (MINUS_EXPR, ssizetype, lower_bound, at); +++ +++ a68_add_stmt (a68_multiple_set_lower_bound (new_multiple, size_new_dim, +++ fold_build2 (MINUS_EXPR, ssizetype, +++ lower_bound, d))); +++ a68_add_stmt (a68_multiple_set_upper_bound (new_multiple, size_new_dim, +++ fold_build2 (MINUS_EXPR, ssizetype, +++ upper_bound, d))); +++ a68_add_stmt (a68_multiple_set_stride (new_multiple, size_new_dim, stride)); +++ +++ *new_dim += 1; +++ *dim += 1; +++ break; +++ } +++ default: +++ lower_subscript_for_trimmers (SUB (p), ctx, +++ multiple, new_multiple, +++ dim, new_dim, +++ elements_pointer_type); +++ } +++ } +++} +++ +++tree +++a68_lower_slice (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *indexer = NEXT_SUB (p); +++ MOID_T *orig_multiple_mode = MOID (SUB (p)); +++ MOID_T *multiple_mode = orig_multiple_mode; +++ bool slicing_name = false; +++ +++ /* First of all, lower the multiple being sliced. If it is a name to a +++ multiple, set a flag and dereference. */ +++ tree multiple = a68_lower_tree (SUB (p), ctx); +++ MOID_T *orig_sliced_multiple_mode = MOID (p); +++ MOID_T *sliced_multiple_mode = MOID (p); +++ size_t slice_num_dimensions = 0; +++ if (IS_REF (MOID (SUB (p)))) +++ { +++ slicing_name = true; +++ multiple = a68_low_deref (multiple, SUB (p)); +++ multiple_mode = SUB (multiple_mode); +++ slice_num_dimensions = DIM (SUB (MOID (p))); +++ sliced_multiple_mode = SUB (sliced_multiple_mode); +++ } +++ else +++ slice_num_dimensions = DIM (MOID (p)); +++ +++ tree slice = NULL_TREE; +++ if (ANNOTATION (indexer) == SLICE) +++ { +++ /* The slice has only indexers and no trimmers. Collect units and slice +++ an element of the multiple using a68_multiple_slice. This operation +++ results in an element of the multiple. */ +++ +++ /* Collect units */ +++ a68_push_range (NULL); +++ lower_subscript_for_indexes (SUB (indexer), ctx); +++ tree units = a68_pop_range (); +++ +++ /* We need to allocate space for as many indexes as dimensions of the +++ multiple. */ +++ tree num_dimensions_tree = a68_multiple_dimensions (multiple); +++ gcc_assert (TREE_CODE (num_dimensions_tree) == INTEGER_CST); +++ int num_dimensions = tree_to_shwi (num_dimensions_tree); +++ +++ int num_indexes = 0; +++ tree *indexes = (tree *) xmalloc (sizeof (tree) * num_dimensions); +++ for (tree_stmt_iterator si = tsi_start (units); +++ !tsi_end_p (si); +++ tsi_next (&si)) +++ { +++ /* Add the unit to the list of indexes. */ +++ indexes[num_indexes] = tsi_stmt (si); +++ num_indexes++; +++ } +++ gcc_assert (num_indexes == num_dimensions); +++ +++ /* Slice. */ +++ slice = a68_multiple_slice (p, multiple, slicing_name, +++ num_indexes, indexes); +++ free (indexes); +++ } +++ else if (ANNOTATION (indexer) == TRIMMER) +++ { +++ /* The slice has both indexers and trimmers. Traverse the indexer +++ subtree to obtain the descriptor of the trimmed multiple (which is +++ another multiple) and the pointer to the elements, which points to +++ some position within the elements of the trimmed multiple. This +++ operation results in a new multiple of the same mode than the trimmed +++ multiple with shared elements. */ +++ +++ a68_push_range (sliced_multiple_mode); +++ +++ tree sliced_multiple = a68_lower_tmpvar ("multiple%", TREE_TYPE (multiple), +++ multiple); +++ tree *lower_bounds = (tree *) xmalloc (sizeof (tree) * slice_num_dimensions); +++ tree *upper_bounds = (tree *) xmalloc (sizeof (tree) * slice_num_dimensions); +++ tree ssize_one_node = fold_convert (ssizetype, size_one_node); +++ tree ssize_zero_node = fold_convert (ssizetype, size_zero_node); +++ for (size_t d = 0; d < slice_num_dimensions; ++d) +++ { +++ /* Note that these dummy bounds and the implied strides will be +++ overwritten by lower_subscript_for_trimmers below. */ +++ lower_bounds[d] = ssize_one_node; +++ upper_bounds[d] = ssize_zero_node; +++ } +++ tree new_multiple = a68_row_value (CTYPE (sliced_multiple_mode), +++ slice_num_dimensions, +++ a68_multiple_elements (sliced_multiple), +++ a68_multiple_elements_size (sliced_multiple), +++ lower_bounds, upper_bounds); +++ new_multiple = save_expr (new_multiple); +++ new_multiple = a68_lower_tmpvar ("new_multiple%", TREE_TYPE (new_multiple), +++ new_multiple); +++ +++ int dim = 0; +++ int new_dim = 0; +++ lower_subscript_for_trimmers (SUB (indexer), ctx, +++ sliced_multiple, new_multiple, +++ &dim, &new_dim, +++ a68_row_elements_pointer_type (TREE_TYPE (multiple))); +++ a68_add_stmt (new_multiple); +++ slice = a68_pop_range (); +++ +++ /* In case we are slicing a ref to a multiple, return the address of the +++ resulting multiple and not the multiple itself. But in this case we +++ need an address in the heap, because the trimmed multiple may be in +++ the heap and the result shall have the same scope. */ +++ if (slicing_name) +++ { +++ tree ptrtype = CTYPE (orig_sliced_multiple_mode); +++ tree slice_addr = fold_build1 (ADDR_EXPR, ptrtype, slice); +++ tree alloc = a68_lower_malloc (ptrtype, size_in_bytes (TREE_TYPE (slice))); +++ alloc = save_expr (alloc); +++ tree copy = a68_lower_memcpy (alloc, slice_addr, size_in_bytes (TREE_TYPE (slice))); +++ +++ slice = fold_build2 (COMPOUND_EXPR, ptrtype, copy, alloc); +++ } +++ } +++ else +++ gcc_unreachable (); +++ +++ return slice; +++} +++ +++/* Lower a selection. +++ +++ selection : selector, secondary. +++ selector : field identifier, of symbol. +++ +++ The selection lowers into a COMPONENT_REF of the field corresponding to the +++ field identifier. */ +++ +++tree +++a68_lower_selection (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *secondary = NEXT (SUB (p)); +++ NODE_T *field_identifier = SUB (SUB (p)); +++ +++ MOID_T *secondary_mode = MOID (secondary); +++ tree secondary_expr = a68_lower_tree (secondary, ctx); +++ +++ tree res = NULL_TREE; +++ +++ /* If the secondary is an address, we need to indirect. */ +++ if (IS_REF (secondary_mode)) +++ { +++ secondary_expr = a68_low_deref (secondary_expr, secondary); +++ secondary_mode = SUB (secondary_mode); +++ } +++ +++ if (IS_FLEX (secondary_mode) || IS_ROW (secondary_mode)) +++ { +++ /* This is the selection of a multiple of structs. +++ +++ The result is a multiple with same dimensions, dimension bounds and +++ strides than the indexed multiple. The elements pointer is made to +++ point to the selected field of the first struct. */ +++ +++ MOID_T *result_mode = MOID (p); +++ if (IS_REF (result_mode)) +++ result_mode = SUB (result_mode); +++ MOID_T *struct_mode = SUB (secondary_mode); +++ tree field_id = a68_get_mangled_identifier (SYMBOL (INFO (field_identifier))); +++ tree struct_type = CTYPE (struct_mode); +++ a68_push_range (result_mode); +++ tree selection = a68_lower_tmpvar ("selection%", CTYPE (result_mode), +++ a68_get_skip_tree (result_mode)); +++ tree multiple = a68_lower_tmpvar ("multiple%", TREE_TYPE (secondary_expr), +++ secondary_expr); +++ +++ /* First set the bounds of the selection, which are exactly the same +++ bounds than the selected multiple. */ +++ for (int dim = 0; dim < DIM (DEFLEX (secondary_mode)); ++dim) +++ { +++ tree size_dim = size_int (dim); +++ tree lower_bound = a68_multiple_lower_bound (multiple, size_dim); +++ tree upper_bound = a68_multiple_upper_bound (multiple, size_dim); +++ tree stride = a68_multiple_stride (multiple, size_dim); +++ a68_add_stmt (a68_multiple_set_lower_bound (selection, size_dim, +++ lower_bound)); +++ a68_add_stmt (a68_multiple_set_upper_bound (selection, size_dim, +++ upper_bound)); +++ a68_add_stmt (a68_multiple_set_stride (selection, size_dim, +++ stride)); +++ } +++ +++ /* Now set the elements pointer, which is the elements pointer of the +++ selected multiple offset the offset of the selected field in its +++ struct type. */ +++ tree elements = a68_multiple_elements (selection); +++ tree multiple_elements = a68_multiple_elements (multiple); +++ tree multiple_elements_size = a68_multiple_elements_size (multiple); +++ tree element_pointer_type = TREE_TYPE (elements); +++ tree field_offset = NULL_TREE; +++ for (tree f = TYPE_FIELDS (struct_type); f; f = DECL_CHAIN (f)) +++ { +++ if (field_id == DECL_NAME (f)) +++ { +++ field_offset = byte_position (f); +++ break; +++ } +++ } +++ gcc_assert (field_offset != NULL_TREE); +++ a68_add_stmt (a68_multiple_set_elements (selection, +++ fold_build2 (POINTER_PLUS_EXPR, +++ element_pointer_type, +++ multiple_elements, +++ field_offset))); +++ +++ /* The size of the buffer pointed by the elements pointer has to be +++ adjusted accordingly. */ +++ a68_add_stmt (a68_multiple_set_elements_size (selection, +++ fold_build2 (MINUS_EXPR, sizetype, +++ multiple_elements_size, +++ field_offset))); +++ +++ a68_add_stmt (selection); +++ res = a68_pop_range (); +++ } +++ else +++ { +++ /* This is the selection of a struct field. */ +++ gcc_assert (A68_STRUCT_TYPE_P (TREE_TYPE (secondary_expr))); +++ +++ /* Search for the selected field in the struct type. */ +++ tree struct_type = TREE_TYPE (secondary_expr); +++ tree field_id = a68_get_mangled_identifier (SYMBOL (INFO (field_identifier))); +++ tree field = NULL_TREE; +++ for (tree f = TYPE_FIELDS (struct_type); f; f = DECL_CHAIN (f)) +++ { +++ if (field_id == DECL_NAME (f)) +++ { +++ field = f; +++ break; +++ } +++ } +++ gcc_assert (field != NULL_TREE); +++ +++ /* Emit the COMPONENT_REF. */ +++ res = fold_build3_loc (a68_get_node_location (p), +++ COMPONENT_REF, +++ TREE_TYPE (field), +++ secondary_expr, +++ field, +++ NULL_TREE); +++ } +++ +++ /* The selection of a name yields a name. */ +++ if (IS_REF (MOID (secondary))) +++ /* XXX This may require copying. */ +++ return fold_build1 (ADDR_EXPR, CTYPE (MOID (p)), res); +++ else +++ return res; +++} +++ +++/* Lower a secondary. +++ +++ secondary : primary; generator; selection. +++ +++ The secondary lowers into some GENERIC expression. */ +++ +++tree +++a68_lower_secondary (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_lower_tree (SUB (p), ctx); +++} +++ +++/* Lower a formula. +++ +++ formula : secondary, operator, secondary; +++ secondary, operator, monadic formula; +++ secondary, operator, formula; +++ monadic formula; +++ monadic formula, operator, secondary; +++ monadic formula, operator, monadic formula; +++ monadic formula, operator, formula; +++ formula, operator, secondary; +++ formula, operator, monadic formula; +++ formula, operator, formula. +++ +++ The formula lowers into some GENERIC expression. */ +++ +++tree +++a68_lower_formula (NODE_T *p, LOW_CTX_T ctx) +++{ +++ if (IS (SUB (p), MONADIC_FORMULA) && NEXT (SUB (p)) == NO_NODE) +++ return a68_lower_tree (SUB (p), ctx); +++ else +++ { +++ /* If the operator is defined in the standard prelude, then use its lowering +++ code. */ +++ if (TAG_TABLE (TAX (NEXT (SUB (p)))) == A68_STANDENV) +++ { +++ LOWERER_T lowerer = LOWERER (TAX (NEXT (SUB (p)))); +++ return (*lowerer) (p, ctx); +++ } +++ else +++ { +++ tree arg1 = a68_lower_tree (SUB (p), ctx); +++ tree op = a68_lower_tree (NEXT (SUB (p)), ctx); +++ tree arg2 = a68_lower_tree (NEXT (NEXT (SUB (p))), ctx); +++ +++ if (POINTER_TYPE_P (TREE_TYPE (op))) +++ op = fold_build1 (INDIRECT_REF, +++ TREE_TYPE (TREE_TYPE (op)), +++ op); +++ return build_call_expr_loc (a68_get_node_location (p), op, 2, arg1, arg2); +++ } +++ } +++} +++ +++/* Lower a monadic formula. +++ +++ monadic formula : operator, secondary; +++ operator, monadic formula. +++ +++ The monadic formula lowers into some GENERIC expression. */ +++ +++tree +++a68_lower_monadic_formula (NODE_T *p, LOW_CTX_T ctx) +++{ +++ /* If the operator is defined in the standard prelude, then use its lowering +++ code. */ +++ if (TAG_TABLE (TAX (SUB (p))) == A68_STANDENV) +++ { +++ LOWERER_T lowerer = LOWERER (TAX (SUB (p))); +++ return (*lowerer) (p, ctx); +++ } +++ else +++ { +++ tree op = a68_lower_tree (SUB (p), ctx); +++ tree secondary = a68_lower_tree (NEXT (SUB (p)), ctx); +++ +++ if (POINTER_TYPE_P (TREE_TYPE (op))) +++ op = fold_build1 (INDIRECT_REF, TREE_TYPE (TREE_TYPE (op)), op); +++ return build_call_expr_loc (a68_get_node_location (p), op, 1, secondary); +++ } +++} +++ +++/* Lower a tertiary. +++ +++ tertiary : nihil; monadic formula; formula; secondary. +++ +++ The tertiary lowers to some GENERIC expression. */ +++ +++tree +++a68_lower_tertiary (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_lower_tree (SUB (p), ctx); +++} +++ +++/* Lower an assignation. +++ +++ assignation : tertiary, assign symbol, tertiary; +++ tertiary, assign symbol, identity relation; +++ tertiary, assign symbol, and function; +++ tertiary, assign symbol, or function; +++ tertiary, assign symbol, routine text; +++ tertiary, assign symbol, jump; +++ tertiary, assign symbol, skip; +++ tertiary, assign symbol, assignation; +++ tertiary, assign symbol, code clause. +++ +++ An assignation lowers into appending a MODIFY_EXPR to the statements list, +++ and the result of the expression is the left hand side. A compound +++ expression fits perfectly */ +++ +++tree +++a68_lower_assignation (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *lhs_node = SUB (p); +++ NODE_T *rhs_node = NEXT (NEXT (SUB (p))); +++ tree lhs = a68_lower_tree (lhs_node, ctx); +++ tree rhs = a68_lower_tree (rhs_node, ctx); +++ +++ return a68_low_assignation (p, +++ lhs, MOID (lhs_node), +++ rhs, MOID (rhs_node)); +++} +++ +++/* Lower a generator. +++ +++ generator : loc symbol, declarer; +++ heap symbol, declarer; +++ new symbol, declarer. +++ +++ LOC generators lower into calls to BUILT_IN_ALLOCA. +++ HEAP generators lower into calls to malloc. */ +++ +++tree +++a68_lower_generator (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *declarer = NEXT (SUB (p)); +++ return a68_low_generator (declarer, +++ MOID (declarer), +++ !IS (SUB (p), LOC_SYMBOL), +++ ctx); +++} +++ +++/* Lower a procedure call. +++ +++ */ +++ +++static void +++collect_call_arguments (NODE_T *p, vec *args, LOW_CTX_T ctx) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, UNIT)) +++ { +++ /* In Algol 68 parameters are passed via an identity declaration, so +++ this must implement same semantics. */ +++ tree arg = a68_lower_tree (p, ctx); +++ if (HAS_ROWS (MOID (p))) +++ arg = a68_low_dup (arg); +++ arg = a68_consolidate_ref (MOID (p), arg); +++ args->quick_push (arg); +++ } +++ else +++ collect_call_arguments (SUB (p), args, ctx); +++ } +++} +++ +++tree +++a68_lower_call (NODE_T *p, LOW_CTX_T ctx) +++{ +++ MOID_T *proc_mode = MOID (SUB (p)); +++ MOID_T *ret_mode = SUB (proc_mode); +++ unsigned int nargs = DIM (proc_mode); +++ +++ /* Collect arguments. */ +++ vec *args; +++ vec_alloc (args, nargs); +++ collect_call_arguments (NEXT (SUB (p)), args, ctx); +++ +++ /* Lower the primary to call. */ +++ tree primary = a68_lower_tree (SUB (p), ctx); +++ +++ /* We need a pointer to a function type. */ +++ if (!POINTER_TYPE_P (TREE_TYPE (primary))) +++ primary = fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (primary)), +++ primary); +++ +++ /* Build a function call. */ +++ tree call = build_call_vec (CTYPE (ret_mode), primary, args); +++ SET_EXPR_LOCATION (call, a68_get_node_location (p)); +++ return call; +++} +++ +++/* Lower a routine text. +++ +++ routine text : parameter pack, (declarer ; void symbol), colon symbol, assignation; +++ parameter pack, (declarer ; void symbol), colon symbol, identity relation; +++ parameter pack, (declarer ; void symbol), colon symbol, and function; +++ parameter pack, (declarer ; void symbol), colon symbol, or runction; +++ parameter pack, (declarer ; void symbol), colon symbol, jump; +++ parameter pack, (declarer ; void symbol), colon symbol, skip; +++ parameter pack, (declarer ; void symbol), colon symbol, tertiary; +++ parameter pack, (declarer ; void symbol), colon symbol, routine text; +++ parameter pack, (declarer ; void symboL), colon symbol, code clause; +++ (declarer ; void symbol), colon symbol, assignation; +++ (declarer ; void symbol), colon symbol, identity relation; +++ (declarer ; void symbol), colon symbol, and function; +++ (declarer ; void symbol), colon symbol, or runction; +++ (declarer ; void symbol), colon symbol, jump; +++ (declarer ; void symbol), colon symbol, skip; +++ (declarer ; void symbol), colon symbol, tertiary; +++ (declarer ; void symbol), colon symbol, routine text; +++ (declarer ; void symbol), colon symbol, code clause. +++ +++ Routine texts are used to create routines. They can stand as the actual +++ parameter of an identity declaration, as the actual parameter of a call, or +++ as the right-hand side of an assignation. +++ +++ This lowering function is called in two different contexts: +++ +++ 1) As part of a routine-identity-declaration, in which case the routine +++ resulting from this routine-text is beign ascribed to an identifier given +++ in ctx.proc_decl_identifier. In that case, we lower to a FUNC_DECL +++ initialized with the body of the routine-text. +++ +++ 2) As a free standing routine-text. In that case ctx.proc_decl_identifier is +++ NO_NODE. We lower to the address of a FUNC_DECL that features some unique +++ name. This pointer will then likely be assigned or ascribed to some +++ variable or identifier in non-contracted identity declaration, but we +++ cannot assume that so we have to opt for the indirection. */ +++ +++tree +++a68_lower_routine_text (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *s = SUB (p); +++ +++ tree func_decl = NULL_TREE; +++ NODE_T *defining_identifier = ctx.proc_decl_identifier; +++ bool defining_operator = ctx.proc_decl_operator; +++ if (defining_identifier != NO_NODE) +++ { +++ /* The routine-text is part of a routine-identity-declaration. */ +++ func_decl = TAX_TREE_DECL (TAX (defining_identifier)); +++ if (func_decl == NULL_TREE) +++ { +++ func_decl +++ = a68_make_proc_identity_declaration_decl (defining_identifier, +++ ctx.module_definition_name, +++ defining_operator /* indicant */); +++ TAX_TREE_DECL (TAX (defining_identifier)) = func_decl; +++ } +++ +++ /* If the routine-identity-declaration is in a public range then add the +++ declaration to the publicized declarations list. Otherwise chain the +++ declaration in the proper block and bind it. */ +++ if (PUBLIC_RANGE (TABLE (TAX (defining_identifier)))) +++ vec_safe_push (A68_MODULE_DEFINITION_DECLS, func_decl); +++ else +++ a68_add_decl (func_decl); +++ } +++ else +++ { +++ /* The routine-text is free standing. */ +++ func_decl = a68_make_anonymous_routine_decl (MOID (p)); +++ a68_add_decl (func_decl); +++ } +++ +++ a68_add_decl_expr (fold_build1_loc (a68_get_node_location (p), +++ DECL_EXPR, +++ TREE_TYPE (func_decl), +++ func_decl)); +++ announce_function (func_decl); +++ +++ /* PARAMETER_PACK. */ +++ NODE_T *parameter_pack_node = NO_NODE; +++ tree parameter_pack = NULL_TREE; /* This is computed below. */ +++ if (IS (s, PARAMETER_PACK)) +++ { +++ parameter_pack_node = s; +++ FORWARD (s); +++ } +++ +++ /* DECLARER or VOID_SYMBOL */ +++ if (IS (s, DECLARER) || IS (s, VOID_SYMBOL)) +++ /* This is not used, as this formal declarer is also available in the +++ procedure mode. So just skip it. */ +++ FORWARD (s); +++ +++ /* Skip the COLON_SYMBOL. */ +++ gcc_assert (IS (s, COLON_SYMBOL)); +++ FORWARD (s); +++ +++ /* Lower the function body. +++ +++ This should be done in a new range in which the formal parameters of the +++ routine-text have been declared. */ +++ a68_push_function_range (func_decl, CTYPE (SUB (MOID (p))) /* result_type */); +++ if (parameter_pack_node != NO_NODE) +++ parameter_pack = a68_lower_tree (parameter_pack_node, ctx); +++ DECL_ARGUMENTS (func_decl) = parameter_pack; +++ ctx.proc_decl_identifier = NO_NODE; +++ tree func_body = a68_lower_tree (s, ctx); +++ a68_pop_function_range (func_body); +++ +++ if (defining_identifier != NO_NODE) +++ /* Routine-text immediately ascribed to some identifier in a +++ proc-identity-declaration. Return the FUNC_DECL. */ +++ return func_decl; +++ else +++ /* Free standing routine-text. Return its address. */ +++ return fold_build1 (ADDR_EXPR, +++ build_pointer_type (TREE_TYPE (func_decl)), +++ func_decl); +++} +++ +++/* Lower an unit. +++ +++ unit : assignation; identity relation; +++ and function; or function; routine text; +++ jump; skip; tertiary; assertion; code clause. +++ +++ The unit lowers to an expression. */ +++ +++tree +++a68_lower_unit (NODE_T *p, LOW_CTX_T ctx) +++{ +++ return a68_lower_tree (SUB (p), ctx); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-low.cc ++@@ -0,0 +1,1705 @@ +++/* Lower the Algol 68 parse tree to GENERIC. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "tree.h" +++#include "fold-const.h" +++#include "diagnostic.h" +++#include "langhooks.h" +++#include "tm.h" +++#include "function.h" +++#include "cgraph.h" +++#include "toplev.h" +++#include "varasm.h" +++#include "predict.h" +++#include "stor-layout.h" +++#include "tree-iterator.h" +++#include "stringpool.h" +++#include "print-tree.h" +++#include "gimplify.h" +++#include "dumpfile.h" +++#include "convert.h" +++ +++#include "a68.h" +++ +++/* Return a tree with an identifier for the mangled version of a given +++ name. +++ +++ Publicized symbols feature the module name publishing them. +++ Internal symbols don't. +++ +++ Bold words, i.e. mode indicants, module indicants and operator indicants, +++ are mangled to upper-case. +++ +++ Tags, i.e. identifiers are mangled to lower-case. +++ +++ Monads and nomads are mangled to letter codes symbolizing the symbols: +++ +++ % (p)ercentage +++ ^ (c)aret +++ & (a)mpersand +++ + pl(u)s +++ - (m)inus +++ ~ (t)ilde +++ ! (b)ang +++ ? (q)uestion mark +++ > bi(g)ger than +++ < (l)ess than +++ / (s)lash +++ = (e)qual +++ : c(o)lon +++ * sta(r) +++ +++ Each letter code is followed by a single underscore character. */ +++ +++static tree +++get_mangled_identifier_or_indicant (const char *name, bool indicant, +++ const char *mname, bool internal, +++ bool numbered) +++{ +++ /* First determine the size of the mangled symbol. */ +++ size_t mangled_size = strlen (name) + 1; +++ if (mname) +++ { +++ /* Add size for MNAME_ */ +++ mangled_size += strlen (mname) + 1; +++ if (internal) +++ /* Another _ */ +++ mangled_size += 1; +++ } +++ for (const char *p = name; *p; ++p) +++ { +++ mangled_size += 1; +++ if (strchr (MONADS, *p) != NULL +++ || strchr (NOMADS, *p) != NULL +++ || *p == ':') +++ /* Each monad or nomad requires two chars to encode. */ +++ mangled_size += 1; +++ } +++ +++ char *number_buf = NULL; +++ if (numbered) +++ { +++ static unsigned int cnt; +++ number_buf = xasprintf ("%d", cnt++); +++ mangled_size += strlen (number_buf); +++ } +++ +++ /* Now fill-in the mangled symbol. */ +++ char *mangled_name = (char *) alloca (mangled_size); +++ size_t pos = 0; +++ if (mname) +++ { +++ for (const char *p = mname; *p; ++p) +++ /* Module names are bold words. Make sure to emit them in upper-case. */ +++ mangled_name[pos++] = TOUPPER (*p); +++ mangled_name[pos++] = '_'; +++ if (internal) +++ mangled_name[pos++] = '_'; +++ } +++ +++ for (const char *p = name; *p; ++p) +++ { +++ if (strchr (MONADS, *p) != NULL +++ || strchr (NOMADS, *p) != NULL +++ || *p == ':') +++ { +++ char c; +++ switch (*p) +++ { +++ case '%': c = 'p'; break; +++ case '^': c = 'c'; break; +++ case '&': c = 'a'; break; +++ case '+': c = 'u'; break; +++ case '-': c = 'm'; break; +++ case '~': c = 't'; break; +++ case '!': c = 'b'; break; +++ case '?': c = 'q'; break; +++ case '>': c = 'g'; break; +++ case '<': c = 'l'; break; +++ case '/': c = 's'; break; +++ case '=': c = 'e'; break; +++ case ':': c = 'o'; break; +++ case '*': c = 'r'; break; +++ default: +++ /* Should not happen. */ +++ gcc_unreachable (); +++ } +++ mangled_name[pos++] = c; +++ mangled_name[pos++] = '_'; +++ } +++ else +++ { +++ if (indicant) +++ mangled_name[pos++] = TOUPPER (*p); +++ else +++ mangled_name[pos++] = TOLOWER (*p); +++ } +++ } +++ +++ if (numbered) +++ { +++ for (char *p = number_buf; *p; ++p) +++ mangled_name[pos++] = *p; +++ free (number_buf); +++ } +++ mangled_name[pos++] = '\0'; +++ +++ return get_identifier (mangled_name); +++} +++ +++tree +++a68_get_mangled_identifier (const char *name, const char *mname, +++ bool internal, bool numbered) +++{ +++ return get_mangled_identifier_or_indicant (name, false /* indicant */, mname, +++ internal, numbered); +++} +++ +++tree +++a68_get_mangled_indicant (const char *name, const char *mname, +++ bool internal, bool numbered) +++{ +++ return get_mangled_identifier_or_indicant (name, true /* indicant */, mname, +++ internal, numbered); +++} +++ +++/* Demangle a given SYMBOL. +++ +++ This function does the reverse operation than +++ get_mangled_identifier_or_indicant. */ +++ +++char * +++a68_demangle_symbol (const char *mname, const char *symbol, +++ bool is_operator) +++{ +++ gcc_assert (strlen (symbol) >= strlen (mname) + 1); +++ /* First get rid of the module name and underscore. */ +++ symbol += strlen (mname) + 1; +++ /* Now demangle the rest. */ +++ size_t size = strlen (symbol) + 1; +++ char *demangled = (char *) xmalloc (size + 1); +++ size_t o = 0; +++ for (size_t i = 0; i < size; ++i) +++ { +++ if (symbol[i+1] == '_') +++ { +++ switch (symbol[i]) +++ { +++ case 'p': demangled[o++] = '+'; break; +++ case 'c': demangled[o++] = '^'; break; +++ case 'a': demangled[o++] = '&'; break; +++ case 'u': demangled[o++] = '+'; break; +++ case 'm': demangled[o++] = '-'; break; +++ case 't': demangled[o++] = '~'; break; +++ case 'b': demangled[o++] = '!'; break; +++ case 'q': demangled[o++] = '?'; break; +++ case 'g': demangled[o++] = '>'; break; +++ case 'l': demangled[o++] = '<'; break; +++ case 's': demangled[o++] = '/'; break; +++ case 'e': demangled[o++] = '='; break; +++ case 'o': demangled[o++] = ':'; break; +++ case 'r': demangled[o++] = '*'; break; +++ default: +++ /* Invalid mangling. */ +++ // XXX this should be checked at import time in extract. +++ gcc_unreachable (); +++ } +++ i += 1; +++ } +++ else +++ demangled[o++] = symbol[i]; +++ } +++ demangled[o] = '\0'; +++ +++ if (is_operator) +++ { +++ /* Remove trailing digits. */ +++ for (size_t i = strlen (demangled) - 1; i > 0; --i) +++ { +++ if (ISDIGIT (demangled[i])) +++ demangled[i] = '\0'; +++ else +++ break; +++ } +++ } +++ +++ return demangled; +++} +++ +++/* Return a tree with the EMPTY value. +++ +++ EMPTY is the only denotation of the VOID mode. It is used in unions to +++ denote "no value". It must have size zero, so it lowers into an empty +++ constructor with zero elements of type void. This is what GNU C uses to +++ implement the empty struct extension. */ +++ +++tree +++a68_get_empty (void) +++{ +++ return build_constructor (a68_void_type, NULL); +++} +++ +++/* Return a tree with the yielding of SKIP of a given mode. +++ +++ SKIP stands for some value of some given mode. It shall be used only in a +++ context where the compiler can determine the mode. +++ +++ The particular value to which it elaborates is non-important, but this +++ compiler always uses the same values. See the a68_get_ref_*_tree functions +++ for details on what values are these. */ +++ +++tree +++a68_get_skip_tree (MOID_T *m) +++{ +++ tree expr = NULL_TREE; +++ +++ while (EQUIVALENT (m) != NO_MOID) +++ m = EQUIVALENT (m); +++ +++ if (IS_INTEGRAL (m)) +++ expr = a68_get_int_skip_tree (m); +++ else if (m == M_CHAR) +++ expr = a68_get_char_skip_tree (); +++ else if (m == M_BOOL) +++ expr = a68_get_bool_skip_tree (); +++ else if (IS_REAL (m)) +++ expr = a68_get_real_skip_tree (m); +++ else if (IS_BITS (m)) +++ expr = a68_get_bits_skip_tree (m); +++ else if (IS_REF (m)) +++ expr = a68_get_ref_skip_tree (m); +++ else if (IS (m, PROC_SYMBOL)) +++ expr = a68_get_proc_skip_tree (m); +++ else if (IS_STRUCT (m)) +++ expr = a68_get_struct_skip_tree (m); +++ else if (IS_UNION (m)) +++ expr = a68_get_union_skip_tree (m); +++ else if (IS_FLEXETY_ROW (m)) +++ expr = a68_get_multiple_skip_tree (m); +++ else if (m == M_STRING) +++ expr = a68_get_string_skip_tree (); +++ else if (m == M_ROWS || IS (m, SERIES_MODE)) +++ { +++ /* XXX assert that all modes in the series are rows? */ +++ tree rows_type = CTYPE (M_ROWS); +++ tree dim_field = TYPE_FIELDS (rows_type); +++ tree triplets_field = TREE_CHAIN (dim_field); +++ tree null_pointer = build_int_cst (TREE_TYPE (triplets_field), 0); +++ expr = build_constructor_va (rows_type, 2, +++ dim_field, size_zero_node, +++ triplets_field, null_pointer); +++ } +++ else if (m == M_VOID || m == M_HIP) +++ expr = a68_get_empty (); +++ else +++ { +++ fatal_error (UNKNOWN_LOCATION, +++ "get skip tree: cannot compute SKIP for mode %s", +++ a68_moid_to_string (m, MOID_ERROR_WIDTH, NODE (m), true)); +++ gcc_unreachable (); +++ } +++ +++ return expr; +++} +++ +++/* Given a tree node EXP holding a value of mode M: +++ +++ *NUM_REFS is set to the number of REFs in M. +++ +++ *NUM_POINTERS is set to the number of pointers in the type of EXP that +++ correspond to the REFs in M. */ +++ +++void +++a68_ref_counts (tree exp, MOID_T *m, int *num_refs, int *num_pointers) +++{ +++ /* Count REFs in M and pointers in the type of EXP. Note that VAR_DECLs +++ corresponding to REF PROC are of type pointer, so these should not count +++ for the count! */ +++ +++ /* Make sure we are accessing the real mode definition. */ +++ while (EQUIVALENT (m) != NO_MOID) +++ m = EQUIVALENT (m); +++ +++ *num_refs = 0; +++ *num_pointers = 0; +++ for (MOID_T *s = m; s != NO_MOID && IS_REF (s); s = SUB (s)) +++ *num_refs += 1; +++ for (tree p = TREE_TYPE (exp); +++ p != NULL_TREE && POINTER_TYPE_P (p) && TREE_CODE (TREE_TYPE (p)) != FUNCTION_TYPE; +++ p = TREE_TYPE (p)) +++ *num_pointers += 1; +++ +++ gcc_assert (*num_refs >= *num_pointers); +++} +++ +++/* The Algol 68 variable declaration +++ +++ [LOC|HEAP] AMODE foo; +++ +++ Is in principle equivalent to the identity declaration +++ +++ REF AMODE foo = [LOC|HEAP] AMODE; +++ +++ In both cases the object ascribed to the defining identifier `foo' is of +++ mode REF AMODE. The ascribed object is a name which is created by a +++ generator implied in the actual declarer in the first case, and an explicit +++ generator in the initialization expression in the second case. +++ +++ However, this front-end implements these two cases differently in order to +++ reduce the amount of both indirect addressing and of storage: +++ +++ - The variable declaration `[LOC|HEAP] AMODE foo;' lowers into a VAR_DECL +++ with type ATYPE provided that the generator is LOC and that it contains no +++ rows. Accessing it requires direct addressing. When its address is +++ required, an ADDR_EXPR shall be used. +++ +++ - The identity declaration `REF AMODE foo = LOC AMODE;' lowers into a +++ VAR_DECL with type *ATYPE. Accessing it requires indirect addressing. It +++ is effectively a pointer. +++ +++ This introduces the complication that an expression (the VAR_DECL) whose +++ type is TYPE can appear in a place where *TYPE is expected. This function, +++ given the required mode and an expression, adds as many ADDR_EXPR to EXPR as +++ necessary so the resulting value is of the required type. Other than this +++ nuisance, the parser guarantees that the entities have the right type at the +++ location they appear, so a call to a68_consolidate_ref is all must be needed +++ at any point in the lowering process to guarantee a valid value for the +++ context. +++ +++ This function expects: +++ - That the type of EXPR is zero or more pointers to a base type BTYPE. +++ - That the mode M is zero or more REFs to a base non-ref mode AMODE. +++ - That the number of pointers in the type of EXPR is less or equal than the +++ number of REFs in the mode M. +++ - That BTYPE and AMODE are equivalent. */ +++ +++tree +++a68_consolidate_ref (MOID_T *m, tree expr) +++{ +++ int num_refs, num_pointers; +++ a68_ref_counts (expr, m, &num_refs, &num_pointers); +++ +++ /* Address EXPR as many times as necessary to match the number of REFs in the +++ desired mode. */ +++ while (num_pointers < num_refs) +++ { +++ if (TREE_CODE (expr) == COMPOUND_EXPR) +++ { +++ /* (..., x) -> (..., &x) */ +++ // gcc_assert (TREE_CODE (TREE_OPERAND (expr, 0)) == MODIFY_EXPR); +++ // gcc_assert (VAR_P (TREE_OPERAND (expr, 1))); +++ TREE_OPERAND (expr, 1) = a68_consolidate_ref (m, TREE_OPERAND (expr, 1)); +++ TREE_TYPE (expr) = TREE_TYPE (TREE_OPERAND (expr, 1)); +++ } +++ else +++ { +++ /* x -> &x */ +++ if (TREE_CODE (expr) == INDIRECT_REF) +++ /* expr is an indirection. Remove the pointer rather than adding +++ an addr. This avoids &* situations and marking stuff as +++ addressable unnecessarily. */ +++ expr = TREE_OPERAND (expr,0); +++ else +++ { +++ TREE_ADDRESSABLE (expr) = true; +++ expr = fold_build1 (ADDR_EXPR, build_pointer_type (TREE_TYPE (expr)), expr); +++ } +++ } +++ num_pointers += 1; +++ } +++ +++ return expr; +++} +++ +++/* Make a declaration for an anonymous routine of mode MODE. */ +++ +++tree +++a68_make_anonymous_routine_decl (MOID_T *mode) +++{ +++ /* The CTYPE of MODE is a pointer to a function. We need the pointed +++ function type for the FUNCTION_DECL. */ +++ tree func_type = TREE_TYPE (CTYPE (mode)); +++ tree func_decl = build_decl (UNKNOWN_LOCATION, +++ FUNCTION_DECL, +++ NULL_TREE /* name, set below. */, +++ func_type); +++ char *name = xasprintf ("routine%d", DECL_UID (func_decl)); +++ DECL_NAME (func_decl) = a68_get_mangled_identifier (name); +++ free (name); +++ DECL_EXTERNAL (func_decl) = 0; +++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); +++ /* Nested functions should be addressable. +++ XXX this should be propagated to their containing functions, so for now +++ we mark them all as addressable. */ +++ TREE_ADDRESSABLE (func_decl) = 1; +++ /* A nested function is not global. */ +++ TREE_PUBLIC (func_decl) = a68_in_global_range (); +++ TREE_STATIC (func_decl) = 1; +++ +++ return func_decl; +++} +++ +++/* Make a declaration for a constant procedure or operator. */ +++ +++tree +++a68_make_proc_identity_declaration_decl (NODE_T *identifier, +++ const char *module_name, +++ bool indicant, bool external, +++ const char *extern_symbol) +++{ +++ /* The CTYPE of MODE is a pointer to a function. We need the pointed +++ function type for the FUNCTION_DECL. */ +++ tree func_type = TREE_TYPE (CTYPE (MOID (identifier))); +++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); +++ tree func_decl = build_decl (UNKNOWN_LOCATION, +++ FUNCTION_DECL, +++ NULL_TREE, /* name, set below. */ +++ func_type); +++ +++ if (public_range) +++ { +++ bool publicized = PUBLICIZED (TAX (identifier)); +++ +++ DECL_EXTERNAL (func_decl) = 0; +++ if (publicized) +++ TREE_PUBLIC (func_decl) = 1; +++ else +++ TREE_PUBLIC (func_decl) = 0; +++ if (indicant) +++ DECL_NAME (func_decl) +++ = a68_get_mangled_indicant (NSYMBOL (identifier), module_name, +++ false /* internal */, +++ (IS (identifier, DEFINING_OPERATOR) +++ || IS (identifier, OPERATOR))); +++ else +++ DECL_NAME (func_decl) +++ = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, +++ false /* internal */, +++ (IS (identifier, DEFINING_OPERATOR) +++ || IS (identifier, OPERATOR))); +++ } +++ else if (external) +++ { +++ DECL_EXTERNAL (func_decl) = 1; +++ TREE_PUBLIC (func_decl) = 1; +++ DECL_NAME (func_decl) = get_identifier (extern_symbol); +++ } +++ else +++ { +++ DECL_EXTERNAL (func_decl) = 0; +++ DECL_STATIC_CHAIN (func_decl) = !a68_in_global_range (); +++ /* Nested functions should be addressable. +++ XXX this should be propagated to their containing functions, so for now +++ we mark them all as addressable. */ +++ TREE_ADDRESSABLE (func_decl) = 1; +++ /* A nested function is not global. */ +++ TREE_PUBLIC (func_decl) = a68_in_global_range (); +++ if (indicant) +++ DECL_NAME (func_decl) = a68_get_mangled_indicant (NSYMBOL (identifier)); +++ else +++ DECL_NAME (func_decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); +++ } +++ TREE_STATIC (func_decl) = 1; +++ +++ return func_decl; +++} +++ +++/* Make a declaration for an identity declaration. */ +++ +++tree +++a68_make_identity_declaration_decl (NODE_T *identifier, +++ const char *module_name, +++ bool indicant, bool external, +++ const char *extern_symbol) +++{ +++ tree type = CTYPE (MOID (identifier)); +++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); +++ tree decl = build_decl (a68_get_node_location (identifier), +++ VAR_DECL, +++ NULL_TREE, /* name, set below. */ +++ type); +++ +++ if (public_range) +++ { +++ bool publicized = PUBLICIZED (TAX (identifier)); +++ +++ DECL_EXTERNAL (decl) = 0; +++ TREE_STATIC (decl) = 1; +++ if (publicized) +++ TREE_PUBLIC (decl) = 1; +++ else +++ TREE_PUBLIC (decl) = 0; +++ if (indicant) +++ DECL_NAME (decl) = a68_get_mangled_indicant (NSYMBOL (identifier), module_name, +++ false /* internal */, +++ (IS (identifier, DEFINING_OPERATOR) +++ || IS (identifier, OPERATOR))); +++ else +++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, +++ false /* internal */, +++ (IS (identifier, DEFINING_OPERATOR) +++ || IS (identifier, OPERATOR))); +++ } +++ else if (external) +++ { +++ DECL_EXTERNAL (decl) = 1; +++ TREE_PUBLIC (decl) = 1; +++ DECL_NAME (decl) = get_identifier (extern_symbol); +++ } +++ else +++ { +++ DECL_EXTERNAL (decl) = 0; +++ TREE_PUBLIC (decl) = 0; +++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); +++ } +++ +++ DECL_INITIAL (decl) = a68_get_skip_tree (MOID (identifier)); +++ return decl; +++} +++ +++/* Make a declaration for a variable declaration. +++ The mode of the given identifier is expected to be a REF AMODE. */ +++ +++tree +++a68_make_variable_declaration_decl (NODE_T *identifier, +++ const char *module_name, +++ bool external, +++ const char *extern_symbol) +++{ +++ gcc_assert (IS_REF (MOID (identifier))); +++ +++ MOID_T *mode = MOID (identifier); +++ bool use_pointer = (HEAP (TAX (identifier)) != STATIC_SYMBOL +++ && ((HEAP (TAX (identifier)) == HEAP_SYMBOL) +++ || HAS_ROWS (SUB (MOID (identifier))))); +++ bool public_range = PUBLIC_RANGE (TABLE (TAX (identifier))); +++ tree type = use_pointer ? CTYPE (mode) : CTYPE (SUB (mode)); +++ tree decl = build_decl (a68_get_node_location (identifier), +++ VAR_DECL, +++ NULL_TREE, /* name, set below. */ +++ type); +++ +++ if (public_range) +++ { +++ bool publicized = PUBLICIZED (TAX (identifier)); +++ +++ DECL_EXTERNAL (decl) = 0; +++ TREE_STATIC (decl) = 1; +++ if (publicized) +++ TREE_PUBLIC (decl) = 1; +++ else +++ TREE_PUBLIC (decl) = 0; +++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier), module_name, +++ false /* internal */, +++ (IS (identifier, DEFINING_OPERATOR) +++ || IS (identifier, OPERATOR))); +++ } +++ else if (external) +++ { +++ DECL_EXTERNAL (decl) = 1; +++ TREE_PUBLIC (decl) = 1; +++ DECL_NAME (decl) = get_identifier (extern_symbol); +++ } +++ else +++ { +++ TREE_PUBLIC (decl) = 0; +++ DECL_NAME (decl) = a68_get_mangled_identifier (NSYMBOL (identifier)); +++ } +++ +++ DECL_INITIAL (decl) = a68_get_skip_tree (use_pointer ? mode : SUB (mode)); +++ return decl; +++} +++ +++/* Do a checked indirection. +++ +++ P is a tree node used for its location information. +++ EXP is an expression that gets indirected. +++ EXP_MODE is the mode of exp. */ +++ +++tree +++a68_checked_indirect_ref (NODE_T *p, tree exp, MOID_T *exp_mode) +++{ +++ tree exp_type = TREE_TYPE (exp); +++ tree nil_check = NULL_TREE; +++ +++ if (OPTION_NIL_CHECKING (&A68_JOB)) +++ { +++ exp = save_expr (exp); +++ tree consolidated_exp = a68_consolidate_ref (exp_mode, exp); +++ +++ /* Check whether we are dereferencing NIL. */ +++ unsigned int lineno = NUMBER (LINE (INFO (p))); +++ const char *filename_str = FILENAME (LINE (INFO (p))); +++ tree filename = build_string_literal (strlen (filename_str) + 1, +++ filename_str); +++ tree call = a68_build_libcall (A68_LIBCALL_DEREFNIL, +++ void_type_node, 2, +++ filename, +++ build_int_cst (unsigned_type_node, lineno)); +++ call = fold_build2 (COMPOUND_EXPR, a68_bool_type, call, boolean_false_node); +++ nil_check = fold_build2 (NE_EXPR, exp_type, +++ consolidated_exp, +++ build_int_cst (exp_type, 0)); +++ nil_check = fold_build2 (TRUTH_ORIF_EXPR, exp_type, +++ nil_check, call); +++ } +++ +++ tree deref = fold_build1 (INDIRECT_REF, TREE_TYPE (exp_type), exp); +++ if (nil_check == NULL_TREE) +++ return deref; +++ else +++ return fold_build2 (COMPOUND_EXPR, TREE_TYPE (deref), +++ nil_check, deref); +++} +++ +++/* Deref a given expression EXP whose mode is MOID (P). +++ +++ The value to dereference always corresponds to a name, but it may consist +++ of: +++ +++ - Not a pointer, in which case corresponds to a name lowered to a VAR_DECL. +++ +++ - A pointer to a function, in which case corresponds to a name of mode REF +++ PROC, lowered to a VAR_DECL. +++ +++ - Any other pointer corresponds to a name lowered to a VAR_DECL that is a +++ pointer. +++ +++ In the first two cases, in both r-value and l-value situations the expected +++ result is achieved by just returning the value: in r-value the decl denotes +++ the value, in l-value the decl denotes the (direct) address of the +++ value. */ +++ +++tree +++a68_low_deref (tree exp, NODE_T *p) +++{ +++ int num_refs, num_pointers; +++ a68_ref_counts (exp, MOID (p), &num_refs, &num_pointers); +++ +++ if (num_refs > num_pointers) +++ return exp; +++ else +++ { +++ gcc_assert (num_refs == num_pointers); +++ return a68_checked_indirect_ref (p, exp, MOID (p)); +++ } +++} +++ +++/* Get a deep-copy of a given Algol 68 value EXP. */ +++ +++tree +++a68_low_dup (tree expr, bool use_heap) +++{ +++ tree dup = NULL_TREE; +++ tree type = TREE_TYPE (expr); +++ +++ /* XXX */ +++ use_heap = true; +++ +++ /* Determine the mode corresponding to the type of EXPR. */ +++ MOID_T *m = a68_type_moid (type); +++ gcc_assert (m != NO_MOID); +++ while (EQUIVALENT (m) != NO_MOID) +++ m = EQUIVALENT (m); +++ +++ if (A68_ROW_TYPE_P (type)) +++ { +++ /* We need to copy the elements as well as the descriptor. There is no +++ need to check bounds. */ +++ +++ /* Deflexe the mode as appropriate. */ +++ while (IS_FLEX (m)) +++ m = SUB (m); +++ gcc_assert (IS_ROW (m) || m == M_STRING); +++ +++ a68_push_range (NULL); +++ +++ /* First allocate space for the dupped elements. */ +++ expr = save_expr (expr); +++ tree elements = a68_multiple_elements (expr); +++ tree element_pointer_type = TREE_TYPE (elements); +++ tree element_type = TREE_TYPE (element_pointer_type); +++ tree new_elements_size = save_expr (a68_multiple_elements_size (expr)); +++ tree new_elements = a68_lower_tmpvar ("new_elements%", +++ TREE_TYPE (elements), +++ (use_heap +++ ? a68_lower_malloc (TREE_TYPE (TREE_TYPE (elements)), +++ new_elements_size) +++ : a68_lower_alloca (TREE_TYPE (TREE_TYPE (elements)), +++ new_elements_size))); +++ +++ /* Then copy the elements. +++ +++ If the mode of the elements stored in the multiple dont have rows, +++ then we can just use memcpy. Otherwise, we have to loop and recurse +++ to dup all the elements in the multiple one by one. +++ +++ The above applies to multiples of any number of dimensions. */ +++ if (m == M_STRING || !HAS_ROWS (SUB (m))) +++ { +++ a68_add_stmt (a68_lower_memcpy (new_elements, +++ elements, +++ new_elements_size)); +++ a68_add_stmt (new_elements); +++ } +++ else +++ { +++ /* Note that num_elems includes elements that are not accessible due +++ to trimming. */ +++ tree num_elems = a68_lower_tmpvar ("numelems%", size_type_node, +++ fold_build2 (TRUNC_DIV_EXPR, sizetype, +++ new_elements_size, +++ size_in_bytes (element_type))); +++ tree orig_elements = a68_lower_tmpvar ("orig_elements%", +++ element_pointer_type, elements); +++ tree index = a68_lower_tmpvar ("index%", size_type_node, size_zero_node); +++ +++ /* Begin of loop body. */ +++ a68_push_range (NULL); +++ +++ /* if (index == num_elems) break; */ +++ a68_add_stmt (fold_build1 (EXIT_EXPR, +++ void_type_node, +++ fold_build2 (EQ_EXPR, +++ size_type_node, +++ index, num_elems))); +++ /* new_elements[index] = elements[index] */ +++ tree offset = fold_build2 (MULT_EXPR, sizetype, +++ index, size_in_bytes (element_type)); +++ tree new_elem_lvalue = fold_build2 (MEM_REF, element_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ element_pointer_type, +++ new_elements, +++ offset), +++ fold_convert (element_pointer_type, +++ integer_zero_node)); +++ tree elem = fold_build2 (MEM_REF, element_type, +++ fold_build2 (POINTER_PLUS_EXPR, +++ element_pointer_type, +++ orig_elements, +++ offset), +++ fold_convert (element_pointer_type, +++ integer_zero_node)); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, element_type, +++ new_elem_lvalue, +++ a68_low_dup (elem, use_heap))); +++ /* index++ */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, +++ size_type_node, +++ index, size_one_node)); +++ tree loop_body = a68_pop_range (); +++ /* End of loop body. */ +++ +++ a68_add_stmt (fold_build1 (LOOP_EXPR, +++ void_type_node, +++ loop_body)); +++ a68_add_stmt (new_elements); +++ } +++ +++ new_elements = a68_pop_range (); +++ TREE_TYPE (new_elements) = element_pointer_type; +++ +++ /* Now build a descriptor pointing to the dupped elements and return it. +++ Note that the descriptor is always allocated on the stack. */ +++ dup = a68_row_value_raw (type, +++ a68_multiple_triplets (expr), +++ new_elements, +++ new_elements_size); +++ } +++ else if (!HAS_ROWS (m)) +++ { +++ /* Non-multiple values that do not contain rows do not need to be dupped, +++ since they can be just moved around using the semantics of +++ MODIFY_EXPR. */ +++ dup = expr; +++ } +++ else if (A68_STRUCT_TYPE_P (type)) +++ { +++ /* Since struct value can contain multiples and unions and other values +++ that require deep copy, we cannot simply rely on the C semantics of a +++ MODIFY_EXPR. */ +++ tree struct_type = type; +++ vec *ce = NULL; +++ +++ expr = save_expr (expr); +++ for (tree field = TYPE_FIELDS (struct_type); +++ field; +++ field = TREE_CHAIN (field)) +++ { +++ CONSTRUCTOR_APPEND_ELT (ce, field, +++ a68_low_dup (fold_build3 (COMPONENT_REF, +++ TREE_TYPE (field), +++ expr, +++ field, +++ NULL_TREE), +++ use_heap)); +++ } +++ dup = build_constructor (struct_type, ce); +++ } +++ else if (A68_UNION_TYPE_P (type)) +++ { +++ /* We need to recurse in whatever type corresponding to the active mode +++ in the united value. This shall be done at run-time by using a series +++ of +++ +++ IF overhead IS index of mode blah in union +++ THEN dup = dup_type (CTYPE (mode blah in union)) +++ FI +++ */ +++ +++ MOID_T *union_mode = a68_type_moid (type); +++ +++ a68_push_range (union_mode); +++ dup = a68_lower_tmpvar ("dup%", type, expr); +++ +++ tree cunion_type = TREE_TYPE (TREE_CHAIN (TYPE_FIELDS (type))); +++ tree field_decl = TYPE_FIELDS (cunion_type); +++ while (EQUIVALENT (union_mode) != NO_MOID) +++ union_mode = EQUIVALENT (union_mode); +++ for (PACK_T *pack = PACK (union_mode); pack != NO_PACK; FORWARD (pack)) +++ { +++ tree continue_label_decl = build_decl (UNKNOWN_LOCATION, +++ LABEL_DECL, +++ NULL, /* Set below. */ +++ void_type_node); +++ char *label_name = xasprintf ("continue%d%%", DECL_UID (continue_label_decl)); +++ DECL_NAME (continue_label_decl) = get_identifier (label_name); +++ free (label_name); +++ +++ a68_add_decl (continue_label_decl); +++ +++ a68_add_stmt (fold_build2 (TRUTH_ORIF_EXPR, +++ integer_type_node, +++ fold_build2 (EQ_EXPR, +++ integer_type_node, +++ a68_union_overhead (dup), +++ size_int (a68_united_mode_index (union_mode, MOID (pack)))), +++ fold_build2 (COMPOUND_EXPR, +++ integer_type_node, +++ build1 (GOTO_EXPR, void_type_node, continue_label_decl), +++ integer_zero_node))); +++ a68_add_stmt (fold_build2 (MODIFY_EXPR, type, +++ fold_build3 (COMPONENT_REF, +++ TREE_TYPE (field_decl), +++ a68_union_cunion (dup), +++ field_decl, +++ NULL_TREE), +++ a68_low_dup (fold_build3 (COMPONENT_REF, +++ TREE_TYPE (field_decl), +++ a68_union_cunion (dup), +++ field_decl, +++ NULL_TREE), +++ use_heap))); +++ a68_add_stmt (build1 (LABEL_EXPR, void_type_node, continue_label_decl)); +++ field_decl = TREE_CHAIN (field_decl); +++ } +++ +++ a68_add_stmt (dup); +++ dup = a68_pop_range (); +++ } +++ else +++ /* Not an Algol 68 value. */ +++ gcc_unreachable (); +++ +++ return dup; +++} +++ +++/* Lower code to ascribe the value yielded by the expression in RHS to the +++ defining identifier implied by the LHS, which is a VAR_DECL tree. MODE is +++ the mode of the value to be ascribed. */ +++ +++tree +++a68_low_ascription (MOID_T *mode, tree lhs, tree rhs) +++{ +++ gcc_assert (VAR_P (lhs)); +++ +++ tree type = CTYPE (mode); +++ if (IS (mode, PROC_SYMBOL)) +++ { +++ /* A pointer to a function, or a function, is expected at the right hand +++ side. We need a pointer for the left hand side.. */ +++ if (TREE_CODE (TREE_TYPE (rhs)) == FUNCTION_TYPE) +++ { +++ type = build_pointer_type (type); +++ rhs = fold_build1 (ADDR_EXPR, type, rhs); +++ } +++ } +++ +++ if (HAS_ROWS (mode)) +++ rhs = a68_low_dup (rhs); +++ return fold_build2 (MODIFY_EXPR, type, lhs, rhs); +++} +++ +++/* Perform an assignation of RHS to LHS. +++ +++ MODE_RHS is the mode of the rhs. +++ MODE_LHS is the mode of the lhs. +++ +++ MODE_LHS shall be REF [FLEX] MODE_LHS. */ +++ +++tree +++a68_low_assignation (NODE_T *p, +++ tree lhs, MOID_T *mode_lhs, +++ tree rhs, MOID_T *mode_rhs) +++{ +++ NODE_T *lhs_node = SUB (p); +++ tree assignation = NULL_TREE; +++ tree orig_rhs = rhs; +++ +++ if (IS_FLEXETY_ROW (mode_rhs)) +++ { +++ /* Make a deep copy of the rhs. Note that we have to use the heap +++ because the scope of the lhs may be older than the scope of the rhs. +++ XXX this can be ommitted if a68_multiple_copy_elems below supports +++ overlapping multiples. */ +++ if (HAS_ROWS (mode_rhs)) +++ rhs = a68_low_dup (rhs, true /* use_heap */); +++ rhs = save_expr (rhs); +++ +++ /* Determine whether the REF [FLEX] MODE_LHS is flexible. */ +++ if (SUB (mode_lhs) == M_STRING || IS_FLEX (SUB (mode_lhs))) +++ { +++ /* Assigning to a flexible name updates descriptor with new bounds +++ and also sets the elements to the dup of the rhs. No boundscheck +++ is peformed. XXX but bound checking in contained values may be +++ necessary, ghost elements. */ +++ if (POINTER_TYPE_P (TREE_TYPE (lhs)) +++ && TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)) +++ { +++ /* Make sure to not evaluate the expression yielding the pointer +++ more than once. */ +++ lhs = save_expr (lhs); +++ tree deref_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); +++ assignation = fold_build2 (COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), +++ deref_lhs, rhs), +++ lhs); +++ } +++ else +++ { +++ /* The lhs is either a variable or a component ref as a l-value. It +++ is ok to evaluate it as an r-value as well as doing so inroduces +++ no side-effects. */ +++ assignation = fold_build2 (COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), +++ lhs, rhs), +++ lhs); +++ } +++ } +++ else +++ { +++ /* Dereference the multiple at the left-hand side. This may require +++ indirection. */ +++ +++ tree effective_lhs; +++ if (POINTER_TYPE_P (TREE_TYPE (lhs))) +++ { +++ /* The name at the lhs is a pointer. */ +++ gcc_assert (TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)); +++ lhs = save_expr (lhs); +++ effective_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); +++ } +++ else +++ { +++ /* The name at the lhs is either a variable or a component ref as +++ a l-value. It is ok to evaluate it as an r-value as well as +++ doing so introduces no side-effects. */ +++ effective_lhs = lhs; +++ } +++ +++ /* Copy over the elements in a loop. The space occupied by the +++ previous elements stored in the lhs multiple will be recovered by +++ either stack shrinkage or garbage collected. */ +++ tree copy_elements = a68_multiple_copy_elems (mode_rhs, effective_lhs, rhs); +++ assignation = fold_build2 (COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ copy_elements, +++ lhs); +++ +++ /* Check the bounds of the multiple at the rhs to make sure they are +++ the same than the bounds of the multiple already referred by the +++ lhs. If the bounds don't match then emit a run-time error. */ +++ if (OPTION_BOUNDS_CHECKING (&A68_JOB)) +++ assignation = fold_build2 (COMPOUND_EXPR, +++ TREE_TYPE (assignation), +++ a68_multiple_bounds_check_equal (p, +++ effective_lhs, +++ rhs), +++ assignation); +++ +++ } +++ } +++ else +++ { +++ /* First make sure we got a pointer in the RHS in case it is a name. */ +++ rhs = a68_consolidate_ref (mode_rhs, rhs); +++ +++ /* The assignation implies copying the entire value being assigned, so +++ make sure we do a deep copy whenever needed. Note that we have to use +++ the heap because the scope of the lhs may be older than the scope of +++ the rhs. */ +++ if (HAS_ROWS (mode_rhs)) +++ rhs = a68_low_dup (rhs, true /* use_heap */); +++ +++ if (POINTER_TYPE_P (TREE_TYPE (lhs)) +++ && TREE_TYPE (TREE_TYPE (lhs)) == TREE_TYPE (rhs)) +++ { +++ /* If the left hand side is a pointer, deref it, but return the +++ pointer. Make sure to not evaluate the expression yielding the +++ pointer more than once. */ +++ lhs = save_expr (lhs); +++ tree deref_lhs = a68_checked_indirect_ref (lhs_node, lhs, mode_lhs); +++ assignation = fold_build2 (COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), +++ deref_lhs, rhs), +++ lhs); +++ } +++ else +++ { +++ /* Otherwise the lhs is either a variable or a component ref as an +++ l-value. It is ok to evaluate it as an r-value as well as doing +++ so introduces no side-effects. */ +++ assignation = fold_build2 (COMPOUND_EXPR, +++ TREE_TYPE (lhs), +++ fold_build2 (MODIFY_EXPR, TREE_TYPE (lhs), +++ lhs, rhs), +++ lhs); +++ } +++ } +++ +++ /* Since it is been assigned to a name, the rhs is no longer constant. */ +++ if (A68_ROW_TYPE_P (TREE_TYPE (orig_rhs)) || A68_STRUCT_TYPE_P (TREE_TYPE (orig_rhs))) +++ TREE_CONSTANT (orig_rhs) = 0; +++ return assignation; +++} +++ +++/* Build a tree that copies SIZE bytes from SRC into DST. */ +++ +++tree +++a68_lower_memcpy (tree dst, tree src, tree size) +++{ +++ return build_call_expr (builtin_decl_explicit (BUILT_IN_MEMCPY), 3, +++ dst, src, size); +++} +++ +++/* Build a tree that allocates SIZE bytes on the stack and returns a *TYPE +++ pointer to it. */ +++ +++tree +++a68_lower_alloca (tree type, tree size) +++{ +++ tree call = builtin_decl_explicit (BUILT_IN_ALLOCA_WITH_ALIGN); +++ call = build_call_expr_loc (UNKNOWN_LOCATION, call, 2, +++ size, +++ size_int (TYPE_ALIGN (type))); +++ call = fold_convert (build_pointer_type (type), call); +++ return call; +++} +++ +++ +++/* Build a tree that allocates SIZE bytes on the heap and returns a *TYPE +++ pointer to it. */ +++ +++tree +++a68_lower_malloc (tree type, tree size) +++{ +++ return fold_convert (build_pointer_type (type), +++ a68_build_libcall (A68_LIBCALL_MALLOC, ptr_type_node, +++ 1, size)); +++} +++ +++/* Build code for a temporary variable named NAME, of type TYPE and initialized +++ to INIT. Returns the decl node for the temporary. */ +++ +++tree +++a68_lower_tmpvar (const char *name, tree type, tree init) +++{ +++ tree tmpvar = build_decl (UNKNOWN_LOCATION, +++ VAR_DECL, +++ get_identifier (name), +++ type); +++ DECL_ARTIFICIAL (tmpvar) = 1; +++ DECL_IGNORED_P (tmpvar) = 1; +++ a68_add_decl (tmpvar); +++ a68_add_decl_expr (fold_build1 (DECL_EXPR, type, tmpvar)); +++ a68_add_stmt (fold_build2 (INIT_EXPR, type, tmpvar, init)); +++ return tmpvar; +++} +++ +++/* Build a FUNC_DECL for a top-level non-public function and return it. */ +++ +++tree +++a68_low_toplevel_func_decl (const char *name, tree fntype) +++{ +++ tree fndecl = build_decl (UNKNOWN_LOCATION, +++ FUNCTION_DECL, +++ NULL /* set below */, +++ fntype); +++ char *_name = xasprintf ("__ga68_%s%d", name, DECL_UID (fndecl)); +++ DECL_NAME (fndecl) = get_identifier (_name); +++ free (_name); +++ DECL_EXTERNAL (fndecl) = 0; +++ TREE_PUBLIC (fndecl) = 0; +++ TREE_STATIC (fndecl) = 1; +++ +++ return fndecl; +++} +++ +++/* Build a PARM_DECL whose context is TYPE with the given NAME. */ +++ +++tree +++a68_low_func_param (tree fndecl, const char *name, tree type) +++{ +++ tree param = build_decl (UNKNOWN_LOCATION, PARM_DECL, +++ get_identifier (name), type); +++ DECL_CONTEXT (param) = fndecl; +++ DECL_ARG_TYPE (param) = TREE_TYPE (param); +++ layout_decl (param, 0); +++ return param; +++} +++ +++/* Lower revelations, to calls to either its prelude or poslude. +++ This function always returns NULL_TREE. */ +++ +++static tree +++lower_revelations (NODE_T *p, LOW_CTX_T ctx, bool prelude) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ lower_revelations (SUB (p), ctx, prelude); +++ if (IS (p, MODULE_INDICANT)) +++ { +++ tree decl = build_decl (a68_get_node_location (p), +++ FUNCTION_DECL, +++ NULL_TREE, /* name, set below. */ +++ build_function_type (void_type_node, +++ void_list_node)); +++ DECL_NAME (decl) +++ = a68_get_mangled_identifier (prelude ? "_prelude" : "_postlude", +++ NSYMBOL (p)); +++ DECL_EXTERNAL (decl) = 1; +++ TREE_PUBLIC (decl) = 1; +++ a68_add_decl (decl); +++ a68_add_stmt (build_call_expr_loc (a68_get_node_location (p), +++ decl, 0)); +++ } +++ } +++ +++ return NULL_TREE; +++} +++ +++/* Lower a module text. +++ +++ module text : revelation part, def part, postlude part, fed symbol ; +++ revelation part, def part, fed symbol ; +++ def part, postlude part, fed symbol ; +++ def part, postlude part, fed symbol. +++ def part : def symbol, enquiry clause. +++ postlude part : postlude symbol, serial clause. +++ +++ Each module text lowers to two functions which are callable from outside the +++ current compilation unit: +++ +++ MODULENAME__prelude +++ MODULENAME__postlude +++ +++ Declarations inside prelude and postlude are lowered into global decl trees. +++ The non-PUBlicized ones are marked as static. +++ +++ This handler always returns NULL_TREE. */ +++ +++static tree +++lower_module_text (NODE_T *p, LOW_CTX_T ctx) +++{ +++ NODE_T *def_part = (IS (SUB (p), REVELATION_PART) +++ ? NEXT_SUB (p) +++ : SUB (p)); +++ NODE_T *revelation_part = (IS (SUB (p), REVELATION_PART) +++ ? SUB (p) +++ : NO_NODE); +++ NODE_T *postlude_part = (IS (NEXT (def_part), FED_SYMBOL) +++ ? NO_NODE +++ : NEXT (def_part)); +++ NODE_T *prelude_enquiry = NEXT_SUB (def_part); +++ +++ /* The global sentinel of the module, initialized to 0. */ +++ tree sentinel_decl = build_decl (UNKNOWN_LOCATION, +++ VAR_DECL, NULL /* name */, +++ sizetype); +++ char *sentinel_name = xasprintf ("%s__sentinel", ctx.module_definition_name); +++ DECL_NAME (sentinel_decl) = get_identifier (sentinel_name); +++ free (sentinel_name); +++ TREE_PUBLIC (sentinel_decl) = 0; +++ TREE_STATIC (sentinel_decl) = 1; +++ DECL_CONTEXT (sentinel_decl) = NULL_TREE; /* File scope. */ +++ make_decl_rtl (sentinel_decl); +++ varpool_node::finalize_decl (sentinel_decl); +++ +++ /* Create the prelude function. */ +++ tree prelude_decl = build_decl (a68_get_node_location (def_part), +++ FUNCTION_DECL, +++ NULL_TREE, /* name, set below. */ +++ build_function_type (void_type_node, +++ void_list_node)); +++ DECL_NAME (prelude_decl) +++ = a68_get_mangled_identifier ("_prelude", +++ ctx.module_definition_name); +++ DECL_EXTERNAL (prelude_decl) = 0; +++ TREE_PUBLIC (prelude_decl) = 1; +++ TREE_STATIC (prelude_decl) = 1; +++ +++ a68_push_function_range (prelude_decl, +++ void_type_node /* result_type */, true /* top_level */); +++ { +++ /* Increase sentinel. */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, +++ sizetype, +++ sentinel_decl, size_one_node)); +++ +++ a68_push_stmt_list (NULL); +++ { +++ a68_push_stmt_list (NULL); +++ { +++ /* Add calls to preludes of modules in REVELATION_PART. */ +++ lower_revelations (revelation_part, ctx, true /* prelude */); +++ a68_add_stmt (a68_lower_tree (prelude_enquiry, ctx)); +++ } +++ tree do_prelude = a68_pop_stmt_list (); +++ +++ a68_push_stmt_list (M_VOID); +++ tree do_nothing = a68_pop_stmt_list (); +++ +++ /* Do the prelude work only if sentinel is 1. */ +++ a68_add_stmt (fold_build3 (COND_EXPR, void_type_node, +++ fold_build2 (EQ_EXPR, sizetype, +++ sentinel_decl, size_one_node), +++ do_prelude, do_nothing)); +++ } +++ tree prelude_body = a68_pop_stmt_list (); +++ a68_pop_function_range (prelude_body); +++ } +++ +++ /* Create the postlude function. This is done even if the module definition +++ has no postlude in the source code. */ +++ +++ location_t postlude_loc = UNKNOWN_LOCATION; +++ if (postlude_part != NO_NODE) +++ postlude_loc = a68_get_node_location (postlude_part); +++ tree postlude_decl = build_decl (postlude_loc, +++ FUNCTION_DECL, +++ NULL_TREE, /* name, set below. */ +++ build_function_type (void_type_node, +++ void_list_node)); +++ DECL_NAME (postlude_decl) +++ = a68_get_mangled_identifier ("_postlude", +++ ctx.module_definition_name); +++ DECL_EXTERNAL (postlude_decl) = 0; +++ TREE_PUBLIC (postlude_decl) = 1; +++ TREE_STATIC (postlude_decl) = 1; +++ +++ a68_push_function_range (postlude_decl, +++ void_type_node /* result_type */, true /* top_level */); +++ { +++ /* Decrease sentinel. */ +++ a68_add_stmt (fold_build2 (POSTINCREMENT_EXPR, +++ sizetype, +++ sentinel_decl, size_one_node)); +++ +++ a68_push_stmt_list (NULL); +++ { +++ a68_push_stmt_list (NULL); +++ { +++ /* Add calls to postludes of modules in REVELATION_PART. */ +++ lower_revelations (revelation_part, ctx, false /* prelude */); +++ /* Perhaps the postlude code, if there is one. */ +++ NODE_T *postlude_serial = NO_NODE; +++ if (postlude_part != NO_NODE) +++ postlude_serial = NEXT_SUB (postlude_part); +++ if (postlude_serial != NO_NODE) +++ a68_add_stmt (a68_lower_tree (postlude_serial, ctx)); +++ } +++ tree do_postlude = a68_pop_stmt_list (); +++ +++ a68_push_stmt_list (M_VOID); +++ tree do_nothing = a68_pop_stmt_list (); +++ +++ /* Do the postlude work only if sentinel is 0. */ +++ a68_add_stmt (fold_build3 (COND_EXPR, void_type_node, +++ fold_build2 (EQ_EXPR, sizetype, +++ sentinel_decl, size_zero_node), +++ do_postlude, do_nothing)); +++ } +++ tree postlude_body = a68_pop_stmt_list (); +++ a68_pop_function_range (postlude_body); +++ } +++ +++ return NULL_TREE; +++} +++ +++/* Lower a set of module declarations. +++ +++ module declaration : module symbol, defining module, equals symbol, module text ; +++ module_declaration, comma symbol, defining module, +++ equals symbol, module text. +++ +++ Each module declaration lowers into the side-effects of emitting prelude and +++ postlude global functions, and emitting global declarations for the +++ declarations in the module definition prelude. +++ +++ This handler always returns NULL_TREE. */ +++ +++static tree +++lower_module_declaration (NODE_T *p, LOW_CTX_T ctx) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, DEFINING_MODULE_INDICANT)) +++ { +++ ctx.module_definition_name = NSYMBOL (p); +++ A68_MODULE_DEFINITION_DECLS->truncate (0); +++ vec_alloc (A68_MODULE_DEFINITION_DECLS, 16); +++ lower_module_text (NEXT (NEXT (p)), ctx); +++ for (tree d : A68_MODULE_DEFINITION_DECLS) +++ { +++ if (TREE_CODE (d) == FUNCTION_DECL) +++ cgraph_node::finalize_function (d, true); +++ else +++ { +++ rest_of_decl_compilation (d, 1, 0); +++ make_decl_rtl (d); +++ } +++ } +++ } +++ else +++ lower_module_declaration (SUB (p), ctx); +++ } +++ +++ return NULL_TREE; +++} +++ +++/* Lower a prelude packet. +++ +++ prelude packet : module declaration. +++ +++ This handler always returns NULL_TREE. */ +++ +++static tree +++lower_prelude_packet (NODE_T *p, LOW_CTX_T ctx) +++{ +++ a68_lower_tree (SUB (p), ctx); +++ return NULL_TREE; +++} +++ +++/* Lower a particular program. +++ +++ particular program : label, enclosed clause; enclosed clause. +++ +++ This handler always returns NULL_TREE. */ +++ +++static tree +++lower_particular_program (NODE_T *p, LOW_CTX_T ctx) +++{ +++ /* Create the main function that conforms the particular program. */ +++ tree main_decl = build_decl (a68_get_node_location (p), +++ FUNCTION_DECL, +++ get_identifier ("__algol68_main"), +++ build_function_type (void_type_node, +++ void_list_node)); +++ DECL_EXTERNAL (main_decl) = 0; +++ TREE_PUBLIC (main_decl) = 1; +++ TREE_STATIC (main_decl) = 1; +++ +++ a68_push_function_range (main_decl, +++ void_type_node /* result_type */); +++ +++ /* Lower the body of the function. */ +++ NODE_T *enclosed_clause = (IS (SUB (p), ENCLOSED_CLAUSE) +++ ? SUB (p) : NEXT (SUB (p))); +++ tree body_expr = a68_lower_tree (enclosed_clause, ctx); +++ a68_pop_function_range (body_expr); +++ return NULL_TREE; +++} +++ +++/* Lower a packet. +++ +++ packet : particular program ; prelude packet. +++*/ +++ +++static tree +++lower_packet (NODE_T *p, +++ LOW_CTX_T ctx) +++{ +++ return a68_lower_tree (SUB (p), ctx); +++} +++ +++/* Lower the given tree P using the given context CTX. */ +++ +++tree +++a68_lower_tree (NODE_T *p, LOW_CTX_T ctx) +++{ +++#if 0 +++ for (int i = 0; i < ctx.level; ++i) +++ printf (" "); +++ printf ("LOWER TREE: %d::%s\n", +++ NUMBER (p), a68_attribute_name (ATTRIBUTE (p))); +++#endif +++ ctx.level++; +++ +++ tree res = NULL_TREE; +++ +++ if (p == NO_NODE) +++ gcc_unreachable (); +++ +++ switch (ATTRIBUTE (p)) +++ { +++ case PACKET: +++ res = lower_packet (p, ctx); +++ break; +++ break; +++ case PRELUDE_PACKET: +++ res = lower_prelude_packet (p, ctx); +++ break; +++ case MODULE_DECLARATION: +++ res = lower_module_declaration (p, ctx); +++ break; +++ case MODULE_TEXT: +++ res = lower_module_text (p, ctx); +++ break; +++ case PARTICULAR_PROGRAM: +++ res = lower_particular_program (p, ctx); +++ break; +++ /* Clauses */ +++ case ENCLOSED_CLAUSE: +++ res = a68_lower_enclosed_clause (p, ctx); +++ break; +++ case CLOSED_CLAUSE: +++ res = a68_lower_closed_clause (p, ctx); +++ break; +++ case ACCESS_CLAUSE: +++ res = a68_lower_access_clause (p, ctx); +++ break; +++ case PARALLEL_CLAUSE: +++ res = a68_lower_parallel_clause (p, ctx); +++ break; +++ case COLLATERAL_CLAUSE: +++ res = a68_lower_collateral_clause (p, ctx); +++ break; +++ case UNIT_LIST: +++ res = a68_lower_unit_list (p, ctx); +++ break; +++ case CONDITIONAL_CLAUSE: +++ res = a68_lower_conditional_clause (p, ctx); +++ break; +++ case ENQUIRY_CLAUSE: +++ res = a68_lower_enquiry_clause (p, ctx); +++ break; +++ case CASE_CLAUSE: +++ res = a68_lower_case_clause (p, ctx); +++ break; +++ case CONFORMITY_CLAUSE: +++ res = a68_lower_conformity_clause (p, ctx); +++ break; +++ case LOOP_CLAUSE: +++ res = a68_lower_loop_clause (p, ctx); +++ break; +++ case SERIAL_CLAUSE: +++ res = a68_lower_serial_clause (p, ctx); +++ break; +++ case INITIALISER_SERIES: +++ res = a68_lower_initialiser_series (p, ctx); +++ break; +++ case EXIT_SYMBOL: +++ res = a68_lower_completer (p, ctx); +++ break; +++ case LABELED_UNIT: +++ res = a68_lower_labeled_unit (p, ctx); +++ break; +++ case LABEL: +++ res = a68_lower_label (p, ctx); +++ break; +++ /* Declarations. */ +++ case DECLARATION_LIST: +++ res = a68_lower_declaration_list (p, ctx); +++ break; +++ case DECLARER: +++ res = a68_lower_declarer (p, ctx); +++ break; +++ case IDENTITY_DECLARATION: +++ res = a68_lower_identity_declaration (p, ctx); +++ break; +++ case VARIABLE_DECLARATION: +++ res = a68_lower_variable_declaration (p, ctx); +++ break; +++ case PROCEDURE_DECLARATION: +++ res = a68_lower_procedure_declaration (p, ctx); +++ break; +++ case PROCEDURE_VARIABLE_DECLARATION: +++ res = a68_lower_procedure_variable_declaration (p, ctx); +++ break; +++ case PRIORITY_DECLARATION: +++ res = a68_lower_priority_declaration (p, ctx); +++ break; +++ case BRIEF_OPERATOR_DECLARATION: +++ res = a68_lower_brief_operator_declaration (p, ctx); +++ break; +++ case OPERATOR_DECLARATION: +++ res = a68_lower_operator_declaration (p, ctx); +++ break; +++ case MODE_DECLARATION: +++ res = a68_lower_mode_declaration (p, ctx); +++ break; +++ /* Units. */ +++ case UNIT: +++ res = a68_lower_unit (p, ctx); +++ break; +++ case ROUTINE_TEXT: +++ res = a68_lower_routine_text (p, ctx); +++ break; +++ case ASSIGNATION: +++ res = a68_lower_assignation (p, ctx); +++ break; +++ case TERTIARY: +++ res = a68_lower_tertiary (p, ctx); +++ break; +++ case MONADIC_FORMULA: +++ res = a68_lower_monadic_formula (p, ctx); +++ break; +++ case FORMULA: +++ res = a68_lower_formula (p, ctx); +++ break; +++ case SECONDARY: +++ res = a68_lower_secondary (p, ctx); +++ break; +++ case SLICE: +++ res = a68_lower_slice (p, ctx); +++ break; +++ case SELECTION: +++ res = a68_lower_selection (p, ctx); +++ break; +++ case PRIMARY: +++ res = a68_lower_primary (p, ctx); +++ break; +++ case GENERATOR: +++ res = a68_lower_generator (p, ctx); +++ break; +++ case CALL: +++ res = a68_lower_call (p, ctx); +++ break; +++ case CAST: +++ res = a68_lower_cast (p, ctx); +++ break; +++ case AND_FUNCTION: +++ case OR_FUNCTION: +++ res = a68_lower_logic_function (p, ctx); +++ break; +++ case IDENTITY_RELATION: +++ res = a68_lower_identity_relation (p, ctx); +++ break; +++ case EMPTY_SYMBOL: +++ res = a68_lower_empty (p, ctx); +++ break; +++ case NIHIL: +++ res = a68_lower_nihil (p, ctx); +++ break; +++ case SKIP: +++ res = a68_lower_skip (p, ctx); +++ break; +++ case DENOTATION: +++ res = a68_lower_denotation (p, ctx); +++ break; +++ case IDENTIFIER: +++ res = a68_lower_identifier (p, ctx); +++ break; +++ /* Coercions. */ +++ case ROWING: +++ res = a68_lower_rowing (p, ctx); +++ break; +++ case WIDENING: +++ res = a68_lower_widening (p, ctx); +++ break; +++ case DEPROCEDURING: +++ res = a68_lower_deproceduring (p, ctx); +++ break; +++ case PROCEDURING: +++ res = a68_lower_proceduring (p, ctx); +++ break; +++ case VOIDING: +++ res = a68_lower_voiding (p, ctx); +++ break; +++ case DEREFERENCING: +++ res = a68_lower_dereferencing (p, ctx); +++ break; +++ /* Others. */ +++ case UNITING: +++ res = a68_lower_uniting (p, ctx); +++ break; +++ case JUMP: +++ res = a68_lower_jump (p, ctx); +++ break; +++ case PARAMETER: +++ res = a68_lower_parameter (p, ctx); +++ break; +++ case PARAMETER_LIST: +++ res = a68_lower_parameter_list (p, ctx); +++ break; +++ case PARAMETER_PACK: +++ res = a68_lower_parameter_pack (p, ctx); +++ break; +++ case OPERATOR: +++ res = a68_lower_operator (p, ctx); +++ break; +++ case ASSERTION: +++ res = a68_lower_assertion (p, ctx); +++ break; +++ case STOP: +++ res = NULL_TREE; +++ break; +++ default: +++ fatal_error (a68_get_node_location (p), "cannot lower node %s", +++ a68_attribute_name (ATTRIBUTE (p))); +++ gcc_unreachable (); +++ break; +++ } +++ +++ return res; +++} +++ +++/* Lower an Algol 68 complete parse tree to a GENERIC tree. */ +++ +++tree +++a68_lower_top_tree (NODE_T *p) +++{ +++ LOW_CTX_T top_ctx; +++ +++ top_ctx.declarer = NULL; +++ top_ctx.proc_decl_identifier = NO_NODE; +++ top_ctx.proc_decl_operator = false; +++ top_ctx.level = 0; +++ top_ctx.module_definition_name = NULL; +++ vec_alloc (A68_MODULE_DEFINITION_DECLS, 16); +++ return a68_lower_tree (p, top_ctx); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-moids-diagnostics.cc ++@@ -0,0 +1,281 @@ +++/* MOID diagnostics routines. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++/* Give accurate error message. */ +++ +++const char * +++a68_mode_error_text (NODE_T *n, MOID_T *p, MOID_T *q, int context, int deflex, int depth) +++{ +++#define TAIL(z) (&(z)[strlen (z)]) +++#define ACTUAL_SNPRINTF_SIZE ((SNPRINTF_SIZE - len)) +++ static BUFFER txt; +++ size_t len; +++ if (depth == 1) +++ txt[0] = '\0'; +++ if (IS (p, SERIES_MODE)) +++ { +++ len = strlen (txt); +++ PACK_T *u = PACK (p); +++ +++ int N = 0; +++ if (u == NO_PACK) +++ { +++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) +++ gcc_unreachable (); +++ N++; +++ } +++ else +++ { +++ for (; u != NO_PACK; FORWARD (u)) +++ { +++ if (MOID (u) != NO_MOID) +++ { +++ if (IS (MOID (u), SERIES_MODE)) +++ (void) a68_mode_error_text (n, MOID (u), q, context, deflex, depth + 1); +++ else if (!a68_is_coercible (MOID (u), q, context, deflex)) +++ { +++ len = strlen (txt); +++ if (len > BUFFER_SIZE / 2) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) +++ gcc_unreachable (); +++ N++; +++ } +++ else +++ { +++ if (len > 0) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) +++ gcc_unreachable (); +++ N++; +++ len = strlen (txt); +++ } +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%>", +++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) +++ gcc_unreachable (); +++ N++; +++ } +++ } +++ } +++ } +++ } +++ if (depth == 1) +++ { +++ len = strlen (txt); +++ if (N == 0) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "mode") < 0) +++ gcc_unreachable (); +++ len = strlen (txt); +++ } +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %%<%s%%>", +++ a68_moid_to_string (q, MOID_ERROR_WIDTH, n)) < 0) +++ gcc_unreachable (); +++ } +++ } +++ else if (IS (p, STOWED_MODE) && IS_FLEX (q)) +++ { +++ PACK_T *u = PACK (p); +++ len = strlen (txt); +++ if (u == NO_PACK) +++ { +++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) +++ gcc_unreachable (); +++ } +++ else +++ { +++ for (; u != NO_PACK; FORWARD (u)) +++ { +++ if (!a68_is_coercible (MOID (u), SLICE (SUB (q)), context, deflex)) +++ { +++ len = strlen (txt); +++ if (len > BUFFER_SIZE / 2) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) +++ gcc_unreachable (); +++ } +++ else +++ { +++ if (len > 0) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) +++ gcc_unreachable (); +++ len = strlen (txt); +++ } +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%s", +++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) +++ gcc_unreachable (); +++ } +++ } +++ } +++ len = strlen (txt); +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %%<%s%%>", +++ a68_moid_to_string (SLICE (SUB (q)), MOID_ERROR_WIDTH, n)) < 0) +++ gcc_unreachable (); +++ } +++ } +++ else if (IS (p, STOWED_MODE) && IS (q, ROW_SYMBOL)) +++ { +++ PACK_T *u = PACK (p); +++ len = strlen (txt); +++ if (u == NO_PACK) +++ { +++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) +++ gcc_unreachable (); +++ } +++ else +++ { +++ for (; u != NO_PACK; FORWARD (u)) +++ { +++ if (!a68_is_coercible (MOID (u), SLICE (q), context, deflex)) +++ { +++ len = strlen (txt); +++ if (len > BUFFER_SIZE / 2) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) +++ gcc_unreachable (); +++ } +++ else +++ { +++ if (len > 0) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) +++ gcc_unreachable (); +++ len = strlen (txt); +++ } +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%>", +++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n)) < 0) +++ gcc_unreachable (); +++ } +++ } +++ } +++ len = strlen (txt); +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " cannot be coerced to %s", +++ a68_moid_to_string (SLICE (q), MOID_ERROR_WIDTH, n)) < 0) +++ gcc_unreachable (); +++ } +++ } +++ else if (IS (p, STOWED_MODE) && (IS (q, PROC_SYMBOL) || IS (q, STRUCT_SYMBOL))) +++ { +++ PACK_T *u = PACK (p), *v = PACK (q); +++ len = strlen (txt); +++ if (u == NO_PACK) +++ { +++ if (snprintf (txt, ACTUAL_SNPRINTF_SIZE, "empty mode-list") < 0) +++ gcc_unreachable (); +++ } +++ else +++ { +++ for (; u != NO_PACK && v != NO_PACK; FORWARD (u), FORWARD (v)) +++ { +++ if (!a68_is_coercible (MOID (u), MOID (v), context, deflex)) +++ { +++ len = strlen (txt); +++ if (len > BUFFER_SIZE / 2) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " etcetera") < 0) +++ gcc_unreachable (); +++ } +++ else +++ { +++ if (len > 0) +++ { +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, " and ") < 0) +++ gcc_unreachable (); +++ len = strlen (txt); +++ } +++ if (snprintf (TAIL (txt), ACTUAL_SNPRINTF_SIZE, "%%<%s%%> cannot be coerced to %%<%s%%>", +++ a68_moid_to_string (MOID (u), MOID_ERROR_WIDTH, n), +++ a68_moid_to_string (MOID (v), MOID_ERROR_WIDTH, n)) < 0) +++ gcc_unreachable (); +++ } +++ } +++ } +++ } +++ } +++ return txt; +++#undef TAIL +++#undef ACTUAL_SNPRINTF_SIZE +++} +++ +++/* Cannot coerce error. */ +++ +++void +++a68_cannot_coerce (NODE_T *p, MOID_T *from, MOID_T *to, int context, int deflex, int att) +++{ +++ const char *txt = a68_mode_error_text (p, from, to, context, deflex, 1); +++ +++ if (att == STOP) +++ { +++ if (strlen (txt) == 0) +++ a68_error (p, "M cannot be coerced to M in C context", from, to, context); +++ else +++ a68_error (p, "Y in C context", txt, context); +++ } +++ else +++ { +++ if (strlen (txt) == 0) +++ a68_error (p, "M cannot be coerced to M in C-A", from, to, context, att); +++ else +++ a68_error (p, "Y in C-A", txt, context, att); +++ } +++} +++ +++/* Give a warning when a value is silently discarded. */ +++ +++void +++a68_warn_for_voiding (NODE_T *p, SOID_T *x, SOID_T *y, int c) +++{ +++ (void) c; +++ +++ if (CAST (x) == false) +++ { +++ if (MOID (x) == M_VOID && MOID (y) != M_ERROR && !(MOID (y) == M_VOID || !a68_is_nonproc (MOID (y)))) +++ { +++ if (IS (p, FORMULA)) +++ a68_warning (p, OPT_Wvoiding, "value of M @ will be voided", MOID (y)); +++ else +++ a68_warning (p, OPT_Wvoiding, "value of M @ will be voided", MOID (y)); +++ } +++ } +++} +++ +++/* Warn for things that are likely unintended. */ +++ +++void +++a68_semantic_pitfall (NODE_T *p, MOID_T *m, int c, int u) +++{ +++ /* semantic_pitfall: warn for things that are likely unintended, for instance +++ REF INT i := LOC INT := 0, which should probably be +++ REF INT i = LOC INT := 0. */ +++ if (IS (p, u)) +++ a68_warning (p, 0, "possibly unintended M A in M A", +++ MOID (p), u, m, c); +++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) +++ a68_semantic_pitfall (SUB (p), m, c, u); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-moids-misc.cc ++@@ -0,0 +1,1396 @@ +++/* Miscellaneous MOID routines. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++/* +++ * MODE checker routines. +++ */ +++ +++/* Absorb nested series modes recursively. */ +++ +++void +++a68_absorb_series_pack (MOID_T **p) +++{ +++ bool siga; +++ +++ do +++ { +++ PACK_T *z = NO_PACK; +++ +++ siga = false; +++ for (PACK_T *t = PACK (*p); t != NO_PACK; FORWARD (t)) +++ { +++ if (MOID (t) != NO_MOID && IS (MOID (t), SERIES_MODE)) +++ { +++ siga = true; +++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) +++ a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); +++ } +++ else +++ a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); +++ } +++ PACK (*p) = z; +++ } +++ while (siga); +++} +++ +++/* Make SERIES (u, v). */ +++ +++MOID_T * +++a68_make_series_from_moids (MOID_T *u, MOID_T *v) +++{ +++ MOID_T *x = a68_new_moid (); +++ +++ ATTRIBUTE (x) = SERIES_MODE; +++ a68_add_mode_to_pack (&(PACK (x)), u, NO_TEXT, NODE (u)); +++ a68_add_mode_to_pack (&(PACK (x)), v, NO_TEXT, NODE (v)); +++ a68_absorb_series_pack (&x); +++ DIM (x) = a68_count_pack_members (PACK (x)); +++ (void) a68_register_extra_mode (&TOP_MOID (&A68_JOB), x); +++ if (DIM (x) == 1) +++ return MOID (PACK (x)); +++ else +++ return x; +++} +++ +++/* Absorb firmly related unions in mode. +++ +++ For instance invalid UNION (PROC REF UNION (A, B), A, B) -> valid +++ UNION (A, B), which is used in balancing conformity clauses. */ +++ +++MOID_T * +++a68_absorb_related_subsets (MOID_T * m) +++{ +++ /* For instance invalid UNION (PROC REF UNION (A, B), A, B) -> valid UNION +++ (A, B), which is used in balancing conformity clauses. */ +++ bool siga; +++ +++ do +++ { +++ PACK_T *u = NO_PACK; +++ +++ siga = false; +++ for (PACK_T *v = PACK (m); v != NO_PACK; FORWARD (v)) +++ { +++ MOID_T *n = a68_depref_completely (MOID (v)); +++ +++ if (IS (n, UNION_SYMBOL) && a68_is_subset (n, m, SAFE_DEFLEXING)) +++ { +++ /* Unpack it. */ +++ for (PACK_T *w = PACK (n); w != NO_PACK; FORWARD (w)) +++ a68_add_mode_to_pack (&u, MOID (w), NO_TEXT, NODE (w)); +++ siga = true; +++ } +++ else +++ a68_add_mode_to_pack (&u, MOID (v), NO_TEXT, NODE (v)); +++ } +++ PACK (m) = a68_absorb_union_pack (u); +++ } +++ while (siga); +++ return m; +++} +++ +++/* Absorb nested series and united modes recursively. */ +++ +++void +++a68_absorb_series_union_pack (MOID_T **p) +++{ +++ bool siga; +++ +++ do +++ { +++ PACK_T *z = NO_PACK; +++ +++ siga = false; +++ for (PACK_T *t = PACK (*p); t != NO_PACK; FORWARD (t)) +++ { +++ if (MOID (t) != NO_MOID && (IS (MOID (t), SERIES_MODE) || IS (MOID (t), UNION_SYMBOL))) +++ { +++ siga = true; +++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) +++ a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); +++ } +++ else +++ a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); +++ } +++ PACK (*p) = z; +++ } +++ while (siga); +++} +++ +++/* Make united mode, from mode that is a SERIES (..). */ +++ +++MOID_T * +++a68_make_united_mode (MOID_T *m) +++{ +++ if (m == NO_MOID) +++ return M_ERROR; +++ else if (ATTRIBUTE (m) != SERIES_MODE) +++ return m; +++ +++ /* Do not unite a single UNION. */ +++ if (DIM (m) == 1 && IS (MOID (PACK (m)), UNION_SYMBOL)) +++ return MOID (PACK (m)); +++ +++ /* Straighten the series. */ +++ a68_absorb_series_union_pack (&m); +++ /* Copy the series into a UNION. */ +++ MOID_T *u = a68_new_moid (); +++ ATTRIBUTE (u) = UNION_SYMBOL; +++ PACK (u) = NO_PACK; +++ for (PACK_T *w = PACK (m); w != NO_PACK; FORWARD (w)) +++ a68_add_mode_to_pack (&(PACK (u)), MOID (w), NO_TEXT, NODE (m)); +++ +++ /* Absorb and contract the new UNION. */ +++ a68_absorb_series_union_pack (&u); +++ DIM (u) = a68_count_pack_members (PACK (u)); +++ PACK (u) = a68_absorb_union_pack (PACK (u)); +++ a68_contract_union (u); +++ DIM (u) = a68_count_pack_members (PACK (u)); +++ /* A UNION of one mode is that mode itself. */ +++ if (DIM (u) == 1) +++ return MOID (PACK (u)); +++ else +++ return a68_register_extra_mode (&TOP_MOID (&A68_JOB), u); +++} +++ +++/* Make SOID data structure. */ +++ +++void +++a68_make_soid (SOID_T *s, int sort, MOID_T *type, int attribute) +++{ +++ ATTRIBUTE (s) = attribute; +++ SORT (s) = sort; +++ MOID (s) = type; +++ CAST (s) = false; +++} +++ +++/* Whether mode is not well defined. */ +++ +++bool +++a68_is_mode_isnt_well (MOID_T *p) +++{ +++ if (p == NO_MOID) +++ return true; +++ else if (!A68_IF_MODE_IS_WELL (p)) +++ return true; +++ else if (PACK (p) != NO_PACK) +++ { +++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) +++ { +++ if (!A68_IF_MODE_IS_WELL (MOID (q))) +++ return true; +++ } +++ } +++ return false; +++} +++ +++/* Add SOID data to free chain. */ +++ +++void +++a68_free_soid_list (SOID_T *root) +++{ +++ if (root != NO_SOID) +++ { +++ SOID_T *q = root; +++ +++ for (; NEXT (q) != NO_SOID; FORWARD (q)) +++ ; +++ NEXT (q) = A68 (top_soid_list); +++ A68 (top_soid_list) = root; +++ } +++} +++ +++/* Add SOID data structure to soid list. */ +++ +++void +++a68_add_to_soid_list (SOID_T **root, NODE_T *where, SOID_T *soid) +++{ +++ if (*root != NO_SOID) +++ a68_add_to_soid_list (&(NEXT (*root)), where, soid); +++ else +++ { +++ SOID_T *new_one; +++ +++ if (A68 (top_soid_list) == NO_SOID) +++ new_one = (SOID_T *) ggc_cleared_alloc (); +++ else +++ { +++ new_one = A68 (top_soid_list); +++ FORWARD (A68 (top_soid_list)); +++ } +++ +++ a68_make_soid (new_one, SORT (soid), MOID (soid), 0); +++ NODE (new_one) = where; +++ NEXT (new_one) = NO_SOID; +++ *root = new_one; +++ } +++} +++ +++/* Pack soids in moid, gather resulting moids from terminators in a clause. */ +++ +++MOID_T * +++a68_pack_soids_in_moid (SOID_T *top_sl, int attribute) +++{ +++ MOID_T *x = a68_new_moid (); +++ PACK_T *t, **p; +++ +++ ATTRIBUTE (x) = attribute; +++ DIM (x) = 0; +++ SUB (x) = NO_MOID; +++ EQUIVALENT (x) = NO_MOID; +++ SLICE (x) = NO_MOID; +++ DEFLEXED (x) = NO_MOID; +++ NAME (x) = NO_MOID; +++ NEXT (x) = NO_MOID; +++ PACK (x) = NO_PACK; +++ p = &(PACK (x)); +++ for (; top_sl != NO_SOID; FORWARD (top_sl)) +++ { +++ t = a68_new_pack (); +++ MOID (t) = MOID (top_sl); +++ TEXT (t) = NO_TEXT; +++ NODE (t) = NODE (top_sl); +++ NEXT (t) = NO_PACK; +++ DIM (x)++; +++ *p = t; +++ p = &NEXT (t); +++ } +++ (void) a68_register_extra_mode (&TOP_MOID (&A68_JOB), x); +++ return x; +++} +++ +++/* Whether P is compatible with Q. */ +++ +++bool +++a68_is_equal_modes (MOID_T *p, MOID_T *q, int deflex) +++{ +++ if (deflex == FORCE_DEFLEXING) +++ return DEFLEX (p) == DEFLEX (q); +++ else if (deflex == ALIAS_DEFLEXING) +++ { +++ if (IS (p, REF_SYMBOL) && IS (q, REF_SYMBOL)) +++ return (p == q +++ || a68_prove_moid_equivalence (p, q) +++ || a68_prove_moid_equivalence (DEFLEX (p), q) +++ || DEFLEX (p) == q); +++ else if (!IS (p, REF_SYMBOL) && !IS (q, REF_SYMBOL)) +++ return (DEFLEX (p) == DEFLEX (q) +++ || a68_prove_moid_equivalence (DEFLEX (p), DEFLEX (q))); +++ } +++ else if (deflex == SAFE_DEFLEXING) +++ { +++ if (!IS (p, REF_SYMBOL) && !IS (q, REF_SYMBOL)) +++ return (DEFLEX (p) == DEFLEX (q) +++ || a68_prove_moid_equivalence (DEFLEX (p), DEFLEX (q))); +++ } +++ +++ return (p == q || a68_prove_moid_equivalence (p, q)); +++} +++ +++/* Whether mode is deprefable, i.e. whether it can be either deferred or +++ deprocedured. */ +++ +++bool +++a68_is_deprefable (MOID_T *p) +++{ +++ if (IS_REF (p)) +++ return true; +++ else +++ return (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK); +++} +++ +++/* Deref or deproc the mode P once. */ +++ +++MOID_T * +++a68_depref_once (MOID_T *p) +++{ +++ if (IS_REF_FLEX (p)) +++ return SUB_SUB (p); +++ else if (IS_REF (p)) +++ return SUB (p); +++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) +++ return SUB (p); +++ else +++ return NO_MOID; +++} +++ +++/* Depref mode completely. */ +++ +++MOID_T * +++a68_depref_completely (MOID_T *p) +++{ +++ while (a68_is_deprefable (p)) +++ p = a68_depref_once (p); +++ return p; +++} +++ +++/* Deproc_completely. */ +++ +++MOID_T * +++a68_deproc_completely (MOID_T *p) +++{ +++ while (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) +++ p = a68_depref_once (p); +++ return p; +++} +++ +++/* Depref rows. */ +++ +++MOID_T * +++a68_depref_rows (MOID_T *p, MOID_T *q) +++{ +++ if (q == M_ROWS) +++ { +++ while (a68_is_deprefable (p)) +++ p = a68_depref_once (p); +++ return p; +++ } +++ else +++ return q; +++} +++ +++/* Derow mode, strip FLEX and BOUNDS. */ +++ +++MOID_T * +++a68_derow (MOID_T *p) +++{ +++ if (IS_ROW (p) || IS_FLEX (p)) +++ return a68_derow (SUB (p)); +++ else +++ return p; +++} +++ +++/* Whether rows type. */ +++ +++bool +++a68_is_rows_type (MOID_T *p) +++{ +++ switch (ATTRIBUTE (p)) +++ { +++ case ROW_SYMBOL: +++ case FLEX_SYMBOL: +++ return true; +++ case UNION_SYMBOL: +++ { +++ PACK_T *t = PACK (p); +++ bool siga = true; +++ while (t != NO_PACK && siga) +++ { +++ siga &= a68_is_rows_type (MOID (t)); +++ FORWARD (t); +++ } +++ return siga; +++ } +++ default: +++ return false; +++ } +++} +++ +++/* Whether mode is PROC (REF FILE) VOID or FORMAT. */ +++ +++bool +++a68_is_proc_ref_file_void_or_format (MOID_T *p) +++{ +++ if (p == M_PROC_REF_FILE_VOID) +++ return true; +++ else if (p == M_FORMAT) +++ return true; +++ else +++ return false; +++} +++ +++/* Whether mode can be transput. */ +++ +++bool +++a68_is_transput_mode (MOID_T *p, char rw) +++{ +++ if (p == M_INT) +++ return true; +++ else if (p == M_SHORT_INT) +++ return true; +++ else if (p == M_SHORT_SHORT_INT) +++ return true; +++ else if (p == M_LONG_INT) +++ return true; +++ else if (p == M_LONG_LONG_INT) +++ return true; +++ else if (p == M_REAL) +++ return true; +++ else if (p == M_LONG_REAL) +++ return true; +++ else if (p == M_LONG_LONG_REAL) +++ return true; +++ else if (p == M_BOOL) +++ return true; +++ else if (p == M_CHAR) +++ return true; +++ else if (p == M_BITS) +++ return true; +++ else if (p == M_SHORT_BITS) +++ return true; +++ else if (p == M_SHORT_SHORT_BITS) +++ return true; +++ else if (p == M_LONG_BITS) +++ return true; +++ else if (p == M_LONG_LONG_BITS) +++ return true; +++ else if (p == M_COMPLEX) +++ return true; +++ else if (p == M_LONG_COMPLEX) +++ return true; +++ else if (p == M_LONG_LONG_COMPLEX) +++ return true; +++ else if (p == M_ROW_CHAR) +++ return true; +++ else if (p == M_STRING) +++ return true; +++ else if (IS (p, UNION_SYMBOL) || IS (p, STRUCT_SYMBOL)) +++ { +++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) +++ { +++ if (!(a68_is_transput_mode (MOID (q), rw) +++ || a68_is_proc_ref_file_void_or_format (MOID (q)))) +++ return false; +++ } +++ return true; +++ } +++ else if (IS_FLEX (p)) +++ { +++ if (SUB (p) == M_ROW_CHAR) +++ return true; +++ else +++ return (rw == 'w' ? a68_is_transput_mode (SUB (p), rw) : false); +++ } +++ else if (IS_ROW (p)) +++ return (a68_is_transput_mode (SUB (p), rw) +++ || a68_is_proc_ref_file_void_or_format (SUB (p))); +++ else +++ return false; +++} +++ +++/* Whether mode is printable. */ +++ +++bool +++a68_is_printable_mode (MOID_T *p) +++{ +++ if (a68_is_proc_ref_file_void_or_format (p)) +++ return true; +++ else +++ return a68_is_transput_mode (p, 'w'); +++} +++ +++/* Whether mode is readable. */ +++ +++bool +++a68_is_readable_mode (MOID_T *p) +++{ +++ if (a68_is_proc_ref_file_void_or_format (p)) +++ return true; +++ else if (IS_REF (p)) +++ return a68_is_transput_mode (SUB (p), 'r'); +++ else if (IS_UNION (p)) +++ { +++ for (PACK_T *q = PACK (p); q != NO_PACK; FORWARD (q)) +++ { +++ if (!IS_REF (MOID (q))) +++ return false; +++ else if (!a68_is_transput_mode (SUB (MOID (q)), 'r')) +++ return false; +++ } +++ return true; +++ } +++ else +++ return false; +++} +++ +++/* Whether name struct. */ +++ +++bool +++a68_is_name_struct (MOID_T *p) +++{ +++ return (NAME (p) != NO_MOID ? IS (DEFLEX (SUB (p)), STRUCT_SYMBOL) : false); +++} +++ +++/* Yield mode to unite to. */ +++ +++MOID_T * +++a68_unites_to (MOID_T *m, MOID_T *u) +++{ +++ /* Uniting U (m). */ +++ MOID_T *v = NO_MOID; +++ +++ if (u == M_SIMPLIN || u == M_SIMPLOUT) +++ return m; +++ +++ for (PACK_T *p = PACK (u); p != NO_PACK; FORWARD (p)) +++ { +++ /* Prefer []->[] over []->FLEX []. */ +++ if (m == MOID (p)) +++ v = MOID (p); +++ else if (v == NO_MOID && DEFLEX (m) == DEFLEX (MOID (p))) +++ v = MOID (p); +++ } +++ return v; +++} +++ +++/* Whether moid in pack. */ +++ +++bool +++a68_is_moid_in_pack (MOID_T *u, PACK_T *v, int deflex) +++{ +++ for (; v != NO_PACK; FORWARD (v)) +++ { +++ if (a68_is_equal_modes (u, MOID (v), deflex)) +++ return true; +++ } +++ +++ return false; +++} +++ +++/* Whether a rows type in pack. */ +++ +++bool +++a68_is_rows_in_pack (PACK_T *v) +++{ +++ for (; v != NO_PACK; FORWARD (v)) +++ { +++ if (a68_is_rows_type (MOID (v))) +++ return true; +++ } +++ +++ return false; +++} +++ +++/* Whether P is a subset of Q. */ +++ +++bool +++a68_is_subset (MOID_T *p, MOID_T *q, int deflex) +++{ +++ bool j =true; +++ +++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) +++ j = (j && a68_is_moid_in_pack (MOID (u), PACK (q), deflex)); +++ +++ return j; +++} +++ +++/* Whether P can be united to UNION Q. */ +++ +++bool +++a68_is_unitable (MOID_T *p, MOID_T *q, int deflex) +++{ +++ if (IS (q, UNION_SYMBOL)) +++ { +++ if (IS (p, UNION_SYMBOL)) +++ return a68_is_subset (p, q, deflex); +++ else if (p == M_ROWS) +++ return a68_is_rows_in_pack (PACK (q)); +++ else +++ return a68_is_moid_in_pack (p, PACK (q), deflex); +++ } +++ +++ return false; +++} +++ +++/* Whether all or some components of U can be firmly coerced to a component +++ mode of V.. */ +++ +++void +++a68_investigate_firm_relations (PACK_T *u, PACK_T *v, bool *all, bool *some) +++{ +++ *all = true; +++ *some = true; +++ for (; v != NO_PACK; FORWARD (v)) +++ { +++ bool k = false; +++ +++ for (PACK_T *w = u; w != NO_PACK; FORWARD (w)) +++ k |= a68_is_coercible (MOID (w), MOID (v), FIRM, FORCE_DEFLEXING); +++ *some |= k; +++ *all &= k; +++ } +++} +++ +++/* Whether there is a soft path from P to Q. */ +++ +++bool +++a68_is_softly_coercible (MOID_T *p, MOID_T *q, int deflex) +++{ +++ if (a68_is_equal_modes (p, q, deflex)) +++ return true; +++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) +++ return a68_is_softly_coercible (SUB (p), q, deflex); +++ else +++ return false; +++} +++ +++/* Whether there is a weak path from P to Q. */ +++ +++bool +++a68_is_weakly_coercible (MOID_T * p, MOID_T * q, int deflex) +++{ +++ if (a68_is_equal_modes (p, q, deflex)) +++ return true; +++ else if (a68_is_deprefable (p)) +++ return a68_is_weakly_coercible (a68_depref_once (p), q, deflex); +++ else +++ return false; +++} +++ +++/* Whether there is a meek path from P to Q. */ +++ +++bool +++a68_is_meekly_coercible (MOID_T *p, MOID_T *q, int deflex) +++{ +++ if (a68_is_equal_modes (p, q, deflex)) +++ return true; +++ else if (a68_is_deprefable (p)) +++ return a68_is_meekly_coercible (a68_depref_once (p), q, deflex); +++ else +++ return false; +++} +++ +++/* Whether there is a firm path from P to Q. */ +++ +++bool +++a68_is_firmly_coercible (MOID_T *p, MOID_T *q, int deflex) +++{ +++ if (a68_is_equal_modes (p, q, deflex)) +++ return true; +++ else if (q == M_ROWS && a68_is_rows_type (p)) +++ return true; +++ else if (a68_is_unitable (p, q, deflex)) +++ return true; +++ else if (a68_is_deprefable (p)) +++ return a68_is_firmly_coercible (a68_depref_once (p), q, deflex); +++ else +++ return false; +++} +++ +++/* Whether firm. */ +++ +++bool +++a68_is_firm (MOID_T *p, MOID_T *q) +++{ +++ return (a68_is_firmly_coercible (p, q, SAFE_DEFLEXING) +++ || a68_is_firmly_coercible (q, p, SAFE_DEFLEXING)); +++} +++ +++/* Whether P widens to Q. +++ +++ This function returns: +++ +++ The destination mode Q if P, or +++ Some other mode which is an intermediate step from P to Q, or +++ NO_MOID if P cannot be widened to Q. +++ +++ This means that if P is known to widen to Q (a68_is_widenable (P,Q) return +++ true) this function can be invoked repeteadly and it will eventually return +++ Q. */ +++ +++MOID_T * +++a68_widens_to (MOID_T *p, MOID_T *q) +++{ +++ if (p == M_INT) +++ { +++ if (q == M_REAL || q == M_COMPLEX) +++ { +++ return M_REAL; +++ } +++ else +++ { +++ return NO_MOID; +++ } +++ } +++ else if (p == M_LONG_INT) +++ { +++ if (q == M_LONG_REAL) +++ { +++ return M_LONG_REAL; +++ } +++ else +++ { +++ return NO_MOID; +++ } +++ } +++ else if (p == M_LONG_LONG_INT) +++ { +++ if (q == M_LONG_LONG_REAL || q == M_LONG_LONG_COMPLEX) +++ return M_LONG_LONG_REAL; +++ else +++ return NO_MOID; +++ } +++ else if (p == M_REAL) +++ { +++ if (q == M_COMPLEX) +++ { +++ return M_COMPLEX; +++ } +++ else +++ { +++ return NO_MOID; +++ } +++ } +++ else if (p == M_LONG_REAL) +++ { +++ if (q == M_LONG_COMPLEX) +++ return M_LONG_COMPLEX; +++ else +++ return NO_MOID; +++ } +++ else if (p == M_LONG_LONG_REAL) +++ { +++ if (q == M_LONG_LONG_COMPLEX) +++ return M_LONG_LONG_COMPLEX; +++ else +++ return NO_MOID; +++ } +++ else if (p == M_BITS) +++ { +++ if (q == M_ROW_BOOL) +++ return M_ROW_BOOL; +++ else if (q == M_FLEX_ROW_BOOL) +++ return M_FLEX_ROW_BOOL; +++ else +++ return NO_MOID; +++ } +++ else if (p == M_SHORT_BITS) +++ { +++ if (q == M_ROW_BOOL) +++ return M_ROW_BOOL; +++ else if (q == M_FLEX_ROW_BOOL) +++ return M_FLEX_ROW_BOOL; +++ else +++ return NO_MOID; +++ } +++ else if (p == M_SHORT_SHORT_BITS) +++ { +++ if (q == M_ROW_BOOL) +++ return M_ROW_BOOL; +++ else if (q == M_FLEX_ROW_BOOL) +++ return M_FLEX_ROW_BOOL; +++ else +++ return NO_MOID; +++ } +++ else if (p == M_LONG_BITS) +++ { +++ if (q == M_ROW_BOOL) +++ return M_ROW_BOOL; +++ else if (q == M_FLEX_ROW_BOOL) +++ return M_FLEX_ROW_BOOL; +++ else +++ return NO_MOID; +++ } +++ else if (p == M_LONG_LONG_BITS) +++ { +++ if (q == M_ROW_BOOL) +++ return M_ROW_BOOL; +++ else if (q == M_FLEX_ROW_BOOL) +++ return M_FLEX_ROW_BOOL; +++ else +++ return NO_MOID; +++ } +++ else if (p == M_BYTES && q == M_ROW_CHAR) +++ return M_ROW_CHAR; +++ else if (p == M_LONG_BYTES && q == M_ROW_CHAR) +++ return M_ROW_CHAR; +++ else if (p == M_BYTES && q == M_FLEX_ROW_CHAR) +++ return M_FLEX_ROW_CHAR; +++ else if (p == M_LONG_BYTES && q == M_FLEX_ROW_CHAR) +++ return M_FLEX_ROW_CHAR; +++ else +++ return NO_MOID; +++} +++ +++/* Whether P widens to Q. */ +++ +++bool +++a68_is_widenable (MOID_T *p, MOID_T *q) +++{ +++ MOID_T *z = a68_widens_to (p, q); +++ +++ if (z != NO_MOID) +++ return (z == q ? true : a68_is_widenable (z, q)); +++ else +++ return false; +++} +++ +++/* Whether P is a REF ROW. */ +++ +++bool +++a68_is_ref_row (MOID_T *p) +++{ +++ return (NAME (p) != NO_MOID ? IS_ROW (DEFLEX (SUB (p))) : false); +++} +++ +++/* Whether strong name. */ +++ +++bool +++a68_is_strong_name (MOID_T *p, MOID_T *q) +++{ +++ if (p == q) +++ return true; +++ else if (a68_is_ref_row (q)) +++ return a68_is_strong_name (p, NAME (q)); +++ else +++ return false; +++} +++ +++/* Whether strong slice. */ +++ +++bool +++a68_is_strong_slice (MOID_T *p, MOID_T *q) +++{ +++ if (p == q || a68_is_widenable (p, q)) +++ return true; +++ else if (SLICE (q) != NO_MOID) +++ return a68_is_strong_slice (p, SLICE (q)); +++ else if (IS_FLEX (q)) +++ return a68_is_strong_slice (p, SUB (q)); +++ else if (a68_is_ref_row (q)) +++ return a68_is_strong_name (p, q); +++ else +++ return false; +++} +++ +++/* Whether strongly coercible. */ +++ +++bool +++a68_is_strongly_coercible (MOID_T *p, MOID_T *q, int deflex) +++{ +++ /* Keep this sequence of statements. */ +++ if (a68_is_equal_modes (p, q, deflex)) +++ return true; +++ else if (q == M_VOID) +++ return true; +++ else if ((q == M_SIMPLIN || q == M_ROW_SIMPLIN) && a68_is_readable_mode (p)) +++ return true; +++ else if (q == M_ROWS && a68_is_rows_type (p)) +++ return true; +++ else if (a68_is_unitable (p, a68_derow (q), deflex)) +++ return true; +++ +++ if (a68_is_ref_row (q) && a68_is_strong_name (p, q)) +++ return true; +++ else if (SLICE (q) != NO_MOID && a68_is_strong_slice (p, q)) +++ return true; +++ else if (IS_FLEX (q) && a68_is_strong_slice (p, q)) +++ return true; +++ else if (a68_is_widenable (p, q)) +++ return true; +++ else if (a68_is_deprefable (p)) +++ return a68_is_strongly_coercible (a68_depref_once (p), q, deflex); +++ else if (q == M_SIMPLOUT || q == M_ROW_SIMPLOUT) +++ return a68_is_printable_mode (p); +++ else +++ return false; +++} +++ +++/* Basic coercions. */ +++ +++bool +++a68_basic_coercions (MOID_T *p, MOID_T *q, int c, int deflex) +++{ +++ if (a68_is_equal_modes (p, q, deflex)) +++ return true; +++ else if (c == NO_SORT) +++ return (p == q); +++ else if (c == SOFT) +++ return a68_is_softly_coercible (p, q, deflex); +++ else if (c == WEAK) +++ return a68_is_weakly_coercible (p, q, deflex); +++ else if (c == MEEK) +++ return a68_is_meekly_coercible (p, q, deflex); +++ else if (c == FIRM) +++ return a68_is_firmly_coercible (p, q, deflex); +++ else if (c == STRONG) +++ return a68_is_strongly_coercible (p, q, deflex); +++ else +++ return false; +++} +++ +++/* Whether coercible stowed. */ +++ +++bool +++a68_is_coercible_stowed (MOID_T *p, MOID_T *q, int c, int deflex) +++{ +++ if (c != STRONG) +++ /* Such construct is always in a strong position, is it not? */ +++ return false; +++ else if (q == M_VOID) +++ return true; +++ else if (IS_FLEX (q)) +++ { +++ bool j = true; +++ +++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) +++ j &= a68_is_coercible (MOID (u), SLICE (SUB (q)), c, deflex); +++ return j; +++ } +++ else if (IS_ROW (q)) +++ { +++ bool j = true; +++ +++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) +++ j &= a68_is_coercible (MOID (u), SLICE (q), c, deflex); +++ return j; +++ } +++ else if (IS (q, PROC_SYMBOL) || IS (q, STRUCT_SYMBOL)) +++ { +++ if (DIM (p) != DIM (q)) +++ return false; +++ else +++ { +++ PACK_T *u = PACK (p), *v = PACK (q); +++ bool j = true; +++ +++ while (u != NO_PACK && v != NO_PACK && j) +++ { +++ j &= a68_is_coercible (MOID (u), MOID (v), c, deflex); +++ FORWARD (u); +++ FORWARD (v); +++ } +++ return j; +++ } +++ } +++ else +++ return false; +++} +++ +++/* Whether coercible series. */ +++ +++bool +++a68_is_coercible_series (MOID_T *p, MOID_T *q, int c, int deflex) +++{ +++ if (c == NO_SORT) +++ return false; +++ else if (p == NO_MOID || q == NO_MOID) +++ return false; +++ else if (IS (p, SERIES_MODE) && PACK (p) == NO_PACK) +++ return false; +++ else if (IS (q, SERIES_MODE) && PACK (q) == NO_PACK) +++ return false; +++ else if (PACK (p) == NO_PACK) +++ return a68_is_coercible (p, q, c, deflex); +++ else +++ { +++ bool j = true; +++ +++ for (PACK_T *u = PACK (p); u != NO_PACK && j; FORWARD (u)) +++ { +++ if (MOID (u) != NO_MOID) +++ j &= a68_is_coercible (MOID (u), q, c, deflex); +++ } +++ return j; +++ } +++} +++ +++/* Whether P can be coerced to Q in a C context. +++ +++ If P is a STOWED modes serie (A, B, ...) and Q is a routine mode like `proc +++ (X, Y, ...)' then this routine determines whether A can be coerced to X, B +++ to Y, etc. */ +++ +++bool +++a68_is_coercible (MOID_T *p, MOID_T *q, int c, int deflex) +++{ +++ if (a68_is_mode_isnt_well (p) || a68_is_mode_isnt_well (q)) +++ return true; +++ else if (a68_is_equal_modes (p, q, deflex)) +++ return true; +++ else if (p == M_HIP) +++ return true; +++ else if (IS (p, STOWED_MODE)) +++ return a68_is_coercible_stowed (p, q, c, deflex); +++ else if (IS (p, SERIES_MODE)) +++ return a68_is_coercible_series (p, q, c, deflex); +++ else if (p == M_VACUUM && IS_ROW (DEFLEX (q))) +++ return true; +++ else +++ return a68_basic_coercions (p, q, c, deflex); +++} +++ +++/* Whether coercible in context. */ +++ +++bool +++a68_is_coercible_in_context (SOID_T *p, SOID_T *q, int deflex) +++{ +++ if (SORT (p) != SORT (q)) +++ return false; +++ else if (MOID (p) == MOID (q)) +++ return true; +++ else +++ return a68_is_coercible (MOID (p), MOID (q), SORT (q), deflex); +++} +++ +++/* Whether list Y is balanced. */ +++ +++bool +++a68_is_balanced (NODE_T *n, SOID_T *y, int sort) +++{ +++ if (sort == STRONG) +++ return true; +++ else +++ { +++ bool k = false; +++ +++ for (; y != NO_SOID && !k; FORWARD (y)) +++ k = (!IS (MOID (y), STOWED_MODE)); +++ +++ if (k == false) +++ a68_error (n, "construct has no unique mode"); +++ return k; +++ } +++} +++ +++/* A moid from M to which all other members can be coerced. +++ If no fulcrum of the balance is found, return NO_MOID. */ +++ +++MOID_T * +++a68_get_balanced_mode_or_no_mode (MOID_T *m, int sort, bool return_depreffed, int deflex) +++{ +++ MOID_T *common_moid = NO_MOID; +++ +++ if (m != NO_MOID && !a68_is_mode_isnt_well (m) && IS (m, UNION_SYMBOL)) +++ { +++ int depref_level; +++ bool siga = true; +++ /* Test for increasing depreffing. */ +++ for (depref_level = 0; siga; depref_level++) +++ { +++ siga = false; +++ /* Test the whole pack. */ +++ for (PACK_T *p = PACK (m); p != NO_PACK; FORWARD (p)) +++ { +++ /* HIPs are not eligible of course. */ +++ if (MOID (p) != M_HIP) +++ { +++ MOID_T *candidate = MOID (p); +++ int k; +++ /* Depref as far as allowed. */ +++ for (k = depref_level; k > 0 && a68_is_deprefable (candidate); k--) +++ candidate = a68_depref_once (candidate); +++ /* Only need testing if all allowed deprefs succeeded. */ +++ if (k == 0) +++ { +++ MOID_T *to = (return_depreffed ? a68_depref_completely (candidate) : candidate); +++ bool all_coercible = true; +++ +++ siga = true; +++ for (PACK_T *q = PACK (m); q != NO_PACK && all_coercible; FORWARD (q)) +++ { +++ MOID_T *from = MOID (q); +++ if (p != q && from != to) +++ all_coercible &= a68_is_coercible (from, to, sort, deflex); +++ } +++ /* If the pack is coercible to the candidate, we mark the +++ candidate. We continue searching for longest series +++ of REF REF PROC REF. */ +++ if (all_coercible) +++ { +++ MOID_T *mark = (return_depreffed ? MOID (p) : candidate); +++ +++ if (common_moid == NO_MOID) +++ common_moid = mark; +++ else if (IS_FLEX (candidate) && DEFLEX (candidate) == common_moid) +++ /* We prefer FLEX. */ +++ common_moid = mark; +++ } +++ } +++ } +++ } +++ } +++ } +++ +++ return common_moid; +++} +++ +++/* A moid from M to which all other members can be coerced. +++ If no fulcrum of the balance is found, return M. */ +++ +++MOID_T * +++a68_get_balanced_mode (MOID_T *m, int sort, bool return_depreffed, int deflex) +++{ +++ MOID_T *common_moid +++ = a68_get_balanced_mode_or_no_mode (m, sort, return_depreffed, deflex); +++ return common_moid == NO_MOID ? m : common_moid; +++} +++ +++/* Whether we can search a common mode from a clause or not. */ +++ +++bool +++a68_clause_allows_balancing (int att) +++{ +++ switch (att) +++ { +++ case CLOSED_CLAUSE: +++ case CONDITIONAL_CLAUSE: +++ case CASE_CLAUSE: +++ case SERIAL_CLAUSE: +++ case CONFORMITY_CLAUSE: +++ return true; +++ } +++ return false; +++} +++ +++/* A unique mode from Z. */ +++ +++MOID_T * +++a68_determine_unique_mode (SOID_T *z, int deflex) +++{ +++ if (z == NO_SOID) +++ return NO_MOID; +++ else +++ { +++ MOID_T *x = MOID (z); +++ +++ if (a68_is_mode_isnt_well (x)) +++ return M_ERROR; +++ +++ /* If X is a series containing one union, a68_make_united_mode will +++ return that union (because 'union (union (...))' is the same than +++ 'union (...)') and then a68_get_balanced_mode below will try to +++ balance the modes in that union. Not what we want. */ +++ if (ATTRIBUTE (x) == SERIES_MODE +++ && DIM (x) == 1 +++ && IS (MOID (PACK (x)), UNION_SYMBOL)) +++ return MOID (PACK (x)); +++ +++ x = a68_make_united_mode (x); +++ if (a68_clause_allows_balancing (ATTRIBUTE (z))) +++ return a68_get_balanced_mode (x, STRONG, A68_NO_DEPREF, deflex); +++ else +++ return x; +++ } +++} +++ +++/* Insert coercion A in the tree. */ +++ +++void +++a68_make_coercion (NODE_T *l, enum a68_attribute a, MOID_T *m) +++{ +++ a68_make_sub (l, l, a); +++ MOID (l) = a68_depref_rows (MOID (l), m); +++} +++ +++/* Make widening coercion. */ +++ +++static void +++make_widening_coercion (NODE_T *n, MOID_T *p, MOID_T *q) +++{ +++ MOID_T *z = a68_widens_to (p, q); +++ +++ a68_make_coercion (n, WIDENING, z); +++ if (z != q) +++ make_widening_coercion (n, z, q); +++} +++ +++/* Make ref rowing coercion. */ +++ +++void +++a68_make_ref_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) +++{ +++ if (DEFLEX (p) != DEFLEX (q)) +++ { +++ if (a68_is_widenable (p, q)) +++ make_widening_coercion (n, p, q); +++ else if (a68_is_ref_row (q)) +++ { +++ a68_make_ref_rowing_coercion (n, p, NAME (q)); +++ a68_make_coercion (n, ROWING, q); +++ } +++ } +++} +++ +++/* Make rowing coercion. */ +++ +++void +++a68_make_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) +++{ +++ if (DEFLEX (p) != DEFLEX (q)) +++ { +++ if (a68_is_widenable (p, q)) +++ make_widening_coercion (n, p, q); +++ else if (SLICE (q) != NO_MOID) +++ { +++ a68_make_rowing_coercion (n, p, SLICE (q)); +++ a68_make_coercion (n, ROWING, q); +++ } +++ else if (IS_FLEX (q)) +++ a68_make_rowing_coercion (n, p, SUB (q)); +++ else if (a68_is_ref_row (q)) +++ a68_make_ref_rowing_coercion (n, p, q); +++ } +++} +++ +++/* Make uniting coercion. */ +++ +++void +++a68_make_uniting_coercion (NODE_T *n, MOID_T *q) +++{ +++ a68_make_coercion (n, UNITING, a68_derow (q)); +++ if (IS_ROW (q) || IS_FLEX (q)) +++ a68_make_rowing_coercion (n, a68_derow (q), q); +++} +++ +++/* Make depreffing coercion to coerce node N from mode P to mode Q in a strong +++ context. */ +++ +++void +++a68_make_depreffing_coercion (NODE_T *n, MOID_T *p, MOID_T *q) +++{ +++ if (DEFLEX (p) == DEFLEX (q)) +++ return; +++ else if (q == M_SIMPLOUT && a68_is_printable_mode (p)) +++ a68_make_coercion (n, UNITING, q); +++ else if (q == M_ROW_SIMPLOUT && a68_is_printable_mode (p)) +++ { +++ a68_make_coercion (n, UNITING, M_SIMPLOUT); +++ a68_make_coercion (n, ROWING, M_ROW_SIMPLOUT); +++ } +++ else if (q == M_SIMPLIN && a68_is_readable_mode (p)) +++ a68_make_coercion (n, UNITING, q); +++ else if (q == M_ROW_SIMPLIN && a68_is_readable_mode (p)) +++ { +++ a68_make_coercion (n, UNITING, M_SIMPLIN); +++ a68_make_coercion (n, ROWING, M_ROW_SIMPLIN); +++ } +++ else if (q == M_ROWS && a68_is_rows_type (p)) +++ { +++ a68_make_coercion (n, UNITING, M_ROWS); +++ MOID (n) = M_ROWS; +++ } +++ else if (a68_is_widenable (p, q)) +++ make_widening_coercion (n, p, q); +++ else if (a68_is_unitable (p, a68_derow (q), SAFE_DEFLEXING)) +++ a68_make_uniting_coercion (n, q); +++ else if (a68_is_ref_row (q) && a68_is_strong_name (p, q)) +++ a68_make_ref_rowing_coercion (n, p, q); +++ else if (SLICE (q) != NO_MOID && a68_is_strong_slice (p, q)) +++ a68_make_rowing_coercion (n, p, q); +++ else if (IS_FLEX (q) && a68_is_strong_slice (p, q)) +++ a68_make_rowing_coercion (n, p, q); +++ else if (IS_REF (p)) +++ { +++ MOID_T *r = a68_depref_once (p); +++ a68_make_coercion (n, DEREFERENCING, r); +++ a68_make_depreffing_coercion (n, r, q); +++ } +++ else if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) +++ { +++ MOID_T *r = SUB (p); +++ +++ a68_make_coercion (n, DEPROCEDURING, r); +++ a68_make_depreffing_coercion (n, r, q); +++ } +++ else if (p != q) +++ a68_cannot_coerce (n, p, q, NO_SORT, SKIP_DEFLEXING, 0); +++} +++ +++/* Whether p is a nonproc mode (that is voided directly). */ +++ +++bool +++a68_is_nonproc (MOID_T *p) +++{ +++ if (IS (p, PROC_SYMBOL) && PACK (p) == NO_PACK) +++ return false; +++ else if (IS_REF (p)) +++ return a68_is_nonproc (SUB (p)); +++ else +++ return true; +++} +++ +++/* Voiden in an appropriate way. */ +++ +++void +++a68_make_void (NODE_T *p, MOID_T *q) +++{ +++ switch (ATTRIBUTE (p)) +++ { +++ case ASSIGNATION: +++ case IDENTITY_RELATION: +++ case GENERATOR: +++ case CAST: +++ case DENOTATION: +++ a68_make_coercion (p, VOIDING, M_VOID); +++ return; +++ default: +++ break; +++ } +++ +++ /* MORFs are an involved case. */ +++ switch (ATTRIBUTE (p)) +++ { +++ case SELECTION: +++ case SLICE: +++ case ROUTINE_TEXT: +++ case FORMULA: +++ case CALL: +++ case IDENTIFIER: +++ /* A nonproc moid value is eliminated directly. */ +++ if (a68_is_nonproc (q)) +++ { +++ a68_make_coercion (p, VOIDING, M_VOID); +++ return; +++ } +++ else +++ { +++ /* Descend the chain of e.g. REF PROC .. until a nonproc moid +++ remains. */ +++ MOID_T *z = q; +++ +++ while (!a68_is_nonproc (z)) +++ { +++ if (IS_REF (z)) +++ a68_make_coercion (p, DEREFERENCING, SUB (z)); +++ if (IS (z, PROC_SYMBOL) && NODE_PACK (p) == NO_PACK) +++ a68_make_coercion (p, DEPROCEDURING, SUB (z)); +++ z = SUB (z); +++ } +++ if (z != M_VOID) +++ a68_make_coercion (p, VOIDING, M_VOID); +++ return; +++ } +++ default: +++ break; +++ } +++ +++ /* All other is voided straight away. */ +++ a68_make_coercion (p, VOIDING, M_VOID); +++} +++ +++/* Make strong coercion of node N from mode P to mode Q. */ +++ +++void +++a68_make_strong (NODE_T *n, MOID_T *p, MOID_T *q) +++{ +++ if (q == M_VOID && p != M_VOID) +++ a68_make_void (n, p); +++ else +++ a68_make_depreffing_coercion (n, p, q); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-moids-to-string.cc ++@@ -0,0 +1,417 @@ +++/* Pretty-print a MOID. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* +++ * A pretty printer for moids. +++ * +++ * For example "PROC (REF STRUCT (REF SELF, UNION (INT, VOID))) REF SELF" +++ * for a procedure yielding a pointer to an object of its own mode. +++ */ +++ +++static void moid_to_string_2 (char *, MOID_T *, size_t *, NODE_T *, +++ bool indicant_value); +++ +++/* Add string to MOID text. */ +++ +++static void +++add_to_moid_text (char *dst, const char *str, size_t *w) +++{ +++ a68_bufcat (dst, str, BUFFER_SIZE); +++ (*w) -= strlen (str); +++} +++ +++/* Find a tag, searching symbol tables towards the root. */ +++ +++static TAG_T * +++find_indicant_global (TABLE_T * table, MOID_T * mode) +++{ +++ if (table != NO_TABLE) +++ { +++ for (TAG_T *s = INDICANTS (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (MOID (s) == mode) +++ return s; +++ } +++ return find_indicant_global (PREVIOUS (table), mode); +++ } +++ else +++ return NO_TAG; +++} +++ +++/* Pack to string. */ +++ +++static void +++pack_to_string (char *b, PACK_T *p, size_t *w, bool text, NODE_T *idf, +++ bool indicant_value) +++{ +++ for (; p != NO_PACK; FORWARD (p)) +++ { +++ moid_to_string_2 (b, MOID (p), w, idf, indicant_value); +++ if (text) +++ { +++ if (TEXT (p) != NO_TEXT) +++ { +++ add_to_moid_text (b, " ", w); +++ add_to_moid_text (b, TEXT (p), w); +++ } +++ } +++ if (p != NO_PACK && NEXT (p) != NO_PACK) +++ add_to_moid_text (b, ", ", w); +++ } +++} +++ +++/* Moid to string 2. */ +++ +++static void moid_to_string_2 (char *b, MOID_T *n, size_t *w, NODE_T *idf, +++ bool indicant_value) +++{ +++ bool supper_stropping = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); +++ const char *strop_self = supper_stropping ? "self" : "SELF"; +++ const char *strop_hip = supper_stropping ? "hip" : "HIP"; +++ const char *strop_compl = supper_stropping ? "compl" : "COMPL"; +++ const char *strop_long_compl = supper_stropping ? "long compl" : "LONG COMPL"; +++ const char *strop_long_long_compl = supper_stropping ? "long long compl" : "LONG LONG COMPL"; +++ const char *strop_string = supper_stropping ? "string" : "STRING"; +++ const char *strop_collitem = supper_stropping ? "collitem" : "COLLITEM"; +++ const char *strop_simplin = supper_stropping ? "%%" : "%%"; +++ const char *strop_simplout = supper_stropping ? "%%" : "%%"; +++ const char *strop_rows = supper_stropping ? "%%" : "%%"; +++ const char *strop_vacuum = supper_stropping ? "%%" : "%%"; +++ const char *strop_long = supper_stropping ? "long" : "LONG"; +++ const char *strop_short = supper_stropping ? "short" : "SHORT"; +++ const char *strop_ref = supper_stropping ? "ref" : "REF"; +++ const char *strop_flex = supper_stropping ? "flex" : "FLEX"; +++ const char *strop_struct = supper_stropping ? "struct" : "STRUCT"; +++ const char *strop_union = supper_stropping ? "union" : "UNION"; +++ const char *strop_proc = supper_stropping ? "proc" : "PROC"; +++ +++ if (n == NO_MOID) +++ { +++ /* Oops. Should not happen. */ +++ add_to_moid_text (b, "null", w);; +++ return; +++ } +++ +++ /* Reference to self through REF or PROC. */ +++ if (a68_is_postulated (A68 (postulates), n)) +++ { +++ add_to_moid_text (b, strop_self, w); +++ return; +++ } +++ +++ /* If declared by a mode-declaration, present the indicant. */ +++ if (idf != NO_NODE && !IS (n, STANDARD)) +++ { +++ TAG_T *indy = find_indicant_global (TABLE (idf), n); +++ +++ if (indy != NO_TAG) +++ { +++ add_to_moid_text (b, NSYMBOL (NODE (indy)), w); +++ if (!indicant_value) +++ return; +++ else +++ add_to_moid_text (b, " = ", w); +++ } +++ } +++ +++ /* Write the standard modes. */ +++ if (n == M_HIP) +++ add_to_moid_text (b, strop_hip, w); +++ else if (n == M_ERROR) +++ add_to_moid_text (b, "ERROR", w); +++ else if (n == M_UNDEFINED) +++ add_to_moid_text (b, "unresolved mode", w); +++ else if (n == M_C_STRING) +++ add_to_moid_text (b, "C-STRING", w); +++ else if (n == M_COMPLEX) +++ add_to_moid_text (b, strop_compl, w); +++ else if (n == M_LONG_COMPLEX) +++ add_to_moid_text (b, strop_long_compl, w); +++ else if (n == M_LONG_LONG_COMPLEX) +++ add_to_moid_text (b, strop_long_long_compl, w); +++ else if (n == M_STRING) +++ add_to_moid_text (b, strop_string, w); +++ else if (n == M_COLLITEM) +++ add_to_moid_text (b, strop_collitem, w); +++ else if (IS (n, IN_TYPE_MODE)) +++ add_to_moid_text (b, strop_simplin, w); +++ else if (IS (n, OUT_TYPE_MODE)) +++ add_to_moid_text (b, strop_simplout, w); +++ else if (IS (n, ROWS_SYMBOL)) +++ add_to_moid_text (b, strop_rows, w); +++ else if (n == M_VACUUM) +++ add_to_moid_text (b, strop_vacuum, w); +++ else if (IS (n, VOID_SYMBOL) || IS (n, STANDARD) || IS (n, INDICANT)) +++ { +++ if (DIM (n) > 0) +++ { +++ size_t k = DIM (n); +++ +++ if ((*w) >= k * strlen ("LONG ") + strlen (NSYMBOL (NODE (n)))) +++ { +++ while (k--) +++ { +++ add_to_moid_text (b, strop_long, w); +++ add_to_moid_text (b, " ", w); +++ } +++ +++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); +++ add_to_moid_text (b, strop_symbol, w); +++ } +++ else +++ add_to_moid_text (b, "..", w); +++ } +++ else if (DIM (n) < 0) +++ { +++ size_t k = -DIM (n); +++ +++ if ((*w) >= k * strlen ("SHORT ") + strlen (NSYMBOL (NODE (n)))) +++ { +++ while (k--) +++ { +++ add_to_moid_text (b, strop_short, w); +++ add_to_moid_text (b, " ", w); +++ } +++ +++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); +++ add_to_moid_text (b, strop_symbol, w); +++ } +++ else +++ add_to_moid_text (b, "..", w); +++ } +++ else if (DIM (n) == 0) +++ { +++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (NODE (n))); +++ add_to_moid_text (b, strop_symbol, w); +++ } +++ +++ /* Write compxounded modes. */ +++ } +++ else if (IS_REF (n)) +++ { +++ if ((*w) >= strlen ("REF ..")) +++ { +++ add_to_moid_text (b, strop_ref, w); +++ add_to_moid_text (b, " ", w); +++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); +++ } +++ else +++ { +++ add_to_moid_text (b, strop_ref, w); +++ add_to_moid_text (b, " ..", w); +++ } +++ } +++ else if (IS_FLEX (n)) +++ { +++ if ((*w) >= strlen ("FLEX ..")) +++ { +++ add_to_moid_text (b, strop_flex, w); +++ add_to_moid_text (b, " ", w); +++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); +++ } +++ else +++ { +++ add_to_moid_text (b, strop_flex, w); +++ add_to_moid_text (b, " ..", w); +++ } +++ } +++ else if (IS_ROW (n)) +++ { +++ size_t j = strlen ("[] ..") + (DIM (n) - 1) * strlen (","); +++ +++ if ((*w) >= j) +++ { +++ size_t k = DIM (n) - 1; +++ add_to_moid_text (b, "[", w); +++ while (k-- > 0) +++ add_to_moid_text (b, ",", w); +++ add_to_moid_text (b, "] ", w); +++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); +++ } +++ else if (DIM (n) == 1) +++ { +++ add_to_moid_text (b, "[] ..", w); +++ } +++ else +++ { +++ size_t k = DIM (n); +++ add_to_moid_text (b, "[", w); +++ while (k--) +++ add_to_moid_text (b, ",", w); +++ add_to_moid_text (b, "] ..", w); +++ } +++ } +++ else if (IS_STRUCT (n)) +++ { +++ size_t j = (strlen ("STRUCT ()") + (DIM (n) - 1) +++ * strlen (".., ") + strlen ("..")); +++ +++ if ((*w) >= j) +++ { +++ POSTULATE_T *save = A68 (postulates); +++ a68_make_postulate (&A68 (postulates), n, NO_MOID); +++ add_to_moid_text (b, strop_struct, w); +++ add_to_moid_text (b, " (", w); +++ pack_to_string (b, PACK (n), w, true, idf, indicant_value); +++ add_to_moid_text (b, ")", w); +++ a68_free_postulate_list (A68 (postulates), save); +++ A68 (postulates) = save; +++ } +++ else +++ { +++ size_t k = DIM (n); +++ add_to_moid_text (b, strop_struct, w); +++ add_to_moid_text (b, " (", w); +++ while (k-- > 0) +++ add_to_moid_text (b, ",", w); +++ add_to_moid_text (b, ")", w); +++ } +++ } +++ else if (IS_UNION (n)) +++ { +++ size_t j = (strlen ("UNION ()") + (DIM (n) - 1) +++ * strlen (".., ") + strlen ("..")); +++ +++ if ((*w) >= j) +++ { +++ POSTULATE_T *save = A68 (postulates); +++ a68_make_postulate (&A68 (postulates), n, NO_MOID); +++ add_to_moid_text (b, strop_union, w); +++ add_to_moid_text (b, " (", w); +++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); +++ add_to_moid_text (b, ")", w); +++ a68_free_postulate_list (A68 (postulates), save); +++ A68 (postulates) = save; +++ } +++ else +++ { +++ size_t k = DIM (n); +++ add_to_moid_text (b, strop_union, w); +++ add_to_moid_text (b, " (", w); +++ while (k-- > 0) +++ add_to_moid_text (b, ",", w); +++ add_to_moid_text (b, ")", w); +++ } +++ } +++ else if (IS (n, PROC_SYMBOL) && DIM (n) == 0) +++ { +++ if ((*w) >= strlen ("PROC ..")) +++ { +++ add_to_moid_text (b, strop_proc, w); +++ add_to_moid_text (b, " ", w); +++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); +++ } +++ else +++ { +++ add_to_moid_text (b, strop_proc, w); +++ add_to_moid_text (b, " ..", w); +++ } +++ } +++ else if (IS (n, PROC_SYMBOL) && DIM (n) > 0) +++ { +++ size_t j = (strlen ("PROC () ..") + (DIM (n) - 1) +++ * strlen (".., ") + strlen ("..")); +++ +++ if ((*w) >= j) +++ { +++ POSTULATE_T *save = A68 (postulates); +++ a68_make_postulate (&A68 (postulates), n, NO_MOID); +++ add_to_moid_text (b, strop_proc, w); +++ add_to_moid_text (b, " (", w); +++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); +++ add_to_moid_text (b, ") ", w); +++ moid_to_string_2 (b, SUB (n), w, idf, indicant_value); +++ a68_free_postulate_list (A68 (postulates), save); +++ A68 (postulates) = save; +++ } +++ else +++ { +++ size_t k = DIM (n); +++ +++ add_to_moid_text (b, strop_proc, w); +++ add_to_moid_text (b, " (", w); +++ while (k-- > 0) +++ add_to_moid_text (b, ",", w); +++ add_to_moid_text (b, ") ..", w); +++ } +++ } +++ else if (IS (n, SERIES_MODE) || IS (n, STOWED_MODE)) +++ { +++ size_t j = (strlen ("()") + (DIM (n) - 1) +++ * strlen (".., ") + strlen ("..")); +++ +++ if ((*w) >= j) +++ { +++ add_to_moid_text (b, "(", w); +++ pack_to_string (b, PACK (n), w, false, idf, indicant_value); +++ add_to_moid_text (b, ")", w); +++ } +++ else +++ { +++ size_t k = DIM (n); +++ +++ add_to_moid_text (b, "(", w); +++ while (k-- > 0) +++ add_to_moid_text (b, ",", w); +++ add_to_moid_text (b, ")", w); +++ } +++ } +++ else +++ { +++ char str[SMALL_BUFFER_SIZE]; +++ if (snprintf (str, (size_t) SMALL_BUFFER_SIZE, "\\%d", ATTRIBUTE (n)) < 0) +++ gcc_unreachable (); +++ add_to_moid_text (b, str, w); +++ } +++} +++ +++/* Pretty-formatted mode N; W is a measure of width. */ +++ +++const char * +++a68_moid_to_string (MOID_T *n, size_t w, NODE_T *idf, bool indicant_value) +++{ +++#define MAX_MTS 8 +++ /* We use a static buffer of MAX_MTS strings. This value 8 should be safe. +++ No more than MAX_MTS calls can be pending in for instance printf. Instead +++ we could allocate each string on the heap but that leaks memory. */ +++ static int mts_buff_ptr = 0; +++ static char mts_buff[8][BUFFER_SIZE]; +++ char *a = &(mts_buff[mts_buff_ptr][0]); +++ mts_buff_ptr++; +++ if (mts_buff_ptr >= MAX_MTS) +++ mts_buff_ptr = 0; +++ a[0] = '\0'; +++ if (w >= BUFFER_SIZE) +++ w = BUFFER_SIZE - 1; +++ A68 (postulates) = NO_POSTULATE; +++ if (n != NO_MOID) +++ moid_to_string_2 (a, n, &w, idf, indicant_value); +++ else +++ a68_bufcat (a, "null", BUFFER_SIZE); +++ return a; +++#undef MAX_MTS +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-attrs.def ++@@ -0,0 +1,387 @@ +++/* This file contains the definitions and documentation for all the different +++ kind/attributes of Algol 68 parse tree nodes. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ You should have received a copy of the GNU General Public License along with +++ GCC; see the file COPYING3. If not see . */ +++ +++/* Please keep the entries in this file sorted alphabetically. */ +++ +++/* Note that the textual descriptions for the nodes are used in diagnostic +++ messages and debug dumps. Please make sure to write them in a way you would +++ expect to be used in statements like "[...] near ATT". */ +++ +++A68_ATTR(A68_PATTERN, "transput pattern") +++A68_ATTR(ACCESS_CLAUSE, "access clause") +++A68_ATTR(ACCESS_SYMBOL, "access-symbol") +++A68_ATTR(ACTUAL_DECLARER_MARK, "actual declarer mark") +++A68_ATTR(ALT_ACCESS_SYMBOL, "alt-access-symbol") +++A68_ATTR(ALT_DO_PART, "alt do part") +++A68_ATTR(ALT_DO_SYMBOL, "alt do symbol") +++A68_ATTR(ALT_EQUALS_SYMBOL, "alt equals symbol") +++A68_ATTR(ALT_FORMAL_BOUNDS_LIST, "alt formal bounds list") +++A68_ATTR(ANDF_SYMBOL, "andf symbol") +++A68_ATTR(AND_FUNCTION, "andf pseudo-operator") +++A68_ATTR(ANONYMOUS, "anonymous") +++A68_ATTR(ARGUMENT, "argument") +++A68_ATTR(ARGUMENT_LIST, "argument list") +++A68_ATTR(ASSERTION, "assertion") +++A68_ATTR(ASSERT_SYMBOL, "assert symbol") +++A68_ATTR(ASSIGNATION, "assignation") +++A68_ATTR(ASSIGN_SYMBOL, "assignation symbol") +++A68_ATTR(ASSIGN_TO_SYMBOL, "assign-to symbol") +++A68_ATTR(AT_SYMBOL, "at symbol") +++A68_ATTR(BEGIN_SYMBOL, "begin symbol") +++A68_ATTR(BITS_C_PATTERN, "bits-c-pattern") +++A68_ATTR(BITS_DENOTATION, "bits-denotation") +++A68_ATTR(BITS_PATTERN, "bits pattern") +++A68_ATTR(BITS_SYMBOL, "bits-symbol") +++A68_ATTR(BOLD_COMMENT_SYMBOL, "comment delimiter") +++A68_ATTR(BOLD_COMMENT_BEGIN_SYMBOL, "comment opening delimiter") +++A68_ATTR(BOLD_COMMENT_END_SYMBOL, "comment closing delimiter") +++A68_ATTR(BOLD_PRAGMAT_SYMBOL, "pragmat-symbol") +++A68_ATTR(BOLD_TAG, "bold tag") +++A68_ATTR(BOOLEAN_PATTERN, "boolean pattern") +++A68_ATTR(BOOL_SYMBOL, "bool-symbol") +++A68_ATTR(BOUND, "actual declarer bound") +++A68_ATTR(BOUNDS, "actual declarer bounds") +++A68_ATTR(BOUNDS_LIST, "actual declarer bounds list") +++A68_ATTR(BRIEF_COMMENT_BEGIN_SYMBOL, "comment opening delimiter") +++A68_ATTR(BRIEF_COMMENT_END_SYMBOL, "comment closing delimiter") +++A68_ATTR(BRIEF_OUSE_PART, "ouse-part") +++A68_ATTR(BRIEF_CONFORMITY_OUSE_PART, "ouse-part") +++A68_ATTR(BRIEF_ELIF_PART, "elif-part") +++A68_ATTR(BRIEF_OPERATOR_DECLARATION, "operator declaration") +++A68_ATTR(BUS_SYMBOL, "bus-symbol") +++A68_ATTR(BYTES_SYMBOL, "bytes-symbol") +++A68_ATTR(BY_PART, "by-part") +++A68_ATTR(BY_SYMBOL, "by-symbol") +++A68_ATTR(CALL, "call") +++A68_ATTR(CASE_CHOICE_CLAUSE, "case choice clause") +++A68_ATTR(CASE_CLAUSE, "case clause") +++A68_ATTR(CASE_IN_PART, "case-in-part") +++A68_ATTR(CASE_OUSE_PART, "case-ouse-part") +++A68_ATTR(CASE_PART, "case-part") +++A68_ATTR(CASE_SYMBOL, "case-symbol") +++A68_ATTR(CAST, "cast") +++A68_ATTR(CHANNEL_SYMBOL, "channel-symbol") +++A68_ATTR(CHAR_C_PATTERN, "char C-like pattern") +++A68_ATTR(CHAR_SYMBOL, "char-symbol") +++A68_ATTR(CHOICE, "choice") +++A68_ATTR(CHOICE_PATTERN, "choice pattern") +++A68_ATTR(CLOSED_CLAUSE, "closed clause") +++A68_ATTR(CLOSE_SYMBOL, "close symbol") +++A68_ATTR(COLLATERAL_CLAUSE, "collateral clause") +++A68_ATTR(COLLECTION, "collection") +++A68_ATTR(COLON_SYMBOL, "colon-symbol") +++A68_ATTR(COMMA_SYMBOL, "comma-symbol") +++A68_ATTR(COMPLEX_PATTERN, "complex pattern") +++A68_ATTR(COMPLEX_SYMBOL, "complex-symbol") +++A68_ATTR(COMPL_SYMBOL, "compl-symbol") +++A68_ATTR(CONDITIONAL_CLAUSE, "conditional clause") +++A68_ATTR(CONFORMITY_CHOICE, "conformity clause choice") +++A68_ATTR(CONFORMITY_CLAUSE, "conformity clause") +++A68_ATTR(CONFORMITY_IN_PART, "conformity clause in-part") +++A68_ATTR(CONFORMITY_OUSE_PART, "conformity clause ouse-part") +++A68_ATTR(CONSTRUCT, "construct") +++A68_ATTR(DECLARATION_LIST, "list of declarations") +++A68_ATTR(DECLARER, "declarer") +++A68_ATTR(DEF_PART, "def-part") +++A68_ATTR(DEF_SYMBOL, "def-symbol") +++A68_ATTR(DEFINING_IDENTIFIER, "defining identifier") +++A68_ATTR(DEFINING_INDICANT, "defining mode") +++A68_ATTR(DEFINING_OPERATOR, "defining operator") +++A68_ATTR(DEFINING_MODULE_INDICANT, "defining module indicant") +++A68_ATTR(DENOTATION, "denotation") +++A68_ATTR(DEPROCEDURING, "deproceduring coercion") +++A68_ATTR(DEREFERENCING, "dereferencing coercion") +++A68_ATTR(DO_PART, "do-part") +++A68_ATTR(DO_SYMBOL, "do-symbol") +++A68_ATTR(DYNAMIC_REPLICATOR, "format dynamic replicator") +++A68_ATTR(EGG_SYMBOL, "egg-symbol") +++A68_ATTR(ELIF_IF_PART, "elif if-part") +++A68_ATTR(ELIF_PART, "elif-part") +++A68_ATTR(ELIF_SYMBOL, "elif-symbol") +++A68_ATTR(ELSE_BAR_SYMBOL, "else-bar-symbol") +++A68_ATTR(ELSE_OPEN_PART, "else-open-part") +++A68_ATTR(ELSE_PART, "else-part") +++A68_ATTR(ELSE_SYMBOL, "else-symbol") +++A68_ATTR(EMPTY_SYMBOL, "empty-symbol") +++A68_ATTR(ENCLOSED_CLAUSE, "enclosed clause") +++A68_ATTR(END_SYMBOL, "end-symbol") +++A68_ATTR(ENQUIRY_CLAUSE, "enquiry clause") +++A68_ATTR(EQUALS_SYMBOL, "equals-symbol") +++A68_ATTR(ERROR, "error node") +++A68_ATTR(ERROR_IDENTIFIER, "error-identifier") +++A68_ATTR(ESAC_SYMBOL, "esac-symbol") +++A68_ATTR(EXIT_SYMBOL, "exit-symbol") +++A68_ATTR(EXPONENT_FRAME, "exponent-frame") +++A68_ATTR(FALSE_SYMBOL, "false-symbol") +++A68_ATTR(FED_SYMBOL, "fed-symbol") +++A68_ATTR(FIELD, "struct field") +++A68_ATTR(FIELD_IDENTIFIER, "field-identifier") +++A68_ATTR(FILE_SYMBOL, "file-symbol") +++A68_ATTR(FIRM, "firm context") +++A68_ATTR(FIXED_C_PATTERN, "fixed-c-pattern") +++A68_ATTR(FI_SYMBOL, "fi-symbol") +++A68_ATTR(FLEX_SYMBOL, "flex-symbol") +++A68_ATTR(FLOAT_C_PATTERN, "float C format pattern") +++A68_ATTR(FORMAL_BOUNDS, "formal declarer bounds") +++A68_ATTR(FORMAL_BOUNDS_LIST, "list of formal declarer bounds") +++A68_ATTR(FORMAL_DECLARERS, "formal declarers") +++A68_ATTR(FORMAL_DECLARERS_LIST, "list of formal declarers") +++A68_ATTR(FORMAL_DECLARER_MARK, "formal declarer mark") +++A68_ATTR(FORMAL_NEST_SYMBOL, "formal-nest-symbol") +++A68_ATTR(FORMULA, "formula") +++A68_ATTR(FOR_PART, "for-part") +++A68_ATTR(FOR_SYMBOL, "for-symbol") +++A68_ATTR(FORMAT_CLOSE_SYMBOL, "format-close-symbol") +++A68_ATTR(FORMAT_DELIMITER_SYMBOL, "format-delimiter-symbol") +++A68_ATTR(FORMAT_IDENTIFIER, "format identifier") +++A68_ATTR(FORMAT_A_FRAME, "format A-frame") +++A68_ATTR(FORMAT_D_FRAME, "format D-frame") +++A68_ATTR(FORMAT_E_FRAME, "format E-frame") +++A68_ATTR(FORMAT_I_FRAME, "format I-frame") +++A68_ATTR(FORMAT_ITEM_A, "format item-A") +++A68_ATTR(FORMAT_ITEM_B, "format item-B") +++A68_ATTR(FORMAT_ITEM_C, "format item-C") +++A68_ATTR(FORMAT_ITEM_D, "format item-D") +++A68_ATTR(FORMAT_ITEM_E, "format item-E") +++A68_ATTR(FORMAT_ITEM_F, "format item-F") +++A68_ATTR(FORMAT_ITEM_G, "format item-G") +++A68_ATTR(FORMAT_ITEM_H, "format item-H") +++A68_ATTR(FORMAT_ITEM_I, "format item-I") +++A68_ATTR(FORMAT_ITEM_J, "format item-J") +++A68_ATTR(FORMAT_ITEM_K, "format item-K") +++A68_ATTR(FORMAT_ITEM_L, "format item-L") +++A68_ATTR(FORMAT_ITEM_M, "format item-M") +++A68_ATTR(FORMAT_ITEM_N, "format item-N") +++A68_ATTR(FORMAT_ITEM_O, "format item-O") +++A68_ATTR(FORMAT_ITEM_P, "format item-P") +++A68_ATTR(FORMAT_ITEM_Q, "format item-Q") +++A68_ATTR(FORMAT_ITEM_R, "format item-R") +++A68_ATTR(FORMAT_ITEM_S, "format item-S") +++A68_ATTR(FORMAT_ITEM_T, "format item-T") +++A68_ATTR(FORMAT_ITEM_U, "format item-U") +++A68_ATTR(FORMAT_ITEM_V, "format item-V") +++A68_ATTR(FORMAT_ITEM_W, "format item-W") +++A68_ATTR(FORMAT_ITEM_X, "format item-X") +++A68_ATTR(FORMAT_ITEM_Y, "format item-Y") +++A68_ATTR(FORMAT_ITEM_Z, "format item-Z") +++A68_ATTR(FORMAT_ITEM_ESCAPE, "format item escape") +++A68_ATTR(FORMAT_ITEM_MINUS, "format item -") +++A68_ATTR(FORMAT_ITEM_PLUS, "format item +") +++A68_ATTR(FORMAT_ITEM_POINT, "format item .") +++A68_ATTR(FORMAT_OPEN_SYMBOL, "format-open-symbol") +++A68_ATTR(FORMAT_PATTERN, "format pattern") +++A68_ATTR(FORMAT_POINT_FRAME, "format point frame") +++A68_ATTR(FORMAT_SYMBOL, "format-symbol") +++A68_ATTR(FORMAT_TEXT, "format text") +++A68_ATTR(FORMAT_Z_FRAME, "format Z frame") +++A68_ATTR(FROM_PART, "from-part") +++A68_ATTR(FROM_SYMBOL, "from-symbol") +++A68_ATTR(GENERAL_C_PATTERN, "general C-like pattern") +++A68_ATTR(GENERAL_PATTERN, "general pattern") +++A68_ATTR(GENERATOR, "generator") +++A68_ATTR(GENERIC_ARGUMENT, "generic argument") +++A68_ATTR(GENERIC_ARGUMENT_LIST, "generic argument list") +++A68_ATTR(GOTO_SYMBOL, "goto-symbol") +++A68_ATTR(GO_SYMBOL, "go-symbol") +++A68_ATTR(GUARDED_CONDITIONAL_CLAUSE, "guarded conditional clause") +++A68_ATTR(GUARDED_LOOP_CLAUSE, "guarded loop clause") +++A68_ATTR(HEAP_SYMBOL, "heap-symbol") +++A68_ATTR(IDENTIFIER, "identifier") +++A68_ATTR(IDENTIFIER_WITH_UNDERSCORES, "identifier with underscores") +++A68_ATTR(IDENTITY_DECLARATION, "identity declaration") +++A68_ATTR(IDENTITY_RELATION, "identity relation") +++A68_ATTR(IF_PART, "if-part") +++A68_ATTR(IF_SYMBOL, "if-symbol") +++A68_ATTR(INDICANT, "indicant") +++A68_ATTR(INITIALISER_SERIES, "initialiser series") +++A68_ATTR(INSERTION, "insertion") +++A68_ATTR(INTEGRAL_C_PATTERN, "integral C-like pattern") +++A68_ATTR(INTEGRAL_MOULD, "integral mould") +++A68_ATTR(INTEGRAL_PATTERN, "integral pattern") +++A68_ATTR(INT_DENOTATION, "integral denotation") +++A68_ATTR(INT_SYMBOL, "int-symbol") +++A68_ATTR(IN_SYMBOL, "in-symbol") +++A68_ATTR(IN_TYPE_MODE, "in type mode") +++A68_ATTR(ISNT_SYMBOL, "isnt-symbol") +++A68_ATTR(IS_SYMBOL, "is-symbol") +++A68_ATTR(JUMP, "jump") +++A68_ATTR(KEYWORD, "keyword") +++A68_ATTR(LABEL, "label") +++A68_ATTR(LABELED_UNIT, "labeled unit") +++A68_ATTR(LABEL_IDENTIFIER, "label identifier") +++A68_ATTR(LABEL_SEQUENCE, "label sequence") +++A68_ATTR(LITERAL, "literal") +++A68_ATTR(LOCAL_LABEL, "local label") +++A68_ATTR(LOC_SYMBOL, "loc-symbol") +++A68_ATTR(LONGETY, "longsety") +++A68_ATTR(LONG_SYMBOL, "long-symbol") +++A68_ATTR(LOOP_CLAUSE, "loop clause") +++A68_ATTR(LOOP_IDENTIFIER, "loop identifier") +++A68_ATTR(MAIN_SYMBOL, "main-symbol") +++A68_ATTR(MEEK, "meek context") +++A68_ATTR(MODE_BITS, "mode bits") +++A68_ATTR(MODE_BOOL, "mode bool") +++A68_ATTR(MODE_BYTES, "mode bytes") +++A68_ATTR(MODE_CHAR, "mode char") +++A68_ATTR(MODE_COMPLEX, "mode complex") +++A68_ATTR(MODE_DECLARATION, "mode declaration") +++A68_ATTR(MODE_FILE, "mode file") +++A68_ATTR(MODE_FORMAT, "mode format") +++A68_ATTR(A68_MODE_INT, "mode int") +++A68_ATTR(MODE_LONG_LONG_BITS, "mode long long bits") +++A68_ATTR(MODE_LONG_LONG_COMPLEX, "mode long long complex") +++A68_ATTR(MODE_LONG_LONG_INT, "mode long long int") +++A68_ATTR(MODE_LONG_LONG_REAL, "mode long long real") +++A68_ATTR(MODE_LONG_BITS, "mode long bits") +++A68_ATTR(MODE_LONG_BYTES, "mode long bytes") +++A68_ATTR(MODE_LONG_COMPLEX, "mode long complex") +++A68_ATTR(MODE_LONG_INT, "mode long int") +++A68_ATTR(MODE_LONG_REAL, "mode long real") +++A68_ATTR(MODE_NO_CHECK, "mode no check") +++A68_ATTR(MODE_REAL, "mode real") +++A68_ATTR(MODE_SYMBOL, "mode-symbol") +++A68_ATTR(MODULE_INDICANT, "module indicant") +++A68_ATTR(MODULE_DECLARATION, "module-declaration") +++A68_ATTR(MODULE_SYMBOL, "module-symbol") +++A68_ATTR(MODULE_TEXT, "module text") +++A68_ATTR(MONADIC_FORMULA, "monadic formula") +++A68_ATTR(MONAD_SEQUENCE, "monad sequence") +++A68_ATTR(NIHIL, "nihil") +++A68_ATTR(NIL_SYMBOL, "nil-symbol") +++A68_ATTR(NORMAL_IDENTIFIER, "normal identifier") +++A68_ATTR(NO_SORT, "no sort") +++A68_ATTR(OD_SYMBOL, "od-symbol") +++A68_ATTR(OF_SYMBOL, "of-symbol") +++A68_ATTR(OPEN_PART, "open part") +++A68_ATTR(OPEN_SYMBOL, "open-symbol") +++A68_ATTR(OPERATOR, "operator") +++A68_ATTR(OPERATOR_DECLARATION, "operator declaration") +++A68_ATTR(OPERATOR_PLAN, "operator plan") +++A68_ATTR(OP_SYMBOL, "op-symbol") +++A68_ATTR(ORF_SYMBOL, "orf-symbol") +++A68_ATTR(OR_FUNCTION, "orel pseudo-operator") +++A68_ATTR(OUSE_PART, "ouse-part") +++A68_ATTR(OUSE_SYMBOL, "ouse-symbol") +++A68_ATTR(OUT_PART, "out-part") +++A68_ATTR(OUT_SYMBOL, "out-symbol") +++A68_ATTR(OUT_TYPE_MODE, "out type mode") +++A68_ATTR(PACKET, "packet") +++A68_ATTR(PARALLEL_CLAUSE, "parallel clause") +++A68_ATTR(PARAMETER, "parameter") +++A68_ATTR(PARAMETER_IDENTIFIER, "parameter identifier") +++A68_ATTR(PARAMETER_LIST, "parameter list") +++A68_ATTR(PARAMETER_PACK, "parameter pack") +++A68_ATTR(PARTICULAR_PROGRAM, "particular program") +++A68_ATTR(PAR_SYMBOL, "par-symbol") +++A68_ATTR(PICTURE, "format picture") +++A68_ATTR(PICTURE_LIST, "format picture list") +++A68_ATTR(PIPE_SYMBOL, "pipe-symbol") +++A68_ATTR(POINT_SYMBOL, "point-symbol") +++A68_ATTR(POSTLUDE_PART, "postlude-part") +++A68_ATTR(POSTLUDE_SYMBOL, "postlude-symbol") +++A68_ATTR(PRELUDE_PACKET, "prelude-packet") +++A68_ATTR(PRIMARY, "primary") +++A68_ATTR(PRIORITY, "operator priority") +++A68_ATTR(PRIORITY_DECLARATION, "operator priority declaration") +++A68_ATTR(PRIO_SYMBOL, "prio-symbol") +++A68_ATTR(PROCEDURE_DECLARATION, "procedure declaration") +++A68_ATTR(PROCEDURE_VARIABLE_DECLARATION, "procedure variable declaration") +++A68_ATTR(PROCEDURING, "proceduring coercion") +++A68_ATTR(PROC_SYMBOL, "proc-symbol") +++A68_ATTR(PUBLIC_SYMBOL, "public-symbol") +++A68_ATTR(QUALIFIER, "qualifier") +++A68_ATTR(RADIX_FRAME, "radix frame") +++A68_ATTR(REAL_DENOTATION, "real denotation") +++A68_ATTR(REAL_PATTERN, "real pattern") +++A68_ATTR(REAL_SYMBOL, "real-symbol") +++A68_ATTR(REF_SYMBOL, "ref-symbol") +++A68_ATTR(REPLICATOR, "format replicator") +++A68_ATTR(REVELATION, "revelation") +++A68_ATTR(REVELATION_PART, "revelation-part") +++A68_ATTR(ROUTINE_TEXT, "routine text") +++A68_ATTR(ROUTINE_UNIT, "routine unit") +++A68_ATTR(ROWING, "rowing coercion") +++A68_ATTR(ROWS_SYMBOL, "rows-symbol") +++A68_ATTR(ROW_CHAR_DENOTATION, "row of chars denotation") +++A68_ATTR(ROW_SYMBOL, "row-symbol") +++A68_ATTR(SECONDARY, "secondary") +++A68_ATTR(SELECTION, "selection") +++A68_ATTR(SELECTOR, "selector") +++A68_ATTR(SEMA_SYMBOL, "sema-symbol") +++A68_ATTR(SEMI_SYMBOL, "semi-symbol") +++A68_ATTR(SERIAL_CLAUSE, "serial clause") +++A68_ATTR(SERIES_MODE, "series mode") +++A68_ATTR(SHORTETY, "shortsety") +++A68_ATTR(SHORT_SYMBOL, "short-symbol") +++A68_ATTR(SIGN_MOULD, "sign mould") +++A68_ATTR(SKIP, "skip unit") +++A68_ATTR(SKIP_SYMBOL, "skip-symbol") +++A68_ATTR(SLICE, "slice") +++A68_ATTR(SOFT, "soft context") +++A68_ATTR(SOME_CLAUSE, "some clause") +++A68_ATTR(SPECIFICATION, "specification") +++A68_ATTR(SPECIFIED_UNIT, "specified unit") +++A68_ATTR(SPECIFIED_UNIT_LIST, "specified unit list") +++A68_ATTR(SPECIFIED_UNIT_UNIT, "specified unit unit") +++A68_ATTR(SPECIFIER, "specifier") +++A68_ATTR(SPECIFIER_IDENTIFIER, "specifier identifier") +++A68_ATTR(STANDARD, "standard") +++A68_ATTR(STATIC_REPLICATOR, "static replicator") +++A68_ATTR(STATIC_SYMBOL, "static-symbol") +++A68_ATTR(STOWED_MODE, "stowed mode") +++A68_ATTR(STRING_C_PATTERN, "string C-like pattern") +++A68_ATTR(STRING_PATTERN, "string pattern") +++A68_ATTR(STRING_SYMBOL, "string-symbol") +++A68_ATTR(STRONG, "strong context") +++A68_ATTR(STRUCTURED_FIELD, "structured field") +++A68_ATTR(STRUCTURED_FIELD_LIST, "structured field list") +++A68_ATTR(STRUCTURE_PACK, "structure pack") +++A68_ATTR(STRUCT_SYMBOL, "struct-symbol") +++A68_ATTR(STYLE_II_COMMENT_SYMBOL, "comment delimiter") +++A68_ATTR(STYLE_I_COMMENT_SYMBOL, "comment delimiter") +++A68_ATTR(STYLE_I_PRAGMAT_SYMBOL, "pragmat-symbol") +++A68_ATTR(SUB_SYMBOL, "sub-symbol") +++A68_ATTR(SUB_UNIT, "sub unit") +++A68_ATTR(TERTIARY, "tertiary") +++A68_ATTR(THEN_BAR_SYMBOL, "then-bar-symbol") +++A68_ATTR(THEN_PART, "then-part") +++A68_ATTR(THEN_SYMBOL, "then-symbol") +++A68_ATTR(TO_PART, "to-part") +++A68_ATTR(TO_SYMBOL, "to-symbol") +++A68_ATTR(TRIMMER, "trimmer") +++A68_ATTR(TRUE_SYMBOL, "true-symbol") +++A68_ATTR(UNION_DECLARER_LIST, "union declarer list") +++A68_ATTR(UNION_PACK, "union pack") +++A68_ATTR(UNION_SYMBOL, "union-symbol") +++A68_ATTR(UNIT, "unit") +++A68_ATTR(UNITING, "uniting coercion") +++A68_ATTR(UNIT_LIST, "unit list") +++A68_ATTR(UNIT_SERIES, "unit series") +++A68_ATTR(VARIABLE_DECLARATION, "variable declaration") +++A68_ATTR(VIRTUAL_DECLARER_MARK, "virtual declarer mark") +++A68_ATTR(VOIDING, "voiding coercion") +++A68_ATTR(VOID_SYMBOL, "void-symbol") +++A68_ATTR(WEAK, "weak context") +++A68_ATTR(WHILE_PART, "while-part") +++A68_ATTR(WHILE_SYMBOL, "while-symbol") +++A68_ATTR(WIDENING, "widening coercion") +++A68_ATTR(WILDCARD, "wildcard") +++ +++/* +++Local variables: +++mode:c +++End: +++*/ ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-bottom-up.cc ++@@ -0,0 +1,3026 @@ +++/* Hand-coded bottom-up parser for Algol 68. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++/* This is a Mailloux-type parser, in the sense that it scans a "phrase" for +++ definitions needed for parsing, and therefore allows for tags to be used +++ before they are defined, which gives some freedom in top-down programming. +++ +++ B. J. Mailloux. On the implementation of Algol 68. +++ Thesis, Universiteit van Amsterdam (Mathematisch Centrum) [1968]. +++ +++ Technically, Mailloux's approach renders the two-level grammar LALR. This +++ is the bottom-up parser that resolves the structure of the program. */ +++ +++/* *** Thou who adventure here, please read this *** +++ +++ On parse trees, phrases and branches +++ ------------------------------------ +++ +++ The Algol 68 parser operates on parse trees in which sibling nodes are +++ linked together in "phrases" via NEXT and PREVIOUS pointers, and sub-trees +++ or "branches" start at SUB pointers. For example, in the parse tree +++ +++ a +++ | +++ b - c - d - e +++ | +++ f - g - h - i +++ | +++ j +++ +++ 'a' is the root of the tree. +++ 'a', 'b - c - d - e', 'f - g - h -i' and 'j' are phrases. +++ 'a', 'c' and 'i' introduce branches to sub trees via their SUB pointer. +++ +++ From the scanner to the bottom-up parser +++ ---------------------------------------- +++ +++ The lexical analyzer transforms the textual input programs into a single +++ phrase with all the tokens. For example, the program text +++ +++ begin if A then B fi; +++ C +++ end; +++ D +++ +++ will be turned by the lexical analyzer into the following parse tree, which +++ in fact is a list conforming a single phrase: +++ +++ begin - if - A - then - B - fi - semi - C - end - semi - D +++ +++ This parse tree is then handed over to the top-down parser, which provides +++ some initial structure and turns the single phrase into an actual tree: +++ +++ begin - semi - D +++ | +++ begin - if - then - fi - end - semi - C - end +++ | | +++ | then - B +++ if - A +++ +++ Note how branches have been created for the closed clause and for the +++ different parts of the conditional clause. The same would have happened for +++ loop parts and case parts as well, but it is important to note that the role +++ of the top-down parser doesn't handle the conditional, loop or case clauses +++ themselves: it just branches the parts of these clauses that introduce +++ ranges. Taking care of structuring the clauses is precisely the main role of +++ the bottom-up parser. +++ +++ The bottom-up parser +++ -------------------- +++ +++ The bottom-up parser is given a parse tree like the one above, partially +++ structured in phrases by the top-down parser. The bottom-up parser then +++ proceeds from the root-node using two basic operations: +++ +++ - reduce a phrase, implemented by 'reduce'. +++ - reduce a sub-phrase starting at a branch, implemented by 'reduce_branch'. +++*/ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++/* Bottom-up parser, reduces all constructs. */ +++ +++ +++/* Maximum number of errors the bottom-up parser will try to recover from and +++ save diagnostics for. */ +++ +++#define MAX_ERRORS 5 +++ +++/* Forward declarations of some of the functions defined below. */ +++ +++static void reduce_branch (NODE_T *q, a68_attribute expect); +++static void recover_from_error (NODE_T * p, enum a68_attribute expect, bool suppress); +++static void reduce_declarers (NODE_T *p, enum a68_attribute expect); +++static void reduce_primary_parts (NODE_T *p, enum a68_attribute expect); +++static void reduce_primaries (NODE_T *p, enum a68_attribute expect); +++static void reduce_format_texts (NODE_T *p); +++static void reduce_secondaries (NODE_T *p); +++static void reduce_formulae (NODE_T * p); +++static void reduce_tertiaries (NODE_T *p); +++static void reduce_right_to_left_constructs (NODE_T *p); +++static void reduce_units (NODE_T * p); +++static void reduce_erroneous_units (NODE_T *p); +++static void reduce_generic_arguments (NODE_T *p); +++static void reduce_bounds (NODE_T *p); +++static void reduce_serial_clauses (NODE_T *p); +++static void reduce_enquiry_clauses (NODE_T *p); +++static void reduce_collateral_clauses (NODE_T *p); +++static void reduce_arguments (NODE_T *p); +++static void reduce_enclosed_clauses (NODE_T *q, enum a68_attribute expect); +++static void reduce_basic_declarations (NODE_T *p); +++static void reduce_declaration_lists (NODE_T *p); +++static void reduce_module_texts (NODE_T *p); +++static void reduce_module_text_parts (NODE_T *p); +++static NODE_T *reduce_dyadic (NODE_T *p, int u); +++ +++/* Whether a series is serial or collateral. */ +++ +++static enum a68_attribute +++serial_or_collateral (NODE_T *p) +++{ +++ int semis = 0, commas = 0, exits = 0; +++ for (NODE_T *q = p; q != NO_NODE; q = NEXT (q)) +++ { +++ if (IS (q, COMMA_SYMBOL)) +++ commas++; +++ else if (IS (q, SEMI_SYMBOL)) +++ semis++; +++ else if (IS (q, EXIT_SYMBOL)) +++ exits++; +++ } +++ +++ if (semis == 0 && exits == 0 && commas > 0) +++ return COLLATERAL_CLAUSE; +++ else if ((semis > 0 || exits > 0) && commas == 0) +++ return SERIAL_CLAUSE; +++ else if (semis == 0 && exits == 0 && commas == 0) +++ return SERIAL_CLAUSE; +++ else +++ /* Heuristic guess to give intelligible error message. */ +++ return (semis + exits >= commas) ? SERIAL_CLAUSE : COLLATERAL_CLAUSE; +++} +++ +++/* Insert a node with attribute "a" after "p". */ +++ +++static void +++pad_node (NODE_T *p, enum a68_attribute a) +++{ +++ /* This is used to fill information that Algol 68 does not require to be +++ present. Filling in gives one format for such construct; this helps later +++ passes. */ +++ NODE_T *z = a68_new_node (); +++ *z = *p; +++ if (GINFO (p) != NO_GINFO) +++ GINFO (z) = a68_new_genie_info (); +++ PREVIOUS (z) = p; +++ SUB (z) = NO_NODE; +++ ATTRIBUTE (z) = a; +++ MOID (z) = NO_MOID; +++ if (NEXT (z) != NO_NODE) +++ PREVIOUS (NEXT (z)) = z; +++ NEXT (p) = z; +++} +++ +++/* Diagnose extensions. */ +++ +++static void +++a68_extension (NODE_T *p) +++{ +++ a68_warning (p, OPT_Wextensions, "ast node is an extension"); +++} +++ +++/* Diagnose for clauses not yielding a value. */ +++ +++static void +++empty_clause (NODE_T *p) +++{ +++ a68_error (p, "clause does not yield a value"); +++} +++ +++/* Diagnose for missing symbol. */ +++ +++static void +++strange_tokens (NODE_T *p) +++{ +++ NODE_T *q = ((p != NO_NODE && NEXT (p) != NO_NODE) ? NEXT (p) : p); +++ a68_error (q, "possibly a missing or erroneous symbol nearby"); +++} +++ +++/* Diagnose for strange separator. */ +++ +++static void +++strange_separator (NODE_T *p) +++{ +++ NODE_T *q = ((p != NO_NODE && NEXT (p) != NO_NODE) ? NEXT (p) : p); +++ a68_error (q, "possibly a missing or erroneous separator nearby"); +++} +++ +++/* If match then reduce a sentence, the core bottom-up parser routine. The +++ reduction of a sequence of nodes stating at P: +++ +++ P - A - B - C - D - E - F +++ +++ where the attributes passed to this function are Z P A B C, the result of +++ the reduction is: +++ +++ Z - D - E - F +++ | +++ P - A - B - C +++ +++ Note how the node pointed by P gets changed after a reduction gets +++ performed. +++ +++ P is the AST node from where start matching. +++ +++ ATTRS is a sequence of node attributes. The first of these attributes is +++ the kind of node resulting from the reduction. The rest of attributes are +++ the matched in order starting at P, then a reduction is performed. Two node +++ attributes exist that convey special meaning when passing to "reduce": +++ +++ STOP marks the end of the variable-length sequence of attributes to match. +++ +++ WILDCARD will match any non terminal, with the exception of a keyword. It +++ is used to recover from errors. +++ +++ A is a "noting" function that is invoked and passed P right before doing the +++ reduction. If A is NO_NOTE then it is not used. +++ +++ The boolean Z is set to "true" if the reduction has been performed, and is +++ left untouched otherwise. If Z is NO_TICK then it is not used. +++ +++ It is common to invoke "reduce" in a row in order to try the reduction of +++ several alternatives, which are mutually exclusive. For example: +++ +++ reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, LABEL, ENCLOSED_CLAUSE, STOP); +++ reduce (p, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, ENCLOSED_CLAUSE, STOP); +++ +++ We know that at much only one of these reductions will succeed, becuase if +++ the first reduction succeeds, then P gets changed to LABEL which cannot +++ match ENCLOSED_CLAUSE. +++ +++ Sometimes, however, "reduce" is invoked in a row in a way the second +++ reduction is intended to succeed if the first one succeeds. For example: +++ +++ reduce (p, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); +++ +++ In this case if the first reduction succeeds, then the resulting +++ PARALLEL_CLAUSE will be itself reduced to an ENCLOSED_CLAUSE. +++ +++ Another typical usage of "reduce" is to put it in a loop in order to reduce +++ matches of a left-recursive rule. This is where Z comes to play. For +++ example, consider the rules: +++ +++ label : defining identifier, colon symbol ; +++ label, defining identifier, colon symbol. +++ +++ The second alternative is left-recursive, and along with the first rule +++ defines a sequence of one or more labels, each label consisting on a +++ defining identifier followed by a colon symbol. We could match these rules +++ using the following loop: +++ +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); +++ } +++ +++ Note how, when presented with a sequence of labels like `l1: l2: l3: ...', +++ the first call to "reduce" will succeed, turning Q into a LABEL. Then the +++ second call to "reduce" will also succed, reducing to another LABEL and +++ setting SIGA to "true". In subsequent iterations of the loop the first call +++ will always fail, and the second call will keep succeeding as more sequences +++ of DEFINING_IDENTIFIER, COLON_SYMBOL get matched. */ +++ +++static void +++reduce (NODE_T *p, void (*a) (NODE_T *), bool *z, /* attrs */...) +++{ +++ va_list list; +++ va_start (list, z); +++ enum a68_attribute expect; +++ enum a68_attribute result = (enum a68_attribute) va_arg (list, int); +++ NODE_T *head = p, *tail = NO_NODE; +++ +++ while ((expect = (enum a68_attribute) va_arg (list, int)) != STOP) +++ { +++ bool keep_matching; +++ +++ if (p == NO_NODE) +++ keep_matching = false; +++ else if (expect == WILDCARD) +++ /* WILDCARD matches any non terminal, but no keyword. */ +++ keep_matching = (a68_attribute_name (ATTRIBUTE (p)) != NO_TEXT); +++ else +++ { +++ if (expect == SKIP) +++ { +++ /* Stray "~" matches expected SKIP. */ +++ if (IS (p, OPERATOR) && IS_LITERALLY (p, "~")) +++ ATTRIBUTE (p) = SKIP; +++ } +++ +++ if (expect >= 0) +++ keep_matching = (expect == ATTRIBUTE (p)); +++ else +++ keep_matching = (expect != ATTRIBUTE (p)); +++ } +++ +++ if (keep_matching) +++ { +++ tail = p; +++ FORWARD (p); +++ } +++ else +++ { +++ va_end (list); +++ return; +++ } +++ } +++ +++ /* Make reduction. */ +++ if (a != NO_NOTE) +++ a (head); +++ +++ a68_make_sub (head, tail, result); +++ va_end (list); +++ if (z != NO_TICK) +++ *z = true; +++} +++ +++/* Graciously ignore extra semicolons. */ +++ +++static void +++ignore_superfluous_semicolons (NODE_T *p) +++{ +++ /* This routine relaxes the parser a bit with respect to superfluous +++ semicolons, for instance "FI; OD". These provoke only a warning. */ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ ignore_superfluous_semicolons (SUB (p)); +++ +++ if (NEXT (p) != NO_NODE && IS (NEXT (p), SEMI_SYMBOL) && NEXT_NEXT (p) == NO_NODE) +++ { +++ a68_warning (NEXT (p), 0, +++ "skipped superfluous A", ATTRIBUTE (NEXT (p))); +++ NEXT (p) = NO_NODE; +++ } +++ else if (IS (p, SEMI_SYMBOL) && a68_is_semicolon_less (NEXT (p))) +++ { +++ a68_warning (p, 0, +++ "skipped superfluous A", ATTRIBUTE (p)); +++ if (PREVIOUS (p) != NO_NODE) +++ NEXT (PREVIOUS (p)) = NEXT (p); +++ PREVIOUS (NEXT (p)) = PREVIOUS (p); +++ } +++ } +++} +++ +++/* Reduce a particular program. */ +++ +++void +++reduce_particular_program (NODE_T *p) +++{ +++ /* A program is "label sequence; particular program". */ +++ a68_extract_labels (p, SERIAL_CLAUSE); +++ +++ NODE_T *q = p; +++ /* Parse the program itself. */ +++ for (; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga = true; +++ +++ if (SUB (q) != NO_NODE) +++ reduce_branch (q, SOME_CLAUSE); +++ +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); +++ } +++ } +++ /* Determine the encompassing enclosed clause. */ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); +++ } +++ +++ /* Try reducing a particular program. */ +++ q = p; +++ reduce (q, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, LABEL, ENCLOSED_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PARTICULAR_PROGRAM, ENCLOSED_CLAUSE, STOP); +++} +++ +++/* Reduce a prelude packet. */ +++ +++void +++reduce_prelude_packet (NODE_T *p) +++{ +++ /* Extract the module indicants. */ +++ a68_extract_indicants (p); +++ +++ /* Reduce MODULE_TEXTs */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, ALT_ACCESS_SYMBOL)) +++ reduce_branch (q, MODULE_TEXT); +++ else if (IS (q, DEF_SYMBOL)) +++ { +++ for (NODE_T *v = q; v != NO_NODE; FORWARD (v)) +++ { +++ if (IS (v, DEF_SYMBOL)) +++ reduce_branch (v, DEF_PART); +++ else if (IS (v, POSTLUDE_SYMBOL)) +++ reduce_branch (v, POSTLUDE_PART); +++ } +++ reduce_module_texts (q); +++ } +++ } +++ +++ /* Single module declaration. */ +++ reduce (p, NO_NOTE, NO_TICK, +++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); +++ reduce (p, strange_tokens, NO_TICK, +++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, -MODULE_TEXT, STOP); +++ +++ /* Joined module declarations. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga; +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, +++ MODULE_DECLARATION, MODULE_DECLARATION, +++ COMMA_SYMBOL, DEFINING_MODULE_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); +++ } +++ while (siga); +++ } +++ +++ /* Try reducing a prelude packet. */ +++ reduce (p, NO_NOTE, NO_TICK, PRELUDE_PACKET, MODULE_DECLARATION, STOP); +++} +++ +++/* Driver for the bottom-up parser. */ +++ +++void +++a68_bottom_up_parser (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (!setjmp (A68_PARSER (bottom_up_crash_exit))) +++ { +++ NODE_T *q; +++ int error_count_0 = ERROR_COUNT (&A68_JOB); +++ +++ ignore_superfluous_semicolons (p); +++ +++ /* A compilation unit is a packet, which can be either a particular +++ program or a prelude packet. */ +++ if (IS (p, MODULE_SYMBOL)) +++ reduce_prelude_packet (p); +++ else +++ reduce_particular_program (p); +++ +++ /* Try reducing the packet. */ +++ q = p; +++ reduce (q, NO_NOTE, NO_TICK, PACKET, PARTICULAR_PROGRAM, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PACKET, PRELUDE_PACKET, STOP); +++ if (SUB (p) == NO_NODE || NEXT (p) != NO_NODE) +++ recover_from_error (p, PACKET, +++ ((ERROR_COUNT (&A68_JOB) - error_count_0) > MAX_ERRORS)); +++ } +++ } +++} +++ +++/* Reduce the sub-phrase that starts one level down. +++ +++ EXPECT is the expected construct for the sub-phrase, and it is used to guide +++ the parsing by determining what reductions to try. This can be SOME_CLAUSE, +++ which means either a serial or a collateral clause. +++ +++ This is a recursive process. Let's suppose we have the parse tree below and +++ we call `reduce_branch (b, EXPECT)': +++ +++ a - b - c - d - e +++ | +++ b - x - y - z +++ | +++ v - w +++ +++ The first thing this function does is to traverse the 'b' branch +++ +++ b - x - y - z +++ +++ looking for declarations of indicants, priorities and operators +++ (a68_extract_{indicants,priorities,operators}). Using this information , it +++ determines the nature of bold tags occuring in the branch, by turning +++ BOLD_TAG nodes into either INDICANT nodes or OPERATOR nodes +++ (a68_elaborate_bold_tags). +++ +++ At this point it is possible to try reduce the declarers within the 'b' +++ subtree, so reduce_declarers is invoked on it. This function is recursive +++ and performs reductions of several kinds: sequences of 'long' and 'short' +++ symbols into sizeties, symbols like 'int' and 'real' into indicants, +++ declarers, declarer lists, etc. +++ +++ Once that is done, the 'p' branch is traversed and reduce_branch is invoked +++ recursively in certain nodes that start a sub-branch: +++ +++ | Recursing in branch | with expect | +++ |--------------------------------------------------+-------------------| +++ | FORMAT_DELIMITER_SYMBOL, FORMAT_OPEN_SYMBOL | FORMAT_TEXT | +++ |--------------------------------------------------+-------------------| +++ | OPEN_SYMBOL, IN_SYMBOL | COLLATERAL_CLAUSE | +++ |--------------------------------------------------+-------------------| +++ | IF_SYMBOL, ELIF_SYMBOL, CASE_SYMBOL, OUSE_SYMBOL | ENQUIRY_CLAUSE | +++ | WHILE_SYMBOL, ELSE_BAR_SYMBOL, DEF_SYMBOL | | +++ |--------------------------------------------------+-------------------| +++ | BEGIN_SYMBOL, THEN_BAR_SYMBOL | SOME_CLAUSE | +++ |--------------------------------------------------+-------------------| +++ | THEN_SYMBOL, ELSE_SYMBOL, OUT_SYMBOL | SERIAL_CLAUSE | +++ | DO_SYMBOL, ALT_DO_SYMBOL, POSTLUDE_SYMBOL | | +++ |--------------------------------------------------+-------------------| +++ | LOOP_CLAUSE, ACCESS_SYMBOL | ENCLOSED_CLAUSE | +++ |--------------------------------------------------+-------------------| +++ | FOR_SYMBOL, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL | UNIT | +++ +++ Once all the sub-branches are reduced, the final step is to finally reduce +++ the 'b' branch, trying different possibilities: basic declarations, units, +++ bounds, declaration lists, clauses, module texts, etc. +++ +++ Note that reducing a branch requires knowing the kind of resulting subtree. +++ So if you find yourself wanting to call reduce_branch and don't know what to +++ pass in EXPECT, you are probably doing something wrong.. very likely you +++ want to make reduce_branch aware of a new sort of branch. */ +++ +++static void +++reduce_branch (NODE_T *q, enum a68_attribute expect) +++{ +++ /* If unsuccessful then the routine will at least copy the resulting +++ attribute as the parser can repair some faults. This gives less spurious +++ diagnostics. */ +++ if (q != NO_NODE && SUB (q) != NO_NODE) +++ { +++ NODE_T *p = SUB (q), *u = NO_NODE; +++ int error_count_0 = ERROR_COUNT (&A68_JOB), error_count_02; +++ bool declarer_pack = false, no_error; +++ +++ switch (expect) +++ { +++ case STRUCTURE_PACK: +++ case PARAMETER_PACK: +++ case FORMAL_DECLARERS: +++ case UNION_PACK: +++ case SPECIFIER: +++ declarer_pack = true; +++ break; +++ default: +++ declarer_pack = false; +++ } +++ +++ /* Sample all info needed to decide whether a bold tag is operator or +++ indicant. Find the meaning of bold tags and quit in case of extra +++ errors. */ +++ a68_extract_indicants (p); +++ if (!declarer_pack) +++ { +++ a68_extract_priorities (p); +++ a68_extract_operators (p); +++ } +++ +++ error_count_02 = ERROR_COUNT (&A68_JOB); +++ a68_elaborate_bold_tags (p); +++ if ((ERROR_COUNT (&A68_JOB) - error_count_02) > 0) +++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); +++ +++ /* Now we can reduce declarers, knowing which bold tags are indicants. */ +++ reduce_declarers (p, expect); +++ /* Parse the phrase, as appropriate. */ +++ if (declarer_pack == false) +++ { +++ error_count_02 = ERROR_COUNT (&A68_JOB); +++ a68_extract_declarations (p); +++ if ((ERROR_COUNT (&A68_JOB) - error_count_02) > 0) +++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); +++ a68_extract_labels (p, expect); +++ for (u = p; u != NO_NODE; FORWARD (u)) +++ { +++ if (SUB (u) != NO_NODE) +++ { +++ if (IS (u, FORMAT_DELIMITER_SYMBOL)) +++ reduce_branch (u, FORMAT_TEXT); +++ else if (IS (u, FORMAT_OPEN_SYMBOL)) +++ reduce_branch (u, FORMAT_TEXT); +++ else if (IS (u, OPEN_SYMBOL)) +++ { +++ if (NEXT (u) != NO_NODE && IS (NEXT (u), THEN_BAR_SYMBOL)) +++ reduce_branch (u, ENQUIRY_CLAUSE); +++ else if (PREVIOUS (u) != NO_NODE && IS (PREVIOUS (u), PAR_SYMBOL)) +++ reduce_branch (u, COLLATERAL_CLAUSE); +++ } +++ else if (a68_is_one_of (u, IF_SYMBOL, ELIF_SYMBOL, CASE_SYMBOL, +++ OUSE_SYMBOL, WHILE_SYMBOL, +++ ELSE_BAR_SYMBOL, DEF_PART, STOP)) +++ reduce_branch (u, ENQUIRY_CLAUSE); +++ else if (IS (u, BEGIN_SYMBOL)) +++ reduce_branch (u, SOME_CLAUSE); +++ else if (a68_is_one_of (u, THEN_SYMBOL, ELSE_SYMBOL, OUT_SYMBOL, +++ DO_SYMBOL, ALT_DO_SYMBOL, +++ POSTLUDE_PART, STOP)) +++ reduce_branch (u, SERIAL_CLAUSE); +++ else if (IS (u, IN_SYMBOL)) +++ reduce_branch (u, COLLATERAL_CLAUSE); +++ else if (IS (u, THEN_BAR_SYMBOL)) +++ reduce_branch (u, SOME_CLAUSE); +++ else if (IS (u, ACCESS_SYMBOL)) +++ reduce_branch (u, ENCLOSED_CLAUSE); +++ else if (IS (u, DEF_SYMBOL)) +++ reduce_branch (u, DEF_PART); +++ else if (IS (u, POSTLUDE_SYMBOL)) +++ reduce_branch (u, POSTLUDE_PART); +++ else if (IS (u, LOOP_CLAUSE)) +++ reduce_branch (u, ENCLOSED_CLAUSE); +++ else if (a68_is_one_of (u, FOR_SYMBOL, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL, +++ STOP)) +++ reduce_branch (u, UNIT); +++ } +++ } +++ +++ reduce_primary_parts (p, expect); +++ if (expect != ENCLOSED_CLAUSE) +++ { +++ reduce_primaries (p, expect); +++ if (expect == FORMAT_TEXT) +++ reduce_format_texts (p); +++ else +++ { +++ reduce_secondaries (p); +++ reduce_formulae (p); +++ reduce_tertiaries (p); +++ } +++ } +++ +++ reduce_right_to_left_constructs (p); +++ /* Reduce units and declarations. */ +++ reduce_basic_declarations (p); +++ reduce_units (p); +++ reduce_erroneous_units (p); +++ if (expect != UNIT) +++ { +++ if (expect == GENERIC_ARGUMENT) +++ reduce_generic_arguments (p); +++ else if (expect == BOUNDS) +++ reduce_bounds (p); +++ else +++ { +++ reduce_declaration_lists (p); +++ if (expect != DECLARATION_LIST) +++ { +++ for (u = p; u != NO_NODE; FORWARD (u)) +++ { +++ reduce (u, NO_NOTE, NO_TICK, LABELED_UNIT, LABEL, UNIT, STOP); +++ reduce (u, NO_NOTE, NO_TICK, SPECIFIED_UNIT, SPECIFIER, +++ COLON_SYMBOL, UNIT, STOP); +++ } +++ if (expect == SOME_CLAUSE) +++ expect = serial_or_collateral (p); +++ if (expect == SERIAL_CLAUSE) +++ reduce_serial_clauses (p); +++ else if (expect == ENQUIRY_CLAUSE) +++ reduce_enquiry_clauses (p); +++ else if (expect == COLLATERAL_CLAUSE) +++ reduce_collateral_clauses (p); +++ else if (expect == ARGUMENT) +++ reduce_arguments (p); +++ } +++ } +++ } +++ reduce_enclosed_clauses (p, expect); +++ if (expect == DEF_PART || expect == POSTLUDE_PART) +++ reduce_module_text_parts (p); +++ if (expect == MODULE_TEXT) +++ reduce_module_texts (p); +++ } +++ +++ /* Do something if parsing failed. */ +++ if (SUB (p) == NO_NODE || NEXT (p) != NO_NODE) +++ { +++ recover_from_error (p, expect, +++ ((ERROR_COUNT (&A68_JOB) - error_count_0) > MAX_ERRORS)); +++ no_error = false; +++ } +++ else +++ no_error = true; +++ ATTRIBUTE (q) = ATTRIBUTE (p); +++ if (no_error) +++ SUB (q) = SUB (p); +++ } +++} +++ +++/* Driver for reducing declarers. */ +++ +++static void +++reduce_declarers (NODE_T *p, enum a68_attribute expect) +++{ +++ NODE_T *q; bool siga; /* Must be in this scope. */ +++ +++ /* Reduce lengtheties. */ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ siga = true; +++ reduce (q, NO_NOTE, NO_TICK, LONGETY, LONG_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, SHORTETY, SHORT_SYMBOL, STOP); +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, LONGETY, LONGETY, LONG_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, SHORTETY, SHORTETY, SHORT_SYMBOL, STOP); +++ } +++ } +++ +++ /* Reduce indicants. */ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, INT_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, REAL_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BITS_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BYTES_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, COMPLEX_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, COMPL_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, BOOL_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, CHAR_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, FORMAT_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, STRING_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, FILE_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, CHANNEL_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INDICANT, SEMA_SYMBOL, STOP); +++ } +++ +++ /* Reduce standard stuff. */ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (a68_whether (q, LONGETY, INDICANT, STOP)) +++ { +++ int a; +++ +++ if (SUB_NEXT (q) == NO_NODE) +++ { +++ a68_error (NEXT (q), +++ "Y expected", "appropriate declarer"); +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); +++ } +++ else +++ { +++ a = ATTRIBUTE (SUB_NEXT (q)); +++ +++ if (a == INT_SYMBOL || a == REAL_SYMBOL || a == BITS_SYMBOL +++ || a == BYTES_SYMBOL || a == COMPLEX_SYMBOL +++ || a == COMPL_SYMBOL) +++ { +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); +++ } +++ else +++ { +++ a68_error (NEXT (q), +++ "Y expected", "appropriate declarer"); +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); +++ } +++ } +++ } +++ else if (a68_whether (q, SHORTETY, INDICANT, STOP)) +++ { +++ int a; +++ +++ if (SUB_NEXT (q) == NO_NODE) +++ { +++ a68_error (NEXT (q), +++ "Y expected", "appropriate declarer"); +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, SHORTETY, INDICANT, STOP); +++ } +++ else +++ { +++ a = ATTRIBUTE (SUB_NEXT (q)); +++ if (a == INT_SYMBOL || a == REAL_SYMBOL || a == BITS_SYMBOL +++ || a == BYTES_SYMBOL || a == COMPLEX_SYMBOL || a == COMPL_SYMBOL) +++ { +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, SHORTETY, INDICANT, STOP); +++ } +++ else +++ { +++ a68_error (NEXT (q), +++ "Y expected", "appropriate declarer"); +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, LONGETY, INDICANT, STOP); +++ } +++ } +++ } +++ } +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, INDICANT, STOP); +++ +++ /* Reduce declarer lists. */ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (NEXT (q) != NO_NODE && SUB_NEXT (q) != NO_NODE) +++ { +++ if (IS (q, STRUCT_SYMBOL)) +++ { +++ reduce_branch (NEXT (q), STRUCTURE_PACK); +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, STRUCT_SYMBOL, STRUCTURE_PACK, STOP); +++ } +++ else if (IS (q, UNION_SYMBOL)) +++ { +++ reduce_branch (NEXT (q), UNION_PACK); +++ reduce (q, NO_NOTE, NO_TICK, DECLARER, UNION_SYMBOL, UNION_PACK, STOP); +++ } +++ else if (IS (q, PROC_SYMBOL)) +++ { +++ if (a68_whether (q, PROC_SYMBOL, OPEN_SYMBOL, STOP)) +++ { +++ if (!a68_is_formal_bounds (SUB_NEXT (q))) +++ reduce_branch (NEXT (q), FORMAL_DECLARERS); +++ } +++ } +++ else if (IS (q, OP_SYMBOL)) +++ { +++ if (a68_whether (q, OP_SYMBOL, OPEN_SYMBOL, STOP)) +++ { +++ if (!a68_is_formal_bounds (SUB_NEXT (q))) +++ reduce_branch (NEXT (q), FORMAL_DECLARERS); +++ } +++ } +++ } +++ } +++ +++ /* Reduce row, proc or op declarers. */ +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ /* FLEX DECL. */ +++ if (a68_whether (q, FLEX_SYMBOL, DECLARER, STOP)) +++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, DECLARER, STOP); +++ +++ /* FLEX [] DECL. */ +++ if (a68_whether (q, FLEX_SYMBOL, SUB_SYMBOL, DECLARER, STOP) && SUB_NEXT (q) != NO_NODE) +++ { +++ reduce_branch (NEXT (q), BOUNDS); +++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, BOUNDS, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, FORMAL_BOUNDS, DECLARER, STOP); +++ } +++ +++ /* FLEX () DECL. */ +++ if (a68_whether (q, FLEX_SYMBOL, OPEN_SYMBOL, DECLARER, STOP) && SUB_NEXT (q) != NO_NODE) +++ { +++ if (!a68_whether (q, FLEX_SYMBOL, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) +++ { +++ reduce_branch (NEXT (q), BOUNDS); +++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, BOUNDS, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, DECLARER, FLEX_SYMBOL, FORMAL_BOUNDS, DECLARER, STOP); +++ } +++ } +++ +++ /* [] DECL. */ +++ if (a68_whether (q, SUB_SYMBOL, DECLARER, STOP) && SUB (q) != NO_NODE) +++ { +++ reduce_branch (q, BOUNDS); +++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); +++ } +++ +++ /* () DECL. */ +++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, STOP) && SUB (q) != NO_NODE) +++ { +++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) +++ { +++ /* Catch e.g. (INT i) () INT:. */ +++ if (a68_is_formal_bounds (SUB (q))) +++ { +++ reduce_branch (q, BOUNDS); +++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); +++ } +++ } +++ else +++ { +++ reduce_branch (q, BOUNDS); +++ reduce (q, NO_NOTE, &siga, DECLARER, BOUNDS, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, DECLARER, FORMAL_BOUNDS, DECLARER, STOP); +++ } +++ } +++ } +++ +++ /* PROC DECL, PROC () DECL, OP () DECL. */ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ int a = ATTRIBUTE (q); +++ if (a == REF_SYMBOL) +++ reduce (q, NO_NOTE, &siga, DECLARER, REF_SYMBOL, DECLARER, STOP); +++ else if (a == PROC_SYMBOL) +++ { +++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, FORMAL_DECLARERS, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, VOID_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, DECLARER, PROC_SYMBOL, FORMAL_DECLARERS, VOID_SYMBOL, STOP); +++ } +++ else if (a == OP_SYMBOL) +++ { +++ reduce (q, NO_NOTE, &siga, OPERATOR_PLAN, OP_SYMBOL, FORMAL_DECLARERS, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, OPERATOR_PLAN, OP_SYMBOL, FORMAL_DECLARERS, VOID_SYMBOL, STOP); +++ } +++ } +++ } +++ +++ /* Reduce packs etcetera. */ +++ if (expect == STRUCTURE_PACK) +++ { +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD, DECLARER, IDENTIFIER, STOP); +++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD, STRUCTURED_FIELD, COMMA_SYMBOL, IDENTIFIER, STOP); +++ } +++ } +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD, STOP); +++ reduce (q, NO_NOTE, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, +++ COMMA_SYMBOL, STRUCTURED_FIELD, STOP); +++ reduce (q, strange_separator, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, +++ STRUCTURED_FIELD, STOP); +++ reduce (q, strange_separator, &siga, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD_LIST, +++ SEMI_SYMBOL, STRUCTURED_FIELD, STOP); +++ } +++ } +++ q = p; +++ reduce (q, NO_NOTE, NO_TICK, STRUCTURE_PACK, OPEN_SYMBOL, STRUCTURED_FIELD_LIST, +++ CLOSE_SYMBOL, STOP); +++ } +++ else if (expect == PARAMETER_PACK) +++ { +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, PARAMETER, DECLARER, IDENTIFIER, STOP); +++ reduce (q, NO_NOTE, &siga, PARAMETER, PARAMETER, COMMA_SYMBOL, IDENTIFIER, STOP); +++ } +++ } +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, PARAMETER_LIST, PARAMETER, STOP); +++ reduce (q, NO_NOTE, &siga, PARAMETER_LIST, PARAMETER_LIST, COMMA_SYMBOL, PARAMETER, STOP); +++ } +++ } +++ q = p; +++ reduce (q, NO_NOTE, NO_TICK, PARAMETER_PACK, OPEN_SYMBOL, PARAMETER_LIST, +++ CLOSE_SYMBOL, STOP); +++ } +++ else if (expect == FORMAL_DECLARERS) +++ { +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, FORMAL_DECLARERS_LIST, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, +++ COMMA_SYMBOL, DECLARER, STOP); +++ reduce (q, strange_separator, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, +++ SEMI_SYMBOL, DECLARER, STOP); +++ reduce (q, strange_separator, &siga, FORMAL_DECLARERS_LIST, FORMAL_DECLARERS_LIST, +++ DECLARER, STOP); +++ } +++ } +++ q = p; +++ reduce (q, NO_NOTE, NO_TICK, FORMAL_DECLARERS, OPEN_SYMBOL, FORMAL_DECLARERS_LIST, +++ CLOSE_SYMBOL, STOP); +++ } +++ else if (expect == UNION_PACK) +++ { +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, VOID_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, +++ COMMA_SYMBOL, DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, +++ COMMA_SYMBOL, VOID_SYMBOL, STOP); +++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, +++ SEMI_SYMBOL, DECLARER, STOP); +++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, +++ SEMI_SYMBOL, VOID_SYMBOL, STOP); +++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, +++ DECLARER, STOP); +++ reduce (q, strange_separator, &siga, UNION_DECLARER_LIST, UNION_DECLARER_LIST, +++ VOID_SYMBOL, STOP); +++ } +++ } +++ q = p; +++ reduce (q, NO_NOTE, NO_TICK, UNION_PACK, OPEN_SYMBOL, UNION_DECLARER_LIST, +++ CLOSE_SYMBOL, STOP); +++ } +++ else if (expect == SPECIFIER) +++ { +++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, DECLARER, IDENTIFIER, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, DECLARER, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, SPECIFIER, OPEN_SYMBOL, VOID_SYMBOL, CLOSE_SYMBOL, STOP); +++ } +++ else +++ { +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (a68_whether (q, OPEN_SYMBOL, COLON_SYMBOL, STOP) +++ && !(expect == GENERIC_ARGUMENT || expect == BOUNDS)) +++ { +++ if (a68_is_one_of (p, IN_SYMBOL, THEN_BAR_SYMBOL, STOP)) +++ reduce_branch (q, SPECIFIER); +++ } +++ if (a68_whether (q, OPEN_SYMBOL, DECLARER, COLON_SYMBOL, STOP)) +++ reduce_branch (q, PARAMETER_PACK); +++ if (a68_whether (q, OPEN_SYMBOL, VOID_SYMBOL, COLON_SYMBOL, STOP)) +++ reduce_branch (q, PARAMETER_PACK); +++ } +++ } +++} +++ +++/* Handle cases that need reducing from right-to-left. */ +++ +++static void +++reduce_right_to_left_constructs (NODE_T *p) +++{ +++ /* Here are cases that need reducing from right-to-left whereas many things +++ can be reduced left-to-right. Assignations are a notable example; one +++ could discuss whether it would not be more natural to write 1 =: k instead +++ of k := 1. (jemarch: MARY did just that.) The latter is said to be more +++ natural, or it could be just computing history. Meanwhile we use this +++ routine. */ +++ +++ if (p != NO_NODE) +++ { +++ reduce_right_to_left_constructs (NEXT (p)); +++ /* Assignations. */ +++ if (IS (p, TERTIARY)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, TERTIARY, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, IDENTITY_RELATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, AND_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, OR_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, ROUTINE_TEXT, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, JUMP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, SKIP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ASSIGNATION, TERTIARY, ASSIGN_SYMBOL, ASSIGNATION, STOP); +++ } +++ +++ /* Routine texts with parameter pack. */ +++ else if (IS (p, PARAMETER_PACK)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, ASSIGNATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, IDENTITY_RELATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL,AND_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, OR_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, JUMP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, SKIP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, TERTIARY, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, DECLARER, COLON_SYMBOL, ROUTINE_TEXT, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, ASSIGNATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, IDENTITY_RELATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, AND_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, OR_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, JUMP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, SKIP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, TERTIARY, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ ROUTINE_TEXT, PARAMETER_PACK, VOID_SYMBOL, COLON_SYMBOL, ROUTINE_TEXT, STOP); +++ } +++ /* Routine texts without parameter pack. */ +++ else if (IS (p, DECLARER)) +++ { +++ if (!(PREVIOUS (p) != NO_NODE && IS (PREVIOUS (p), PARAMETER_PACK))) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, ASSIGNATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, IDENTITY_RELATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, AND_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, OR_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, JUMP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, SKIP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, TERTIARY, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, DECLARER, COLON_SYMBOL, ROUTINE_TEXT, STOP); +++ } +++ } +++ else if (IS (p, VOID_SYMBOL)) +++ { +++ if (!(PREVIOUS (p) != NO_NODE && IS (PREVIOUS (p), PARAMETER_PACK))) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, ASSIGNATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, IDENTITY_RELATION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, AND_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, OR_FUNCTION, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, JUMP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, SKIP, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, TERTIARY, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ROUTINE_TEXT, VOID_SYMBOL, COLON_SYMBOL, ROUTINE_TEXT, STOP); +++ } +++ } +++ } +++} +++ +++/* Reduce primary elements. */ +++ +++static void +++reduce_primary_parts (NODE_T *p, enum a68_attribute expect) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (a68_whether (q, IDENTIFIER, OF_SYMBOL, STOP)) +++ ATTRIBUTE (q) = FIELD_IDENTIFIER; +++ +++ reduce (q, NO_NOTE, NO_TICK, NIHIL, NIL_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, SKIP, SKIP_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, SELECTOR, FIELD_IDENTIFIER, OF_SYMBOL, STOP); +++ /* JUMPs without GOTO are resolved later. */ +++ reduce (q, NO_NOTE, NO_TICK, JUMP, GOTO_SYMBOL, IDENTIFIER, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, INT_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, REAL_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, LONGETY, BITS_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, INT_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, REAL_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, SHORTETY, BITS_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, INT_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, REAL_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, BITS_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, ROW_CHAR_DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, TRUE_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, FALSE_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DENOTATION, EMPTY_SYMBOL, STOP); +++ if (expect == SERIAL_CLAUSE || expect == ENQUIRY_CLAUSE || expect == SOME_CLAUSE) +++ { +++ bool siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, LABEL, LABEL, DEFINING_IDENTIFIER, COLON_SYMBOL, STOP); +++ } +++ } +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); +++ } +++} +++ +++/* Reduce primaries completely. */ +++ +++static void +++reduce_primaries (NODE_T *p, enum a68_attribute expect) +++{ +++ NODE_T *q = p; +++ while (q != NO_NODE) +++ { +++ bool fwd = true, siga; +++ /* Primaries excepts call and slice. */ +++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, IDENTIFIER, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, DENOTATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, CAST, DECLARER, ENCLOSED_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, CAST, VOID_SYMBOL, ENCLOSED_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ASSERTION, ASSERT_SYMBOL, ENCLOSED_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, CAST, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, ENCLOSED_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PRIMARY, FORMAT_TEXT, STOP); +++ /* Call and slice. */ +++ siga = true; +++ while (siga) +++ { +++ NODE_T *x = NEXT (q); +++ +++ siga = false; +++ if (IS (q, PRIMARY) && x != NO_NODE) +++ { +++ if (IS (x, OPEN_SYMBOL)) +++ { +++ reduce_branch (NEXT (q), GENERIC_ARGUMENT); +++ reduce (q, NO_NOTE, &siga, SPECIFICATION, PRIMARY, GENERIC_ARGUMENT, STOP); +++ reduce (q, NO_NOTE, &siga, PRIMARY, SPECIFICATION, STOP); +++ } +++ else if (IS (x, SUB_SYMBOL)) +++ { +++ reduce_branch (NEXT (q), GENERIC_ARGUMENT); +++ reduce (q, NO_NOTE, &siga, SPECIFICATION, PRIMARY, GENERIC_ARGUMENT, STOP); +++ reduce (q, NO_NOTE, &siga, PRIMARY, SPECIFICATION, STOP); +++ } +++ } +++ } +++ +++ /* Now that call and slice are known, reduce remaining ( .. ). */ +++ if (IS (q, OPEN_SYMBOL) && SUB (q) != NO_NODE) +++ { +++ reduce_branch (q, SOME_CLAUSE); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); +++ if (PREVIOUS (q) != NO_NODE) +++ { +++ BACKWARD (q); +++ fwd = false; +++ } +++ } +++ +++ /* Format text items. */ +++ if (expect == FORMAT_TEXT) +++ { +++ NODE_T *r; +++ +++ for (r = p; r != NO_NODE; FORWARD (r)) +++ { +++ reduce (r, NO_NOTE, NO_TICK, DYNAMIC_REPLICATOR, FORMAT_ITEM_N, ENCLOSED_CLAUSE, STOP); +++ reduce (r, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_G, ENCLOSED_CLAUSE, STOP); +++ reduce (r, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_H, ENCLOSED_CLAUSE, STOP); +++ reduce (r, NO_NOTE, NO_TICK, FORMAT_PATTERN, FORMAT_ITEM_F, ENCLOSED_CLAUSE, STOP); +++ } +++ } +++ if (fwd) +++ FORWARD (q); +++ } +++} +++ +++/* Enforce that ambiguous patterns are separated by commas. */ +++ +++static void +++ambiguous_patterns (NODE_T *p) +++{ +++ /* Example: printf (($+d.2d +d.2d$, 1, 2)) can produce either "+1.00 +2.00" +++ or "+1+002.00". A comma must be supplied to resolve the ambiguity. +++ +++ The obvious thing would be to weave this into the syntax, letting the BU +++ parser sort it out. But the C-style patterns do not suffer from Algol 68 +++ pattern ambiguity, so by solving it this way we maximise freedom in +++ writing the patterns as we want without introducing two "kinds" of +++ patterns, and so we have shorter routines for implementing formatted +++ transput. This is a pragmatic system. */ +++ NODE_T *q, *last_pat = NO_NODE; +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ switch (ATTRIBUTE (q)) +++ { +++ /* These are the potentially ambiguous patterns. */ +++ case INTEGRAL_PATTERN: +++ case REAL_PATTERN: +++ case COMPLEX_PATTERN: +++ case BITS_PATTERN: +++ if (last_pat != NO_NODE) +++ a68_error (q, "A and A must be separated by a comma-symbol", +++ ATTRIBUTE (last_pat), ATTRIBUTE (q)); +++ last_pat = q; +++ break; +++ case COMMA_SYMBOL: +++ last_pat = NO_NODE; +++ break; +++ default: +++ break; +++ } +++ } +++} +++ +++/* Reduce C format texts completely. */ +++ +++static void +++reduce_c_pattern (NODE_T *p, int pr, int let) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_PLUS, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, REPLICATOR, FORMAT_ITEM_POINT, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, FORMAT_ITEM_POINT, REPLICATOR, +++ let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, REPLICATOR, let, STOP); +++ reduce (q, NO_NOTE, NO_TICK, pr, +++ FORMAT_ITEM_ESCAPE, FORMAT_ITEM_MINUS, FORMAT_ITEM_PLUS, REPLICATOR, FORMAT_ITEM_POINT, +++ REPLICATOR, let, STOP); +++ } +++} +++ +++/* Reduce format texts completely. */ +++ +++static void +++reduce_format_texts (NODE_T *p) +++{ +++ /* Replicators. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, REPLICATOR, STATIC_REPLICATOR, STOP); +++ reduce (q, NO_NOTE, NO_TICK, REPLICATOR, DYNAMIC_REPLICATOR, STOP); +++ } +++ +++ /* "OTHER" patterns. */ +++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_B); +++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_O); +++ reduce_c_pattern (p, BITS_C_PATTERN, FORMAT_ITEM_X); +++ reduce_c_pattern (p, CHAR_C_PATTERN, FORMAT_ITEM_C); +++ reduce_c_pattern (p, FIXED_C_PATTERN, FORMAT_ITEM_F); +++ reduce_c_pattern (p, FLOAT_C_PATTERN, FORMAT_ITEM_E); +++ reduce_c_pattern (p, GENERAL_C_PATTERN, FORMAT_ITEM_G); +++ reduce_c_pattern (p, INTEGRAL_C_PATTERN, FORMAT_ITEM_D); +++ reduce_c_pattern (p, INTEGRAL_C_PATTERN, FORMAT_ITEM_I); +++ reduce_c_pattern (p, STRING_C_PATTERN, FORMAT_ITEM_S); +++ /* Radix frames. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ reduce (q, NO_NOTE, NO_TICK, RADIX_FRAME, REPLICATOR, FORMAT_ITEM_R, STOP); +++ +++ /* Insertions. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_X, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_Y, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_L, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_P, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_Q, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INSERTION, FORMAT_ITEM_K, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INSERTION, LITERAL, STOP); +++ } +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, INSERTION, REPLICATOR, INSERTION, STOP); +++ } +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, INSERTION, INSERTION, INSERTION, STOP); +++ } +++ } +++ +++ /* Replicated suppressible frames. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_A, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_Z, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, REPLICATOR, FORMAT_ITEM_S, FORMAT_ITEM_D, STOP); +++ } +++ +++ /* Suppressible frames. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_A, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_Z, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_D, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_E, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_POINT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, FORMAT_ITEM_S, FORMAT_ITEM_I, STOP); +++ } +++ +++ /* Replicated frames. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, REPLICATOR, FORMAT_ITEM_A, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, REPLICATOR, FORMAT_ITEM_Z, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, REPLICATOR, FORMAT_ITEM_D, STOP); +++ } +++ +++ /* Frames. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, FORMAT_ITEM_A, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, FORMAT_ITEM_Z, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, FORMAT_ITEM_D, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, FORMAT_ITEM_E, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, FORMAT_ITEM_POINT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, FORMAT_ITEM_I, STOP); +++ } +++ +++ /* Frames with an insertion. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_A_FRAME, INSERTION, FORMAT_A_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_Z_FRAME, INSERTION, FORMAT_Z_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_D_FRAME, INSERTION, FORMAT_D_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_E_FRAME, INSERTION, FORMAT_E_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_POINT_FRAME, INSERTION, FORMAT_POINT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAT_I_FRAME, INSERTION, FORMAT_I_FRAME, STOP); +++ } +++ +++ /* String patterns. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ reduce (q, NO_NOTE, NO_TICK, STRING_PATTERN, REPLICATOR, FORMAT_A_FRAME, STOP); +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ reduce (q, NO_NOTE, NO_TICK, STRING_PATTERN, FORMAT_A_FRAME, STOP); +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, STRING_PATTERN, STRING_PATTERN, STRING_PATTERN, STOP); +++ reduce (q, NO_NOTE, &siga, STRING_PATTERN, STRING_PATTERN, INSERTION, STRING_PATTERN, STOP); +++ } +++ } +++ +++ /* Integral moulds. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_MOULD, FORMAT_Z_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_MOULD, FORMAT_D_FRAME, STOP); +++ } +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga = true; +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, INTEGRAL_MOULD, INTEGRAL_MOULD, INTEGRAL_MOULD, STOP); +++ reduce (q, NO_NOTE, &siga, INTEGRAL_MOULD, INTEGRAL_MOULD, INSERTION, STOP); +++ } +++ } +++ +++ /* Sign moulds. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_ITEM_PLUS, STOP); +++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_ITEM_MINUS, STOP); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, FORMAT_ITEM_PLUS, STOP); +++ reduce (q, NO_NOTE, NO_TICK, SIGN_MOULD, FORMAT_ITEM_MINUS, STOP); +++ } +++ +++ /* Exponent frames. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, EXPONENT_FRAME, FORMAT_E_FRAME, SIGN_MOULD, INTEGRAL_MOULD, STOP); +++ reduce (q, NO_NOTE, NO_TICK, EXPONENT_FRAME, FORMAT_E_FRAME, INTEGRAL_MOULD, STOP); +++ } +++ +++ /* Real patterns. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, +++ STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, FORMAT_POINT_FRAME, STOP); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); +++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, FORMAT_POINT_FRAME, STOP); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, EXPONENT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, INTEGRAL_MOULD, FORMAT_POINT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, FORMAT_POINT_FRAME, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ REAL_PATTERN, FORMAT_POINT_FRAME, INTEGRAL_MOULD, STOP); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); +++ reduce (q, NO_NOTE, NO_TICK, REAL_PATTERN, INTEGRAL_MOULD, EXPONENT_FRAME, STOP); +++ } +++ +++ /* Complex patterns. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ reduce (q, NO_NOTE, NO_TICK, COMPLEX_PATTERN, REAL_PATTERN, FORMAT_I_FRAME, REAL_PATTERN, STOP); +++ +++ /* Bits patterns. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ reduce (q, NO_NOTE, NO_TICK, BITS_PATTERN, RADIX_FRAME, INTEGRAL_MOULD, STOP); +++ +++ /* Integral patterns. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_PATTERN, SIGN_MOULD, INTEGRAL_MOULD, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INTEGRAL_PATTERN, INTEGRAL_MOULD, STOP); +++ } +++ +++ /* Patterns. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, BOOLEAN_PATTERN, FORMAT_ITEM_B, COLLECTION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, CHOICE_PATTERN, FORMAT_ITEM_C, COLLECTION, STOP); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, BOOLEAN_PATTERN, FORMAT_ITEM_B, STOP); +++ reduce (q, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_G, STOP); +++ reduce (q, NO_NOTE, NO_TICK, GENERAL_PATTERN, FORMAT_ITEM_H, STOP); +++ } +++ +++ ambiguous_patterns (p); +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, BITS_C_PATTERN, STOP); +++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, CHAR_C_PATTERN, STOP); +++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, FIXED_C_PATTERN, STOP); +++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, FLOAT_C_PATTERN, STOP); +++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, GENERAL_C_PATTERN, STOP); +++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, INTEGRAL_C_PATTERN, STOP); +++ reduce (q, a68_extension, NO_TICK, A68_PATTERN, STRING_C_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, BITS_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, BOOLEAN_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, CHOICE_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, COMPLEX_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, FORMAT_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, GENERAL_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, INTEGRAL_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, REAL_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, A68_PATTERN, STRING_PATTERN, STOP); +++ } +++ +++ /* Pictures. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, PICTURE, INSERTION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PICTURE, A68_PATTERN, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PICTURE, COLLECTION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, PICTURE, REPLICATOR, COLLECTION, STOP); +++ } +++ +++ /* Picture lists. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, PICTURE)) +++ { +++ bool siga = true; +++ reduce (q, NO_NOTE, NO_TICK, PICTURE_LIST, PICTURE, STOP); +++ while (siga) +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, PICTURE_LIST, PICTURE_LIST, COMMA_SYMBOL, PICTURE, STOP); +++ /* We filtered ambiguous patterns, so commas may be omitted */ +++ reduce (q, NO_NOTE, &siga, PICTURE_LIST, PICTURE_LIST, PICTURE, STOP); +++ } +++ } +++ } +++} +++ +++/* Reduce secondaries completely. */ +++ +++static void +++reduce_secondaries (NODE_T *p) +++{ +++ NODE_T *q; bool siga; +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, SECONDARY, PRIMARY, STOP); +++ reduce (q, NO_NOTE, NO_TICK, GENERATOR, LOC_SYMBOL, DECLARER, STOP); +++ reduce (q, NO_NOTE, NO_TICK, GENERATOR, HEAP_SYMBOL, DECLARER, STOP); +++ reduce (q, NO_NOTE, NO_TICK, SECONDARY, GENERATOR, STOP); +++ } +++ siga = true; +++ while (siga) +++ { +++ siga = false; +++ for (q = p; NEXT (q) != NO_NODE; FORWARD (q)) +++ ; +++ for (; q != NO_NODE; BACKWARD (q)) +++ { +++ reduce (q, NO_NOTE, &siga, SELECTION, SELECTOR, SECONDARY, STOP); +++ reduce (q, NO_NOTE, &siga, SECONDARY, SELECTION, STOP); +++ } +++ } +++} +++ +++/* Whether Q is an operator with priority K. */ +++ +++static int +++operator_with_priority (NODE_T *q, int k) +++{ +++ return NEXT (q) != NO_NODE +++ && ATTRIBUTE (NEXT (q)) == OPERATOR && PRIO (INFO (NEXT (q))) == k; +++} +++ +++/* Reduce formulae. */ +++ +++static void +++reduce_formulae (NODE_T * p) +++{ +++ NODE_T *q = p; +++ +++ while (q != NO_NODE) +++ { +++ if (a68_is_one_of (q, OPERATOR, SECONDARY, STOP)) +++ q = reduce_dyadic (q, STOP); +++ else +++ FORWARD (q); +++ } +++ +++ /* Reduce the expression. */ +++ for (int prio = MAX_PRIORITY; prio >= 0; prio--) +++ { +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (operator_with_priority (q, prio)) +++ { +++ bool siga = false; +++ NODE_T *op = NEXT (q); +++ if (IS (q, SECONDARY)) +++ { +++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, SECONDARY, STOP); +++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, MONADIC_FORMULA, STOP); +++ reduce (q, NO_NOTE, &siga, FORMULA, SECONDARY, OPERATOR, FORMULA, STOP); +++ } +++ else if (IS (q, MONADIC_FORMULA)) +++ { +++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, SECONDARY, STOP); +++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, MONADIC_FORMULA, STOP); +++ reduce (q, NO_NOTE, &siga, FORMULA, MONADIC_FORMULA, OPERATOR, FORMULA, STOP); +++ } +++ if (prio == 0 && siga) +++ a68_error (op, "S has no priority declaration"); +++ siga = true; +++ while (siga) +++ { +++ NODE_T *op2 = NEXT (q); +++ siga = false; +++ if (operator_with_priority (q, prio)) +++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, SECONDARY, STOP); +++ if (operator_with_priority (q, prio)) +++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, MONADIC_FORMULA, STOP); +++ if (operator_with_priority (q, prio)) +++ reduce (q, NO_NOTE, &siga, FORMULA, FORMULA, OPERATOR, FORMULA, STOP); +++ if (prio == 0 && siga) +++ a68_error (op2, "S has no priority declaration"); +++ } +++ } +++ } +++ } +++} +++ +++/* Reduce dyadic expressions. */ +++ +++static NODE_T * +++reduce_dyadic (NODE_T *p, int u) +++{ +++ /* We work inside out - higher priority expressions get reduced first. */ +++ if (u > MAX_PRIORITY) +++ { +++ if (p == NO_NODE) +++ return NO_NODE; +++ else if (IS (p, OPERATOR)) +++ { +++ /* Reduce monadic formulas. */ +++ NODE_T *q = p; +++ bool siga; +++ do +++ { +++ PRIO (INFO (q)) = 10; +++ siga = ((NEXT (q) != NO_NODE) && (IS (NEXT (q), OPERATOR))); +++ if (siga) +++ FORWARD (q); +++ } +++ while (siga); +++ reduce (q, NO_NOTE, NO_TICK, MONADIC_FORMULA, OPERATOR, SECONDARY, STOP); +++ while (q != p) +++ { +++ BACKWARD (q); +++ reduce (q, NO_NOTE, NO_TICK, MONADIC_FORMULA, OPERATOR, MONADIC_FORMULA, STOP); +++ } +++ } +++ FORWARD (p); +++ } +++ else +++ { +++ p = reduce_dyadic (p, u + 1); +++ while (p != NO_NODE && IS (p, OPERATOR) && PRIO (INFO (p)) == u) +++ { +++ FORWARD (p); +++ p = reduce_dyadic (p, u + 1); +++ } +++ } +++ return p; +++} +++ +++/* Reduce tertiaries completely. */ +++ +++static void +++reduce_tertiaries (NODE_T *p) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, NIHIL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMULA, MONADIC_FORMULA, STOP); +++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, FORMULA, STOP); +++ reduce (q, NO_NOTE, NO_TICK, TERTIARY, SECONDARY, STOP); +++ } +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, IDENTITY_RELATION, TERTIARY, IS_SYMBOL, TERTIARY, STOP); +++ reduce (q, NO_NOTE, NO_TICK, IDENTITY_RELATION, TERTIARY, ISNT_SYMBOL, TERTIARY, STOP); +++ } +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, AND_FUNCTION, TERTIARY, ANDF_SYMBOL, TERTIARY, STOP); +++ reduce (q, NO_NOTE, NO_TICK, OR_FUNCTION, TERTIARY, ORF_SYMBOL, TERTIARY, STOP); +++ } +++} +++ +++/* Reduce units. */ +++ +++static void +++reduce_units (NODE_T * p) +++{ +++ /* Stray ~ is a SKIP. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, OPERATOR) && IS_LITERALLY (q, "~")) +++ ATTRIBUTE (q) = SKIP; +++ } +++ +++ /* Reduce units. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, UNIT, ASSIGNATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, IDENTITY_RELATION, STOP); +++ reduce (q, a68_extension, NO_TICK, UNIT, AND_FUNCTION, STOP); +++ reduce (q, a68_extension, NO_TICK, UNIT, OR_FUNCTION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, ROUTINE_TEXT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, JUMP, STOP); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, SKIP, STOP); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, TERTIARY, STOP); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, ASSERTION, STOP); +++ } +++} +++ +++/* Reduce_generic arguments. */ +++ +++static void +++reduce_generic_arguments (NODE_T *p) +++{ +++ NODE_T *q; bool siga; /* In this scope. */ +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, UNIT)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, UNIT, AT_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, AT_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, COLON_SYMBOL, STOP); +++ } +++ else if (IS (q, COLON_SYMBOL)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, UNIT, AT_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, AT_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, COLON_SYMBOL, STOP); +++ } +++ } +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, UNIT, AT_SYMBOL, UNIT, STOP); +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ reduce (q, NO_NOTE, NO_TICK, TRIMMER, AT_SYMBOL, UNIT, STOP); +++ for (q = p; q && NEXT (q); FORWARD (q)) +++ { +++ if (IS (q, COMMA_SYMBOL)) +++ { +++ if (!(ATTRIBUTE (NEXT (q)) == UNIT || ATTRIBUTE (NEXT (q)) == TRIMMER)) +++ pad_node (q, TRIMMER); +++ } +++ else +++ { +++ if (IS (NEXT (q), COMMA_SYMBOL)) +++ { +++ if (!IS (q, UNIT) && !IS (q, TRIMMER)) +++ pad_node (q, TRIMMER); +++ } +++ } +++ } +++ +++ q = NEXT (p); +++ if (q == NO_NODE) +++ gcc_unreachable (); +++ reduce (q, NO_NOTE, NO_TICK, GENERIC_ARGUMENT_LIST, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, GENERIC_ARGUMENT_LIST, TRIMMER, STOP); +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, COMMA_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, COMMA_SYMBOL, TRIMMER, STOP); +++ reduce (q, strange_separator, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, UNIT, STOP); +++ reduce (q, strange_separator, &siga, GENERIC_ARGUMENT_LIST, GENERIC_ARGUMENT_LIST, TRIMMER, STOP); +++ } +++ while (siga); +++} +++ +++/* Reduce bounds. */ +++ +++static void +++reduce_bounds (NODE_T *p) +++{ +++ NODE_T *q; bool siga; +++ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, BOUND, UNIT, COLON_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, BOUND, UNIT, STOP); +++ } +++ q = NEXT (p); +++ reduce (q, NO_NOTE, NO_TICK, BOUNDS_LIST, BOUND, STOP); +++ reduce (q, NO_NOTE, NO_TICK, FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, ALT_FORMAL_BOUNDS_LIST, COLON_SYMBOL, STOP); +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, BOUNDS_LIST, BOUNDS_LIST, COMMA_SYMBOL, BOUND, STOP); +++ reduce (q, NO_NOTE, &siga, FORMAL_BOUNDS_LIST, FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, ALT_FORMAL_BOUNDS_LIST, FORMAL_BOUNDS_LIST, COLON_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, FORMAL_BOUNDS_LIST, ALT_FORMAL_BOUNDS_LIST, COMMA_SYMBOL, STOP); +++ reduce (q, strange_separator, &siga, BOUNDS_LIST, BOUNDS_LIST, BOUND, STOP); +++ } +++ while (siga); +++} +++ +++/* Reduce argument packs. */ +++ +++static void +++reduce_arguments (NODE_T *p) +++{ +++ if (NEXT (p) != NO_NODE) +++ { +++ NODE_T *q = NEXT (p); +++ bool siga; +++ reduce (q, NO_NOTE, NO_TICK, ARGUMENT_LIST, UNIT, STOP); +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, ARGUMENT_LIST, ARGUMENT_LIST, COMMA_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, ARGUMENT_LIST, ARGUMENT_LIST, UNIT, STOP); +++ } +++ while (siga); +++ } +++} +++ +++/* Reduce declarations. */ +++ +++static void +++reduce_basic_declarations (NODE_T *p) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ /* Publicized declarations. */ +++ reduce (q, NO_NOTE, NO_TICK, +++ PRIORITY_DECLARATION, PUBLIC_SYMBOL, +++ PRIO_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, PRIORITY, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ MODE_DECLARATION, PUBLIC_SYMBOL, +++ MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, DECLARER, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ MODE_DECLARATION, PUBLIC_SYMBOL, +++ MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, VOID_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ PROCEDURE_DECLARATION, PUBLIC_SYMBOL, +++ PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ PROCEDURE_VARIABLE_DECLARATION, PUBLIC_SYMBOL, +++ PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, +++ STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ PROCEDURE_VARIABLE_DECLARATION, PUBLIC_SYMBOL, +++ QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, +++ ROUTINE_TEXT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ BRIEF_OPERATOR_DECLARATION, PUBLIC_SYMBOL, +++ OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); +++ +++ reduce (q, NO_NOTE, NO_TICK, +++ PRIORITY_DECLARATION, PRIO_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, PRIORITY, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, DECLARER, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, VOID_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ PROCEDURE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ PROCEDURE_VARIABLE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, +++ STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ PROCEDURE_VARIABLE_DECLARATION, QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, +++ ROUTINE_TEXT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ BRIEF_OPERATOR_DECLARATION, OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); +++#if 0 +++ /* XXX for local module definitions */ +++ reduce (q, NO_NOTE, NO_TICK, +++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, MODULE_TEXT, STOP); +++#endif +++ /* Errors. */ +++ reduce (q, strange_tokens, NO_TICK, +++ PRIORITY_DECLARATION, PRIO_SYMBOL, -DEFINING_OPERATOR, -EQUALS_SYMBOL, -PRIORITY, STOP); +++ reduce (q, strange_tokens, NO_TICK, +++ MODE_DECLARATION, MODE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, -DECLARER, STOP); +++ reduce (q, strange_tokens, NO_TICK, +++ PROCEDURE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, EQUALS_SYMBOL, -ROUTINE_TEXT, STOP); +++ reduce (q, strange_tokens, NO_TICK, +++ PROCEDURE_VARIABLE_DECLARATION, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, -ROUTINE_TEXT, +++ STOP); +++ reduce (q, strange_tokens, NO_TICK, +++ PROCEDURE_VARIABLE_DECLARATION, QUALIFIER, PROC_SYMBOL, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, +++ -ROUTINE_TEXT, STOP); +++ reduce (q, strange_tokens, NO_TICK, +++ BRIEF_OPERATOR_DECLARATION, OP_SYMBOL, DEFINING_OPERATOR, EQUALS_SYMBOL, -ROUTINE_TEXT, STOP); +++#if 0 +++ /* XXX for local module definitions */ +++ reduce (q, strange_tokens, NO_TICK, +++ MODULE_DECLARATION, MODULE_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, -MODULE_TEXT, STOP); +++#endif +++ /* Errors. WILDCARD catches TERTIARY which catches IDENTIFIER. */ +++ reduce (q, strange_tokens, NO_TICK, PROCEDURE_DECLARATION, PROC_SYMBOL, WILDCARD, ROUTINE_TEXT, STOP); +++ } +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga; +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, +++ PRIORITY_DECLARATION, PRIORITY_DECLARATION, COMMA_SYMBOL, DEFINING_OPERATOR, +++ EQUALS_SYMBOL, PRIORITY, STOP); +++ reduce (q, NO_NOTE, &siga, +++ MODE_DECLARATION, MODE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, +++ DECLARER, STOP); +++ reduce (q, NO_NOTE, &siga, +++ MODE_DECLARATION, MODE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, +++ VOID_SYMBOL, STOP); +++ reduce (q, NO_NOTE, &siga, +++ PROCEDURE_DECLARATION, PROCEDURE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, +++ EQUALS_SYMBOL, ROUTINE_TEXT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ PROCEDURE_VARIABLE_DECLARATION, PROCEDURE_VARIABLE_DECLARATION, COMMA_SYMBOL, +++ DEFINING_IDENTIFIER, ASSIGN_SYMBOL, ROUTINE_TEXT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ BRIEF_OPERATOR_DECLARATION, BRIEF_OPERATOR_DECLARATION, COMMA_SYMBOL, +++ DEFINING_OPERATOR, EQUALS_SYMBOL, ROUTINE_TEXT, STOP); +++#if 0 +++ /* XXX for local module definitions */ +++ reduce (q, NO_NOTE, &siga, +++ MODULE_DECLARATION, MODULE_DECLARATION, COMMA_SYMBOL, DEFINING_INDICANT, EQUALS_SYMBOL, +++ MODULE_TEXT, STOP); +++#endif +++ /* Errors. WILDCARD catches TERTIARY which catches IDENTIFIER. */ +++ reduce (q, strange_tokens, &siga, +++ PROCEDURE_DECLARATION, PROCEDURE_DECLARATION, COMMA_SYMBOL, WILDCARD, ROUTINE_TEXT, STOP); +++ } +++ while (siga); +++ } +++} +++ +++/* Reduce declaration lists. */ +++ +++static void +++reduce_declaration_lists (NODE_T *p) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, +++ IDENTITY_DECLARATION, PUBLIC_SYMBOL, +++ DECLARER, DEFINING_IDENTIFIER, EQUALS_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, +++ QUALIFIER, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, +++ QUALIFIER, DECLARER, DEFINING_IDENTIFIER, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, +++ DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ VARIABLE_DECLARATION, PUBLIC_SYMBOL, +++ DECLARER, DEFINING_IDENTIFIER, STOP); +++ +++ reduce (q, NO_NOTE, NO_TICK, +++ IDENTITY_DECLARATION, DECLARER, DEFINING_IDENTIFIER, EQUALS_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ VARIABLE_DECLARATION, QUALIFIER, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ VARIABLE_DECLARATION, QUALIFIER, DECLARER, DEFINING_IDENTIFIER, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ VARIABLE_DECLARATION, DECLARER, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ VARIABLE_DECLARATION, DECLARER, DEFINING_IDENTIFIER, STOP); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga; +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, +++ IDENTITY_DECLARATION, IDENTITY_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, +++ EQUALS_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ VARIABLE_DECLARATION, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, +++ ASSIGN_SYMBOL, UNIT, STOP); +++ if (!a68_whether (q, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, +++ ASSIGN_SYMBOL, UNIT, STOP)) +++ reduce (q, NO_NOTE, &siga, +++ VARIABLE_DECLARATION, VARIABLE_DECLARATION, COMMA_SYMBOL, DEFINING_IDENTIFIER, STOP); +++ } +++ while (siga); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, +++ OPERATOR_DECLARATION, PUBLIC_SYMBOL, +++ OPERATOR_PLAN, DEFINING_OPERATOR, EQUALS_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, +++ OPERATOR_DECLARATION, OPERATOR_PLAN, DEFINING_OPERATOR, EQUALS_SYMBOL, UNIT, STOP); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga; +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, +++ OPERATOR_DECLARATION, OPERATOR_DECLARATION, COMMA_SYMBOL, DEFINING_OPERATOR, +++ EQUALS_SYMBOL, UNIT, STOP); +++ } +++ while (siga); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, MODE_DECLARATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PRIORITY_DECLARATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, BRIEF_OPERATOR_DECLARATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, OPERATOR_DECLARATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, IDENTITY_DECLARATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PROCEDURE_DECLARATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, PROCEDURE_VARIABLE_DECLARATION, STOP); +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, VARIABLE_DECLARATION, STOP); +++#if 0 +++ /* XXX for local module definitions */ +++ reduce (q, NO_NOTE, NO_TICK, DECLARATION_LIST, MODULE_DECLARATION, STOP); +++#endif +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ bool siga; +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, +++ DECLARATION_LIST, DECLARATION_LIST, COMMA_SYMBOL, DECLARATION_LIST, STOP); +++ } +++ while (siga); +++ } +++} +++ +++/* Reduce module text. */ +++ +++static void +++reduce_module_texts (NODE_T *p) +++{ +++ if (IS (p, ALT_ACCESS_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, +++ REVELATION, ALT_ACCESS_SYMBOL, PUBLIC_SYMBOL, MODULE_INDICANT, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ REVELATION, ALT_ACCESS_SYMBOL, MODULE_INDICANT, STOP); +++ bool siga; +++ do +++ { +++ siga = false; +++ reduce (p, NO_NOTE, &siga, +++ REVELATION, REVELATION, COMMA_SYMBOL, PUBLIC_SYMBOL, MODULE_INDICANT, STOP); +++ reduce (p, NO_NOTE, &siga, +++ REVELATION, REVELATION, COMMA_SYMBOL, MODULE_INDICANT, STOP); +++ } +++ while (siga); +++ reduce (p, NO_NOTE, NO_TICK, REVELATION_PART, REVELATION, STOP); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, REVELATION_PART, DEF_PART, POSTLUDE_PART, FED_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, REVELATION_PART, DEF_PART, FED_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, DEF_PART, POSTLUDE_PART, FED_SYMBOL, STOP); +++ reduce (q, NO_NOTE, NO_TICK, MODULE_TEXT, DEF_PART, FED_SYMBOL, STOP); +++ } +++} +++ +++/* Reduce def-parts and postlude-parts. +++ Note that revelations are reduced in reduce_module_texts. */ +++ +++static void +++reduce_module_text_parts (NODE_T *p) +++{ +++ if (IS (p, DEF_SYMBOL)) +++ { +++ reduce_enquiry_clauses (p); +++ reduce (p, NO_NOTE, NO_TICK, DEF_PART, DEF_SYMBOL, ENQUIRY_CLAUSE, STOP); +++ } +++ else if (IS (p, POSTLUDE_SYMBOL)) +++ { +++ reduce_serial_clauses (p); +++ reduce (p, NO_NOTE, NO_TICK, POSTLUDE_PART, POSTLUDE_SYMBOL, SERIAL_CLAUSE, STOP); +++ } +++} +++ +++/* Reduce serial clauses. */ +++ +++static void +++reduce_serial_clauses (NODE_T *p) +++{ +++ if (NEXT (p) != NO_NODE) +++ { +++ NODE_T *q = NEXT (p), *u; +++ bool siga, label_seen; +++ /* Check wrong exits. */ +++ for (u = q; u != NO_NODE; FORWARD (u)) +++ { +++ if (IS (u, EXIT_SYMBOL)) +++ { +++ if (NEXT (u) == NO_NODE || !IS (NEXT (u), LABELED_UNIT)) +++ a68_error (u, "S must be followed by a labeled unit"); +++ } +++ } +++ +++ /* Check wrong jumps and declarations. */ +++ for (u = q, label_seen = false; u != NO_NODE; FORWARD (u)) +++ { +++ if (IS (u, LABELED_UNIT)) +++ label_seen = true; +++ else if (IS (u, DECLARATION_LIST)) +++ { +++ if (label_seen) +++ a68_error (u, "declaration cannot follow a labeled unit"); +++ } +++ } +++ +++ /* Reduce serial clauses. */ +++ reduce (q, NO_NOTE, NO_TICK, SERIAL_CLAUSE, LABELED_UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, SERIAL_CLAUSE, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INITIALISER_SERIES, DECLARATION_LIST, STOP); +++ do +++ { +++ siga = false; +++ if (IS (q, SERIAL_CLAUSE)) +++ { +++ reduce (q, NO_NOTE, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, SEMI_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, EXIT_SYMBOL, LABELED_UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, SEMI_SYMBOL, LABELED_UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ INITIALISER_SERIES, SERIAL_CLAUSE, SEMI_SYMBOL, DECLARATION_LIST, STOP); +++ /* Errors */ +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, COMMA_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, COMMA_SYMBOL, LABELED_UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, SERIAL_CLAUSE, COMMA_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, COLON_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, COLON_SYMBOL, LABELED_UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, SERIAL_CLAUSE, COLON_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, SERIAL_CLAUSE, LABELED_UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, SERIAL_CLAUSE, DECLARATION_LIST, STOP); +++ } +++ else if (IS (q, INITIALISER_SERIES)) +++ { +++ reduce (q, NO_NOTE, &siga, +++ SERIAL_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ SERIAL_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, LABELED_UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ INITIALISER_SERIES, INITIALISER_SERIES, SEMI_SYMBOL, DECLARATION_LIST, STOP); +++ /* Errors */ +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, LABELED_UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, INITIALISER_SERIES, COMMA_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, LABELED_UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, INITIALISER_SERIES, COLON_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, INITIALISER_SERIES, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ SERIAL_CLAUSE, INITIALISER_SERIES, LABELED_UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, INITIALISER_SERIES, DECLARATION_LIST, STOP); +++ } +++ } +++ while (siga); +++ } +++} +++ +++/* Reduce enquiry clauses. */ +++ +++static void +++reduce_enquiry_clauses (NODE_T *p) +++{ +++ if (NEXT (p) != NO_NODE) +++ { +++ NODE_T *q = NEXT (p); +++ bool siga; +++ reduce (q, NO_NOTE, NO_TICK, ENQUIRY_CLAUSE, UNIT, STOP); +++ reduce (q, NO_NOTE, NO_TICK, INITIALISER_SERIES, DECLARATION_LIST, STOP); +++ do +++ { +++ siga = false; +++ if (IS (q, ENQUIRY_CLAUSE)) +++ { +++ reduce (q, NO_NOTE, &siga, +++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, SEMI_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ INITIALISER_SERIES, ENQUIRY_CLAUSE, SEMI_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, COMMA_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, ENQUIRY_CLAUSE, COMMA_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, COLON_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, ENQUIRY_CLAUSE, COLON_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ ENQUIRY_CLAUSE, ENQUIRY_CLAUSE, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, ENQUIRY_CLAUSE, DECLARATION_LIST, STOP); +++ } +++ else if (IS (q, INITIALISER_SERIES)) +++ { +++ reduce (q, NO_NOTE, &siga, +++ ENQUIRY_CLAUSE, INITIALISER_SERIES, SEMI_SYMBOL, UNIT, STOP); +++ reduce (q, NO_NOTE, &siga, +++ INITIALISER_SERIES, INITIALISER_SERIES, SEMI_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ ENQUIRY_CLAUSE, INITIALISER_SERIES, COMMA_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, INITIALISER_SERIES, COMMA_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ ENQUIRY_CLAUSE, INITIALISER_SERIES, COLON_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, INITIALISER_SERIES, COLON_SYMBOL, DECLARATION_LIST, STOP); +++ reduce (q, strange_separator, &siga, +++ ENQUIRY_CLAUSE, INITIALISER_SERIES, UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ INITIALISER_SERIES, INITIALISER_SERIES, DECLARATION_LIST, STOP); +++ } +++ } +++ while (siga); +++ } +++} +++ +++/* Reduce collateral clauses. */ +++ +++static void +++reduce_collateral_clauses (NODE_T *p) +++{ +++ if (NEXT (p) != NO_NODE) +++ { +++ NODE_T *q = NEXT (p); +++ if (IS (q, UNIT)) +++ { +++ bool siga; +++ reduce (q, NO_NOTE, NO_TICK, UNIT_LIST, UNIT, STOP); +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, UNIT_LIST, UNIT_LIST, COMMA_SYMBOL, UNIT, STOP); +++ reduce (q, strange_separator, &siga, UNIT_LIST, UNIT_LIST, UNIT, STOP); +++ } +++ while (siga); +++ } +++ else if (IS (q, SPECIFIED_UNIT)) +++ { +++ bool siga; +++ reduce (q, NO_NOTE, NO_TICK, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP); +++ do +++ { +++ siga = false; +++ reduce (q, NO_NOTE, &siga, +++ SPECIFIED_UNIT_LIST, SPECIFIED_UNIT_LIST, COMMA_SYMBOL, SPECIFIED_UNIT, STOP); +++ reduce (q, strange_separator, &siga, +++ SPECIFIED_UNIT_LIST, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP); +++ } +++ while (siga); +++ } +++ } +++} +++ +++/* Reduces enclosed clauses. */ +++ +++static void +++reduce_enclosed_clauses (NODE_T *q, enum a68_attribute expect) +++{ +++ NODE_T *p = q; +++ +++ if (SUB (p) == NO_NODE) +++ { +++ if (IS (p, FOR_SYMBOL)) +++ reduce (p, NO_NOTE, NO_TICK, FOR_PART, FOR_SYMBOL, DEFINING_IDENTIFIER, STOP); +++ else if (IS (p, OPEN_SYMBOL)) +++ { +++ if (expect == ENQUIRY_CLAUSE) +++ reduce (p, NO_NOTE, NO_TICK, OPEN_PART, OPEN_SYMBOL, ENQUIRY_CLAUSE, STOP); +++ else if (expect == ARGUMENT) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ARGUMENT, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ARGUMENT, OPEN_SYMBOL, ARGUMENT_LIST, CLOSE_SYMBOL, STOP); +++ reduce (p, empty_clause, NO_TICK, ARGUMENT, OPEN_SYMBOL, INITIALISER_SERIES, CLOSE_SYMBOL, STOP); +++ } +++ else if (expect == GENERIC_ARGUMENT) +++ { +++ if (a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP)) +++ { +++ pad_node (p, TRIMMER); +++ reduce (p, NO_NOTE, NO_TICK, GENERIC_ARGUMENT, OPEN_SYMBOL, TRIMMER, CLOSE_SYMBOL, STOP); +++ } +++ reduce (p, NO_NOTE, NO_TICK, +++ GENERIC_ARGUMENT, OPEN_SYMBOL, GENERIC_ARGUMENT_LIST, CLOSE_SYMBOL, STOP); +++ } +++ else if (expect == BOUNDS) +++ { +++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, BOUNDS, OPEN_SYMBOL, BOUNDS_LIST, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, OPEN_SYMBOL, FORMAL_BOUNDS_LIST, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ FORMAL_BOUNDS, OPEN_SYMBOL, ALT_FORMAL_BOUNDS_LIST, CLOSE_SYMBOL, STOP); +++ } +++ else +++ { +++ reduce (p, NO_NOTE, NO_TICK, CLOSED_CLAUSE, OPEN_SYMBOL, SERIAL_CLAUSE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, OPEN_SYMBOL, UNIT_LIST, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, OPEN_SYMBOL, CLOSE_SYMBOL, STOP); +++ reduce (p, empty_clause, NO_TICK, +++ CLOSED_CLAUSE, OPEN_SYMBOL, INITIALISER_SERIES, CLOSE_SYMBOL, STOP); +++ } +++ } +++ else if (IS (p, SUB_SYMBOL)) +++ { +++ if (expect == GENERIC_ARGUMENT) +++ { +++ if (a68_whether (p, SUB_SYMBOL, BUS_SYMBOL, STOP)) +++ { +++ pad_node (p, TRIMMER); +++ reduce (p, NO_NOTE, NO_TICK, GENERIC_ARGUMENT, SUB_SYMBOL, TRIMMER, BUS_SYMBOL, STOP); +++ } +++ reduce (p, NO_NOTE, NO_TICK, +++ GENERIC_ARGUMENT, SUB_SYMBOL, GENERIC_ARGUMENT_LIST, BUS_SYMBOL, STOP); +++ } +++ else if (expect == BOUNDS) +++ { +++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, BUS_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, BOUNDS, SUB_SYMBOL, BOUNDS_LIST, BUS_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, FORMAL_BOUNDS_LIST, BUS_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, FORMAL_BOUNDS, SUB_SYMBOL, ALT_FORMAL_BOUNDS_LIST, BUS_SYMBOL, STOP); +++ } +++ } +++ else if (IS (p, BEGIN_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, BEGIN_SYMBOL, UNIT_LIST, END_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, COLLATERAL_CLAUSE, BEGIN_SYMBOL, END_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CLOSED_CLAUSE, BEGIN_SYMBOL, SERIAL_CLAUSE, END_SYMBOL, STOP); +++ reduce (p, empty_clause, NO_TICK, CLOSED_CLAUSE, BEGIN_SYMBOL, INITIALISER_SERIES, END_SYMBOL, STOP); +++ } +++ else if (IS (p, FORMAT_DELIMITER_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, +++ FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL, PICTURE_LIST, FORMAT_DELIMITER_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL, FORMAT_DELIMITER_SYMBOL, STOP); +++ } +++ else if (IS (p, FORMAT_OPEN_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, +++ COLLECTION, FORMAT_OPEN_SYMBOL, PICTURE_LIST, FORMAT_CLOSE_SYMBOL, STOP); +++ } +++ else if (IS (p, ACCESS_SYMBOL)) +++ { +++ NODE_T *s; +++ for (s = p; s != NO_NODE; FORWARD (s)) +++ { +++ if (SUB (s) != NO_NODE) +++ { +++ // XXX why +++ if (IS (SUB (s), OPEN_SYMBOL)) +++ reduce_branch (s, SOME_CLAUSE); +++ else +++ reduce_branch (s, ENCLOSED_CLAUSE); +++ } +++ reduce (s, NO_NOTE, NO_TICK, PARALLEL_CLAUSE, PAR_SYMBOL, COLLATERAL_CLAUSE, STOP); +++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, PARALLEL_CLAUSE, STOP); +++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CLOSED_CLAUSE, STOP); +++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, COLLATERAL_CLAUSE, STOP); +++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONDITIONAL_CLAUSE, STOP); +++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CASE_CLAUSE, STOP); +++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, CONFORMITY_CLAUSE, STOP); +++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, LOOP_CLAUSE, STOP); +++ reduce (s, NO_NOTE, NO_TICK, ENCLOSED_CLAUSE, ACCESS_CLAUSE, STOP); +++ } +++ // XXX reduce revelations +++ reduce (p, NO_NOTE, NO_TICK, +++ ACCESS_CLAUSE, ACCESS_SYMBOL, MODULE_INDICANT, ENCLOSED_CLAUSE, STOP); +++ } +++ else if (IS (p, IF_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, IF_PART, IF_SYMBOL, ENQUIRY_CLAUSE, STOP); +++ reduce (p, empty_clause, NO_TICK, IF_PART, IF_SYMBOL, INITIALISER_SERIES, STOP); +++ } +++ else if (IS (p, THEN_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, THEN_PART, THEN_SYMBOL, SERIAL_CLAUSE, STOP); +++ reduce (p, empty_clause, NO_TICK, THEN_PART, THEN_SYMBOL, INITIALISER_SERIES, STOP); +++ } +++ else if (IS (p, ELSE_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ELSE_PART, ELSE_SYMBOL, SERIAL_CLAUSE, STOP); +++ reduce (p, empty_clause, NO_TICK, ELSE_PART, ELSE_SYMBOL, INITIALISER_SERIES, STOP); +++ } +++ else if (IS (p, ELIF_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ELIF_IF_PART, ELIF_SYMBOL, ENQUIRY_CLAUSE, STOP); +++ } +++ else if (IS (p, CASE_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, CASE_PART, CASE_SYMBOL, ENQUIRY_CLAUSE, STOP); +++ reduce (p, empty_clause, NO_TICK, CASE_PART, CASE_SYMBOL, INITIALISER_SERIES, STOP); +++ } +++ else if (IS (p, IN_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, CASE_IN_PART, IN_SYMBOL, UNIT_LIST, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_IN_PART, IN_SYMBOL, SPECIFIED_UNIT_LIST, STOP); +++ } +++ else if (IS (p, OUT_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, OUT_PART, OUT_SYMBOL, SERIAL_CLAUSE, STOP); +++ reduce (p, empty_clause, NO_TICK, OUT_PART, OUT_SYMBOL, INITIALISER_SERIES, STOP); +++ } +++ else if (IS (p, OUSE_SYMBOL)) +++ reduce (p, NO_NOTE, NO_TICK, OUSE_PART, OUSE_SYMBOL, ENQUIRY_CLAUSE, STOP); +++ else if (IS (p, THEN_BAR_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, CHOICE, THEN_BAR_SYMBOL, SERIAL_CLAUSE, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CASE_CHOICE_CLAUSE, THEN_BAR_SYMBOL, UNIT_LIST, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_CHOICE, THEN_BAR_SYMBOL, SPECIFIED_UNIT_LIST, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CONFORMITY_CHOICE, THEN_BAR_SYMBOL, SPECIFIED_UNIT, STOP); +++ reduce (p, empty_clause, NO_TICK, CHOICE, THEN_BAR_SYMBOL, INITIALISER_SERIES, STOP); +++ } +++ else if (IS (p, ELSE_BAR_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ELSE_OPEN_PART, ELSE_BAR_SYMBOL, ENQUIRY_CLAUSE, STOP); +++ reduce (p, empty_clause, NO_TICK, ELSE_OPEN_PART, ELSE_BAR_SYMBOL, INITIALISER_SERIES, STOP); +++ } +++ else if (IS (p, FROM_SYMBOL)) +++ reduce (p, NO_NOTE, NO_TICK, FROM_PART, FROM_SYMBOL, UNIT, STOP); +++ else if (IS (p, BY_SYMBOL)) +++ reduce (p, NO_NOTE, NO_TICK, BY_PART, BY_SYMBOL, UNIT, STOP); +++ else if (IS (p, TO_SYMBOL)) +++ reduce (p, NO_NOTE, NO_TICK, TO_PART, TO_SYMBOL, UNIT, STOP); +++ else if (IS (p, WHILE_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, WHILE_PART, WHILE_SYMBOL, ENQUIRY_CLAUSE, STOP); +++ reduce (p, empty_clause, NO_TICK, WHILE_PART, WHILE_SYMBOL, INITIALISER_SERIES, STOP); +++ } +++ else if (IS (p, DO_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, DO_PART, DO_SYMBOL, SERIAL_CLAUSE, OD_SYMBOL, STOP); +++ } +++ else if (IS (p, ALT_DO_SYMBOL)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ALT_DO_PART, ALT_DO_SYMBOL, SERIAL_CLAUSE, OD_SYMBOL, STOP); +++ } +++ } +++ p = q; +++ if (SUB (p) != NO_NODE) +++ { +++ if (IS (p, OPEN_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, OPEN_PART, CHOICE, BRIEF_ELIF_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, OPEN_PART, CASE_CHOICE_CLAUSE, BRIEF_OUSE_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_CLAUSE, OPEN_PART, CONFORMITY_CHOICE, BRIEF_CONFORMITY_OUSE_PART, STOP); +++ } +++ else if (IS (p, ELSE_OPEN_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, BRIEF_ELIF_PART, ELSE_OPEN_PART, CHOICE, BRIEF_ELIF_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ BRIEF_OUSE_PART, ELSE_OPEN_PART, CASE_CHOICE_CLAUSE, BRIEF_OUSE_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, CLOSE_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ BRIEF_CONFORMITY_OUSE_PART, ELSE_OPEN_PART, CONFORMITY_CHOICE, BRIEF_CONFORMITY_OUSE_PART, +++ STOP); +++ } +++ else if (IS (p, IF_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, ELSE_PART, FI_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, ELIF_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CONDITIONAL_CLAUSE, IF_PART, THEN_PART, FI_SYMBOL, STOP); +++ } +++ else if (IS (p, ELIF_IF_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, ELSE_PART, FI_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, FI_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, ELIF_PART, ELIF_IF_PART, THEN_PART, ELIF_PART, STOP); +++ } +++ else if (IS (p, CASE_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, ESAC_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CASE_CLAUSE, CASE_PART, CASE_IN_PART, CASE_OUSE_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, ESAC_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_CLAUSE, CASE_PART, CONFORMITY_IN_PART, CONFORMITY_OUSE_PART, STOP); +++ } +++ else if (IS (p, OUSE_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, ESAC_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, CASE_OUSE_PART, OUSE_PART, CASE_IN_PART, CASE_OUSE_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, OUT_PART, ESAC_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, ESAC_SYMBOL, STOP); +++ reduce (p, NO_NOTE, NO_TICK, +++ CONFORMITY_OUSE_PART, OUSE_PART, CONFORMITY_IN_PART, CONFORMITY_OUSE_PART, STOP); +++ } +++ else if (IS (p, FOR_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, +++ LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, BY_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, TO_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, FROM_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, BY_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, TO_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FOR_PART, ALT_DO_PART, STOP); +++ } +++ else if (IS (p, FROM_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, TO_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, BY_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, TO_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, FROM_PART, ALT_DO_PART, STOP); +++ } +++ else if (IS (p, BY_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, TO_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, TO_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, BY_PART, ALT_DO_PART, STOP); +++ } +++ else if (IS (p, TO_PART)) +++ { +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, TO_PART, WHILE_PART, ALT_DO_PART, STOP); +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, TO_PART, ALT_DO_PART, STOP); +++ } +++ else if (IS (p, WHILE_PART)) +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, WHILE_PART, ALT_DO_PART, STOP); +++ else if (IS (p, DO_PART)) +++ reduce (p, NO_NOTE, NO_TICK, LOOP_CLAUSE, DO_PART, STOP); +++ } +++} +++ +++/* Substitute reduction when a phrase could not be parsed. */ +++ +++static void +++recover_from_error (NODE_T * p, enum a68_attribute expect, bool suppress) +++{ +++ /* This routine does not do fancy things as that might introduce more +++ errors. */ +++ NODE_T *q = p; +++ if (p == NO_NODE) +++ return; +++ +++ if (expect == SOME_CLAUSE) +++ expect = serial_or_collateral (p); +++ +++ if (!suppress) +++ { +++ /* Give an error message. */ +++ NODE_T *w = p; +++ const char *seq = a68_phrase_to_text (p, &w); +++ if (strlen (seq) == 0) +++ { +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ a68_error (w, "expected A", expect); +++ } +++ else +++ a68_error (w, "Y is an invalid A", seq, expect); +++ +++ if (ERROR_COUNT (&A68_JOB) >= MAX_ERRORS) +++ longjmp (A68_PARSER (bottom_up_crash_exit), 1); +++ } +++ +++ /* Try to prevent spurious diagnostics by guessing what was expected. */ +++ while (NEXT (q) != NO_NODE) +++ FORWARD (q); +++ +++ if (a68_is_one_of (p, BEGIN_SYMBOL, OPEN_SYMBOL, STOP)) +++ { +++ if (expect == ARGUMENT || expect == COLLATERAL_CLAUSE +++ || expect == PARAMETER_PACK || expect == STRUCTURE_PACK +++ || expect == UNION_PACK) +++ a68_make_sub (p, q, expect); +++ else if (expect == ENQUIRY_CLAUSE) +++ a68_make_sub (p, q, OPEN_PART); +++ else if (expect == FORMAL_DECLARERS) +++ a68_make_sub (p, q, FORMAL_DECLARERS); +++ else +++ a68_make_sub (p, q, CLOSED_CLAUSE); +++ } +++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && expect == FORMAT_TEXT) +++ a68_make_sub (p, q, FORMAT_TEXT); +++ else if (a68_is_one_of (p, THEN_BAR_SYMBOL, CHOICE, STOP)) +++ a68_make_sub (p, q, CHOICE); +++ else if (a68_is_one_of (p, IF_SYMBOL, IF_PART, STOP)) +++ a68_make_sub (p, q, IF_PART); +++ else if (a68_is_one_of (p, THEN_SYMBOL, THEN_PART, STOP)) +++ a68_make_sub (p, q, THEN_PART); +++ else if (a68_is_one_of (p, ELSE_SYMBOL, ELSE_PART, STOP)) +++ a68_make_sub (p, q, ELSE_PART); +++ else if (a68_is_one_of (p, ELIF_SYMBOL, ELIF_IF_PART, STOP)) +++ a68_make_sub (p, q, ELIF_IF_PART); +++ else if (a68_is_one_of (p, CASE_SYMBOL, CASE_PART, STOP)) +++ a68_make_sub (p, q, CASE_PART); +++ else if (a68_is_one_of (p, OUT_SYMBOL, OUT_PART, STOP)) +++ a68_make_sub (p, q, OUT_PART); +++ else if (a68_is_one_of (p, OUSE_SYMBOL, OUSE_PART, STOP)) +++ a68_make_sub (p, q, OUSE_PART); +++ else if (a68_is_one_of (p, FOR_SYMBOL, FOR_PART, STOP)) +++ a68_make_sub (p, q, FOR_PART); +++ else if (a68_is_one_of (p, FROM_SYMBOL, FROM_PART, STOP)) +++ a68_make_sub (p, q, FROM_PART); +++ else if (a68_is_one_of (p, BY_SYMBOL, BY_PART, STOP)) +++ a68_make_sub (p, q, BY_PART); +++ else if (a68_is_one_of (p, TO_SYMBOL, TO_PART, STOP)) +++ a68_make_sub (p, q, TO_PART); +++ else if (a68_is_one_of (p, WHILE_SYMBOL, WHILE_PART, STOP)) +++ a68_make_sub (p, q, WHILE_PART); +++ else if (a68_is_one_of (p, DO_SYMBOL, DO_PART, STOP)) +++ a68_make_sub (p, q, DO_PART); +++ else if (a68_is_one_of (p, ALT_DO_SYMBOL, ALT_DO_PART, STOP)) +++ a68_make_sub (p, q, ALT_DO_PART); +++ else if (a68_attribute_name (expect) != NO_TEXT) +++ a68_make_sub (p, q, expect); +++} +++ +++/* Heuristic aid in pinpointing errors. */ +++ +++static void +++reduce_erroneous_units (NODE_T *p) +++{ +++ /* Constructs are reduced to units in an attempt to limit spurious +++ diagnostics. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ /* Some implementations allow selection from a tertiary, when there is no +++ risk of ambiguity. GCC follows RR, so some extra attention here to +++ guide an unsuspecting user. */ +++ if (a68_whether (q, SELECTOR, -SECONDARY, STOP)) +++ { +++ a68_error (NEXT (q), "expected A", SECONDARY); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, SELECTOR, WILDCARD, STOP); +++ } +++ +++ /* Attention for identity relations that require tertiaries. */ +++ if (a68_whether (q, -TERTIARY, IS_SYMBOL, TERTIARY, STOP) +++ || a68_whether (q, TERTIARY, IS_SYMBOL, -TERTIARY, STOP) +++ || a68_whether (q, -TERTIARY, IS_SYMBOL, -TERTIARY, STOP)) +++ { +++ a68_error (NEXT (q), "expected A", TERTIARY); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, WILDCARD, IS_SYMBOL, WILDCARD, STOP); +++ } +++ else if (a68_whether (q, -TERTIARY, ISNT_SYMBOL, TERTIARY, STOP) +++ || a68_whether (q, TERTIARY, ISNT_SYMBOL, -TERTIARY, STOP) +++ || a68_whether (q, -TERTIARY, ISNT_SYMBOL, -TERTIARY, STOP)) +++ { +++ a68_error (NEXT (q), "expected A", TERTIARY); +++ reduce (q, NO_NOTE, NO_TICK, UNIT, WILDCARD, ISNT_SYMBOL, WILDCARD, STOP); +++ } +++ } +++} +++ +++/* +++ * A posteriori checks of the syntax tree built by the BU parser. +++ */ +++ +++/* Driver for a posteriori error checking. */ +++ +++void +++a68_bottom_up_error_check (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, BOOLEAN_PATTERN)) +++ { +++ int k = 0; +++ a68_count_pictures (SUB (p), &k); +++ if (!(k == 0 || k == 2)) +++ a68_error (p, "incorrect number of pictures for A", +++ ATTRIBUTE (p)); +++ } +++ else if (IS (p, PUBLIC_SYMBOL)) +++ { +++ /* These should have been removed by a68_bottom_up_coalesce_pub. */ +++ gcc_unreachable (); +++ } +++ else if (a68_is_one_of (p, DEFINING_INDICANT, DEFINING_IDENTIFIER, DEFINING_OPERATOR, STOP)) +++ { +++ if (PUBLICIZED (p) && !PUBLIC_RANGE (TABLE (p))) +++ a68_error (p, +++ "%licized declaration not in a module definition"); +++ } +++ else +++ a68_bottom_up_error_check (SUB (p)); +++ } +++} +++ +++/* +++ * Next part rearranges and checks the tree after the symbol tables are finished. +++ */ +++ +++/* Transfer IDENTIFIER to JUMP where appropriate. */ +++ +++void +++a68_rearrange_goto_less_jumps (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, UNIT)) +++ { +++ NODE_T *q = SUB (p); +++ if (IS (q, TERTIARY)) +++ { +++ NODE_T *tertiary = q; +++ q = SUB (q); +++ if (q != NO_NODE && IS (q, SECONDARY)) +++ { +++ q = SUB (q); +++ if (q != NO_NODE && IS (q, PRIMARY)) +++ { +++ q = SUB (q); +++ if (q != NO_NODE && IS (q, IDENTIFIER)) +++ { +++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) +++ { +++ ATTRIBUTE (tertiary) = JUMP; +++ SUB (tertiary) = q; +++ } +++ } +++ } +++ } +++ } +++ } +++ else if (IS (p, TERTIARY)) +++ { +++ NODE_T *q = SUB (p); +++ if (q != NO_NODE && IS (q, SECONDARY)) +++ { +++ NODE_T *secondary = q; +++ q = SUB (q); +++ if (q != NO_NODE && IS (q, PRIMARY)) +++ { +++ q = SUB (q); +++ if (q != NO_NODE && IS (q, IDENTIFIER)) +++ { +++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) +++ { +++ ATTRIBUTE (secondary) = JUMP; +++ SUB (secondary) = q; +++ } +++ } +++ } +++ } +++ } +++ else if (IS (p, SECONDARY)) +++ { +++ NODE_T *q = SUB (p); +++ if (q != NO_NODE && IS (q, PRIMARY)) +++ { +++ NODE_T *primary = q; +++ q = SUB (q); +++ if (q != NO_NODE && IS (q, IDENTIFIER)) +++ { +++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) +++ { +++ ATTRIBUTE (primary) = JUMP; +++ SUB (primary) = q; +++ } +++ } +++ } +++ } +++ else if (IS (p, PRIMARY)) +++ { +++ NODE_T *q = SUB (p); +++ if (q != NO_NODE && IS (q, IDENTIFIER)) +++ { +++ if (a68_is_identifier_or_label_global (TABLE (q), NSYMBOL (q)) == LABEL) +++ a68_make_sub (q, q, JUMP); +++ } +++ } +++ a68_rearrange_goto_less_jumps (SUB (p)); +++ } +++} +++ +++/* +++ * Coalesce PUBLIC_SYMBOLs resulting from reductions, annotating the +++ * corresponding defining identifiers, indicators, operators and prios as +++ * publicized. +++ */ +++ +++void +++a68_bottom_up_coalesce_pub (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (a68_is_one_of (p, +++ MODE_DECLARATION, PROCEDURE_DECLARATION, PRIORITY_DECLARATION, +++ PROCEDURE_VARIABLE_DECLARATION, BRIEF_OPERATOR_DECLARATION, +++ OPERATOR_DECLARATION, IDENTITY_DECLARATION, +++ VARIABLE_DECLARATION, STOP)) +++ { +++ if (SUB (p) != NO_NODE && IS (SUB (p), PUBLIC_SYMBOL)) +++ { +++ NODE_T *public_symbol = SUB (p); +++ +++ /* Mark the defining entity as PUBlicized. */ +++ /* XXX handle joined declarations. */ +++ NODE_T *defining_entity = NEXT (NEXT (SUB (p))); +++ if (!a68_is_one_of (defining_entity, +++ DEFINING_INDICANT, DEFINING_IDENTIFIER, DEFINING_OPERATOR, +++ STOP)) +++ FORWARD (defining_entity); +++ gcc_assert (defining_entity != NO_NODE +++ && a68_is_one_of (defining_entity, +++ DEFINING_INDICANT, +++ DEFINING_IDENTIFIER, +++ DEFINING_OPERATOR, +++ STOP)); +++ PUBLICIZED (defining_entity) = true; +++ +++ /* Unlink the PUBLIC_SYMBOL node and get rid of it. */ +++ SUB (p) = NEXT (public_symbol); +++ PREVIOUS (NEXT (public_symbol)) = NO_NODE; +++ } +++ } +++ a68_bottom_up_coalesce_pub (SUB (p)); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-brackets.cc ++@@ -0,0 +1,223 @@ +++/* Recursive-descent parenthesis checker. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* After this checker, we know that at least brackets are matched. This +++ stabilises later parser phases. +++ +++ Note that this checker operates on a linear list of nodes. +++ +++ Error diagnostics are placed near offending lines. */ +++ +++/* Intelligible diagnostics for the bracket checker. */ +++ +++static void +++bracket_check_error (char *txt, int n, const char *bra, const char *ket) +++{ +++ BUFFER buf; +++ +++ if (n == 0) +++ return; +++ +++ const char *strop_ket = a68_strop_keyword (ket); +++ const char *strop_bra = a68_strop_keyword (bra); +++ +++ BUFCLR (buf); +++ if (snprintf (buf, SNPRINTF_SIZE, "missing matching %%<%s%%>", +++ (n > 0 ? strop_ket : strop_bra)) < 0) +++ gcc_unreachable (); +++ +++ if (strlen (txt) > 0) +++ a68_bufcat (txt, " or ", BUFFER_SIZE); +++ a68_bufcat (txt, buf, BUFFER_SIZE); +++} +++ +++/* Diagnose brackets in local branch of the tree. */ +++ +++static char * +++bracket_check_diagnose (NODE_T *p) +++{ +++ int begins = 0, opens = 0, format_delims = 0, format_opens = 0; +++ int subs = 0, ifs = 0, cases = 0, dos = 0; +++ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case BEGIN_SYMBOL: +++ begins++; +++ break; +++ case END_SYMBOL: +++ begins--; +++ break; +++ case OPEN_SYMBOL: +++ opens++; +++ break; +++ case CLOSE_SYMBOL: +++ opens--; +++ break; +++ case FORMAT_DELIMITER_SYMBOL: +++ if (format_delims == 0) +++ format_delims = 1; +++ else +++ format_delims = 0; +++ break; +++ case FORMAT_OPEN_SYMBOL: +++ format_opens++; +++ break; +++ case FORMAT_CLOSE_SYMBOL: +++ format_opens--; +++ break; +++ case SUB_SYMBOL: +++ subs++; +++ break; +++ case BUS_SYMBOL: +++ subs--; +++ break; +++ case IF_SYMBOL: +++ ifs++; +++ break; +++ case FI_SYMBOL: +++ ifs--; +++ break; +++ case CASE_SYMBOL: +++ cases++; +++ break; +++ case ESAC_SYMBOL: +++ cases--; +++ break; +++ case DO_SYMBOL: +++ dos++; +++ break; +++ case OD_SYMBOL: +++ dos--; +++ break; +++ default: +++ break; +++ } +++ } +++ +++ A68 (edit_line)[0] = '\0'; +++ bracket_check_error (A68 (edit_line), begins, "BEGIN", "END"); +++ bracket_check_error (A68 (edit_line), opens, "(", ")"); +++ bracket_check_error (A68 (edit_line), format_opens, "(", ")"); +++ bracket_check_error (A68 (edit_line), format_delims, "$", "$"); +++ bracket_check_error (A68 (edit_line), subs, "[", "]"); +++ bracket_check_error (A68 (edit_line), ifs, "IF", "FI"); +++ bracket_check_error (A68 (edit_line), cases, "CASE", "ESAC"); +++ bracket_check_error (A68 (edit_line), dos, "DO", "OD"); +++ return A68 (edit_line); +++} +++ +++/* Driver for locally diagnosing non-matching tokens. */ +++ +++static NODE_T * +++bracket_check_parse (NODE_T *top, NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ int ket = STOP; +++ NODE_T *q = NO_NODE; +++ bool ignore_token = false; +++ +++ switch (ATTRIBUTE (p)) +++ { +++ case BEGIN_SYMBOL: +++ ket = END_SYMBOL; +++ q = bracket_check_parse (top, NEXT (p)); +++ break; +++ case OPEN_SYMBOL: +++ ket = CLOSE_SYMBOL; +++ q = bracket_check_parse (top, NEXT (p)); +++ break; +++ case FORMAT_OPEN_SYMBOL: +++ ket = FORMAT_CLOSE_SYMBOL; +++ q = bracket_check_parse (top, NEXT (p)); +++ break; +++ case SUB_SYMBOL: +++ ket = BUS_SYMBOL; +++ q = bracket_check_parse (top, NEXT (p)); +++ break; +++ case IF_SYMBOL: +++ ket = FI_SYMBOL; +++ q = bracket_check_parse (top, NEXT (p)); +++ break; +++ case CASE_SYMBOL: +++ ket = ESAC_SYMBOL; +++ q = bracket_check_parse (top, NEXT (p)); +++ break; +++ case DO_SYMBOL: +++ ket = OD_SYMBOL; +++ q = bracket_check_parse (top, NEXT (p)); +++ break; +++ case END_SYMBOL: +++ case CLOSE_SYMBOL: +++ case FORMAT_CLOSE_SYMBOL: +++ case BUS_SYMBOL: +++ case FI_SYMBOL: +++ case ESAC_SYMBOL: +++ case OD_SYMBOL: +++ return p; +++ default: +++ ignore_token = true; +++ } +++ +++ if (ignore_token) +++ ; +++ else if (q != NO_NODE && IS (q, ket)) +++ p = q; +++ else if (q == NO_NODE) +++ { +++ char *diag = bracket_check_diagnose (top); +++ a68_error (p, "incorrect nesting, check for Y", +++ (strlen (diag) > 0 ? diag : "missing or unmatched keyword")); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ else +++ { +++ char *diag = bracket_check_diagnose (top); +++ a68_error (q, "unexpected X, check for Y", +++ ATTRIBUTE (q), +++ (strlen (diag) > 0 ? diag : "missing or unmatched keyword")); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ } +++ return NO_NODE; +++} +++ +++/* Driver for globally diagnosing non-matching tokens. */ +++ +++void +++a68_check_parenthesis (NODE_T *top) +++{ +++ if (!setjmp (A68_PARSER (top_down_crash_exit))) +++ { +++ if (bracket_check_parse (top, top) != NO_NODE) +++ a68_error (top, "incorrect nesting, check for Y", +++ "missing or unmatched keyword"); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-debug.cc ++@@ -0,0 +1,255 @@ +++/* Debug facilities for the Algol 68 parser. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#define INCLUDE_VECTOR +++#include "system.h" +++#include "coretypes.h" +++#include "tree.h" +++#include "diagnostic.h" +++#include "text-art/types.h" +++#include "text-art/dump.h" +++#include "text-art/dump-widget-info.h" +++#include "text-art/canvas.h" +++#include "text-art/theme.h" +++#include "text-art/tree-widget.h" +++ +++#include "a68.h" +++ +++/* Write a printable representation of the parse tree with top node P to the +++ standard output. */ +++ +++static void +++a68_dump_parse_tree_1 (NODE_T *p, const text_art::dump_widget_info &dwi, +++ text_art::tree_widget &widget, bool tables, bool levels) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ char *symbol; +++ if (ATTRIBUTE (p) == IDENTIFIER +++ || ATTRIBUTE (p) == DEFINING_IDENTIFIER +++ || ATTRIBUTE (p) == DEFINING_OPERATOR +++ || ATTRIBUTE (p) == BOLD_TAG) +++ symbol = xasprintf (" %s", NSYMBOL (p)); +++ else +++ symbol = xstrdup (""); +++ +++ char *tableinfo; +++ if (tables && TABLE (p) != NO_TABLE) +++ tableinfo = xasprintf (" table=%p prev=%p", +++ (void *) TABLE (p), +++ (void *) PREVIOUS (TABLE (p))); +++ else +++ tableinfo = xstrdup (""); +++ +++ char *levelsinfo; +++ if (levels && TABLE (p) != NO_TABLE) +++ levelsinfo = xasprintf (" level=%d", LEVEL (TABLE (p))); +++ else +++ levelsinfo = xstrdup (""); +++ +++ char mode[BUFFER_SIZE]; +++ mode[0] = '\0'; +++ if (MOID (p) != NO_MOID) +++ { +++ MOID_T *moid = MOID (p); +++ mode[0] = '\0'; +++ +++ a68_bufcat (mode, " (", 2); +++ if (IS (moid, SERIES_MODE)) +++ { +++ if (PACK (moid) != NO_PACK && NEXT (PACK (moid)) == NO_PACK) +++ a68_bufcat (mode, a68_moid_to_string (MOID (PACK (moid)), MOID_ERROR_WIDTH, p), +++ BUFFER_SIZE); +++ else +++ a68_bufcat (mode, a68_moid_to_string (moid, MOID_ERROR_WIDTH, p), BUFFER_SIZE); +++ } +++ else +++ a68_bufcat (mode, a68_moid_to_string (moid, MOID_ERROR_WIDTH, p), BUFFER_SIZE); +++ a68_bufcat (mode, ")", 2); +++ } +++ +++ location_t loc = a68_get_node_location (p); +++ std::unique_ptr cwidget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, +++ "%s:%d:%d [%d] %s%s%s%s%s", +++ LOCATION_FILE (loc), +++ LOCATION_LINE (loc), +++ LOCATION_COLUMN (loc), +++ NUMBER (p), +++ a68_attribute_name (ATTRIBUTE (p)), +++ symbol, +++ mode, +++ tableinfo, +++ levelsinfo); +++ free (symbol); +++ free (tableinfo); +++ free (levelsinfo); +++ +++ a68_dump_parse_tree_1 (SUB (p), dwi, *cwidget, tables, levels); +++ widget.add_child (std::move (cwidget)); +++ } +++} +++ +++void +++a68_dump_parse_tree (NODE_T *p, bool tables, bool levels) +++{ +++ text_art::style_manager sm; +++ text_art::style::id_t default_style_id (sm.get_or_create_id (text_art::style ())); +++ text_art::ascii_theme theme; +++ text_art::dump_widget_info dwi (sm, theme, default_style_id); +++ std::unique_ptr widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "Parse Tree"); +++ +++ a68_dump_parse_tree_1 (p, dwi, *widget, tables, levels); +++ +++ text_art::canvas c (widget->to_canvas (sm)); +++ pretty_printer *const pp = global_dc->get_reference_printer (); +++ pp_clear_output_area (pp); +++ c.print_to_pp (pp); +++ printf ("%s", pp_formatted_text (pp)); +++} +++ +++/* Dump the modes in the list MOID. */ +++ +++void +++a68_dump_modes (MOID_T *moid) +++{ +++ for (; moid != NO_MOID; FORWARD (moid)) +++ { +++ printf ("%p %s\n", (void *) moid, +++ a68_moid_to_string (moid, MOID_ERROR_WIDTH, NODE (moid), +++ true /* indicant_value */)); +++ } +++} +++ +++/* Dump a given MOIF. */ +++ +++void +++a68_dump_moif (MOIF_T *moif) +++{ +++ text_art::style_manager sm; +++ text_art::style::id_t default_style_id (sm.get_or_create_id (text_art::style ())); +++ text_art::ascii_theme theme; +++ text_art::dump_widget_info dwi (sm, theme, default_style_id); +++ std::unique_ptr widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module interface: %s", NAME (moif)); +++ +++ std::unique_ptr prelude_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prelude: %s", PRELUDE (moif)); +++ widget->add_child (std::move (prelude_widget)); +++ +++ std::unique_ptr postlude_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "postlude: %s", POSTLUDE (moif)); +++ widget->add_child (std::move (postlude_widget)); +++ +++ /* Mode table. */ +++ std::unique_ptr modes_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "modes"); +++ for (MOID_T *mode : MODES (moif)) +++ { +++ const char *asm_label = ASM_LABEL (mode); +++ if (asm_label == NULL) +++ asm_label = a68_moid_to_string (mode, 80, NO_NODE, false); +++ std::unique_ptr mode_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode: %s: %s", +++ asm_label, +++ a68_moid_to_string (mode, 80, NO_NODE, true)); +++ modes_widget->add_child (std::move (mode_widget)); +++ } +++ widget->add_child (std::move (modes_widget)); +++ +++ /* Module extracts. */ +++ std::unique_ptr mod_extracts_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module extracts"); +++ for (EXTRACT_T *e : MODULES (moif)) +++ { +++ std::unique_ptr mod_extract_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "module extract: %s", EXTRACT_SYMBOL (e)); +++ mod_extracts_widget->add_child (std::move (mod_extract_widget)); +++ } +++ widget->add_child (std::move (mod_extracts_widget)); +++ +++ /* Mode extracts. */ +++ std::unique_ptr mode_extracts_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode extracts"); +++ for (EXTRACT_T *e : INDICANTS (moif)) +++ { +++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); +++ if (asm_label == NULL) +++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); +++ std::unique_ptr mode_extract_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "mode extract: %s [%s]", +++ EXTRACT_SYMBOL (e), asm_label); +++ mode_extracts_widget->add_child (std::move (mode_extract_widget)); +++ } +++ widget->add_child (std::move (mode_extracts_widget)); +++ +++ /* Priority extracts. */ +++ std::unique_ptr prio_extracts_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prio extracts"); +++ for (EXTRACT_T *e : PRIOS (moif)) +++ { +++ std::unique_ptr prio_extract_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "prio extract: %s [prio: %d]", +++ EXTRACT_SYMBOL (e), EXTRACT_PRIO (e)); +++ prio_extracts_widget->add_child (std::move (prio_extract_widget)); +++ } +++ widget->add_child (std::move (prio_extracts_widget)); +++ +++ /* Identifier extracts. */ +++ std::unique_ptr id_extracts_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "identifier extracts"); +++ for (EXTRACT_T *e : IDENTIFIERS (moif)) +++ { +++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); +++ if (asm_label == NULL) +++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); +++ std::unique_ptr id_extract_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "iden extract: %s [%s] variable=%d inproc=%d", +++ EXTRACT_SYMBOL (e), asm_label, +++ EXTRACT_VARIABLE (e), +++ EXTRACT_IN_PROC (e)); +++ id_extracts_widget->add_child (std::move (id_extract_widget)); +++ } +++ widget->add_child (std::move (id_extracts_widget)); +++ +++ /* Operator extracts. */ +++ std::unique_ptr op_extracts_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "operator extracts"); +++ for (EXTRACT_T *e : OPERATORS (moif)) +++ { +++ const char *asm_label = ASM_LABEL (EXTRACT_MODE (e)); +++ if (asm_label == NULL) +++ asm_label = a68_moid_to_string (EXTRACT_MODE (e), 80, NO_NODE, false); +++ +++ std::unique_ptr op_extract_widget +++ = text_art::tree_widget::from_fmt (dwi, nullptr, "op extract: %s [%s] variable=%d inproc=%d", +++ EXTRACT_SYMBOL (e), asm_label, +++ EXTRACT_VARIABLE (e), +++ EXTRACT_IN_PROC (e)); +++ op_extracts_widget->add_child (std::move (op_extract_widget)); +++ } +++ widget->add_child (std::move (op_extracts_widget)); +++ +++ text_art::canvas c (widget->to_canvas (sm)); +++ pretty_printer *const pp = global_dc->get_reference_printer (); +++ pp_clear_output_area (pp); +++ c.print_to_pp (pp); +++ printf ("%s", pp_formatted_text (pp)); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-extract.cc ++@@ -0,0 +1,895 @@ +++/* Extract tags from phrases. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* This is part of the bottom-up parser. Here is a set of routines that gather +++ definitions from phrases. This way we can apply tags before defining them. +++ These routines do not look very elegant as they have to scan through all kind +++ of symbols to find a pattern that they recognise. */ +++ +++/* Insert alt equals symbol. */ +++ +++static void +++insert_alt_equals (NODE_T *p) +++{ +++ NODE_T *q = a68_new_node (); +++ *q = *p; +++ INFO (q) = a68_new_node_info (); +++ *INFO (q) = *INFO (p); +++ GINFO (q) = a68_new_genie_info (); +++ *GINFO (q) = *GINFO (p); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), "=")); +++ NEXT (p) = q; +++ PREVIOUS (q) = p; +++ if (NEXT (q) != NO_NODE) +++ PREVIOUS (NEXT (q)) = q; +++} +++ +++/* Detect redefined keyword. */ +++ +++static void +++detect_redefined_keyword (NODE_T *p, int construct) +++{ +++ if (p != NO_NODE && a68_whether (p, KEYWORD, EQUALS_SYMBOL, STOP)) +++ a68_error (p, "attempt to redefine keyword Y in A", +++ NSYMBOL (p), construct); +++} +++ +++/* Skip anything until a FED or ALT_ACCESS_SYMBOL is found. */ +++ +++static NODE_T * +++skip_module_text (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, FED_SYMBOL) || IS (p, ALT_ACCESS_SYMBOL)) +++ return p; +++ } +++ +++ return NO_NODE; +++} +++ +++/* Skip anything until a comma, semicolon or EXIT is found. */ +++ +++static NODE_T * +++skip_unit (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, COMMA_SYMBOL)) +++ return p; +++ else if (IS (p, SEMI_SYMBOL)) +++ return p; +++ else if (IS (p, EXIT_SYMBOL)) +++ return p; +++ } +++ return NO_NODE; +++} +++ +++/* Attribute of entry in symbol table. */ +++ +++static int +++find_tag_definition (TABLE_T *table, const char *name) +++{ +++ if (table != NO_TABLE) +++ { +++ int ret = 0; +++ bool found = false; +++ for (TAG_T *s = INDICANTS (table); s != NO_TAG && !found; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ { +++ ret += INDICANT; +++ found = true; +++ } +++ } +++ found = false; +++ for (TAG_T *s = OPERATORS (table); s != NO_TAG && !found; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ { +++ ret += OPERATOR; +++ found = true; +++ } +++ } +++ found = false; +++ for (TAG_T *s = MODULES (table); s != NO_TAG && !found; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ { +++ ret += MODULE_INDICANT; +++ found = true; +++ } +++ } +++ +++ if (ret == 0) +++ return find_tag_definition (PREVIOUS (table), name); +++ else +++ return ret; +++ } +++ else +++ return 0; +++} +++ +++/* Fill in whether bold tag is operator, indicant or module indicant. */ +++ +++void +++a68_elaborate_bold_tags (NODE_T *p) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, BOLD_TAG)) +++ { +++ switch (find_tag_definition (TABLE (q), NSYMBOL (q))) +++ { +++ case 0: +++ a68_error (q, "tag S has not been declared properly"); +++ break; +++ case INDICANT: +++ ATTRIBUTE (q) = INDICANT; +++ break; +++ case OPERATOR: +++ ATTRIBUTE (q) = OPERATOR; +++ break; +++ case MODULE_INDICANT: +++ ATTRIBUTE (q) = MODULE_INDICANT; +++ break; +++ } +++ } +++ } +++} +++ +++/* Skip declarer, or argument pack and declarer. */ +++ +++static NODE_T * +++skip_pack_declarer (NODE_T *p) +++{ +++ /* Skip () REF [] REF FLEX [] [] ... */ +++ while (p != NO_NODE +++ && (a68_is_one_of (p, SUB_SYMBOL, OPEN_SYMBOL, REF_SYMBOL, +++ FLEX_SYMBOL, SHORT_SYMBOL, LONG_SYMBOL, STOP))) +++ { +++ FORWARD (p); +++ } +++ +++ /* Skip STRUCT (), UNION () or PROC [()]. */ +++ if (p != NO_NODE && (a68_is_one_of (p, STRUCT_SYMBOL, UNION_SYMBOL, STOP))) +++ return NEXT (p); +++ else if (p != NO_NODE && IS (p, PROC_SYMBOL)) +++ return skip_pack_declarer (NEXT (p)); +++ else +++ return p; +++} +++ +++/* Extract a revelation. */ +++ +++static void +++extract_revelation (NODE_T *q, bool is_public ATTRIBUTE_UNUSED) +++{ +++ /* Store in the symbol table. */ +++ TAG_T *tag = a68_add_tag (TABLE (q), MODULE_SYMBOL, q, NO_MOID, STOP); +++ gcc_assert (tag != NO_TAG); +++ EXPORTED (tag) = false; // XXX depends on PUB! +++ /* Import the MOIF and install it in the tag. */ +++ MOIF_T *moif = a68_open_packet (NSYMBOL (q)); +++ if (moif == NULL) +++ { +++ a68_error (q, "cannot find module Z", NSYMBOL (q)); +++ return; +++ } +++ MOIF (tag) = moif; // XXX add to existing list of moifs. +++ +++ /* Store all the modes from the MOIF in the moid list. +++ +++ The front-end depends on being able to compare any two modes by pointer +++ value. For example, the parser mode equivalence and coercion code relies +++ on this. The lowerer also relies on this to make sure the same lowered +++ trees are used for the same modes. */ +++ +++ for (MOID_T *m : MODES (moif)) +++ { +++ /* Note that m == NO_MOID if the imported mode was already known to the +++ compiler and has been replaced. */ +++ if (m != NO_MOID) +++ { +++ MOID_T *r = a68_register_extra_mode (&TOP_MOID (&A68_JOB), m); +++ if (r != m) +++ gcc_unreachable (); +++ } +++ } +++ +++ /* Store mode indicants from the MOIF in the symbol table, +++ and also in the moid list. */ +++ for (EXTRACT_T *e : INDICANTS (moif)) +++ { +++ /* Indicants stored in the indicants area of a symbol +++ table are expected to be INDICANT nodes originating in +++ parsing, with the following subtree: +++ +++ INDICANT - EQUALS_SYMBOL - DECLARER +++ +++ where MOID (DECLARER) is determined to be the mode +++ associated by INDICANT, or its "equivalent" mode. +++ Therefore we have to synthesize something like that +++ here, since the mode comes from a module interface and +++ we don't have a declarer tree for it.. */ +++ +++ /* INDICANT node. */ +++ NODE_T *n = a68_some_node (a68_demangle_symbol (NAME (moif), +++ EXTRACT_SYMBOL (e))); +++ /* EQUALS_SYMBOL node. */ +++ NEXT (n) = a68_some_node ("="); +++ ATTRIBUTE (NEXT (n)) = EQUALS_SYMBOL; +++ /* DECLARER node. */ +++ NEXT (NEXT (n)) = a68_some_node (""); +++ LINE (INFO (n)) = LINE (INFO (q)); +++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); +++ MOID (NEXT (NEXT (n))) = EXTRACT_MODE (e); +++ TABLE (n) = TABLE (q); +++ +++ /* Now add the INDICANT subtree to the symbol table of +++ this access clause lexical level. */ +++ TAG_T *tag = a68_add_tag (TABLE (q), INDICANT, n, NO_MOID, 0); +++ gcc_assert (tag != NO_TAG); +++ +++ /* Finally add the mode indicant to the moids list. Note +++ that the mode in DECLARER is associated to the +++ INDICANT in the table at some point later, via +++ EQUIVALENT. Hence the NO_MOID in the call to +++ a68_add_mode. */ +++ MOID_T *effective_mode = a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, +++ 0, n, NO_MOID, NO_PACK); +++ gcc_assert (effective_mode != NO_MOID); +++ } +++ +++ /* Store priorities from the MOIF. */ +++ for (EXTRACT_T *e : PRIOS (moif)) +++ { +++ NODE_T *n +++ = a68_some_node (a68_demangle_symbol (NAME (moif), +++ EXTRACT_SYMBOL (e))); +++ /* XXX sensible location somehow? */ +++ LINE (INFO (n)) = LINE (INFO (q)); +++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); +++ TABLE (n) = TABLE (q); +++ TAG_T *tag = a68_add_tag (TABLE (q), PRIO_SYMBOL, n, NO_MOID, +++ EXTRACT_PRIO (e)); +++ gcc_assert (tag != NO_TAG); +++ MOIF (tag) = moif; // XXX add to existing list of moifs. +++ } +++ +++ /* Store identifiers from the MOIF. */ +++ for (EXTRACT_T *e : IDENTIFIERS (moif)) +++ { +++ NODE_T *n +++ = a68_some_node (a68_demangle_symbol (NAME (moif), +++ EXTRACT_SYMBOL (e))); +++ /* XXX sensible location somehow? */ +++ LINE (INFO (n)) = LINE (INFO (q)); +++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); +++ TABLE (n) = TABLE (q); +++ +++ TAG_T *tag = a68_add_tag (TABLE (q), IDENTIFIER, +++ n, EXTRACT_MODE (e), NORMAL_IDENTIFIER); +++ gcc_assert (tag != NO_TAG); +++ EXTERN_SYMBOL (tag) = ggc_strdup (EXTRACT_SYMBOL (e)); +++ VARIABLE (tag) = VARIABLE (e); +++ IN_PROC (tag) = IN_PROC (e); +++ HEAP (tag) = STATIC_SYMBOL; +++ MOIF (tag) = moif; +++ } +++ +++ /* Store operators from the MOIF. */ +++ for (EXTRACT_T *e : OPERATORS (moif)) +++ { +++ NODE_T *n +++ = a68_some_node (a68_demangle_symbol (NAME (moif), +++ EXTRACT_SYMBOL (e), +++ true /* operator */)); +++ MOID (n) = EXTRACT_MODE (e); +++ LINE (INFO (n)) = LINE (INFO (q)); +++ NCHAR_IN_LINE (n) = STRING (LINE (INFO (n))); +++ TABLE (n) = TABLE (q); +++ TAG_T *tag = a68_add_tag (TABLE (q), OP_SYMBOL, +++ n, EXTRACT_MODE (e), STOP); +++ gcc_assert (tag != NO_TAG); +++ VARIABLE (tag) = VARIABLE (e); +++ IN_PROC (tag) = IN_PROC (e); +++ HEAP (tag) = STATIC_SYMBOL; +++ MOIF (tag) = moif; +++ EXTERN_SYMBOL (tag) = ggc_strdup (EXTRACT_SYMBOL (e)); +++ } +++} +++ +++/* Search [MODE|MODULE] A = .., B = .. +++ and ACCESS A, B, .. +++ and store indicants. */ +++ +++void +++a68_extract_indicants (NODE_T *p) +++{ +++ NODE_T *q = p; +++ +++ while (q != NO_NODE) +++ { +++ if (IS (q, ACCESS_SYMBOL) || IS (q, ALT_ACCESS_SYMBOL)) +++ { +++ /* An access clause implies the declaration of module indicants, +++ provided they are found in a suitable packet. */ +++ do +++ { +++ FORWARD (q); +++ detect_redefined_keyword (q, MODE_DECLARATION); +++ if (IS (q, BOLD_TAG)) +++ { +++ extract_revelation (q, false /* is_public */); +++ FORWARD (q); +++ } +++ else if (a68_whether (q, PUBLIC_SYMBOL, BOLD_TAG, STOP)) +++ { +++ extract_revelation (q, true /* is_public */); +++ FORWARD (q); +++ FORWARD (q); +++ } +++ } +++ while (q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ else if (IS (q, MODULE_SYMBOL)) +++ { +++ bool siga = true; +++ do +++ { +++ FORWARD (q); +++ detect_redefined_keyword (q, MODE_DECLARATION); +++ if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) +++ { +++ /* Store in the symbol table. +++ XXX also add to global list of modules? +++ Position of definition (q) connects to this lexical +++ level! */ +++ ATTRIBUTE (q) = DEFINING_MODULE_INDICANT; +++ TAG_T *tag = a68_add_tag (TABLE (p), MODULE_SYMBOL, q, NO_MOID, STOP); +++ gcc_assert (tag != NO_TAG); +++ EXPORTED (tag) = true; +++ FORWARD (q); +++ ATTRIBUTE (q) = EQUALS_SYMBOL; /* XXX why not ALT_EQUALS_SYMBOL */ +++ q = skip_module_text (NEXT (q)); +++ FORWARD (q); +++ } +++ else +++ siga = false; +++ } +++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ else if (IS (q, MODE_SYMBOL)) +++ { +++ bool siga = true; +++ do +++ { +++ FORWARD (q); +++ detect_redefined_keyword (q, MODE_DECLARATION); +++ if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) +++ { +++ /* Store in the symbol table, but also in the moid list. +++ Position of definition (q) connects to this lexical +++ level! */ +++ if (a68_add_tag (TABLE (p), INDICANT, q, NO_MOID, STOP) == NO_TAG) +++ gcc_unreachable (); +++ if (a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, 0, q, NO_MOID, NO_PACK) == NO_MOID) +++ gcc_unreachable (); +++ ATTRIBUTE (q) = DEFINING_INDICANT; +++ FORWARD (q); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ q = skip_pack_declarer (NEXT (q)); +++ FORWARD (q); +++ } +++ else +++ siga = false; +++ } +++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ else +++ FORWARD (q); +++ } +++} +++ +++#define GET_PRIORITY(q, k) \ +++ do \ +++ { \ +++ errno=0; \ +++ (k) = atoi (NSYMBOL (q)); \ +++ if (errno != 0) { \ +++ a68_error ((q), "invalid priority declaration"); \ +++ (k) = MAX_PRIORITY; \ +++ } else if ((k) < 1 || (k) > MAX_PRIORITY) { \ +++ a68_error ((q), "invalid priority declaration"); \ +++ (k) = MAX_PRIORITY; \ +++ } \ +++ } \ +++ while (0) +++ +++/* Search PRIO X = .., Y = .. and store priorities. */ +++ +++void +++a68_extract_priorities (NODE_T *p) +++{ +++ NODE_T *q = p; +++ while (q != NO_NODE) +++ { +++ if (IS (q, PRIO_SYMBOL)) +++ { +++ bool siga = true; +++ do +++ { +++ FORWARD (q); +++ detect_redefined_keyword (q, PRIORITY_DECLARATION); +++ /* An operator tag like ++ or && gives strange errors so we catch +++ it here. */ +++ if (a68_whether (q, OPERATOR, OPERATOR, STOP)) +++ { +++ NODE_T *y = q; +++ a68_error (q, "invalid operator tag"); +++ ATTRIBUTE (q) = DEFINING_OPERATOR; +++ /* Remove one superfluous operator, and hope it was only +++ one. */ +++ NEXT (q) = NEXT_NEXT (q); +++ PREVIOUS (NEXT (q)) = q; +++ FORWARD (q); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ FORWARD (q); +++ int k; +++ GET_PRIORITY (q, k); +++ ATTRIBUTE (q) = PRIORITY; +++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) +++ gcc_unreachable (); +++ FORWARD (q); +++ } +++ else if (a68_whether (q, OPERATOR, EQUALS_SYMBOL, INT_DENOTATION, STOP) +++ || a68_whether (q, EQUALS_SYMBOL, EQUALS_SYMBOL, INT_DENOTATION, STOP)) +++ { +++ NODE_T *y = q; +++ ATTRIBUTE (q) = DEFINING_OPERATOR; +++ FORWARD (q); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ FORWARD (q); +++ int k; +++ GET_PRIORITY (q, k); +++ ATTRIBUTE (q) = PRIORITY; +++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) +++ gcc_unreachable (); +++ FORWARD (q); +++ } +++ else if (a68_whether (q, BOLD_TAG, IDENTIFIER, STOP)) +++ { +++ siga = false; +++ } +++ else if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, INT_DENOTATION, STOP)) +++ { +++ NODE_T *y = q; +++ ATTRIBUTE (q) = DEFINING_OPERATOR; +++ FORWARD (q); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ FORWARD (q); +++ int k; +++ GET_PRIORITY (q, k); +++ ATTRIBUTE (q) = PRIORITY; +++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) +++ gcc_unreachable (); +++ FORWARD (q); +++ } else if (a68_whether (q, BOLD_TAG, INT_DENOTATION, STOP) +++ || a68_whether (q, OPERATOR, INT_DENOTATION, STOP) +++ || a68_whether (q, EQUALS_SYMBOL, INT_DENOTATION, STOP)) +++ { +++ /* The scanner cannot separate operator and "=" sign so we do this here. */ +++ int len = (int) strlen (NSYMBOL (q)); +++ if (len > 1 && NSYMBOL (q)[len - 1] == '=') +++ { +++ NODE_T *y = q; +++ char *sym = (char *) xmalloc ((size_t) (len + 1)); +++ a68_bufcpy (sym, NSYMBOL (q), len + 1); +++ sym[len - 1] = '\0'; +++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), sym)); +++ free (sym); +++ if (len > 2 && NSYMBOL (q)[len - 2] == ':' && NSYMBOL (q)[len - 3] != '=') +++ a68_error (q, "probably a missing symbol near invalid operator S"); +++ ATTRIBUTE (q) = DEFINING_OPERATOR; +++ insert_alt_equals (q); +++ q = NEXT_NEXT (q); +++ int k; +++ GET_PRIORITY (q, k); +++ ATTRIBUTE (q) = PRIORITY; +++ if (a68_add_tag (TABLE (p), PRIO_SYMBOL, y, NO_MOID, k) == NO_TAG) +++ gcc_unreachable (); +++ FORWARD (q); +++ } +++ else +++ siga = false; +++ } +++ else +++ siga = false; +++ } +++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ else +++ FORWARD (q); +++ } +++} +++ +++/* Search OP [( .. ) ..] X = .., Y = .. and store operators. */ +++ +++void +++a68_extract_operators (NODE_T *p) +++{ +++ NODE_T *q = p; +++ +++ while (q != NO_NODE) +++ { +++ if (!IS (q, OP_SYMBOL)) +++ FORWARD (q); +++ else +++ { +++ bool siga = true; +++ bool in_proc = true; +++ /* Skip operator plan. */ +++ if (NEXT (q) != NO_NODE && IS (NEXT (q), OPEN_SYMBOL)) +++ { +++ q = skip_pack_declarer (NEXT (q)); +++ in_proc = false; +++ } +++ /* Sample operators. */ +++ if (q != NO_NODE) +++ { +++ do +++ { +++ FORWARD (q); +++ detect_redefined_keyword (q, OPERATOR_DECLARATION); +++ /* Unacceptable operator tags like ++ or && could give +++ strange errors. */ +++ if (a68_whether (q, OPERATOR, OPERATOR, STOP)) +++ { +++ a68_error (q, "invalid operator tag"); +++ ATTRIBUTE (q) = DEFINING_OPERATOR; +++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); +++ if (t == NO_TAG) +++ gcc_unreachable (); +++ IN_PROC (t) = in_proc; +++ /* Remove one superfluous operator, and hope it was only one. */ +++ NEXT (q) = NEXT_NEXT (q); +++ PREVIOUS (NEXT (q)) = q; +++ FORWARD (q); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ q = skip_unit (q); +++ } +++ else if (a68_whether (q, OPERATOR, EQUALS_SYMBOL, STOP) +++ || a68_whether (q, EQUALS_SYMBOL, EQUALS_SYMBOL, STOP)) +++ { +++ ATTRIBUTE (q) = DEFINING_OPERATOR; +++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); +++ if (t == NO_TAG) +++ gcc_unreachable (); +++ IN_PROC (t) = in_proc; +++ FORWARD (q); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ q = skip_unit (q); +++ } +++ else if (a68_whether (q, BOLD_TAG, IDENTIFIER, STOP)) +++ { +++ siga = false; +++ } +++ else if (a68_whether (q, BOLD_TAG, EQUALS_SYMBOL, STOP)) +++ { +++ ATTRIBUTE (q) = DEFINING_OPERATOR; +++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); +++ if (t == NO_TAG) +++ gcc_unreachable (); +++ IN_PROC (t) = in_proc; +++ FORWARD (q); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ q = skip_unit (q); +++ } +++ else if (q != NO_NODE && (a68_is_one_of (q, OPERATOR, BOLD_TAG, EQUALS_SYMBOL, STOP))) +++ { +++ /* The scanner cannot separate operator and "=" sign so +++ we do this here. */ +++ int len = (int) strlen (NSYMBOL (q)); +++ if (len > 1 && NSYMBOL (q)[len - 1] == '=') +++ { +++ char *sym = (char *) xmalloc ((size_t) (len + 1)); +++ a68_bufcpy (sym, NSYMBOL (q), len + 1); +++ sym[len - 1] = '\0'; +++ NSYMBOL (q) = TEXT (a68_add_token (&A68 (top_token), sym)); +++ if (len > 2 && NSYMBOL (q)[len - 2] == ':' && NSYMBOL (q)[len - 3] != '=') +++ a68_error (q, "probably a missing symbol near invalid operator S"); +++ ATTRIBUTE (q) = DEFINING_OPERATOR; +++ insert_alt_equals (q); +++ TAG_T *t = a68_add_tag (TABLE (p), OP_SYMBOL, q, NO_MOID, STOP); +++ if (t == NO_TAG) +++ gcc_unreachable (); +++ IN_PROC (t) = in_proc; +++ FORWARD (q); +++ q = skip_unit (q); +++ } +++ else +++ siga = false; +++ } +++ else +++ siga = false; +++ } +++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ } +++ } +++} +++ +++/* Search and store labels. */ +++ +++void +++a68_extract_labels (NODE_T *p, int expect) +++{ +++ /* Only handle candidate phrases as not to search indexers!. */ +++ if (expect == SERIAL_CLAUSE || expect == ENQUIRY_CLAUSE || expect == SOME_CLAUSE) +++ { +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (a68_whether (q, IDENTIFIER, COLON_SYMBOL, STOP)) +++ { +++ TAG_T *z = a68_add_tag (TABLE (p), LABEL, q, NO_MOID, LOCAL_LABEL); +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ UNIT (z) = NO_NODE; +++ } +++ } +++ } +++} +++ +++/* Search MOID x = .., y = .. and store identifiers. */ +++ +++static void +++extract_identities (NODE_T *p) +++{ +++ NODE_T *q = p; +++ +++ while (q != NO_NODE) +++ { +++ if (a68_whether (q, DECLARER, IDENTIFIER, EQUALS_SYMBOL, STOP)) +++ { +++ bool siga = true; +++ do +++ { +++ if (a68_whether ((FORWARD (q)), IDENTIFIER, EQUALS_SYMBOL, STOP)) +++ { +++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); +++ if (tag == NO_TAG) +++ gcc_unreachable (); +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ FORWARD (q); +++ ATTRIBUTE (q) = ALT_EQUALS_SYMBOL; +++ q = skip_unit (q); +++ } +++ else if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) +++ { +++ /* Handle common error in ALGOL 68 programs. */ +++ a68_error (q, "mixed identity-declaration and variable-declaration"); +++ if (a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER) == NO_TAG) +++ gcc_unreachable (); +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; +++ q = skip_unit (q); +++ } +++ else +++ siga = false; +++ } +++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ else +++ FORWARD (q); +++ } +++} +++ +++/* Search MOID x [:= ..], y [:= ..] and store identifiers. */ +++ +++static void +++extract_variables (NODE_T *p) +++{ +++ NODE_T *q = p; +++ +++ while (q != NO_NODE) +++ { +++ if (a68_whether (q, HEAP_SYMBOL, DECLARER, IDENTIFIER, STOP) +++ || a68_whether (q, LOC_SYMBOL, DECLARER, IDENTIFIER, STOP) +++ || a68_whether (q, DECLARER, IDENTIFIER, STOP)) +++ { +++ if (!IS (q, DECLARER)) +++ FORWARD (q); +++ +++ bool siga = true; +++ do +++ { +++ FORWARD (q); +++ if (a68_whether (q, IDENTIFIER, STOP)) +++ { +++ if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) +++ { +++ /* Handle common error in ALGOL 68 programs. */ +++ a68_error (q, "mixed identity-declaration and variable-declaration"); +++ ATTRIBUTE (NEXT (q)) = ASSIGN_SYMBOL; +++ } +++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); +++ if (tag == NO_TAG) +++ gcc_unreachable (); +++ VARIABLE (tag) = true; +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ q = skip_unit (q); +++ } +++ else +++ siga = false; +++ } +++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ else +++ FORWARD (q); +++ } +++} +++ +++/* Search PROC x = .., y = .. and stores identifiers. */ +++ +++static void +++extract_proc_identities (NODE_T *p) +++{ +++ NODE_T *q = p; +++ +++ while (q != NO_NODE) +++ { +++ if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, EQUALS_SYMBOL, STOP)) +++ { +++ bool siga = true; +++ do +++ { +++ FORWARD (q); +++ if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) +++ { +++ TAG_T *t = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); +++ IN_PROC (t) = true; +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; +++ q = skip_unit (q); +++ } +++ else if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) +++ { +++ /* Handle common error in ALGOL 68 programs. */ +++ a68_error (q, "mixed identity-declaration and variable-declaration"); +++ if (a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER) == NO_TAG) +++ gcc_unreachable (); +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ ATTRIBUTE (FORWARD (q)) = ALT_EQUALS_SYMBOL; +++ q = skip_unit (q); +++ } +++ else +++ siga = false; +++ } +++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ else +++ FORWARD (q); +++ } +++} +++ +++/* Search PROC x [:= ..], y [:= ..]; store identifiers. */ +++ +++static void +++extract_proc_variables (NODE_T *p) +++{ +++ NODE_T *q = p; +++ +++ while (q != NO_NODE) +++ { +++ if (a68_whether (q, PROC_SYMBOL, IDENTIFIER, STOP)) +++ { +++ bool siga = true; +++ do +++ { +++ FORWARD (q); +++ if (a68_whether (q, IDENTIFIER, ASSIGN_SYMBOL, STOP)) +++ { +++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); +++ gcc_assert (tag != NO_TAG); +++ VARIABLE (tag) = true; +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ q = skip_unit (FORWARD (q)); +++ } +++ else if (a68_whether (q, IDENTIFIER, EQUALS_SYMBOL, STOP)) +++ { +++ /* Handle common error in ALGOL 68 programs. */ +++ a68_error (q, "mixed identity-declaration and variable-declaration"); +++ TAG_T *tag = a68_add_tag (TABLE (p), IDENTIFIER, q, NO_MOID, NORMAL_IDENTIFIER); +++ gcc_assert (tag != NO_TAG); +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ ATTRIBUTE (FORWARD (q)) = ASSIGN_SYMBOL; +++ q = skip_unit (q); +++ } else +++ siga = false; +++ } +++ while (siga && q != NO_NODE && IS (q, COMMA_SYMBOL)); +++ } +++ else +++ FORWARD (q); +++ } +++} +++ +++/* Schedule gathering of definitions in a phrase. */ +++ +++void +++a68_extract_declarations (NODE_T *p) +++{ +++ /* Get definitions so we know what is defined in this range. */ +++ extract_identities (p); +++ extract_variables (p); +++ extract_proc_identities (p); +++ extract_proc_variables (p); +++ /* By now we know whether "=" is an operator or not. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, EQUALS_SYMBOL)) +++ ATTRIBUTE (q) = OPERATOR; +++ else if (IS (q, ALT_EQUALS_SYMBOL)) +++ ATTRIBUTE (q) = EQUALS_SYMBOL; +++ } +++ +++ /* Get qualifiers. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (a68_whether (q, LOC_SYMBOL, DECLARER, DEFINING_IDENTIFIER, STOP)) +++ a68_make_sub (q, q, QUALIFIER); +++ if (a68_whether (q, HEAP_SYMBOL, DECLARER, DEFINING_IDENTIFIER, STOP)) +++ a68_make_sub (q, q, QUALIFIER); +++ if (a68_whether (q, LOC_SYMBOL, PROC_SYMBOL, DEFINING_IDENTIFIER, STOP)) +++ a68_make_sub (q, q, QUALIFIER); +++ if (a68_whether (q, HEAP_SYMBOL, PROC_SYMBOL, DEFINING_IDENTIFIER, STOP)) +++ a68_make_sub (q, q, QUALIFIER); +++ } +++ +++ /* Give priorities to operators. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, OPERATOR)) +++ { +++ if (a68_find_tag_global (TABLE (q), OP_SYMBOL, NSYMBOL (q))) +++ { +++ TAG_T *s = a68_find_tag_global (TABLE (q), PRIO_SYMBOL, NSYMBOL (q)); +++ +++ if (s != NO_TAG) +++ PRIO (INFO (q)) = PRIO (s); +++ else +++ PRIO (INFO (q)) = 0; +++ } +++ else +++ { +++ a68_error (q, "tag S has not been declared properly"); +++ PRIO (INFO (q)) = 1; +++ } +++ } +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-keywords.cc ++@@ -0,0 +1,254 @@ +++/* Keyword tables. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* Apply stropping to the given keyword and return its written form, which must +++ be upper-case. */ +++ +++const char * +++a68_strop_keyword (const char *keyword) +++{ +++ char *stropped = (char *) alloca (strlen (keyword) + 1); +++ memcpy (stropped, keyword, strlen (keyword) + 1); +++ +++ if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING) +++ { +++ for (char *p = stropped; *p; ++p) +++ *p = TOLOWER (*p); +++ } +++ +++ return ggc_strdup (stropped); +++} +++ +++/* Add token to the token tree. */ +++ +++TOKEN_T * +++a68_add_token (TOKEN_T **p, const char *t) +++{ +++ while (*p != NO_TOKEN) +++ { +++ int k = strcmp (t, TEXT (*p)); +++ +++ if (k < 0) +++ p = &LESS (*p); +++ else if (k > 0) +++ p = &MORE (*p); +++ else +++ return *p; +++ } +++ +++ *p = (TOKEN_T *) ggc_cleared_alloc (); +++ TEXT (*p) = ggc_strdup (t); +++ LESS (*p) = MORE (*p) = NO_TOKEN; +++ return *p; +++} +++ +++/* Find keyword, from token name. */ +++ +++KEYWORD_T * +++a68_find_keyword (KEYWORD_T *p, const char *t) +++{ +++ while (p != NO_KEYWORD) +++ { +++ bool case_insensitive = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); +++ int k = (case_insensitive +++ ? strcasecmp (t, TEXT (p)) +++ : strcmp (t, TEXT (p))); +++ +++ if (k < 0) +++ p = LESS (p); +++ else if (k > 0) +++ p = MORE (p); +++ else +++ return p; +++ } +++ +++ return NO_KEYWORD; +++} +++ +++/* Find keyword, from attribute. */ +++ +++KEYWORD_T * +++a68_find_keyword_from_attribute (KEYWORD_T *p, enum a68_attribute a) +++{ +++ if (p == NO_KEYWORD) +++ return NO_KEYWORD; +++ else if (a == ATTRIBUTE (p)) +++ return p; +++ else +++ { +++ KEYWORD_T *z; +++ +++ if ((z = a68_find_keyword_from_attribute (LESS (p), a)) != NO_KEYWORD) +++ return z; +++ else if ((z = a68_find_keyword_from_attribute (MORE (p), a)) != NO_KEYWORD) +++ return z; +++ } +++ +++ return NO_KEYWORD; +++} +++ +++/* Add keyword to the tree. */ +++ +++static void +++add_keyword (KEYWORD_T **p, enum a68_attribute a, const char *t) +++{ +++ while (*p != NO_KEYWORD) +++ { +++ bool case_insensitive = (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING); +++ int k = (case_insensitive +++ ? strcasecmp (t, TEXT (*p)) +++ : strcmp (t, TEXT (*p))); +++ if (k < 0) +++ p = &LESS (*p); +++ else +++ p = &MORE (*p); +++ } +++ +++ *p = (KEYWORD_T *) ggc_cleared_alloc (); +++ ATTRIBUTE (*p) = a; +++ TEXT (*p) = t; +++ LESS (*p) = MORE (*p) = NO_KEYWORD; +++} +++ +++/* Make tables of keywords and non-terminals. */ +++ +++void +++a68_set_up_tables (void) +++{ +++ /* Entries are randomised to balance the tree. */ +++ if (OPTION_STRICT (&A68_JOB) == false) +++ { +++ /* Symbols from GNU extensions. */ +++ add_keyword (&A68 (top_keyword), ANDF_SYMBOL, "ANDTH"); +++ add_keyword (&A68 (top_keyword), ORF_SYMBOL, "OREL"); +++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_BEGIN_SYMBOL, "{"); +++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_END_SYMBOL, "}"); +++ +++ if (OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING) +++ { +++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_BEGIN_SYMBOL, "NOTE"); +++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_END_SYMBOL, "ETON"); +++ } +++ +++ /* Symbols from MR. */ +++ add_keyword (&A68 (top_keyword), ACCESS_SYMBOL, "ACCESS"); +++ add_keyword (&A68 (top_keyword), DEF_SYMBOL, "DEF"); +++ add_keyword (&A68 (top_keyword), POSTLUDE_SYMBOL, "POSTLUDE"); +++ add_keyword (&A68 (top_keyword), FED_SYMBOL, "FED"); +++ add_keyword (&A68 (top_keyword), FORMAL_NEST_SYMBOL, "NEST"); +++ add_keyword (&A68 (top_keyword), MODULE_SYMBOL, "MODULE"); +++ add_keyword (&A68 (top_keyword), EGG_SYMBOL, "EGG"); +++ add_keyword (&A68 (top_keyword), PUBLIC_SYMBOL, "PUB"); +++ } +++ +++ if (OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING) +++ { +++ /* The following representations do not work well with stropping regimes +++ in which reserved words live in the same namespace than +++ tags/identifiers. The alternative "brief" representations for these +++ symbols shall be used instead. */ +++ add_keyword (&A68 (top_keyword), STYLE_I_COMMENT_SYMBOL, "CO"); +++ add_keyword (&A68 (top_keyword), BOLD_COMMENT_SYMBOL, "COMMENT"); +++ add_keyword (&A68 (top_keyword), STYLE_II_COMMENT_SYMBOL, "#"); +++ } +++ +++ add_keyword (&A68 (top_keyword), POINT_SYMBOL, "."); +++ add_keyword (&A68 (top_keyword), COLON_SYMBOL, ":"); +++ add_keyword (&A68 (top_keyword), THEN_BAR_SYMBOL, "|"); +++ add_keyword (&A68 (top_keyword), SUB_SYMBOL, "["); +++ add_keyword (&A68 (top_keyword), BY_SYMBOL, "BY"); +++ add_keyword (&A68 (top_keyword), OP_SYMBOL, "OP"); +++ add_keyword (&A68 (top_keyword), COMMA_SYMBOL, ","); +++ add_keyword (&A68 (top_keyword), AT_SYMBOL, "AT"); +++ add_keyword (&A68 (top_keyword), PRIO_SYMBOL, "PRIO"); +++ add_keyword (&A68 (top_keyword), END_SYMBOL, "END"); +++ add_keyword (&A68 (top_keyword), GO_SYMBOL, "GO"); +++ add_keyword (&A68 (top_keyword), TO_SYMBOL, "TO"); +++ add_keyword (&A68 (top_keyword), ELSE_BAR_SYMBOL, "|:"); +++ add_keyword (&A68 (top_keyword), THEN_SYMBOL, "THEN"); +++ add_keyword (&A68 (top_keyword), TRUE_SYMBOL, "TRUE"); +++ add_keyword (&A68 (top_keyword), PROC_SYMBOL, "PROC"); +++ add_keyword (&A68 (top_keyword), FOR_SYMBOL, "FOR"); +++ add_keyword (&A68 (top_keyword), GOTO_SYMBOL, "GOTO"); +++ add_keyword (&A68 (top_keyword), WHILE_SYMBOL, "WHILE"); +++ add_keyword (&A68 (top_keyword), IS_SYMBOL, ":=:"); +++ add_keyword (&A68 (top_keyword), ASSIGN_TO_SYMBOL, "=:"); +++ add_keyword (&A68 (top_keyword), COMPL_SYMBOL, "COMPL"); +++ add_keyword (&A68 (top_keyword), FROM_SYMBOL, "FROM"); +++ add_keyword (&A68 (top_keyword), BOLD_PRAGMAT_SYMBOL, "PRAGMAT"); +++ add_keyword (&A68 (top_keyword), DO_SYMBOL, "DO"); +++ add_keyword (&A68 (top_keyword), CASE_SYMBOL, "CASE"); +++ add_keyword (&A68 (top_keyword), LOC_SYMBOL, "LOC"); +++ add_keyword (&A68 (top_keyword), CHAR_SYMBOL, "CHAR"); +++ add_keyword (&A68 (top_keyword), ISNT_SYMBOL, ":/=:"); +++ add_keyword (&A68 (top_keyword), REF_SYMBOL, "REF"); +++ add_keyword (&A68 (top_keyword), NIL_SYMBOL, "NIL"); +++ add_keyword (&A68 (top_keyword), ASSIGN_SYMBOL, ":="); +++ add_keyword (&A68 (top_keyword), FI_SYMBOL, "FI"); +++ add_keyword (&A68 (top_keyword), FILE_SYMBOL, "FILE"); +++ add_keyword (&A68 (top_keyword), PAR_SYMBOL, "PAR"); +++ add_keyword (&A68 (top_keyword), ASSERT_SYMBOL, "ASSERT"); +++ add_keyword (&A68 (top_keyword), OUSE_SYMBOL, "OUSE"); +++ add_keyword (&A68 (top_keyword), IN_SYMBOL, "IN"); +++ add_keyword (&A68 (top_keyword), LONG_SYMBOL, "LONG"); +++ add_keyword (&A68 (top_keyword), SEMI_SYMBOL, ";"); +++ add_keyword (&A68 (top_keyword), EMPTY_SYMBOL, "EMPTY"); +++ add_keyword (&A68 (top_keyword), MODE_SYMBOL, "MODE"); +++ add_keyword (&A68 (top_keyword), IF_SYMBOL, "IF"); +++ add_keyword (&A68 (top_keyword), OD_SYMBOL, "OD"); +++ add_keyword (&A68 (top_keyword), OF_SYMBOL, "OF"); +++ add_keyword (&A68 (top_keyword), STRUCT_SYMBOL, "STRUCT"); +++ add_keyword (&A68 (top_keyword), STYLE_I_PRAGMAT_SYMBOL, "PR"); +++ add_keyword (&A68 (top_keyword), BUS_SYMBOL, "]"); +++ add_keyword (&A68 (top_keyword), SKIP_SYMBOL, "SKIP"); +++ add_keyword (&A68 (top_keyword), SHORT_SYMBOL, "SHORT"); +++ add_keyword (&A68 (top_keyword), IS_SYMBOL, "IS"); +++ add_keyword (&A68 (top_keyword), ESAC_SYMBOL, "ESAC"); +++ add_keyword (&A68 (top_keyword), CHANNEL_SYMBOL, "CHANNEL"); +++ add_keyword (&A68 (top_keyword), REAL_SYMBOL, "REAL"); +++ add_keyword (&A68 (top_keyword), STRING_SYMBOL, "STRING"); +++ add_keyword (&A68 (top_keyword), BOOL_SYMBOL, "BOOL"); +++ add_keyword (&A68 (top_keyword), ISNT_SYMBOL, "ISNT"); +++ add_keyword (&A68 (top_keyword), FALSE_SYMBOL, "FALSE"); +++ add_keyword (&A68 (top_keyword), UNION_SYMBOL, "UNION"); +++ add_keyword (&A68 (top_keyword), OUT_SYMBOL, "OUT"); +++ add_keyword (&A68 (top_keyword), BRIEF_COMMENT_END_SYMBOL, "{"); +++ add_keyword (&A68 (top_keyword), OPEN_SYMBOL, "("); +++ add_keyword (&A68 (top_keyword), BEGIN_SYMBOL, "BEGIN"); +++ add_keyword (&A68 (top_keyword), FLEX_SYMBOL, "FLEX"); +++ add_keyword (&A68 (top_keyword), VOID_SYMBOL, "VOID"); +++ add_keyword (&A68 (top_keyword), BITS_SYMBOL, "BITS"); +++ add_keyword (&A68 (top_keyword), ELSE_SYMBOL, "ELSE"); +++ add_keyword (&A68 (top_keyword), EXIT_SYMBOL, "EXIT"); +++ add_keyword (&A68 (top_keyword), HEAP_SYMBOL, "HEAP"); +++ add_keyword (&A68 (top_keyword), INT_SYMBOL, "INT"); +++ add_keyword (&A68 (top_keyword), BYTES_SYMBOL, "BYTES"); +++ add_keyword (&A68 (top_keyword), SEMA_SYMBOL, "SEMA"); +++ add_keyword (&A68 (top_keyword), CLOSE_SYMBOL, ")"); +++ add_keyword (&A68 (top_keyword), AT_SYMBOL, "@"); +++ add_keyword (&A68 (top_keyword), ELIF_SYMBOL, "ELIF"); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-modes.cc ++@@ -0,0 +1,1325 @@ +++/* Mode table management. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* +++ * Mode collection, equivalencing and derived modes. +++ */ +++ +++/* Few forward references. */ +++ +++static MOID_T *get_mode_from_declarer (NODE_T *p); +++ +++/* +++ * Mode service routines. +++ */ +++ +++/* Count bounds in declarer in tree. */ +++ +++static int +++count_bounds (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return 0; +++ else +++ { +++ if (IS (p, BOUND)) +++ return 1 + count_bounds (NEXT (p)); +++ else +++ return count_bounds (NEXT (p)) + count_bounds (SUB (p)); +++ } +++} +++ +++/* Count number of SHORTs or LONGs. */ +++ +++static int +++count_sizety (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return 0; +++ else if (IS (p, LONGETY)) +++ return count_sizety (SUB (p)) + count_sizety (NEXT (p)); +++ else if (IS (p, SHORTETY)) +++ return count_sizety (SUB (p)) + count_sizety (NEXT (p)); +++ else if (IS (p, LONG_SYMBOL)) +++ return 1; +++ else if (IS (p, SHORT_SYMBOL)) +++ return -1; +++ else +++ return 0; +++} +++ +++/* Count moids in a pack. */ +++ +++int +++a68_count_pack_members (PACK_T *u) +++{ +++ int k = 0; +++ +++ for (; u != NO_PACK; FORWARD (u)) +++ k++; +++ return k; +++} +++ +++/* Replace a mode by its equivalent mode. */ +++ +++static void +++resolve_equivalent (MOID_T **m) +++{ +++ while ((*m) != NO_MOID +++ && EQUIVALENT ((*m)) != NO_MOID +++ && (*m) != EQUIVALENT (*m)) +++ { +++ (*m) = EQUIVALENT (*m); +++ } +++} +++ +++/* Reset moid. */ +++ +++static void +++reset_moid_tree (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ MOID (p) = NO_MOID; +++ reset_moid_tree (SUB (p)); +++ } +++} +++ +++/* Renumber moids. */ +++ +++void +++a68_renumber_moids (MOID_T *p, int n) +++{ +++ if (p != NO_MOID) +++ { +++ NUMBER (p) = n; +++ a68_renumber_moids (NEXT (p), n + 1); +++ } +++} +++ +++/* See whether a mode equivalent to the mode M exists in the global mode table, +++ and return it. Return NO_MOID if no equivalent mode is found. */ +++ +++MOID_T * +++a68_search_equivalent_mode (MOID_T *m) +++{ +++ for (MOID_T *head = TOP_MOID (&A68_JOB); head != NO_MOID; FORWARD (head)) +++ { +++ if (a68_prove_moid_equivalence (head, m)) +++ return head; +++ } +++ +++ return NO_MOID; +++} +++ +++/* Register mode in the global mode table, if mode is unique. */ +++ +++MOID_T * +++a68_register_extra_mode (MOID_T **z, MOID_T *u) +++{ +++ /* If we already know this mode, return the existing entry; otherwise link it +++ in. */ +++ for (MOID_T *head = TOP_MOID (&A68_JOB); head != NO_MOID; FORWARD (head)) +++ { +++ if (a68_prove_moid_equivalence (head, u)) +++ return head; +++ } +++ +++ /* Link to chain and exit. */ +++ NUMBER (u) = A68 (mode_count)++; +++ NEXT (u) = (*z); +++ return *z = u; +++} +++ +++/* Create a new mode. */ +++ +++MOID_T * +++a68_create_mode (int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack) +++{ +++ MOID_T *new_mode = a68_new_moid (); +++ +++ if (sub == NO_MOID) +++ { +++ if (att == REF_SYMBOL +++ || att == FLEX_SYMBOL +++ || att == ROW_SYMBOL) +++ gcc_unreachable (); +++ } +++ +++ USE (new_mode) = false; +++ ATTRIBUTE (new_mode) = att; +++ DIM (new_mode) = dim; +++ NODE (new_mode) = node; +++ HAS_ROWS (new_mode) = (att == ROW_SYMBOL); +++ SUB (new_mode) = sub; +++ PACK (new_mode) = pack; +++ NEXT (new_mode) = NO_MOID; +++ EQUIVALENT (new_mode) = NO_MOID; +++ SLICE (new_mode) = NO_MOID; +++ DEFLEXED (new_mode) = NO_MOID; +++ NAME (new_mode) = NO_MOID; +++ MULTIPLE (new_mode) = NO_MOID; +++ ROWED (new_mode) = NO_MOID; +++ +++ return new_mode; +++} +++ +++/* Create a new mode and add it to chain Z. */ +++ +++MOID_T * +++a68_add_mode (MOID_T **z, int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack) +++{ +++ MOID_T *new_mode = a68_create_mode (att, dim, node, sub, pack); +++ return a68_register_extra_mode (z, new_mode); +++} +++ +++/* Contract a UNION. */ +++ +++void +++a68_contract_union (MOID_T *u) +++{ +++ for (PACK_T *s = PACK (u); s != NO_PACK; FORWARD (s)) +++ { +++ PACK_T *t = s; +++ +++ while (t != NO_PACK) +++ { +++ if (NEXT (t) != NO_PACK && MOID (NEXT (t)) == MOID (s)) +++ { +++ MOID (t) = MOID (t); +++ NEXT (t) = NEXT_NEXT (t); +++ } +++ else +++ FORWARD (t); +++ } +++ } +++} +++ +++/* Absorb UNION pack. */ +++ +++PACK_T * +++a68_absorb_union_pack (PACK_T * u) +++{ +++ PACK_T *z; +++ bool siga; +++ +++ do +++ { +++ z = NO_PACK; +++ siga = false; +++ for (PACK_T *t = u; t != NO_PACK; FORWARD (t)) +++ { +++ if (IS (MOID (t), UNION_SYMBOL)) +++ { +++ siga = true; +++ for (PACK_T *s = PACK (MOID (t)); s != NO_PACK; FORWARD (s)) +++ (void) a68_add_mode_to_pack (&z, MOID (s), NO_TEXT, NODE (s)); +++ } +++ else +++ { +++ (void) a68_add_mode_to_pack (&z, MOID (t), NO_TEXT, NODE (t)); +++ } +++ } +++ u = z; +++ } +++ while (siga); +++ return z; +++} +++ +++/* Add row and its slices to chain, recursively. */ +++ +++static MOID_T * +++add_row (MOID_T **p, int dim, MOID_T *sub, NODE_T *n, bool derivate) +++{ +++ MOID_T *q = a68_add_mode (p, ROW_SYMBOL, dim, n, sub, NO_PACK); +++ +++ DERIVATE (q) |= derivate; +++ if (dim > 1) +++ SLICE (q) = add_row (&NEXT (q), dim - 1, sub, n, derivate); +++ else +++ SLICE (q) = sub; +++ return q; +++} +++ +++/* Add a moid to a pack, maybe with a (field) name. */ +++ +++void +++a68_add_mode_to_pack (PACK_T **p, MOID_T *m, const char *text, NODE_T *node) +++{ +++ PACK_T *z = a68_new_pack (); +++ +++ MOID (z) = m; +++ TEXT (z) = text; +++ NODE (z) = node; +++ NEXT (z) = *p; +++ PREVIOUS (z) = NO_PACK; +++ if (NEXT (z) != NO_PACK) +++ PREVIOUS (NEXT (z)) = z; +++ +++ /* Link in chain. */ +++ *p = z; +++} +++ +++/* Add a moid to a pack, maybe with a (field) name. */ +++ +++void +++a68_add_mode_to_pack_end (PACK_T **p, MOID_T *m, const char *text, NODE_T *node) +++{ +++ PACK_T *z = a68_new_pack (); +++ +++ MOID (z) = m; +++ TEXT (z) = text; +++ NODE (z) = node; +++ NEXT (z) = NO_PACK; +++ if (NEXT (z) != NO_PACK) +++ PREVIOUS (NEXT (z)) = z; +++ +++ /* Link in chain. */ +++ while ((*p) != NO_PACK) +++ p = &(NEXT (*p)); +++ PREVIOUS (z) = (*p); +++ (*p) = z; +++} +++ +++/* Absorb UNION members. */ +++ +++static void +++absorb_unions (MOID_T *m) +++{ +++ /* UNION (A, UNION (B, C)) = UNION (A, B, C) or +++ UNION (A, UNION (A, B)) = UNION (A, B). */ +++ for (; m != NO_MOID; FORWARD (m)) +++ { +++ if (IS (m, UNION_SYMBOL)) +++ PACK (m) = a68_absorb_union_pack (PACK (m)); +++ } +++} +++ +++/* Contract UNIONs. */ +++ +++static void +++contract_unions (MOID_T *m) +++{ +++ /* UNION (A, B, A) -> UNION (A, B). */ +++ for (; m != NO_MOID; FORWARD (m)) +++ { +++ if (IS (m, UNION_SYMBOL) && EQUIVALENT (m) == NO_MOID) +++ a68_contract_union (m); +++ } +++} +++ +++/* +++ * Routines to collect MOIDs from the program text. +++ */ +++ +++/* Search standard mode in standard environ. */ +++ +++static MOID_T * +++search_standard_mode (int sizety, NODE_T *indicant) +++{ +++ /* Search standard mode. */ +++ for (MOID_T *p = TOP_MOID (&A68_JOB); p != NO_MOID; FORWARD (p)) +++ { +++ if (IS (p, STANDARD) +++ && DIM (p) == sizety +++ && NSYMBOL (NODE (p)) == NSYMBOL (indicant)) +++ return p; +++ } +++ +++ /* Map onto greater precision. */ +++ if (sizety < 0) +++ return search_standard_mode (sizety + 1, indicant); +++ else if (sizety > 0) +++ return search_standard_mode (sizety - 1, indicant); +++ else +++ return NO_MOID; +++} +++ +++/* Collect mode from STRUCT field. */ +++ +++static void +++get_mode_from_struct_field (NODE_T *p, PACK_T **u) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, IDENTIFIER)) +++ { +++ ATTRIBUTE (p) = FIELD_IDENTIFIER; +++ (void) a68_add_mode_to_pack (u, NO_MOID, NSYMBOL (p), p); +++ } +++ else if (IS (p, DECLARER)) +++ { +++ MOID_T *new_one = get_mode_from_declarer (p); +++ +++ get_mode_from_struct_field (NEXT (p), u); +++ for (PACK_T *t = *u; t && MOID (t) == NO_MOID; FORWARD (t)) +++ { +++ MOID (t) = new_one; +++ MOID (NODE (t)) = new_one; +++ } +++ } +++ else +++ { +++ get_mode_from_struct_field (NEXT (p), u); +++ get_mode_from_struct_field (SUB (p), u); +++ } +++ } +++} +++ +++/* Collect MODE from formal pack. */ +++ +++static void +++get_mode_from_formal_pack (NODE_T *p, PACK_T **u) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, DECLARER)) +++ { +++ get_mode_from_formal_pack (NEXT (p), u); +++ MOID_T *z = get_mode_from_declarer (p); +++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); +++ } +++ else +++ { +++ get_mode_from_formal_pack (NEXT (p), u); +++ get_mode_from_formal_pack (SUB (p), u); +++ } +++ } +++} +++ +++/* Collect MODE or VOID from formal UNION pack. */ +++ +++static void +++get_mode_from_union_pack (NODE_T *p, PACK_T **u) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, DECLARER) || IS (p, VOID_SYMBOL)) +++ { +++ get_mode_from_union_pack (NEXT (p), u); +++ MOID_T *z = get_mode_from_declarer (p); +++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); +++ } +++ else +++ { +++ get_mode_from_union_pack (NEXT (p), u); +++ get_mode_from_union_pack (SUB (p), u); +++ } +++ } +++} +++ +++/* Collect mode from PROC, OP pack. */ +++ +++static void +++get_mode_from_routine_pack (NODE_T *p, PACK_T **u) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, IDENTIFIER)) +++ (void) a68_add_mode_to_pack (u, NO_MOID, NO_TEXT, p); +++ else if (IS (p, DECLARER)) +++ { +++ MOID_T *z = get_mode_from_declarer (p); +++ +++ for (PACK_T *t = *u; t != NO_PACK && MOID (t) == NO_MOID; FORWARD (t)) +++ { +++ MOID (t) = z; +++ MOID (NODE (t)) = z; +++ } +++ (void) a68_add_mode_to_pack (u, z, NO_TEXT, p); +++ } +++ else +++ { +++ get_mode_from_routine_pack (NEXT (p), u); +++ get_mode_from_routine_pack (SUB (p), u); +++ } +++ } +++} +++ +++/* Collect MODE from DECLARER. */ +++ +++static MOID_T * +++get_mode_from_declarer (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return NO_MOID; +++ else +++ { +++ if (IS (p, DECLARER)) +++ { +++ if (MOID (p) != NO_MOID) +++ return MOID (p); +++ else +++ return MOID (p) = get_mode_from_declarer (SUB (p)); +++ } +++ else +++ { +++ if (IS (p, VOID_SYMBOL)) +++ { +++ MOID (p) = M_VOID; +++ return MOID (p); +++ } +++ else if (IS (p, LONGETY)) +++ { +++ if (a68_whether (p, LONGETY, INDICANT, STOP)) +++ { +++ int k = count_sizety (SUB (p)); +++ MOID (p) = search_standard_mode (k, NEXT (p)); +++ return MOID (p); +++ } +++ else +++ { +++ return NO_MOID; +++ } +++ } +++ else if (IS (p, SHORTETY)) +++ { +++ if (a68_whether (p, SHORTETY, INDICANT, STOP)) +++ { +++ int k = count_sizety (SUB (p)); +++ MOID (p) = search_standard_mode (k, NEXT (p)); +++ return MOID (p); +++ } +++ else +++ return NO_MOID; +++ } +++ else if (IS (p, INDICANT)) +++ { +++ MOID_T *q = search_standard_mode (0, p); +++ if (q != NO_MOID) +++ MOID (p) = q; +++ else +++ { +++ /* Position of definition tells indicants apart. */ +++ TAG_T *y = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); +++ if (y == NO_TAG) +++ a68_error ( p, "tag Z has not been declared properly", NSYMBOL (p)); +++ else +++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), INDICANT, 0, NODE (y), +++ NO_MOID, NO_PACK); +++ } +++ return MOID (p); +++ } +++ else if (IS_REF (p)) +++ { +++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); +++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, p, new_one, NO_PACK); +++ return MOID (p); +++ } +++ else if (IS_FLEX (p)) +++ { +++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); +++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, p, new_one, NO_PACK); +++ SLICE (MOID (p)) = SLICE (new_one); +++ return MOID (p); +++ } +++ else if (IS (p, FORMAL_BOUNDS)) +++ { +++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); +++ MOID (p) = add_row (&TOP_MOID (&A68_JOB), +++ 1 + a68_count_formal_bounds (SUB (p)), new_one, p, false); +++ return MOID (p); +++ } +++ else if (IS (p, BOUNDS)) +++ { +++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); +++ MOID (p) = add_row (&TOP_MOID (&A68_JOB), count_bounds (SUB (p)), new_one, p, false); +++ return MOID (p); +++ } +++ else if (IS (p, STRUCT_SYMBOL)) +++ { +++ PACK_T *u = NO_PACK; +++ get_mode_from_struct_field (NEXT (p), &u); +++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), +++ STRUCT_SYMBOL, a68_count_pack_members (u), p, NO_MOID, u); +++ return MOID (p); +++ } +++ else if (IS (p, UNION_SYMBOL)) +++ { +++ PACK_T *u = NO_PACK; +++ get_mode_from_union_pack (NEXT (p), &u); +++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), +++ UNION_SYMBOL, a68_count_pack_members (u), p, NO_MOID, u); +++ return MOID (p); +++ } +++ else if (IS (p, PROC_SYMBOL)) +++ { +++ NODE_T *save = p; +++ PACK_T *u = NO_PACK; +++ if (IS (NEXT (p), FORMAL_DECLARERS)) +++ { +++ get_mode_from_formal_pack (SUB_NEXT (p), &u); +++ FORWARD (p); +++ } +++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); +++ MOID (p) = +++ a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), save, new_one, u); +++ MOID (save) = MOID (p); +++ return MOID (p); +++ } +++ else +++ return NO_MOID; +++ } +++ } +++} +++ +++/* Collect MODEs from a routine-text header. */ +++ +++static MOID_T * +++get_mode_from_routine_text (NODE_T *p) +++{ +++ PACK_T *u = NO_PACK; +++ NODE_T *q = p; +++ +++ if (IS (p, PARAMETER_PACK)) +++ { +++ get_mode_from_routine_pack (SUB (p), &u); +++ FORWARD (p); +++ } +++ MOID_T *n = get_mode_from_declarer (p); +++ return a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), q, n, u); +++} +++ +++/* Collect modes from operator-plan. */ +++ +++static MOID_T * +++get_mode_from_operator (NODE_T *p) +++{ +++ PACK_T *u = NO_PACK; +++ NODE_T *save = p; +++ +++ if (IS (NEXT (p), FORMAL_DECLARERS)) +++ { +++ get_mode_from_formal_pack (SUB_NEXT (p), &u); +++ FORWARD (p); +++ } +++ MOID_T *new_one = get_mode_from_declarer (NEXT (p)); +++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (u), save, new_one, u); +++ return MOID (p); +++} +++ +++/* Collect mode from denotation. */ +++ +++static void +++get_mode_from_denotation (NODE_T *p, int sizety) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, ROW_CHAR_DENOTATION)) +++ { +++ const char *s = NSYMBOL (p); +++ size_t len = strlen (s); +++ +++ if (len == 1 +++ || (len == 2 && s[0] == '\'') +++ || (len == 8 && s[0] == '\'' && s[1] == '(' && s[2] == 'u') +++ || (len == 12 && s[0] == '\'' && s[1] == '(' && s[2] == 'U')) +++ { +++ MOID (p) = M_CHAR; +++ } +++ else +++ MOID (p) = M_ROW_CHAR; +++ } +++ else if (IS (p, TRUE_SYMBOL) || IS (p, FALSE_SYMBOL)) +++ { +++ MOID (p) = M_BOOL; +++ } +++ else if (IS (p, INT_DENOTATION)) +++ { +++ if (sizety == -2) +++ MOID (p) = M_SHORT_SHORT_INT; +++ else if (sizety == -1) +++ MOID (p) = M_SHORT_INT; +++ else if (sizety == 0) +++ MOID (p) = M_INT; +++ else if (sizety == 1) +++ MOID (p) = M_LONG_INT; +++ else if (sizety == 2) +++ MOID (p) = M_LONG_LONG_INT; +++ else +++ MOID (p) = (sizety > 0 ? M_LONG_LONG_INT : M_INT); +++ } +++ else if (IS (p, REAL_DENOTATION)) +++ { +++ if (sizety == 0) +++ MOID (p) = M_REAL; +++ else if (sizety == 1) +++ MOID (p) = M_LONG_REAL; +++ else if (sizety == 2) +++ MOID (p) = M_LONG_LONG_REAL; +++ else +++ MOID (p) = (sizety > 0 ? M_LONG_LONG_REAL : M_REAL); +++ } +++ else if (IS (p, BITS_DENOTATION)) +++ { +++ if (sizety == -2) +++ MOID (p) = M_SHORT_SHORT_BITS; +++ else if (sizety == -1) +++ MOID (p) = M_SHORT_BITS; +++ else if (sizety == 0) +++ MOID (p) = M_BITS; +++ else if (sizety == 1) +++ MOID (p) = M_LONG_BITS; +++ else if (sizety == 2) +++ MOID (p) = M_LONG_LONG_BITS; +++ else +++ MOID (p) = (sizety > 0 ? M_LONG_LONG_BITS : M_BITS); +++ } +++ else if (IS (p, LONGETY) || IS (p, SHORTETY)) +++ { +++ get_mode_from_denotation (NEXT (p), count_sizety (SUB (p))); +++ MOID (p) = MOID (NEXT (p)); +++ } +++ else if (IS (p, EMPTY_SYMBOL)) +++ { +++ MOID (p) = M_VOID; +++ } +++ } +++} +++ +++/* Collect modes from the syntax tree. */ +++ +++static void +++get_modes_from_tree (NODE_T *p, int attribute) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, VOID_SYMBOL)) +++ MOID (q) = M_VOID; +++ else if (IS (q, DECLARER)) +++ { +++ if (attribute == VARIABLE_DECLARATION) +++ { +++ MOID_T *new_one = get_mode_from_declarer (q); +++ MOID (q) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, new_one, NO_PACK); +++ } +++ else +++ MOID (q) = get_mode_from_declarer (q); +++ } +++ else if (IS (q, ROUTINE_TEXT)) +++ { +++ MOID (q) = get_mode_from_routine_text (SUB (q)); +++ } +++ else if (IS (q, OPERATOR_PLAN)) +++ { +++ MOID (q) = get_mode_from_operator (SUB (q)); +++ } +++ else if (a68_is_one_of (q, LOC_SYMBOL, HEAP_SYMBOL, STOP)) +++ { +++ if (attribute == GENERATOR) +++ { +++ MOID_T *new_one = get_mode_from_declarer (NEXT (q)); +++ MOID (NEXT (q)) = new_one; +++ MOID (q) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, new_one, NO_PACK); +++ } +++ } +++ else +++ { +++ if (attribute == DENOTATION) +++ get_mode_from_denotation (q, 0); +++ } +++ } +++ +++ if (attribute != DENOTATION) +++ { +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (SUB (q) != NO_NODE) +++ get_modes_from_tree (SUB (q), ATTRIBUTE (q)); +++ } +++ } +++} +++ +++//! @brief Collect modes from proc variables. +++ +++static void +++get_mode_from_proc_variables (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) +++ { +++ get_mode_from_proc_variables (SUB (p)); +++ get_mode_from_proc_variables (NEXT (p)); +++ } +++ else if (IS (p, QUALIFIER) || IS (p, PROC_SYMBOL) || IS (p, COMMA_SYMBOL)) +++ { +++ get_mode_from_proc_variables (NEXT (p)); +++ } +++ else if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ MOID_T *new_one = MOID (NEXT_NEXT (p)); +++ MOID (p) = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, p, new_one, NO_PACK); +++ } +++ } +++} +++ +++/* Collect modes from proc variable declarations. */ +++ +++static void +++get_mode_from_proc_var_declarations_tree (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ get_mode_from_proc_var_declarations_tree (SUB (p)); +++ +++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) +++ get_mode_from_proc_variables (p); +++ } +++} +++ +++/* +++ * Various routines to test modes. +++ */ +++ +++/* Whether a mode declaration refers to self or relates to void. +++ This uses Lindsey's ying-yang algorithm. */ +++ +++static bool +++is_well_formed (MOID_T *def, MOID_T *z, bool yin, bool yang, bool video) +++{ +++ if (z == NO_MOID) +++ return false; +++ else if (yin && yang) +++ return z == M_VOID ? video : true; +++ else if (z == M_VOID) +++ return video; +++ else if (IS (z, STANDARD)) +++ return true; +++ else if (IS (z, INDICANT)) +++ { +++ if (def == NO_MOID) +++ { +++ /* Check an applied indicant for relation to VOID. */ +++ while (z != NO_MOID) +++ z = EQUIVALENT (z); +++ if (z == M_VOID) +++ return video; +++ else +++ return true; +++ } +++ else +++ { +++ if (z == def || USE (z)) +++ return yin && yang; +++ else +++ { +++ USE (z) = true; +++ bool wwf = is_well_formed (def, EQUIVALENT (z), yin, yang, video); +++ USE (z) = false; +++ return wwf; +++ } +++ } +++ } +++ else if (IS_REF (z)) +++ return is_well_formed (def, SUB (z), true, yang, false); +++ else if (IS (z, PROC_SYMBOL)) +++ return PACK (z) != NO_PACK ? true : is_well_formed (def, SUB (z), true, yang, true); +++ else if (IS_ROW (z)) +++ return is_well_formed (def, SUB (z), yin, yang, false); +++ else if (IS_FLEX (z)) +++ return is_well_formed (def, SUB (z), yin, yang, false); +++ else if (IS (z, STRUCT_SYMBOL)) +++ { +++ for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s)) +++ { +++ if (!is_well_formed (def, MOID (s), yin, true, false)) +++ return false; +++ } +++ return true; +++ } +++ else if (IS (z, UNION_SYMBOL)) +++ { +++ for (PACK_T *s = PACK (z); s != NO_PACK; FORWARD (s)) +++ { +++ if (!is_well_formed (def, MOID (s), yin, yang, true)) +++ return false; +++ } +++ return true; +++ } +++ else +++ { +++ return false; +++ } +++} +++ +++/* Replace a mode by its equivalent mode (walk chain). */ +++ +++static void +++resolve_eq_members (MOID_T *q) +++{ +++ resolve_equivalent (&SUB (q)); +++ resolve_equivalent (&DEFLEXED (q)); +++ resolve_equivalent (&MULTIPLE (q)); +++ resolve_equivalent (&NAME (q)); +++ resolve_equivalent (&SLICE (q)); +++ resolve_equivalent (&TRIM (q)); +++ resolve_equivalent (&ROWED (q)); +++ for (PACK_T *p = PACK (q); p != NO_PACK; FORWARD (p)) +++ resolve_equivalent (&MOID (p)); +++} +++ +++/* Track equivalent tags. */ +++ +++static void +++resolve_eq_tags (TAG_T *z) +++{ +++ for (; z != NO_TAG; FORWARD (z)) +++ { +++ if (MOID (z) != NO_MOID) +++ resolve_equivalent (&MOID (z)); +++ } +++} +++ +++/* Bind modes in syntax tree. */ +++ +++static void +++bind_modes (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ resolve_equivalent (&MOID (p)); +++ +++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) +++ { +++ TABLE_T *s = TABLE (SUB (p)); +++ for (TAG_T *z = INDICANTS (s); z != NO_TAG; FORWARD (z)) +++ { +++ if (NODE (z) != NO_NODE) +++ { +++ resolve_equivalent (&MOID (NEXT_NEXT (NODE (z)))); +++ MOID (z) = MOID (NEXT_NEXT (NODE (z))); +++ MOID (NODE (z)) = MOID (z); +++ } +++ } +++ } +++ bind_modes (SUB (p)); +++ } +++} +++ +++/* Routines for calculating subordinates for selections, for instance selection +++ from REF STRUCT (A) yields REF A fields and selection from [] STRUCT (A) +++ yields [] A fields. */ +++ +++/* Make name pack. +++ Given a pack with modes: M1, M2, ... +++ Build a pack with modes: REF M1, REF M2, ... */ +++ +++static void +++make_name_pack (PACK_T *src, PACK_T **dst, MOID_T **p) +++{ +++ if (src != NO_PACK) +++ { +++ make_name_pack (NEXT (src), dst, p); +++ MOID_T *z = a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, MOID (src), NO_PACK); +++ (void) a68_add_mode_to_pack (dst, z, TEXT (src), NODE (src)); +++ } +++} +++ +++/* Make flex multiple row pack. +++ Given a pack with modes: M1, M2, ... +++ Build a pack with modes: []M1, []M2, ... */ +++ +++static void +++make_flex_multiple_row_pack (PACK_T *src, PACK_T **dst, MOID_T **p, int dim) +++{ +++ if (src != NO_PACK) +++ { +++ make_flex_multiple_row_pack (NEXT (src), dst, p, dim); +++ MOID_T *z = add_row (p, dim, MOID (src), NO_NODE, false); +++ z = a68_add_mode (p, FLEX_SYMBOL, 0, NO_NODE, z, NO_PACK); +++ (void) a68_add_mode_to_pack (dst, z, TEXT (src), NODE (src)); +++ } +++} +++ +++/* Make name struct. */ +++ +++static MOID_T * +++make_name_struct (MOID_T *m, MOID_T **p) +++{ +++ PACK_T *u = NO_PACK; +++ make_name_pack (PACK (m), &u, p); +++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); +++} +++ +++/* Make name row. */ +++ +++static MOID_T * +++make_name_row (MOID_T *m, MOID_T **p) +++{ +++ if (SLICE (m) != NO_MOID) +++ return a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, SLICE (m), NO_PACK); +++ else if (SUB (m) != NO_MOID) +++ return a68_add_mode (p, REF_SYMBOL, 0, NO_NODE, SUB (m), NO_PACK); +++ else +++ /* weird, FLEX INT or so ... */ +++ return NO_MOID; +++} +++ +++/* Make multiple row pack. */ +++ +++static void +++make_multiple_row_pack (PACK_T *src, PACK_T **dst, MOID_T **p, int dim) +++{ +++ if (src != NO_PACK) +++ { +++ make_multiple_row_pack (NEXT (src), dst, p, dim); +++ (void) a68_add_mode_to_pack (dst, add_row (p, dim, MOID (src), NO_NODE, false), +++ TEXT (src), NODE (src)); +++ } +++} +++ +++/* Make flex multiple struct. */ +++ +++static MOID_T * +++make_flex_multiple_struct (MOID_T *m, MOID_T **p, int dim) +++{ +++ PACK_T *u = NO_PACK; +++ make_flex_multiple_row_pack (PACK (m), &u, p, dim); +++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); +++} +++ +++/* Make multiple struct. */ +++ +++static MOID_T * +++make_multiple_struct (MOID_T *m, MOID_T **p, int dim) +++{ +++ PACK_T *u = NO_PACK; +++ make_multiple_row_pack (PACK (m), &u, p, dim); +++ return a68_add_mode (p, STRUCT_SYMBOL, DIM (m), NO_NODE, NO_MOID, u); +++} +++ +++/* Whether mode has row. */ +++ +++static bool +++is_mode_has_row (MOID_T *m) +++{ +++ if (IS (m, STRUCT_SYMBOL) || IS (m, UNION_SYMBOL)) +++ { +++ bool k = false; +++ +++ for (PACK_T *p = PACK (m); p != NO_PACK && k == false; FORWARD (p)) +++ { +++ HAS_ROWS (MOID (p)) = is_mode_has_row (MOID (p)); +++ k |= (HAS_ROWS (MOID (p))); +++ } +++ return k; +++ } +++ else +++ return (HAS_ROWS (m) || IS_ROW (m) || IS_FLEX (m)); +++} +++ +++/* Compute derived modes. */ +++ +++static void +++compute_derived_modes (MODULE_T *mod) +++{ +++ MOID_T *z; +++ int len = 0, nlen = 1; +++ +++ /* UNION things. */ +++ absorb_unions (TOP_MOID (mod)); +++ contract_unions (TOP_MOID (mod)); +++ /* The for-statement below prevents an endless loop. */ +++ for (int k = 1; k <= 10 && len != nlen; k++) +++ { +++ /* Make deflexed modes. */ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (SUB (z) != NO_MOID) +++ { +++ if (IS_REF_FLEX (z) && DEFLEXED (SUB_SUB (z)) != NO_MOID) +++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), +++ DEFLEXED (SUB_SUB (z)), NO_PACK); +++ else if (IS_REF (z) && DEFLEXED (SUB (z)) != NO_MOID) +++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), +++ DEFLEXED (SUB (z)), NO_PACK); +++ else if (IS_ROW (z) && DEFLEXED (SUB (z)) != NO_MOID) +++ DEFLEXED (z) = a68_add_mode (&TOP_MOID (mod), ROW_SYMBOL, DIM (z), NODE (z), +++ DEFLEXED (SUB (z)), NO_PACK); +++ else if (IS_FLEX (z) && DEFLEXED (SUB (z)) != NO_MOID) +++ DEFLEXED (z) = DEFLEXED (SUB (z)); +++ else if (IS_FLEX (z)) +++ DEFLEXED (z) = SUB (z); +++ else +++ DEFLEXED (z) = z; +++ } +++ } +++ +++ /* Derived modes for stowed modes. */ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (NAME (z) == NO_MOID && IS_REF (z)) +++ { +++ if (IS (SUB (z), STRUCT_SYMBOL)) +++ NAME (z) = make_name_struct (SUB (z), &TOP_MOID (mod)); +++ else if (IS_ROW (SUB (z))) +++ NAME (z) = make_name_row (SUB (z), &TOP_MOID (mod)); +++ else if (IS_FLEX (SUB (z)) && SUB_SUB (z) != NO_MOID) +++ NAME (z) = make_name_row (SUB_SUB (z), &TOP_MOID (mod)); +++ } +++ +++ if (MULTIPLE (z) != NO_MOID) +++ ; +++ else if (IS_REF (z)) +++ { +++ if (MULTIPLE (SUB (z)) != NO_MOID) +++ MULTIPLE (z) = make_name_struct (MULTIPLE (SUB (z)), &TOP_MOID (mod)); +++ } +++ else if (IS_ROW (z)) +++ { +++ if (IS (SUB (z), STRUCT_SYMBOL)) +++ MULTIPLE (z) = make_multiple_struct (SUB (z), &TOP_MOID (mod), DIM (z)); +++ } +++ } +++ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (TRIM (z) == NO_MOID && IS_FLEX (z)) +++ TRIM (z) = SUB (z); +++ if (TRIM (z) == NO_MOID && IS_REF_FLEX (z)) +++ TRIM (z) = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), SUB_SUB (z), NO_PACK); +++ } +++ +++ /* Fill out stuff for rows, f.i. inverse relations. */ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS_ROW (z) && DIM (z) > 0 && SUB (z) != NO_MOID && !DERIVATE (z)) +++ (void) add_row (&TOP_MOID (mod), DIM (z) + 1, SUB (z), NODE (z), true); +++ else if (IS_REF (z) && IS (SUB (z), ROW_SYMBOL) && !DERIVATE (SUB (z))) +++ { +++ MOID_T *x = add_row (&TOP_MOID (mod), DIM (SUB (z)) + 1, SUB_SUB (z), NODE (SUB (z)), true); +++ MOID_T *y = a68_add_mode (&TOP_MOID (mod), REF_SYMBOL, 0, NODE (z), x, NO_PACK); +++ NAME (y) = z; +++ } +++ } +++ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS_ROW (z) && SLICE (z) != NO_MOID) +++ ROWED (SLICE (z)) = z; +++ if (IS_REF (z)) +++ { +++ MOID_T *y = SUB (z); +++ if (SLICE (y) != NO_MOID && IS_ROW (SLICE (y)) && NAME (z) != NO_MOID) +++ ROWED (NAME (z)) = z; +++ } +++ } +++ +++ bind_modes (TOP_NODE (mod)); +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS (z, INDICANT) && NODE (z) != NO_NODE) +++ EQUIVALENT (z) = MOID (NODE (z)); +++ } +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ resolve_eq_members (z); +++ resolve_eq_tags (INDICANTS (A68_STANDENV)); +++ resolve_eq_tags (IDENTIFIERS (A68_STANDENV)); +++ resolve_eq_tags (OPERATORS (A68_STANDENV)); +++ resolve_equivalent (&M_STRING); +++ resolve_equivalent (&M_COMPLEX); +++ resolve_equivalent (&M_LONG_COMPLEX); +++ resolve_equivalent (&M_LONG_LONG_COMPLEX); +++ resolve_equivalent (&M_SEMA); +++ /* UNION members could be resolved. */ +++ absorb_unions (TOP_MOID (mod)); +++ contract_unions (TOP_MOID (mod)); +++ /* FLEX INDICANT could be resolved. */ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS_FLEX (z) && SUB (z) != NO_MOID) +++ { +++ if (SUB_SUB (z) != NO_MOID && IS (SUB_SUB (z), STRUCT_SYMBOL)) +++ MULTIPLE (z) = make_flex_multiple_struct (SUB_SUB (z), &TOP_MOID (mod), DIM (SUB (z))); +++ } +++ } +++ /* See what new known modes we have generated by resolving.. */ +++ for (z = TOP_MOID (mod); z != STANDENV_MOID (&A68_JOB); FORWARD (z)) +++ { +++ MOID_T *v; +++ +++ for (v = NEXT (z); v != NO_MOID; FORWARD (v)) +++ { +++ if (a68_prove_moid_equivalence (z, v)) +++ { +++ EQUIVALENT (z) = v; +++ EQUIVALENT (v) = NO_MOID; +++ } +++ } +++ } +++ +++ /* Count the modes to check self consistency. */ +++ len = nlen; +++ for (nlen = 0, z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ nlen++; +++ } +++ +++ gcc_assert (M_STRING == M_FLEX_ROW_CHAR); +++ +++ /* Find out what modes contain rows. */ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ HAS_ROWS (z) = is_mode_has_row (z); +++ +++ /* Check flexible modes. */ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS_FLEX (z) && !IS (SUB (z), ROW_SYMBOL)) +++ a68_error (NODE (z), "M does not specify a well formed mode", z); +++ } +++ +++ /* Check on fields in structured modes f.i. STRUCT (REAL x, INT n, REAL x) is +++ wrong. */ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS (z, STRUCT_SYMBOL) && EQUIVALENT (z) == NO_MOID) +++ { +++ PACK_T *s = PACK (z); +++ +++ for (; s != NO_PACK; FORWARD (s)) +++ { +++ PACK_T *t = NEXT (s); +++ bool x = true; +++ +++ for (t = NEXT (s); t != NO_PACK && x; FORWARD (t)) +++ { +++ if (TEXT (s) == TEXT (t)) +++ { +++ a68_error (NODE (z), "multiple declaration of field S"); +++ while (NEXT (s) != NO_PACK && TEXT (NEXT (s)) == TEXT (t)) +++ FORWARD (s); +++ x = false; +++ } +++ } +++ } +++ } +++ } +++ +++ /* Various union test. */ +++ for (z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS (z, UNION_SYMBOL) && EQUIVALENT (z) == NO_MOID) +++ { +++ PACK_T *s = PACK (z); +++ /* Discard unions with one member. */ +++ if (a68_count_pack_members (s) == 1) +++ a68_error (NODE (z), "M must have at least two components", z); +++ /* Discard incestuous unions with firmly related modes. */ +++ for (; s != NO_PACK; FORWARD (s)) +++ { +++ PACK_T *t; +++ +++ for (t = NEXT (s); t != NO_PACK; FORWARD (t)) +++ { +++ if (MOID (t) != MOID (s)) +++ { +++ if (a68_is_firm (MOID (s), MOID (t))) +++ a68_error (NODE (z), "M has firmly related components", z); +++ } +++ } +++ } +++ +++ /* Discard incestuous unions with firmly related subsets. */ +++ for (s = PACK (z); s != NO_PACK; FORWARD (s)) +++ { +++ MOID_T *n = a68_depref_completely (MOID (s)); +++ +++ if (IS (n, UNION_SYMBOL) && a68_is_subset (n, z, NO_DEFLEXING)) +++ a68_error (NODE (z), "M has firmly related subset M", z, n); +++ } +++ } +++ } +++ +++ /* Wrap up and exit. */ +++ a68_free_postulate_list (A68 (top_postulate), NO_POSTULATE); +++ A68 (top_postulate) = NO_POSTULATE; +++} +++ +++/* Make list of all modes in the program. */ +++ +++void +++a68_make_moid_list (MODULE_T *mod) +++{ +++ bool cont = true; +++ +++ /* Collect modes from the syntax tree. */ +++ reset_moid_tree (TOP_NODE (mod)); +++ get_modes_from_tree (TOP_NODE (mod), STOP); +++ get_mode_from_proc_var_declarations_tree (TOP_NODE (mod)); +++ +++ /* Connect indicants to their declarers. */ +++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS (z, INDICANT)) +++ { +++ NODE_T *u = NODE (z); +++ gcc_assert (NEXT (u) != NO_NODE); +++ gcc_assert (NEXT_NEXT (u) != NO_NODE); +++ gcc_assert (MOID (NEXT_NEXT (u)) != NO_MOID); +++ EQUIVALENT (z) = MOID (NEXT_NEXT (u)); +++ } +++ } +++ +++ /* Checks on wrong declarations. */ +++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ USE (z) = false; +++ +++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (IS (z, INDICANT) && EQUIVALENT (z) != NO_MOID) +++ { +++ if (!is_well_formed (z, EQUIVALENT (z), false, false, true)) +++ { +++ a68_error (NODE (z), "M does not specify a well formed mode", z); +++ cont = false; +++ } +++ } +++ } +++ +++ for (MOID_T *z = TOP_MOID (mod); cont && z != NO_MOID; FORWARD (z)) +++ { +++ if (IS (z, INDICANT) && EQUIVALENT (z) != NO_MOID) +++ ; +++ else if (NODE (z) != NO_NODE) +++ { +++ if (!is_well_formed (NO_MOID, z, false, false, true)) +++ a68_error (NODE (z), "M does not specify a well formed mode", z); +++ } +++ } +++ +++ for (MOID_T *z = TOP_MOID (mod); z != NO_MOID; FORWARD (z)) +++ { +++ if (USE (z)) +++ gcc_unreachable (); +++ } +++ +++ if (ERROR_COUNT (mod) != 0) +++ return; +++ +++ compute_derived_modes (mod); +++ a68_init_postulates (); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-moids-check.cc ++@@ -0,0 +1,1878 @@ +++/* Mode checker routines. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC and fixes by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++/* ALGOL 68 contexts are SOFT, WEAK, MEEK, FIRM and STRONG. +++ These contexts are increasing in strength: +++ +++ SOFT: Deproceduring +++ +++ WEAK: Dereferencing to REF [] or REF STRUCT +++ +++ MEEK: Deproceduring and dereferencing +++ +++ FIRM: MEEK followed by uniting +++ +++ STRONG: FIRM followed by rowing, widening or voiding +++ +++ Furthermore you will see in this file next switches: +++ +++ (1) FORCE_DEFLEXING allows assignment compatibility between FLEX and non FLEX +++ rows. This can only be the case when there is no danger of altering bounds of a +++ non FLEX row. +++ +++ (2) ALIAS_DEFLEXING prohibits aliasing a FLEX row to a non FLEX row (vice versa +++ is no problem) so that one cannot alter the bounds of a non FLEX row by +++ aliasing it to a FLEX row. This is particularly the case when passing names as +++ parameters to procedures: +++ +++ PROC x = (REF STRING s) VOID: ..., PROC y = (REF [] CHAR c) VOID: ...; +++ +++ x (LOC STRING); # OK # +++ +++ x (LOC [10] CHAR); # Not OK, suppose x changes bounds of s! # +++ +++ y (LOC STRING); # OK # +++ +++ y (LOC [10] CHAR); # OK # +++ +++ (3) SAFE_DEFLEXING sets FLEX row apart from non FLEX row. This holds for names, +++ not for values, so common things are not rejected, for instance +++ +++ STRING x = read string; +++ +++ [] CHAR y = read string +++ +++ (4) NO_DEFLEXING sets FLEX row apart from non FLEX row. */ +++ +++/* +++ In the RR grammar: +++ +++ SORT: strong; firm; weak; meek; soft. +++ SORT MOID serial clause; +++ strong void unit, go on token, SORT MOID serial clause; +++ declaration, go on token, SORT MOID serial clause; +++ SORT MOID unit +++ +++ And it is the SORT MOID sequence of metanotions, which shall evaluate the +++ same in the complete rule, that control the balancing! o_O +++ +++ Also, it denotes how the SORT MOID of the serial clause gets "passed" to the +++ last unit in the serial clause. Other units have SOID `strong void'. +++ +++ It is used to pass down the required mode on whatever context. Like, +++ PARTICULAR_PROGRAM evaluates in strong context and requires VOID. +++ +++ The ATTRIBUTE in the soid is used to pass down the kind of construct that +++ introduces the context+required mode. This is used in +++ a68_determine_unique_mode in order to know whether balancing shall be +++ performed or not. +++*/ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++/* Forward declarations of some of the functions defined below. */ +++ +++static void mode_check_enclosed (NODE_T *p, SOID_T *x, SOID_T *y); +++static void mode_check_unit (NODE_T *p, SOID_T *x, SOID_T *y); +++static void mode_check_formula (NODE_T *p, SOID_T *x, SOID_T *y); +++static void mode_check_module_declaration (NODE_T *p); +++static void mode_check_module_text (NODE_T *p); +++static void mode_check_module_declaration (NODE_T *p); +++ +++/* Driver for mode checker. */ +++ +++void +++a68_mode_checker (NODE_T *p) +++{ +++ if (IS (p, PACKET)) +++ { +++ p = SUB (p); +++ +++ if (IS (p, PARTICULAR_PROGRAM)) +++ { +++ A68 (top_soid_list) = NO_SOID; +++ SOID_T x, y; +++ a68_make_soid (&x, STRONG, M_VOID, 0); +++ mode_check_enclosed (SUB (p), &x, &y); +++ MOID (p) = MOID (&y); +++ } +++ else if (IS (p, PRELUDE_PACKET)) +++ mode_check_module_declaration (SUB (p)); +++ } +++} +++ +++/* Mode check on bounds. */ +++ +++static void +++mode_check_bounds (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, UNIT)) +++ { +++ SOID_T x, y; +++ a68_make_soid (&x, STRONG, M_INT, 0); +++ mode_check_unit (p, &x, &y); +++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&y), M_INT, MEEK, SAFE_DEFLEXING, UNIT); +++ mode_check_bounds (NEXT (p)); +++ } +++ else +++ { +++ mode_check_bounds (SUB (p)); +++ mode_check_bounds (NEXT (p)); +++ } +++} +++ +++/* Mode check declarer. */ +++ +++static void +++mode_check_declarer (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, BOUNDS)) +++ { +++ mode_check_bounds (SUB (p)); +++ mode_check_declarer (NEXT (p)); +++ } +++ else +++ { +++ mode_check_declarer (SUB (p)); +++ mode_check_declarer (NEXT (p)); +++ } +++} +++ +++/* Mode check identity declaration. */ +++ +++static void +++mode_check_identity_declaration (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case DECLARER: +++ mode_check_declarer (SUB (p)); +++ mode_check_identity_declaration (NEXT (p)); +++ break; +++ case DEFINING_IDENTIFIER: +++ { +++ SOID_T x, y; +++ a68_make_soid (&x, STRONG, MOID (p), 0); +++ mode_check_unit (NEXT_NEXT (p), &x, &y); +++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) +++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, UNIT); +++ else if (MOID (&x) != MOID (&y)) +++ /* Check for instance, REF INT i = LOC REF INT. */ +++ a68_semantic_pitfall (NEXT_NEXT (p), MOID (&x), IDENTITY_DECLARATION, GENERATOR); +++ break; +++ } +++ default: +++ mode_check_identity_declaration (SUB (p)); +++ mode_check_identity_declaration (NEXT (p)); +++ break; +++ } +++ } +++} +++ +++/* Mode check variable declaration. */ +++ +++static void +++mode_check_variable_declaration (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case DECLARER: +++ mode_check_declarer (SUB (p)); +++ mode_check_variable_declaration (NEXT (p)); +++ break; +++ case DEFINING_IDENTIFIER: +++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) +++ { +++ SOID_T x, y; +++ a68_make_soid (&x, STRONG, SUB_MOID (p), 0); +++ mode_check_unit (NEXT_NEXT (p), &x, &y); +++ if (!a68_is_coercible_in_context (&y, &x, FORCE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, FORCE_DEFLEXING, UNIT); +++ else if (SUB_MOID (&x) != MOID (&y)) +++ /* Check for instance, REF INT i = LOC REF INT. */ +++ a68_semantic_pitfall (NEXT_NEXT (p), MOID (&x), VARIABLE_DECLARATION, GENERATOR); +++ } +++ break; +++ default: +++ mode_check_variable_declaration (SUB (p)); +++ mode_check_variable_declaration (NEXT (p)); +++ break; +++ } +++ } +++} +++ +++/* Mode check routine text. */ +++ +++static void +++mode_check_routine_text (NODE_T *p, SOID_T *y) +++{ +++ SOID_T w; +++ +++ if (IS (p, PARAMETER_PACK)) +++ { +++ mode_check_declarer (SUB (p)); +++ FORWARD (p); +++ } +++ +++ mode_check_declarer (SUB (p)); +++ a68_make_soid (&w, STRONG, MOID (p), 0); +++ mode_check_unit (NEXT_NEXT (p), &w, y); +++ if (!a68_is_coercible_in_context (y, &w, FORCE_DEFLEXING)) +++ a68_cannot_coerce (NEXT_NEXT (p), MOID (y), MOID (&w), STRONG, FORCE_DEFLEXING, UNIT); +++} +++ +++/* Mode check proc declaration. */ +++ +++static void +++mode_check_proc_declaration (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, ROUTINE_TEXT)) +++ { +++ SOID_T x, y; +++ a68_make_soid (&x, STRONG, NO_MOID, 0); +++ mode_check_routine_text (SUB (p), &y); +++ } +++ else +++ { +++ mode_check_proc_declaration (SUB (p)); +++ mode_check_proc_declaration (NEXT (p)); +++ } +++} +++ +++/* Mode check brief op declaration. */ +++ +++static void +++mode_check_brief_op_declaration (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, DEFINING_OPERATOR)) +++ { +++ SOID_T y; +++ +++ if (MOID (p) != MOID (NEXT_NEXT (p))) +++ { +++ SOID_T y2, x; +++ a68_make_soid (&y2, NO_SORT, MOID (NEXT_NEXT (p)), 0); +++ a68_make_soid (&x, NO_SORT, MOID (p), 0); +++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y2), MOID (&x), STRONG, SKIP_DEFLEXING, ROUTINE_TEXT); +++ } +++ mode_check_routine_text (SUB (NEXT_NEXT (p)), &y); +++ } +++ else +++ { +++ mode_check_brief_op_declaration (SUB (p)); +++ mode_check_brief_op_declaration (NEXT (p)); +++ } +++} +++ +++/* Mode check op declaration. */ +++ +++static void +++mode_check_op_declaration (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, DEFINING_OPERATOR)) +++ { +++ SOID_T y, x; +++ a68_make_soid (&x, STRONG, MOID (p), 0); +++ mode_check_unit (NEXT_NEXT (p), &x, &y); +++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) +++ a68_cannot_coerce (NEXT_NEXT (p), MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, UNIT); +++ } +++ else +++ { +++ mode_check_op_declaration (SUB (p)); +++ mode_check_op_declaration (NEXT (p)); +++ } +++} +++ +++/* Mode check declaration list. */ +++ +++static void +++mode_check_declaration_list (NODE_T * p) +++{ +++ if (p != NO_NODE) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case IDENTITY_DECLARATION: +++ mode_check_identity_declaration (SUB (p)); +++ break; +++ case VARIABLE_DECLARATION: +++ mode_check_variable_declaration (SUB (p)); +++ break; +++ case MODE_DECLARATION: +++ mode_check_declarer (SUB (p)); +++ break; +++ case PROCEDURE_DECLARATION: +++ case PROCEDURE_VARIABLE_DECLARATION: +++ mode_check_proc_declaration (SUB (p)); +++ break; +++ case BRIEF_OPERATOR_DECLARATION: +++ mode_check_brief_op_declaration (SUB (p)); +++ break; +++ case OPERATOR_DECLARATION: +++ mode_check_op_declaration (SUB (p)); +++ break; +++ default: +++ mode_check_declaration_list (SUB (p)); +++ mode_check_declaration_list (NEXT (p)); +++ break; +++ } +++ } +++} +++ +++/* Mode check serial clause. */ +++ +++static void +++mode_check_serial (SOID_T **r, NODE_T *p, SOID_T *x, bool k) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, INITIALISER_SERIES)) +++ { +++ mode_check_serial (r, SUB (p), x, false); +++ mode_check_serial (r, NEXT (p), x, k); +++ } +++ else if (IS (p, DECLARATION_LIST)) +++ mode_check_declaration_list (SUB (p)); +++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) +++ mode_check_serial (r, NEXT (p), x, k); +++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) +++ { +++ if (NEXT (p) != NO_NODE) +++ { +++ if (IS (NEXT (p), EXIT_SYMBOL) || IS (NEXT (p), END_SYMBOL) || IS (NEXT (p), CLOSE_SYMBOL)) +++ mode_check_serial (r, SUB (p), x, true); +++ else +++ mode_check_serial (r, SUB (p), x, false); +++ mode_check_serial (r, NEXT (p), x, k); +++ } +++ else +++ mode_check_serial (r, SUB (p), x, true); +++ } +++ else if (IS (p, LABELED_UNIT)) +++ mode_check_serial (r, SUB (p), x, k); +++ else if (IS (p, UNIT)) +++ { +++ SOID_T y; +++ +++ if (k) +++ mode_check_unit (p, x, &y); +++ else +++ { +++ SOID_T w; +++ a68_make_soid (&w, STRONG, M_VOID, 0); +++ mode_check_unit (p, &w, &y); +++ } +++ if (NEXT (p) != NO_NODE) +++ mode_check_serial (r, NEXT (p), x, k); +++ else +++ { +++ if (k) +++ a68_add_to_soid_list (r, p, &y); +++ } +++ } +++} +++ +++/* Mode check serial clause units. */ +++ +++static void +++mode_check_serial_units (NODE_T *p, SOID_T *x, SOID_T *y, +++ int att __attribute__((unused))) +++{ +++ SOID_T *top_sl = NO_SOID; +++ +++ mode_check_serial (&top_sl, SUB (p), x, true); +++ if (a68_is_balanced (p, top_sl, SORT (x))) +++ { +++ MOID_T *result = a68_pack_soids_in_moid (top_sl, SERIES_MODE); +++ a68_make_soid (y, SORT (x), result, SERIAL_CLAUSE); +++ } +++ else +++ a68_make_soid (y, SORT (x), (MOID (x) != NO_MOID ? MOID (x) : M_ERROR), 0); +++ +++ a68_free_soid_list (top_sl); +++} +++ +++/* Mode check unit list. */ +++ +++static void +++mode_check_unit_list (SOID_T **r, NODE_T *p, SOID_T *x) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, UNIT_LIST)) +++ { +++ mode_check_unit_list (r, SUB (p), x); +++ mode_check_unit_list (r, NEXT (p), x); +++ } +++ else if (IS (p, COMMA_SYMBOL)) +++ mode_check_unit_list (r, NEXT (p), x); +++ else if (IS (p, UNIT)) +++ { +++ SOID_T y; +++ mode_check_unit (p, x, &y); +++ a68_add_to_soid_list (r, p, &y); +++ mode_check_unit_list (r, NEXT (p), x); +++ } +++} +++ +++/* Mode check struct display. */ +++ +++static void +++mode_check_struct_display (SOID_T **r, NODE_T *p, PACK_T **fields) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, UNIT_LIST)) +++ { +++ mode_check_struct_display (r, SUB (p), fields); +++ mode_check_struct_display (r, NEXT (p), fields); +++ } +++ else if (IS (p, COMMA_SYMBOL)) +++ mode_check_struct_display (r, NEXT (p), fields); +++ else if (IS (p, UNIT)) +++ { +++ SOID_T x, y; +++ +++ if (*fields != NO_PACK) +++ { +++ a68_make_soid (&x, STRONG, MOID (*fields), 0); +++ FORWARD (*fields); +++ } +++ else +++ a68_make_soid (&x, STRONG, NO_MOID, 0); +++ mode_check_unit (p, &x, &y); +++ a68_add_to_soid_list (r, p, &y); +++ mode_check_struct_display (r, NEXT (p), fields); +++ } +++} +++ +++/* Mode check get specified moids. */ +++ +++static void +++mode_check_get_specified_moids (NODE_T *p, MOID_T *u) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) +++ mode_check_get_specified_moids (SUB (p), u); +++ else if (IS (p, SPECIFIER)) +++ { +++ MOID_T *m = MOID (NEXT_SUB (p)); +++ a68_add_mode_to_pack (&(PACK (u)), m, NO_TEXT, NODE (m)); +++ } +++ } +++} +++ +++/* Mode check specified unit list. */ +++ +++void +++mode_check_specified_unit_list (SOID_T **r, NODE_T *p, SOID_T *x, MOID_T *u) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) +++ mode_check_specified_unit_list (r, SUB (p), x, u); +++ else if (IS (p, SPECIFIER)) +++ { +++ MOID_T *m = MOID (NEXT_SUB (p)); +++ if (u != NO_MOID && !a68_is_unitable (m, u, SAFE_DEFLEXING)) +++ a68_error (p, "M is neither component nor subset of M", m, u); +++ +++ } +++ else if (IS (p, UNIT)) +++ { +++ SOID_T y; +++ mode_check_unit (p, x, &y); +++ a68_add_to_soid_list (r, p, &y); +++ } +++ } +++} +++ +++/* Mode check united case parts. */ +++ +++static void +++mode_check_united_case_parts (SOID_T **ry, NODE_T *p, SOID_T *x) +++{ +++ SOID_T enq_expct, enq_yield; +++ MOID_T *u = NO_MOID, *v = NO_MOID, *w = NO_MOID; +++ /* Check the CASE part and deduce the united mode. */ +++ a68_make_soid (&enq_expct, MEEK, NO_MOID, 0); +++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); +++ /* Deduce the united mode from the enquiry clause. +++ This requires balancing. */ +++ u = MOID (&enq_yield); +++ a68_absorb_series_pack (&u); +++ DIM (u) = a68_count_pack_members (PACK (u)); +++ if (DIM (u) == 1) +++ u = MOID (PACK (u)); +++ else +++ { +++ MOID_T *united, *balanced; +++ united = a68_make_united_mode (u); +++ balanced = a68_get_balanced_mode_or_no_mode (united, +++ STRONG, A68_NO_DEPREF, +++ SAFE_DEFLEXING); +++ if (balanced != NO_MOID) +++ u = balanced; +++ } +++ u = a68_depref_completely (u); +++ /* Also deduce the united mode from the specifiers. */ +++ v = a68_new_moid (); +++ ATTRIBUTE (v) = SERIES_MODE; +++ mode_check_get_specified_moids (NEXT_SUB (NEXT (p)), v); +++ v = a68_make_united_mode (v); +++ /* Determine a resulting union. */ +++ if (u == M_HIP) +++ w = v; +++ else +++ { +++ if (IS (u, UNION_SYMBOL)) +++ { +++ bool uv, vu, some; +++ a68_investigate_firm_relations (PACK (u), PACK (v), &uv, &some); +++ a68_investigate_firm_relations (PACK (v), PACK (u), &vu, &some); +++ if (uv && vu) +++ { +++ /* Every component has a specifier. */ +++ w = u; +++ } +++ else if (!uv && !vu) +++ { +++ /* Hmmmm ... let the coercer sort it out. */ +++ w = u; +++ } +++ else +++ { +++ /* This is all the balancing we allow here for the moment. Firmly +++ related subsets are not valid so we absorb them. If this +++ doesn't solve it then we get a coercion-error later. */ +++ w = a68_absorb_related_subsets (u); +++ } +++ } +++ else +++ { +++ a68_error (NEXT_SUB (p), "M is not a united mode", u); +++ return; +++ } +++ } +++ MOID (SUB (p)) = w; +++ FORWARD (p); +++ /* Check the IN part. */ +++ mode_check_specified_unit_list (ry, NEXT_SUB (p), x, w); +++ /* OUSE, OUT, ESAC. */ +++ if ((FORWARD (p)) != NO_NODE) +++ { +++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) +++ mode_check_serial (ry, NEXT_SUB (p), x, true); +++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) +++ mode_check_united_case_parts (ry, SUB (p), x); +++ } +++} +++ +++/* Mode check united case. */ +++ +++static void +++mode_check_united_case (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T *top_sl = NO_SOID; +++ +++ mode_check_united_case_parts (&top_sl, p, x); +++ if (!a68_is_balanced (p, top_sl, SORT (x))) +++ { +++ if (MOID (x) != NO_MOID) +++ a68_make_soid (y, SORT (x), MOID (x), CONFORMITY_CLAUSE); +++ else +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else +++ { +++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); +++ a68_make_soid (y, SORT (x), z, CONFORMITY_CLAUSE); +++ } +++ a68_free_soid_list (top_sl); +++} +++ +++/* Mode check unit list 2. */ +++ +++static void +++mode_check_unit_list_2 (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T *top_sl = NO_SOID; +++ +++ if (MOID (x) != NO_MOID) +++ { +++ if (IS_FLEX (MOID (x))) +++ { +++ SOID_T y2; +++ a68_make_soid (&y2, SORT (x), SLICE (SUB_MOID (x)), 0); +++ mode_check_unit_list (&top_sl, SUB (p), &y2); +++ } +++ else if (IS_ROW (MOID (x))) +++ { +++ SOID_T y2; +++ a68_make_soid (&y2, SORT (x), SLICE (MOID (x)), 0); +++ mode_check_unit_list (&top_sl, SUB (p), &y2); +++ } +++ else if (IS (MOID (x), STRUCT_SYMBOL)) +++ { +++ PACK_T *y2 = PACK (MOID (x)); +++ mode_check_struct_display (&top_sl, SUB (p), &y2); +++ } +++ else +++ mode_check_unit_list (&top_sl, SUB (p), x); +++ } +++ else +++ mode_check_unit_list (&top_sl, SUB (p), x); +++ +++ a68_make_soid (y, STRONG, a68_pack_soids_in_moid (top_sl, STOWED_MODE), 0); +++ a68_free_soid_list (top_sl); +++} +++ +++/* Mode check access. */ +++ +++static void +++mode_check_access (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, ENCLOSED_CLAUSE)) +++ { +++ mode_check_enclosed (q, x, y); +++ MOID (p) = MOID (y); +++ } +++ } +++} +++ +++/* Mode check closed. */ +++ +++static void +++mode_check_closed (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, SERIAL_CLAUSE)) +++ mode_check_serial_units (p, x, y, SERIAL_CLAUSE); +++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) +++ mode_check_closed (NEXT (p), x, y); +++ MOID (p) = MOID (y); +++} +++ +++/* Mode check collateral. */ +++ +++void +++mode_check_collateral (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) +++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP)) +++ { +++ if (SORT (x) == STRONG) +++ { +++ if (MOID (x) == NO_MOID) +++ a68_error (p, "vacuum cannot have row elements (use a Y generator)", +++ "REF MODE"); +++ else if (IS_FLEXETY_ROW (MOID (x))) +++ a68_make_soid (y, STRONG, M_VACUUM, 0); +++ else +++ { +++ /* The syntax only allows vacuums in strong contexts with rowed +++ modes. See rule 33d. */ +++ a68_error (p, "a vacuum is not a valid M", MOID (x)); +++ a68_make_soid (y, STRONG, M_ERROR, 0); +++ } +++ } +++ else +++ a68_make_soid (y, STRONG, M_UNDEFINED, 0); +++ } +++ else +++ { +++ if (IS (p, UNIT_LIST)) +++ mode_check_unit_list_2 (p, x, y); +++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) +++ mode_check_collateral (NEXT (p), x, y); +++ MOID (p) = MOID (y); +++ } +++} +++ +++/* Mode check conditional 2. */ +++ +++static void +++mode_check_conditional_2 (SOID_T **ry, NODE_T *p, SOID_T *x) +++{ +++ SOID_T enq_expct, enq_yield; +++ +++ a68_make_soid (&enq_expct, MEEK, M_BOOL, 0); +++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); +++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); +++ FORWARD (p); +++ mode_check_serial (ry, NEXT_SUB (p), x, true); +++ if ((FORWARD (p)) != NO_NODE) +++ { +++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) +++ mode_check_serial (ry, NEXT_SUB (p), x, true); +++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) +++ mode_check_conditional_2 (ry, SUB (p), x); +++ } +++} +++ +++/* Mode check conditional. */ +++ +++static void +++mode_check_conditional (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T *top_sl = NO_SOID; +++ mode_check_conditional_2 (&top_sl, p, x); +++ if (!a68_is_balanced (p, top_sl, SORT (x))) +++ { +++ if (MOID (x) != NO_MOID) +++ a68_make_soid (y, SORT (x), MOID (x), CONDITIONAL_CLAUSE); +++ else +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else +++ { +++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); +++ a68_make_soid (y, SORT (x), z, CONDITIONAL_CLAUSE); +++ } +++ a68_free_soid_list (top_sl); +++} +++ +++/* Mode check int case 2. */ +++ +++static void +++mode_check_int_case_2 (SOID_T **ry, NODE_T *p, SOID_T *x) +++{ +++ SOID_T enq_expct, enq_yield; +++ a68_make_soid (&enq_expct, MEEK, M_INT, 0); +++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); +++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); +++ FORWARD (p); +++ mode_check_unit_list (ry, NEXT_SUB (p), x); +++ if ((FORWARD (p)) != NO_NODE) +++ { +++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) +++ mode_check_serial (ry, NEXT_SUB (p), x, true); +++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) +++ mode_check_int_case_2 (ry, SUB (p), x); +++ } +++} +++ +++/* Mode check int case. */ +++ +++static void +++mode_check_int_case (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T *top_sl = NO_SOID; +++ mode_check_int_case_2 (&top_sl, p, x); +++ if (!a68_is_balanced (p, top_sl, SORT (x))) +++ { +++ if (MOID (x) != NO_MOID) +++ a68_make_soid (y, SORT (x), MOID (x), CASE_CLAUSE); +++ else +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else +++ { +++ MOID_T *z = a68_pack_soids_in_moid (top_sl, SERIES_MODE); +++ a68_make_soid (y, SORT (x), z, CASE_CLAUSE); +++ } +++ a68_free_soid_list (top_sl); +++} +++ +++/* Mode check loop 2. */ +++ +++static void +++mode_check_loop_2 (NODE_T *p, SOID_T *y) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, FOR_PART)) +++ mode_check_loop_2 (NEXT (p), y); +++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) +++ { +++ SOID_T ix, iy; +++ a68_make_soid (&ix, STRONG, M_INT, 0); +++ mode_check_unit (NEXT_SUB (p), &ix, &iy); +++ if (!a68_is_coercible_in_context (&iy, &ix, SAFE_DEFLEXING)) +++ a68_cannot_coerce (NEXT_SUB (p), MOID (&iy), M_INT, MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); +++ mode_check_loop_2 (NEXT (p), y); +++ } +++ else if (IS (p, WHILE_PART)) +++ { +++ SOID_T enq_expct, enq_yield; +++ a68_make_soid (&enq_expct, MEEK, M_BOOL, 0); +++ mode_check_serial_units (NEXT_SUB (p), &enq_expct, &enq_yield, ENQUIRY_CLAUSE); +++ if (!a68_is_coercible_in_context (&enq_yield, &enq_expct, SAFE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&enq_yield), MOID (&enq_expct), MEEK, SAFE_DEFLEXING, ENQUIRY_CLAUSE); +++ mode_check_loop_2 (NEXT (p), y); +++ } +++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) +++ { +++ SOID_T *z = NO_SOID; +++ NODE_T *do_p = NEXT_SUB (p); +++ SOID_T ix; +++ a68_make_soid (&ix, STRONG, M_VOID, 0); +++ if (IS (do_p, SERIAL_CLAUSE)) +++ mode_check_serial (&z, do_p, &ix, true); +++ a68_free_soid_list (z); +++ } +++} +++ +++/* Mode check loop. */ +++ +++static void +++mode_check_loop (NODE_T *p, SOID_T *y) +++{ +++ SOID_T *z = NO_SOID; +++ mode_check_loop_2 (p, z); +++ a68_make_soid (y, STRONG, M_VOID, 0); +++} +++ +++/* Mode check enclosed. */ +++ +++static void +++mode_check_enclosed (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, ENCLOSED_CLAUSE)) +++ mode_check_enclosed (SUB (p), x, y); +++ else if (IS (p, CLOSED_CLAUSE)) +++ mode_check_closed (SUB (p), x, y); +++ else if (IS (p, ACCESS_CLAUSE)) +++ mode_check_access (SUB (p), x, y); +++ else if (IS (p, PARALLEL_CLAUSE)) +++ { +++ mode_check_collateral (SUB (NEXT_SUB (p)), x, y); +++ a68_make_soid (y, STRONG, M_VOID, 0); +++ MOID (NEXT_SUB (p)) = M_VOID; +++ } +++ else if (IS (p, COLLATERAL_CLAUSE)) +++ mode_check_collateral (SUB (p), x, y); +++ else if (IS (p, CONDITIONAL_CLAUSE)) +++ mode_check_conditional (SUB (p), x, y); +++ else if (IS (p, CASE_CLAUSE)) +++ mode_check_int_case (SUB (p), x, y); +++ else if (IS (p, CONFORMITY_CLAUSE)) +++ mode_check_united_case (SUB (p), x, y); +++ else if (IS (p, LOOP_CLAUSE)) +++ mode_check_loop (SUB (p), y); +++ +++ MOID (p) = MOID (y); +++} +++ +++/* Search table for operator. */ +++ +++static TAG_T * +++search_table_for_operator (TAG_T *t, const char *n, MOID_T *x, MOID_T *y) +++{ +++ if (a68_is_mode_isnt_well (x)) +++ return A68_PARSER (error_tag); +++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) +++ return A68_PARSER (error_tag); +++ +++ for (; t != NO_TAG; FORWARD (t)) +++ { +++ if (NSYMBOL (NODE (t)) == n || strcmp (NSYMBOL (NODE (t)), n) == 0) +++ { +++ PACK_T *p = PACK (MOID (t)); +++ if (a68_is_coercible (x, MOID (p), FIRM, ALIAS_DEFLEXING)) +++ { +++ FORWARD (p); +++ if (p == NO_PACK && y == NO_MOID) +++ /* Matched in case of a monadic. */ +++ return t; +++ else if (p != NO_PACK && y != NO_MOID +++ && a68_is_coercible (y, MOID (p), FIRM, ALIAS_DEFLEXING)) +++ /* Matched in case of a dyadic. */ +++ return t; +++ } +++ } +++ } +++ return NO_TAG; +++} +++ +++/* Search chain of symbol tables and return matching operator "x n y" or +++ "n x". */ +++ +++static TAG_T * +++search_table_chain_for_operator (TABLE_T *s, const char *n, MOID_T *x, MOID_T *y) +++{ +++ if (a68_is_mode_isnt_well (x)) +++ return A68_PARSER (error_tag); +++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) +++ return A68_PARSER (error_tag); +++ +++ while (s != NO_TABLE) +++ { +++ TAG_T *z = search_table_for_operator (OPERATORS (s), n, x, y); +++ if (z != NO_TAG) +++ return z; +++ BACKWARD (s); +++ } +++ return NO_TAG; +++} +++ +++/* Return a matching operator "x n y". */ +++ +++static TAG_T * +++find_operator (TABLE_T *s, const char *n, MOID_T *x, MOID_T *y) +++{ +++ /* Coercions to operand modes are FIRM. */ +++ MOID_T *u, *v; TAG_T *z; +++ /* (A) Catch exceptions first. */ +++ if (x == NO_MOID && y == NO_MOID) +++ return NO_TAG; +++ else if (a68_is_mode_isnt_well (x)) +++ return A68_PARSER (error_tag); +++ else if (y != NO_MOID && a68_is_mode_isnt_well (y)) +++ return A68_PARSER (error_tag); +++ +++ /* (B) MONADs. */ +++ if (x != NO_MOID && y == NO_MOID) +++ { +++ z = search_table_chain_for_operator (s, n, x, NO_MOID); +++ if (z != NO_TAG) +++ return z; +++ else +++ { +++ /* (B.2) A little trick to allow - (0, 1) or ABS (1, long pi). */ +++ if (a68_is_coercible (x, M_COMPLEX, STRONG, SAFE_DEFLEXING)) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, NO_MOID); +++ if (z != NO_TAG) +++ return z; +++ } +++ if (a68_is_coercible (x, M_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_COMPLEX, NO_MOID); +++ if (z != NO_TAG) +++ return z; +++ } +++ if (a68_is_coercible (x, M_LONG_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_COMPLEX, NO_MOID); +++ } +++ return NO_TAG; +++ } +++ /* (C) DYADs. */ +++ z = search_table_chain_for_operator (s, n, x, y); +++ if (z != NO_TAG) +++ return z; +++ /* (C.2) Vector and matrix "strong coercions" in standard environ. */ +++ u = DEFLEX (a68_depref_completely (x)); +++ v = DEFLEX (a68_depref_completely (y)); +++ if ((u == M_ROW_REAL || u == M_ROW_ROW_REAL) +++ || (v == M_ROW_REAL || v == M_ROW_ROW_REAL) +++ || (u == M_ROW_COMPLEX || u == M_ROW_ROW_COMPLEX) +++ || (v == M_ROW_COMPLEX || v == M_ROW_ROW_COMPLEX)) +++ { +++ if (u == M_INT) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_REAL, y); +++ if (z != NO_TAG) +++ return z; +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, y); +++ if (z != NO_TAG) +++ return z; +++ } +++ else if (v == M_INT) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_REAL); +++ if (z != NO_TAG) +++ return z; +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_COMPLEX); +++ if (z != NO_TAG) +++ return z; +++ } +++ else if (u == M_REAL) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, y); +++ if (z != NO_TAG) +++ return z; +++ } +++ else if (v == M_REAL) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, x, M_COMPLEX); +++ if (z != NO_TAG) +++ return z; +++ } +++ } +++ /* (C.3) Look in standenv for an appropriate cross-term. */ +++ u = a68_make_series_from_moids (x, y); +++ u = a68_make_united_mode (u); +++ v = a68_get_balanced_mode (u, STRONG, A68_NO_DEPREF, SAFE_DEFLEXING); +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, v, v); +++ if (z != NO_TAG) +++ return z; +++ if (a68_is_coercible_series (u, M_REAL, STRONG, SAFE_DEFLEXING)) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_REAL, M_REAL); +++ if (z != NO_TAG) +++ return z; +++ } +++ if (a68_is_coercible_series (u, M_LONG_REAL, STRONG, SAFE_DEFLEXING)) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_REAL, M_LONG_REAL); +++ if (z != NO_TAG) +++ return z; +++ } +++ if (a68_is_coercible_series (u, M_LONG_LONG_REAL, STRONG, SAFE_DEFLEXING)) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_REAL, M_LONG_LONG_REAL); +++ if (z != NO_TAG) +++ return z; +++ } +++ if (a68_is_coercible_series (u, M_COMPLEX, STRONG, SAFE_DEFLEXING)) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_COMPLEX, M_COMPLEX); +++ if (z != NO_TAG) +++ return z; +++ } +++ if (a68_is_coercible_series (u, M_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_COMPLEX, M_LONG_COMPLEX); +++ if (z != NO_TAG) +++ return z; +++ } +++ if (a68_is_coercible_series (u, M_LONG_LONG_COMPLEX, STRONG, SAFE_DEFLEXING)) +++ { +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX); +++ if (z != NO_TAG) +++ return z; +++ } +++ /* (C.4) Now allow for depreffing for REF REAL +:= INT and alike. */ +++ v = a68_get_balanced_mode (u, STRONG, A68_DEPREF, SAFE_DEFLEXING); +++ z = search_table_for_operator (OPERATORS (A68_STANDENV), n, v, v); +++ if (z != NO_TAG) +++ return z; +++ return NO_TAG; +++} +++ +++/* Mode check monadic operator. */ +++ +++static void +++mode_check_monadic_operator (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ if (p != NO_NODE) +++ { +++ TAG_T *t; +++ MOID_T *u = a68_determine_unique_mode (y, SAFE_DEFLEXING); +++ if (a68_is_mode_isnt_well (u)) +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ else if (u == M_HIP) +++ { +++ a68_error (NEXT (p), "M construct is an invalid operand", u); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else +++ { +++ if (strchr (NOMADS, *(NSYMBOL (p))) != NO_TEXT) +++ { +++ t = NO_TAG; +++ a68_error (p, "monadic S cannot start with a character from Z", NOMADS); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else +++ { +++ t = find_operator (TABLE (p), NSYMBOL (p), u, NO_MOID); +++ if (t == NO_TAG) +++ { +++ a68_error (p, "monadic operator S O has not been declared", u); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ } +++ if (t != NO_TAG) +++ MOID (p) = MOID (t); +++ TAX (p) = t; +++ if (t != NO_TAG && t != A68_PARSER (error_tag)) +++ { +++ MOID (p) = MOID (t); +++ a68_make_soid (y, SORT (x), SUB_MOID (t), 0); +++ } +++ else +++ { +++ MOID (p) = M_ERROR; +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ } +++ } +++} +++ +++/* Mode check monadic formula. */ +++ +++static void +++mode_check_monadic_formula (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T e; +++ a68_make_soid (&e, FIRM, NO_MOID, 0); +++ mode_check_formula (NEXT (p), &e, y); +++ mode_check_monadic_operator (p, &e, y); +++ a68_make_soid (y, SORT (x), MOID (y), 0); +++} +++ +++/* Mode check formula. */ +++ +++static void +++mode_check_formula (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T ls; +++ if (IS (p, MONADIC_FORMULA)) +++ mode_check_monadic_formula (SUB (p), x, &ls); +++ else if (IS (p, FORMULA)) +++ mode_check_formula (SUB (p), x, &ls); +++ else if (IS (p, SECONDARY)) +++ { +++ SOID_T e; +++ a68_make_soid (&e, FIRM, NO_MOID, 0); +++ mode_check_unit (SUB (p), &e, &ls); +++ } +++ MOID_T *u = a68_determine_unique_mode (&ls, SAFE_DEFLEXING); +++ MOID (p) = u; +++ SOID_T rs; +++ if (NEXT (p) == NO_NODE) +++ a68_make_soid (y, SORT (x), u, 0); +++ else +++ { +++ NODE_T *q = NEXT_NEXT (p); +++ if (IS (q, MONADIC_FORMULA)) +++ mode_check_monadic_formula (SUB (NEXT_NEXT (p)), x, &rs); +++ else if (IS (q, FORMULA)) +++ mode_check_formula (SUB (NEXT_NEXT (p)), x, &rs); +++ else if (IS (q, SECONDARY)) +++ { +++ SOID_T e; +++ a68_make_soid (&e, FIRM, NO_MOID, 0); +++ mode_check_unit (SUB (q), &e, &rs); +++ } +++ MOID_T *v = a68_determine_unique_mode (&rs, SAFE_DEFLEXING); +++ MOID (q) = v; +++ if (a68_is_mode_isnt_well (u) || a68_is_mode_isnt_well (v)) +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ else if (u == M_HIP) +++ { +++ a68_error (p, "M construct is an invalid operand", u); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else if (v == M_HIP) +++ { +++ a68_error (q, "M construct is an invalid operand", u); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else +++ { +++ TAG_T *op = find_operator (TABLE (NEXT (p)), NSYMBOL (NEXT (p)), u, v); +++ if (op == NO_TAG) +++ { +++ a68_error (NEXT (p), "dyadic operator O S O has not been declared", u, v); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ if (op != NO_TAG) +++ MOID (NEXT (p)) = MOID (op); +++ TAX (NEXT (p)) = op; +++ if (op != NO_TAG && op != A68_PARSER (error_tag)) +++ a68_make_soid (y, SORT (x), SUB_MOID (op), 0); +++ else +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ } +++} +++ +++/* Mode check assignation. */ +++ +++static void +++mode_check_assignation (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ /* Get destination mode. */ +++ SOID_T name, tmp, value; +++ a68_make_soid (&name, SOFT, NO_MOID, 0); +++ mode_check_unit (SUB (p), &name, &tmp); +++ /* SOFT coercion. */ +++ MOID_T *ori = a68_determine_unique_mode (&tmp, SAFE_DEFLEXING); +++ MOID_T *name_moid = a68_deproc_completely (ori); +++ if (ATTRIBUTE (name_moid) != REF_SYMBOL) +++ { +++ if (A68_IF_MODE_IS_WELL (name_moid)) +++ a68_error (p, "M A does not yield a name", ori, ATTRIBUTE (SUB (p))); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ return; +++ } +++ MOID (p) = name_moid; +++ /* Get source mode. */ +++ a68_make_soid (&name, STRONG, SUB (name_moid), 0); +++ mode_check_unit (NEXT_NEXT (p), &name, &value); +++ if (!a68_is_coercible_in_context (&value, &name, FORCE_DEFLEXING)) +++ { +++ a68_cannot_coerce (p, MOID (&value), MOID (&name), STRONG, FORCE_DEFLEXING, UNIT); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else +++ a68_make_soid (y, SORT (x), name_moid, 0); +++} +++ +++/* Mode check identity relation. */ +++ +++static void +++mode_check_identity_relation (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ NODE_T *ln = p, *rn = NEXT_NEXT (p); +++ SOID_T e, l, r; +++ a68_make_soid (&e, SOFT, NO_MOID, 0); +++ mode_check_unit (SUB (ln), &e, &l); +++ mode_check_unit (SUB (rn), &e, &r); +++ /* SOFT coercion. */ +++ MOID_T *oril = a68_determine_unique_mode (&l, SAFE_DEFLEXING); +++ MOID_T *orir = a68_determine_unique_mode (&r, SAFE_DEFLEXING); +++ MOID_T *lhs = a68_deproc_completely (oril); +++ MOID_T *rhs = a68_deproc_completely (orir); +++ if (A68_IF_MODE_IS_WELL (lhs) && lhs != M_HIP && ATTRIBUTE (lhs) != REF_SYMBOL) +++ { +++ a68_error (ln, "M A does not yield a name", oril, ATTRIBUTE (SUB (ln))); +++ lhs = M_ERROR; +++ } +++ if (A68_IF_MODE_IS_WELL (rhs) && rhs != M_HIP && ATTRIBUTE (rhs) != REF_SYMBOL) +++ { +++ a68_error (rn, "M A does not yield a name", orir, ATTRIBUTE (SUB (rn))); +++ rhs = M_ERROR; +++ } +++ if (lhs == M_HIP && rhs == M_HIP) +++ a68_error (p, "construct has no unique mode"); +++ +++ if (a68_is_coercible (lhs, rhs, STRONG, SAFE_DEFLEXING)) +++ lhs = rhs; +++ else if (a68_is_coercible (rhs, lhs, STRONG, SAFE_DEFLEXING)) +++ rhs = lhs; +++ else +++ { +++ a68_cannot_coerce (NEXT (p), rhs, lhs, SOFT, SKIP_DEFLEXING, TERTIARY); +++ lhs = rhs = M_ERROR; +++ } +++ MOID (ln) = lhs; +++ MOID (rn) = rhs; +++ a68_make_soid (y, SORT (x), M_BOOL, 0); +++} +++ +++/* Mode check bool functions ANDF and ORF. */ +++ +++static void +++mode_check_bool_function (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T e, l, r; +++ NODE_T *ln = p, *rn = NEXT_NEXT (p); +++ a68_make_soid (&e, STRONG, M_BOOL, 0); +++ mode_check_unit (SUB (ln), &e, &l); +++ if (!a68_is_coercible_in_context (&l, &e, SAFE_DEFLEXING)) +++ a68_cannot_coerce (ln, MOID (&l), MOID (&e), MEEK, SAFE_DEFLEXING, TERTIARY); +++ mode_check_unit (SUB (rn), &e, &r); +++ if (!a68_is_coercible_in_context (&r, &e, SAFE_DEFLEXING)) +++ a68_cannot_coerce (rn, MOID (&r), MOID (&e), MEEK, SAFE_DEFLEXING, TERTIARY); +++ MOID (ln) = M_BOOL; +++ MOID (rn) = M_BOOL; +++ a68_make_soid (y, SORT (x), M_BOOL, 0); +++} +++ +++/* Mode check cast. */ +++ +++static void +++mode_check_cast (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T w; +++ mode_check_declarer (p); +++ a68_make_soid (&w, STRONG, MOID (p), 0); +++ CAST (&w) = true; +++ mode_check_enclosed (SUB_NEXT (p), &w, y); +++ if (!a68_is_coercible_in_context (y, &w, SAFE_DEFLEXING)) +++ a68_cannot_coerce (NEXT (p), MOID (y), MOID (&w), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); +++ a68_make_soid (y, SORT (x), MOID (p), 0); +++} +++ +++/* Mode check assertion. */ +++ +++static void +++mode_check_assertion (NODE_T *p) +++{ +++ SOID_T w, y; +++ a68_make_soid (&w, STRONG, M_BOOL, 0); +++ mode_check_enclosed (SUB_NEXT (p), &w, &y); +++ SORT (&y) = SORT (&w); +++ if (!a68_is_coercible_in_context (&y, &w, NO_DEFLEXING)) +++ a68_cannot_coerce (NEXT (p), MOID (&y), MOID (&w), MEEK, NO_DEFLEXING, ENCLOSED_CLAUSE); +++} +++ +++/* Mode check argument list. */ +++ +++static void +++mode_check_argument_list (SOID_T **r, NODE_T *p, PACK_T **x, PACK_T **v, PACK_T **w) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, GENERIC_ARGUMENT_LIST)) +++ ATTRIBUTE (p) = ARGUMENT_LIST; +++ +++ if (IS (p, ARGUMENT_LIST)) +++ mode_check_argument_list (r, SUB (p), x, v, w); +++ else if (IS (p, UNIT)) +++ { +++ SOID_T y, z; +++ if (*x != NO_PACK) +++ { +++ a68_make_soid (&z, STRONG, MOID (*x), 0); +++ a68_add_mode_to_pack_end (v, MOID (*x), NO_TEXT, p); +++ FORWARD (*x); +++ } +++ else +++ a68_make_soid (&z, STRONG, NO_MOID, 0); +++ mode_check_unit (p, &z, &y); +++ a68_add_to_soid_list (r, p, &y); +++ } +++ else if (IS (p, TRIMMER)) +++ { +++ SOID_T z; +++ if (SUB (p) != NO_NODE) +++ { +++ a68_error (p, "syntax error detected in A", ARGUMENT); +++ a68_make_soid (&z, STRONG, M_ERROR, 0); +++ a68_add_mode_to_pack_end (v, M_VOID, NO_TEXT, p); +++ a68_add_mode_to_pack_end (w, MOID (*x), NO_TEXT, p); +++ FORWARD (*x); +++ } +++ else if (*x != NO_PACK) +++ { +++ a68_make_soid (&z, STRONG, MOID (*x), 0); +++ a68_add_mode_to_pack_end (v, M_VOID, NO_TEXT, p); +++ a68_add_mode_to_pack_end (w, MOID (*x), NO_TEXT, p); +++ FORWARD (*x); +++ } +++ else +++ a68_make_soid (&z, STRONG, NO_MOID, 0); +++ a68_add_to_soid_list (r, p, &z); +++ } +++ else if (IS (p, SUB_SYMBOL) && !OPTION_BRACKETS (&A68_JOB)) +++ a68_error (p, "syntax error detected in A", CALL); +++ } +++} +++ +++/* Mode check argument list 2. */ +++ +++static void +++mode_check_argument_list_2 (NODE_T *p, PACK_T *x, SOID_T *y, PACK_T **v, PACK_T **w) +++{ +++ SOID_T *top_sl = NO_SOID; +++ mode_check_argument_list (&top_sl, SUB (p), &x, v, w); +++ a68_make_soid (y, STRONG, a68_pack_soids_in_moid (top_sl, STOWED_MODE), 0); +++ a68_free_soid_list (top_sl); +++} +++ +++/* Mode check meek int. */ +++ +++static void +++mode_check_meek_int (NODE_T *p) +++{ +++ SOID_T x, y; +++ a68_make_soid (&x, MEEK, M_INT, 0); +++ mode_check_unit (p, &x, &y); +++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&y), MOID (&x), MEEK, SAFE_DEFLEXING, 0); +++} +++ +++/* Mode check trimmer. */ +++ +++static void +++mode_check_trimmer (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, TRIMMER)) +++ mode_check_trimmer (SUB (p)); +++ else if (IS (p, UNIT)) +++ { +++ mode_check_meek_int (p); +++ mode_check_trimmer (NEXT (p)); +++ } +++ else +++ mode_check_trimmer (NEXT (p)); +++} +++ +++/* Mode check indexer. */ +++ +++static void +++mode_check_indexer (NODE_T *p, int *subs, int *trims) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, TRIMMER)) +++ { +++ (*trims)++; +++ mode_check_trimmer (SUB (p)); +++ } +++ else if (IS (p, UNIT)) +++ { +++ (*subs)++; +++ mode_check_meek_int (p); +++ } +++ else +++ { +++ mode_check_indexer (SUB (p), subs, trims); +++ mode_check_indexer (NEXT (p), subs, trims); +++ } +++} +++ +++/* Mode check call. */ +++ +++static void +++mode_check_call (NODE_T *p, MOID_T *n, SOID_T *x, SOID_T *y) +++{ +++ MOID (p) = n; +++ /* "partial_locale" is the mode of the locale. */ +++ PARTIAL_LOCALE (GINFO (p)) = a68_new_moid (); +++ ATTRIBUTE (PARTIAL_LOCALE (GINFO (p))) = PROC_SYMBOL; +++ PACK (PARTIAL_LOCALE (GINFO (p))) = NO_PACK; +++ SUB (PARTIAL_LOCALE (GINFO (p))) = SUB (n); +++ /* "partial_proc" is the mode of the resulting proc. */ +++ PARTIAL_PROC (GINFO (p)) = a68_new_moid (); +++ ATTRIBUTE (PARTIAL_PROC (GINFO (p))) = PROC_SYMBOL; +++ PACK (PARTIAL_PROC (GINFO (p))) = NO_PACK; +++ SUB (PARTIAL_PROC (GINFO (p))) = SUB (n); +++ /* Check arguments and construct modes. */ +++ SOID_T d; +++ mode_check_argument_list_2 (NEXT (p), PACK (n), &d, &PACK (PARTIAL_LOCALE (GINFO (p))), +++ &PACK (PARTIAL_PROC (GINFO (p)))); +++ DIM (PARTIAL_PROC (GINFO (p))) = a68_count_pack_members (PACK (PARTIAL_PROC (GINFO (p)))); +++ DIM (PARTIAL_LOCALE (GINFO (p))) = a68_count_pack_members (PACK (PARTIAL_LOCALE (GINFO (p)))); +++ PARTIAL_PROC (GINFO (p)) = a68_register_extra_mode (&TOP_MOID (&A68_JOB), PARTIAL_PROC (GINFO (p))); +++ PARTIAL_LOCALE (GINFO (p)) = a68_register_extra_mode (&TOP_MOID (&A68_JOB), PARTIAL_LOCALE (GINFO (p))); +++ if (DIM (MOID (&d)) != DIM (n)) +++ { +++ a68_error (p, "incorrect number of arguments for M", n); +++ a68_make_soid (y, SORT (x), SUB (n), 0); +++ /* a68_make_soid (y, SORT (x), M_ERROR, 0);. */ +++ } +++ else +++ { +++ if (!a68_is_coercible (MOID (&d), n, STRONG, ALIAS_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&d), n, STRONG, ALIAS_DEFLEXING, ARGUMENT); +++ if (DIM (PARTIAL_PROC (GINFO (p))) == 0) +++ a68_make_soid (y, SORT (x), SUB (n), 0); +++ else +++ { +++ a68_warning (NEXT (p), OPT_Wextensions, "@ is an extension"); +++ a68_make_soid (y, SORT (x), PARTIAL_PROC (GINFO (p)), 0); +++ } +++ } +++} +++ +++/* Mode check slice. */ +++ +++static void +++mode_check_slice (NODE_T *p, MOID_T *ori, SOID_T *x, SOID_T *y) +++{ +++ MOID_T *m = a68_depref_completely (ori), *n = ori; +++ /* WEAK coercion. */ +++ while ((IS_REF (n) && !a68_is_ref_row (n)) || (IS (n, PROC_SYMBOL) && PACK (n) == NO_PACK)) +++ n = a68_depref_once (n); +++ +++ if (n == NO_MOID || !(SLICE (DEFLEX (n)) != NO_MOID || a68_is_ref_row (n))) +++ { +++ if (A68_IF_MODE_IS_WELL (n)) +++ a68_error (p, "M A does not yield a row or procedure", +++ n, ATTRIBUTE (SUB (p))); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ +++ MOID (p) = n; +++ int dim = 0, subs = 0, trims = 0; +++ mode_check_indexer (SUB_NEXT (p), &subs, &trims); +++ bool is_ref; +++ if ((is_ref = a68_is_ref_row (n)) != 0) +++ dim = DIM (DEFLEX (SUB (n))); +++ else +++ dim = DIM (DEFLEX (n)); +++ +++ if ((subs + trims) != dim) +++ { +++ a68_error (p, "incorrect number of indexers for M", n); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ } +++ else +++ { +++ if (subs > 0 && trims == 0) +++ { +++ ANNOTATION (NEXT (p)) = SLICE; +++ m = n; +++ } +++ else +++ { +++ ANNOTATION (NEXT (p)) = TRIMMER; +++ m = n; +++ } +++ while (subs > 0) +++ { +++ if (is_ref) +++ m = NAME (m); +++ else +++ { +++ if (IS_FLEX (m)) +++ m = SUB (m); +++ m = SLICE (m); +++ } +++ gcc_assert (m != NO_MOID); +++ subs--; +++ } +++ /* A trim cannot be but deflexed. */ +++ if (ANNOTATION (NEXT (p)) == TRIMMER && TRIM (m) != NO_MOID) +++ { +++ gcc_assert (TRIM (m) != NO_MOID); +++ a68_make_soid (y, SORT (x), TRIM (m), 0); +++ } +++ else +++ a68_make_soid (y, SORT (x), m, 0); +++ } +++} +++ +++/* Mode check specification. */ +++ +++static enum a68_attribute +++mode_check_specification (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ SOID_T w, d; +++ a68_make_soid (&w, WEAK, NO_MOID, 0); +++ mode_check_unit (SUB (p), &w, &d); +++ MOID_T *ori = a68_determine_unique_mode (&d, SAFE_DEFLEXING); +++ MOID_T *m = a68_depref_completely (ori); +++ if (IS (m, PROC_SYMBOL)) +++ { +++ /* Assume CALL. */ +++ mode_check_call (p, m, x, y); +++ return CALL; +++ } +++ else if (IS_ROW (m) || IS_FLEX (m)) +++ { +++ /* Assume SLICE. */ +++ mode_check_slice (p, ori, x, y); +++ return SLICE; +++ } +++ else +++ { +++ if (m != M_ERROR) +++ a68_error (p, "M construct must yield a routine or a row value", m); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ return PRIMARY; +++ } +++} +++ +++/* Mode check selection. */ +++ +++static void +++mode_check_selection (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ bool deflex = false; +++ NODE_T *secondary = SUB_NEXT (p); +++ SOID_T w, d; +++ a68_make_soid (&w, WEAK, NO_MOID, 0); +++ mode_check_unit (secondary, &w, &d); +++ MOID_T *n, *ori; +++ n = ori = a68_determine_unique_mode (&d, SAFE_DEFLEXING); +++ PACK_T *t = NO_PACK, *t_2 = NO_PACK; +++ bool coerce = true; +++ while (coerce) +++ { +++ if (IS (n, STRUCT_SYMBOL)) +++ { +++ coerce = false; +++ t = PACK (n); +++ } +++ else if (IS_REF (n) && (IS_ROW (SUB (n)) || IS_FLEX (SUB (n))) && MULTIPLE (n) != NO_MOID) +++ { +++ coerce = false; +++ deflex = true; +++ t = PACK (MULTIPLE (n)); +++ } +++ else if ((IS_ROW (n) || IS_FLEX (n)) && MULTIPLE (n) != NO_MOID) +++ { +++ coerce = false; +++ deflex = true; +++ t = PACK (MULTIPLE (n)); +++ } +++ else if (IS_REF (n) && a68_is_name_struct (n)) +++ { +++ coerce = false; +++ t = PACK (NAME (n)); +++ } +++ else if (a68_is_deprefable (n)) +++ { +++ coerce = true; +++ n = SUB (n); +++ t = NO_PACK; +++ } +++ else +++ { +++ coerce = false; +++ t = NO_PACK; +++ } +++ } +++ if (t == NO_PACK) +++ { +++ if (A68_IF_MODE_IS_WELL (MOID (&d))) +++ a68_error (secondary, "M A does not yield a structured value", ori, ATTRIBUTE (secondary)); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++ return; +++ } +++ +++ MOID (NEXT (p)) = n; +++ const char *fs = NSYMBOL (SUB (p)); +++ MOID_T *str = n; +++ while (IS_REF (str)) +++ str = SUB (str); +++ if (IS_FLEX (str)) +++ str = SUB (str); +++ if (IS_ROW (str)) +++ str = SUB (str); +++ t_2 = PACK (str); +++ while (t != NO_PACK && t_2 != NO_PACK) +++ { +++ if (TEXT (t) == fs || strcmp (TEXT (t), fs) == 0) +++ { +++ MOID_T *ret = MOID (t); +++ if (deflex && TRIM (ret) != NO_MOID) +++ ret = TRIM (ret); +++ a68_make_soid (y, SORT (x), ret, 0); +++ MOID (p) = ret; +++ NODE_PACK (SUB (p)) = t_2; +++ return; +++ } +++ FORWARD (t); +++ FORWARD (t_2); +++ } +++ a68_make_soid (&d, NO_SORT, n, 0); +++ a68_error (p, "M has no field Z", str, fs); +++ a68_make_soid (y, SORT (x), M_ERROR, 0); +++} +++ +++/* Mode check format text. */ +++ +++static void +++mode_check_format_text (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ mode_check_format_text (SUB (p)); +++ if (IS (p, FORMAT_PATTERN)) +++ { +++ SOID_T x, y; +++ a68_make_soid (&x, STRONG, M_FORMAT, 0); +++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); +++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); +++ } +++ else if (IS (p, GENERAL_PATTERN) && NEXT_SUB (p) != NO_NODE) +++ { +++ SOID_T x, y; +++ a68_make_soid (&x, STRONG, M_ROW_INT, 0); +++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); +++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); +++ } +++ else if (IS (p, DYNAMIC_REPLICATOR)) +++ { +++ SOID_T x, y; +++ a68_make_soid (&x, STRONG, M_INT, 0); +++ mode_check_enclosed (SUB (NEXT_SUB (p)), &x, &y); +++ if (!a68_is_coercible_in_context (&y, &x, SAFE_DEFLEXING)) +++ a68_cannot_coerce (p, MOID (&y), MOID (&x), STRONG, SAFE_DEFLEXING, ENCLOSED_CLAUSE); +++ } +++ } +++} +++ +++/* Mode check unit. */ +++ +++static void +++mode_check_unit (NODE_T *p, SOID_T *x, SOID_T *y) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) +++ mode_check_unit (SUB (p), x, y); +++ /* Ex primary. */ +++ else if (IS (p, SPECIFICATION)) +++ { +++ ATTRIBUTE (p) = mode_check_specification (SUB (p), x, y); +++ a68_warn_for_voiding (p, x, y, ATTRIBUTE (p)); +++ } +++ else if (IS (p, CAST)) +++ { +++ mode_check_cast (SUB (p), x, y); +++ a68_warn_for_voiding (p, x, y, CAST); +++ } +++ else if (IS (p, DENOTATION)) +++ { +++ a68_make_soid (y, SORT (x), MOID (SUB (p)), 0); +++ a68_warn_for_voiding (p, x, y, DENOTATION); +++ } +++ else if (IS (p, IDENTIFIER)) +++ { +++ if ((TAX (p) == NO_TAG) && (MOID (p) == NO_MOID)) +++ { +++ int att = a68_first_tag_global (TABLE (p), NSYMBOL (p)); +++ if (att == STOP) +++ { +++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); +++ a68_error (p, "tag S has not been declared properly"); +++ MOID (p) = M_ERROR; +++ } +++ else +++ { +++ TAG_T *z = a68_find_tag_global (TABLE (p), att, NSYMBOL (p)); +++ if (att == IDENTIFIER && z != NO_TAG) +++ MOID (p) = MOID (z); +++ else +++ { +++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); +++ a68_error (p, "tag S has not been declared properly"); +++ MOID (p) = M_ERROR; +++ } +++ } +++ } +++ a68_make_soid (y, SORT (x), MOID (p), 0); +++ a68_warn_for_voiding (p, x, y, IDENTIFIER); +++ } +++ else if (IS (p, ENCLOSED_CLAUSE)) +++ mode_check_enclosed (SUB (p), x, y); +++ else if (IS (p, FORMAT_TEXT)) +++ { +++ mode_check_format_text (p); +++ a68_make_soid (y, SORT (x), M_FORMAT, 0); +++ a68_warn_for_voiding (p, x, y, FORMAT_TEXT); +++ /* Ex secondary. */ +++ } +++ else if (IS (p, GENERATOR)) +++ { +++ mode_check_declarer (SUB (p)); +++ a68_make_soid (y, SORT (x), MOID (SUB (p)), 0); +++ a68_warn_for_voiding (p, x, y, GENERATOR); +++ } +++ else if (IS (p, SELECTION)) +++ { +++ mode_check_selection (SUB (p), x, y); +++ a68_warn_for_voiding (p, x, y, SELECTION); +++ /* Ex tertiary. */ +++ } +++ else if (IS (p, NIHIL)) +++ a68_make_soid (y, STRONG, M_HIP, 0); +++ else if (IS (p, FORMULA)) +++ { +++ mode_check_formula (p, x, y); +++ if (!IS_REF (MOID (y))) +++ a68_warn_for_voiding (p, x, y, FORMULA); +++ } +++ else if (a68_is_one_of (p, JUMP, SKIP, STOP)) +++ { +++ if (SORT (x) != STRONG) +++ a68_warning (p, 0, "@ should not be in C context", SORT (x)); +++ /* a68_make_soid (y, STRONG, M_HIP, 0); */ +++ a68_make_soid (y, SORT (x), M_HIP, 0); +++ } +++ else if (IS (p, ASSIGNATION)) +++ mode_check_assignation (SUB (p), x, y); +++ else if (IS (p, IDENTITY_RELATION)) +++ { +++ mode_check_identity_relation (SUB (p), x, y); +++ a68_warn_for_voiding (p, x, y, IDENTITY_RELATION); +++ } +++ else if (IS (p, ROUTINE_TEXT)) +++ { +++ mode_check_routine_text (SUB (p), y); +++ a68_make_soid (y, SORT (x), MOID (p), 0); +++ a68_warn_for_voiding (p, x, y, ROUTINE_TEXT); +++ } +++ else if (IS (p, ASSERTION)) +++ { +++ mode_check_assertion (SUB (p)); +++ a68_make_soid (y, STRONG, M_VOID, 0); +++ } +++ else if (IS (p, AND_FUNCTION)) +++ { +++ mode_check_bool_function (SUB (p), x, y); +++ a68_warn_for_voiding (p, x, y, AND_FUNCTION); +++ } +++ else if (IS (p, OR_FUNCTION)) +++ { +++ mode_check_bool_function (SUB (p), x, y); +++ a68_warn_for_voiding (p, x, y, OR_FUNCTION); +++ } +++ +++ MOID (p) = MOID (y); +++} +++ +++/* Mode check a module text. */ +++ +++static void +++mode_check_module_text (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, DEF_PART) || IS (p, POSTLUDE_PART)) +++ { +++ /* XXX unde def is an enquiry clause */ +++ SOID_T *z = NO_SOID; +++ SOID_T ix; +++ a68_make_soid (&ix, STRONG, M_VOID, 0); +++ mode_check_serial (&z, NEXT_SUB (p), &ix, true); +++ a68_free_soid_list (z); +++ } +++ } +++} +++ +++/* Mode check a module declaration. */ +++ +++static void +++mode_check_module_declaration (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, MODULE_TEXT)) +++ mode_check_module_text (SUB (p)); +++ else +++ mode_check_module_declaration (SUB (p)); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-moids-coerce.cc ++@@ -0,0 +1,925 @@ +++/* Mode coercion driver. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++#define A68_INSERT_COERCIONS(n, p, q) a68_make_strong ((n), (p), MOID (q)) +++ +++/* A few forward references of functions defined below. */ +++ +++static void coerce_unit (NODE_T *p, SOID_T *q); +++static void coerce_formula (NODE_T *p, SOID_T *q __attribute__ ((unused))); +++static void coerce_operand (NODE_T *p, SOID_T *q); +++static void coerce_enclosed (NODE_T *p, SOID_T *q); +++ +++/* Coerce bounds. */ +++ +++static void +++coerce_bounds (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, UNIT)) +++ { +++ SOID_T q; +++ a68_make_soid (&q, MEEK, M_INT, 0); +++ coerce_unit (p, &q); +++ } +++ else +++ coerce_bounds (SUB (p)); +++ } +++} +++ +++/* Coerce declarer. */ +++ +++static void +++coerce_declarer (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, BOUNDS)) +++ coerce_bounds (SUB (p)); +++ else +++ coerce_declarer (SUB (p)); +++ } +++} +++ +++/* Coerce identity declaration. */ +++ +++static void +++coerce_identity_declaration (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case DECLARER: +++ coerce_declarer (SUB (p)); +++ coerce_identity_declaration (NEXT (p)); +++ break; +++ case DEFINING_IDENTIFIER: +++ { +++ SOID_T q; +++ a68_make_soid (&q, STRONG, MOID (p), 0); +++ coerce_unit (NEXT_NEXT (p), &q); +++ break; +++ } +++ default: +++ coerce_identity_declaration (SUB (p)); +++ coerce_identity_declaration (NEXT (p)); +++ break; +++ } +++ } +++} +++ +++/* Coerce variable declaration. */ +++ +++static void +++coerce_variable_declaration (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case DECLARER: +++ coerce_declarer (SUB (p)); +++ coerce_variable_declaration (NEXT (p)); +++ break; +++ case DEFINING_IDENTIFIER: +++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) +++ { +++ SOID_T q; +++ a68_make_soid (&q, STRONG, SUB_MOID (p), 0); +++ coerce_unit (NEXT_NEXT (p), &q); +++ break; +++ } +++ /* Fallthrough. */ +++ default: +++ coerce_variable_declaration (SUB (p)); +++ coerce_variable_declaration (NEXT (p)); +++ break; +++ } +++ } +++} +++ +++/* Coerce routine text. */ +++ +++static void +++coerce_routine_text (NODE_T *p) +++{ +++ if (IS (p, PARAMETER_PACK)) +++ FORWARD (p); +++ SOID_T w; +++ a68_make_soid (&w, STRONG, MOID (p), 0); +++ coerce_unit (NEXT_NEXT (p), &w); +++} +++ +++/* Coerce proc declaration. */ +++ +++static void +++coerce_proc_declaration (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, ROUTINE_TEXT)) +++ coerce_routine_text (SUB (p)); +++ else +++ { +++ coerce_proc_declaration (SUB (p)); +++ coerce_proc_declaration (NEXT (p)); +++ } +++} +++ +++/* Coerce_op_declaration. */ +++ +++static void +++coerce_op_declaration (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, DEFINING_OPERATOR)) +++ { +++ SOID_T q; +++ a68_make_soid (&q, STRONG, MOID (p), 0); +++ coerce_unit (NEXT_NEXT (p), &q); +++ } +++ else +++ { +++ coerce_op_declaration (SUB (p)); +++ coerce_op_declaration (NEXT (p)); +++ } +++} +++ +++/* Coerce brief op declaration. */ +++ +++static void +++coerce_brief_op_declaration (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, DEFINING_OPERATOR)) +++ coerce_routine_text (SUB (NEXT_NEXT (p))); +++ else +++ { +++ coerce_brief_op_declaration (SUB (p)); +++ coerce_brief_op_declaration (NEXT (p)); +++ } +++} +++ +++/* Coerce declaration list. */ +++ +++static void +++coerce_declaration_list (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case IDENTITY_DECLARATION: +++ coerce_identity_declaration (SUB (p)); +++ break; +++ case VARIABLE_DECLARATION: +++ coerce_variable_declaration (SUB (p)); +++ break; +++ case MODE_DECLARATION: +++ coerce_declarer (SUB (p)); +++ break; +++ case PROCEDURE_DECLARATION: +++ case PROCEDURE_VARIABLE_DECLARATION: +++ coerce_proc_declaration (SUB (p)); +++ break; +++ case BRIEF_OPERATOR_DECLARATION: +++ coerce_brief_op_declaration (SUB (p)); +++ break; +++ case OPERATOR_DECLARATION: +++ coerce_op_declaration (SUB (p)); +++ break; +++ default: +++ coerce_declaration_list (SUB (p)); +++ coerce_declaration_list (NEXT (p)); +++ break; +++ } +++ } +++} +++ +++/* Coerce serial. */ +++ +++static void +++coerce_serial (NODE_T *p, SOID_T *q, bool k) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, INITIALISER_SERIES)) +++ { +++ coerce_serial (SUB (p), q, false); +++ coerce_serial (NEXT (p), q, k); +++ } +++ else if (IS (p, DECLARATION_LIST)) +++ coerce_declaration_list (SUB (p)); +++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) +++ coerce_serial (NEXT (p), q, k); +++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) +++ { +++ NODE_T *z = NEXT (p); +++ if (z != NO_NODE) +++ { +++ if (IS (z, EXIT_SYMBOL) || IS (z, END_SYMBOL) || IS (z, CLOSE_SYMBOL)) +++ coerce_serial (SUB (p), q, true); +++ else +++ coerce_serial (SUB (p), q, false); +++ } +++ else +++ coerce_serial (SUB (p), q, true); +++ coerce_serial (NEXT (p), q, k); +++ } +++ else if (IS (p, LABELED_UNIT)) +++ coerce_serial (SUB (p), q, k); +++ else if (IS (p, UNIT)) +++ { +++ if (k) +++ coerce_unit (p, q); +++ else +++ { +++ SOID_T strongvoid; +++ a68_make_soid (&strongvoid, STRONG, M_VOID, 0); +++ coerce_unit (p, &strongvoid); +++ } +++ } +++} +++ +++/* Coerce closed. */ +++ +++static void +++coerce_closed (NODE_T *p, SOID_T *q) +++{ +++ if (IS (p, SERIAL_CLAUSE)) +++ coerce_serial (p, q, true); +++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) +++ coerce_closed (NEXT (p), q); +++} +++ +++/* Coerce access clause. */ +++ +++static void +++coerce_access (NODE_T *p, SOID_T *q) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, ENCLOSED_CLAUSE)) +++ coerce_enclosed (p, q); +++ } +++} +++ +++/* Coerce conditional. */ +++ +++static void +++coerce_conditional (NODE_T *p, SOID_T *q) +++{ +++ SOID_T w; +++ a68_make_soid (&w, MEEK, M_BOOL, 0); +++ coerce_serial (NEXT_SUB (p), &w, true); +++ FORWARD (p); +++ coerce_serial (NEXT_SUB (p), q, true); +++ if ((FORWARD (p)) != NO_NODE) +++ { +++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) +++ coerce_serial (NEXT_SUB (p), q, true); +++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) +++ coerce_conditional (SUB (p), q); +++ } +++} +++ +++/* Coerce unit list. */ +++ +++static void +++coerce_unit_list (NODE_T *p, SOID_T *q) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, UNIT_LIST)) +++ { +++ coerce_unit_list (SUB (p), q); +++ coerce_unit_list (NEXT (p), q); +++ } +++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, COMMA_SYMBOL, STOP)) +++ coerce_unit_list (NEXT (p), q); +++ else if (IS (p, UNIT)) +++ { +++ coerce_unit (p, q); +++ coerce_unit_list (NEXT (p), q); +++ } +++} +++ +++/* Coerce int case. */ +++ +++static void +++coerce_int_case (NODE_T *p, SOID_T *q) +++{ +++ SOID_T w; +++ a68_make_soid (&w, MEEK, M_INT, 0); +++ coerce_serial (NEXT_SUB (p), &w, true); +++ FORWARD (p); +++ coerce_unit_list (NEXT_SUB (p), q); +++ if ((FORWARD (p)) != NO_NODE) +++ { +++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) +++ coerce_serial (NEXT_SUB (p), q, true); +++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) +++ coerce_int_case (SUB (p), q); +++ } +++} +++ +++/* Coerce spec unit list. */ +++ +++static void +++coerce_spec_unit_list (NODE_T *p, SOID_T *q) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (a68_is_one_of (p, SPECIFIED_UNIT_LIST, SPECIFIED_UNIT, STOP)) +++ coerce_spec_unit_list (SUB (p), q); +++ else if (IS (p, UNIT)) +++ coerce_unit (p, q); +++ } +++} +++ +++/* Coerce united case. */ +++ +++static void +++coerce_united_case (NODE_T *p, SOID_T *q) +++{ +++ SOID_T w; +++ a68_make_soid (&w, MEEK, MOID (SUB (p)), 0); +++ coerce_serial (NEXT_SUB (p), &w, true); +++ FORWARD (p); +++ coerce_spec_unit_list (NEXT_SUB (p), q); +++ if ((FORWARD (p)) != NO_NODE) +++ { +++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) +++ coerce_serial (NEXT_SUB (p), q, true); +++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) +++ coerce_united_case (SUB (p), q); +++ } +++} +++ +++/* Coerce loop. */ +++ +++static void +++coerce_loop (NODE_T *p) +++{ +++ if (IS (p, FOR_PART)) +++ coerce_loop (NEXT (p)); +++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) +++ { +++ SOID_T w; +++ a68_make_soid (&w, MEEK, M_INT, 0); +++ coerce_unit (NEXT_SUB (p), &w); +++ coerce_loop (NEXT (p)); +++ } +++ else if (IS (p, WHILE_PART)) +++ { +++ SOID_T w; +++ a68_make_soid (&w, MEEK, M_BOOL, 0); +++ coerce_serial (NEXT_SUB (p), &w, true); +++ coerce_loop (NEXT (p)); +++ } +++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) +++ { +++ SOID_T w; +++ NODE_T *do_p = NEXT_SUB (p); +++ a68_make_soid (&w, STRONG, M_VOID, 0); +++ coerce_serial (do_p, &w, true); +++ } +++} +++ +++/* Coerce struct display. */ +++ +++static void +++coerce_struct_display (PACK_T **r, NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (IS (p, UNIT_LIST)) +++ { +++ coerce_struct_display (r, SUB (p)); +++ coerce_struct_display (r, NEXT (p)); +++ } +++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, COMMA_SYMBOL, STOP)) +++ coerce_struct_display (r, NEXT (p)); +++ else if (IS (p, UNIT)) +++ { +++ SOID_T s; +++ a68_make_soid (&s, STRONG, MOID (*r), 0); +++ coerce_unit (p, &s); +++ FORWARD (*r); +++ coerce_struct_display (r, NEXT (p)); +++ } +++} +++ +++/* Coerce collateral. */ +++ +++static void +++coerce_collateral (NODE_T *p, SOID_T *q) +++{ +++ if (!(a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) +++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP))) +++ { +++ if (IS (MOID (q), STRUCT_SYMBOL)) +++ { +++ PACK_T *t = PACK (MOID (q)); +++ coerce_struct_display (&t, p); +++ } +++ else if (IS_FLEX (MOID (q))) +++ { +++ SOID_T w; +++ a68_make_soid (&w, STRONG, SLICE (SUB_MOID (q)), 0); +++ coerce_unit_list (p, &w); +++ } +++ else if (IS_ROW (MOID (q))) +++ { +++ SOID_T w; +++ a68_make_soid (&w, STRONG, SLICE (MOID (q)), 0); +++ coerce_unit_list (p, &w); +++ } +++ else +++ { +++ /* if (MOID (q) != M_VOID). */ +++ coerce_unit_list (p, q); +++ } +++ } +++} +++ +++/* Coerce_enclosed. */ +++ +++static void +++coerce_enclosed (NODE_T *p, SOID_T *q) +++{ +++ if (IS (p, ENCLOSED_CLAUSE)) +++ coerce_enclosed (SUB (p), q); +++ else if (IS (p, CLOSED_CLAUSE)) +++ coerce_closed (SUB (p), q); +++ else if (IS (p, COLLATERAL_CLAUSE)) +++ coerce_collateral (SUB (p), q); +++ else if (IS (p, ACCESS_CLAUSE)) +++ coerce_access (SUB (p), q); +++ else if (IS (p, PARALLEL_CLAUSE)) +++ coerce_collateral (SUB (NEXT_SUB (p)), q); +++ else if (IS (p, CONDITIONAL_CLAUSE)) +++ coerce_conditional (SUB (p), q); +++ else if (IS (p, CASE_CLAUSE)) +++ coerce_int_case (SUB (p), q); +++ else if (IS (p, CONFORMITY_CLAUSE)) +++ coerce_united_case (SUB (p), q); +++ else if (IS (p, LOOP_CLAUSE)) +++ coerce_loop (SUB (p)); +++ +++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); +++} +++ +++/* Get monad moid. */ +++ +++static MOID_T * +++get_monad_moid (NODE_T *p) +++{ +++ if (TAX (p) != NO_TAG && TAX (p) != A68_PARSER (error_tag)) +++ { +++ MOID (p) = MOID (TAX (p)); +++ return MOID (PACK (MOID (p))); +++ } +++ else +++ return M_ERROR; +++} +++ +++/* Coerce monad oper. */ +++ +++static void +++coerce_monad_oper (NODE_T *p, SOID_T *q) +++{ +++ if (p != NO_NODE) +++ { +++ SOID_T z; +++ a68_make_soid (&z, FIRM, MOID (PACK (MOID (TAX (p)))), 0); +++ A68_INSERT_COERCIONS (NEXT (p), MOID (q), &z); +++ } +++} +++ +++/* Coerce monad formula. */ +++ +++static void +++coerce_monad_formula (NODE_T *p) +++{ +++ SOID_T e; +++ a68_make_soid (&e, STRONG, get_monad_moid (p), 0); +++ coerce_operand (NEXT (p), &e); +++ coerce_monad_oper (p, &e); +++} +++ +++/* Coerce operand. */ +++ +++static void +++coerce_operand (NODE_T *p, SOID_T *q) +++{ +++ if (IS (p, MONADIC_FORMULA)) +++ { +++ coerce_monad_formula (SUB (p)); +++ if (MOID (p) != MOID (q)) +++ { +++ a68_make_sub (p, p, FORMULA); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ a68_make_sub (p, p, TERTIARY); +++ } +++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); +++ } +++ else if (IS (p, FORMULA)) +++ { +++ coerce_formula (SUB (p), q); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); +++ } +++ else if (IS (p, SECONDARY)) +++ { +++ coerce_unit (SUB (p), q); +++ MOID (p) = MOID (SUB (p)); +++ } +++} +++ +++/* Coerce formula. */ +++ +++static void +++coerce_formula (NODE_T *p, SOID_T *q __attribute__ ((unused))) +++{ +++ if (IS (p, MONADIC_FORMULA) && NEXT (p) == NO_NODE) +++ coerce_monad_formula (SUB (p)); +++ else +++ { +++ if (TAX (NEXT (p)) != NO_TAG && TAX (NEXT (p)) != A68_PARSER (error_tag)) +++ { +++ SOID_T s; +++ NODE_T *op = NEXT (p), *nq = NEXT_NEXT (p); +++ MOID_T *w = MOID (op); +++ MOID_T *u = MOID (PACK (w)), *v = MOID (NEXT (PACK (w))); +++ a68_make_soid (&s, STRONG, u, 0); +++ coerce_operand (p, &s); +++ a68_make_soid (&s, STRONG, v, 0); +++ coerce_operand (nq, &s); +++ } +++ } +++} +++ +++/* Coerce assignation. */ +++ +++static void +++coerce_assignation (NODE_T *p) +++{ +++ SOID_T w; +++ a68_make_soid (&w, SOFT, MOID (p), 0); +++ coerce_unit (SUB (p), &w); +++ a68_make_soid (&w, STRONG, SUB_MOID (p), 0); +++ coerce_unit (NEXT_NEXT (p), &w); +++} +++ +++/* Coerce relation. */ +++ +++static void +++coerce_relation (NODE_T *p) +++{ +++ SOID_T w; +++ a68_make_soid (&w, STRONG, MOID (p), 0); +++ coerce_unit (SUB (p), &w); +++ a68_make_soid (&w, STRONG, MOID (NEXT_NEXT (p)), 0); +++ coerce_unit (SUB (NEXT_NEXT (p)), &w); +++} +++ +++/* Coerce bool function. */ +++ +++static void +++coerce_bool_function (NODE_T *p) +++{ +++ SOID_T w; +++ a68_make_soid (&w, STRONG, M_BOOL, 0); +++ coerce_unit (SUB (p), &w); +++ coerce_unit (SUB (NEXT_NEXT (p)), &w); +++} +++ +++/* Coerce assertion. */ +++ +++static void +++coerce_assertion (NODE_T *p) +++{ +++ SOID_T w; +++ a68_make_soid (&w, MEEK, M_BOOL, 0); +++ coerce_enclosed (SUB_NEXT (p), &w); +++} +++ +++/* Coerce selection. */ +++ +++static void +++coerce_selection (NODE_T * p) +++{ +++ SOID_T w; +++ a68_make_soid (&w, STRONG, MOID (NEXT (p)), 0); +++ coerce_unit (SUB_NEXT (p), &w); +++} +++ +++/* Coerce cast. */ +++ +++static void +++coerce_cast (NODE_T * p) +++{ +++ coerce_declarer (p); +++ SOID_T w; +++ a68_make_soid (&w, STRONG, MOID (p), 0); +++ coerce_enclosed (NEXT (p), &w); +++} +++ +++/* Coerce argument list. */ +++ +++static void +++coerce_argument_list (PACK_T **r, NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, ARGUMENT_LIST)) +++ coerce_argument_list (r, SUB (p)); +++ else if (IS (p, UNIT)) +++ { +++ SOID_T s; +++ a68_make_soid (&s, STRONG, MOID (*r), 0); +++ coerce_unit (p, &s); +++ FORWARD (*r); +++ } +++ else if (IS (p, TRIMMER)) +++ FORWARD (*r); +++ } +++} +++ +++/* Coerce call. */ +++ +++static void +++coerce_call (NODE_T *p) +++{ +++ MOID_T *proc = MOID (p); +++ SOID_T w; +++ a68_make_soid (&w, MEEK, proc, 0); +++ coerce_unit (SUB (p), &w); +++ FORWARD (p); +++ PACK_T *t = PACK (proc); +++ coerce_argument_list (&t, SUB (p)); +++} +++ +++/* Coerce meek int. */ +++ +++static void +++coerce_meek_int (NODE_T *p) +++{ +++ SOID_T x; +++ a68_make_soid (&x, MEEK, M_INT, 0); +++ coerce_unit (p, &x); +++} +++ +++/* Coerce trimmer. */ +++ +++static void +++coerce_trimmer (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, UNIT)) +++ { +++ coerce_meek_int (p); +++ coerce_trimmer (NEXT (p)); +++ } +++ else +++ coerce_trimmer (NEXT (p)); +++ } +++} +++ +++/* Coerce indexer. */ +++ +++static void +++coerce_indexer (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, TRIMMER)) +++ coerce_trimmer (SUB (p)); +++ else if (IS (p, UNIT)) +++ coerce_meek_int (p); +++ else +++ { +++ coerce_indexer (SUB (p)); +++ coerce_indexer (NEXT (p)); +++ } +++ } +++} +++ +++/* Coerce_slice. */ +++ +++static void +++coerce_slice (NODE_T *p) +++{ +++ SOID_T w; +++ MOID_T *row = MOID (p); +++ a68_make_soid (&w, STRONG, row, 0); +++ coerce_unit (SUB (p), &w); +++ coerce_indexer (SUB_NEXT (p)); +++} +++ +++/* Coerce format text. */ +++ +++static void +++coerce_format_text (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ coerce_format_text (SUB (p)); +++ if (IS (p, FORMAT_PATTERN)) +++ { +++ SOID_T x; +++ a68_make_soid (&x, STRONG, M_FORMAT, 0); +++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); +++ } +++ else if (IS (p, GENERAL_PATTERN) && NEXT_SUB (p) != NO_NODE) +++ { +++ SOID_T x; +++ a68_make_soid (&x, STRONG, M_ROW_INT, 0); +++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); +++ } +++ else if (IS (p, DYNAMIC_REPLICATOR)) +++ { +++ SOID_T x; +++ a68_make_soid (&x, STRONG, M_INT, 0); +++ coerce_enclosed (SUB (NEXT_SUB (p)), &x); +++ } +++ } +++} +++ +++/* Coerce unit. */ +++ +++static void +++coerce_unit (NODE_T *p, SOID_T *q) +++{ +++ if (p == NO_NODE) +++ return; +++ else if (a68_is_one_of (p, UNIT, TERTIARY, SECONDARY, PRIMARY, STOP)) +++ { +++ coerce_unit (SUB (p), q); +++ MOID (p) = MOID (SUB (p)); +++ /* Ex primary. */ +++ } +++ else if (IS (p, CALL)) +++ { +++ coerce_call (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (IS (p, SLICE)) +++ { +++ coerce_slice (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (IS (p, CAST)) +++ { +++ coerce_cast (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (a68_is_one_of (p, DENOTATION, IDENTIFIER, STOP)) +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ else if (IS (p, FORMAT_TEXT)) +++ { +++ coerce_format_text (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (IS (p, ENCLOSED_CLAUSE)) +++ { +++ coerce_enclosed (p, q); +++ /* Ex secondary. */ +++ } +++ else if (IS (p, SELECTION)) +++ { +++ coerce_selection (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (IS (p, GENERATOR)) +++ { +++ coerce_declarer (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ /* Ex tertiary. */ +++ } +++ else if (IS (p, NIHIL)) +++ { +++ if (ATTRIBUTE (MOID (q)) != REF_SYMBOL && MOID (q) != M_VOID) +++ a68_error (p, "context does not require a name"); +++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); +++ } +++ else if (IS (p, FORMULA)) +++ { +++ coerce_formula (SUB (p), q); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (IS (p, JUMP)) +++ { +++ if (MOID (q) == M_PROC_VOID) +++ a68_make_sub (p, p, PROCEDURING); +++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); +++ } +++ else if (IS (p, SKIP)) +++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); +++ else if (IS (p, ASSIGNATION)) +++ { +++ coerce_assignation (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ MOID (p) = a68_depref_rows (MOID (p), MOID (q)); +++ } +++ else if (IS (p, IDENTITY_RELATION)) +++ { +++ coerce_relation (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (IS (p, ROUTINE_TEXT)) +++ { +++ coerce_routine_text (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (a68_is_one_of (p, AND_FUNCTION, OR_FUNCTION, STOP)) +++ { +++ coerce_bool_function (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++ else if (IS (p, ASSERTION)) +++ { +++ coerce_assertion (SUB (p)); +++ A68_INSERT_COERCIONS (p, MOID (p), q); +++ } +++} +++ +++/* Coerce module text. */ +++ +++static void +++coerce_module_text (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, DEF_PART) || IS (p, POSTLUDE_PART)) +++ { +++ SOID_T w; +++ a68_make_soid (&w, STRONG, M_VOID, 0); +++ coerce_serial (NEXT_SUB (p), &w, true); +++ } +++ } +++} +++ +++/* Coerce module declaration. */ +++ +++static void +++coerce_module_declaration (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, MODULE_TEXT)) +++ coerce_module_text (SUB (p)); +++ else +++ coerce_module_declaration (SUB (p)); +++ } +++} +++ +++/* Driver for coercion insertions. */ +++ +++void +++a68_coercion_inserter (NODE_T *p) +++{ +++ if (IS (p, PACKET)) +++ { +++ p = SUB (p); +++ if (IS (p, PARTICULAR_PROGRAM)) +++ { +++ SOID_T q; +++ a68_make_soid (&q, STRONG, M_VOID, 0); +++ coerce_enclosed (SUB (p), &q); +++ } +++ else if (IS (p, PRELUDE_PACKET)) +++ coerce_module_declaration (SUB (p)); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-moids-equivalence.cc ++@@ -0,0 +1,183 @@ +++/* Prove equivalence of modes. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* Routines for establishing equivalence of modes. +++ After I made this mode equivalencer (in 1993), I found: +++ +++ Algol Bulletin 30.3.3 C.H.A. Koster: On infinite modes, 86-89 [1969], +++ +++ which essentially concurs with this test on mode equivalence I wrote. +++ It is elementary logic anyway: prove equivalence, assuming equivalence. */ +++ +++/* Forward declarations of some of the functions defined below. */ +++ +++static bool are_modes_equivalent (MOID_T * a, MOID_T * b); +++ +++/* Whether packs are equivalent, same sequence of equivalence modes. */ +++ +++static bool +++are_packs_equivalent (PACK_T *s, PACK_T *t, +++ bool compare_names = true) +++{ +++ for (; s != NO_PACK && t != NO_PACK; s = s->next, t = t->next) +++ { +++ if (!are_modes_equivalent (MOID (s), MOID (t))) +++ return false; +++ if (compare_names) +++ { +++ if (TEXT (s) != TEXT (t) +++ && TEXT (s) != NO_TEXT +++ && TEXT (t) != NO_TEXT +++ && strcmp (TEXT (s), TEXT (t)) != 0) +++ return false; +++ } +++ } +++ +++ return s == NO_PACK && t == NO_PACK; +++} +++ +++/* Whether packs are subsets. */ +++ +++static bool +++is_united_subset (PACK_T *s, PACK_T *t) +++{ +++ /* For all modes in 's' there must be an equivalent in 't'. */ +++ for (PACK_T *p = s; p != NO_PACK; p = p->next) +++ { +++ bool f = false; +++ for (PACK_T *q = t; q != NO_PACK && !f; q = q->next) +++ f = are_modes_equivalent (MOID (p), MOID (q)); +++ +++ if (!f) +++ return false; +++ } +++ +++ return true; +++} +++ +++/* Whether packs are subsets. */ +++ +++static bool +++are_united_packs_equivalent (PACK_T *s, PACK_T *t) +++{ +++ return is_united_subset (s, t) && is_united_subset (t, s); +++} +++ +++/* Whether moids A and B are structurally equivalent. */ +++ +++static bool +++are_modes_equivalent (MOID_T * a, MOID_T * b) +++{ +++ /* First lets try some cheap heuristics. */ +++ +++ if (a == NO_MOID || b == NO_MOID) +++ /* Modes can be NO_MOID in partial argument lists. */ +++ return false; +++ else if (a == M_ERROR || b == M_ERROR) +++ return false; +++ else if (a == b) +++ return true; +++ else if (ATTRIBUTE (a) != ATTRIBUTE (b)) +++ return false; +++ else if (DIM (a) != DIM (b)) +++ return false; +++ else if (IS (a, STANDARD)) +++ return (a == b); +++ else if (EQUIVALENT (a) == b || EQUIVALENT (b) == a) +++ return true; +++ else if (a68_is_postulated_pair (A68 (top_postulate), a, b) +++ || a68_is_postulated_pair (A68 (top_postulate), b, a)) +++ return true; +++ else if (IS (a, INDICANT)) +++ { +++ if (NODE (a) == NO_NODE || NODE (b) == NO_NODE) +++ return false; +++ else +++ return (NODE (a) == NODE (b) +++ || strcmp (NSYMBOL (NODE (a)), NSYMBOL (NODE (b))) == 0); +++ } +++ +++ /* Investigate structure. */ +++ +++ /* We now know that 'a' and 'b' have same attribute, dimension, ... */ +++ if (IS (a, REF_SYMBOL)) +++ /* REF MODE */ +++ return are_modes_equivalent (a->sub, b->sub); +++ else if (IS (a, ROW_SYMBOL)) +++ /* [] MODE */ +++ return are_modes_equivalent (a->sub, b->sub); +++ else if (IS (a, FLEX_SYMBOL)) +++ /* FLEX [...] MODE */ +++ return are_modes_equivalent (a->sub, b->sub); +++ else if (IS (a, STRUCT_SYMBOL)) +++ { +++ /* STRUCT (...) */ +++ POSTULATE_T *save = A68 (top_postulate); +++ a68_make_postulate (&A68 (top_postulate), a, b); +++ bool z = are_packs_equivalent (PACK (a), PACK (b)); +++ a68_free_postulate_list (A68 (top_postulate), save); +++ A68 (top_postulate) = save; +++ return z; +++ } +++ else if (IS (a, UNION_SYMBOL)) +++ /* UNION (...) */ +++ return are_united_packs_equivalent (PACK (a), PACK (b)); +++ else if (IS (a, PROC_SYMBOL) && PACK (a) == NO_PACK && PACK (b) == NO_PACK) +++ /* PROC MOID */ +++ return are_modes_equivalent (a->sub, b->sub); +++ else if (IS (a, PROC_SYMBOL) && PACK (a) != NO_PACK && PACK (b) != NO_PACK) +++ { +++ /* PROC (...) MOID */ +++ POSTULATE_T *save = A68 (top_postulate); +++ a68_make_postulate (&A68 (top_postulate), a, b); +++ bool z = are_modes_equivalent (a->sub, b->sub); +++ if (z) +++ z = are_packs_equivalent (PACK (a), PACK (b), +++ false /* compare_names */); +++ a68_free_postulate_list (A68 (top_postulate), save); +++ A68 (top_postulate) = save; +++ return z; +++ } +++ else if (IS (a, SERIES_MODE) || IS (a, STOWED_MODE)) +++ /* Modes occurring in displays. */ +++ return are_packs_equivalent (PACK (a), PACK (b)); +++ +++ return false; +++} +++ +++//! @brief Whether two modes are structurally equivalent. +++ +++bool +++a68_prove_moid_equivalence (MOID_T *p, MOID_T *q) +++{ +++// Prove two modes to be equivalent under assumption that they indeed are. +++ POSTULATE_T *save = A68 (top_postulate); +++ bool z = are_modes_equivalent (p, q); +++ a68_free_postulate_list (A68 (top_postulate), save); +++ A68 (top_postulate) = save; +++ return z; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-pragmat.cc ++@@ -0,0 +1,202 @@ +++/* Handling of compiler pragmats. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* Utility macros useful for parsing pragmat contents. */ +++ +++#define SKIP_WHITESPACES(P) \ +++ while (ISSPACE (*(P))) (P)++ +++ +++#define PARSE_WORD(P,W) \ +++ do \ +++ { \ +++ (W) = (char *) alloca (strlen ((P))); \ +++ size_t i = 0; \ +++ while (ISALPHA (*(P))) \ +++ (W)[i++] = *((P)++); \ +++ (W)[i] = '\0'; \ +++ } while (0) +++ +++/* Parse a string denotation and return its value in an allocated buffer in +++ *STR. It is up to the caller to dispose of the allocated memory. +++ +++ This function returns a pointer to the character following the string +++ denotation in P, or P in case of parse error. +++ +++ In case of parse error *STR is also set to NULL. */ +++ +++const char * +++parse_string_denotation (const char *p, char **str) +++{ +++ const char *orig = p; +++ size_t i = 0; +++ char *s = (char *) xmalloc (2 * strlen (p)); +++ +++ if (*(p++) != '\"') +++ goto error; +++ while (*p != '\0' && *p != '\"') +++ { +++ if (*p == '\'' && *(p + 1) == '\"') +++ { +++ s[i++] = '\"'; +++ p += 2; +++ } +++ else +++ { +++ s[i++] = *p; +++ p++; +++ } +++ } +++ if (*p != '\"') +++ goto error; +++ +++ *str = s; +++ return p + 1; +++ error: +++ free (s); +++ *str = NULL; +++ return orig; +++} +++ +++/* PR access MODULE in "filename" PR */ +++ +++const char * +++handle_access_in_pragmat (NODE_T *p, const char *pragmat, size_t pos) +++{ +++ const char *beginning = pragmat; +++ +++ SKIP_WHITESPACES (pragmat); +++ /* Parse module name. */ +++ char *module; +++ PARSE_WORD (pragmat, module); +++ if (*module == '\0') +++ { +++ a68_error (p, "invalid pragmat: expected module name after %"); +++ return NULL; +++ } +++ SKIP_WHITESPACES (pragmat); +++ /* Parse "in " */ +++ if (strncmp (pragmat, "in ", 3) != 0) +++ { +++ a68_error (p, "invalid pragmat: expected % after module name"); +++ return NULL; +++ } +++ pragmat += 3; +++ SKIP_WHITESPACES (pragmat); +++ /* Parse a string denotation. */ +++ char *filename; +++ pragmat = parse_string_denotation (pragmat, &filename); +++ if (filename == NULL) +++ { +++ size_t off = pos + pragmat - beginning; +++ char *found; +++ PARSE_WORD (pragmat, found); +++ a68_error_in_pragmat (p, off, +++ "in % pragmat, expected string, found Z", +++ found); +++ return NULL; +++ } +++ /* Add entry in the module files map. */ +++ const char **pmodule = A68_MODULE_FILES->get (module); +++ if (pmodule != NULL) +++ { +++ a68_error_in_pragmat (p, pos + pragmat - beginning, +++ "module Z cannot appear in multiple % pragmats", +++ module); +++ return NULL; +++ } +++ +++ SKIP_WHITESPACES (pragmat); +++ /* Skip closing PR or PRAGMAT. */ +++ if (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL) +++ pragmat += 2; +++ else +++ pragmat += 7; +++ +++ A68_MODULE_FILES->put (ggc_strdup (module), ggc_strdup (filename)); +++ free (filename); +++ return pragmat; +++} +++ +++/* Parse and action on a pragmat. */ +++ +++void +++handle_pragmat (NODE_T *p) +++{ +++ const char *pragmat = NPRAGMAT (p); +++ if (pragmat != NULL +++ && (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL +++ || NPRAGMAT_TYPE (p) == BOLD_PRAGMAT_SYMBOL)) +++ { +++ /* Process pragmat commands. */ +++ do +++ { +++ SKIP_WHITESPACES (pragmat); +++ /* Skip PR or PRAGMAT. */ +++ if (NPRAGMAT_TYPE (p) == STYLE_I_PRAGMAT_SYMBOL) +++ pragmat += 2; +++ else +++ pragmat += 7; +++ SKIP_WHITESPACES (pragmat); +++ /* Get first word in pragmat and dispatch. */ +++ SKIP_WHITESPACES (pragmat); +++ char *word = (char *) alloca (strlen (pragmat)); +++ size_t i = 0; +++ while (ISALPHA (*pragmat) || *pragmat == '\n') +++ word[i++] = *(pragmat++); +++ word[i] = '\0'; +++ +++ if (strcmp (word, "access") == 0) +++ { +++ pragmat +++ = handle_access_in_pragmat (p, pragmat, pragmat - NPRAGMAT (p)); +++ if (pragmat == NULL) +++ break; +++ } +++ else if (strcmp (word, "include") == 0) +++ /* Include pragmats are handled in the scanner. */ +++ return; +++ else +++ { +++ a68_error_in_pragmat (p, pragmat - NPRAGMAT (p), +++ "unrecognized pragmat Z", word); +++ break; +++ } +++ } +++ while (*pragmat != '\0'); +++ } +++} +++ +++/* Entry point: handle all pragmats in the given parse tree. */ +++ +++void +++a68_handle_pragmats (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ a68_handle_pragmats (SUB (p)); +++ handle_pragmat (p); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-prelude.cc ++@@ -0,0 +1,1502 @@ +++/* Standard prelude definitions. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++#define A68_STD true +++#define A68_EXT false +++ +++/* ALGOL68C type procs. */ +++ +++#define A68C_DEFIO(name, mode) \ +++ do \ +++ { \ +++ m = a68_proc (MODE (mode), M_REF_FILE, NO_MOID); \ +++ a68_idf (A68_EXT, "get" #name, m); \ +++ m = a68_proc (M_VOID, M_REF_FILE, MODE (mode), NO_MOID); \ +++ a68_idf (A68_EXT, "put" #name, m); \ +++ m = a68_proc (MODE (mode), NO_MOID); \ +++ a68_idf (A68_EXT, "read" #name, m); \ +++ m = a68_proc (M_VOID, MODE (mode), NO_MOID); \ +++ a68_idf (A68_EXT, "print" #name, m); \ +++ } \ +++ while (0) +++ +++/* Enter tag in standenv symbol table. */ +++ +++static void +++add_a68_standenv (bool portable, int a, NODE_T* n, char *c, MOID_T *m, +++ int p, LOWERER_T l = NO_LOWERER) +++{ +++#define INSERT_TAG(l, n) \ +++ do { \ +++ NEXT (n) = *(l); \ +++ *(l) = (n); \ +++ } while (0) +++ +++ TAG_T *new_one = a68_new_tag (); +++ +++ PROCEDURE_LEVEL (INFO (n)) = 0; +++ USE (new_one) = false; +++ HEAP (new_one) = HEAP_SYMBOL; +++ TAG_TABLE (new_one) = A68_STANDENV; +++ NODE (new_one) = n; +++ if (c != NO_TEXT) +++ VALUE (new_one) = TEXT (a68_add_token (&A68 (top_token), c)); +++ else +++ VALUE (new_one) = NO_TEXT; +++ PRIO (new_one) = p; +++ TAX_TREE_DECL (new_one) = NULL; +++ LOWERER (new_one) = l; +++ UNIT (new_one) = NULL; +++ PORTABLE (new_one) = portable; +++ MOID (new_one) = m; +++ NEXT (new_one) = NO_TAG; +++ if (a == IDENTIFIER) +++ INSERT_TAG (&IDENTIFIERS (A68_STANDENV), new_one); +++ else if (a == OP_SYMBOL) +++ INSERT_TAG (&OPERATORS (A68_STANDENV), new_one); +++ else if (a == PRIO_SYMBOL) +++ INSERT_TAG (&PRIO (A68_STANDENV), new_one); +++ else if (a == INDICANT) +++ INSERT_TAG (&INDICANTS (A68_STANDENV), new_one); +++ else if (a == LABEL) +++ INSERT_TAG (&LABELS (A68_STANDENV), new_one); +++#undef INSERT_TAG +++} +++ +++/* Compose PROC moid from arguments - first result, than arguments. */ +++ +++static MOID_T * +++a68_proc (MOID_T *m, ...) +++{ +++ PACK_T *p = NO_PACK, *q = NO_PACK; +++ MOID_T *y; +++ +++ va_list attribute; +++ va_start (attribute, m); +++ while ((y = va_arg (attribute, MOID_T *)) != NO_MOID) +++ { +++ PACK_T *new_one = a68_new_pack (); +++ +++ MOID (new_one) = y; +++ TEXT (new_one) = NO_TEXT; +++ NEXT (new_one) = NO_PACK; +++ if (q != NO_PACK) +++ NEXT (q) = new_one; +++ else +++ p = new_one; +++ q = new_one; +++ } +++ +++ va_end (attribute); +++ return a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, +++ a68_count_pack_members (p), NO_NODE, m, p); +++} +++ +++/* Enter an identifier in standenv. */ +++ +++static void +++a68_idf (bool portable, const char *n, MOID_T *m, LOWERER_T l = NO_LOWERER) +++{ +++ add_a68_standenv (portable, IDENTIFIER, +++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), n))), +++ NO_TEXT, m, 0, l); +++} +++ +++/* Enter a moid in standenv. */ +++ +++static void +++a68_mode (int p, const char *t, MOID_T **m) +++{ +++ (*m) = a68_add_mode (&TOP_MOID (&A68_JOB), +++ STANDARD, p, +++ a68_some_node (TEXT (a68_find_keyword (A68 (top_keyword), t))), +++ NO_MOID, NO_PACK); +++} +++ +++/* Enter a priority in standenv. */ +++ +++static void +++a68_prio (const char *p, int b) +++{ +++ add_a68_standenv (true, PRIO_SYMBOL, +++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), p))), +++ NO_TEXT, NO_MOID, b, NO_LOWERER); +++} +++ +++/* Enter operator in standenv. */ +++ +++static void +++a68_op (bool portable, const char *n, MOID_T *m, LOWERER_T l = NO_LOWERER) +++{ +++ add_a68_standenv (portable, OP_SYMBOL, +++ a68_some_node (TEXT (a68_add_token (&A68 (top_token), n))), +++ NO_TEXT, m, 0, l); +++} +++ +++/* Enter standard modes in standenv. */ +++ +++static void +++stand_moids (void) +++{ +++ /* Primitive A68 moids. */ +++ a68_mode (0, "VOID", &M_VOID); +++ /* Standard precision. */ +++ a68_mode (0, "INT", &M_INT); +++ a68_mode (0, "REAL", &M_REAL); +++ a68_mode (0, "COMPL", &M_COMPLEX); +++ a68_mode (0, "BITS", &M_BITS); +++ a68_mode (0, "BYTES", &M_BYTES); +++ /* Multiple precision. */ +++ a68_mode (-2, "INT", &M_SHORT_SHORT_INT); +++ a68_mode (-2, "BITS", &M_SHORT_SHORT_BITS); +++ a68_mode (-1, "INT", &M_SHORT_INT); +++ a68_mode (-1, "BITS", &M_SHORT_BITS); +++ a68_mode (1, "INT", &M_LONG_INT); +++ a68_mode (1, "REAL", &M_LONG_REAL); +++ a68_mode (1, "COMPL", &M_LONG_COMPLEX); +++ a68_mode (1, "BITS", &M_LONG_BITS); +++ a68_mode (1, "BYTES", &M_LONG_BYTES); +++ a68_mode (2, "REAL", &M_LONG_LONG_REAL); +++ a68_mode (2, "INT", &M_LONG_LONG_INT); +++ a68_mode (2, "BITS", &M_LONG_LONG_BITS); +++ a68_mode (2, "COMPL", &M_LONG_LONG_COMPLEX); +++ /* Other. */ +++ a68_mode (0, "BOOL", &M_BOOL); +++ a68_mode (0, "CHAR", &M_CHAR); +++ a68_mode (0, "STRING", &M_STRING); +++ a68_mode (0, "FILE", &M_FILE); +++ a68_mode (0, "CHANNEL", &M_CHANNEL); +++ a68_mode (0, "SEMA", &M_SEMA); +++ /* Rows. */ +++ M_ROWS = a68_add_mode (&TOP_MOID (&A68_JOB), ROWS_SYMBOL, 0, NO_NODE, NO_MOID, NO_PACK); +++ /* REFs. */ +++ M_REF_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_INT, NO_PACK); +++ M_REF_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_REAL, NO_PACK); +++ M_REF_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_COMPLEX, NO_PACK); +++ M_REF_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BITS, NO_PACK); +++ M_REF_BYTES = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BYTES, NO_PACK); +++ /* Multiple precision. */ +++ M_REF_LONG_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_INT, NO_PACK); +++ M_REF_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_REAL, NO_PACK); +++ M_REF_LONG_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_COMPLEX, NO_PACK); +++ M_REF_LONG_LONG_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_INT, NO_PACK); +++ M_REF_LONG_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_REAL, NO_PACK); +++ M_REF_LONG_LONG_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_COMPLEX, NO_PACK); +++ M_REF_LONG_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_BITS, NO_PACK); +++ M_REF_LONG_LONG_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_LONG_BITS, NO_PACK); +++ M_REF_LONG_BYTES = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_LONG_BYTES, NO_PACK); +++ M_REF_SHORT_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_INT, NO_PACK); +++ M_REF_SHORT_SHORT_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_SHORT_INT, NO_PACK +++); +++ M_REF_SHORT_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_BITS, NO_PACK); +++ M_REF_SHORT_SHORT_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_SHORT_SHORT_BITS, NO_PACK); +++ /* Other. */ +++ M_REF_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_BOOL, NO_PACK); +++ M_REF_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_CHAR, NO_PACK); +++ M_REF_FILE = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_FILE, NO_PACK); +++ M_REF_REF_FILE = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_REF_FILE, NO_PACK); +++ /* [] INT. */ +++ M_ROW_INT = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_INT, NO_PACK); +++ HAS_ROWS (M_ROW_INT) = true; +++ SLICE (M_ROW_INT) = M_INT; +++ M_REF_ROW_INT = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_INT, NO_PACK); +++ NAME (M_REF_ROW_INT) = M_REF_INT; +++ /* [] REAL. */ +++ M_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_REAL, NO_PACK); +++ HAS_ROWS (M_ROW_REAL) = true; +++ SLICE (M_ROW_REAL) = M_REAL; +++ M_REF_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_REAL, NO_PACK); +++ NAME (M_REF_ROW_REAL) = M_REF_REAL; +++ /* [,] REAL. */ +++ M_ROW_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 2, NO_NODE, M_REAL, NO_PACK); +++ HAS_ROWS (M_ROW_ROW_REAL) = true; +++ SLICE (M_ROW_ROW_REAL) = M_ROW_REAL; +++ M_REF_ROW_ROW_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_ROW_REAL, NO_PACK); +++ NAME (M_REF_ROW_ROW_REAL) = M_REF_ROW_REAL; +++ /* [] COMPLEX. */ +++ M_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_COMPLEX, NO_PACK); +++ HAS_ROWS (M_ROW_COMPLEX) = true; +++ SLICE (M_ROW_COMPLEX) = M_COMPLEX; +++ M_REF_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_COMPLEX, NO_PACK); +++ NAME (M_REF_ROW_COMPLEX) = M_REF_COMPLEX; +++ /* [,] COMPLEX. */ +++ M_ROW_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 2, NO_NODE, M_COMPLEX, NO_PACK); +++ HAS_ROWS (M_ROW_ROW_COMPLEX) = true; +++ SLICE (M_ROW_ROW_COMPLEX) = M_ROW_COMPLEX; +++ M_REF_ROW_ROW_COMPLEX = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_ROW_COMPLEX, NO_PACK); +++ NAME (M_REF_ROW_ROW_COMPLEX) = M_REF_ROW_COMPLEX; +++ /* [] BOOL. */ +++ M_ROW_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_BOOL, NO_PACK); +++ HAS_ROWS (M_ROW_BOOL) = true; +++ SLICE (M_ROW_BOOL) = M_BOOL; +++ /* FLEX [] BOOL. */ +++ MOID_T *m = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, NO_NODE, M_ROW_BOOL, NO_PACK); +++ HAS_ROWS (m) = true; +++ M_FLEX_ROW_BOOL = m; +++ /* [] BITS. */ +++ M_ROW_BITS = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_BITS, NO_PACK); +++ HAS_ROWS (M_ROW_BITS) = true; +++ SLICE (M_ROW_BITS) = M_BITS; +++ /* [] CHAR. */ +++ M_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_CHAR, NO_PACK); +++ HAS_ROWS (M_ROW_CHAR) = true; +++ SLICE (M_ROW_CHAR) = M_CHAR; +++ /* [][] CHAR. */ +++ M_ROW_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_ROW_CHAR, NO_PACK); +++ HAS_ROWS (M_ROW_ROW_CHAR) = true; +++ SLICE (M_ROW_ROW_CHAR) = M_ROW_CHAR; +++ /* MODE STRING = FLEX [] CHAR. */ +++ m = a68_add_mode (&TOP_MOID (&A68_JOB), FLEX_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); +++ HAS_ROWS (m) = true; +++ M_FLEX_ROW_CHAR = m; +++ EQUIVALENT (M_STRING) = m; +++ /* REF [] CHAR. */ +++ M_REF_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); +++ NAME (M_REF_ROW_CHAR) = M_REF_CHAR; +++ /* PROC [] CHAR. */ +++ M_PROC_ROW_CHAR = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, 0, NO_NODE, M_ROW_CHAR, NO_PACK); +++ /* REF STRING = REF FLEX [] CHAR. */ +++ M_REF_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), REF_SYMBOL, 0, NO_NODE, EQUIVALENT (M_STRING), NO_PACK); +++ NAME (M_REF_STRING) = M_REF_CHAR; +++ DEFLEXED (M_REF_STRING) = M_REF_ROW_CHAR; +++ /* [] STRING. */ +++ M_ROW_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_STRING, NO_PACK); +++ HAS_ROWS (M_ROW_STRING) = true; +++ SLICE (M_ROW_STRING) = M_STRING; +++ DEFLEXED (M_ROW_STRING) = M_ROW_ROW_CHAR; +++ /* PROC STRING. */ +++ M_PROC_STRING = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, 0, NO_NODE, M_STRING, NO_PACK); +++ DEFLEXED (M_PROC_STRING) = M_PROC_ROW_CHAR; +++ /* COMPLEX. */ +++ PACK_T *z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); +++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); +++ EQUIVALENT (M_COMPLEX) = m; +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_REF_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_REF_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); +++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); +++ NAME (M_REF_COMPLEX) = m; +++ /* LONG COMPLEX. */ +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); +++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); +++ EQUIVALENT (M_LONG_COMPLEX) = m; +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); +++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); +++ NAME (M_REF_LONG_COMPLEX) = m; +++ /* LONG_LONG COMPLEX. */ +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); +++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); +++ EQUIVALENT (M_LONG_LONG_COMPLEX) = m; +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "im")), NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_REF_LONG_LONG_REAL, TEXT (a68_add_token (&A68 (top_token), "re")), NO_NODE); +++ m = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); +++ NAME (M_REF_LONG_LONG_COMPLEX) = m; +++ /* SEMA. */ +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_REF_INT, NO_TEXT, NO_NODE); +++ EQUIVALENT (M_SEMA) = a68_add_mode (&TOP_MOID (&A68_JOB), STRUCT_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); +++ /* PROC VOID. */ +++ z = NO_PACK; +++ M_PROC_VOID = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_VOID, z); +++ /* PROC (REAL) REAL. */ +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE); +++ M_PROC_REAL_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_REAL, z); +++ /* PROC (LONG_REAL) LONG_REAL. */ +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE); +++ M_PROC_LONG_REAL_LONG_REAL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_LONG_REAL, z); +++ /* IO: PROC (REF FILE) BOOL. */ +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_REF_FILE, NO_TEXT, NO_NODE); +++ M_PROC_REF_FILE_BOOL = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_BOOL, z); +++ /* IO: PROC (REF FILE) VOID. */ +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_REF_FILE, NO_TEXT, NO_NODE); +++ M_PROC_REF_FILE_VOID = a68_add_mode (&TOP_MOID (&A68_JOB), PROC_SYMBOL, a68_count_pack_members (z), NO_NODE, M_VOID, z); +++ /* IO: SIMPLIN and SIMPLOUT. */ +++ M_SIMPLIN = a68_add_mode (&TOP_MOID (&A68_JOB), IN_TYPE_MODE, 0, NO_NODE, NO_MOID, NO_PACK); +++ M_ROW_SIMPLIN = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_SIMPLIN, NO_PACK); +++ SLICE (M_ROW_SIMPLIN) = M_SIMPLIN; +++ M_SIMPLOUT = a68_add_mode (&TOP_MOID (&A68_JOB), OUT_TYPE_MODE, 0, NO_NODE, NO_MOID, NO_PACK); +++ M_ROW_SIMPLOUT = a68_add_mode (&TOP_MOID (&A68_JOB), ROW_SYMBOL, 1, NO_NODE, M_SIMPLOUT, NO_PACK); +++ SLICE (M_ROW_SIMPLOUT) = M_SIMPLOUT; +++} +++ +++/* Set up standenv - general RR but not transput. */ +++ +++static void +++stand_prelude (void) +++{ +++ /* Identifiers. */ +++ a68_idf (A68_STD, "intlengths", M_INT, a68_lower_intlengths); +++ a68_idf (A68_STD, "intshorths", M_INT, a68_lower_intshorths); +++ a68_idf (A68_STD, "maxint", M_INT, a68_lower_maxint); +++ a68_idf (A68_STD, "longmaxint", M_LONG_INT, a68_lower_maxint); +++ a68_idf (A68_STD, "longlongmaxint", M_LONG_LONG_INT, a68_lower_maxint); +++ a68_idf (A68_STD, "shortmaxint", M_SHORT_INT, a68_lower_maxint); +++ a68_idf (A68_STD, "shortshortmaxint", M_SHORT_SHORT_INT, a68_lower_maxint); +++ a68_idf (A68_STD, "maxreal", M_REAL, a68_lower_maxreal); +++ a68_idf (A68_STD, "longmaxreal", M_LONG_REAL, a68_lower_maxreal); +++ a68_idf (A68_STD, "longlongmaxreal", M_LONG_LONG_REAL, a68_lower_maxreal); +++ a68_idf (A68_STD, "smallreal", M_REAL, a68_lower_smallreal); +++ a68_idf (A68_STD, "longsmallreal", M_LONG_REAL, a68_lower_smallreal); +++ a68_idf (A68_STD, "longlongsmallreal", M_LONG_LONG_REAL, a68_lower_smallreal); +++ a68_idf (A68_STD, "reallengths", M_INT, a68_lower_reallengths); +++ a68_idf (A68_STD, "realshorths", M_INT, a68_lower_realshorths); +++ a68_idf (A68_STD, "bitslengths", M_INT, a68_lower_bitslengths); +++ a68_idf (A68_STD, "bitsshorths", M_INT, a68_lower_bitsshorths); +++ a68_idf (A68_STD, "bitswidth", M_INT, a68_lower_bitswidth); +++ a68_idf (A68_STD, "longbitswidth", M_INT, a68_lower_longbitswidth); +++ a68_idf (A68_STD, "longlongbitswidth", M_INT, a68_lower_longlongbitswidth); +++ a68_idf (A68_STD, "shortbitswidth", M_INT, a68_lower_shortbitswidth); +++ a68_idf (A68_STD, "shortshortbitswidth", M_INT, a68_lower_shortshortbitswidth); +++ a68_idf (A68_STD, "maxbits", M_BITS, a68_lower_maxbits); +++ a68_idf (A68_STD, "longmaxbits", M_LONG_BITS, a68_lower_maxbits); +++ a68_idf (A68_STD, "longlongmaxbits", M_LONG_LONG_BITS, a68_lower_maxbits); +++ a68_idf (A68_STD, "maxabschar", M_INT, a68_lower_maxabschar); +++ a68_idf (A68_STD, "intwidth", M_INT, a68_lower_intwidth); +++ a68_idf (A68_STD, "longintwidth", M_INT, a68_lower_longintwidth); +++ a68_idf (A68_STD, "longlongintwidth", M_INT, a68_lower_longlongintwidth); +++ a68_idf (A68_STD, "shortintwidth", M_INT, a68_lower_shortintwidth); +++ a68_idf (A68_STD, "shortshortintwidth", M_INT, a68_lower_shortshortintwidth); +++ a68_idf (A68_STD, "realwidth", M_INT, a68_lower_realwidth); +++ a68_idf (A68_STD, "longrealwidth", M_INT, a68_lower_longrealwidth); +++ a68_idf (A68_STD, "longlongrealwidth", M_INT, a68_lower_longlongrealwidth); +++ a68_idf (A68_STD, "expwidth", M_INT, a68_lower_expwidth); +++ a68_idf (A68_STD, "longexpwidth", M_INT, a68_lower_longexpwidth); +++ a68_idf (A68_STD, "longlongexpwidth", M_INT, a68_lower_longlongexpwidth); +++ a68_idf (A68_STD, "pi", M_REAL, a68_lower_pi); +++ a68_idf (A68_STD, "longpi", M_LONG_REAL, a68_lower_pi); +++ a68_idf (A68_STD, "longlongpi", M_LONG_LONG_REAL, a68_lower_pi); +++ a68_idf (A68_STD, "compllengths", M_INT); +++ a68_idf (A68_STD, "complshorths", M_INT); +++ a68_idf (A68_STD, "byteslengths", M_INT); +++ a68_idf (A68_STD, "bytesshorths", M_INT); +++ a68_idf (A68_STD, "byteswidth", M_INT); +++ a68_idf (A68_STD, "longbyteswidth", M_INT); +++ a68_idf (A68_STD, "flip", M_CHAR, a68_lower_flip); +++ a68_idf (A68_STD, "flop", M_CHAR, a68_lower_flop); +++ a68_idf (A68_STD, "errorchar", M_CHAR, a68_lower_errorchar); +++ a68_idf (A68_STD, "nullcharacter", M_CHAR, a68_lower_nullcharacter); +++ a68_idf (A68_STD, "blank", M_CHAR, a68_lower_blank); +++ /* BITS procedures. */ +++ MOID_T *m = a68_proc (M_BITS, M_ROW_BOOL, NO_MOID); +++ a68_idf (A68_STD, "bitspack", m); +++ /* SHORT BITS procedures. */ +++ m = a68_proc (M_SHORT_BITS, M_ROW_BOOL, NO_MOID); +++ a68_idf (A68_STD, "shortbitspack", m); +++ /* SHORT SHORT BITS procedures. */ +++ m = a68_proc (M_SHORT_SHORT_BITS, M_ROW_BOOL, NO_MOID); +++ a68_idf (A68_STD, "shortshortbitspack", m); +++ /* LONG BITS procedures. */ +++ m = a68_proc (M_LONG_BITS, M_ROW_BOOL, NO_MOID); +++ a68_idf (A68_STD, "longbitspack", m); +++ /* LONG LONG BITS procedures. */ +++ m = a68_proc (M_LONG_LONG_BITS, M_ROW_BOOL, NO_MOID); +++ a68_idf (A68_STD, "longlongbitspack", m); +++ /* RNG procedures. */ +++ m = a68_proc (M_VOID, M_INT, NO_MOID); +++ a68_idf (A68_STD, "firstrandom", m); +++ /* REAL procedures. */ +++ m = A68_MCACHE (proc_real); +++ a68_idf (A68_STD, "nextrandom", m); +++ a68_idf (A68_STD, "random", m, a68_lower_random); +++ a68_idf (A68_STD, "rnd", m); +++ m = A68_MCACHE (proc_real_real); +++ a68_idf (A68_STD, "arccos", m, a68_lower_acos); +++ a68_idf (A68_STD, "arcsin", m, a68_lower_asin); +++ a68_idf (A68_STD, "arctan", m, a68_lower_atan); +++ a68_idf (A68_STD, "cos", m, a68_lower_cos); +++ a68_idf (A68_STD, "exp", m, a68_lower_exp); +++ a68_idf (A68_STD, "ln", m, a68_lower_ln); +++ a68_idf (A68_STD, "sin", m, a68_lower_sin); +++ a68_idf (A68_STD, "sqrt", m, a68_lower_sqrt); +++ a68_idf (A68_STD, "tan", m, a68_lower_tan); +++ /* LONG REAL procedures. */ +++ m = a68_proc (M_LONG_REAL, NO_MOID); +++ a68_idf (A68_STD, "longnextrandom", m); +++ a68_idf (A68_STD, "longrandom", m, a68_lower_longrandom); +++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); +++ a68_idf (A68_STD, "longarccos", m, a68_lower_long_acos); +++ a68_idf (A68_STD, "longarcsin", m, a68_lower_long_asin); +++ a68_idf (A68_STD, "longarctan", m, a68_lower_long_atan); +++ a68_idf (A68_STD, "longcos", m, a68_lower_long_cos); +++ a68_idf (A68_STD, "longexp", m, a68_lower_long_exp); +++ a68_idf (A68_STD, "longln", m, a68_lower_long_ln); +++ a68_idf (A68_STD, "longsin", m, a68_lower_long_sin); +++ a68_idf (A68_STD, "longsqrt", m, a68_lower_long_sqrt); +++ a68_idf (A68_STD, "longtan", m, a68_lower_long_tan); +++ /* LONG LONG REAL procedures. */ +++ m = a68_proc (M_LONG_LONG_REAL, NO_MOID); +++ a68_idf (A68_STD, "longlongnextrandom", m); +++ a68_idf (A68_STD, "longlongrandom", m, a68_lower_longlongrandom); +++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); +++ a68_idf (A68_STD, "longlongarccos", m, a68_lower_long_long_acos); +++ a68_idf (A68_STD, "longlongarcsin", m, a68_lower_long_long_asin); +++ a68_idf (A68_STD, "longlongarctan", m, a68_lower_long_long_atan); +++ a68_idf (A68_STD, "longlongcos", m, a68_lower_long_long_cos); +++ a68_idf (A68_STD, "longlongexp", m, a68_lower_long_long_exp); +++ a68_idf (A68_STD, "longlongln", m, a68_lower_long_long_ln); +++ a68_idf (A68_STD, "longlongsin", m, a68_lower_long_long_sin); +++ a68_idf (A68_STD, "longlongsqrt", m, a68_lower_long_long_sqrt); +++ a68_idf (A68_STD, "longlongtan", m, a68_lower_long_long_tan); +++ /* Priorities. */ +++ a68_prio ("+:=", 1); +++ a68_prio ("-:=", 1); +++ a68_prio ("*:=", 1); +++ a68_prio ("/:=", 1); +++ a68_prio ("%:=", 1); +++ a68_prio ("%*:=", 1); +++ a68_prio ("+=:", 1); +++ a68_prio ("PLUSAB", 1); +++ a68_prio ("MINUSAB", 1); +++ a68_prio ("TIMESAB", 1); +++ a68_prio ("DIVAB", 1); +++ a68_prio ("OVERAB", 1); +++ a68_prio ("MODAB", 1); +++ a68_prio ("PLUSTO", 1); +++ a68_prio ("OR", 2); +++ a68_prio ("AND", 3); +++ a68_prio ("XOR", 3); +++ a68_prio ("=", 4); +++ a68_prio ("/=", 4); +++ a68_prio ("<", 5); +++ a68_prio ("<=", 5); +++ a68_prio (">", 5); +++ a68_prio (">=", 5); +++ a68_prio ("EQ", 4); +++ a68_prio ("NE", 4); +++ a68_prio ("LT", 5); +++ a68_prio ("LE", 5); +++ a68_prio ("GT", 5); +++ a68_prio ("GE", 5); +++ a68_prio ("+", 6); +++ a68_prio ("-", 6); +++ a68_prio ("*", 7); +++ a68_prio ("/", 7); +++ a68_prio ("OVER", 7); +++ a68_prio ("%", 7); +++ a68_prio ("MOD", 7); +++ a68_prio ("%*", 7); +++ a68_prio ("ELEM", 7); +++ a68_prio ("**", 8); +++ a68_prio ("SHL", 8); +++ a68_prio ("SHR", 8); +++ a68_prio ("UP", 8); +++ a68_prio ("DOWN", 8); +++ a68_prio ("^", 8); +++ a68_prio ("LWB", 8); +++ a68_prio ("UPB", 8); +++ a68_prio ("I", 9); +++ a68_prio ("+*", 9); +++ /* BOOL operators. */ +++ m = a68_proc (M_BOOL, M_BOOL, NO_MOID); +++ a68_op (A68_STD, "NOT", m, a68_lower_not2); +++ a68_op (A68_STD, "~", m, a68_lower_not2); +++ m = a68_proc (M_INT, M_BOOL, NO_MOID); +++ a68_op (A68_STD, "ABS", m, a68_lower_boolabs2); +++ m = a68_proc (M_BOOL, M_BOOL, M_BOOL, NO_MOID); +++ a68_op (A68_STD, "OR", m, a68_lower_or3); +++ a68_op (A68_STD, "AND", m, a68_lower_and3); +++ a68_op (A68_STD, "=", m, a68_lower_bool_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_bool_ne3); +++ a68_op (A68_STD, "EQ", m, a68_lower_bool_eq3); +++ a68_op (A68_STD, "NE", m, a68_lower_bool_ne3); +++ /* CHAR operators. */ +++ m = a68_proc (M_BOOL, M_CHAR, M_CHAR, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_char_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_char_ne3); +++ a68_op (A68_STD, "<", m, a68_lower_char_lt3); +++ a68_op (A68_STD, "<=", m, a68_lower_char_le3); +++ a68_op (A68_STD, ">", m, a68_lower_char_gt3); +++ a68_op (A68_STD, ">=", m, a68_lower_char_ge3); +++ a68_op (A68_STD, "EQ", m, a68_lower_char_eq3); +++ a68_op (A68_STD, "NE", m, a68_lower_char_ne3); +++ a68_op (A68_STD, "LT", m, a68_lower_char_lt3); +++ a68_op (A68_STD, "LE", m, a68_lower_char_le3); +++ a68_op (A68_STD, "GT", m, a68_lower_char_gt3); +++ a68_op (A68_STD, "GE", m, a68_lower_char_ge3); +++ m = a68_proc (M_INT, M_CHAR, NO_MOID); +++ a68_op (A68_STD, "ABS", m, a68_lower_charabs2); +++ m = a68_proc (M_CHAR, M_INT, NO_MOID); +++ a68_op (A68_STD, "REPR", m, a68_lower_repr2); +++ /* STRING operators. */ +++ m = a68_proc (M_BOOL, M_STRING, M_STRING, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_string_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_string_ne3); +++ a68_op (A68_STD, "<", m, a68_lower_string_lt3); +++ a68_op (A68_STD, "<=", m, a68_lower_string_le3); +++ a68_op (A68_STD, ">=", m, a68_lower_string_ge3); +++ a68_op (A68_STD, ">", m, a68_lower_string_gt3); +++ a68_op (A68_STD, "EQ", m, a68_lower_string_eq3); +++ a68_op (A68_STD, "NE", m, a68_lower_string_ne3); +++ a68_op (A68_STD, "LT", m, a68_lower_string_lt3); +++ a68_op (A68_STD, "LE", m, a68_lower_string_le3); +++ a68_op (A68_STD, "GE", m, a68_lower_string_ge3); +++ a68_op (A68_STD, "GT", m, a68_lower_string_gt3); +++ m = a68_proc (M_STRING, M_CHAR, M_CHAR, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_char_plus3); +++ m = a68_proc (M_STRING, M_STRING, M_STRING, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_string_plus3); +++ m = a68_proc (M_REF_STRING, M_REF_STRING, M_STRING, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_string_plusab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_string_plusab3); +++ m = a68_proc (M_REF_STRING, M_REF_STRING, M_INT, NO_MOID); +++ a68_op (A68_STD, "*:=", m, a68_lower_string_multab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_string_multab3); +++ m = a68_proc (M_REF_STRING, M_STRING, M_REF_STRING, NO_MOID); +++ a68_op (A68_STD, "+=:", m, a68_lower_string_plusto3); +++ a68_op (A68_STD, "PLUSTO", m, a68_lower_string_plusto3); +++ m = a68_proc (M_STRING, M_STRING, M_INT, NO_MOID); +++ a68_op (A68_STD, "*", m, a68_lower_string_mult3); +++ m = a68_proc (M_STRING, M_INT, M_STRING, NO_MOID); +++ a68_op (A68_STD, "*", m, a68_lower_string_mult3); +++ m = a68_proc (M_STRING, M_INT, M_CHAR, NO_MOID); +++ a68_op (A68_STD, "*", m, a68_lower_char_mult3); +++ m = a68_proc (M_STRING, M_CHAR, M_INT, NO_MOID); +++ a68_op (A68_STD, "*", m, a68_lower_char_mult3); +++ /* SHORT SHORT INT operators. */ +++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_confirm2); +++ a68_op (A68_STD, "-", m, a68_lower_negate2); +++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); +++ m = a68_proc (M_INT, M_SHORT_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); +++ m = a68_proc (M_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); +++ m = a68_proc (M_BOOL, M_SHORT_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); +++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_plus_int); +++ a68_op (A68_STD, "-", m, a68_lower_minus_int); +++ a68_op (A68_STD, "*", m, a68_lower_mult_int); +++ a68_op (A68_STD, "OVER", m, a68_lower_over3); +++ a68_op (A68_STD, "%", m, a68_lower_over3); +++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); +++ a68_op (A68_STD, "%*", m, a68_lower_mod3); +++ m = a68_proc (M_REF_SHORT_SHORT_INT, M_REF_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); +++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); +++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); +++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); +++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); +++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); +++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); +++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); +++ m = a68_proc (M_BOOL, M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); +++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); +++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); +++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); +++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); +++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); +++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); +++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); +++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); +++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); +++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m, a68_lower_pow_int); +++ a68_op (A68_STD, "^", m, a68_lower_pow_int); +++ /* SHORT INT operators. */ +++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_confirm2); +++ a68_op (A68_STD, "-", m, a68_lower_negate2); +++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); +++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); +++ m = a68_proc (M_INT, M_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); +++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); +++ m = a68_proc (M_BOOL, M_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); +++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, M_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_plus_int); +++ a68_op (A68_STD, "-", m, a68_lower_minus_int); +++ a68_op (A68_STD, "*", m, a68_lower_mult_int); +++ a68_op (A68_STD, "OVER", m, a68_lower_over3); +++ a68_op (A68_STD, "%", m, a68_lower_over3); +++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); +++ a68_op (A68_STD, "%*", m, a68_lower_mod3); +++ m = a68_proc (M_REF_SHORT_INT, M_REF_SHORT_INT, M_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); +++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); +++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); +++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); +++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); +++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); +++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); +++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); +++ m = a68_proc (M_BOOL, M_SHORT_INT, M_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); +++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); +++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); +++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); +++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); +++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); +++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); +++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); +++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); +++ m = a68_proc (M_SHORT_INT, M_SHORT_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m, a68_lower_pow_int); +++ a68_op (A68_STD, "^", m, a68_lower_pow_int); +++ /* INT operators. */ +++ m = a68_proc (M_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_confirm2); +++ a68_op (A68_STD, "-", m, a68_lower_negate2); +++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); +++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); +++ m = a68_proc (M_SHORT_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); +++ m = a68_proc (M_LONG_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); +++ m = a68_proc (M_BOOL, M_INT, NO_MOID); +++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); +++ m = a68_proc (M_BOOL, M_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); +++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); +++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); +++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); +++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); +++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); +++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); +++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); +++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); +++ m = a68_proc (M_INT, M_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_plus_int); +++ a68_op (A68_STD, "-", m, a68_lower_minus_int); +++ a68_op (A68_STD, "*", m, a68_lower_mult_int); +++ a68_op (A68_STD, "OVER", m, a68_lower_over3); +++ a68_op (A68_STD, "%", m, a68_lower_over3); +++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); +++ a68_op (A68_STD, "%*", m, a68_lower_mod3); +++ a68_op (A68_STD, "**", m, a68_lower_pow_int); +++ a68_op (A68_STD, "^", m, a68_lower_pow_int); +++ m = a68_proc (M_REAL, M_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); +++ m = a68_proc (M_REF_INT, M_REF_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); +++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); +++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); +++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); +++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); +++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); +++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); +++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); +++ /* LONG INT operators */ +++ m = a68_proc (M_LONG_INT, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_confirm2); +++ a68_op (A68_STD, "-", m, a68_lower_negate2); +++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); +++ m = a68_proc (M_INT, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); +++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); +++ m = a68_proc (M_LONG_LONG_INT, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_lengint2); +++ m = a68_proc (M_BOOL, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); +++ m = a68_proc (M_LONG_INT, M_LONG_INT, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_plus_int); +++ a68_op (A68_STD, "-", m, a68_lower_minus_int); +++ a68_op (A68_STD, "*", m, a68_lower_mult_int); +++ a68_op (A68_STD, "OVER", m, a68_lower_over3); +++ a68_op (A68_STD, "%", m, a68_lower_over3); +++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); +++ a68_op (A68_STD, "%*", m, a68_lower_mod3); +++ m = a68_proc (M_REF_LONG_INT, M_REF_LONG_INT, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); +++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); +++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); +++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); +++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); +++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); +++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); +++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); +++ m = a68_proc (M_BOOL, M_LONG_INT, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); +++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); +++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); +++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); +++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); +++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); +++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); +++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); +++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); +++ m = a68_proc (M_LONG_REAL, M_LONG_INT, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); +++ m = a68_proc (M_LONG_INT, M_LONG_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m, a68_lower_pow_int); +++ a68_op (A68_STD, "^", m, a68_lower_pow_int); +++ /* LONG LONG INT operators. */ +++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_confirm2); +++ a68_op (A68_STD, "-", m, a68_lower_negate2); +++ a68_op (A68_STD, "ABS", m, a68_lower_intabs2); +++ m = a68_proc (M_INT, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "SIGN", m, a68_lower_sign2); +++ m = a68_proc (M_LONG_INT, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenint2); +++ m = a68_proc (M_BOOL, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "ODD", m, a68_lower_odd2); +++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_plus_int); +++ a68_op (A68_STD, "-", m, a68_lower_minus_int); +++ a68_op (A68_STD, "*", m, a68_lower_mult_int); +++ a68_op (A68_STD, "OVER", m, a68_lower_over3); +++ a68_op (A68_STD, "%", m, a68_lower_over3); +++ a68_op (A68_STD, "MOD", m, a68_lower_mod3); +++ a68_op (A68_STD, "%*", m, a68_lower_mod3); +++ m = a68_proc (M_REF_LONG_LONG_INT, M_REF_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); +++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); +++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); +++ a68_op (A68_STD, "%:=", m, a68_lower_overab3); +++ a68_op (A68_STD, "%*:=", m, a68_lower_modab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); +++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); +++ a68_op (A68_STD, "OVERAB", m, a68_lower_overab3); +++ a68_op (A68_STD, "MODAB", m, a68_lower_modab3); +++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "/", m, a68_lower_rdiv3); +++ m = a68_proc (M_BOOL, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "EQ", m, a68_lower_int_eq3); +++ a68_op (A68_STD, "NE", m, a68_lower_int_ne3); +++ a68_op (A68_STD, "GE", m, a68_lower_int_ge3); +++ a68_op (A68_STD, "GT", m, a68_lower_int_gt3); +++ a68_op (A68_STD, "LE", m, a68_lower_int_le3); +++ a68_op (A68_STD, "LT", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "=", m, a68_lower_int_eq3); +++ a68_op (A68_STD, ">=", m, a68_lower_int_ge3); +++ a68_op (A68_STD, ">", m, a68_lower_int_gt3); +++ a68_op (A68_STD, "<=", m, a68_lower_int_le3); +++ a68_op (A68_STD, "<", m, a68_lower_int_lt3); +++ a68_op (A68_STD, "/=", m, a68_lower_int_ne3); +++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m, a68_lower_pow_int); +++ a68_op (A68_STD, "^", m, a68_lower_pow_int); +++ /* SHORT SHORT BITS operators */ +++ m = a68_proc (M_BOOL, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); +++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); +++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); +++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); +++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); +++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); +++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); +++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); +++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_INT, NO_MOID); +++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); +++ a68_op (A68_STD, "UP", m, a68_lower_shl3); +++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); +++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); +++ m = a68_proc (M_BOOL, M_INT, M_SHORT_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); +++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); +++ m = a68_proc (M_SHORT_SHORT_INT, M_SHORT_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); +++ m = a68_proc (M_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); +++ /* SHORT BITS operatos. */ +++ m = a68_proc (M_SHORT_INT, M_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); +++ m = a68_proc (M_SHORT_BITS, M_SHORT_INT, NO_MOID); +++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); +++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); +++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); +++ m = a68_proc (M_BOOL, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); +++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); +++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); +++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); +++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); +++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); +++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_INT, NO_MOID); +++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); +++ a68_op (A68_STD, "UP", m, a68_lower_shl3); +++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); +++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); +++ m = a68_proc (M_BOOL, M_INT, M_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); +++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); +++ m = a68_proc (M_BITS, M_SHORT_BITS, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); +++ /* BITS operators. */ +++ m = a68_proc (M_INT, M_BITS, NO_MOID); +++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); +++ m = a68_proc (M_BITS, M_INT, NO_MOID); +++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); +++ m = a68_proc (M_BITS, M_BITS, NO_MOID); +++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); +++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); +++ m = a68_proc (M_BOOL, M_BITS, M_BITS, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); +++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); +++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); +++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); +++ m = a68_proc (M_BITS, M_BITS, M_BITS, NO_MOID); +++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); +++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); +++ m = a68_proc (M_BITS, M_BITS, M_INT, NO_MOID); +++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); +++ a68_op (A68_STD, "UP", m, a68_lower_shl3); +++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); +++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); +++ m = a68_proc (M_BOOL, M_INT, M_BITS, NO_MOID); +++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); +++ m = a68_proc (M_LONG_BITS, M_BITS, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); +++ m = a68_proc (M_SHORT_BITS, M_BITS, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); +++ /* LONG BITS operatos. */ +++ m = a68_proc (M_LONG_INT, M_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); +++ m = a68_proc (M_LONG_BITS, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); +++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); +++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); +++ m = a68_proc (M_BOOL, M_LONG_BITS, M_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); +++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); +++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); +++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); +++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); +++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); +++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_INT, NO_MOID); +++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); +++ a68_op (A68_STD, "UP", m, a68_lower_shl3); +++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); +++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); +++ m = a68_proc (M_BOOL, M_INT, M_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); +++ m = a68_proc (M_BITS, M_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); +++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_bitleng2); +++ /* LONG LONG BITS operators */ +++ m = a68_proc (M_BOOL, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "EQ", m, a68_lower_bit_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "NE", m, a68_lower_bit_ne3); +++ a68_op (A68_STD, "<=", m, a68_lower_bit_le3); +++ a68_op (A68_STD, "LE", m, a68_lower_bit_le3); +++ a68_op (A68_STD, ">=", m, a68_lower_bit_ge3); +++ a68_op (A68_STD, "GE", m, a68_lower_bit_ge3); +++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "NOT", m, a68_lower_bitnot2); +++ a68_op (A68_STD, "~", m, a68_lower_bitnot2); +++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "AND", m, a68_lower_bitand3); +++ a68_op (A68_STD, "OR", m, a68_lower_bitior3); +++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_INT, NO_MOID); +++ a68_op (A68_STD, "SHL", m, a68_lower_shl3); +++ a68_op (A68_STD, "UP", m, a68_lower_shl3); +++ a68_op (A68_STD, "SHR", m, a68_lower_shr3); +++ a68_op (A68_STD, "DOWN", m, a68_lower_shr3); +++ m = a68_proc (M_BOOL, M_INT, M_LONG_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "ELEM", m, a68_lower_bitelem3); +++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "BIN", m, a68_lower_bin2); +++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "ABS", m, a68_lower_bitabs2); +++ m = a68_proc (M_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_bitshorten2); +++ /* REAL operators. */ +++ m = A68_MCACHE (proc_real_real); +++ a68_op (A68_STD, "+", m, a68_lower_confirm2); +++ a68_op (A68_STD, "-", m, a68_lower_negate2); +++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); +++ m = a68_proc (M_INT, M_REAL, NO_MOID); +++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); +++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); +++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); +++ m = a68_proc (M_BOOL, M_REAL, M_REAL, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); +++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); +++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); +++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); +++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); +++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); +++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); +++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); +++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); +++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); +++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); +++ m = A68_MCACHE (proc_real_real_real); +++ a68_op (A68_STD, "+", m, a68_lower_plus_real); +++ a68_op (A68_STD, "-", m, a68_lower_minus_real); +++ a68_op (A68_STD, "*", m, a68_lower_mult_real); +++ a68_op (A68_STD, "/", m, a68_lower_div3); +++ a68_op (A68_STD, "**", m, a68_lower_pow_real); +++ a68_op (A68_STD, "^", m, a68_lower_pow_real); +++ m = a68_proc (M_REAL, M_REAL, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m, a68_lower_pow_real); +++ a68_op (A68_STD, "^", m, a68_lower_pow_real); +++ m = a68_proc (M_REF_REAL, M_REF_REAL, M_REAL, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); +++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); +++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); +++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); +++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); +++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); +++ m = a68_proc (M_LONG_REAL, M_REAL, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_lengreal2); +++ /* LONG REAL operators */ +++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "LENG", m, a68_lower_lengreal2); +++ m = a68_proc (M_REAL, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenreal2); +++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_confirm2); +++ a68_op (A68_STD, "-", m, a68_lower_negate2); +++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); +++ m = a68_proc (M_INT, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); +++ m = a68_proc (M_LONG_INT, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); +++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); +++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_plus_real); +++ a68_op (A68_STD, "-", m, a68_lower_minus_real); +++ a68_op (A68_STD, "*", m, a68_lower_mult_real); +++ a68_op (A68_STD, "/", m, a68_lower_div3); +++ a68_op (A68_STD, "**", m, a68_lower_pow_real); +++ a68_op (A68_STD, "^", m, a68_lower_pow_real); +++ m = a68_proc (M_REF_LONG_REAL, M_REF_LONG_REAL, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); +++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); +++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); +++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); +++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); +++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); +++ m = a68_proc (M_BOOL, M_LONG_REAL, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); +++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); +++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); +++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); +++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); +++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); +++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); +++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); +++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); +++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); +++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); +++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m, a68_lower_pow_real); +++ a68_op (A68_STD, "^", m, a68_lower_pow_real); +++ /* LONG LONG REAL operators. */ +++ m = a68_proc (M_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m, a68_lower_shortenreal2); +++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "ABS", m, a68_lower_realabs2); +++ a68_op (A68_STD, "+", m, a68_lower_confirm2); +++ a68_op (A68_STD, "-", m, a68_lower_negate2); +++ m = a68_proc (M_INT, M_LONG_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "SIGN", m, a68_lower_realsign2); +++ m = a68_proc (M_LONG_LONG_INT, M_LONG_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "ENTIER", m, a68_lower_entier2); +++ a68_op (A68_STD, "ROUND", m, a68_lower_round2); +++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "+", m, a68_lower_plus_real); +++ a68_op (A68_STD, "-", m, a68_lower_minus_real); +++ a68_op (A68_STD, "*", m, a68_lower_mult_real); +++ a68_op (A68_STD, "/", m, a68_lower_div3); +++ a68_op (A68_STD, "**", m, a68_lower_pow_real); +++ a68_op (A68_STD, "^", m, a68_lower_pow_real); +++ m = a68_proc (M_REF_LONG_LONG_REAL, M_REF_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "+:=", m, a68_lower_plusab3); +++ a68_op (A68_STD, "-:=", m, a68_lower_minusab3); +++ a68_op (A68_STD, "*:=", m, a68_lower_multab3); +++ a68_op (A68_STD, "/:=", m, a68_lower_divab3); +++ a68_op (A68_STD, "PLUSAB", m, a68_lower_plusab3); +++ a68_op (A68_STD, "MINUSAB", m, a68_lower_minusab3); +++ a68_op (A68_STD, "TIMESAB", m, a68_lower_multab3); +++ a68_op (A68_STD, "DIVAB", m, a68_lower_divab3); +++ m = a68_proc (M_BOOL, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "=", m, a68_lower_real_eq3); +++ a68_op (A68_STD, "EQ", m, a68_lower_real_eq3); +++ a68_op (A68_STD, "/=", m, a68_lower_real_ne3); +++ a68_op (A68_STD, "NE", m, a68_lower_real_ne3); +++ a68_op (A68_STD, "<", m, a68_lower_real_lt3); +++ a68_op (A68_STD, "LT", m, a68_lower_real_lt3); +++ a68_op (A68_STD, "<=", m, a68_lower_real_le3); +++ a68_op (A68_STD, "LE", m, a68_lower_real_le3); +++ a68_op (A68_STD, ">", m, a68_lower_real_gt3); +++ a68_op (A68_STD, "GT", m, a68_lower_real_gt3); +++ a68_op (A68_STD, ">=", m, a68_lower_real_ge3); +++ a68_op (A68_STD, "GE", m, a68_lower_real_ge3); +++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m, a68_lower_pow_real); +++ a68_op (A68_STD, "^", m, a68_lower_pow_real); +++ /* ROWS operators. */ +++ m = a68_proc (M_INT, M_ROWS, NO_MOID); +++ a68_op (A68_STD, "LWB", m, a68_lower_lwb2); +++ a68_op (A68_STD, "UPB", m, a68_lower_upb2); +++ m = a68_proc (M_INT, M_INT, M_ROWS, NO_MOID); +++ a68_op (A68_STD, "LWB", m, a68_lower_lwb3); +++ a68_op (A68_STD, "UPB", m, a68_lower_upb3); +++ /* BYTES operators. */ +++ m = a68_proc (M_BYTES, M_STRING, NO_MOID); +++ a68_idf (A68_STD, "bytespack", m); +++ m = a68_proc (M_CHAR, M_INT, M_BYTES, NO_MOID); +++ a68_op (A68_STD, "ELEM", m); +++ m = a68_proc (M_BYTES, M_BYTES, M_BYTES, NO_MOID); +++ a68_op (A68_STD, "+", m); +++ m = a68_proc (M_REF_BYTES, M_REF_BYTES, M_BYTES, NO_MOID); +++ a68_op (A68_STD, "+:=", m); +++ a68_op (A68_STD, "PLUSAB", m); +++ m = a68_proc (M_BOOL, M_BYTES, M_BYTES, NO_MOID); +++ a68_op (A68_STD, "=", m); +++ a68_op (A68_STD, "/=", m); +++ a68_op (A68_STD, "<", m); +++ a68_op (A68_STD, "<=", m); +++ a68_op (A68_STD, ">", m); +++ a68_op (A68_STD, ">=", m); +++ a68_op (A68_STD, "EQ", m); +++ a68_op (A68_STD, "NE", m); +++ a68_op (A68_STD, "LT", m); +++ a68_op (A68_STD, "LE", m); +++ a68_op (A68_STD, "GT", m); +++ a68_op (A68_STD, "GE", m); +++ /* LONG BYTES operators. */ +++ m = a68_proc (M_LONG_BYTES, M_BYTES, NO_MOID); +++ a68_op (A68_STD, "LENG", m); +++ m = a68_proc (M_BYTES, M_LONG_BYTES, NO_MOID); +++ a68_idf (A68_STD, "SHORTEN", m); +++ m = a68_proc (M_LONG_BYTES, M_STRING, NO_MOID); +++ a68_idf (A68_STD, "longbytespack", m); +++ m = a68_proc (M_CHAR, M_INT, M_LONG_BYTES, NO_MOID); +++ a68_op (A68_STD, "ELEM", m); +++ m = a68_proc (M_LONG_BYTES, M_LONG_BYTES, M_LONG_BYTES, NO_MOID); +++ a68_op (A68_STD, "+", m); +++ m = a68_proc (M_REF_LONG_BYTES, M_REF_LONG_BYTES, M_LONG_BYTES, NO_MOID); +++ a68_op (A68_STD, "+:=", m); +++ a68_op (A68_STD, "PLUSAB", m); +++ m = a68_proc (M_BOOL, M_LONG_BYTES, M_LONG_BYTES, NO_MOID); +++ a68_op (A68_STD, "=", m); +++ a68_op (A68_STD, "/=", m); +++ a68_op (A68_STD, "<", m); +++ a68_op (A68_STD, "<=", m); +++ a68_op (A68_STD, ">", m); +++ a68_op (A68_STD, ">=", m); +++ a68_op (A68_STD, "EQ", m); +++ a68_op (A68_STD, "NE", m); +++ a68_op (A68_STD, "LT", m); +++ a68_op (A68_STD, "LE", m); +++ a68_op (A68_STD, "GT", m); +++ a68_op (A68_STD, "GE", m); +++ /* COMPLEX operators. */ +++ m = a68_proc (M_COMPLEX, M_REAL, M_REAL, NO_MOID); +++ a68_op (A68_STD, "I", m, a68_lower_reali); +++ a68_op (A68_STD, "+*", m, a68_lower_reali); +++ m = a68_proc (M_COMPLEX, M_INT, M_INT, NO_MOID); +++ a68_op (A68_STD, "I", m, a68_lower_inti); +++ a68_op (A68_STD, "+*", m, a68_lower_inti); +++ m = a68_proc (M_REAL, M_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "RE", m, a68_lower_re2); +++ a68_op (A68_STD, "IM", m, a68_lower_im2); +++ a68_op (A68_STD, "ABS", m); +++ a68_op (A68_STD, "ARG", m); +++ m = A68_MCACHE (proc_complex_complex); +++ a68_op (A68_STD, "+", m); +++ a68_op (A68_STD, "-", m); +++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); +++ m = a68_proc (M_BOOL, M_COMPLEX, M_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "=", m); +++ a68_op (A68_STD, "/=", m); +++ a68_op (A68_STD, "EQ", m); +++ a68_op (A68_STD, "NE", m); +++ m = a68_proc (M_COMPLEX, M_COMPLEX, M_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "+", m); +++ a68_op (A68_STD, "-", m); +++ a68_op (A68_STD, "*", m); +++ a68_op (A68_STD, "/", m); +++ m = a68_proc (M_COMPLEX, M_COMPLEX, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m); +++ a68_op (A68_STD, "UP", m); +++ a68_op (A68_STD, "^", m); +++ m = a68_proc (M_REF_COMPLEX, M_REF_COMPLEX, M_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "+:=", m); +++ a68_op (A68_STD, "-:=", m); +++ a68_op (A68_STD, "*:=", m); +++ a68_op (A68_STD, "/:=", m); +++ a68_op (A68_STD, "PLUSAB", m); +++ a68_op (A68_STD, "MINUSAB", m); +++ a68_op (A68_STD, "TIMESAB", m); +++ a68_op (A68_STD, "DIVAB", m); +++ m = a68_proc (M_COMPLEX, M_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m); +++ /* LONG COMPLEX operators */ +++ m = a68_proc (M_LONG_COMPLEX, M_LONG_INT, M_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "I", m, a68_lower_longinti); +++ a68_op (A68_STD, "+*", m, a68_lower_longinti); +++ m = a68_proc (M_LONG_COMPLEX, M_LONG_REAL, M_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "I", m, a68_lower_longreali); +++ a68_op (A68_STD, "+*", m, a68_lower_longreali); +++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "LENG", m); +++ m = a68_proc (M_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m); +++ m = a68_proc (M_LONG_COMPLEX, M_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "LENG", m); +++ m = a68_proc (M_COMPLEX, M_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "SHORTEN", m); +++ m = a68_proc (M_LONG_REAL, M_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "RE", m, a68_lower_re2); +++ a68_op (A68_STD, "IM", m, a68_lower_im2); +++ a68_op (A68_STD, "ARG", m); +++ a68_op (A68_STD, "ABS", m); +++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "+", m); +++ a68_op (A68_STD, "-", m); +++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); +++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "+", m); +++ a68_op (A68_STD, "-", m); +++ a68_op (A68_STD, "*", m); +++ a68_op (A68_STD, "/", m); +++ m = a68_proc (M_LONG_COMPLEX, M_LONG_COMPLEX, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m); +++ a68_op (A68_STD, "UP", m); +++ a68_op (A68_STD, "^", m); +++ m = a68_proc (M_BOOL, M_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "=", m); +++ a68_op (A68_STD, "EQ", m); +++ a68_op (A68_STD, "/=", m); +++ a68_op (A68_STD, "NE", m); +++ m = a68_proc (M_REF_LONG_COMPLEX, M_REF_LONG_COMPLEX, M_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "+:=", m); +++ a68_op (A68_STD, "-:=", m); +++ a68_op (A68_STD, "*:=", m); +++ a68_op (A68_STD, "/:=", m); +++ a68_op (A68_STD, "PLUSAB", m); +++ a68_op (A68_STD, "MINUSAB", m); +++ a68_op (A68_STD, "TIMESAB", m); +++ a68_op (A68_STD, "DIVAB", m); +++ /* LONG LONG COMPLEX operators. */ +++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_INT, M_LONG_LONG_INT, NO_MOID); +++ a68_op (A68_STD, "I", m, a68_lower_longlonginti); +++ a68_op (A68_STD, "+*", m, a68_lower_longlonginti); +++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); +++ a68_op (A68_STD, "I", m, a68_lower_longlongreali); +++ a68_op (A68_STD, "+*", m, a68_lower_longlongreali); +++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "RE", m, a68_lower_re2); +++ a68_op (A68_STD, "IM", m, a68_lower_im2); +++ a68_op (A68_STD, "ARG", m); +++ a68_op (A68_STD, "ABS", m); +++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "+", m); +++ a68_op (A68_STD, "-", m); +++ a68_op (A68_STD, "CONJ", m, a68_lower_conj2); +++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "+", m); +++ a68_op (A68_STD, "-", m); +++ a68_op (A68_STD, "*", m); +++ a68_op (A68_STD, "/", m); +++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, M_INT, NO_MOID); +++ a68_op (A68_STD, "**", m); +++ a68_op (A68_STD, "UP", m); +++ a68_op (A68_STD, "^", m); +++ m = a68_proc (M_BOOL, M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "=", m); +++ a68_op (A68_STD, "EQ", m); +++ a68_op (A68_STD, "/=", m); +++ a68_op (A68_STD, "NE", m); +++ m = a68_proc (M_REF_LONG_LONG_COMPLEX, M_REF_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "+:=", m); +++ a68_op (A68_STD, "-:=", m); +++ a68_op (A68_STD, "*:=", m); +++ a68_op (A68_STD, "/:=", m); +++ a68_op (A68_STD, "PLUSAB", m); +++ a68_op (A68_STD, "MINUSAB", m); +++ a68_op (A68_STD, "TIMESAB", m); +++ a68_op (A68_STD, "DIVAB", m); +++ m = a68_proc (M_LONG_LONG_COMPLEX, M_LONG_LONG_COMPLEX, NO_MOID); +++ a68_op (A68_STD, "LENG", m); +++ /* SEMA operators. */ +++ m = a68_proc (M_SEMA, M_INT, NO_MOID); +++ a68_op (A68_STD, "LEVEL", m); +++ m = a68_proc (M_INT, M_SEMA, NO_MOID); +++ a68_op (A68_STD, "LEVEL", m); +++ m = a68_proc (M_VOID, M_SEMA, NO_MOID); +++ a68_op (A68_STD, "UP", m); +++ a68_op (A68_STD, "DOWN", m); +++} +++ +++/* GNU extensions for the standenv. */ +++ +++static void +++gnu_prelude (void) +++{ +++ MOID_T *m = NO_MOID; +++ /* Priorities. */ +++ a68_prio ("ELEMS", 8); +++ /* Identifiers. */ +++ a68_idf (A68_EXT, "infinity", M_REAL, a68_lower_infinity); +++ a68_idf (A68_EXT, "minusinfinity", M_REAL, a68_lower_minusinfinity); +++ a68_idf (A68_EXT, "longlonginfinity", M_LONG_LONG_REAL); +++ a68_idf (A68_EXT, "longlongminusinfinity", M_LONG_LONG_REAL); +++ a68_idf (A68_EXT, "longinfinity", M_LONG_REAL); +++ a68_idf (A68_EXT, "longminusinfinity", M_LONG_REAL); +++ a68_idf (A68_EXT, "minint", M_INT, a68_lower_minint); +++ a68_idf (A68_EXT, "longminint", M_LONG_INT, a68_lower_minint); +++ a68_idf (A68_EXT, "longlongminint", M_LONG_LONG_INT, a68_lower_minint); +++ a68_idf (A68_EXT, "shortminint", M_SHORT_INT, a68_lower_minint); +++ a68_idf (A68_EXT, "shortshortminint", M_SHORT_SHORT_INT, a68_lower_minint); +++ a68_idf (A68_EXT, "minreal", M_REAL, a68_lower_minreal); +++ a68_idf (A68_EXT, "longminreal", M_LONG_REAL, a68_lower_minreal); +++ a68_idf (A68_EXT, "longlongminreal", M_LONG_LONG_REAL, a68_lower_minreal); +++ a68_idf (A68_EXT, "eofchar", M_CHAR, a68_lower_eofchar); +++ a68_idf (A68_EXT, "replacementchar", M_CHAR, a68_lower_replacementchar); +++ /* REAL procedures. */ +++ m = A68_MCACHE (proc_real_real); +++ a68_idf (A68_EXT, "log", m, a68_lower_log); +++ /* LONG REAL procedures. */ +++ m = a68_proc (M_LONG_REAL, M_LONG_REAL, NO_MOID); +++ a68_idf (A68_EXT, "longlog", m, a68_lower_long_log); +++ /* LONG LONG REAL procedures. */ +++ m = a68_proc (M_LONG_LONG_REAL, M_LONG_LONG_REAL, NO_MOID); +++ a68_idf (A68_EXT, "longlonglog", m, a68_lower_long_long_log); +++ /* BOOL operators. */ +++ m = a68_proc (M_BOOL, M_BOOL, M_BOOL, NO_MOID); +++ a68_op (A68_EXT, "XOR", m, a68_lower_xor3); +++ /* SHORT SHORT BITS operators. */ +++ m = a68_proc (M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, M_SHORT_SHORT_BITS, NO_MOID); +++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); +++ /* SHORT BITS operators. */ +++ m = a68_proc (M_SHORT_BITS, M_SHORT_BITS, M_SHORT_BITS, NO_MOID); +++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); +++ /* BITS operators. */ +++ m = a68_proc (M_BITS, M_BITS, M_BITS, NO_MOID); +++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); +++ /* LONG BITS operators. */ +++ m = a68_proc (M_LONG_BITS, M_LONG_BITS, M_LONG_BITS, NO_MOID); +++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); +++ /* LONG LONG BITS operators. */ +++ m = a68_proc (M_LONG_LONG_BITS, M_LONG_LONG_BITS, M_LONG_LONG_BITS, NO_MOID); +++ a68_op (A68_EXT, "XOR", m, a68_lower_bitxor3); +++ /* ROWS operators. */ +++ m = a68_proc (M_INT, M_ROWS, NO_MOID); +++ a68_op (A68_EXT, "ELEMS", m, a68_lower_elems2); +++ m = a68_proc (M_INT, M_INT, M_ROWS, NO_MOID); +++ a68_op (A68_EXT, "ELEMS", m, a68_lower_elems3); +++} +++ +++/* POSIX prelude. */ +++ +++static void +++posix_prelude (void) +++{ +++ MOID_T *m = NO_MOID; +++ +++ /* Environment variables. */ +++ m = a68_proc (M_STRING, M_STRING, NO_MOID); +++ a68_idf (A68_EXT, "getenv", m, a68_lower_posixgetenv); +++ /* Exit status handling. */ +++ m = a68_proc (M_VOID, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "setexitstatus", m, a68_lower_setexitstatus); +++ /* Argument handling. */ +++ m = A68_MCACHE (proc_int); +++ a68_idf (A68_EXT, "argc", m, a68_lower_posixargc); +++ m = a68_proc (M_STRING, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "argv", m, a68_lower_posixargv); +++ /* Error procedures. */ +++ m = A68_MCACHE (proc_int); +++ a68_idf (A68_EXT, "errno", m, a68_lower_posixerrno); +++ m = a68_proc (M_VOID, M_STRING, NO_MOID); +++ a68_idf (A68_EXT, "perror", m, a68_lower_posixperror); +++ m = a68_proc (M_STRING, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "strerror", m, a68_lower_posixstrerror); +++ /* I/O identifiers. */ +++ a68_idf (A68_EXT, "stdin", M_INT, a68_lower_posixstdinfiledes); +++ a68_idf (A68_EXT, "stdout", M_INT, a68_lower_posixstdoutfiledes); +++ a68_idf (A68_EXT, "stderr", M_INT, a68_lower_posixstderrfiledes); +++ a68_idf (A68_EXT, "fileodefault", M_BITS, a68_lower_posixfileodefault); +++ a68_idf (A68_EXT, "fileordwr", M_BITS, a68_lower_posixfileordwr); +++ a68_idf (A68_EXT, "fileordonly", M_BITS, a68_lower_posixfileordonly); +++ a68_idf (A68_EXT, "fileowronly", M_BITS, a68_lower_posixfileowronly); +++ a68_idf (A68_EXT, "fileotrunc", M_BITS, a68_lower_posixfileotrunc); +++ /* Opening and closing files. */ +++ m = a68_proc (M_INT, M_STRING, M_BITS, NO_MOID); +++ a68_idf (A68_EXT, "fopen", m, a68_lower_posixfopen); +++ a68_idf (A68_EXT, "fcreate", m, a68_lower_posixfcreate); +++ m = A68_MCACHE (proc_int_int); +++ a68_idf (A68_EXT, "fclose", m, a68_lower_posixfclose); +++ /* Getting properties of files. */ +++ m = a68_proc (M_LONG_LONG_INT, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "fsize", m, a68_lower_posixfsize); +++ m = a68_proc (M_LONG_LONG_INT, M_INT, M_LONG_LONG_INT, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "lseek", m, a68_lower_posixlseek); +++ a68_idf (A68_EXT, "seekcur", M_INT, a68_lower_posixseekcur); +++ a68_idf (A68_EXT, "seekend", M_INT, a68_lower_posixseekend); +++ a68_idf (A68_EXT, "seekset", M_INT, a68_lower_posixseekset); +++ /* Sockets. */ +++ m = a68_proc (M_INT, M_STRING, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "fconnect", m, a68_lower_posixfconnect); +++ /* String and character output. */ +++ m = a68_proc (M_CHAR, M_CHAR, NO_MOID); +++ a68_idf (A68_EXT, "putchar", m, a68_lower_posixputchar); +++ m = a68_proc (M_VOID, M_STRING, NO_MOID); +++ a68_idf (A68_EXT, "puts", m, a68_lower_posixputs); +++ m = a68_proc (M_CHAR, M_INT, M_CHAR, NO_MOID); +++ a68_idf (A68_EXT, "fputc", m, a68_lower_posixfputc); +++ m = a68_proc (M_INT, M_INT, M_STRING, NO_MOID); +++ a68_idf (A68_EXT, "fputs", m, a68_lower_posixfputs); +++ /* String and character input. */ +++ m = A68_MCACHE (proc_char); +++ a68_idf (A68_EXT, "getchar", m, a68_lower_posixgetchar); +++ m = a68_proc (M_CHAR, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "fgetc", m, a68_lower_posixfgetc); +++ m = a68_proc (M_REF_STRING, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "gets", m, a68_lower_posixgets); +++ m = a68_proc (M_REF_STRING, M_INT, M_INT, NO_MOID); +++ a68_idf (A68_EXT, "fgets", m, a68_lower_posixfgets); +++} +++ +++/* Transput. */ +++ +++static void +++stand_transput (void) +++{ +++ PACK_T *z = NO_PACK; +++ MOID_T *m = NO_MOID; +++ +++ /* Modes. */ +++ +++ /* NUMBER */ +++ z = NO_PACK; +++ (void) a68_add_mode_to_pack (&z, M_INT, NO_TEXT, NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_LONG_INT, NO_TEXT, NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_INT, NO_TEXT, NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_SHORT_INT, NO_TEXT, NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_SHORT_SHORT_INT, NO_TEXT, NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_REAL, NO_TEXT, NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_LONG_REAL, NO_TEXT, NO_NODE); +++ (void) a68_add_mode_to_pack (&z, M_LONG_LONG_REAL, NO_TEXT, NO_NODE); +++ M_NUMBER = a68_add_mode (&TOP_MOID (&A68_JOB), UNION_SYMBOL, a68_count_pack_members (z), NO_NODE, NO_MOID, z); +++ +++ /* Layout procedures. */ +++ +++ /* Conversion procedures. */ +++ m = a68_proc (M_STRING, M_NUMBER, M_INT, NO_MOID); +++ a68_idf (A68_STD, "whole", m); +++} +++ +++/* Build the standard environ symbol table. */ +++ +++void +++a68_make_standard_environ (void) +++{ +++ stand_moids (); +++ A68_MCACHE (proc_bool) = a68_proc (M_BOOL, NO_MOID); +++ A68_MCACHE (proc_char) = a68_proc (M_CHAR, NO_MOID); +++ A68_MCACHE (proc_complex_complex) = a68_proc (M_COMPLEX, M_COMPLEX, NO_MOID); +++ A68_MCACHE (proc_int) = a68_proc (M_INT, NO_MOID); +++ A68_MCACHE (proc_int_int) = a68_proc (M_INT, M_INT, NO_MOID); +++ A68_MCACHE (proc_int_int_real) = a68_proc (M_REAL, M_INT, M_INT, NO_MOID); +++ A68_MCACHE (proc_int_real) = a68_proc (M_REAL, M_INT, NO_MOID); +++ A68_MCACHE (proc_int_real_real) = a68_proc (M_REAL, M_INT, M_REAL, NO_MOID); +++ A68_MCACHE (proc_int_real_real_real) = a68_proc (M_REAL, M_INT, M_REAL, M_REAL, NO_MOID); +++ A68_MCACHE (proc_real) = a68_proc (M_REAL, NO_MOID); +++ A68_MCACHE (proc_real_int_real) = a68_proc (M_REAL, M_REAL, M_INT, NO_MOID); +++ A68_MCACHE (proc_real_real_int_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_INT, NO_MOID); +++ A68_MCACHE (proc_real_real) = M_PROC_REAL_REAL; +++ A68_MCACHE (proc_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, NO_MOID); +++ A68_MCACHE (proc_real_real_real_int) = a68_proc (M_INT, M_REAL, M_REAL, M_REAL, NO_MOID); +++ A68_MCACHE (proc_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); +++ A68_MCACHE (proc_real_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); +++ A68_MCACHE (proc_real_real_real_real_real_real) = a68_proc (M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, M_REAL, NO_MOID); +++ A68_MCACHE (proc_real_ref_real_ref_int_void) = a68_proc (M_VOID, M_REAL, M_REF_REAL, M_REF_INT, NO_MOID); +++ A68_MCACHE (proc_void) = a68_proc (M_VOID, NO_MOID); +++ stand_prelude (); +++ if (!OPTION_STRICT (&A68_JOB)) +++ { +++ gnu_prelude (); +++ posix_prelude (); +++ } +++ stand_transput (); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-scanner.cc ++@@ -0,0 +1,2346 @@ +++/* Context-dependent ALGOL 68 tokeniser. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++/* Context-dependent ALGOL 68 tokeniser. */ +++ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "diagnostic.h" +++#include "options.h" +++#include "vec.h" +++ +++#include "a68.h" +++ +++/* A few forward references of static functions defined in this file. */ +++ +++static void include_files (LINE_T *top); +++ +++/* Standard prelude and postlude for source files. +++ +++ These are used for particular programs only. Not for prelude packets. +++ We need several versions for the several supported stropping regimes. */ +++ +++static const char * +++upper_prelude_start[] = { +++ "BEGIN", +++ " BEGIN", +++ NO_TEXT +++}; +++ +++static const char * +++upper_postlude[] = { +++ " END;", +++ " stop: SKIP", +++ "END", +++ NO_TEXT +++}; +++ +++static const char * +++supper_prelude_start[] = { +++ "begin", +++ " begin", +++ NO_TEXT +++}; +++ +++static const char * +++supper_postlude[] = { +++ " end;", +++ " stop: skip", +++ "end", +++ NO_TEXT +++}; +++ +++/* Macros. */ +++ +++#define NULL_CHAR '\0' +++#define STOP_CHAR 127 +++#define FORMFEED_CHAR '\f' +++#define CR_CHAR '\r' +++#define QUOTE_CHAR '"' +++#define APOSTROPHE_CHAR '\'' +++#define BACKSLASH_CHAR '\\' +++#define NEWLINE_CHAR '\n' +++#define EXPONENT_CHAR 'e' +++#define RADIX_CHAR 'r' +++#define POINT_CHAR '.' +++#define TAB_CHAR '\t' +++ +++#define MAX_RESTART 256 +++ +++#define EOL(c) ((c) == NEWLINE_CHAR || (c) == NULL_CHAR) +++#define SCAN_ERROR(c, u, v, txt) if (c) \ +++ do \ +++ { \ +++ a68_scan_error (u, v, txt); \ +++ } \ +++ while (0) +++ +++ +++#define SCAN_DIGITS(c) \ +++ while (ISDIGIT (c)) \ +++ { \ +++ (sym++)[0] = (c); \ +++ (c) = next_char (ref_l, ref_s, true); \ +++ } +++ +++#define SCAN_EXPONENT_PART(c) \ +++ do \ +++ { \ +++ (sym++)[0] = EXPONENT_CHAR; \ +++ (c) = next_char (ref_l, ref_s, true); \ +++ if ((c) == '+' || (c) == '-') { \ +++ (sym++)[0] = (c); \ +++ (c) = next_char (ref_l, ref_s, true); \ +++ } \ +++ SCAN_ERROR (!ISDIGIT (c), *start_l, *start_c, \ +++ "invalid exponent digit"); \ +++ SCAN_DIGITS (c); \ +++ } \ +++ while (0) +++ +++/* Read bytes from file into buffer. */ +++ +++static ssize_t +++io_read (FILE *file, void *buf, size_t n) +++{ +++ int fd = fileno (file); +++ size_t to_do = n; +++ int restarts = 0; +++ char *z = (char *) buf; +++ while (to_do > 0) +++ { +++ ssize_t bytes_read; +++ +++ errno = 0; +++ bytes_read = read (fd, z, to_do); +++ if (bytes_read < 0) +++ { +++ if (errno == EINTR) +++ { +++ /* interrupt, retry. */ +++ bytes_read = 0; +++ if (restarts++ > MAX_RESTART) +++ { +++ return -1; +++ } +++ } +++ else +++ { +++ /* read error. */ +++ return -1; +++ } +++ } +++ else if (bytes_read == 0) +++ { +++ /* EOF_CHAR */ +++ break; +++ } +++ to_do -= (size_t) bytes_read; +++ z += bytes_read; +++ } +++ +++ /* return >= 0 */ +++ return (ssize_t) n - (ssize_t) to_do; +++} +++ +++/* Save scanner state, for character look-ahead. */ +++ +++static void +++save_state (LINE_T *ref_l, char *ref_s, char ch) +++{ +++ SCAN_STATE_L (&A68_JOB) = ref_l; +++ SCAN_STATE_S (&A68_JOB) = ref_s; +++ SCAN_STATE_C (&A68_JOB) = ch; +++} +++ +++/* Restore scanner state, for character look-ahead. */ +++ +++static void +++restore_state (LINE_T **ref_l, char **ref_s, char *ch) +++{ +++ *ref_l = SCAN_STATE_L (&A68_JOB); +++ *ref_s = SCAN_STATE_S (&A68_JOB); +++ *ch = SCAN_STATE_C (&A68_JOB); +++} +++ +++/* New_source_line. */ +++ +++static LINE_T * +++new_source_line (void) +++{ +++ LINE_T *z = ggc_cleared_alloc (); +++ +++ MARKER (z)[0] = '\0'; +++ STRING (z) = NO_TEXT; +++ FILENAME (z) = NO_TEXT; +++ NUMBER (z) = 0; +++ NEXT (z) = NO_LINE; +++ PREVIOUS (z) = NO_LINE; +++ return z; +++} +++ +++/* Append a source line to the internal source file. */ +++ +++static void +++append_source_line (const char *str, LINE_T **ref_l, int *line_num, +++ const char *filename) +++{ +++ LINE_T *z = new_source_line (); +++ +++ /* Link line into the chain. */ +++ STRING (z) = xstrdup (str); +++ FILENAME (z) = ggc_strdup (filename); +++ NUMBER (z) = (*line_num)++; +++ NEXT (z) = NO_LINE; +++ PREVIOUS (z) = *ref_l; +++ if (TOP_LINE (&A68_JOB) == NO_LINE) +++ TOP_LINE (&A68_JOB) = z; +++ if (*ref_l != NO_LINE) +++ NEXT (*ref_l) = z; +++ *ref_l = z; +++} +++ +++/* Append environment source lines. */ +++ +++static void +++append_environ (const char *str[], LINE_T **ref_l, int *line_num, const char *name) +++{ +++ for (int k = 0; str[k] != NO_TEXT; k++) +++ { +++ int zero_line_num = 0; +++ (*line_num)++; +++ append_source_line (str[k], ref_l, &zero_line_num, name); +++ } +++} +++ +++/* +++ * Scanner, tokenises the source code. +++ */ +++ +++/* Emit a diagnostic if CH is an unworthy character. */ +++ +++static void +++unworthy (LINE_T *u, char *v, char ch) +++{ +++ if (ISPRINT (ch)) +++ { +++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, "*%s", +++ "unworthy character") < 0) +++ gcc_unreachable (); +++ } +++ else +++ { +++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, "*%s %c", +++ "unworthy character", ch) < 0) +++ gcc_unreachable (); +++ } +++ +++ a68_scan_error (u, v, A68 (edit_line)); +++} +++ +++/* Concatenate lines that terminate in '\' with next line. */ +++ +++static void +++concatenate_lines (LINE_T * top) +++{ +++ LINE_T *q; +++ /* Work from bottom backwards. */ +++ for (q = top; q != NO_LINE && NEXT (q) != NO_LINE; FORWARD (q)) +++ ; +++ +++ for (; q != NO_LINE; BACKWARD (q)) +++ { +++ char *z = STRING (q); +++ size_t len = strlen (z); +++ +++ if (len >= 2 +++ && z[len - 2] == BACKSLASH_CHAR +++ && z[len - 1] == NEWLINE_CHAR +++ && NEXT (q) != NO_LINE +++ && STRING (NEXT (q)) != NO_TEXT) +++ { +++ z[len - 2] = '\0'; +++ len += (int) strlen (STRING (NEXT (q))); +++ z = (char *) xmalloc (len + 1); +++ a68_bufcpy (z, STRING (q), len + 1); +++ a68_bufcat (z, STRING (NEXT (q)), len + 1); +++ STRING (NEXT (q))[0] = '\0'; +++ STRING (q) = z; +++ } +++ } +++} +++ +++/* Size of source file. */ +++ +++static int +++get_source_size (void) +++{ +++ FILE *f = FILE_SOURCE_FD (&A68_JOB); +++ return (int) lseek (fileno (f), 0, SEEK_END); +++} +++ +++/* Read source file FILENAME and make internal copy. */ +++ +++static bool +++read_source_file (const char *filename) +++{ +++ struct stat statbuf; +++ LINE_T *ref_l = NO_LINE; +++ int line_num = 0; +++ size_t k; +++ size_t bytes_read; +++ ssize_t l; +++ size_t source_file_size; +++ char *buffer; +++ FILE *f; +++ bool ret = true; +++ +++ /* First open the given file. */ +++ if (!(FILE_SOURCE_FD (&A68_JOB) = fopen (filename, "r"))) +++ fatal_error (UNKNOWN_LOCATION, "could not open source file %s", +++ filename); +++ FILE_SOURCE_NAME (&A68_JOB) = ggc_strdup (filename); +++ f = FILE_SOURCE_FD (&A68_JOB); +++ +++ if (fstat (fileno (f), &statbuf) +++ || !(S_ISREG (statbuf.st_mode) || S_ISCHR (statbuf.st_mode))) +++ fatal_error (UNKNOWN_LOCATION, "specified file %s is a directory", +++ filename); +++ +++ if ((source_file_size = get_source_size ()) == 0) +++ { +++ /* The source file is empty. */ +++ ret = false; +++ goto done; +++ } +++ +++ /* Allocate A68_PARSER (scan_buf), which is an auxiliary buffer used by the +++ scanner known to be big enough to hold any string contained in the source +++ file. */ +++ A68_PARSER (max_scan_buf_length) = source_file_size + 1; +++ A68_PARSER (max_scan_buf_length) += 1024; /* For the environment. */ +++ A68_PARSER (scan_buf) = (char *) xmalloc (A68_PARSER (max_scan_buf_length)); +++ +++ /* Prelude. */ +++ append_environ (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING +++ ? upper_prelude_start : supper_prelude_start, +++ &ref_l, &line_num, "prelude"); +++ +++ /* Read the file into a single buffer, so we save on system calls. */ +++ line_num = 1; +++ errno = 0; +++ buffer = (char *) xmalloc (8 + source_file_size); +++ if (lseek (fileno (f), 0, SEEK_SET) < 0) +++ gcc_unreachable (); +++ errno = 0; +++ bytes_read = io_read (f, buffer, source_file_size); +++ gcc_assert (errno == 0 && bytes_read == source_file_size); +++ +++ /* Link all lines into the list. */ +++ k = 0; +++ while (k < source_file_size) +++ { +++ l = 0; +++ A68_PARSER (scan_buf)[0] = '\0'; +++ while (k < source_file_size && buffer[k] != NEWLINE_CHAR) +++ { +++ if (k < source_file_size - 1 +++ && buffer[k] == CR_CHAR && buffer[k + 1] == NEWLINE_CHAR) +++ k++; +++ else +++ { +++ A68_PARSER (scan_buf)[l++] = buffer[k++]; +++ A68_PARSER (scan_buf)[l] = '\0'; +++ } +++ } +++ A68_PARSER (scan_buf)[l++] = NEWLINE_CHAR; +++ A68_PARSER (scan_buf)[l] = '\0'; +++ if (k < source_file_size) +++ k++; +++ append_source_line (A68_PARSER (scan_buf), &ref_l, &line_num, +++ FILE_SOURCE_NAME (&A68_JOB)); +++ SCAN_ERROR (l != (ssize_t) strlen (A68_PARSER (scan_buf)), +++ NO_LINE, NO_TEXT, "invalid characters in source file"); +++ } +++ +++ /* Postlude. */ +++ append_environ (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING +++ ? upper_postlude : supper_postlude, +++ &ref_l, &line_num, "postlude"); +++ +++ /* Concatenate lines that end with \. */ +++ concatenate_lines (TOP_LINE (&A68_JOB)); +++ +++ /* Include files. */ +++ include_files (TOP_LINE (&A68_JOB)); +++ +++ done: +++ if (fclose (FILE_SOURCE_FD (&A68_JOB)) != 0) +++ gcc_unreachable (); +++ return ret; +++} +++ +++/* Get next character from internal copy of source file. +++ +++ If ALLOW_TYPO is true then typographical display features are skipped. +++ +++ If ALLOW_ONE_UNDER is true then a single underscore character is +++ skipped. */ +++ +++static char +++next_char (LINE_T **ref_l, char **ref_s, bool allow_typo, +++ bool allow_one_under = false, bool *found_under = NULL) +++{ +++ char ch; +++ +++ /* Empty source. */ +++ if (*ref_l == NO_LINE) +++ return STOP_CHAR; +++ +++ if ((*ref_s)[0] == NEWLINE_CHAR || (*ref_s)[0] == '\0') +++ { +++ /* Go to new line. */ +++ *ref_l = NEXT (*ref_l); +++ if (*ref_l == NO_LINE) +++ return STOP_CHAR; +++ *ref_s = STRING (*ref_l); +++ } +++ else +++ (*ref_s)++; +++ +++ /* Deliver next char. */ +++ ch = (*ref_s)[0]; +++ if ((allow_typo && (ISSPACE (ch) || ch == FORMFEED_CHAR)) +++ || (allow_one_under && ch == '_')) +++ { +++ if (ch == '_' && found_under != NULL) +++ *found_under = true; +++ ch = next_char (ref_l, ref_s, allow_typo); +++ } +++ return ch; +++} +++ +++/* Find first character that can start a valid symbol. */ +++ +++static void +++get_good_char (char *ref_c, LINE_T **ref_l, char **ref_s) +++{ +++ while (*ref_c != STOP_CHAR && (ISSPACE (*ref_c) || (*ref_c == '\0'))) +++ *ref_c = next_char (ref_l, ref_s, false); +++} +++ +++/* Case insensitive strncmp for at most the number of chars in V. */ +++ +++static int +++streq (const char *u, const char *v) +++{ +++ int diff; +++ for (diff = 0; diff == 0 && u[0] != NULL_CHAR && v[0] != NULL_CHAR; u++, v++) +++ diff = ((int) TOLOWER (u[0])) - ((int) TOLOWER (v[0])); +++ return diff; +++} +++ +++/* Case insensitive strncmp for at most N chars. */ +++ +++static int +++strneq (const char *u, const char *v, size_t n) +++{ +++ int diff; +++ size_t pos = 0; +++ for (diff = 0; +++ diff == 0 && u[0] != NULL_CHAR && v[0] != NULL_CHAR && pos < n; +++ u++, v++, pos++) +++ diff = ((int) TOLOWER (u[0])) - ((int) TOLOWER (v[0])); +++ return diff; +++} +++ +++ +++/* Determine whether u is bold tag v, independent of stropping regime. */ +++ +++static bool +++is_bold (char *u, const char *v) +++{ +++ size_t len = strlen (v); +++ +++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) +++ /* UPPER stropping. */ +++ return strncmp (u, v, len) == 0 && !ISUPPER (u[len]); +++ else +++ /* SUPPER stropping. */ +++ return (strlen (u) >= len +++ && ISLOWER (u[0]) +++ && strneq (u, v, len) == 0 +++ && !ISALPHA (u[len]) +++ && !ISDIGIT (u[len])); +++} +++ +++/* Skip a string denotation. +++ +++ This function returns true if the end of the string denotation is found. +++ Returns false otherwise. */ +++ +++static bool +++skip_string (LINE_T **top, char **ch) +++{ +++ LINE_T *u = *top; +++ char *v = *ch; +++ v++; +++ while (u != NO_LINE) +++ { +++ while (v[0] != NULL_CHAR) +++ { +++ if (v[0] == QUOTE_CHAR && v[1] != QUOTE_CHAR) +++ { +++ *top = u; +++ *ch = &v[1]; +++ return true; +++ } +++ else if (v[0] == QUOTE_CHAR && v[1] == QUOTE_CHAR) +++ { +++ v += 2; +++ } +++ else +++ { +++ v++; +++ } +++ } +++ FORWARD (u); +++ if (u != NO_LINE) { +++ v = &(STRING (u)[0]); +++ } else { +++ v = NO_TEXT; +++ } +++ } +++ return false; +++} +++ +++/* Skip a comment. +++ +++ This function returns true if the end of the comment is found. Returns +++ false otherwise. */ +++ +++static bool +++skip_comment (LINE_T **top, char **ch, int delim) +++{ +++ LINE_T *u = *top; +++ char *v = *ch; +++ int nesting_level = 1; +++ v++; +++ while (u != NO_LINE) +++ { +++ while (v[0] != NULL_CHAR) +++ { +++ LINE_T *l = u; +++ char *c = v; +++ +++ if (v[0] == QUOTE_CHAR && skip_string (&l, &c) +++ && (delim == BOLD_COMMENT_BEGIN_SYMBOL || delim == BRIEF_COMMENT_BEGIN_SYMBOL)) +++ { +++ u = l; +++ v = c; +++ } +++ else if (is_bold (v, "COMMENT") && delim == BOLD_COMMENT_SYMBOL) +++ { +++ *top = u; +++ *ch = &v[1]; +++ return true; +++ } +++ else if (is_bold (v, "CO") && delim == STYLE_I_COMMENT_SYMBOL) +++ { +++ *top = u; +++ *ch = &v[1]; +++ return true; +++ } +++ else if (v[0] == '#' && delim == STYLE_II_COMMENT_SYMBOL) +++ { +++ *top = u; +++ *ch = &v[1]; +++ return true; +++ } +++ else if (is_bold (v, "ETON") && delim == BOLD_COMMENT_BEGIN_SYMBOL) +++ { +++ gcc_assert (nesting_level > 0); +++ nesting_level -= 1; +++ if (nesting_level == 0) +++ { +++ *top = u; +++ *ch = &v[1]; +++ return true; +++ } +++ } +++ else if (v[0] == '}' && delim == BRIEF_COMMENT_BEGIN_SYMBOL) +++ { +++ gcc_assert (nesting_level > 0); +++ nesting_level -= 1; +++ if (nesting_level == 0) +++ { +++ *top = u; +++ *ch = &v[1]; +++ return true; +++ } +++ } +++ else +++ { +++ if ((is_bold (v, "NOTE") && delim == BOLD_COMMENT_BEGIN_SYMBOL) +++ || (v[0] == '{' && delim == BRIEF_COMMENT_BEGIN_SYMBOL)) +++ { +++ nesting_level += 1; +++ } +++ +++ v++; +++ } +++ } +++ FORWARD (u); +++ if (u != NO_LINE) +++ v = &(STRING (u)[0]); +++ else +++ v = NO_TEXT; +++ } +++ +++ return false; +++} +++ +++/* Skip rest of pragmat. +++ +++ This function returns true if the end of the pragmat is found, false +++ otherwise. */ +++ +++static bool +++skip_pragmat (LINE_T **top, char **ch, int delim, bool whitespace) +++{ +++ LINE_T *u = *top; +++ char *v = *ch; +++ while (u != NO_LINE) +++ { +++ while (v[0] != NULL_CHAR) +++ { +++ if (is_bold (v, "PRAGMAT") && delim == BOLD_PRAGMAT_SYMBOL) +++ { +++ *top = u; +++ *ch = &v[1]; +++ return true; +++ } +++ else if (is_bold (v, "PR") && delim == STYLE_I_PRAGMAT_SYMBOL) +++ { +++ *top = u; +++ *ch = &v[1]; +++ return true; +++ } +++ else +++ { +++ if (whitespace && !ISSPACE (v[0]) && v[0] != NEWLINE_CHAR) +++ { +++ SCAN_ERROR (true, u, v, "error in pragment"); +++ } +++ else if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING && ISUPPER (v[0])) +++ { +++ /* Skip a bold word as you may trigger on REPR, for +++ instance. */ +++ while (ISUPPER (v[0])) +++ v++; +++ } +++ else if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING && ISLOWER (v[0])) +++ { +++ /* Skip a tag as you may trigger on expr, for instance. */ +++ while (ISLOWER (v[0]) || ISDIGIT (v[0]) || v[0] == '_') +++ v++; +++ } +++ else +++ { +++ v++; +++ } +++ } +++ } +++ +++ FORWARD (u); +++ if (u != NO_LINE) +++ v = &(STRING (u)[0]); +++ else +++ v = NO_TEXT; +++ } +++ +++ return false; +++} +++ +++/* Return pointer to next token within pragmat. */ +++ +++static char * +++get_pragmat_item (LINE_T **top, char **ch) +++{ +++ LINE_T *u = *top; +++ char *v = *ch; +++ while (u != NO_LINE) +++ { +++ while (v[0] != NULL_CHAR) +++ { +++ if (!ISSPACE (v[0]) && v[0] != NEWLINE_CHAR) +++ { +++ *top = u; +++ *ch = v; +++ return v; +++ } +++ else +++ { +++ v++; +++ } +++ } +++ FORWARD (u); +++ if (u != NO_LINE) +++ v = &(STRING (u)[0]); +++ else +++ v = NO_TEXT; +++ } +++ +++ return NO_TEXT; +++} +++ +++/* Scan for the next pragmat and yield the first item within it. */ +++ +++static char * +++next_preprocessor_item (LINE_T **top, char **ch, int *delim) +++{ +++ LINE_T *u = *top; +++ char *v = *ch; +++ *delim = 0; +++ while (u != NO_LINE) +++ { +++ while (v[0] != NULL_CHAR) +++ { +++ LINE_T *start_l = u; +++ char *start_c = v; +++ +++ if (v[0] == QUOTE_CHAR) +++ { +++ /* Skip string denotation. */ +++ SCAN_ERROR (!skip_string (&u, &v), start_l, start_c, +++ "unterminated string"); +++ } +++ else if (a68_find_keyword (A68 (top_keyword), "COMMENT") != NO_KEYWORD +++ && is_bold (v, "COMMENT")) +++ { +++ /* Skip comment. */ +++ SCAN_ERROR (!skip_comment (&u, &v, BOLD_COMMENT_SYMBOL), start_l, start_c, +++ "unterminated comment"); +++ } +++ else if (a68_find_keyword (A68 (top_keyword), "CO") != NO_KEYWORD +++ && is_bold (v, "CO")) +++ { +++ /* skip comment. */ +++ SCAN_ERROR (!skip_comment (&u, &v, STYLE_I_COMMENT_SYMBOL), start_l, start_c, +++ "unterminated comment"); +++ } +++ else if (a68_find_keyword (A68 (top_keyword), "#") != NO_KEYWORD +++ && v[0] == '#') +++ { +++ SCAN_ERROR (!skip_comment (&u, &v, STYLE_II_COMMENT_SYMBOL), start_l, start_c, +++ "unterminated comment"); +++ } +++ else if (a68_find_keyword (A68 (top_keyword), "NOTE") != NO_KEYWORD +++ && is_bold (v, "NOTE")) +++ { +++ SCAN_ERROR (!skip_comment (&u, &v, BOLD_COMMENT_BEGIN_SYMBOL), start_l, start_c, +++ "unterminated comment"); +++ } +++ else if (a68_find_keyword (A68 (top_keyword), "{") != NO_KEYWORD +++ && v[0] == '{') +++ { +++ SCAN_ERROR (!skip_comment (&u, &v, BRIEF_COMMENT_BEGIN_SYMBOL), start_l, start_c, +++ "unterminated comment"); +++ } +++ else if (is_bold (v, "PRAGMAT") || is_bold (v, "PR")) +++ { +++ /* We caught a PRAGMAT. */ +++ char *item; +++ if (is_bold (v, "PRAGMAT")) +++ { +++ *delim = BOLD_PRAGMAT_SYMBOL; +++ v = &v[strlen ("PRAGMAT")]; +++ } +++ else if (is_bold (v, "PR")) +++ { +++ *delim = STYLE_I_PRAGMAT_SYMBOL; +++ v = &v[strlen ("PR")]; +++ } +++ item = get_pragmat_item (&u, &v); +++ SCAN_ERROR (item == NO_TEXT, start_l, start_c, +++ "unterminated pragmat"); +++ +++ if (streq (item, "INCLUDE") == 0) +++ { +++ /* Item "INCLUDE" includes a file. */ +++ *top = u; +++ *ch = v; +++ return item; +++ } +++ else +++ { +++ /* Unrecognised item - probably options handled later by the +++ tokeniser. */ +++ SCAN_ERROR (!skip_pragmat (&u, &v, *delim, false), start_l, start_c, +++ "unterminated pragmat"); +++ } +++ } +++ else if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING && ISUPPER (v[0])) +++ { +++ /* Skip a bold word as you may trigger on REPR, for instance. */ +++ while (ISUPPER (v[0])) +++ v++; +++ } +++ else if (OPTION_STROPPING (&A68_JOB) == SUPPER_STROPPING && ISLOWER (v[0])) +++ { +++ /* Skip a tag as you may trigger on expr, for instance. */ +++ while (ISLOWER (v[0]) || ISDIGIT (v[0]) || v[0] == '_') +++ v++; +++ } +++ else +++ { +++ v++; +++ } +++ } +++ +++ FORWARD (u); +++ if (u != NO_LINE) +++ v = &(STRING (u)[0]); +++ else +++ v = NO_TEXT; +++ } +++ +++ *top = u; +++ *ch = v; +++ return NO_TEXT; +++} +++ +++/* Concatenate the two paths P1 and P2. */ +++ +++static char * +++a68_relpath (const char *p1, const char *p2, const char *fn) +++{ +++#if defined(__GNU__) +++ /* The Hurd doesn't define PATH_MAX. */ +++# define PATH_MAX 4096 +++#endif +++ +++ char q[PATH_MAX + 1]; +++ a68_bufcpy (q, p1, PATH_MAX); +++ a68_bufcat (q, "/", PATH_MAX); +++ a68_bufcat (q, p2, PATH_MAX); +++ a68_bufcat (q, "/", PATH_MAX); +++ a68_bufcat (q, fn, PATH_MAX); +++ /* Home directory shortcut ~ is a shell extension. */ +++ if (strchr (q, '~') != NO_TEXT) { +++ return NO_TEXT; +++ } +++ char *r = (char *) xmalloc (PATH_MAX + 1); +++ gcc_assert (r != NULL); +++ /* Error handling in the caller! */ +++ errno = 0; +++ r = lrealpath (q); +++ return r; +++} +++ +++/* Return true if we can open the file for reading. False otherwise. */ +++ +++static bool +++file_read_p (const char *filename) +++{ +++ return access (filename, R_OK) == 0 ? true : false; +++} +++ +++/* Find a file to include into the current source being parsed. Search the file +++ system for FILENAME and return a string with the file path. If the file is +++ not found, return NULL. +++ +++ When FILENAME is not an absolute path we first try to find it relative to the +++ current file being parsed (CURFILE). Failing to do that we use the search +++ paths provided by the -I option. */ +++ +++static char * +++find_include_file (const char *curfile, const char *filename) +++{ +++ char *filepath = NO_TEXT; +++ char *tmpfpath = NO_TEXT; +++ char *fnbdir = ldirname (filename); +++ const char *incfile = lbasename (filename); +++ +++ if (fnbdir == NULL || incfile == NULL) +++ gcc_unreachable (); +++ +++ if (!IS_ABSOLUTE_PATH (filename)) +++ { +++ char *sourcedir = ldirname (curfile); +++ +++ if (sourcedir == NULL || fnbdir == NULL) +++ gcc_unreachable (); +++ +++ if (strlen (sourcedir) == 0 && strlen (fnbdir) == 0) +++ { +++ free (sourcedir); +++ sourcedir = (char *) xmalloc (2); +++ a68_bufcpy (sourcedir, ".", 2); +++ } +++ +++ tmpfpath = a68_relpath (sourcedir, fnbdir, incfile); +++ if (file_read_p (tmpfpath)) +++ { +++ filepath = tmpfpath; +++ goto cleanup; +++ } +++ +++ for (unsigned ix = 0; ix != vec_safe_length (A68_INCLUDE_PATHS); ix++) +++ { +++ const char *include_dir = (*(A68_INCLUDE_PATHS))[ix]; +++ tmpfpath = a68_relpath (include_dir, fnbdir, incfile); +++ if (!IS_ABSOLUTE_PATH (tmpfpath)) +++ tmpfpath = a68_relpath (sourcedir, fnbdir, incfile); +++ if (file_read_p (tmpfpath)) +++ { +++ filepath = tmpfpath; +++ goto cleanup; +++ } +++ } +++ +++ cleanup: +++ free (sourcedir); +++ goto end; +++ } +++ else +++ { +++ size_t fnwid = (int) strlen (filename) + 1; +++ tmpfpath = (char *) xmalloc ((size_t) fnwid); +++ a68_bufcpy (tmpfpath, filename, fnwid); +++ +++ if (file_read_p (tmpfpath)) +++ { +++ filepath = tmpfpath; +++ goto end; +++ } +++ } +++ +++end: +++ free (fnbdir); +++ return filepath; +++} +++ +++/* Include files. +++ This function handles the INCLUDE pragmat in the source file. */ +++ +++static void +++include_files (LINE_T *top) +++{ +++ /* syntax: PR include "filename" PR +++ +++ The file gets inserted before the line containing the pragmat. In this way +++ correct line numbers are preserved which helps diagnostics. A file that +++ has been included will not be included a second time - it will be ignored. +++ A rigorous fail-safe, but there is no mechanism to prevent recursive +++ includes in A68 source code. User reports do not indicate sophisticated +++ use of INCLUDE, so this is fine for now. +++ */ +++ +++ bool make_pass = true; +++ while (make_pass) +++ { +++ LINE_T *s, *t, *u = top; +++ char *v = &(STRING (u)[0]); +++ make_pass = false; +++ errno = 0; +++ while (u != NO_LINE) +++ { +++ int pr_lim; +++ char *item = next_preprocessor_item (&u, &v, &pr_lim); +++ LINE_T *start_l = u; +++ char *start_c = v; +++ /* Search for PR include "filename" PR. */ +++ if (item != NO_TEXT && streq (item, "INCLUDE") == 0) +++ { +++ FILE *fp; +++ int fd; +++ size_t fsize, k; +++ int n, linum, bytes_read; +++ char *fbuf, delim; +++ BUFFER fnb; +++ char *fn = NO_TEXT; +++ /* Skip to filename. */ +++ while (ISALPHA (v[0])) +++ v++; +++ while (ISSPACE (v[0])) +++ v++; +++ /* Scan quoted filename. */ +++ SCAN_ERROR ((v[0] != QUOTE_CHAR && v[0] != '\''), start_l, start_c, +++ "incorrect filename"); +++ delim = (v++)[0]; +++ n = 0; +++ fnb[0] = NULL_CHAR; +++ /* Scan Algol 68 string (note: "" denotes a ", while in C it +++ concatenates). */ +++ do +++ { +++ SCAN_ERROR (EOL (v[0]), start_l, start_c, +++ "incorrect filename"); +++ SCAN_ERROR (n == BUFFER_SIZE - 1, start_l, start_c, +++ "incorrect filename"); +++ if (v[0] == delim) +++ { +++ while (v[0] == delim && v[1] == delim) +++ { +++ SCAN_ERROR (n == BUFFER_SIZE - 1, start_l, start_c, +++ "incorrect filename"); +++ fnb[n++] = delim; +++ fnb[n] = NULL_CHAR; +++ v += 2; +++ } +++ } +++ else if (ISPRINT (v[0])) +++ { +++ fnb[n++] = *(v++); +++ fnb[n] = NULL_CHAR; +++ } +++ else +++ { +++ SCAN_ERROR (true, start_l, start_c, +++ "incorrect filename"); +++ } +++ } +++ while (v[0] != delim); +++ +++ /* Insist that the pragmat is closed properly. */ +++ v = &v[1]; +++ SCAN_ERROR (!skip_pragmat (&u, &v, pr_lim, true), start_l, start_c, +++ "unterminated pragmat"); +++ SCAN_ERROR (n == 0, start_l, start_c, +++ "incorrect filename"); +++ +++ char *sourcefile = NO_TEXT; +++ if (FILENAME (u) != NO_TEXT) +++ { +++ sourcefile = xstrdup (FILENAME (u)); +++ } +++ else +++ { +++ sourcefile = (char *) xmalloc (2); +++ a68_bufcpy (sourcefile, ".", 1); +++ } +++ fn = find_include_file (sourcefile, fnb); +++ free (sourcefile); +++ +++ /* Do not check errno, since errno may be undefined here +++ after a successful call. */ +++ if (fn != NO_TEXT) +++ a68_bufcpy (fnb, fn, BUFFER_SIZE); +++ else +++ { +++ SCAN_ERROR (true, start_l, start_c, +++ "included file not found"); +++ } +++ size_t fnwid = (int) strlen (fnb) + 1; +++ fn = (char *) xmalloc ((size_t) fnwid); +++ a68_bufcpy (fn, fnb, fnwid); +++ +++ /* Ignore the file when included more than once. */ +++ for (t = top; t != NO_LINE; t = NEXT (t)) +++ { +++ if (strcmp (FILENAME (t), fn) == 0) +++ goto search_next_pragmat; +++ } +++ t = NO_LINE; +++ +++ /* Access the file. */ +++ errno = 0; +++ fp = fopen (fn, "r"); +++ SCAN_ERROR (fp == NULL, start_l, start_c, +++ "error opening included file"); +++ fd = fileno (fp); +++ errno = 0; +++ off_t off = lseek (fd, 0, SEEK_END); +++ gcc_assert (off >= 0); +++ fsize = (size_t) off; +++ SCAN_ERROR (errno != 0, start_l, start_c, +++ "error while reading file"); +++ fbuf = (char *) xmalloc (8 + fsize); +++ errno = 0; +++ if (lseek (fd, 0, SEEK_SET) < 0) +++ gcc_unreachable (); +++ SCAN_ERROR (errno != 0, start_l, start_c, +++ "error while reading file"); +++ errno = 0; +++ bytes_read = (int) io_read (fp, fbuf, (size_t) fsize); +++ SCAN_ERROR (errno != 0 || (size_t) bytes_read != fsize, start_l, start_c, +++ "error while reading file"); +++ +++ /* Buffer still usable?. */ +++ if (fsize > A68_PARSER (max_scan_buf_length)) +++ { +++ A68_PARSER (max_scan_buf_length) = fsize; +++ A68_PARSER (scan_buf) = (char *) xmalloc (8 + A68_PARSER (max_scan_buf_length)); +++ } +++ +++ /* Link all lines into the list. */ +++ linum = 1; +++ s = u; +++ t = PREVIOUS (u); +++ k = 0; +++ if (fsize == 0) +++ { +++ /* If file is empty, insert single empty line. */ +++ A68_PARSER (scan_buf)[0] = NEWLINE_CHAR; +++ A68_PARSER (scan_buf)[1] = NULL_CHAR; +++ append_source_line (A68_PARSER (scan_buf), &t, &linum, fn); +++ } +++ else +++ { +++ while (k < fsize) +++ { +++ n = 0; +++ A68_PARSER (scan_buf)[0] = NULL_CHAR; +++ while (k < fsize && fbuf[k] != NEWLINE_CHAR) +++ { +++ SCAN_ERROR ((ISCNTRL (fbuf[k]) && !ISSPACE (fbuf[k])) +++ || fbuf[k] == STOP_CHAR, +++ start_l, start_c, +++ "invalid characters in included file"); +++ A68_PARSER (scan_buf)[n++] = fbuf[k++]; +++ A68_PARSER (scan_buf)[n] = NULL_CHAR; +++ } +++ A68_PARSER (scan_buf)[n++] = NEWLINE_CHAR; +++ A68_PARSER (scan_buf)[n] = NULL_CHAR; +++ if (k < fsize) +++ k++; +++ append_source_line (A68_PARSER (scan_buf), &t, &linum, fn); +++ } +++ } +++ +++ /* Conclude and go find another include directive, if any. */ +++ NEXT (t) = s; +++ PREVIOUS (s) = t; +++ concatenate_lines (top); +++ if (fclose (fp) != 0) +++ gcc_unreachable (); +++ make_pass = true; +++ } +++ search_next_pragmat: +++ { (void) 0; }; +++ } +++ } +++} +++ +++/* Handle a pragment (pragmat or comment). */ +++ +++static char * +++pragment (int type, LINE_T **ref_l, char **ref_c) +++{ +++#define INIT_BUFFER \ +++ do \ +++ { \ +++ chars_in_buf = 0; \ +++ A68_PARSER (scan_buf)[chars_in_buf] = '\0'; \ +++ } \ +++ while (0) +++ +++#define ADD_ONE_CHAR(CH) \ +++ do \ +++ { \ +++ A68_PARSER (scan_buf)[chars_in_buf ++] = (CH); \ +++ A68_PARSER (scan_buf)[chars_in_buf] = '\0'; \ +++ } \ +++ while (0) +++ +++ const char *term_s = NO_TEXT; +++ const char *beg_s = NO_TEXT; +++ char c = **ref_c, *start_c = *ref_c; +++ char *z = NO_TEXT; +++ LINE_T *start_l = *ref_l; +++ int beg_s_length, term_s_length, chars_in_buf; +++ bool stop, pragmat = false; +++ +++ /* Set terminator to look for. */ +++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) +++ { +++ if (type == STYLE_I_COMMENT_SYMBOL) +++ term_s = "CO"; +++ else if (type == STYLE_II_COMMENT_SYMBOL) +++ term_s = "#"; +++ else if (type == BOLD_COMMENT_SYMBOL) +++ term_s = "COMMENT"; +++ else if (type == BOLD_COMMENT_BEGIN_SYMBOL) +++ { +++ beg_s = "NOTE"; +++ term_s = "ETON"; +++ } +++ else if (type == BRIEF_COMMENT_BEGIN_SYMBOL) +++ { +++ beg_s = "{"; +++ term_s = "}"; +++ } +++ else if (type == STYLE_I_PRAGMAT_SYMBOL) +++ { +++ term_s = "PR"; +++ pragmat = true; +++ } +++ else if (type == BOLD_PRAGMAT_SYMBOL) +++ { +++ term_s = "PRAGMAT"; +++ pragmat = true; +++ } +++ } +++ else +++ { +++ /* SUPPER stropping. */ +++ if (type == STYLE_I_COMMENT_SYMBOL) +++ term_s = "co"; +++ else if (type == STYLE_II_COMMENT_SYMBOL) +++ term_s = "#"; +++ else if (type == BOLD_COMMENT_SYMBOL) +++ term_s = "comment"; +++ else if (type == BOLD_COMMENT_BEGIN_SYMBOL) +++ { +++ beg_s = "note"; +++ term_s = "eton"; +++ } +++ else if (type == BRIEF_COMMENT_BEGIN_SYMBOL) +++ { +++ beg_s = "{"; +++ term_s = "}"; +++ } +++ else if (type == STYLE_I_PRAGMAT_SYMBOL) +++ { +++ term_s = "pr"; +++ pragmat = true; +++ } +++ else if (type == BOLD_PRAGMAT_SYMBOL) +++ { +++ term_s = "pragmat"; +++ pragmat = true; +++ } +++ } +++ +++ beg_s_length = (beg_s != NO_TEXT ? (int) strlen (beg_s) : 0); +++ term_s_length = (int) strlen (term_s); +++ +++ /* Scan for terminator. */ +++ bool nestable_comment = (beg_s != NO_TEXT); +++ int nesting_level = 1; +++ INIT_BUFFER; +++ stop = false; +++ while (stop == false) +++ { +++ SCAN_ERROR (c == STOP_CHAR, start_l, start_c, +++ "unterminated pragment"); +++ +++ /* A ".." or '..' delimited string in a PRAGMAT, or +++ a ".." in a nestable comment. */ +++ if ((pragmat && (c == QUOTE_CHAR || c == '\'')) +++ || (nestable_comment && c == QUOTE_CHAR)) +++ { +++ char delim = c; +++ bool eos = false; +++ ADD_ONE_CHAR (c); +++ c = next_char (ref_l, ref_c, false); +++ while (!eos) +++ { +++ SCAN_ERROR (EOL (c), start_l, start_c, +++ "string within pragment exceeds end of line"); +++ +++ if (c == delim) +++ { +++ ADD_ONE_CHAR (delim); +++ save_state (*ref_l, *ref_c, c); +++ c = next_char (ref_l, ref_c, false); +++ if (c == delim) +++ c = next_char (ref_l, ref_c, false); +++ else +++ { +++ restore_state (ref_l, ref_c, &c); +++ eos = true; +++ } +++ } +++ else if (ISPRINT (c)) +++ { +++ ADD_ONE_CHAR (c); +++ c = next_char (ref_l, ref_c, false); +++ } +++ else +++ unworthy (start_l, start_c, c); +++ } +++ } +++ else if (EOL (c)) +++ ADD_ONE_CHAR (NEWLINE_CHAR); +++ else if (ISPRINT (c) || ISSPACE (c)) +++ ADD_ONE_CHAR (c); +++ +++ if (nestable_comment && chars_in_buf >= beg_s_length) +++ { +++ /* If we find another instance of the nestable begin mark, bump the +++ nesting level and continue scanning. */ +++ if (strcmp (beg_s, +++ &(A68_PARSER (scan_buf)[chars_in_buf - beg_s_length])) == 0) +++ { +++ nesting_level += 1; +++ goto nextchar; +++ } +++ } +++ +++ if (chars_in_buf >= term_s_length) +++ { +++ /* Check whether we encountered the terminator. Mind nesting if +++ necessary. */ +++ if (strcmp (term_s, +++ &(A68_PARSER (scan_buf)[chars_in_buf - term_s_length])) == 0) +++ { +++ if (nestable_comment) +++ { +++ gcc_assert (nesting_level > 0); +++ nesting_level -= 1; +++ stop = (nesting_level == 0); +++ } +++ else +++ stop = true; +++ } +++ } +++ +++ nextchar: +++ c = next_char (ref_l, ref_c, false); +++ } +++ +++ A68_PARSER (scan_buf)[chars_in_buf - term_s_length] = '\0'; +++ z = a68_new_string (term_s, A68_PARSER (scan_buf), term_s, NO_TEXT); +++ return z; +++#undef ADD_ONE_CHAR +++#undef INIT_BUFFER +++} +++ +++/* Whether input shows exponent character. */ +++ +++static bool +++is_exp_char (LINE_T **ref_l, char **ref_s, char *ch) +++{ +++ bool ret = false; +++ +++ char exp_syms[3]; +++ +++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ +++ exp_syms[0] = EXPONENT_CHAR; +++ exp_syms[1] = TOUPPER (EXPONENT_CHAR); +++ exp_syms[2] = '\0'; +++ +++ save_state (*ref_l, *ref_s, *ch); +++ if (strchr (exp_syms, *ch) != NO_TEXT) +++ { +++ *ch = next_char (ref_l, ref_s, true); +++ ret = (strchr ("+-0123456789", *ch) != NO_TEXT); +++ } +++ restore_state (ref_l, ref_s, ch); +++ return ret; +++} +++ +++/* Whether input shows radix character. */ +++ +++static bool +++is_radix_char (LINE_T **ref_l, char **ref_s, char *ch) +++{ +++ bool ret = false; +++ +++ save_state (*ref_l, *ref_s, *ch); +++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ +++ if (*ch == RADIX_CHAR) +++ { +++ *ch = next_char (ref_l, ref_s, true); +++ ret = (strchr ("0123456789abcdef", *ch) != NO_TEXT); +++ } +++ restore_state (ref_l, ref_s, ch); +++ return ret; +++} +++ +++/* Whether input shows decimal point. */ +++ +++static bool +++is_decimal_point (LINE_T **ref_l, char **ref_s, char *ch) +++{ +++ bool ret = false; +++ +++ save_state (*ref_l, *ref_s, *ch); +++ if (*ch == POINT_CHAR) +++ { +++ char exp_syms[3]; +++ +++ /* Note that this works for both UPPER and SUPPER stropping regimes. */ +++ exp_syms[0] = EXPONENT_CHAR; +++ exp_syms[1] = TOUPPER (EXPONENT_CHAR); +++ exp_syms[2] = '\0'; +++ +++ *ch = next_char (ref_l, ref_s, true); +++ if (strchr (exp_syms, *ch) != NO_TEXT) +++ { +++ *ch = next_char (ref_l, ref_s, true); +++ ret = (strchr ("+-0123456789", *ch) != NO_TEXT); +++ } +++ else +++ ret = (strchr ("0123456789", *ch) != NO_TEXT); +++ } +++ restore_state (ref_l, ref_s, ch); +++ return ret; +++} +++ +++/* Attribute for format item. */ +++ +++static enum a68_attribute +++get_format_item (char ch) +++{ +++ switch (TOLOWER (ch)) +++ { +++ case 'a': +++ return FORMAT_ITEM_A; +++ case 'b': +++ return FORMAT_ITEM_B; +++ case 'c': +++ return FORMAT_ITEM_C; +++ case 'd': +++ return FORMAT_ITEM_D; +++ case 'e': +++ return FORMAT_ITEM_E; +++ case 'f': +++ return FORMAT_ITEM_F; +++ case 'g': +++ return FORMAT_ITEM_G; +++ case 'h': +++ return FORMAT_ITEM_H; +++ case 'i': +++ return FORMAT_ITEM_I; +++ case 'j': +++ return FORMAT_ITEM_J; +++ case 'k': +++ return FORMAT_ITEM_K; +++ case 'l': +++ case '/': +++ return FORMAT_ITEM_L; +++ case 'm': +++ return FORMAT_ITEM_M; +++ case 'n': +++ return FORMAT_ITEM_N; +++ case 'o': +++ return FORMAT_ITEM_O; +++ case 'p': +++ return FORMAT_ITEM_P; +++ case 'q': +++ return FORMAT_ITEM_Q; +++ case 'r': +++ return FORMAT_ITEM_R; +++ case 's': +++ return FORMAT_ITEM_S; +++ case 't': +++ return FORMAT_ITEM_T; +++ case 'u': +++ return FORMAT_ITEM_U; +++ case 'v': +++ return FORMAT_ITEM_V; +++ case 'w': +++ return FORMAT_ITEM_W; +++ case 'x': +++ return FORMAT_ITEM_X; +++ case 'y': +++ return FORMAT_ITEM_Y; +++ case 'z': +++ return FORMAT_ITEM_Z; +++ case '+': +++ return FORMAT_ITEM_PLUS; +++ case '-': +++ return FORMAT_ITEM_MINUS; +++ case POINT_CHAR: +++ return FORMAT_ITEM_POINT; +++ case '%': +++ return FORMAT_ITEM_ESCAPE; +++ default: +++ return STOP; +++ } +++} +++ +++/* Get next token from internal copy of source file. +++ +++ The kind of token is set via the passed pointer ATTR. +++ The contents of token is set in the scan_buf via SYM. +++ +++ The recognized tokens are, by reported ATTR: +++ +++ +++ End of file. +++ FORMAT_ITEM_* +++ Item in a format. +++ STATIC_REPLICATOR +++ INT denotation for a static replicator in a format. +++ BOLD_TAG +++ Bold tag. +++ IDENTIFIER +++ A "lower case" identifier. +++ IDENTIFIER_WITH_UNDERSCORES +++ A "lower case" identifier whose's at least one taggle +++ was found adjacent to an underscore. +++ REAL_DENOTATION +++ A REAL denotation. +++ POINT_SYMBOL +++ . +++ BITS_DENOTATION +++ A BITS denotation like 16rffff +++ INT_DENOTATION +++ An INT denotation. +++ ROW_CHAR_DENOTATION +++ A STRING denotation. +++ LITERAL +++ A literal denotation in a format. +++ STOP +++ Single-character symbols #$()[]{},;@|: +++ := /= :=: :/=: +++ The character is placed in SYM. +++ EQUALS_SYMBOL +++ The equality symbol. +++ OPERATOR +++ A predefined operator. +++*/ +++ +++static void +++get_next_token (bool in_format, +++ LINE_T **ref_l, char **ref_s, +++ LINE_T **start_l, char **start_c, enum a68_attribute *att) +++{ +++ char c = **ref_s; +++ char *sym = A68_PARSER (scan_buf); +++ +++ sym[0] = '\0'; +++ get_good_char (&c, ref_l, ref_s); +++ *start_l = *ref_l; +++ *start_c = *ref_s; +++ if (c == STOP_CHAR) +++ { +++ /* We are at EOF. */ +++ (sym++)[0] = STOP_CHAR; +++ sym[0] = '\0'; +++ return; +++ } +++ +++ if (in_format) +++ { +++ /* In a format. */ +++ const char *format_items = "/%\\+-.abcdefghijklmnopqrstuvwxyz"; +++ if (strchr (format_items, c) != NO_TEXT) +++ { +++ /* General format items. */ +++ (sym++)[0] = c; +++ sym[0] = NULL_CHAR; +++ *att = get_format_item (c); +++ (void) next_char (ref_l, ref_s, false); +++ return; +++ } +++ if (ISDIGIT (c)) +++ { +++ /* INT denotation for static replicator. */ +++ SCAN_DIGITS (c); +++ sym[0] = NULL_CHAR; +++ *att = STATIC_REPLICATOR; +++ return; +++ } +++ } +++ +++ if (ISUPPER (c)) +++ { +++ /* Bold taggles are enabled only in gnu68. */ +++ bool allow_one_under = !OPTION_STRICT (&A68_JOB); +++ +++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) +++ { +++ /* In UPPER stropping a bold tag is an upper case word. */ +++ while (ISUPPER (c)) +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false, allow_one_under); +++ } +++ sym[0] = '\0'; +++ *att = BOLD_TAG; +++ } +++ else +++ { +++ /* In SUPPER stropping a bold tag is a capitalized word that may +++ contain letters and digits. */ +++ while (ISALPHA (c) || ISDIGIT (c)) +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false, allow_one_under); +++ } +++ sym[0] = '\0'; +++ *att = BOLD_TAG; +++ } +++ } +++ else if (ISLOWER (c)) +++ { +++ /* In both UPPER and SUPPER stropping regimes a tag is a lower case word +++ which may contain letters and digits. +++ +++ In SUPPER stropping, however, it is not allowed to have blanks +++ separating the taggles within tags. */ +++ +++ bool allow_one_under = true; +++ bool found_under = false; +++ bool allow_typo = OPTION_STROPPING (&A68_JOB) != SUPPER_STROPPING; +++ +++ /* Lower case word - identifier. */ +++ while (ISLOWER (c) || ISDIGIT (c)) +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, allow_typo, allow_one_under, +++ &found_under); +++ } +++ +++ sym[0] = '\0'; +++ *att = found_under ? IDENTIFIER_WITH_UNDERSCORES : IDENTIFIER; +++ } +++ else if (c == POINT_CHAR) +++ { +++ /* Begins with a point symbol - point, L REAL denotation. */ +++ if (is_decimal_point (ref_l, ref_s, &c)) +++ { +++ (sym++)[0] = '0'; +++ (sym++)[0] = POINT_CHAR; +++ c = next_char (ref_l, ref_s, true); +++ SCAN_DIGITS (c); +++ if (is_exp_char (ref_l, ref_s, &c)) +++ SCAN_EXPONENT_PART (c); +++ sym[0] = '\0'; +++ *att = REAL_DENOTATION; +++ } +++ else +++ { +++ c = next_char (ref_l, ref_s, true); +++ (sym++)[0] = POINT_CHAR; +++ sym[0] = '\0'; +++ *att = POINT_SYMBOL; +++ } +++ } +++ else if (ISDIGIT (c)) +++ { +++ /* Something that begins with a digit: +++ L INT denotation, L REAL denotation. */ +++ SCAN_DIGITS (c); +++ +++ if (is_decimal_point (ref_l, ref_s, &c)) +++ { +++ c = next_char (ref_l, ref_s, true); +++ if (is_exp_char (ref_l, ref_s, &c)) +++ { +++ (sym++)[0] = POINT_CHAR; +++ (sym++)[0] = '0'; +++ SCAN_EXPONENT_PART (c); +++ *att = REAL_DENOTATION; +++ } +++ else +++ { +++ (sym++)[0] = POINT_CHAR; +++ SCAN_DIGITS (c); +++ if (is_exp_char (ref_l, ref_s, &c)) +++ SCAN_EXPONENT_PART (c); +++ *att = REAL_DENOTATION; +++ } +++ } +++ else if (is_exp_char (ref_l, ref_s, &c)) +++ { +++ SCAN_EXPONENT_PART (c); +++ *att = REAL_DENOTATION; +++ } +++ else if (is_radix_char (ref_l, ref_s, &c)) +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, true); +++ /* This is valid for both UPPER and SUPPER stropping. */ +++ while (ISDIGIT (c) || strchr ("abcdef", c) != NO_TEXT) +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, true); +++ } +++ *att = BITS_DENOTATION; +++ } +++ else +++ { +++ *att = INT_DENOTATION; +++ } +++ sym[0] = '\0'; +++ } +++ else if (c == QUOTE_CHAR) +++ { +++ /* STRING denotation. */ +++ bool stop = false; +++ +++ while (!stop) +++ { +++ c = next_char (ref_l, ref_s, false); +++ while (c != QUOTE_CHAR && c != STOP_CHAR) +++ { +++ if (c == APOSTROPHE_CHAR) +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ switch (c) +++ { +++ case APOSTROPHE_CHAR: +++ case 'n': +++ case 'f': +++ case 'r': +++ case 't': +++ (sym++)[0] = c; +++ break; +++ case '(': +++ { +++ unsigned int num_code_points = 0; +++ +++ (sym++)[0] = c; +++ /* Process code points. */ +++ while (1) +++ { +++ /* Skip white spaces. */ +++ while (1) +++ { +++ c = next_char (ref_l, ref_s, false); +++ if (!ISSPACE (c)) +++ break; +++ } +++ +++ /* See if we are done. */ +++ if (c == ')') +++ { +++ SCAN_ERROR (num_code_points == 0, *start_l, *ref_s, +++ "expected at least one character point in string break"); +++ (sym++)[0] = c; +++ break; +++ } +++ else if (c == 'u' || c == 'U') +++ { +++ (sym++)[0] = c; +++ /* Process a code point. */ +++ char u = c; +++ int numdigits = (u == 'u' ? 4 : 8); +++ char *startpos = *ref_s; +++ int i = 0; +++ do +++ { +++ c = next_char (ref_l, ref_s, false); +++ if (!(ISDIGIT (c) +++ || ((c >= 'a') && (c <= 'f')) +++ || ((c >= 'A') && (c <= 'F')))) +++ { +++ SCAN_ERROR (true, *start_l, startpos, +++ (u == 'u' +++ ? "expected four hex digits in \ +++string break character point" +++ : "expected eight hex digits in \ +++string break character point")); +++ } +++ (sym++)[0] = c; +++ i += 1; +++ } +++ while (i < numdigits); +++ +++ /* Skip white spaces. */ +++ while (1) +++ { +++ c = next_char (ref_l, ref_s, false); +++ if (!ISSPACE (c)) +++ break; +++ } +++ +++ /* Comma or end of list. */ +++ if (c == ')') +++ { +++ (sym++)[0] = c; +++ break; +++ } +++ +++ SCAN_ERROR (c != ',', *start_l, *ref_s, +++ "expected , or ) in string break"); +++ } +++ else +++ { +++ SCAN_ERROR (true, *start_l, *ref_s, +++ "unterminated list of character codes"); +++ } +++ } +++ break; +++ } +++ default: +++ SCAN_ERROR (true, *start_l, *ref_s, "invalid string break sequence"); +++ } +++ } +++ else +++ { +++ SCAN_ERROR (EOL (c), *start_l, *start_c, "string exceeds end of line"); +++ (sym++)[0] = c; +++ } +++ c = next_char (ref_l, ref_s, false); +++ } +++ SCAN_ERROR (*ref_l == NO_LINE, *start_l, *start_c, "unterminated string"); +++ c = next_char (ref_l, ref_s, false); +++ if (c == QUOTE_CHAR) +++ (sym++)[0] = QUOTE_CHAR; +++ else +++ stop = true; +++ } +++ sym[0] = '\0'; +++ *att = (in_format ? LITERAL : ROW_CHAR_DENOTATION); +++ } +++ else if (strchr ("#$()[]{},;@", c) != NO_TEXT) +++ { +++ /* Single character symbols. */ +++ (sym++)[0] = c; +++ (void) next_char (ref_l, ref_s, false); +++ sym[0] = '\0'; +++ *att = STOP; +++ } +++ else if (c == '|') +++ { +++ /* Bar. */ +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ if (c == ':') +++ { +++ (sym++)[0] = c; +++ (void) next_char (ref_l, ref_s, false); +++ } +++ sym[0] = '\0'; +++ *att = STOP; +++ } +++ else if (c == ':') +++ { +++ /* Colon, semicolon, IS, ISNT. */ +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ if (c == '=') +++ { +++ (sym++)[0] = c; +++ if ((c = next_char (ref_l, ref_s, false)) == ':') +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ } +++ } +++ else if (c == '/') +++ { +++ (sym++)[0] = c; +++ if ((c = next_char (ref_l, ref_s, false)) == '=') +++ { +++ (sym++)[0] = c; +++ if ((c = next_char (ref_l, ref_s, false)) == ':') +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ } +++ } +++ } +++ else if (c == ':') +++ { +++ (sym++)[0] = c; +++ if ((c = next_char (ref_l, ref_s, false)) == '=') +++ (sym++)[0] = c; +++ } +++ +++ sym[0] = '\0'; +++ *att = STOP; +++ +++ } +++ else if (c == '=') +++ { +++ /* Operator starting with "=". */ +++ char *scanned = sym; +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ if (strchr (NOMADS, c) != NO_TEXT) +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ } +++ if (c == '=') +++ { +++ (sym++)[0] = c; +++ if (next_char (ref_l, ref_s, false) == ':') +++ { +++ (sym++)[0] = ':'; +++ c = next_char (ref_l, ref_s, false); +++ if (strlen (sym) < 4 && c == '=') +++ { +++ (sym++)[0] = '='; +++ (void) next_char (ref_l, ref_s, false); +++ } +++ } +++ } +++ else if (c == ':') +++ { +++ (sym++)[0] = c; +++ sym[0] = '\0'; +++ if (next_char (ref_l, ref_s, false) == '=') +++ { +++ (sym++)[0] = '='; +++ (void) next_char (ref_l, ref_s, false); +++ } +++ else +++ { +++ SCAN_ERROR (!(strcmp (scanned, "=:") == 0 || strcmp (scanned, "==:") == 0), +++ *start_l, *start_c, "invalid operator tag"); +++ } +++ } +++ sym[0] = '\0'; +++ if (strcmp (scanned, "=") == 0) +++ *att = EQUALS_SYMBOL; +++ else +++ *att = OPERATOR; +++ } +++ else if (strchr (MONADS, c) != NO_TEXT || strchr (NOMADS, c) != NO_TEXT) +++ { +++ /* Operator. */ +++ char *scanned = sym; +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ if (strchr (NOMADS, c) != NO_TEXT) +++ { +++ (sym++)[0] = c; +++ c = next_char (ref_l, ref_s, false); +++ } +++ if (c == '=') +++ { +++ (sym++)[0] = c; +++ if (next_char (ref_l, ref_s, false) == ':') +++ { +++ (sym++)[0] = ':'; +++ c = next_char (ref_l, ref_s, false); +++ if (strlen (scanned) < 4 && c == '=') +++ { +++ (sym++)[0] = '='; +++ (void) next_char (ref_l, ref_s, false); +++ } +++ } +++ } +++ else if (c == ':') +++ { +++ (sym++)[0] = c; +++ sym[0] = '\0'; +++ if (next_char (ref_l, ref_s, false) == '=') +++ { +++ (sym++)[0] = '='; +++ sym[0] = '\0'; +++ (void) next_char (ref_l, ref_s, false); +++ } +++ else +++ { +++ SCAN_ERROR (strcmp (&(scanned[1]), "=:") != 0, +++ *start_l, *start_c, "invalid operator tag"); +++ } +++ } +++ sym[0] = '\0'; +++ *att = OPERATOR; +++ } +++ else +++ { +++ /* Afuuus ... strange characters!. */ +++ unworthy (*start_l, *start_c, (int) c); +++ } +++} +++ +++/* Whether att opens an embedded clause. */ +++ +++static bool +++open_nested_clause (int att) +++{ +++ switch (att) +++ { +++ case OPEN_SYMBOL: +++ case BEGIN_SYMBOL: +++ case PAR_SYMBOL: +++ case IF_SYMBOL: +++ case CASE_SYMBOL: +++ case FOR_SYMBOL: +++ case FROM_SYMBOL: +++ case BY_SYMBOL: +++ case TO_SYMBOL: +++ case WHILE_SYMBOL: +++ case DO_SYMBOL: +++ case SUB_SYMBOL: +++ return true; +++ } +++ return false; +++} +++ +++/* Whether att closes an embedded clause. */ +++ +++static bool +++close_nested_clause (int att) +++{ +++ switch (att) +++ { +++ case CLOSE_SYMBOL: +++ case END_SYMBOL: +++ case FI_SYMBOL: +++ case ESAC_SYMBOL: +++ case OD_SYMBOL: +++ case BUS_SYMBOL: +++ return true; +++ } +++ return false; +++} +++ +++/* Cast a string to lower case. */ +++ +++static void +++make_lower_case (char *p) +++{ +++ for (; p != NO_TEXT && p[0] != '\0'; p++) +++ p[0] = TOLOWER (p[0]); +++} +++ +++/* Cast a string to upper case. */ +++ +++static void +++make_upper_case (char *p) +++{ +++ for (; p != NO_TEXT && p[0] != '\0'; p++) +++ p[0] = TOUPPER (p[0]); +++} +++ +++/* Construct a linear list of tokens. */ +++ +++static void +++tokenise_source (NODE_T **root, int level, bool in_format, +++ LINE_T **l, char **s, LINE_T **start_l, +++ char **start_c) +++{ +++ char *pragmat_lpr = NO_TEXT; +++ int pragmat_lprt = 0; +++ LINE_T *pragmat_lprl = NO_LINE; +++ char *pragmat_lprc = NULL; +++ +++ char *comment_lpr = NO_TEXT; +++ int comment_lprt = 0; +++ LINE_T *comment_lprl = NO_LINE; +++ char *comment_lprc = NULL; +++ +++ while (l != NO_VAR && !A68_PARSER (stop_scanner)) +++ { +++ enum a68_attribute att = STOP; +++ get_next_token (in_format, l, s, start_l, start_c, &att); +++ +++ if (A68_PARSER (scan_buf)[0] == STOP_CHAR) +++ A68_PARSER (stop_scanner) = true; +++ else if (strlen (A68_PARSER (scan_buf)) > 0 || att == ROW_CHAR_DENOTATION || att == LITERAL) +++ { +++ KEYWORD_T *kw; +++ const char *c = NO_TEXT; +++ bool make_node = true; +++ const char *trailing = NO_TEXT; +++ +++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) +++ { +++ /* In UPPER stropping all symbols in R9.4.1 are expressed as bold +++ tags like "BEGIN", or symbols like "@". */ +++ +++ /* In this stropping regime there is no need to handle +++ identifiers for which taggles were adjacent to underscores +++ specially. */ +++ if (att != IDENTIFIER && att != IDENTIFIER_WITH_UNDERSCORES) +++ kw = a68_find_keyword (A68 (top_keyword), A68_PARSER (scan_buf)); +++ else +++ kw = NO_KEYWORD; +++ } +++ else +++ { +++ /* In SUPPER stropping all symbols in R9.4.1 are expressed as +++ tags like "begin", or symbols like "@". */ +++ +++ /* Normalize bold tags to all upper-case letters. */ +++ if (att == BOLD_TAG) +++ make_upper_case (A68_PARSER (scan_buf)); +++ +++ /* If any of the taggles of the scanned identifier were adjacent +++ to an underscore, that inhibits interpreting it as a +++ keyword. */ +++ if (att != BOLD_TAG && att != IDENTIFIER_WITH_UNDERSCORES) +++ kw = a68_find_keyword (A68 (top_keyword), A68_PARSER (scan_buf)); +++ else +++ kw = NO_KEYWORD; +++ } +++ +++ /* Beyond this point it is irrelevant whether an identifier had +++ taggles adjacent to an underscore. */ +++ if (att == IDENTIFIER_WITH_UNDERSCORES) +++ att = IDENTIFIER; +++ +++ if (kw == NO_KEYWORD || att == ROW_CHAR_DENOTATION) +++ { +++ if (att == IDENTIFIER) +++ make_lower_case (A68_PARSER (scan_buf)); +++ if (att != ROW_CHAR_DENOTATION && att != LITERAL) +++ { +++ size_t len = strlen (A68_PARSER (scan_buf)); +++ while (len >= 1 && A68_PARSER (scan_buf)[len - 1] == '_') +++ { +++ trailing = "_"; +++ A68_PARSER (scan_buf)[len - 1] = NULL_CHAR; +++ len--; +++ } +++ } +++ c = TEXT (a68_add_token (&A68 (top_token), A68_PARSER (scan_buf))); +++ } +++ else +++ { +++ if (IS (kw, TO_SYMBOL)) +++ { +++ /* Merge GO and TO to GOTO. */ +++ if (*root != NO_NODE && IS (*root, GO_SYMBOL)) +++ { +++ ATTRIBUTE (*root) = GOTO_SYMBOL; +++ NSYMBOL (*root) = TEXT (a68_find_keyword (A68 (top_keyword), "GOTO")); +++ make_node = false; +++ } +++ else +++ { +++ att = ATTRIBUTE (kw); +++ c = TEXT (kw); +++ } +++ } +++ else +++ { +++ if (OPTION_STROPPING (&A68_JOB) == UPPER_STROPPING) +++ { +++ if (att == 0 || att == BOLD_TAG) +++ att = ATTRIBUTE (kw); +++ } +++ else +++ { +++ if (att == 0 || att == IDENTIFIER) +++ att = ATTRIBUTE (kw); +++ } +++ +++ c = TEXT (kw); +++ /* Handle pragments. */ +++ if (att == STYLE_II_COMMENT_SYMBOL +++ || att == STYLE_I_COMMENT_SYMBOL +++ || att == BOLD_COMMENT_SYMBOL +++ || att == BOLD_COMMENT_BEGIN_SYMBOL +++ || att == BRIEF_COMMENT_BEGIN_SYMBOL) +++ { +++ char *nlpr = pragment (ATTRIBUTE (kw), l, s); +++ +++ if (comment_lpr == NO_TEXT +++ || (int) strlen (comment_lpr) == 0) +++ comment_lpr = nlpr; +++ else +++ { +++ char *stale = comment_lpr; +++ comment_lpr +++ = a68_new_string (comment_lpr, "n\n", nlpr, NO_TEXT); +++ free (stale); +++ } +++ comment_lprt = att; +++ comment_lprl = *start_l; +++ comment_lprc = *start_c; +++ make_node = false; +++ } +++ else if (att == STYLE_I_PRAGMAT_SYMBOL +++ || att == BOLD_PRAGMAT_SYMBOL) +++ { +++ char *nlpr = pragment (ATTRIBUTE (kw), l, s); +++ if (pragmat_lpr == NO_TEXT +++ || (int) strlen (pragmat_lpr) == 0) +++ pragmat_lpr = nlpr; +++ else +++ { +++ char *stale = pragmat_lpr; +++ pragmat_lpr +++ = a68_new_string (pragmat_lpr, " ", nlpr, NO_TEXT); +++ free (stale); +++ } +++ pragmat_lprt = att; +++ pragmat_lprl = *start_l; +++ pragmat_lprc = *start_c; +++ if (!A68_PARSER (stop_scanner)) +++ make_node = false; +++ } +++ } +++ } +++ /* Add token to the tree. */ +++ if (make_node) +++ { +++ NODE_T *q = a68_new_node (); +++ INFO (q) = a68_new_node_info (); +++ +++ switch (att) +++ { +++ case ASSIGN_SYMBOL: +++ case END_SYMBOL: +++ case ESAC_SYMBOL: +++ case OD_SYMBOL: +++ case OF_SYMBOL: +++ case FI_SYMBOL: +++ case CLOSE_SYMBOL: +++ case BUS_SYMBOL: +++ case COLON_SYMBOL: +++ case COMMA_SYMBOL: +++ case SEMI_SYMBOL: +++ GINFO (q) = NO_GINFO; +++ break; +++ default: +++ GINFO (q) = a68_new_genie_info (); +++ break; +++ } +++ +++ STATUS (q) = (STATUS_MASK_T) 0; +++ LINE (INFO (q)) = *start_l; +++ CHAR_IN_LINE (INFO (q)) = *start_c; +++ PRIO (INFO (q)) = 0; +++ PROCEDURE_LEVEL (INFO (q)) = 0; +++ ATTRIBUTE (q) = att; +++ NSYMBOL (q) = c; +++ PREVIOUS (q) = *root; +++ SUB (q) = NEXT (q) = NO_NODE; +++ TABLE (q) = NO_TABLE; +++ MOID (q) = NO_MOID; +++ TAX (q) = NO_TAG; +++ if (pragmat_lpr != NO_TEXT) +++ { +++ NPRAGMAT (q) = pragmat_lpr; +++ NPRAGMAT_TYPE (q) = pragmat_lprt; +++ NPRAGMAT_LINE (q) = pragmat_lprl; +++ NPRAGMAT_CHAR_IN_LINE (q) = pragmat_lprc; +++ pragmat_lpr = NO_TEXT; +++ pragmat_lprt = 0; +++ } +++ if (comment_lpr != NO_TEXT) +++ { +++ NCOMMENT (q) = comment_lpr; +++ NCOMMENT_TYPE (q) = comment_lprt; +++ NCOMMENT_LINE (q) = comment_lprl; +++ NCOMMENT_CHAR_IN_LINE (q) = comment_lprc; +++ comment_lpr = NO_TEXT; +++ comment_lprt = 0; +++ } +++ if (*root != NO_NODE) +++ NEXT (*root) = q; +++ if (TOP_NODE (&A68_JOB) == NO_NODE) +++ TOP_NODE (&A68_JOB) = q; +++ *root = q; +++ if (trailing != NO_TEXT) +++ a68_warning (q, 0, +++ "ignoring trailing character H in A", +++ trailing, att); +++ } +++ /* Redirection in tokenising formats. The scanner is a recursive-descent type as +++ to know when it scans a format text and when not. */ +++ if (in_format && att == FORMAT_DELIMITER_SYMBOL) +++ return; +++ else if (!in_format && att == FORMAT_DELIMITER_SYMBOL) +++ tokenise_source (root, level + 1, true, l, s, start_l, start_c); +++ else if (in_format && open_nested_clause (att)) +++ { +++ NODE_T *z = PREVIOUS (*root); +++ +++ if (z != NO_NODE && a68_is_one_of (z, FORMAT_ITEM_N, FORMAT_ITEM_G, FORMAT_ITEM_H, +++ FORMAT_ITEM_F, STOP)) +++ { +++ tokenise_source (root, level, false, l, s, start_l, start_c); +++ } +++ else if (att == OPEN_SYMBOL) +++ ATTRIBUTE (*root) = FORMAT_OPEN_SYMBOL; +++ else if (OPTION_BRACKETS (&A68_JOB) && att == SUB_SYMBOL) +++ ATTRIBUTE (*root) = FORMAT_OPEN_SYMBOL; +++ } +++ else if (!in_format && level > 0 && open_nested_clause (att)) +++ tokenise_source (root, level + 1, false, l, s, start_l, start_c); +++ else if (!in_format && level > 0 && close_nested_clause (att)) +++ return; +++ else if (in_format && att == CLOSE_SYMBOL) +++ ATTRIBUTE (*root) = FORMAT_CLOSE_SYMBOL; +++ else if (OPTION_BRACKETS (&A68_JOB) && in_format && att == BUS_SYMBOL) +++ ATTRIBUTE (*root) = FORMAT_CLOSE_SYMBOL; +++ } +++ } +++} +++ +++/* Tokenise source file, build initial syntax tree. */ +++ +++bool +++a68_lexical_analyser (const char *filename) +++{ +++ LINE_T *l = NO_LINE, *start_l = NO_LINE; +++ char *s = NO_TEXT, *start_c = NO_TEXT; +++ NODE_T *root = NO_NODE; +++ +++ /* Read the source file into lines. */ +++ if (!read_source_file (filename)) +++ return false; +++ +++ /* Start tokenising. */ +++ A68_PARSER (stop_scanner) = false; +++ if ((l = TOP_LINE (&A68_JOB)) != NO_LINE) +++ s = STRING (l); +++ tokenise_source (&root, 0, false, &l, &s, &start_l, &start_c); +++ +++ /* If the source is a prelude packet then we should remove the prelude and +++ postlude nodes from the token stream. We distinguish these nodes by +++ location. +++ +++ Yes this is crude and creepy but it works and it is less annoying than not +++ adding the prelude/postlude in read_source_file and I got other fish to +++ fry at this moment. Somebody please fix this in a decent way, thanks - +++ jemarch. */ +++ +++ NODE_T *p = TOP_NODE (&A68_JOB); +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ LINE_T *l = LINE (INFO (p)); +++ if (strcmp (FILENAME (l), "prelude") != 0) +++ break; +++ } +++ +++ if (p != NO_NODE && IS (p, MODULE_SYMBOL)) +++ { +++ p = TOP_NODE (&A68_JOB); +++ while (p != NO_NODE) +++ { +++ LINE_T *l = LINE (INFO (p)); +++ if (strcmp (FILENAME (l), "prelude") == 0 +++ || strcmp (FILENAME (l), "postlude") == 0) +++ { +++ if (PREVIOUS (p) != NO_NODE) +++ NEXT (PREVIOUS (p)) = NEXT (p); +++ else +++ TOP_NODE (&A68_JOB) = NEXT (p); +++ +++ if (NEXT (p) != NO_NODE) +++ PREVIOUS (NEXT (p)) = PREVIOUS (p); +++ +++ NODE_T *next = NEXT (p); +++ p = next; +++ } +++ else +++ p = FORWARD (p); +++ } +++ } +++ +++ /* Note that A68_PARSER (scan_buf) and A68_PARSER (max_scan_buf_length) are +++ allocated by read_source_line. */ +++ free (A68_PARSER (scan_buf)); +++ A68_PARSER (scan_buf) = NULL; +++ A68_PARSER (max_scan_buf_length) = 0; +++ return true; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-scope.cc ++@@ -0,0 +1,986 @@ +++/* Static scope checker. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++/* A static scope checker inspects the source. Note that ALGOL 68 also needs +++ dynamic scope checking. This phase concludes the parser. */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++typedef struct TUPLE_T TUPLE_T; +++typedef struct SCOPE_T SCOPE_T; +++ +++struct TUPLE_T +++{ +++ int level; +++ bool transient; +++}; +++ +++struct SCOPE_T +++{ +++ NODE_T *where; +++ TUPLE_T tuple; +++ SCOPE_T *next; +++}; +++ +++enum { NOT_TRANSIENT = 0, TRANSIENT }; +++ +++static void gather_scopes_for_youngest (NODE_T *, SCOPE_T **); +++static void scope_statement (NODE_T *, SCOPE_T **); +++static void scope_enclosed_clause (NODE_T *, SCOPE_T **); +++static void scope_formula (NODE_T *, SCOPE_T **); +++static void scope_routine_text (NODE_T *, SCOPE_T **); +++ +++/* +++ * Static scope checker. +++ */ +++ +++/* Scope_make_tuple. */ +++ +++static TUPLE_T +++scope_make_tuple (int e, int t) +++{ +++ static TUPLE_T z; +++ LEVEL (&z) = e; +++ TRANSIENT (&z) = t; +++ return z; +++} +++ +++/* Link scope information into the list. */ +++ +++static void +++scope_add (SCOPE_T **sl, NODE_T *p, TUPLE_T tup) +++{ +++ if (sl != NO_VAR) +++ { +++ SCOPE_T *ns = (SCOPE_T *) xmalloc (sizeof (SCOPE_T)); +++ WHERE (ns) = p; +++ TUPLE (ns) = tup; +++ NEXT (ns) = *sl; +++ *sl = ns; +++ } +++} +++ +++/* Scope_check. */ +++ +++static bool +++scope_check (SCOPE_T *top, int mask, int dest) +++{ +++ int errors = 0; +++ +++ /* Transient names cannot be stored. */ +++ if (mask & TRANSIENT) +++ { +++ for (SCOPE_T *s = top; s != NO_SCOPE; FORWARD (s)) +++ { +++ if (TRANSIENT (&TUPLE (s)) & TRANSIENT) +++ { +++ a68_error (WHERE (s), "attempt at storing a transient name"); +++ STATUS_SET (WHERE (s), SCOPE_ERROR_MASK); +++ errors++; +++ } +++ } +++ } +++ +++ /* Potential scope violations. */ +++ for (SCOPE_T *s = top; s != NO_SCOPE; FORWARD (s)) +++ { +++ if (dest < LEVEL (&TUPLE (s)) && !STATUS_TEST (WHERE (s), SCOPE_ERROR_MASK)) +++ { +++ MOID_T *ws = MOID (WHERE (s)); +++ +++ if (ws != NO_MOID) +++ { +++ if (IS_REF (ws) || IS (ws, PROC_SYMBOL) || IS (ws, FORMAT_SYMBOL) || IS (ws, UNION_SYMBOL)) +++ a68_warning (WHERE (s), OPT_Wscope, "M A is a potential scope violation", +++ MOID (WHERE (s)), ATTRIBUTE (WHERE (s))); +++ } +++ STATUS_SET (WHERE (s), SCOPE_ERROR_MASK); +++ errors++; +++ } +++ } +++ return (errors == 0); +++} +++ +++/* Scope_check_multiple. */ +++ +++static bool +++scope_check_multiple (SCOPE_T *top, int mask, SCOPE_T *dest) +++{ +++ bool no_err = true; +++ +++ for (; dest != NO_SCOPE; FORWARD (dest)) +++ no_err = no_err && scope_check (top, mask, LEVEL (&TUPLE (dest))); +++ return no_err; +++} +++ +++/* Check_identifier_usage. */ +++ +++static void +++check_identifier_usage (TAG_T *t, NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, IDENTIFIER) && TAX (p) == t && ATTRIBUTE (MOID (t)) != PROC_SYMBOL) +++ a68_warning (p, OPT_Wuninitialized, "identifier S might be used uninitialised"); +++ check_identifier_usage (t, SUB (p)); +++ } +++} +++ +++/* Scope_find_youngest_outside. */ +++ +++static TUPLE_T +++scope_find_youngest_outside (SCOPE_T *s, int treshold) +++{ +++ TUPLE_T z = scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT); +++ +++ for (; s != NO_SCOPE; FORWARD (s)) +++ { +++ if (LEVEL (&TUPLE (s)) > LEVEL (&z) && LEVEL (&TUPLE (s)) <= treshold) +++ z = TUPLE (s); +++ } +++ return z; +++} +++ +++/* Scope_find_youngest. */ +++ +++static TUPLE_T +++scope_find_youngest (SCOPE_T *s) +++{ +++ return scope_find_youngest_outside (s, INT_MAX); +++} +++ +++/* +++ * Routines for determining scope of ROUTINE TEXT or FORMAT TEXT. +++ */ +++ +++/* Get_declarer_elements. */ +++ +++static void +++get_declarer_elements (NODE_T *p, SCOPE_T **r, bool no_ref) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, BOUNDS)) +++ gather_scopes_for_youngest (SUB (p), r); +++ else if (IS (p, INDICANT)) +++ { +++ if (MOID (p) != NO_MOID && TAX (p) != NO_TAG && HAS_ROWS (MOID (p)) && no_ref) +++ scope_add (r, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); +++ } +++ else if (IS_REF (p)) +++ get_declarer_elements (NEXT (p), r, false); +++ else if (a68_is_one_of (p, PROC_SYMBOL, UNION_SYMBOL, STOP)) +++ ; +++ else +++ { +++ get_declarer_elements (SUB (p), r, no_ref); +++ get_declarer_elements (NEXT (p), r, no_ref); +++ } +++ } +++} +++ +++/* Gather_scopes_for_youngest. */ +++ +++static void +++gather_scopes_for_youngest (NODE_T *p, SCOPE_T **s) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if ((a68_is_one_of (p, ROUTINE_TEXT, FORMAT_TEXT, STOP)) +++ && (YOUNGEST_ENVIRON (TAX (p)) == PRIMAL_SCOPE)) +++ { +++ SCOPE_T *t = NO_SCOPE; +++ TUPLE_T tup; +++ +++ gather_scopes_for_youngest (SUB (p), &t); +++ tup = scope_find_youngest_outside (t, LEX_LEVEL (p)); +++ YOUNGEST_ENVIRON (TAX (p)) = LEVEL (&tup); +++ /* Direct link into list iso "gather_scopes_for_youngest (SUB (p), +++ s);". */ +++ if (t != NO_SCOPE) +++ { +++ SCOPE_T *u = t; +++ while (NEXT (u) != NO_SCOPE) { +++ FORWARD (u); +++ } +++ NEXT (u) = *s; +++ (*s) = t; +++ } +++ } +++ else if (a68_is_one_of (p, IDENTIFIER, OPERATOR, STOP)) +++ { +++ if (TAX (p) != NO_TAG && TAG_LEX_LEVEL (TAX (p)) != PRIMAL_SCOPE) +++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); +++ } +++ else if (IS (p, DECLARER)) +++ get_declarer_elements (p, s, true); +++ else +++ gather_scopes_for_youngest (SUB (p), s); +++ } +++} +++ +++/* Get_youngest_environs. */ +++ +++static void +++get_youngest_environs (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (a68_is_one_of (p, ROUTINE_TEXT, FORMAT_TEXT, STOP)) +++ { +++ SCOPE_T *s = NO_SCOPE; +++ TUPLE_T tup; +++ gather_scopes_for_youngest (SUB (p), &s); +++ tup = scope_find_youngest_outside (s, LEX_LEVEL (p)); +++ YOUNGEST_ENVIRON (TAX (p)) = LEVEL (&tup); +++ } +++ else +++ get_youngest_environs (SUB (p)); +++ } +++} +++ +++/* Bind_scope_to_tag. */ +++ +++static void +++bind_scope_to_tag (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, DEFINING_IDENTIFIER) && MOID (p) == M_FORMAT) +++ { +++ if (IS (NEXT_NEXT (p), FORMAT_TEXT)) +++ { +++ SCOPE (TAX (p)) = YOUNGEST_ENVIRON (TAX (NEXT_NEXT (p))); +++ SCOPE_ASSIGNED (TAX (p)) = true; +++ } +++ return; +++ } +++ else if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ if (IS (NEXT_NEXT (p), ROUTINE_TEXT)) +++ { +++ SCOPE (TAX (p)) = YOUNGEST_ENVIRON (TAX (NEXT_NEXT (p))); +++ SCOPE_ASSIGNED (TAX (p)) = true; +++ } +++ return; +++ } +++ else +++ bind_scope_to_tag (SUB (p)); +++ } +++} +++ +++/* Bind_scope_to_tags. */ +++ +++static void +++bind_scope_to_tags (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (a68_is_one_of (p, PROCEDURE_DECLARATION, IDENTITY_DECLARATION, STOP)) +++ bind_scope_to_tag (SUB (p)); +++ else +++ bind_scope_to_tags (SUB (p)); +++ } +++} +++ +++/* Scope_bounds. */ +++ +++static void +++scope_bounds (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, UNIT)) +++ scope_statement (p, NO_VAR); +++ else +++ scope_bounds (SUB (p)); +++ } +++} +++ +++/* Scope_declarer. */ +++ +++static void +++scope_declarer (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, BOUNDS)) +++ scope_bounds (SUB (p)); +++ else if (IS (p, INDICANT)) +++ ; +++ else if (IS_REF (p)) +++ scope_declarer (NEXT (p)); +++ else if (a68_is_one_of (p, PROC_SYMBOL, UNION_SYMBOL, STOP)) +++ ; +++ else +++ { +++ scope_declarer (SUB (p)); +++ scope_declarer (NEXT (p)); +++ } +++ } +++} +++ +++/* Scope_identity_declaration. */ +++ +++static void +++scope_identity_declaration (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ scope_identity_declaration (SUB (p)); +++ +++ if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ NODE_T *unit = NEXT_NEXT (p); +++ SCOPE_T *s = NO_SCOPE; +++ TUPLE_T tup; +++ int z = PRIMAL_SCOPE; +++ +++ if (ATTRIBUTE (MOID (TAX (p))) != PROC_SYMBOL) +++ check_identifier_usage (TAX (p), unit); +++ scope_statement (unit, &s); +++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); +++ tup = scope_find_youngest (s); +++ z = LEVEL (&tup); +++ if (z < LEX_LEVEL (p)) +++ { +++ SCOPE (TAX (p)) = z; +++ SCOPE_ASSIGNED (TAX (p)) = true; +++ } +++ return; +++ } +++ } +++} +++ +++/* Scope_variable_declaration. */ +++ +++static void +++scope_variable_declaration (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ scope_variable_declaration (SUB (p)); +++ if (IS (p, DECLARER)) +++ scope_declarer (SUB (p)); +++ else if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ if (a68_whether (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, UNIT, STOP)) +++ { +++ NODE_T *unit = NEXT_NEXT (p); +++ SCOPE_T *s = NO_SCOPE; +++ check_identifier_usage (TAX (p), unit); +++ scope_statement (unit, &s); +++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); +++ return; +++ } +++ } +++ } +++} +++ +++/* Scope_procedure_declaration. */ +++ +++static void +++scope_procedure_declaration (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ scope_procedure_declaration (SUB (p)); +++ +++ if (a68_is_one_of (p, DEFINING_IDENTIFIER, DEFINING_OPERATOR, STOP)) +++ { +++ NODE_T *unit = NEXT_NEXT (p); +++ SCOPE_T *s = NO_SCOPE; +++ +++ scope_statement (unit, &s); +++ (void) scope_check (s, NOT_TRANSIENT, LEX_LEVEL (p)); +++ return; +++ } +++ } +++} +++ +++/* Scope_declaration_list. */ +++ +++static void +++scope_declaration_list (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, IDENTITY_DECLARATION)) +++ scope_identity_declaration (SUB (p)); +++ else if (IS (p, VARIABLE_DECLARATION)) +++ scope_variable_declaration (SUB (p)); +++ else if (IS (p, MODE_DECLARATION)) +++ scope_declarer (SUB (p)); +++ else if (IS (p, PRIORITY_DECLARATION)) +++ ; +++ else if (IS (p, PROCEDURE_DECLARATION)) +++ scope_procedure_declaration (SUB (p)); +++ else if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) +++ scope_procedure_declaration (SUB (p)); +++ else if (a68_is_one_of (p, BRIEF_OPERATOR_DECLARATION, OPERATOR_DECLARATION, STOP)) +++ scope_procedure_declaration (SUB (p)); +++ else +++ { +++ scope_declaration_list (SUB (p)); +++ scope_declaration_list (NEXT (p)); +++ } +++ } +++} +++ +++/* Scope_arguments. */ +++ +++static void +++scope_arguments (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, UNIT)) +++ { +++ SCOPE_T *s = NO_SCOPE; +++ scope_statement (p, &s); +++ (void) scope_check (s, TRANSIENT, LEX_LEVEL (p)); +++ } +++ else +++ scope_arguments (SUB (p)); +++ } +++} +++ +++/* Is_coercion. */ +++ +++static bool +++is_coercion (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ switch (ATTRIBUTE (p)) +++ { +++ case DEPROCEDURING: +++ case DEREFERENCING: +++ case UNITING: +++ case ROWING: +++ case WIDENING: +++ case VOIDING: +++ case PROCEDURING: +++ return true; +++ default: +++ return false; +++ } +++ } +++ else +++ return false; +++} +++ +++/* Scope_coercion. */ +++ +++static void +++scope_coercion (NODE_T *p, SCOPE_T **s) +++{ +++ if (is_coercion (p)) +++ { +++ if (IS (p, VOIDING)) +++ scope_coercion (SUB (p), NO_VAR); +++ else if (IS (p, DEREFERENCING)) +++ /* Leave this to the dynamic scope checker. */ +++ scope_coercion (SUB (p), NO_VAR); +++ else if (IS (p, DEPROCEDURING)) +++ scope_coercion (SUB (p), NO_VAR); +++ else if (IS (p, ROWING)) +++ { +++ SCOPE_T *z = NO_SCOPE; +++ +++ scope_coercion (SUB (p), &z); +++ (void) scope_check (z, TRANSIENT, LEX_LEVEL (p)); +++ if (IS_REF_FLEX (MOID (SUB (p)))) +++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); +++ else +++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), NOT_TRANSIENT)); +++ } +++ else if (IS (p, PROCEDURING)) +++ { +++ /* Can only be a JUMP. */ +++ NODE_T *q = SUB_SUB (p); +++ if (IS (q, GOTO_SYMBOL)) +++ FORWARD (q); +++ +++ scope_add (s, q, scope_make_tuple (TAG_LEX_LEVEL (TAX (q)), NOT_TRANSIENT)); +++ } +++ else if (IS (p, UNITING)) +++ { +++ SCOPE_T *z = NO_SCOPE; +++ +++ scope_coercion (SUB (p), &z); +++ if (z != NO_SCOPE) +++ { +++ (void) scope_check (z, TRANSIENT, LEX_LEVEL (p)); +++ scope_add (s, p, scope_find_youngest (z)); +++ } +++ } +++ else +++ scope_coercion (SUB (p), s); +++ } +++ else +++ scope_statement (p, s); +++} +++ +++/* Scope_format_text. */ +++ +++static void +++scope_format_text (NODE_T *p, SCOPE_T **s) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, FORMAT_PATTERN)) +++ scope_enclosed_clause (SUB (NEXT_SUB (p)), s); +++ else if (IS (p, FORMAT_ITEM_G) && NEXT (p) != NO_NODE) +++ scope_enclosed_clause (SUB_NEXT (p), s); +++ else if (IS (p, DYNAMIC_REPLICATOR)) +++ scope_enclosed_clause (SUB (NEXT_SUB (p)), s); +++ else +++ scope_format_text (SUB (p), s); +++ } +++} +++ +++/* Scope_operand. */ +++ +++static void +++scope_operand (NODE_T *p, SCOPE_T **s) +++{ +++ if (IS (p, MONADIC_FORMULA)) +++ scope_operand (NEXT_SUB (p), s); +++ else if (IS (p, FORMULA)) +++ scope_formula (p, s); +++ else if (IS (p, SECONDARY)) +++ scope_statement (SUB (p), s); +++} +++ +++/* Scope_formula. */ +++ +++static void +++scope_formula (NODE_T *p, SCOPE_T **s) +++{ +++ NODE_T *q = SUB (p); +++ SCOPE_T *s2 = NO_SCOPE; +++ +++ scope_operand (q, &s2); +++ (void) scope_check (s2, TRANSIENT, LEX_LEVEL (p)); +++ if (NEXT (q) != NO_NODE) +++ { +++ SCOPE_T *s3 = NO_SCOPE; +++ scope_operand (NEXT_NEXT (q), &s3); +++ (void) scope_check (s3, TRANSIENT, LEX_LEVEL (p)); +++ } +++ (void) s; +++} +++ +++/* Scope_routine_text. */ +++ +++static void +++scope_routine_text (NODE_T *p, SCOPE_T **s) +++{ +++ NODE_T *q = SUB (p); +++ NODE_T *routine = (IS (q, PARAMETER_PACK) ? NEXT (q) : q); +++ SCOPE_T *x = NO_SCOPE; +++ +++ scope_statement (NEXT_NEXT (routine), &x); +++ (void) scope_check (x, TRANSIENT, LEX_LEVEL (p)); +++ TUPLE_T routine_tuple = scope_make_tuple (YOUNGEST_ENVIRON (TAX (p)), NOT_TRANSIENT); +++ scope_add (s, p, routine_tuple); +++} +++ +++/* Scope_statement. */ +++ +++static void +++scope_statement (NODE_T *p, SCOPE_T **s) +++{ +++ if (is_coercion (p)) +++ scope_coercion (p, s); +++ else if (a68_is_one_of (p, PRIMARY, SECONDARY, TERTIARY, UNIT, STOP)) +++ scope_statement (SUB (p), s); +++ else if (a68_is_one_of (p, NIHIL, STOP)) +++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); +++ else if (IS (p, DENOTATION)) +++ ; +++ else if (IS (p, IDENTIFIER)) +++ { +++ if (IS_REF (MOID (p))) +++ { +++ if (PRIO (TAX (p)) == PARAMETER_IDENTIFIER) +++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)) - 1, NOT_TRANSIENT)); +++ else +++ { +++ if (HEAP (TAX (p)) == HEAP_SYMBOL) +++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); +++ else if (SCOPE_ASSIGNED (TAX (p))) +++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); +++ else +++ scope_add (s, p, scope_make_tuple (TAG_LEX_LEVEL (TAX (p)), NOT_TRANSIENT)); +++ } +++ } +++ else if (ATTRIBUTE (MOID (p)) == PROC_SYMBOL && SCOPE_ASSIGNED (TAX (p)) == true) +++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); +++ else if (MOID (p) == M_FORMAT && SCOPE_ASSIGNED (TAX (p)) == true) +++ scope_add (s, p, scope_make_tuple (SCOPE (TAX (p)), NOT_TRANSIENT)); +++ } +++ else if (IS (p, ENCLOSED_CLAUSE)) +++ scope_enclosed_clause (SUB (p), s); +++ else if (IS (p, CALL)) +++ { +++ SCOPE_T *x = NO_SCOPE; +++ +++ scope_statement (SUB (p), &x); +++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); +++ scope_arguments (NEXT_SUB (p)); +++ } +++ else if (IS (p, SLICE)) +++ { +++ SCOPE_T *x = NO_SCOPE; +++ MOID_T *m = MOID (SUB (p)); +++ +++ if (IS_REF (m)) +++ { +++ if (ATTRIBUTE (SUB (p)) == PRIMARY && ATTRIBUTE (SUB_SUB (p)) == SLICE) +++ scope_statement (SUB (p), s); +++ else +++ { +++ scope_statement (SUB (p), &x); +++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); +++ } +++ if (IS_FLEX (SUB (m))) +++ scope_add (s, SUB (p), scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); +++ scope_bounds (SUB (NEXT_SUB (p))); +++ } +++ if (IS_REF (MOID (p))) +++ scope_add (s, p, scope_find_youngest (x)); +++ } +++ else if (IS (p, FORMAT_TEXT)) +++ { +++ SCOPE_T *x = NO_SCOPE; +++ scope_format_text (SUB (p), &x); +++ scope_add (s, p, scope_find_youngest (x)); +++ } +++ else if (IS (p, CAST)) +++ { +++ SCOPE_T *x = NO_SCOPE; +++ scope_enclosed_clause (SUB (NEXT_SUB (p)), &x); +++ (void) scope_check (x, NOT_TRANSIENT, LEX_LEVEL (p)); +++ scope_add (s, p, scope_find_youngest (x)); +++ } +++ else if (IS (p, SELECTION)) +++ { +++ SCOPE_T *ns = NO_SCOPE; +++ scope_statement (NEXT_SUB (p), &ns); +++ (void) scope_check (ns, NOT_TRANSIENT, LEX_LEVEL (p)); +++ if (a68_is_ref_refety_flex (MOID (NEXT_SUB (p)))) +++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), TRANSIENT)); +++ scope_add (s, p, scope_find_youngest (ns)); +++ } +++ else if (IS (p, GENERATOR)) +++ { +++ if (IS (SUB (p), LOC_SYMBOL)) +++ { +++ if (NON_LOCAL (p) != NO_TABLE) +++ scope_add (s, p, scope_make_tuple (LEVEL (NON_LOCAL (p)), NOT_TRANSIENT)); +++ else +++ scope_add (s, p, scope_make_tuple (LEX_LEVEL (p), NOT_TRANSIENT)); +++ } +++ else +++ scope_add (s, p, scope_make_tuple (PRIMAL_SCOPE, NOT_TRANSIENT)); +++ scope_declarer (SUB (NEXT_SUB (p))); +++ } +++ else if (IS (p, FORMULA)) +++ scope_formula (p, s); +++ else if (IS (p, ASSIGNATION)) +++ { +++ NODE_T *unit = NEXT (NEXT_SUB (p)); +++ SCOPE_T *ns = NO_SCOPE, *nd = NO_SCOPE; +++ TUPLE_T tup; +++ scope_statement (SUB_SUB (p), &nd); +++ scope_statement (unit, &ns); +++ (void) scope_check_multiple (ns, TRANSIENT, nd); +++ tup = scope_find_youngest (nd); +++ scope_add (s, p, scope_make_tuple (LEVEL (&tup), NOT_TRANSIENT)); +++ } +++ else if (IS (p, ROUTINE_TEXT)) +++ scope_routine_text (p, s); +++ else if (a68_is_one_of (p, IDENTITY_RELATION, AND_FUNCTION, OR_FUNCTION, STOP)) +++ { +++ SCOPE_T *n = NO_SCOPE; +++ scope_statement (SUB (p), &n); +++ scope_statement (NEXT (NEXT_SUB (p)), &n); +++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); +++ } +++ else if (IS (p, ASSERTION)) +++ { +++ SCOPE_T *n = NO_SCOPE; +++ scope_enclosed_clause (SUB (NEXT_SUB (p)), &n); +++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); +++ } +++ else if (a68_is_one_of (p, JUMP, SKIP, STOP)) +++ { +++ ; +++ } +++} +++ +++/* Scope_statement_list. */ +++ +++static void +++scope_statement_list (NODE_T *p, SCOPE_T **s) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, UNIT)) +++ scope_statement (p, s); +++ else +++ scope_statement_list (SUB (p), s); +++ } +++} +++ +++/* Scope_serial_clause. */ +++ +++static void +++scope_serial_clause (NODE_T *p, SCOPE_T **s, bool terminator) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, INITIALISER_SERIES)) +++ { +++ scope_serial_clause (SUB (p), s, false); +++ scope_serial_clause (NEXT (p), s, terminator); +++ } +++ else if (IS (p, DECLARATION_LIST)) +++ scope_declaration_list (SUB (p)); +++ else if (a68_is_one_of (p, LABEL, SEMI_SYMBOL, EXIT_SYMBOL, STOP)) +++ scope_serial_clause (NEXT (p), s, terminator); +++ else if (a68_is_one_of (p, SERIAL_CLAUSE, ENQUIRY_CLAUSE, STOP)) +++ { +++ if (NEXT (p) != NO_NODE) +++ { +++ int j = ATTRIBUTE (NEXT (p)); +++ if (j == EXIT_SYMBOL || j == END_SYMBOL || j == CLOSE_SYMBOL) +++ scope_serial_clause (SUB (p), s, true); +++ else +++ scope_serial_clause (SUB (p), s, false); +++ } +++ else +++ scope_serial_clause (SUB (p), s, true); +++ scope_serial_clause (NEXT (p), s, terminator); +++ } +++ else if (IS (p, LABELED_UNIT)) +++ scope_serial_clause (SUB (p), s, terminator); +++ else if (IS (p, UNIT)) +++ { +++ if (terminator) +++ scope_statement (p, s); +++ else +++ scope_statement (p, NO_VAR); +++ } +++ } +++} +++ +++/* Scope_closed_clause. */ +++ +++static void +++scope_closed_clause (NODE_T *p, SCOPE_T **s) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, SERIAL_CLAUSE)) +++ scope_serial_clause (p, s, true); +++ else if (a68_is_one_of (p, OPEN_SYMBOL, BEGIN_SYMBOL, STOP)) +++ scope_closed_clause (NEXT (p), s); +++ } +++} +++ +++/* Scope_collateral_clause. */ +++ +++static void +++scope_collateral_clause (NODE_T *p, SCOPE_T **s) +++{ +++ if (p != NO_NODE) +++ { +++ if (!(a68_whether (p, BEGIN_SYMBOL, END_SYMBOL, STOP) +++ || a68_whether (p, OPEN_SYMBOL, CLOSE_SYMBOL, STOP))) +++ { +++ scope_statement_list (p, s); +++ } +++ } +++} +++ +++/* Scope_conditional_clause. */ +++ +++static void +++scope_conditional_clause (NODE_T *p, SCOPE_T **s) +++{ +++ scope_serial_clause (NEXT_SUB (p), NO_VAR, true); +++ FORWARD (p); +++ scope_serial_clause (NEXT_SUB (p), s, true); +++ if ((FORWARD (p)) != NO_NODE) +++ { +++ if (a68_is_one_of (p, ELSE_PART, CHOICE, STOP)) +++ scope_serial_clause (NEXT_SUB (p), s, true); +++ else if (a68_is_one_of (p, ELIF_PART, BRIEF_ELIF_PART, STOP)) +++ scope_conditional_clause (SUB (p), s); +++ } +++} +++ +++/* Scope_case_clause. */ +++ +++static void +++scope_case_clause (NODE_T *p, SCOPE_T **s) +++{ +++ SCOPE_T *n = NO_SCOPE; +++ scope_serial_clause (NEXT_SUB (p), &n, true); +++ (void) scope_check (n, NOT_TRANSIENT, LEX_LEVEL (p)); +++ FORWARD (p); +++ scope_statement_list (NEXT_SUB (p), s); +++ if ((FORWARD (p)) != NO_NODE) +++ { +++ if (a68_is_one_of (p, OUT_PART, CHOICE, STOP)) +++ scope_serial_clause (NEXT_SUB (p), s, true); +++ else if (a68_is_one_of (p, CASE_OUSE_PART, BRIEF_OUSE_PART, STOP)) +++ scope_case_clause (SUB (p), s); +++ else if (a68_is_one_of (p, CONFORMITY_OUSE_PART, BRIEF_CONFORMITY_OUSE_PART, STOP)) +++ scope_case_clause (SUB (p), s); +++ } +++} +++ +++/* Scope_loop_clause. */ +++ +++static void +++scope_loop_clause (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, FOR_PART)) +++ scope_loop_clause (NEXT (p)); +++ else if (a68_is_one_of (p, FROM_PART, BY_PART, TO_PART, STOP)) +++ { +++ scope_statement (NEXT_SUB (p), NO_VAR); +++ scope_loop_clause (NEXT (p)); +++ } +++ else if (IS (p, WHILE_PART)) +++ { +++ scope_serial_clause (NEXT_SUB (p), NO_VAR, true); +++ scope_loop_clause (NEXT (p)); +++ } +++ else if (a68_is_one_of (p, DO_PART, ALT_DO_PART, STOP)) +++ { +++ NODE_T *do_p = NEXT_SUB (p); +++ +++ if (IS (do_p, SERIAL_CLAUSE)) +++ scope_serial_clause (do_p, NO_VAR, true); +++ } +++ } +++} +++ +++/* Scope_enclosed_clause. */ +++ +++static void +++scope_enclosed_clause (NODE_T *p, SCOPE_T **s) +++{ +++ if (IS (p, ENCLOSED_CLAUSE)) +++ scope_enclosed_clause (SUB (p), s); +++ else if (IS (p, CLOSED_CLAUSE)) +++ scope_closed_clause (SUB (p), s); +++ else if (a68_is_one_of (p, COLLATERAL_CLAUSE, PARALLEL_CLAUSE, STOP)) +++ scope_collateral_clause (SUB (p), s); +++ else if (IS (p, CONDITIONAL_CLAUSE)) +++ scope_conditional_clause (SUB (p), s); +++ else if (a68_is_one_of (p, CASE_CLAUSE, CONFORMITY_CLAUSE, STOP)) +++ scope_case_clause (SUB (p), s); +++ else if (IS (p, LOOP_CLAUSE)) +++ scope_loop_clause (SUB (p)); +++} +++ +++/* Whether a symbol table contains no (anonymous) definition. */ +++ +++static bool +++empty_table (TABLE_T * t) +++{ +++ if (IDENTIFIERS (t) == NO_TAG) +++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); +++ else if (PRIO (IDENTIFIERS (t)) == LOOP_IDENTIFIER && NEXT (IDENTIFIERS (t)) == NO_TAG) +++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); +++ else if (PRIO (IDENTIFIERS (t)) == SPECIFIER_IDENTIFIER && NEXT (IDENTIFIERS (t)) == NO_TAG) +++ return (OPERATORS (t) == NO_TAG && INDICANTS (t) == NO_TAG); +++ else +++ return false; +++} +++ +++/* Indicate non-local environs. */ +++ +++static void +++get_non_local_environs (NODE_T *p, int max) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, ROUTINE_TEXT)) +++ get_non_local_environs (SUB (p), LEX_LEVEL (SUB (p))); +++ else if (IS (p, FORMAT_TEXT)) +++ get_non_local_environs (SUB (p), LEX_LEVEL (SUB (p))); +++ else +++ { +++ get_non_local_environs (SUB (p), max); +++ NON_LOCAL (p) = NO_TABLE; +++ if (TABLE (p) != NO_TABLE) +++ { +++ TABLE_T *q = TABLE (p); +++ while (q != NO_TABLE && empty_table (q) +++ && PREVIOUS (q) != NO_TABLE && LEVEL (PREVIOUS (q)) >= max) +++ { +++ NON_LOCAL (p) = PREVIOUS (q); +++ q = PREVIOUS (q); +++ } +++ } +++ } +++ } +++} +++ +++/* The static scope checker. */ +++ +++void +++a68_scope_checker (NODE_T *p) +++{ +++ if (SUB (p)) +++ { +++ if (IS (SUB (p), PARTICULAR_PROGRAM)) +++ p = SUB (p); +++ else if (IS (SUB (p), PRELUDE_PACKET)) +++ { +++ /* XXX writeme. */ +++ return; +++ } +++ } +++ +++ /* Establish scopes of routine texts and format texts. */ +++ get_youngest_environs (p); +++ /* Find non-local environs. */ +++ get_non_local_environs (p, PRIMAL_SCOPE); +++ /* PROC and FORMAT identities can now be assigned a scope. */ +++ bind_scope_to_tags (p); +++ /* Now check evertyhing else. */ +++ scope_enclosed_clause (SUB (p), NO_VAR); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-serial-dsa.cc ++@@ -0,0 +1,114 @@ +++/* Check dynamic stack usage in serial clauses. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Written by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++/* This file implements a phase that determines what serial clauses contain +++ phrases whose elaboration may involve dynamic stack allocation. It +++ annotates the SERIAL_CLAUSE parse nodes by setting the DYNAMIC_STACK_ALLOCS +++ flag. */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++/* Uncomment the following line for debugging traces. */ +++/* #define SERIAL_DSA_DEBUG */ +++ +++static void +++serial_dsa_check_serial_clause (NODE_T *p, bool *dsa) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, GENERATOR)) +++ { +++ /* LOC generators always result in dyamic stack allocation regardless +++ of the mode of the allocated value. */ +++ if (IS (SUB (p), LOC_SYMBOL)) +++ { +++#ifdef SERIAL_DSA_DEBUG +++ fprintf (stderr, "serial_dsa: %s:%d: loc generator implies DSA\n", +++ FILENAME (LINE (INFO (p))), +++ LINE_NUMBER (p)); +++#endif +++ *dsa = true; +++ return; +++ } +++ } +++ else if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ /* Variable declarations of values with sample loc generators will +++ result in dynamic stack allocation. +++ +++ Note that label declarations do no have a mode, so we have to +++ check for MOID (p). */ +++ +++ if (MOID (p) != NO_MOID && IS_REF (MOID (p))) +++ { +++ bool heap = HEAP (TAX (p)) == HEAP_SYMBOL; +++ if (HAS_ROWS (SUB (MOID (p))) && !heap) +++ { +++#ifdef SERIAL_DSA_DEBUG +++ fprintf (stderr, +++ "serial_dsa: %s:%d: defining identifier %s implies DSA\n", +++ FILENAME (LINE (INFO (p))), +++ LINE_NUMBER (p), +++ NSYMBOL (p)); +++#endif +++ *dsa = true; +++ return; +++ } +++ } +++ } +++ else +++ { +++ /* Inner serial clauses will take care of their own. Code in routine +++ texts will not impact the stack of the containing serial +++ clause. */ +++ if (!IS (p, SERIAL_CLAUSE) && !IS (p, ROUTINE_TEXT)) +++ serial_dsa_check_serial_clause (SUB (p), dsa); +++ } +++ } +++} +++ +++void +++a68_serial_dsa (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ a68_serial_dsa (SUB (p)); +++ if (IS (p, SERIAL_CLAUSE)) +++ { +++ bool dsa = false; +++ serial_dsa_check_serial_clause (SUB (p), &dsa); +++ DYNAMIC_STACK_ALLOCS (p) = dsa; +++#ifdef SERIAL_DSA_DEBUG +++ if (dsa) +++ { +++ fprintf (stderr, "serial_dsa: %s:%d: marking serial clause %p as DSA\n", +++ FILENAME (LINE (INFO (p))), +++ LINE_NUMBER (p), +++ (void *) p); +++ } +++ +++#endif +++ } +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-taxes.cc ++@@ -0,0 +1,1806 @@ +++/* Symbol table management. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++/* +++ * Symbol table handling, managing TAGS. +++ */ +++ +++/* Forward declarations for several functions defined below. */ +++ +++static TAG_T *find_tag_local (TABLE_T *table, int a, const char *name); +++ +++/* Set level for procedures. */ +++ +++void +++a68_set_proc_level (NODE_T *p, int n) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ PROCEDURE_LEVEL (INFO (p)) = n; +++ if (IS (p, ROUTINE_TEXT)) +++ a68_set_proc_level (SUB (p), n + 1); +++ else +++ a68_set_proc_level (SUB (p), n); +++ } +++} +++ +++/* Set nests for diagnostics. */ +++ +++void +++a68_set_nest (NODE_T *p, NODE_T *s) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ NEST (p) = s; +++ if (IS (p, PARTICULAR_PROGRAM)) +++ a68_set_nest (SUB (p), p); +++ else if (IS (p, CLOSED_CLAUSE) && LINE_NUMBER (p) != 0) +++ a68_set_nest (SUB (p), p); +++ else if (IS (p, COLLATERAL_CLAUSE) && LINE_NUMBER (p) != 0) +++ a68_set_nest (SUB (p), p); +++ else if (IS (p, CONDITIONAL_CLAUSE) && LINE_NUMBER (p) != 0) +++ a68_set_nest (SUB (p), p); +++ else if (IS (p, CASE_CLAUSE) && LINE_NUMBER (p) != 0) +++ a68_set_nest (SUB (p), p); +++ else if (IS (p, CONFORMITY_CLAUSE) && LINE_NUMBER (p) != 0) +++ a68_set_nest (SUB (p), p); +++ else if (IS (p, LOOP_CLAUSE) && LINE_NUMBER (p) != 0) +++ a68_set_nest (SUB (p), p); +++ else +++ a68_set_nest (SUB (p), s); +++ } +++} +++ +++/* +++ * Routines that work with tags and symbol tables. +++ */ +++ +++static void tax_tags (NODE_T *); +++static void tax_specifier_list (NODE_T *); +++static void tax_parameter_list (NODE_T *); +++static void tax_format_texts (NODE_T *); +++ +++/* Find a tag, searching symbol tables towards the root. */ +++ +++int +++a68_first_tag_global (TABLE_T * table, const char *name) +++{ +++ if (table != NO_TABLE) +++ { +++ for (TAG_T *s = IDENTIFIERS (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return IDENTIFIER; +++ } +++ for (TAG_T *s = INDICANTS (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return INDICANT; +++ } +++ for (TAG_T *s = LABELS (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return LABEL; +++ } +++ for (TAG_T *s = OPERATORS (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return OP_SYMBOL; +++ } +++ for (TAG_T *s = MODULES (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return MODULE_SYMBOL; +++ } +++ for (TAG_T *s = PRIO (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return PRIO_SYMBOL; +++ } +++ return a68_first_tag_global (PREVIOUS (table), name); +++ } +++ else +++ return STOP; +++} +++ +++/* Whether routine can be "lengthety-mapped". */ +++ +++static bool +++is_mappable_routine (const char *z) +++{ +++#define ACCEPT(u, v) {\ +++ if (strlen (u) >= strlen (v)) {\ +++ if (strcmp (&u[strlen (u) - strlen (v)], v) == 0) {\ +++ return true;\ +++ }}} +++ +++ /* Math routines. */ +++ ACCEPT (z, "arccos"); +++ ACCEPT (z, "arccosdg"); +++ ACCEPT (z, "arccot"); +++ ACCEPT (z, "arccotdg"); +++ ACCEPT (z, "arcsin"); +++ ACCEPT (z, "arcsindg"); +++ ACCEPT (z, "arctan"); +++ ACCEPT (z, "arctandg"); +++ ACCEPT (z, "beta"); +++ ACCEPT (z, "betainc"); +++ ACCEPT (z, "cbrt"); +++ ACCEPT (z, "cos"); +++ ACCEPT (z, "cosdg"); +++ ACCEPT (z, "cospi"); +++ ACCEPT (z, "cot"); +++ ACCEPT (z, "cot"); +++ ACCEPT (z, "cotdg"); +++ ACCEPT (z, "cotpi"); +++ ACCEPT (z, "curt"); +++ ACCEPT (z, "erf"); +++ ACCEPT (z, "erfc"); +++ ACCEPT (z, "exp"); +++ ACCEPT (z, "gamma"); +++ ACCEPT (z, "gammainc"); +++ ACCEPT (z, "gammaincg"); +++ ACCEPT (z, "gammaincgf"); +++ ACCEPT (z, "ln"); +++ ACCEPT (z, "log"); +++ ACCEPT (z, "pi"); +++ ACCEPT (z, "sin"); +++ ACCEPT (z, "sindg"); +++ ACCEPT (z, "sinpi"); +++ ACCEPT (z, "sqrt"); +++ ACCEPT (z, "tan"); +++ ACCEPT (z, "tandg"); +++ ACCEPT (z, "tanpi"); +++ /* Random generator. */ +++ ACCEPT (z, "nextrandom"); +++ ACCEPT (z, "random"); +++ /* BITS. */ +++ ACCEPT (z, "bitspack"); +++ /* Enquiries. */ +++ ACCEPT (z, "maxint"); +++ ACCEPT (z, "intwidth"); +++ ACCEPT (z, "maxreal"); +++ ACCEPT (z, "realwidth"); +++ ACCEPT (z, "expwidth"); +++ ACCEPT (z, "maxbits"); +++ ACCEPT (z, "bitswidth"); +++ ACCEPT (z, "byteswidth"); +++ ACCEPT (z, "smallreal"); +++ return false; +++#undef ACCEPT +++} +++ +++/* Map "short sqrt" onto "sqrt" etcetera. */ +++ +++static TAG_T * +++bind_lengthety_identifier (const char *u) +++{ +++#define CAR(u, v) (strncmp (u, v, strlen(v)) == 0) +++ /* We can only map routines blessed by "is_mappable_routine", so there is no +++ "short print" or "long char in string". */ +++ if (CAR (u, "short")) +++ { +++ do +++ { +++ u = &u[strlen ("short")]; +++ const char *v = TEXT (a68_add_token (&A68 (top_token), u)); +++ TAG_T *w = find_tag_local (A68_STANDENV, IDENTIFIER, v); +++ if (w != NO_TAG && is_mappable_routine (v)) +++ return w; +++ } +++ while (CAR (u, "short")); +++ } +++ else if (CAR (u, "long")) +++ { +++ do +++ { +++ u = &u[strlen ("long")]; +++ const char *v = TEXT (a68_add_token (&A68 (top_token), u)); +++ TAG_T *w = find_tag_local (A68_STANDENV, IDENTIFIER, v); +++ if (w != NO_TAG && is_mappable_routine (v)) +++ return w; +++ } +++ while (CAR (u, "long")); +++ } +++ +++ return NO_TAG; +++#undef CAR +++} +++ +++/* Bind identifier tags to the symbol table. */ +++ +++static void +++bind_identifier_tag_to_symbol_table (NODE_T * p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ bind_identifier_tag_to_symbol_table (SUB (p)); +++ +++ if (a68_is_one_of (p, IDENTIFIER, DEFINING_IDENTIFIER, STOP)) +++ { +++ int att = a68_first_tag_global (TABLE (p), NSYMBOL (p)); +++ +++ if (att == STOP) +++ { +++ TAG_T *z = bind_lengthety_identifier (NSYMBOL (p)); +++ +++ if (z != NO_TAG) +++ MOID (p) = MOID (z); +++ TAX (p) = z; +++ } +++ else +++ { +++ TAG_T *z = a68_find_tag_global (TABLE (p), att, NSYMBOL (p)); +++ +++ if (att == IDENTIFIER && z != NO_TAG) +++ MOID (p) = MOID (z); +++ else if (att == LABEL && z != NO_TAG) +++ ; +++ else if ((z = bind_lengthety_identifier (NSYMBOL (p))) != NO_TAG) +++ MOID (p) = MOID (z); +++ else +++ { +++ a68_error (p, "tag S has not been declared properly"); +++ z = a68_add_tag (TABLE (p), IDENTIFIER, p, M_ERROR, NORMAL_IDENTIFIER); +++ MOID (p) = M_ERROR; +++ } +++ TAX (p) = z; +++ if (IS (p, DEFINING_IDENTIFIER)) +++ NODE (z) = p; +++ } +++ } +++ } +++} +++ +++/* Tell whether the given tree refers to the applied indicant INDICANT in an +++ actual declarer. */ +++ +++static bool +++declarer_contains_indicant (NODE_T *p, NODE_T *indicant) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, DECLARER) +++ && IS (SUB (q), INDICANT) +++ && ((TAX (SUB (q)) && IS_RECURSIVE (TAX (SUB (q)))) +++ || IS_LITERALLY (SUB (q), NSYMBOL (indicant)))) +++ { +++ return true; +++ } +++ +++ if (declarer_contains_indicant (SUB (q), indicant)) +++ return true; +++ } +++ +++ return false; +++} +++ +++/* Bind indicant tags to the symbol table. */ +++ +++static void +++bind_indicant_tag_to_symbol_table (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ bind_indicant_tag_to_symbol_table (SUB (p)); +++ +++ if (a68_is_one_of (p, INDICANT, DEFINING_INDICANT, STOP)) +++ { +++ TAG_T *z = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); +++ +++ if (z != NO_TAG) +++ { +++ MOID (p) = MOID (z); +++ TAX (p) = z; +++ if (IS (p, DEFINING_INDICANT)) +++ { +++ NODE (z) = p; +++ IS_RECURSIVE (z) = declarer_contains_indicant (NEXT_NEXT (p), p); +++ } +++ } +++ } +++ } +++} +++ +++/* Enter specifier identifiers in the symbol table. */ +++ +++static void +++tax_specifiers (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ tax_specifiers (SUB (p)); +++ +++ if (SUB (p) != NO_NODE && IS (p, SPECIFIER)) +++ tax_specifier_list (SUB (p)); +++ } +++} +++ +++/* Enter specifier identifiers in the symbol table. */ +++ +++static void +++tax_specifier_list (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, OPEN_SYMBOL)) +++ tax_specifier_list (NEXT (p)); +++ else if (a68_is_one_of (p, CLOSE_SYMBOL, VOID_SYMBOL, STOP)) +++ ; +++ else if (IS (p, IDENTIFIER)) +++ { +++ TAG_T *z = a68_add_tag (TABLE (p), IDENTIFIER, p, NO_MOID, SPECIFIER_IDENTIFIER); +++ HEAP (z) = LOC_SYMBOL; +++ } +++ else if (IS (p, DECLARER)) +++ { +++ tax_specifiers (SUB (p)); +++ tax_specifier_list (NEXT (p)); +++ /* last identifier entry is identifier with this declarer. */ +++ if (IDENTIFIERS (TABLE (p)) != NO_TAG +++ && PRIO (IDENTIFIERS (TABLE (p))) == SPECIFIER_IDENTIFIER) +++ MOID (IDENTIFIERS (TABLE (p))) = MOID (p); +++ } +++ } +++} +++ +++/* Enter parameter identifiers in the symbol table. */ +++ +++static void +++tax_parameters (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (SUB (p) != NO_NODE) +++ { +++ tax_parameters (SUB (p)); +++ if (IS (p, PARAMETER_PACK)) +++ tax_parameter_list (SUB (p)); +++ } +++ } +++} +++ +++/* Enter parameter identifiers in the symbol table. */ +++ +++static void +++tax_parameter_list (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) +++ tax_parameter_list (NEXT (p)); +++ else if (IS (p, CLOSE_SYMBOL)) +++ ; +++ else if (a68_is_one_of (p, PARAMETER_LIST, PARAMETER, STOP)) +++ { +++ tax_parameter_list (NEXT (p)); +++ tax_parameter_list (SUB (p)); +++ } +++ else if (IS (p, IDENTIFIER)) +++ { +++ /* parameters are always local. */ +++ HEAP (a68_add_tag (TABLE (p), IDENTIFIER, p, NO_MOID, PARAMETER_IDENTIFIER)) = LOC_SYMBOL; +++ } +++ else if (IS (p, DECLARER)) +++ { +++ tax_parameter_list (NEXT (p)); +++ /* last identifier entries are identifiers with this declarer. */ +++ for (TAG_T *s = IDENTIFIERS (TABLE (p)); s != NO_TAG && MOID (s) == NO_MOID; FORWARD (s)) +++ MOID (s) = MOID (p); +++ tax_parameters (SUB (p)); +++ } +++ } +++} +++ +++/* Enter FOR identifiers in the symbol table. */ +++ +++static void +++tax_for_identifiers (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ tax_for_identifiers (SUB (p)); +++ +++ if (IS (p, FOR_SYMBOL)) +++ { +++ if ((FORWARD (p)) != NO_NODE) +++ (void) a68_add_tag (TABLE (p), IDENTIFIER, p, M_INT, LOOP_IDENTIFIER); +++ } +++ } +++} +++ +++/* Enter routine texts in the symbol table. */ +++ +++static void +++tax_routine_texts (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ tax_routine_texts (SUB (p)); +++ +++ if (IS (p, ROUTINE_TEXT)) +++ { +++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, MOID (p), ROUTINE_TEXT); +++ TAX (p) = z; +++ HEAP (z) = LOC_SYMBOL; +++ USE (z) = true; +++ } +++ } +++} +++ +++/* Enter format texts in the symbol table. */ +++ +++static void +++tax_format_texts (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ tax_format_texts (SUB (p)); +++ +++ if (IS (p, FORMAT_TEXT)) +++ { +++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, M_FORMAT, FORMAT_TEXT); +++ TAX (p) = z; +++ USE (z) = true; +++ } +++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && NEXT (p) != NO_NODE) +++ { +++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, M_FORMAT, FORMAT_IDENTIFIER); +++ TAX (p) = z; +++ USE (z) = true; +++ } +++ } +++} +++ +++/* Enter FORMAT pictures in the symbol table. */ +++ +++static void +++tax_pictures (NODE_T * p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ tax_pictures (SUB (p)); +++ +++ if (IS (p, PICTURE)) +++ TAX (p) = a68_add_tag (TABLE (p), ANONYMOUS, p, M_COLLITEM, FORMAT_IDENTIFIER); +++ } +++} +++ +++/* Enter generators in the symbol table. */ +++ +++static void +++tax_generators (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ tax_generators (SUB (p)); +++ +++ if (IS (p, GENERATOR)) +++ { +++ if (IS (SUB (p), LOC_SYMBOL)) +++ { +++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB_MOID (SUB (p)), GENERATOR); +++ HEAP (z) = LOC_SYMBOL; +++ USE (z) = true; +++ TAX (p) = z; +++ } +++ } +++ } +++} +++ +++/* Find a firmly related operator for operands. */ +++ +++static TAG_T * +++find_firmly_related_op (TABLE_T *c, const char *n, MOID_T *l, MOID_T *r, TAG_T *self) +++{ +++ if (c != NO_TABLE) +++ { +++ TAG_T *s = OPERATORS (c); +++ +++ for (; s != NO_TAG; FORWARD (s)) +++ { +++ if (s != self && NSYMBOL (NODE (s)) == n) +++ { +++ PACK_T *t = PACK (MOID (s)); +++ if (t != NO_PACK && a68_is_firm (MOID (t), l)) +++ { +++ /* catch monadic operator. */ +++ if ((FORWARD (t)) == NO_PACK) +++ { +++ if (r == NO_MOID) +++ return s; +++ } +++ else +++ { +++ /* catch dyadic operator. */ +++ if (r != NO_MOID && a68_is_firm (MOID (t), r)) +++ return s; +++ } +++ } +++ } +++ } +++ } +++ return NO_TAG; +++} +++ +++/* Check for firmly related operators in this range. */ +++ +++static void +++test_firmly_related_ops_local (NODE_T *p, TAG_T *s) +++{ +++ if (s != NO_TAG) +++ { +++ PACK_T *u = PACK (MOID (s)); +++ +++ if (u != NO_PACK) +++ { +++ MOID_T *l = MOID (u); +++ MOID_T *r = (NEXT (u) != NO_PACK ? MOID (NEXT (u)) : NO_MOID); +++ TAG_T *t = find_firmly_related_op (TAG_TABLE (s), NSYMBOL (NODE (s)), l, r, s); +++ +++ if (t != NO_TAG) +++ { +++ a68_error (p, "M Z is firmly related to M Z", +++ MOID (s), NSYMBOL (NODE (s)), MOID (t), +++ NSYMBOL (NODE (t))); +++ } +++ else +++ { +++ /* Warn for hidden firmly related operators defined in outer +++ ranges, if requested. */ +++ for (TABLE_T *prev = PREVIOUS (TAG_TABLE (s)); +++ prev != NO_TABLE; +++ prev = PREVIOUS (prev)) +++ { +++ TAG_T *t = find_firmly_related_op (prev, NSYMBOL (NODE (s)), l, r, +++ NO_TAG /* self */); +++ if (t != NO_TAG) +++ { +++ if (TAG_TABLE (t) == A68_STANDENV +++ && warn_algol68_hidden_declarations > 0) +++ { +++ if (a68_warning (p, OPT_Whidden_declarations_, +++ "Z hides a firmly related operator in a larger reach", +++ NSYMBOL (NODE (s)))) +++ { +++ a68_inform (NO_NODE, +++ "operator M Z defined in the standard prelude", +++ MOID (t), NSYMBOL (NODE (t))); +++ } +++ } +++ else if (warn_algol68_hidden_declarations > 1) +++ { +++ if (a68_warning (p, OPT_Whidden_declarations_, +++ "Z hides a firmly related operator in a larger reach", +++ NSYMBOL (NODE (s)))) +++ { +++ a68_inform (NODE (t), +++ "previous hidden declaration of S declared here", +++ NSYMBOL (NODE (s))); +++ } +++ } +++ +++ /* Report only one level of hidding or it gets messy. */ +++ break; +++ } +++ } +++ } +++ } +++ if (NEXT (s) != NO_TAG) +++ test_firmly_related_ops_local ((p == NO_NODE ? NO_NODE : NODE (NEXT (s))), NEXT (s)); +++ } +++} +++ +++/* Find firmly related operators in this program. */ +++ +++static void +++test_firmly_related_ops (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) +++ { +++ TAG_T *oops = OPERATORS (TABLE (SUB (p))); +++ +++ if (oops != NO_TAG) +++ test_firmly_related_ops_local (NODE (oops), oops); +++ } +++ test_firmly_related_ops (SUB (p)); +++ } +++} +++ +++/* Driver for the processing of TAXes. */ +++ +++void +++a68_collect_taxes (NODE_T *p) +++{ +++ tax_tags (p); +++ tax_specifiers (p); +++ tax_parameters (p); +++ tax_for_identifiers (p); +++ tax_routine_texts (p); +++ tax_pictures (p); +++ tax_format_texts (p); +++ tax_generators (p); +++ bind_identifier_tag_to_symbol_table (p); +++ bind_indicant_tag_to_symbol_table (p); +++ test_firmly_related_ops (p); +++ test_firmly_related_ops_local (NO_NODE, OPERATORS (A68_STANDENV)); +++} +++ +++/* Whether tag has already been declared in this range. */ +++ +++static void +++already_declared (NODE_T *n, int a) +++{ +++ if (find_tag_local (TABLE (n), a, NSYMBOL (n)) != NO_TAG) +++ a68_error (n, "multiple declaration of tag S"); +++} +++ +++/* Whether tag has already been declared in this range. */ +++ +++static void +++already_declared_hidden (NODE_T *n, int a) +++{ +++ if (find_tag_local (TABLE (n), a, NSYMBOL (n)) != NO_TAG) +++ a68_error (n, "multiple declaration of tag S"); +++ +++ TAG_T *s = a68_find_tag_global (PREVIOUS (TABLE (n)), a, NSYMBOL (n)); +++ +++ if (s != NO_TAG +++ && ((TAG_TABLE (s) == A68_STANDENV && warn_algol68_hidden_declarations > 0) +++ || (TAG_TABLE (s) != A68_STANDENV && warn_algol68_hidden_declarations > 1))) +++ { +++ if (a68_warning (n, OPT_Whidden_declarations_, +++ "Z hides a declaration with larger reach", +++ NSYMBOL (n))) +++ { +++ if (TAG_TABLE (s) == A68_STANDENV) +++ a68_inform (NO_NODE, +++ "M Z defined in the standard prelude", +++ MOID (s), NSYMBOL (NODE (s))); +++ else +++ a68_inform (NODE (s), +++ "previous hidden declaration of S declared here", +++ NSYMBOL (n)); +++ } +++ } +++} +++ +++/* Add tag to local symbol table. */ +++ +++TAG_T * +++a68_add_tag (TABLE_T *s, int a, NODE_T *n, MOID_T *m, int p) +++{ +++#define INSERT_TAG(l, n) {NEXT (n) = *(l); *(l) = (n);} +++ if (s != NO_TABLE) +++ { +++ TAG_T *z = a68_new_tag (); +++ +++ TAG_TABLE (z) = s; +++ PRIO (z) = p; +++ MOID (z) = m; +++ NODE (z) = n; +++ /* TAX(n) = z;. */ +++ switch (a) +++ { +++ case IDENTIFIER: +++ already_declared_hidden (n, IDENTIFIER); +++ already_declared_hidden (n, LABEL); +++ INSERT_TAG (&IDENTIFIERS (s), z); +++ break; +++ case INDICANT: +++ already_declared_hidden (n, INDICANT); +++ already_declared (n, OP_SYMBOL); +++ already_declared (n, PRIO_SYMBOL); +++ INSERT_TAG (&INDICANTS (s), z); +++ break; +++ case LABEL: +++ already_declared_hidden (n, LABEL); +++ already_declared_hidden (n, IDENTIFIER); +++ INSERT_TAG (&LABELS (s), z); +++ break; +++ case OP_SYMBOL: +++ already_declared (n, INDICANT); +++ INSERT_TAG (&OPERATORS (s), z); +++ break; +++ case MODULE_SYMBOL: +++ already_declared (n, INDICANT); +++ INSERT_TAG (&MODULES (s), z); +++ break; +++ case PRIO_SYMBOL: +++ already_declared (n, PRIO_SYMBOL); +++ already_declared (n, INDICANT); +++ INSERT_TAG (&PRIO (s), z); +++ break; +++ case ANONYMOUS: +++ INSERT_TAG (&ANONYMOUS (s), z); +++ break; +++ default: +++ gcc_unreachable (); +++ } +++ return z; +++ } +++ else +++ return NO_TAG; +++} +++ +++/* Find a tag, searching symbol tables towards the root. */ +++ +++TAG_T * +++a68_find_tag_global (TABLE_T *table, int a, const char *name) +++{ +++ if (table != NO_TABLE) +++ { +++ TAG_T *s = NO_TAG; +++ switch (a) +++ { +++ case IDENTIFIER: +++ s = IDENTIFIERS (table); +++ break; +++ case INDICANT: +++ s = INDICANTS (table); +++ break; +++ case LABEL: +++ s = LABELS (table); +++ break; +++ case OP_SYMBOL: +++ s = OPERATORS (table); +++ break; +++ case MODULE_SYMBOL: +++ s = MODULES (table); +++ break; +++ case PRIO_SYMBOL: +++ s = PRIO (table); +++ break; +++ default: +++ gcc_unreachable (); +++ break; +++ } +++ +++ for (; s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return s; +++ } +++ return a68_find_tag_global (PREVIOUS (table), a, name); +++ } +++ else +++ return NO_TAG; +++} +++ +++/* Whether identifier or label global. */ +++ +++int +++a68_is_identifier_or_label_global (TABLE_T *table, const char *name) +++{ +++ if (table != NO_TABLE) +++ { +++ for (TAG_T *s = IDENTIFIERS (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return IDENTIFIER; +++ } +++ for (TAG_T *s = LABELS (table); s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return LABEL; +++ } +++ return a68_is_identifier_or_label_global (PREVIOUS (table), name); +++ } +++ else +++ return 0; +++} +++ +++/* Find a tag, searching only local symbol table. */ +++ +++static TAG_T * +++find_tag_local (TABLE_T *table, int a, const char *name) +++{ +++ if (table != NO_TABLE) +++ { +++ TAG_T *s = NO_TAG; +++ +++ if (a == OP_SYMBOL) +++ s = OPERATORS (table); +++ else if (a == MODULE_SYMBOL) +++ s = MODULES (table); +++ else if (a == PRIO_SYMBOL) +++ s = PRIO (table); +++ else if (a == IDENTIFIER) +++ s = IDENTIFIERS (table); +++ else if (a == INDICANT) +++ s = INDICANTS (table); +++ else if (a == LABEL) +++ s = LABELS (table); +++ else +++ gcc_unreachable (); +++ +++ for (; s != NO_TAG; FORWARD (s)) +++ { +++ if (NSYMBOL (NODE (s)) == name || strcmp (NSYMBOL (NODE (s)), name) == 0) +++ return s; +++ } +++ } +++ return NO_TAG; +++} +++ +++/* Whether context specifies HEAP or LOC for an identifier. +++ +++ The boolean *E is set to true if an explicit qualifier was found, false +++ otherwise. */ +++ +++static int +++tab_qualifier (NODE_T *p, bool *e) +++{ +++ *e = false; +++ if (p != NO_NODE) +++ { +++ if (a68_is_one_of (p, UNIT, ASSIGNATION, TERTIARY, SECONDARY, GENERATOR, STOP)) +++ return tab_qualifier (SUB (p), e); +++ else if (a68_is_one_of (p, LOC_SYMBOL, HEAP_SYMBOL, STOP)) +++ { +++ *e = true; +++ return ATTRIBUTE (p) == LOC_SYMBOL ? LOC_SYMBOL : HEAP_SYMBOL; +++ } +++ else +++ return LOC_SYMBOL; +++ } +++ else +++ return LOC_SYMBOL; +++} +++ +++/* Enter identity declarations in the symbol table. +++ +++ E is true if HEAP or LOC got specified explicitly in the identity +++ declaration's formal parameter. */ +++ +++static void +++tax_identity_dec (NODE_T *p, MOID_T **m) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, IDENTITY_DECLARATION)) +++ { +++ tax_identity_dec (SUB (p), m); +++ tax_identity_dec (NEXT (p), m); +++ } +++ else if (IS (p, DECLARER)) +++ { +++ tax_tags (SUB (p)); +++ *m = MOID (p); +++ tax_identity_dec (NEXT (p), m); +++ } +++ else if (IS (p, COMMA_SYMBOL)) +++ { +++ tax_identity_dec (NEXT (p), m); +++ } +++ else if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); +++ gcc_assert (entry != NO_TAG); +++ +++ MOID (p) = *m; +++ HEAP (entry) = LOC_SYMBOL; +++ TAX (p) = entry; +++ MOID (entry) = *m; +++ PUBLICIZED (entry) = PUBLICIZED (p); +++ bool e; +++ if (ATTRIBUTE (*m) == REF_SYMBOL) +++ { +++ HEAP (entry) = tab_qualifier (NEXT_NEXT (p), &e); +++ if (e && HEAP (entry) == LOC_SYMBOL && PUBLICIZED (entry)) +++ a68_warning (p, 0, "value of local generator will be out of scope"); +++ } +++ tax_identity_dec (NEXT_NEXT (p), m); +++ } +++ else +++ tax_tags (p); +++ } +++} +++ +++/* Enter variable declarations in the symbol table. +++ +++ E is true if an explicit sample generator was specified in the variable +++ declaration. */ +++ +++static void +++tax_variable_dec (NODE_T *p, int *q, MOID_T **m, bool e) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, VARIABLE_DECLARATION)) +++ { +++ tax_variable_dec (SUB (p), q, m, e); +++ tax_variable_dec (NEXT (p), q, m, e); +++ } +++ else if (IS (p, DECLARER)) +++ { +++ tax_tags (SUB (p)); +++ *m = MOID (p); +++ tax_variable_dec (NEXT (p), q, m, e); +++ } +++ else if (IS (p, QUALIFIER)) +++ { +++ *q = ATTRIBUTE (SUB (p)); +++ tax_variable_dec (NEXT (p), q, m, true); +++ } +++ else if (IS (p, COMMA_SYMBOL)) +++ { +++ tax_variable_dec (NEXT (p), q, m, e); +++ } +++ else if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); +++ +++ MOID (p) = *m; +++ TAX (p) = entry; +++ PUBLICIZED (entry) = PUBLICIZED (p); +++ +++ if (PUBLICIZED (p) && e && *q == LOC_SYMBOL) +++ a68_error (p, "publicized variable should not be allocated on the stack"); +++ +++ if (PUBLICIZED (p)) +++ HEAP (entry) = STATIC_SYMBOL; +++ else +++ HEAP (entry) = *q; +++ +++ if (HEAP (entry) == LOC_SYMBOL) +++ { +++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB (*m), GENERATOR); +++ HEAP (z) = LOC_SYMBOL; +++ USE (z) = true; +++ BODY (entry) = z; +++ } +++ else +++ { +++ BODY (entry) = NO_TAG; +++ } +++ MOID (entry) = *m; +++ tax_variable_dec (NEXT (p), q, m, e); +++ } +++ else +++ tax_tags (p); +++ } +++} +++ +++/* Enter procedure variable declarations in the symbol table. +++ +++ E is true if an explicit sample generator was specified in the procedure +++ variable declaration. */ +++ +++static void +++tax_proc_variable_dec (NODE_T *p, int *q, bool e) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) +++ { +++ tax_proc_variable_dec (SUB (p), q, e); +++ tax_proc_variable_dec (NEXT (p), q, e); +++ } +++ else if (IS (p, QUALIFIER)) +++ { +++ *q = ATTRIBUTE (SUB (p)); +++ tax_proc_variable_dec (NEXT (p), q, true); +++ } +++ else if (a68_is_one_of (p, PROC_SYMBOL, COMMA_SYMBOL, STOP)) +++ { +++ tax_proc_variable_dec (NEXT (p), q, e); +++ } +++ else if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); +++ +++ TAX (p) = entry; +++ MOID (entry) = MOID (p); +++ PUBLICIZED (entry) = PUBLICIZED (p); +++ +++ if (PUBLICIZED (p) && e && *q == LOC_SYMBOL) +++ a68_error (p, "publicized variable should not be allocated on the stack"); +++ +++ if (PUBLICIZED (p)) +++ HEAP (entry) = STATIC_SYMBOL; +++ else +++ HEAP (entry) = *q; +++ +++ if (HEAP (entry) == LOC_SYMBOL) +++ { +++ TAG_T *z = a68_add_tag (TABLE (p), ANONYMOUS, p, SUB_MOID (p), GENERATOR); +++ HEAP (z) = LOC_SYMBOL; +++ USE (z) = true; +++ BODY (entry) = z; +++ } +++ else +++ { +++ BODY (entry) = NO_TAG; +++ } +++ tax_proc_variable_dec (NEXT (p), q, e); +++ } +++ else +++ tax_tags (p); +++ } +++} +++ +++/* Enter procedure declarations in the symbol table. */ +++ +++static void +++tax_proc_dec (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, PROCEDURE_DECLARATION)) +++ { +++ tax_proc_dec (SUB (p)); +++ tax_proc_dec (NEXT (p)); +++ } +++ else if (a68_is_one_of (p, PROC_SYMBOL, COMMA_SYMBOL, STOP)) +++ { +++ tax_proc_dec (NEXT (p)); +++ } +++ else if (IS (p, DEFINING_IDENTIFIER)) +++ { +++ TAG_T *entry = find_tag_local (TABLE (p), IDENTIFIER, NSYMBOL (p)); +++ +++ MOID_T *m = MOID (NEXT_NEXT (p)); +++ MOID (p) = m; +++ TAX (p) = entry; +++ HEAP (entry) = LOC_SYMBOL; +++ MOID (entry) = m; +++ PUBLICIZED (entry) = PUBLICIZED (p); +++ tax_proc_dec (NEXT (p)); +++ } +++ else +++ tax_tags (p); +++ } +++} +++ +++/* Check validity of operator declaration. */ +++ +++static void +++check_operator_dec (NODE_T *p, MOID_T *u) +++{ +++ int k = 0; +++ +++ if (u == NO_MOID) +++ { +++ NODE_T *pack = SUB_SUB (NEXT_NEXT (p)); /* Where the parameter pack +++ is. */ +++ if (ATTRIBUTE (NEXT_NEXT (p)) != ROUTINE_TEXT) +++ pack = SUB (pack); +++ k = 1 + a68_count_operands (pack); +++ } +++ else +++ k = a68_count_pack_members (PACK (u)); +++ +++ if (k < 1 || k > 2) +++ { +++ a68_error (p, "incorrect number of operands for S"); +++ k = 0; +++ } +++ +++ if (k == 1 && strchr (NOMADS, NSYMBOL (p)[0]) != NO_TEXT) +++ { +++ a68_error (p, "monadic S cannot start with a character from Z", NOMADS); +++ } +++ else if (k == 2 && !a68_find_tag_global (TABLE (p), PRIO_SYMBOL, NSYMBOL (p))) +++ { +++ a68_error (p, "dyadic S has no priority declaration"); +++ } +++} +++ +++/* Enter operator declarations in the symbol table. */ +++ +++static void +++tax_op_dec (NODE_T *p, MOID_T **m) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, OPERATOR_DECLARATION)) +++ { +++ tax_op_dec (SUB (p), m); +++ tax_op_dec (NEXT (p), m); +++ } +++ else if (IS (p, OPERATOR_PLAN)) +++ { +++ tax_tags (SUB (p)); +++ *m = MOID (p); +++ tax_op_dec (NEXT (p), m); +++ } +++ else if (IS (p, OP_SYMBOL)) +++ { +++ tax_op_dec (NEXT (p), m); +++ } +++ else if (IS (p, COMMA_SYMBOL)) +++ { +++ tax_op_dec (NEXT (p), m); +++ } +++ else if (IS (p, DEFINING_OPERATOR)) +++ { +++ TAG_T *entry = OPERATORS (TABLE (p)); +++ check_operator_dec (p, *m); +++ while (entry != NO_TAG && NODE (entry) != p) +++ FORWARD (entry); +++ MOID (p) = *m; +++ TAX (p) = entry; +++ HEAP (entry) = LOC_SYMBOL; +++ MOID (entry) = *m; +++ PUBLICIZED (entry) = PUBLICIZED (p); +++ tax_op_dec (NEXT (p), m); +++ } +++ else +++ { +++ tax_tags (p); +++ } +++ } +++} +++ +++/* Enter module declarations in the symbol table. */ +++ +++static void +++tax_module_dec (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, MODULE_DECLARATION)) +++ { +++ tax_module_dec (SUB (p)); +++ tax_module_dec (NEXT (p)); +++ } +++ else if (IS (p, MODULE_SYMBOL)) +++ { +++ tax_module_dec (NEXT (p)); +++ } +++ else if (IS (p, COMMA_SYMBOL)) +++ { +++ tax_module_dec (NEXT (p)); +++ } +++ else if (IS (p, DEFINING_MODULE_INDICANT)) +++ { +++ TAG_T *entry = MODULES (TABLE (p)); +++ while (entry != NO_TAG && NODE (entry) != p) +++ FORWARD (entry); +++ MOID (p) = NO_MOID; +++ TAX (p) = entry; +++ HEAP (entry) = LOC_SYMBOL; +++ MOID (entry) = NO_MOID; +++ PUBLICIZED (entry) = PUBLICIZED (p); +++ tax_module_dec (NEXT (p)); +++ } +++ else +++ { +++ tax_tags (p); +++ } +++ } +++} +++ +++/* Enter brief operator declarations in the symbol table. */ +++ +++static void +++tax_brief_op_dec (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, BRIEF_OPERATOR_DECLARATION)) +++ { +++ tax_brief_op_dec (SUB (p)); +++ tax_brief_op_dec (NEXT (p)); +++ } +++ else if (a68_is_one_of (p, OP_SYMBOL, COMMA_SYMBOL, STOP)) +++ { +++ tax_brief_op_dec (NEXT (p)); +++ } +++ else if (IS (p, DEFINING_OPERATOR)) +++ { +++ TAG_T *entry = OPERATORS (TABLE (p)); +++ MOID_T *m = MOID (NEXT_NEXT (p)); +++ check_operator_dec (p, NO_MOID); +++ while (entry != NO_TAG && NODE (entry) != p) +++ FORWARD (entry); +++ MOID (p) = m; +++ TAX (p) = entry; +++ HEAP (entry) = LOC_SYMBOL; +++ MOID (entry) = m; +++ PUBLICIZED (entry) = PUBLICIZED (p); +++ tax_brief_op_dec (NEXT (p)); +++ } +++ else +++ { +++ tax_tags (p); +++ } +++ } +++} +++ +++/* Enter priority declarations in the symbol table. */ +++ +++static void tax_prio_dec (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, PRIORITY_DECLARATION)) +++ { +++ tax_prio_dec (SUB (p)); +++ tax_prio_dec (NEXT (p)); +++ } +++ else if (a68_is_one_of (p, PRIO_SYMBOL, COMMA_SYMBOL, STOP)) +++ { +++ tax_prio_dec (NEXT (p)); +++ } +++ else if (IS (p, DEFINING_OPERATOR)) +++ { +++ TAG_T *entry = PRIO (TABLE (p)); +++ while (entry != NO_TAG && NODE (entry) != p) +++ FORWARD (entry); +++ MOID (p) = NO_MOID; +++ TAX (p) = entry; +++ HEAP (entry) = LOC_SYMBOL; +++ PUBLICIZED (entry) = PUBLICIZED (p); +++ tax_prio_dec (NEXT (p)); +++ } +++ else +++ { +++ tax_tags (p); +++ } +++ } +++} +++ +++/* Enter TAXes in the symbol table. */ +++ +++static void +++tax_tags (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ int heap = LOC_SYMBOL; +++ MOID_T *m = NO_MOID; +++ +++ if (IS (p, IDENTITY_DECLARATION)) +++ tax_identity_dec (p, &m); +++ else if (IS (p, VARIABLE_DECLARATION)) +++ tax_variable_dec (p, &heap, &m, false); +++ else if (IS (p, PROCEDURE_DECLARATION)) +++ tax_proc_dec (p); +++ else if (IS (p, PROCEDURE_VARIABLE_DECLARATION)) +++ tax_proc_variable_dec (p, &heap, false); +++ else if (IS (p, OPERATOR_DECLARATION)) +++ tax_op_dec (p, &m); +++ else if (IS (p, BRIEF_OPERATOR_DECLARATION)) +++ tax_brief_op_dec (p); +++ else if (IS (p, PRIORITY_DECLARATION)) +++ tax_prio_dec (p); +++ else if (IS (p, MODULE_DECLARATION)) +++ tax_module_dec (p); +++ else +++ tax_tags (SUB (p)); +++ } +++} +++ +++/* Reset symbol table nest count. */ +++ +++void +++a68_reset_symbol_table_nest_count (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (SUB (p) != NO_NODE && a68_is_new_lexical_level (p)) +++ NEST (TABLE (SUB (p))) = A68 (symbol_table_count)++; +++ a68_reset_symbol_table_nest_count (SUB (p)); +++ } +++} +++ +++//! @brief Bind routines in symbol table to the tree. +++ +++void +++a68_bind_routine_tags_to_tree (NODE_T *p) +++{ +++ /* By inserting coercions etc. some may have shifted. */ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, ROUTINE_TEXT) && TAX (p) != NO_TAG) +++ NODE (TAX (p)) = p; +++ a68_bind_routine_tags_to_tree (SUB (p)); +++ } +++} +++ +++/* Bind formats in symbol table to tree. */ +++ +++static void +++bind_format_tags_to_tree (NODE_T *p) +++{ +++ /* By inserting coercions etc. some may have shifted. */ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, FORMAT_TEXT) && TAX (p) != NO_TAG) +++ NODE (TAX (p)) = p; +++ else if (IS (p, FORMAT_DELIMITER_SYMBOL) && NEXT (p) != NO_NODE && TAX (p) != NO_TAG) +++ NODE (TAX (p)) = p; +++ +++ bind_format_tags_to_tree (SUB (p)); +++ } +++} +++ +++/* Fill outer level of symbol table. */ +++ +++void +++a68_fill_symbol_table_outer (NODE_T *p, TABLE_T *s) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (TABLE (p) != NO_TABLE) +++ OUTER (TABLE (p)) = s; +++ +++ if (SUB (p) != NO_NODE && IS (p, ROUTINE_TEXT)) +++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); +++ else if (SUB (p) != NO_NODE && IS (p, FORMAT_TEXT)) +++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); +++ else if (SUB (p) != NO_NODE && IS (p, MODULE_TEXT)) +++ a68_fill_symbol_table_outer (SUB (p), TABLE (SUB (p))); +++ else +++ a68_fill_symbol_table_outer (SUB (p), s); +++ } +++} +++ +++/* Flood branch in tree with local symbol table S. */ +++ +++static void +++flood_with_symbol_table_restricted (NODE_T *p, TABLE_T *s) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ TABLE (p) = s; +++ if (ATTRIBUTE (p) != ROUTINE_TEXT && ATTRIBUTE (p) != SPECIFIED_UNIT) +++ { +++ if (a68_is_new_lexical_level (p)) +++ PREVIOUS (TABLE (SUB (p))) = s; +++ else +++ flood_with_symbol_table_restricted (SUB (p), s); +++ } +++ } +++} +++ +++/* Final structure of symbol table after parsing. */ +++ +++void +++a68_finalise_symbol_table_setup (NODE_T *p, int l) +++{ +++ TABLE_T *s = TABLE (p); +++ NODE_T *q = p; +++ +++ while (q != NO_NODE) +++ { +++ /* routine texts are ranges. */ +++ if (IS (q, ROUTINE_TEXT)) +++ flood_with_symbol_table_restricted (SUB (q), a68_new_symbol_table (s)); +++ +++ /* specifiers are ranges. */ +++ else if (IS (q, SPECIFIED_UNIT)) +++ flood_with_symbol_table_restricted (SUB (q), a68_new_symbol_table (s)); +++ +++ /* level count and recursion. */ +++ if (SUB (q) != NO_NODE) +++ { +++ if (a68_is_new_lexical_level (q)) +++ { +++ LEX_LEVEL (SUB (q)) = l + 1; +++ gcc_assert (TABLE (SUB (q)) != s); +++ PREVIOUS (TABLE (SUB (q))) = s; +++ a68_finalise_symbol_table_setup (SUB (q), l + 1); +++ if (IS (q, WHILE_PART)) +++ { +++ /* This was a bug that went unnoticed for 15 years!. */ +++ TABLE_T *s2 = TABLE (SUB (q)); +++ if ((FORWARD (q)) == NO_NODE) +++ return; +++ if (IS (q, ALT_DO_PART)) +++ { +++ PREVIOUS (TABLE (SUB (q))) = s2; +++ LEX_LEVEL (SUB (q)) = l + 2; +++ a68_finalise_symbol_table_setup (SUB (q), l + 2); +++ } +++ } +++ if (IS (q, DEF_PART)) +++ { +++ TABLE_T *s2 = TABLE (SUB (q)); +++ if ((FORWARD (q)) == NO_NODE) +++ return; +++ if (IS (q, POSTLUDE_PART)) +++ { +++ PREVIOUS (TABLE (SUB (q))) = s2; +++ LEX_LEVEL (SUB (q)) = l + 2; +++ a68_finalise_symbol_table_setup (SUB (q), l + 2); +++ } +++ } +++ } +++ else +++ { +++ TABLE (SUB (q)) = s; +++ a68_finalise_symbol_table_setup (SUB (q), l); +++ } +++ } +++ TABLE (q) = s; +++ +++ if (IS (q, FOR_SYMBOL)) +++ FORWARD (q); +++ FORWARD (q); +++ } +++ +++ /* FOR identifiers are in the DO ... OD range. */ +++ for (q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, FOR_SYMBOL)) +++ TABLE (NEXT (q)) = TABLE (SEQUENCE (NEXT (q))); +++ } +++} +++ +++/* First structure of symbol table for parsing. */ +++ +++void +++a68_preliminary_symbol_table_setup (NODE_T *p) +++{ +++ TABLE_T *s = TABLE (p); +++ bool not_a_for_range = false; +++ +++ /* Let the tree point to the current symbol table. */ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ TABLE (q) = s; +++ +++ /* insert new tables when required. */ +++ for (NODE_T *q = p; q != NO_NODE && !not_a_for_range; FORWARD (q)) +++ { +++ if (SUB (q) != NO_NODE) +++ { +++ /* BEGIN ... END, CODE ... EDOC, DO ... OD, $ ... $, { ... } are +++ ranges. */ +++ if (a68_is_one_of (q, BEGIN_SYMBOL, DO_SYMBOL, ALT_DO_SYMBOL, +++ FORMAT_DELIMITER_SYMBOL, STOP)) +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ /* ( ... ) is a range. */ +++ else if (IS (q, OPEN_SYMBOL)) +++ { +++ if (a68_whether (q, OPEN_SYMBOL, THEN_BAR_SYMBOL, STOP)) +++ { +++ TABLE (SUB (q)) = s; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ FORWARD (q); +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ if ((FORWARD (q)) == NO_NODE) +++ not_a_for_range = true; +++ else +++ { +++ if (IS (q, THEN_BAR_SYMBOL)) +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ if (IS (q, OPEN_SYMBOL)) +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ } +++ else +++ { +++ /* Don't worry about STRUCT (...), UNION (...), PROC (...) +++ yet. */ +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ /* IF ... THEN ... ELSE ... FI are ranges. */ +++ else if (IS (q, IF_SYMBOL)) +++ { +++ if (a68_whether (q, IF_SYMBOL, THEN_SYMBOL, STOP)) +++ { +++ TABLE (SUB (q)) = s; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ FORWARD (q); +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ if ((FORWARD (q)) == NO_NODE) +++ not_a_for_range = true; +++ else +++ if (IS (q, ELSE_SYMBOL)) +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ if (IS (q, IF_SYMBOL)) +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ else +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ /* CASE ... IN ... OUT ... ESAC are ranges. */ +++ else if (IS (q, CASE_SYMBOL)) +++ { +++ if (a68_whether (q, CASE_SYMBOL, IN_SYMBOL, STOP)) +++ { +++ TABLE (SUB (q)) = s; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ FORWARD (q); +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ if ((FORWARD (q)) == NO_NODE) +++ not_a_for_range = true; +++ else +++ { +++ if (IS (q, OUT_SYMBOL)) +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ if (IS (q, CASE_SYMBOL)) +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ } +++ else +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (s); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ /* WHILE ... DO ... OD are ranges. */ +++ else if (IS (q, WHILE_SYMBOL)) +++ { +++ TABLE_T *u = a68_new_symbol_table (s); +++ TABLE (SUB (q)) = u; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ if ((FORWARD (q)) == NO_NODE) +++ not_a_for_range = true; +++ else if (IS (q, ALT_DO_SYMBOL)) +++ { +++ TABLE (SUB (q)) = a68_new_symbol_table (u); +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ /* ACCESS ... DEF ...POSTLUDE ...FED are ranges. */ +++ else if (IS (q, ALT_ACCESS_SYMBOL)) +++ { +++ TABLE_T *u = a68_new_symbol_table (s); +++ TABLE (SUB (q)) = u; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ if (NEXT (q) == NO_NODE) +++ not_a_for_range = true; +++ else if (IS ((FORWARD (q)), DEF_SYMBOL)) +++ { +++ TABLE_T *v = a68_new_symbol_table (u); +++ TABLE (SUB (q)) = v; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ /* DEF ... POSTLUDE ... FED are ranges. */ +++ else if (IS (q, DEF_SYMBOL)) +++ { +++ TABLE_T *u = a68_new_symbol_table (s); +++ PUBLIC_RANGE (u) = true; +++ TABLE (SUB (q)) = u; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ if (NEXT (q) == NO_NODE) +++ not_a_for_range = true; +++ else if (IS ((FORWARD (q)), POSTLUDE_SYMBOL)) +++ { +++ TABLE_T *v = a68_new_symbol_table (u); +++ TABLE (SUB (q)) = v; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ /* ACCESS ... CONTROLLED_CLAUSE are ranges. */ +++ else if (IS (q, ACCESS_SYMBOL)) +++ { +++ TABLE_T *u = a68_new_symbol_table (s); +++ TABLE (SUB (q)) = u; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ if (NEXT (q) == NO_NODE) +++ not_a_for_range = true; +++ } +++ else +++ { +++ TABLE (SUB (q)) = s; +++ a68_preliminary_symbol_table_setup (SUB (q)); +++ } +++ } +++ } +++ /* FOR identifiers will go to the DO ... OD range. */ +++ if (!not_a_for_range) +++ { +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, FOR_SYMBOL)) +++ { +++ NODE_T *r = q; +++ TABLE (NEXT (q)) = NO_TABLE; +++ for (; r != NO_NODE && TABLE (NEXT (q)) == NO_TABLE; FORWARD (r)) +++ { +++ if ((a68_is_one_of (r, WHILE_SYMBOL, ALT_DO_SYMBOL, STOP)) +++ && (NEXT (q) != NO_NODE && SUB (r) != NO_NODE)) +++ { +++ TABLE (NEXT (q)) = TABLE (SUB (r)); +++ SEQUENCE (NEXT (q)) = SUB (r); +++ } +++ } +++ } +++ } +++ } +++} +++ +++/* Mark a mode as in use. */ +++ +++static void +++mark_mode (MOID_T *m) +++{ +++ if (m != NO_MOID && USE (m) == false) +++ { +++ PACK_T *p = PACK (m); +++ USE (m) = true; +++ for (; p != NO_PACK; FORWARD (p)) +++ { +++ mark_mode (MOID (p)); +++ mark_mode (SUB (m)); +++ mark_mode (SLICE (m)); +++ } +++ } +++} +++ +++//! @brief Traverse tree and mark modes as used. +++ +++void +++a68_mark_moids (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ a68_mark_moids (SUB (p)); +++ if (MOID (p) != NO_MOID) +++ mark_mode (MOID (p)); +++ } +++} +++ +++/* Mark various tags as used. */ +++ +++void +++a68_mark_auxilliary (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (SUB (p) != NO_NODE) +++ { +++ /* You get no warnings on unused PROC parameters. That is ok since +++ A68 has some parameters that you may not use at all - think of +++ PROC (REF FILE) BOOL event routines in transput. */ +++ a68_mark_auxilliary (SUB (p)); +++ } +++ else if (IS (p, OPERATOR)) +++ { +++ TAG_T *z; +++ +++ if (TAX (p) != NO_TAG) +++ USE (TAX (p)) = true; +++ +++ if ((z = a68_find_tag_global (TABLE (p), PRIO_SYMBOL, NSYMBOL (p))) != NO_TAG) +++ USE (z) = true; +++ } +++ else if (IS (p, INDICANT)) +++ { +++ TAG_T *z = a68_find_tag_global (TABLE (p), INDICANT, NSYMBOL (p)); +++ +++ if (z != NO_TAG) +++ { +++ TAX (p) = z; +++ USE (z) = true; +++ } +++ } +++ else if (IS (p, IDENTIFIER)) +++ { +++ if (TAX (p) != NO_TAG) +++ USE (TAX (p)) = true; +++ } +++ } +++} +++ +++/* Check a single tag. */ +++ +++static void +++unused (TAG_T *s) +++{ +++ for (; s != NO_TAG; FORWARD (s)) +++ { +++ if (LINE_NUMBER (NODE (s)) > 0 && !USE (s)) +++ a68_warning (NODE (s), OPT_Wunused, "tag S is not used", NODE (s)); +++ } +++} +++ +++/* Driver for traversing tree and warn for unused tags. */ +++ +++void +++a68_warn_for_unused_tags (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (SUB (p) != NO_NODE) +++ { +++ if (a68_is_new_lexical_level (p)) +++ { +++ unused (MODULES (TABLE (SUB (p)))); +++ unused (OPERATORS (TABLE (SUB (p)))); +++ unused (PRIO (TABLE (SUB (p)))); +++ unused (IDENTIFIERS (TABLE (SUB (p)))); +++ unused (LABELS (TABLE (SUB (p)))); +++ unused (INDICANTS (TABLE (SUB (p)))); +++ } +++ } +++ a68_warn_for_unused_tags (SUB (p)); +++ } +++} +++ +++/* Mark jumps and procedured jumps. */ +++ +++void +++a68_jumps_from_procs (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, PROCEDURING)) +++ { +++ NODE_T *u = SUB_SUB (p); +++ +++ if (IS (u, GOTO_SYMBOL)) +++ FORWARD (u); +++ USE (TAX (u)) = true; +++ } +++ else if (IS (p, JUMP)) +++ { +++ NODE_T *u = SUB (p); +++ +++ if (IS (u, GOTO_SYMBOL)) +++ FORWARD (u); +++ if ((TAX (u) == NO_TAG) && (MOID (u) == NO_MOID) +++ && (a68_find_tag_global (TABLE (u), LABEL, NSYMBOL (u)) == NO_TAG)) +++ { +++ (void) a68_add_tag (TABLE (u), LABEL, u, NO_MOID, LOCAL_LABEL); +++ a68_error (u, "tag S has not been declared properly"); +++ } +++ else +++ USE (TAX (u)) = true; +++ } +++ else +++ a68_jumps_from_procs (SUB (p)); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-top-down.cc ++@@ -0,0 +1,894 @@ +++/* Top-down parser for control structure. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* A few forward prototypes of functions defined below. */ +++ +++static NODE_T *top_down_loop (NODE_T *p); +++static NODE_T *top_down_skip_unit (NODE_T *p); +++static NODE_T *top_down_def (NODE_T *def_p); +++ +++/* Substitute brackets. +++ +++ Traditional ALGOL 68 syntax allows ( .. ) to replace [ .. ] in bounds and +++ slices. This top-down pass substitutes [ .. ] occurrences into ( .. ). */ +++ +++void +++a68_substitute_brackets (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ a68_substitute_brackets (SUB (p)); +++ +++ switch (ATTRIBUTE (p)) +++ { +++ case SUB_SYMBOL: +++ ATTRIBUTE (p) = OPEN_SYMBOL; +++ break; +++ case BUS_SYMBOL: +++ ATTRIBUTE (p) = CLOSE_SYMBOL; +++ break; +++ default: +++ break; +++ } +++ } +++} +++ +++/* Intelligible diagnostic from syntax tree branch. */ +++ +++const char * +++a68_phrase_to_text (NODE_T * p, NODE_T ** w) +++{ +++#define MAX_TERMINALS 8 +++ int count = 0, line = -1; +++ static BUFFER buffer; +++ +++ for (buffer[0] = '\0'; p != NO_NODE && count < MAX_TERMINALS; FORWARD (p)) +++ { +++ if (LINE_NUMBER (p) == 0) +++ continue; +++ +++ enum a68_attribute gatt = a68_get_good_attribute (p); +++ const char *z = a68_attribute_name (gatt); +++ +++ /* Where to put the error message? Bob Uzgalis noted that actual +++ content of a diagnostic is not as important as accurately +++ indicating *were* the problem is! */ +++ if (w != NO_VAR) +++ { +++ if (count == 0 || (*w) == NO_NODE) +++ *w = p; +++ else if (a68_dont_mark_here (*w)) +++ *w = p; +++ } +++ +++ /* Add initiation. */ +++ if (count == 0) +++ { +++ if (w != NO_VAR) +++ a68_bufcat (buffer, "construct beginning with", BUFFER_SIZE); +++ } +++ else if (count == 1) +++ a68_bufcat (buffer, " followed by", BUFFER_SIZE); +++ else if (count == 2) +++ a68_bufcat (buffer, " and then", BUFFER_SIZE); +++ else if (count >= 3) +++ a68_bufcat (buffer, " and", BUFFER_SIZE); +++ +++ /* Attribute or symbol. */ +++ if (z != NO_TEXT && SUB (p) != NO_NODE) +++ { +++ if (gatt == IDENTIFIER || gatt == OPERATOR || gatt == DENOTATION) +++ { +++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); +++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) +++ gcc_unreachable (); +++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); +++ } +++ else +++ { +++ if (strchr ("aeio", z[0]) != NO_TEXT) +++ a68_bufcat (buffer, " an", BUFFER_SIZE); +++ else +++ a68_bufcat (buffer, " a", BUFFER_SIZE); +++ +++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %s", z) < 0) +++ gcc_unreachable (); +++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); +++ } +++ } +++ else if (z != NO_TEXT && SUB (p) == NO_NODE) +++ { +++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); +++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) +++ gcc_unreachable (); +++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); +++ } +++ else if (NSYMBOL (p) != NO_TEXT) +++ { +++ const char *strop_symbol = a68_strop_keyword (NSYMBOL (p)); +++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " %%<%s%%>", strop_symbol) < 0) +++ gcc_unreachable (); +++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); +++ } +++ /* Add "starting in line nn". */ +++ if (z != NO_TEXT && line != LINE_NUMBER (p)) +++ { +++ line = LINE_NUMBER (p); +++ if (gatt == SERIAL_CLAUSE || gatt == ENQUIRY_CLAUSE || gatt == INITIALISER_SERIES) +++ a68_bufcat (buffer, " starting", BUFFER_SIZE); +++ if (snprintf (A68 (edit_line), SNPRINTF_SIZE, " in line %d", line) < 0) +++ gcc_unreachable (); +++ a68_bufcat (buffer, A68 (edit_line), BUFFER_SIZE); +++ } +++ count++; +++ } +++ +++ if (p != NO_NODE && count == MAX_TERMINALS) +++ a68_bufcat (buffer, " etcetera", BUFFER_SIZE); +++ return buffer; +++} +++ +++/* Next is a top-down parser that branches out the basic blocks. +++ After this we can assign symbol tables to basic blocks. +++ This renders the two-level grammar LALR. */ +++ +++/* Give diagnose from top-down parser. */ +++ +++static void +++top_down_diagnose (NODE_T *start, NODE_T *p, int clause, int expected) +++{ +++ NODE_T *issue = (p != NO_NODE ? p : start); +++ const char *strop_keyword = a68_strop_keyword (NSYMBOL (start)); +++ +++ if (expected != 0) +++ a68_error (issue, "B expected in A, near Z L", +++ expected, clause, strop_keyword, LINE (INFO (start))); +++ else +++ a68_error (issue, "missing or unbalanced keyword in A, near Z L", +++ clause, strop_keyword, LINE (INFO (start))); +++} +++ +++/* Check for premature exhaustion of tokens. */ +++ +++static void +++tokens_exhausted (NODE_T *p, NODE_T *q) +++{ +++ if (p == NO_NODE) +++ { +++ a68_error (q, "check for missing or unmatched keyword in clause starting at S"); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++} +++ +++/* +++ * This part specifically branches out loop clauses. +++ */ +++ +++/* Whether in cast or formula with loop clause. */ +++ +++static int +++is_loop_cast_formula (NODE_T *p) +++{ +++ /* Accept declarers that can appear in such casts but not much more. */ +++ if (IS (p, VOID_SYMBOL)) +++ return 1; +++ else if (IS (p, INT_SYMBOL)) +++ return 1; +++ else if (IS_REF (p)) +++ return 1; +++ else if (a68_is_one_of (p, OPERATOR, BOLD_TAG, STOP)) +++ return 1; +++ else if (a68_whether (p, UNION_SYMBOL, OPEN_SYMBOL, STOP)) +++ return 2; +++ else if (a68_is_one_of (p, OPEN_SYMBOL, SUB_SYMBOL, STOP)) +++ { +++ int k = 0; +++ for (; p != NO_NODE && (a68_is_one_of (p, OPEN_SYMBOL, SUB_SYMBOL, STOP)); FORWARD (p), k++) +++ ; +++ return p != NO_NODE && (a68_whether (p, UNION_SYMBOL, OPEN_SYMBOL, STOP) ? k : 0); +++ } +++ return 0; +++} +++ +++/* Skip a unit in a loop clause (FROM u BY u TO u). */ +++ +++static NODE_T * +++top_down_skip_loop_unit (NODE_T *p) +++{ +++ /* Unit may start with, or consist of, a loop. */ +++ if (a68_is_loop_keyword (p)) +++ p = top_down_loop (p); +++ +++ /* Skip rest of unit. */ +++ while (p != NO_NODE) +++ { +++ int k = is_loop_cast_formula (p); +++ +++ if (k != 0) +++ { +++ /* operator-cast series ... */ +++ while (p != NO_NODE && k != 0) +++ { +++ while (k != 0) +++ { +++ FORWARD (p); +++ k--; +++ } +++ k = is_loop_cast_formula (p); +++ } +++ +++ /* ... may be followed by a loop clause. */ +++ if (a68_is_loop_keyword (p)) +++ p = top_down_loop (p); +++ } +++ else if (a68_is_loop_keyword (p) || IS (p, OD_SYMBOL)) +++ /* new loop or end-of-loop. */ +++ return p; +++ else if (IS (p, COLON_SYMBOL)) +++ { +++ FORWARD (p); +++ /* skip routine header: loop clause. */ +++ if (p != NO_NODE && a68_is_loop_keyword (p)) +++ p = top_down_loop (p); +++ } +++ else if (a68_is_one_of (p, SEMI_SYMBOL, COMMA_SYMBOL, STOP) || IS (p, EXIT_SYMBOL)) +++ /* Statement separators. */ +++ return p; +++ else +++ FORWARD (p); +++ } +++ return NO_NODE; +++} +++ +++/* Skip a loop clause. */ +++ +++static NODE_T * +++top_down_skip_loop_series (NODE_T *p) +++{ +++ bool siga; +++ +++ do +++ { +++ p = top_down_skip_loop_unit (p); +++ siga = (p != NO_NODE && (a68_is_one_of (p, SEMI_SYMBOL, EXIT_SYMBOL, +++ COMMA_SYMBOL, COLON_SYMBOL, +++ STOP))); +++ if (siga) +++ FORWARD (p); +++ } +++ while (!(p == NO_NODE || !siga)); +++ +++ return p; +++} +++ +++/* Make branch of loop parts. */ +++ +++static NODE_T * +++top_down_loop (NODE_T *p) +++{ +++ NODE_T *start = p, *q = p; +++ +++ if (IS (q, FOR_SYMBOL)) +++ { +++ tokens_exhausted (FORWARD (q), start); +++ +++ if (IS (q, IDENTIFIER)) +++ ATTRIBUTE (q) = DEFINING_IDENTIFIER; +++ else +++ { +++ top_down_diagnose (start, q, LOOP_CLAUSE, IDENTIFIER); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ tokens_exhausted (FORWARD (q), start); +++ +++ if (a68_is_one_of (q, FROM_SYMBOL, BY_SYMBOL, TO_SYMBOL, +++ WHILE_SYMBOL, STOP)) +++ ; +++ else if (IS (q, DO_SYMBOL)) +++ ATTRIBUTE (q) = ALT_DO_SYMBOL; +++ else +++ { +++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ } +++ +++ if (IS (q, FROM_SYMBOL)) +++ { +++ start = q; +++ q = top_down_skip_loop_unit (NEXT (q)); +++ tokens_exhausted (q, start); +++ if (a68_is_one_of (q, BY_SYMBOL, TO_SYMBOL, WHILE_SYMBOL, STOP)) +++ ; +++ else if (IS (q, DO_SYMBOL)) +++ ATTRIBUTE (q) = ALT_DO_SYMBOL; +++ else +++ { +++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (start, PREVIOUS (q), FROM_SYMBOL); +++ } +++ +++ if (IS (q, BY_SYMBOL)) +++ { +++ start = q; +++ q = top_down_skip_loop_series (NEXT (q)); +++ tokens_exhausted (q, start); +++ +++ if (a68_is_one_of (q, TO_SYMBOL, WHILE_SYMBOL, STOP)) +++ ; +++ else if (IS (q, DO_SYMBOL)) +++ ATTRIBUTE (q) = ALT_DO_SYMBOL; +++ else +++ { +++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (start, PREVIOUS (q), BY_SYMBOL); +++ } +++ +++ if (a68_is_one_of (q, TO_SYMBOL, STOP)) +++ { +++ start = q; +++ q = top_down_skip_loop_series (NEXT (q)); +++ tokens_exhausted (q, start); +++ +++ if (IS (q, WHILE_SYMBOL)) +++ ; +++ else if (IS (q, DO_SYMBOL)) +++ ATTRIBUTE (q) = ALT_DO_SYMBOL; +++ else +++ { +++ top_down_diagnose (start, q, LOOP_CLAUSE, STOP); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (start, PREVIOUS (q), TO_SYMBOL); +++ } +++ +++ if (IS (q, WHILE_SYMBOL)) +++ { +++ start = q; +++ q = top_down_skip_loop_series (NEXT (q)); +++ tokens_exhausted (q, start); +++ +++ if (IS (q, DO_SYMBOL)) +++ ATTRIBUTE (q) = ALT_DO_SYMBOL; +++ else +++ { +++ top_down_diagnose (start, q, LOOP_CLAUSE, DO_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (start, PREVIOUS (q), WHILE_SYMBOL); +++ } +++ +++ if (a68_is_one_of (q, DO_SYMBOL, ALT_DO_SYMBOL, STOP)) +++ { +++ enum a68_attribute k = ATTRIBUTE (q); +++ +++ start = q; +++ q = top_down_skip_loop_series (NEXT (q)); +++ tokens_exhausted (q, start); +++ +++ if (!IS (q, OD_SYMBOL)) +++ { +++ top_down_diagnose (start, q, LOOP_CLAUSE, OD_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (start, q, k); +++ } +++ +++ NODE_T *save = NEXT (start); +++ a68_make_sub (p, start, LOOP_CLAUSE); +++ return save; +++} +++ +++/* Driver for making branches of loop parts. */ +++ +++static void +++top_down_loops (NODE_T *p) +++{ +++ NODE_T *q = p; +++ +++ for (; q != NO_NODE; FORWARD (q)) +++ { +++ if (SUB (q) != NO_NODE) +++ top_down_loops (SUB (q)); +++ } +++ +++ q = p; +++ while (q != NO_NODE) +++ { +++ if (a68_is_loop_keyword (q) != STOP) +++ q = top_down_loop (q); +++ else +++ FORWARD (q); +++ } +++} +++ +++/* +++ * Branch anything except parts of a loop. +++ */ +++ +++/* Skip serial/enquiry clause (unit series). */ +++ +++static NODE_T * +++top_down_series (NODE_T *p) +++{ +++ bool siga = true; +++ while (siga) +++ { +++ siga = false; +++ p = top_down_skip_unit (p); +++ if (p != NO_NODE) +++ { +++ if (a68_is_one_of (p, SEMI_SYMBOL, EXIT_SYMBOL, COMMA_SYMBOL, STOP)) +++ { +++ siga = true; +++ FORWARD (p); +++ } +++ } +++ } +++ return p; +++} +++ +++/* Make branch of DEF .. POSTLUDE .. FED. */ +++ +++static NODE_T * +++top_down_def (NODE_T *def_p) +++{ +++ NODE_T *fed_p = top_down_series (NEXT (def_p)); +++ +++ if (fed_p == NO_NODE || !(IS (fed_p, FED_SYMBOL) || IS (fed_p, POSTLUDE_SYMBOL))) +++ { +++ top_down_diagnose (def_p, fed_p, MODULE_TEXT, FED_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (def_p, PREVIOUS (fed_p), DEF_SYMBOL); +++ +++ if (IS (fed_p, POSTLUDE_SYMBOL)) +++ { +++ NODE_T *postlude_p = top_down_series (NEXT (fed_p)); +++ +++ if (postlude_p == NO_NODE || !IS (postlude_p, FED_SYMBOL)) +++ { +++ top_down_diagnose (def_p, fed_p, MODULE_TEXT, FED_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (fed_p, PREVIOUS (postlude_p), POSTLUDE_SYMBOL); +++ } +++ +++ return NEXT (def_p); +++} +++ +++/* Make branch of +++ +++ ACCESS REVELATION [DEF_SYMBOL] +++ or +++ ACCESS REVELATION ENCLOSED_CLAUSE. */ +++ +++static void +++top_down_access (NODE_T *p) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (SUB (q) != NO_NODE) +++ top_down_access (SUB (q)); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, ACCESS_SYMBOL)) +++ { +++ NODE_T *end_p = NEXT (q); +++ +++ /* Skip joined list of revelations and make branch until the enclosed +++ clause, DEF_SYMBOL or POSTLUDE_SYMBOL. */ +++ while (a68_is_one_of (end_p, BOLD_TAG, PUBLIC_SYMBOL, COMMA_SYMBOL, STOP)) +++ FORWARD (end_p); +++ +++ if (IS (end_p, DEF_SYMBOL)) +++ { +++ FORWARD (end_p); +++ if (IS (end_p, POSTLUDE_SYMBOL)) +++ FORWARD (end_p); +++ if (IS (end_p, FED_SYMBOL)) +++ { +++ ATTRIBUTE (q) = ALT_ACCESS_SYMBOL; +++ a68_make_sub (q, end_p, ALT_ACCESS_SYMBOL); +++ } +++ } +++ else +++ a68_make_sub (q, end_p, ACCESS_SYMBOL); +++ } +++ } +++} +++ +++/* Make branch of BEGIN .. END. */ +++ +++static NODE_T * +++top_down_begin (NODE_T *begin_p) +++{ +++ NODE_T *end_p = top_down_series (NEXT (begin_p)); +++ +++ if (end_p == NO_NODE || !IS (end_p, END_SYMBOL)) +++ { +++ top_down_diagnose (begin_p, end_p, ENCLOSED_CLAUSE, END_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ return NO_NODE; +++ } +++ else +++ { +++ a68_make_sub (begin_p, end_p, BEGIN_SYMBOL); +++ return NEXT (begin_p); +++ } +++} +++ +++/* Make branch of ( .. ). */ +++ +++static NODE_T * +++top_down_open (NODE_T *open_p) +++{ +++ NODE_T *then_bar_p = top_down_series (NEXT (open_p)), *elif_bar_p; +++ +++ if (then_bar_p != NO_NODE && IS (then_bar_p, CLOSE_SYMBOL)) +++ { +++ a68_make_sub (open_p, then_bar_p, OPEN_SYMBOL); +++ return NEXT (open_p); +++ } +++ +++ if (then_bar_p == NO_NODE || !IS (then_bar_p, THEN_BAR_SYMBOL)) +++ { +++ top_down_diagnose (open_p, then_bar_p, ENCLOSED_CLAUSE, STOP); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (open_p, PREVIOUS (then_bar_p), OPEN_SYMBOL); +++ elif_bar_p = top_down_series (NEXT (then_bar_p)); +++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, CLOSE_SYMBOL)) +++ { +++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); +++ a68_make_sub (open_p, elif_bar_p, OPEN_SYMBOL); +++ return NEXT (open_p); +++ } +++ +++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, THEN_BAR_SYMBOL)) +++ { +++ NODE_T *close_p = top_down_series (NEXT (elif_bar_p)); +++ +++ if (close_p == NO_NODE || !IS (close_p, CLOSE_SYMBOL)) +++ { +++ top_down_diagnose (open_p, elif_bar_p, ENCLOSED_CLAUSE, CLOSE_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); +++ a68_make_sub (elif_bar_p, PREVIOUS (close_p), THEN_BAR_SYMBOL); +++ a68_make_sub (open_p, close_p, OPEN_SYMBOL); +++ return NEXT (open_p); +++ } +++ +++ if (elif_bar_p != NO_NODE && IS (elif_bar_p, ELSE_BAR_SYMBOL)) +++ { +++ NODE_T *close_p = top_down_open (elif_bar_p); +++ a68_make_sub (then_bar_p, PREVIOUS (elif_bar_p), THEN_BAR_SYMBOL); +++ a68_make_sub (open_p, elif_bar_p, OPEN_SYMBOL); +++ return close_p; +++ } +++ else +++ { +++ top_down_diagnose (open_p, elif_bar_p, ENCLOSED_CLAUSE, CLOSE_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ return NO_NODE; +++ } +++} +++ +++/* Make branch of [ .. ]. */ +++ +++static NODE_T * +++top_down_sub (NODE_T *sub_p) +++{ +++ NODE_T *bus_p = top_down_series (NEXT (sub_p)); +++ +++ if (bus_p != NO_NODE && IS (bus_p, BUS_SYMBOL)) +++ { +++ a68_make_sub (sub_p, bus_p, SUB_SYMBOL); +++ return NEXT (sub_p); +++ } +++ else +++ { +++ top_down_diagnose (sub_p, bus_p, 0, BUS_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ return NO_NODE; +++ } +++} +++ +++/* Make branch of IF .. THEN .. ELSE .. FI. */ +++ +++static NODE_T * +++top_down_if (NODE_T * if_p) +++{ +++ NODE_T *then_p = top_down_series (NEXT (if_p)), *elif_p; +++ +++ if (then_p == NO_NODE || !IS (then_p, THEN_SYMBOL)) +++ { +++ top_down_diagnose (if_p, then_p, CONDITIONAL_CLAUSE, THEN_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (if_p, PREVIOUS (then_p), IF_SYMBOL); +++ +++ elif_p = top_down_series (NEXT (then_p)); +++ if (elif_p != NO_NODE && IS (elif_p, FI_SYMBOL)) +++ { +++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); +++ a68_make_sub (if_p, elif_p, IF_SYMBOL); +++ return NEXT (if_p); +++ } +++ +++ if (elif_p != NO_NODE && IS (elif_p, ELSE_SYMBOL)) +++ { +++ NODE_T *fi_p = top_down_series (NEXT (elif_p)); +++ +++ if (fi_p == NO_NODE || !IS (fi_p, FI_SYMBOL)) +++ { +++ top_down_diagnose (if_p, fi_p, CONDITIONAL_CLAUSE, FI_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ else +++ { +++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); +++ a68_make_sub (elif_p, PREVIOUS (fi_p), ELSE_SYMBOL); +++ a68_make_sub (if_p, fi_p, IF_SYMBOL); +++ return NEXT (if_p); +++ } +++ } +++ +++ if (elif_p != NO_NODE && IS (elif_p, ELIF_SYMBOL)) +++ { +++ NODE_T *fi_p = top_down_if (elif_p); +++ +++ a68_make_sub (then_p, PREVIOUS (elif_p), THEN_SYMBOL); +++ a68_make_sub (if_p, elif_p, IF_SYMBOL); +++ return fi_p; +++ } +++ else +++ { +++ top_down_diagnose (if_p, elif_p, CONDITIONAL_CLAUSE, FI_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ return NO_NODE; +++ } +++} +++ +++/* Make branch of CASE .. IN .. OUT .. ESAC. */ +++ +++static NODE_T * +++top_down_case (NODE_T *case_p) +++{ +++ NODE_T *in_p = top_down_series (NEXT (case_p)), *ouse_p; +++ +++ if (in_p == NO_NODE || !IS (in_p, IN_SYMBOL)) +++ { +++ top_down_diagnose (case_p, in_p, ENCLOSED_CLAUSE, IN_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ +++ a68_make_sub (case_p, PREVIOUS (in_p), CASE_SYMBOL); +++ +++ ouse_p = top_down_series (NEXT (in_p)); +++ if (ouse_p != NO_NODE && IS (ouse_p, ESAC_SYMBOL)) +++ { +++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); +++ a68_make_sub (case_p, ouse_p, CASE_SYMBOL); +++ return NEXT (case_p); +++ } +++ +++ if (ouse_p != NO_NODE && IS (ouse_p, OUT_SYMBOL)) +++ { +++ NODE_T *esac_p = top_down_series (NEXT (ouse_p)); +++ +++ if (esac_p == NO_NODE || !IS (esac_p, ESAC_SYMBOL)) +++ { +++ top_down_diagnose (case_p, esac_p, ENCLOSED_CLAUSE, ESAC_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ else +++ { +++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); +++ a68_make_sub (ouse_p, PREVIOUS (esac_p), OUT_SYMBOL); +++ a68_make_sub (case_p, esac_p, CASE_SYMBOL); +++ return NEXT (case_p); +++ } +++ } +++ +++ if (ouse_p != NO_NODE && IS (ouse_p, OUSE_SYMBOL)) +++ { +++ NODE_T *esac_p = top_down_case (ouse_p); +++ +++ a68_make_sub (in_p, PREVIOUS (ouse_p), IN_SYMBOL); +++ a68_make_sub (case_p, ouse_p, CASE_SYMBOL); +++ return esac_p; +++ } +++ else +++ { +++ top_down_diagnose (case_p, ouse_p, ENCLOSED_CLAUSE, ESAC_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ return NO_NODE; +++ } +++} +++ +++/* Skip a unit. */ +++ +++static NODE_T * +++top_down_skip_unit (NODE_T *p) +++{ +++ while (p != NO_NODE && !a68_is_unit_terminator (p)) +++ { +++ if (IS (p, BEGIN_SYMBOL)) +++ p = top_down_begin (p); +++ else if (IS (p, SUB_SYMBOL)) +++ p = top_down_sub (p); +++ else if (IS (p, OPEN_SYMBOL)) +++ p = top_down_open (p); +++ else if (IS (p, IF_SYMBOL)) +++ p = top_down_if (p); +++ else if (IS (p, CASE_SYMBOL)) +++ p = top_down_case (p); +++ else +++ FORWARD (p); +++ } +++ return p; +++} +++ +++static NODE_T *top_down_skip_format (NODE_T *); +++ +++/* Make branch of ( .. ) in a format. */ +++ +++static NODE_T * +++top_down_format_open (NODE_T *open_p) +++{ +++ NODE_T *close_p = top_down_skip_format (NEXT (open_p)); +++ +++ if (close_p != NO_NODE && IS (close_p, FORMAT_CLOSE_SYMBOL)) +++ { +++ a68_make_sub (open_p, close_p, FORMAT_OPEN_SYMBOL); +++ return NEXT (open_p); +++ } +++ else +++ { +++ top_down_diagnose (open_p, close_p, 0, FORMAT_CLOSE_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ return NO_NODE; +++ } +++} +++ +++/* Skip a format text. */ +++ +++static NODE_T * +++top_down_skip_format (NODE_T *p) +++{ +++ while (p != NO_NODE) +++ { +++ if (IS (p, FORMAT_OPEN_SYMBOL)) +++ p = top_down_format_open (p); +++ else if (a68_is_one_of (p, FORMAT_CLOSE_SYMBOL, FORMAT_DELIMITER_SYMBOL, STOP)) +++ return p; +++ else +++ FORWARD (p); +++ } +++ return NO_NODE; +++} +++ +++/* Make branch of $ .. $. */ +++ +++static void +++top_down_formats (NODE_T * p) +++{ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (SUB (q) != NO_NODE) +++ top_down_formats (SUB (q)); +++ } +++ +++ for (NODE_T *q = p; q != NO_NODE; FORWARD (q)) +++ { +++ if (IS (q, FORMAT_DELIMITER_SYMBOL)) +++ { +++ NODE_T *f = NEXT (q); +++ +++ while (f != NO_NODE && !IS (f, FORMAT_DELIMITER_SYMBOL)) +++ { +++ if (IS (f, FORMAT_OPEN_SYMBOL)) +++ f = top_down_format_open (f); +++ else +++ f = NEXT (f); +++ } +++ +++ if (f == NO_NODE) +++ { +++ top_down_diagnose (p, f, FORMAT_TEXT, FORMAT_DELIMITER_SYMBOL); +++ longjmp (A68_PARSER (top_down_crash_exit), 1); +++ } +++ else +++ a68_make_sub (q, f, FORMAT_DELIMITER_SYMBOL); +++ } +++ } +++} +++ +++/* Skip prelude packet. */ +++ +++static NODE_T * +++top_down_prelude_packet (NODE_T *p) +++{ +++ while (p != NO_NODE) +++ { +++ if (IS (p, DEF_SYMBOL)) +++ p = top_down_def (p); +++ else +++ FORWARD (p); +++ } +++ +++ return p; +++} +++ +++/* Skip particular program. */ +++ +++static NODE_T * +++top_down_particular_program (NODE_T *p) +++{ +++ (void) top_down_series (p); +++ return p; +++} +++ +++/* Make branches of phrases for the bottom-up parser. */ +++ +++void +++a68_top_down_parser (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return; +++ +++ if (!setjmp (A68_PARSER (top_down_crash_exit))) +++ { +++ if (IS (p, MODULE_SYMBOL)) +++ (void) top_down_prelude_packet (p); +++ else +++ (void) top_down_particular_program (p); +++ } +++ +++ top_down_loops (p); +++ top_down_formats (p); +++ top_down_access (p); +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser-victal.cc ++@@ -0,0 +1,362 @@ +++/* Syntax check for formal, actual and virtual declarers. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "options.h" +++ +++#include "a68.h" +++ +++static bool victal_check_declarer (NODE_T *, int); +++ +++/* Check generator. */ +++ +++static void +++victal_check_generator (NODE_T * p) +++{ +++ if (!victal_check_declarer (NEXT (p), ACTUAL_DECLARER_MARK)) +++ a68_error (p, "Y expected", "actual declarer"); +++} +++ +++/* Check formal pack. */ +++ +++static void +++victal_check_formal_pack (NODE_T *p, int x, bool *z) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, FORMAL_DECLARERS)) +++ victal_check_formal_pack (SUB (p), x, z); +++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) +++ victal_check_formal_pack (NEXT (p), x, z); +++ else if (IS (p, FORMAL_DECLARERS_LIST)) +++ { +++ victal_check_formal_pack (NEXT (p), x, z); +++ victal_check_formal_pack (SUB (p), x, z); +++ } +++ else if (IS (p, DECLARER)) +++ { +++ victal_check_formal_pack (NEXT (p), x, z); +++ (*z) &= victal_check_declarer (SUB (p), x); +++ } +++ } +++} +++ +++/* Check operator declaration. */ +++ +++static void +++victal_check_operator_dec (NODE_T *p) +++{ +++ if (IS (NEXT (p), FORMAL_DECLARERS)) +++ { +++ bool z = true; +++ victal_check_formal_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); +++ if (!z) +++ a68_error (p, "Y expected", "formal declarers"); +++ FORWARD (p); +++ } +++ if (!victal_check_declarer (NEXT (p), FORMAL_DECLARER_MARK)) +++ a68_error (p, "Y expected", "formal declarer"); +++} +++ +++/* Check mode declaration. */ +++ +++static void +++victal_check_mode_dec (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, MODE_DECLARATION)) +++ { +++ victal_check_mode_dec (SUB (p)); +++ victal_check_mode_dec (NEXT (p)); +++ } +++ else if (a68_is_one_of (p, MODE_SYMBOL, DEFINING_INDICANT, STOP) +++ || a68_is_one_of (p, EQUALS_SYMBOL, COMMA_SYMBOL, STOP)) +++ { +++ victal_check_mode_dec (NEXT (p)); +++ } +++ else if (IS (p, DECLARER)) +++ { +++ if (!victal_check_declarer (p, ACTUAL_DECLARER_MARK)) +++ a68_error (p, "Y expected", "actual declarer"); +++ } +++ } +++} +++ +++/* Check variable declaration. */ +++ +++static void +++victal_check_variable_dec (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, VARIABLE_DECLARATION)) +++ { +++ victal_check_variable_dec (SUB (p)); +++ victal_check_variable_dec (NEXT (p)); +++ } +++ else +++ { +++ if (IS (p, QUALIFIER)) +++ FORWARD (p); +++ +++ if (a68_is_one_of (p, DEFINING_IDENTIFIER, ASSIGN_SYMBOL, STOP) +++ || IS (p, COMMA_SYMBOL)) +++ victal_check_variable_dec (NEXT (p)); +++ else if (IS (p, UNIT)) +++ a68_victal_checker (SUB (p)); +++ else if (IS (p, DECLARER)) +++ { +++ if (!victal_check_declarer (p, ACTUAL_DECLARER_MARK)) +++ a68_error (p, "Y expected", "actual declarer"); +++ victal_check_variable_dec (NEXT (p)); +++ } +++ } +++ } +++} +++ +++/* Check identity declaration. */ +++ +++static void +++victal_check_identity_dec (NODE_T * p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, IDENTITY_DECLARATION)) +++ { +++ victal_check_identity_dec (SUB (p)); +++ victal_check_identity_dec (NEXT (p)); +++ } +++ else if (a68_is_one_of (p, DEFINING_IDENTIFIER, EQUALS_SYMBOL, COMMA_SYMBOL, STOP)) +++ victal_check_identity_dec (NEXT (p)); +++ else if (IS (p, UNIT)) +++ a68_victal_checker (SUB (p)); +++ else if (IS (p, DECLARER)) +++ { +++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) +++ a68_error (p, "Y expected", "formal declarer"); +++ victal_check_identity_dec (NEXT (p)); +++ } +++ } +++} +++ +++/* Check routine pack. */ +++ +++static void +++victal_check_routine_pack (NODE_T *p, int x, bool *z) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, PARAMETER_PACK)) +++ victal_check_routine_pack (SUB (p), x, z); +++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) +++ victal_check_routine_pack (NEXT (p), x, z); +++ else if (a68_is_one_of (p, PARAMETER_LIST, PARAMETER, STOP)) +++ { +++ victal_check_routine_pack (NEXT (p), x, z); +++ victal_check_routine_pack (SUB (p), x, z); +++ } +++ else if (IS (p, DECLARER)) +++ *z &= victal_check_declarer (SUB (p), x); +++ } +++} +++ +++/* Check routine text. */ +++ +++static void +++victal_check_routine_text (NODE_T *p) +++{ +++ if (IS (p, PARAMETER_PACK)) +++ { +++ bool z = true; +++ victal_check_routine_pack (p, FORMAL_DECLARER_MARK, &z); +++ if (!z) +++ a68_error (p, "Y expected", "formal declarers"); +++ FORWARD (p); +++ } +++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) +++ a68_error (p, "Y expected", "formal declarer"); +++ a68_victal_checker (NEXT (p)); +++} +++ +++/* Check structure pack. */ +++ +++static void +++victal_check_structure_pack (NODE_T *p, int x, bool *z) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, STRUCTURE_PACK)) +++ victal_check_structure_pack (SUB (p), x, z); +++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, STOP)) +++ victal_check_structure_pack (NEXT (p), x, z); +++ else if (a68_is_one_of (p, STRUCTURED_FIELD_LIST, STRUCTURED_FIELD, STOP)) +++ { +++ victal_check_structure_pack (NEXT (p), x, z); +++ victal_check_structure_pack (SUB (p), x, z); +++ } +++ else if (IS (p, DECLARER)) +++ (*z) &= victal_check_declarer (SUB (p), x); +++ } +++} +++ +++/* Check union pack. */ +++ +++static void +++victal_check_union_pack (NODE_T * p, int x, bool * z) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, UNION_PACK)) +++ victal_check_union_pack (SUB (p), x, z); +++ else if (a68_is_one_of (p, OPEN_SYMBOL, COMMA_SYMBOL, VOID_SYMBOL, STOP)) +++ victal_check_union_pack (NEXT (p), x, z); +++ else if (IS (p, UNION_DECLARER_LIST)) +++ { +++ victal_check_union_pack (NEXT (p), x, z); +++ victal_check_union_pack (SUB (p), x, z); +++ } +++ else if (IS (p, DECLARER)) +++ { +++ victal_check_union_pack (NEXT (p), x, z); +++ (*z) &= victal_check_declarer (SUB (p), FORMAL_DECLARER_MARK); +++ } +++ } +++} +++ +++/* Check declarer. */ +++ +++static bool +++victal_check_declarer (NODE_T *p, int x) +++{ +++ if (p == NO_NODE) +++ return false; +++ else if (IS (p, DECLARER)) +++ return victal_check_declarer (SUB (p), x); +++ else if (a68_is_one_of (p, LONGETY, SHORTETY, STOP)) +++ return true; +++ else if (a68_is_one_of (p, VOID_SYMBOL, INDICANT, STANDARD, STOP)) +++ return true; +++ else if (IS_REF (p)) +++ return victal_check_declarer (NEXT (p), VIRTUAL_DECLARER_MARK); +++ else if (IS_FLEX (p)) +++ return victal_check_declarer (NEXT (p), x); +++ else if (IS (p, BOUNDS)) +++ { +++ a68_victal_checker (SUB (p)); +++ if (x == FORMAL_DECLARER_MARK) +++ { +++ a68_error (p, "Y expected", "formal bounds"); +++ (void) victal_check_declarer (NEXT (p), x); +++ return true; +++ } +++ else if (x == VIRTUAL_DECLARER_MARK) +++ { +++ a68_error (p, "Y expected", "virtual bounds"); +++ (void) victal_check_declarer (NEXT (p), x); +++ return true; +++ } +++ else +++ return victal_check_declarer (NEXT (p), x); +++ } +++ else if (IS (p, FORMAL_BOUNDS)) +++ { +++ a68_victal_checker (SUB (p)); +++ if (x == ACTUAL_DECLARER_MARK) +++ { +++ a68_error (p, "Y expected", "actual bounds"); +++ (void) victal_check_declarer (NEXT (p), x); +++ return true; +++ } +++ else +++ return victal_check_declarer (NEXT (p), x); +++ } +++ else if (IS (p, STRUCT_SYMBOL)) +++ { +++ bool z = true; +++ victal_check_structure_pack (NEXT (p), x, &z); +++ return z; +++ } +++ else if (IS (p, UNION_SYMBOL)) +++ { +++ bool z = true; +++ victal_check_union_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); +++ if (!z) +++ a68_error (p, "Y expected", "formal declarer pack"); +++ return true; +++ } +++ else if (IS (p, PROC_SYMBOL)) +++ { +++ if (IS (NEXT (p), FORMAL_DECLARERS)) +++ { +++ bool z = true; +++ victal_check_formal_pack (NEXT (p), FORMAL_DECLARER_MARK, &z); +++ if (!z) +++ a68_error (p, "Y expected", "formal declarer"); +++ FORWARD (p); +++ } +++ if (!victal_check_declarer (NEXT (p), FORMAL_DECLARER_MARK)) +++ a68_error (p, "Y expected", "formal declarer"); +++ return true; +++ } +++ else +++ return false; +++} +++ +++/* Check cast. */ +++ +++static void +++victal_check_cast (NODE_T *p) +++{ +++ if (!victal_check_declarer (p, FORMAL_DECLARER_MARK)) +++ { +++ a68_error (p, "Y expected", "formal declarer"); +++ a68_victal_checker (NEXT (p)); +++ } +++} +++ +++/* Driver for checking VICTALITY of declarers. */ +++ +++void +++a68_victal_checker (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, MODE_DECLARATION)) +++ victal_check_mode_dec (SUB (p)); +++ else if (IS (p, VARIABLE_DECLARATION)) +++ victal_check_variable_dec (SUB (p)); +++ else if (IS (p, IDENTITY_DECLARATION)) +++ victal_check_identity_dec (SUB (p)); +++ else if (IS (p, GENERATOR)) +++ victal_check_generator (SUB (p)); +++ else if (IS (p, ROUTINE_TEXT)) +++ victal_check_routine_text (SUB (p)); +++ else if (IS (p, OPERATOR_PLAN)) +++ victal_check_operator_dec (SUB (p)); +++ else if (IS (p, CAST)) +++ victal_check_cast (SUB (p)); +++ else +++ a68_victal_checker (SUB (p)); +++ } +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-parser.cc ++@@ -0,0 +1,1181 @@ +++/* ALGOL 68 parser. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++/* +++ This is a Mailloux-type parser driver. +++ +++ The Algol 68 grammar is a two level (Van Wijngaarden, "VW") grammar +++ that incorporates, as syntactical rules, the semantical rules in +++ other languages. Examples are correct use of symbols, modes and +++ scope. +++ +++ This code constitutes an effective "VW Algol 68 parser". A +++ pragmatic approach was chosen since in the early days of Algol 68, +++ many "ab initio" implementations failed, probably because +++ techniques to parse a language like Algol 68 had yet to be +++ invented. +++ +++ This is a Mailloux-type parser, in the sense that it scans a +++ "phrase" for definitions needed for parsing. Algol 68 allows for +++ tags to be used before they are defined, which gives freedom in +++ top-down programming. +++ +++ B. J. Mailloux. On the implementation of Algol 68. +++ Thesis, Universiteit van Amsterdam (Mathematisch Centrum) [1968]. +++ +++ Technically, Mailloux's approach renders the two-level grammar +++ LALR. +++ +++ First part of the parser is the scanner. The source file is read, is +++ tokenised. The result is a linear list of tokens that is input for the +++ parser, that will transform the linear list into a syntax tree. +++ +++ This front-end tokenises all symbols before the bottom-up parser is invoked. +++ This means that scanning does not use information from the parser. The +++ scanner does of course some rudimentary parsing. +++ +++ The scanner supports two stropping regimes: "bold" (or "upper") and +++ "quote". Examples of both: +++ +++ bold stropping: BEGIN INT i = 1, j = 1; print (i + j) END +++ +++ quote stropping: 'BEGIN' 'INT' I = 1, J = 1; PRINT (I + J) 'END' +++ +++ Quote stropping was used frequently in the (excusez-le-mot) +++ punch-card age. Hence, bold stropping is the default. There also +++ existed point stropping, but that has not been implemented here. +++ +++ Next part of the parser is a recursive-descent type to check +++ parenthesis. Also a first set-up is made of symbol tables, needed +++ by the bottom-up parser. Next part is the bottom-up parser, that +++ parses without knowing modes while parsing and reducing. It can +++ therefore not exchange "[]" with "()" as was blessed by the Revised +++ Report. This is solved by treating CALL and SLICE as equivalent for +++ the moment and letting the mode checker sort it out later. +++ +++ Parsing progresses in various phases to avoid spurious diagnostics +++ from a recovering parser. Every phase "tightens" the grammar more. +++ An error in any phase makes the parser quit when that phase ends. +++ The parser is forgiving in case of superfluous semicolons. +++ +++ These are the parser phases: +++ +++ (1) Parenthesis are checked to see whether they match. Then, a top-down +++ parser determines the basic-block structure of the program +++ so symbol tables can be set up that the bottom-up parser will consult +++ as you can define things before they are applied. +++ +++ (2) A bottom-up parser resolves the structure of the program. +++ +++ (3) After the symbol tables have been finalised, a small rearrangement of the +++ tree may be required where JUMPs have no GOTO. This leads to the +++ non-standard situation that JUMPs without GOTO can have the syntactic +++ position of a PRIMARY, SECONDARY or TERTIARY. The bottom-up parser also +++ does not check VICTAL correctness of declarers. This is done separately. +++ +++ The parser sets up symbol tables and populates them as far as needed to parse +++ the source. After the bottom-up parser terminates succesfully, the symbol tables +++ are completed. +++ +++ (4) Next, modes are collected and rules for well-formedness and structural +++ equivalence are applied. Then the symbol-table is completed now moids are +++ all known. +++ +++ (5) Next phases are the mode checker and coercion inserter. The syntax tree is +++ traversed to determine and check all modes, and to select operators. Then +++ the tree is traversed again to insert coercions. +++ +++ (6) A static scope checker detects where objects are transported out of scope. +++ At run time, a dynamic scope checker will check that what the static scope +++ checker cannot see. +++ +++ (7) A serial-clause dynamic stack allocation (DSA) phase annotates the +++ serial clauses that contain phrases whose elaboration may result in +++ dynamic stack adjustments. +++*/ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "diagnostic.h" +++#include "tree.h" +++ +++#include "a68.h" +++ +++/* Global state kept by the parser. */ +++ +++PARSER_T a68_parser_state; +++ +++/* A few forward declarations of functions defined below. */ +++ +++static void make_special_mode (MOID_T ** n, int m); +++static void tie_label_to_serial (NODE_T *p); +++static void tie_label_to_unit (NODE_T *p); +++ +++/* Is_ref_refety_flex. */ +++ +++bool +++a68_is_ref_refety_flex (MOID_T *m) +++{ +++ if (IS_REF_FLEX (m)) +++ return true; +++ else if (IS_REF (m)) +++ return a68_is_ref_refety_flex (SUB (m)); +++ else +++ return false; +++} +++ +++/* Count number of operands in operator parameter list. */ +++ +++int +++a68_count_operands (NODE_T *p) +++{ +++ if (p != NO_NODE) +++ { +++ if (IS (p, DECLARER)) +++ return a68_count_operands (NEXT (p)); +++ else if (IS (p, COMMA_SYMBOL)) +++ return 1 + a68_count_operands (NEXT (p)); +++ else +++ return a68_count_operands (NEXT (p)) + a68_count_operands (SUB (p)); +++ } +++ else +++ return 0; +++} +++ +++/* Count formal bounds in declarer in tree. */ +++ +++int +++a68_count_formal_bounds (NODE_T * p) +++{ +++ if (p == NO_NODE) +++ return 0; +++ else +++ { +++ if (IS (p, COMMA_SYMBOL)) +++ return 1; +++ else +++ return a68_count_formal_bounds (NEXT (p)) + a68_count_formal_bounds (SUB (p)); +++ } +++} +++ +++/* Count pictures. */ +++ +++void +++a68_count_pictures (NODE_T *p, int *k) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, PICTURE)) +++ (*k)++; +++ a68_count_pictures (SUB (p), k); +++ } +++} +++ +++/* Whether token cannot follow semicolon or EXIT. */ +++ +++bool +++a68_is_semicolon_less (NODE_T *p) +++{ +++ switch (ATTRIBUTE (p)) +++ { +++ case BUS_SYMBOL: +++ case CLOSE_SYMBOL: +++ case END_SYMBOL: +++ case SEMI_SYMBOL: +++ case EXIT_SYMBOL: +++ case THEN_BAR_SYMBOL: +++ case ELSE_BAR_SYMBOL: +++ case THEN_SYMBOL: +++ case ELIF_SYMBOL: +++ case ELSE_SYMBOL: +++ case FI_SYMBOL: +++ case IN_SYMBOL: +++ case OUT_SYMBOL: +++ case OUSE_SYMBOL: +++ case ESAC_SYMBOL: +++ case OD_SYMBOL: +++ case FED_SYMBOL: +++ case POSTLUDE_SYMBOL: +++ return true; +++ default: +++ return false; +++ } +++} +++ +++/* Whether formal bounds. */ +++ +++bool +++a68_is_formal_bounds (NODE_T *p) +++{ +++ if (p == NO_NODE) +++ return true; +++ +++ switch (ATTRIBUTE (p)) +++ { +++ case OPEN_SYMBOL: +++ case CLOSE_SYMBOL: +++ case SUB_SYMBOL: +++ case BUS_SYMBOL: +++ case COMMA_SYMBOL: +++ case COLON_SYMBOL: +++ case INT_DENOTATION: +++ case IDENTIFIER: +++ case OPERATOR: +++ return (a68_is_formal_bounds (SUB (p)) +++ && a68_is_formal_bounds (NEXT (p))); +++ default: +++ return false; +++ } +++} +++ +++/* Whether token terminates a unit. */ +++ +++bool +++a68_is_unit_terminator (NODE_T *p) +++{ +++ switch (ATTRIBUTE (p)) +++ { +++ case BUS_SYMBOL: +++ case CLOSE_SYMBOL: +++ case END_SYMBOL: +++ case SEMI_SYMBOL: +++ case EXIT_SYMBOL: +++ case COMMA_SYMBOL: +++ case THEN_BAR_SYMBOL: +++ case ELSE_BAR_SYMBOL: +++ case THEN_SYMBOL: +++ case ELIF_SYMBOL: +++ case ELSE_SYMBOL: +++ case FI_SYMBOL: +++ case IN_SYMBOL: +++ case OUT_SYMBOL: +++ case OUSE_SYMBOL: +++ case ESAC_SYMBOL: +++ case FED_SYMBOL: +++ case POSTLUDE_SYMBOL: +++ return true; +++ default: +++ return false; +++ } +++} +++ +++/* Whether token is a unit-terminator in a loop clause. */ +++ +++bool +++a68_is_loop_keyword (NODE_T *p) +++{ +++ switch (ATTRIBUTE (p)) +++ { +++ case FOR_SYMBOL: +++ case FROM_SYMBOL: +++ case BY_SYMBOL: +++ case TO_SYMBOL: +++ case WHILE_SYMBOL: +++ case DO_SYMBOL: +++ return true; +++ default: +++ return false; +++ } +++} +++ +++/* Get good attribute. */ +++ +++enum a68_attribute +++a68_get_good_attribute (NODE_T *p) +++{ +++ switch (ATTRIBUTE (p)) +++ { +++ case UNIT: +++ case TERTIARY: +++ case SECONDARY: +++ case PRIMARY: +++ return a68_get_good_attribute (SUB (p)); +++ default: +++ return ATTRIBUTE (p); +++ } +++} +++ +++/* Preferably don't put intelligible diagnostic here. */ +++ +++bool +++a68_dont_mark_here (NODE_T *p) +++{ +++ switch (ATTRIBUTE (p)) +++ { +++ case ALT_DO_SYMBOL: +++ case ALT_EQUALS_SYMBOL: +++ case ANDF_SYMBOL: +++ case ASSERT_SYMBOL: +++ case ASSIGN_SYMBOL: +++ case ASSIGN_TO_SYMBOL: +++ case AT_SYMBOL: +++ case BEGIN_SYMBOL: +++ case BITS_SYMBOL: +++ case BOLD_COMMENT_SYMBOL: +++ case BOLD_PRAGMAT_SYMBOL: +++ case BOLD_COMMENT_BEGIN_SYMBOL: +++ case BOLD_COMMENT_END_SYMBOL: +++ case BOOL_SYMBOL: +++ case BUS_SYMBOL: +++ case BY_SYMBOL: +++ case BYTES_SYMBOL: +++ case CASE_SYMBOL: +++ case CHANNEL_SYMBOL: +++ case CHAR_SYMBOL: +++ case CLOSE_SYMBOL: +++ case COLON_SYMBOL: +++ case COMMA_SYMBOL: +++ case COMPLEX_SYMBOL: +++ case COMPL_SYMBOL: +++ case DO_SYMBOL: +++ case ELIF_SYMBOL: +++ case ELSE_BAR_SYMBOL: +++ case ELSE_SYMBOL: +++ case EMPTY_SYMBOL: +++ case END_SYMBOL: +++ case EQUALS_SYMBOL: +++ case ESAC_SYMBOL: +++ case EXIT_SYMBOL: +++ case FALSE_SYMBOL: +++ case FILE_SYMBOL: +++ case FI_SYMBOL: +++ case FLEX_SYMBOL: +++ case FOR_SYMBOL: +++ case FROM_SYMBOL: +++ case GO_SYMBOL: +++ case GOTO_SYMBOL: +++ case HEAP_SYMBOL: +++ case IF_SYMBOL: +++ case IN_SYMBOL: +++ case INT_SYMBOL: +++ case ISNT_SYMBOL: +++ case IS_SYMBOL: +++ case LOC_SYMBOL: +++ case LONG_SYMBOL: +++ case MAIN_SYMBOL: +++ case MODE_SYMBOL: +++ case NIL_SYMBOL: +++ case OD_SYMBOL: +++ case OF_SYMBOL: +++ case OPEN_SYMBOL: +++ case OP_SYMBOL: +++ case ORF_SYMBOL: +++ case OUSE_SYMBOL: +++ case OUT_SYMBOL: +++ case PAR_SYMBOL: +++ case POINT_SYMBOL: +++ case PRIO_SYMBOL: +++ case PROC_SYMBOL: +++ case REAL_SYMBOL: +++ case REF_SYMBOL: +++ case ROWS_SYMBOL: +++ case ROW_SYMBOL: +++ case SEMA_SYMBOL: +++ case SEMI_SYMBOL: +++ case SHORT_SYMBOL: +++ case SKIP_SYMBOL: +++ case STRING_SYMBOL: +++ case STRUCT_SYMBOL: +++ case STYLE_I_COMMENT_SYMBOL: +++ case STYLE_II_COMMENT_SYMBOL: +++ case STYLE_I_PRAGMAT_SYMBOL: +++ case SUB_SYMBOL: +++ case THEN_BAR_SYMBOL: +++ case THEN_SYMBOL: +++ case TO_SYMBOL: +++ case TRUE_SYMBOL: +++ case UNION_SYMBOL: +++ case VOID_SYMBOL: +++ case WHILE_SYMBOL: +++ case SERIAL_CLAUSE: +++ case ENQUIRY_CLAUSE: +++ case INITIALISER_SERIES: +++ case DECLARATION_LIST: +++ case DEF_SYMBOL: +++ case FED_SYMBOL: +++ case POSTLUDE_SYMBOL: +++ case ACCESS_SYMBOL: +++ return true; +++ default: +++ return false; +++ } +++} +++ +++/* Renumber nodes in the given subtree P, starting with number N. */ +++ +++static void +++renumber_nodes (NODE_T *p, int *n) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ NUMBER (p) = (*n)++; +++ renumber_nodes (SUB (p), n); +++ } +++} +++ +++/* Parse an ALGOL 68 source file. */ +++ +++void +++a68_parser (const char *filename) +++{ +++ int renum = 0; +++ +++ /* Initialisation. */ +++ A68 (top_keyword) = NO_KEYWORD; +++ A68 (top_token) = NO_TOKEN; +++ A68_PARSER (error_tag) = (TAG_T *) a68_new_tag (); +++ TOP_NODE (&A68_JOB) = NO_NODE; +++ TOP_MOID (&A68_JOB) = NO_MOID; +++ TOP_LINE (&A68_JOB) = NO_LINE; +++ STANDENV_MOID (&A68_JOB) = NO_MOID; +++ a68_set_up_tables (); +++ ERROR_COUNT (&A68_JOB) = WARNING_COUNT (&A68_JOB) = 0; +++ +++ /* Tokeniser. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ bool ok = a68_lexical_analyser (filename); +++ +++ if (!ok) +++ return; +++ +++ /* An empty file is not a valid program. */ +++ if (TOP_NODE (&A68_JOB) == NO_NODE) +++ { +++ a68_error (NO_NODE, "file is empty, expected a program"); +++ return; +++ } +++ +++ TREE_LISTING_SAFE (&A68_JOB) = true; +++ renum = 0; +++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); +++ } +++ +++ /* Final initialisations. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ A68_STANDENV = NO_TABLE; +++ a68_init_postulates (); +++ A68 (mode_count) = 0; +++ make_special_mode (&M_HIP, A68 (mode_count)++); +++ make_special_mode (&M_UNDEFINED, A68 (mode_count)++); +++ make_special_mode (&M_ERROR, A68 (mode_count)++); +++ make_special_mode (&M_VACUUM, A68 (mode_count)++); +++ make_special_mode (&M_C_STRING, A68 (mode_count)++); +++ make_special_mode (&M_COLLITEM, A68 (mode_count)++); +++ } +++ +++ /* Handle pragmats. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ a68_handle_pragmats (TOP_NODE (&A68_JOB)); +++ +++ /* Top-down parser. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ a68_check_parenthesis (TOP_NODE (&A68_JOB)); +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ if (OPTION_BRACKETS (&A68_JOB)) +++ a68_substitute_brackets (TOP_NODE (&A68_JOB)); +++ A68 (symbol_table_count) = 0; +++ A68_STANDENV = a68_new_symbol_table (NO_TABLE); +++ LEVEL (A68_STANDENV) = 0; +++ a68_top_down_parser (TOP_NODE (&A68_JOB)); +++ // printf ("AFTER TOP-DOWN\n"); +++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB)); +++ } +++ +++ renum = 0; +++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); +++ } +++ +++ /* Standard environment builder. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ TABLE (TOP_NODE (&A68_JOB)) = a68_new_symbol_table (A68_STANDENV); +++ a68_make_standard_environ (); +++ STANDENV_MOID (&A68_JOB) = TOP_MOID (&A68_JOB); +++ } +++ +++ /* Bottom-up parser. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ a68_preliminary_symbol_table_setup (TOP_NODE (&A68_JOB)); +++ // printf ("AFTER PRELIMINARY SYMBOL TABLE SETUP\n"); +++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true); +++ a68_bottom_up_parser (TOP_NODE (&A68_JOB)); +++ a68_bottom_up_coalesce_pub (TOP_NODE (&A68_JOB)); +++ renum = 0; +++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); +++ } +++ +++ // printf ("AFTER BOTTOM-UP\n"); +++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true); +++ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ a68_bottom_up_error_check (TOP_NODE (&A68_JOB)); +++ a68_victal_checker (TOP_NODE (&A68_JOB)); +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ a68_finalise_symbol_table_setup (TOP_NODE (&A68_JOB), 1); +++ // printf ("AFTER FINALISE SYMBOL TABLE SETUP\n"); +++ // a68_dump_parse_tree (TOP_NODE (&A68_JOB), true, true); +++ NEST (TABLE (TOP_NODE (&A68_JOB))) = A68 (symbol_table_count) = 3; +++ a68_reset_symbol_table_nest_count (TOP_NODE (&A68_JOB)); +++ a68_fill_symbol_table_outer (TOP_NODE (&A68_JOB), TABLE (TOP_NODE (&A68_JOB))); +++ a68_set_nest (TOP_NODE (&A68_JOB), NO_NODE); +++ a68_set_proc_level (TOP_NODE (&A68_JOB), 1); +++ } +++ renum = 0; +++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); +++ } +++ +++ /* Mode table builder. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ a68_make_moid_list (&A68_JOB); +++ CROSS_REFERENCE_SAFE (&A68_JOB) = true; +++ +++ /* Symbol table builder. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ a68_collect_taxes (TOP_NODE (&A68_JOB)); +++ +++ /* Post parser. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ a68_rearrange_goto_less_jumps (TOP_NODE (&A68_JOB)); +++ +++ /* Mode checker. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ a68_mode_checker (TOP_NODE (&A68_JOB)); +++ +++ /* Coercion inserter. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ a68_coercion_inserter (TOP_NODE (&A68_JOB)); +++ renum = 0; +++ renumber_nodes (TOP_NODE (&A68_JOB), &renum); +++ } +++ +++ /* Application checker. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ a68_mark_moids (TOP_NODE (&A68_JOB)); +++ a68_mark_auxilliary (TOP_NODE (&A68_JOB)); +++ a68_jumps_from_procs (TOP_NODE (&A68_JOB)); +++ a68_warn_for_unused_tags (TOP_NODE (&A68_JOB)); +++ } +++ +++ /* Static scope checker. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ tie_label_to_serial (TOP_NODE (&A68_JOB)); +++ tie_label_to_unit (TOP_NODE (&A68_JOB)); +++ a68_bind_routine_tags_to_tree (TOP_NODE (&A68_JOB)); +++ a68_scope_checker (TOP_NODE (&A68_JOB)); +++ } +++ +++ /* Serial dynamic stack allocation checker. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ a68_serial_dsa (TOP_NODE (&A68_JOB)); +++ } +++ +++ /* Finalise syntax tree. */ +++ if (ERROR_COUNT (&A68_JOB) == 0) +++ { +++ int num = 0; +++ renumber_nodes (TOP_NODE (&A68_JOB), &num); +++ NEST (TABLE (TOP_NODE (&A68_JOB))) = A68 (symbol_table_count) = 3; +++ a68_reset_symbol_table_nest_count (TOP_NODE (&A68_JOB)); +++ } +++} +++ +++/* New_node_info. */ +++ +++NODE_INFO_T * +++a68_new_node_info (void) +++{ +++ NODE_INFO_T *z = ggc_cleared_alloc (); +++ +++ A68 (new_node_infos)++; +++ PROCEDURE_LEVEL (z) = 0; +++ CHAR_IN_LINE (z) = NO_TEXT; +++ SYMBOL (z) = NO_TEXT; +++ PRAGMAT (z) = NO_TEXT; +++ PRAGMAT_TYPE (z) = 0; +++ PRAGMAT_LINE (z) = NO_LINE; +++ PRAGMAT_CHAR_IN_LINE (z) = NO_TEXT; +++ COMMENT (z) = NO_TEXT; +++ COMMENT_TYPE (z) = 0; +++ COMMENT_LINE (z) = NO_LINE; +++ COMMENT_CHAR_IN_LINE (z) = NO_TEXT; +++ LINE (z) = NO_LINE; +++ return z; +++} +++ +++/* New_genie_info. */ +++ +++GINFO_T * +++a68_new_genie_info (void) +++{ +++ GINFO_T *z = ggc_cleared_alloc (); +++ +++ A68 (new_genie_infos)++; +++ PARTIAL_PROC (z) = NO_MOID; +++ PARTIAL_LOCALE (z) = NO_MOID; +++ return z; +++} +++ +++/* Allocate and return a new parse tree node with proper defaults. */ +++ +++NODE_T * +++a68_new_node (void) +++{ +++ NODE_T *z = ggc_cleared_alloc (); +++ +++ A68 (new_nodes)++; +++ TABLE (z) = NO_TABLE; +++ INFO (z) = NO_NINFO; +++ GINFO (z) = NO_GINFO; +++ ATTRIBUTE (z) = STOP; +++ ANNOTATION (z) = STOP; +++ MOID (z) = NO_MOID; +++ NEXT (z) = NO_NODE; +++ PREVIOUS (z) = NO_NODE; +++ SUB (z) = NO_NODE; +++ NEST (z) = NO_NODE; +++ NON_LOCAL (z) = NO_TABLE; +++ TAX (z) = NO_TAG; +++ SEQUENCE (z) = NO_NODE; +++ PACK (z) = NO_PACK; +++ CDECL (z) = NULL_TREE; +++ DYNAMIC_STACK_ALLOCS (z) = false; +++ PUBLICIZED (z) = false; +++ return z; +++} +++ +++/* Some_node. */ +++ +++NODE_T * +++a68_some_node (const char *t) +++{ +++ NODE_T *z = a68_new_node (); +++ INFO (z) = a68_new_node_info (); +++ GINFO (z) = a68_new_genie_info (); +++ NSYMBOL (z) = t; +++ return z; +++} +++ +++/* New_symbol_table. */ +++ +++TABLE_T * +++a68_new_symbol_table (TABLE_T *p) +++{ +++ TABLE_T *z = ggc_cleared_alloc (); +++ +++ NUM (z) = A68 (symbol_table_count); +++ LEVEL (z) = A68 (symbol_table_count)++; +++ NEST (z) = A68 (symbol_table_count); +++ ATTRIBUTE (z) = 0; +++ INITIALISE_FRAME (z) = true; +++ PROC_OPS (z) = true; +++ INITIALISE_ANON (z) = true; +++ PREVIOUS (z) = p; +++ OUTER (z) = NO_TABLE; +++ IDENTIFIERS (z) = NO_TAG; +++ OPERATORS (z) = NO_TAG; +++ MODULES (z) = NO_TAG; +++ PRIO (z) = NO_TAG; +++ INDICANTS (z) = NO_TAG; +++ LABELS (z) = NO_TAG; +++ ANONYMOUS (z) = NO_TAG; +++ JUMP_TO (z) = NO_NODE; +++ SEQUENCE (z) = NO_NODE; +++ PUBLIC_RANGE (z) = false; +++ return z; +++} +++ +++/* New_moid. */ +++ +++MOID_T * +++a68_new_moid (void) +++{ +++ MOID_T *z = ggc_cleared_alloc (); +++ +++ A68 (new_modes)++; +++ ATTRIBUTE (z) = 0; +++ NUMBER (z) = 0; +++ DIM (z) = 0; +++ USE (z) = false; +++ HAS_ROWS (z) = false; +++ PORTABLE (z) = true; +++ DERIVATE (z) = false; +++ NODE (z) = NO_NODE; +++ PACK (z) = NO_PACK; +++ SUB (z) = NO_MOID; +++ EQUIVALENT_MODE (z) = NO_MOID; +++ SLICE (z) = NO_MOID; +++ TRIM (z) = NO_MOID; +++ DEFLEXED (z) = NO_MOID; +++ NAME (z) = NO_MOID; +++ MULTIPLE_MODE (z) = NO_MOID; +++ NEXT (z) = NO_MOID; +++ CTYPE (z) = NULL_TREE; +++ ASM_LABEL (z) = NULL; +++ return z; +++} +++ +++/* New_pack. */ +++ +++PACK_T * +++a68_new_pack (void) +++{ +++ PACK_T *z = ggc_cleared_alloc (); +++ +++ MOID (z) = NO_MOID; +++ TEXT (z) = NO_TEXT; +++ NODE (z) = NO_NODE; +++ NEXT (z) = NO_PACK; +++ PREVIOUS (z) = NO_PACK; +++ return z; +++} +++ +++/* New_tag. */ +++ +++TAG_T * +++a68_new_tag (void) +++{ +++ TAG_T *z = ggc_cleared_alloc (); +++ +++ STATUS (z) = NULL_MASK; +++ TAG_TABLE (z) = NO_TABLE; +++ MOID (z) = NO_MOID; +++ NODE (z) = NO_NODE; +++ UNIT (z) = NO_NODE; +++ VALUE (z) = NO_TEXT; +++ SCOPE (z) = PRIMAL_SCOPE; +++ SCOPE_ASSIGNED (z) = false; +++ PRIO (z) = 0; +++ USE (z) = false; +++ IN_PROC (z) = false; +++ HEAP (z) = false; +++ YOUNGEST_ENVIRON (z) = PRIMAL_SCOPE; +++ LOC_ASSIGNED (z) = false; +++ NEXT (z) = NO_TAG; +++ BODY (z) = NO_TAG; +++ PORTABLE (z) = true; +++ VARIABLE (z) = false; +++ IS_RECURSIVE (z) = false; +++ PUBLICIZED (z) = true; /* XXX */ +++ EXPORTED (z) = false; +++ ASCRIBED_ROUTINE_TEXT (z) = false; +++ LOWERER (z) = NO_LOWERER; +++ TAX_TREE_DECL (z) = NULL_TREE; +++ MOIF (z) = NO_MOIF; +++ EXTERN_SYMBOL (z) = NO_TEXT; +++ NUMBER (z) = ++A68_PARSER (tag_number); +++ return z; +++} +++ +++/* Make special, internal mode. */ +++ +++static void +++make_special_mode (MOID_T ** n, int m) +++{ +++ (*n) = a68_new_moid (); +++ ATTRIBUTE (*n) = 0; +++ NUMBER (*n) = m; +++ PACK (*n) = NO_PACK; +++ SUB (*n) = NO_MOID; +++ EQUIVALENT (*n) = NO_MOID; +++ DEFLEXED (*n) = NO_MOID; +++ NAME (*n) = NO_MOID; +++ SLICE (*n) = NO_MOID; +++ TRIM (*n) = NO_MOID; +++ ROWED (*n) = NO_MOID; +++} +++ +++/* Whether attributes match in subsequent nodes. */ +++ +++bool +++a68_whether (NODE_T * p, ...) +++{ +++ va_list vl; +++ va_start (vl, p); +++ int a; +++ while ((a = va_arg (vl, int)) != STOP) +++ { +++ if (p != NO_NODE && a == WILDCARD) +++ FORWARD (p); +++ else if (p != NO_NODE && (a == KEYWORD)) +++ { +++ if (a68_find_keyword_from_attribute (A68 (top_keyword), ATTRIBUTE (p)) != NO_KEYWORD) +++ FORWARD (p); +++ else +++ { +++ va_end (vl); +++ return false; +++ } +++ } +++ else if (p != NO_NODE && (a >= 0 ? a == ATTRIBUTE (p) : (-a) != ATTRIBUTE (p))) +++ FORWARD (p); +++ else +++ { +++ va_end (vl); +++ return false; +++ } +++ } +++ va_end (vl); +++ return true; +++} +++ +++/* Whether one of a series of attributes matches a node. */ +++ +++bool +++a68_is_one_of (NODE_T *p, ...) +++{ +++ if (p != NO_NODE) +++ { +++ bool match = false; +++ int a; +++ +++ va_list vl; +++ va_start (vl, p); +++ while ((a = va_arg (vl, int)) != STOP) +++ match = (match | IS (p, a)); +++ va_end (vl); +++ return match; +++ } +++ else +++ return false; +++} +++ +++ +++/* Isolate nodes p-q making p a branch to p-q +++ +++ From x - p - a - b - c - q - y +++ To x - t - y +++ | +++ p - a - b - c - q +++*/ +++ +++void +++a68_make_sub (NODE_T *p, NODE_T *q, enum a68_attribute t) +++{ +++ NODE_T *z = a68_new_node (); +++ +++ gcc_assert (p != NO_NODE && q != NO_NODE); +++ *z = *p; +++ +++ if (GINFO (p) != NO_GINFO) +++ GINFO (z) = a68_new_genie_info (); +++ +++ PREVIOUS (z) = NO_NODE; +++ +++ if (p == q) +++ NEXT (z) = NO_NODE; +++ else +++ { +++ if (NEXT (p) != NO_NODE) +++ PREVIOUS (NEXT (p)) = z; +++ NEXT (p) = NEXT (q); +++ if (NEXT (p) != NO_NODE) +++ PREVIOUS (NEXT (p)) = p; +++ NEXT (q) = NO_NODE; +++ } +++ +++ SUB (p) = z; +++ ATTRIBUTE (p) = t; +++} +++ +++/* Find symbol table at level I. */ +++ +++static TABLE_T * +++find_level (NODE_T *n, int i) +++{ +++ if (n == NO_NODE) +++ return NO_TABLE; +++ else +++ { +++ TABLE_T *s = TABLE (n); +++ +++ if (s != NO_TABLE && LEVEL (s) == i) +++ return s; +++ else if ((s = find_level (SUB (n), i)) != NO_TABLE) +++ return s; +++ else if ((s = find_level (NEXT (n), i)) != NO_TABLE) +++ return s; +++ else +++ return NO_TABLE; +++ } +++} +++ +++/* Whether P is top of lexical level. */ +++ +++bool +++a68_is_new_lexical_level (NODE_T *p) +++{ +++ switch (ATTRIBUTE (p)) +++ { +++ case ALT_DO_PART: +++ case BRIEF_ELIF_PART: +++ case BRIEF_OUSE_PART: +++ case BRIEF_CONFORMITY_OUSE_PART: +++ case CHOICE: +++ case CLOSED_CLAUSE: +++ case CONDITIONAL_CLAUSE: +++ case DO_PART: +++ case ELIF_PART: +++ case ELSE_PART: +++ case CASE_CLAUSE: +++ case CASE_CHOICE_CLAUSE: +++ case CASE_IN_PART: +++ case CASE_OUSE_PART: +++ case OUT_PART: +++ case ROUTINE_TEXT: +++ case SPECIFIED_UNIT: +++ case THEN_PART: +++ case CONFORMITY_CLAUSE: +++ case CONFORMITY_CHOICE: +++ case CONFORMITY_IN_PART: +++ case CONFORMITY_OUSE_PART: +++ case WHILE_PART: +++ case DEF_PART: +++ case POSTLUDE_PART: +++ case ACCESS_CLAUSE: +++ return true; +++ case MODULE_TEXT: +++ /* Module texts introduce an additional lexical level encompassing all +++ its parts only if it is endowed with revelations. */ +++ if (SUB (p) != NO_NODE && IS (SUB (p), REVELATION_PART)) +++ return true; +++ else +++ return false; +++ break; +++ default: +++ return false; +++ } +++} +++ +++/* +++ * Couple of utility functions. +++ */ +++ +++/* Safely append to buffer. */ +++ +++void +++a68_bufcat (char *dst, const char *src, int len) +++{ +++ if (src != NO_TEXT) { +++ char *d = dst; +++ const char *s = src; +++ int n = len; +++// Find end of dst and left-adjust; do not go past end +++ for (; n-- != 0 && d[0] != '\0'; d++) { +++ ; +++ } +++ int dlen = (int) (d - dst); +++ n = len - dlen; +++ if (n > 0) { +++ while (s[0] != '\0') { +++ if (n != 1) { +++ (d++)[0] = s[0]; +++ n--; +++ } +++ s++; +++ } +++ d[0] = '\0'; +++ } +++// Better sure than sorry +++ dst[len - 1] = '\0'; +++ } +++} +++ +++/* Safely copy to buffer. */ +++ +++void +++a68_bufcpy (char *dst, const char *src, int len) +++{ +++ if (src != NO_TEXT) { +++ char *d = dst; +++ const char *s = src; +++ int n = len; +++// Copy as many as fit +++ if (n > 0 && --n > 0) { +++ do { +++ if (((d++)[0] = (s++)[0]) == '\0') { +++ break; +++ } +++ } while (--n > 0); +++ } +++ if (n == 0 && len > 0) { +++// Not enough room in dst, so terminate +++ d[0] = '\0'; +++ } +++// Better sure than sorry +++ dst[len - 1] = '\0'; +++ } +++} +++ +++/* Make a new copy of concatenated strings. */ +++ +++char * +++a68_new_string (const char *t, ...) +++{ +++ va_list vl; +++ va_start (vl, t); +++ const char *q = t; +++ if (q == NO_TEXT) { +++ va_end (vl); +++ return NO_TEXT; +++ } +++ int len = 0; +++ while (q != NO_TEXT) { +++ len += (int) strlen (q); +++ q = va_arg (vl, char *); +++ } +++ va_end (vl); +++ len++; +++ char *z = (char *) xmalloc ((size_t) len); +++ z[0] = '\0'; +++ q = t; +++ va_start (vl, t); +++ while (q != NO_TEXT) { +++ a68_bufcat (z, q, len); +++ q = va_arg (vl, char *); +++ } +++ va_end (vl); +++ return z; +++} +++ +++/* Tie label to the clause it is defined in. */ +++ +++static void +++tie_label_to_serial (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, SERIAL_CLAUSE)) +++ { +++ bool valid_follow; +++ +++ if (NEXT (p) == NO_NODE) +++ valid_follow = true; +++ else if (IS (NEXT (p), CLOSE_SYMBOL)) +++ valid_follow = true; +++ else if (IS (NEXT (p), END_SYMBOL)) +++ valid_follow = true; +++ else if (IS (NEXT (p), OD_SYMBOL)) +++ valid_follow = true; +++ else +++ valid_follow = false; +++ +++ if (valid_follow) +++ JUMP_TO (TABLE (SUB (p))) = NO_NODE; +++ } +++ +++ tie_label_to_serial (SUB (p)); +++ } +++} +++ +++/* Tie label to the clause it is defined in. */ +++ +++static void +++tie_label (NODE_T *p, NODE_T *unit) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, DEFINING_IDENTIFIER)) +++ UNIT (TAX (p)) = unit; +++ tie_label (SUB (p), unit); +++ } +++} +++ +++/* Tie label to the clause it is defined in. */ +++ +++static void +++tie_label_to_unit (NODE_T *p) +++{ +++ for (; p != NO_NODE; FORWARD (p)) +++ { +++ if (IS (p, LABELED_UNIT)) +++ tie_label (SUB_SUB (p), NEXT_SUB (p)); +++ tie_label_to_unit (SUB (p)); +++ } +++} +++ +++/* Table with attribute names. */ +++ +++static const char *attribute_names[] = +++{ +++ "STOP", +++#define A68_ATTR(ATTR,DESCR) DESCR, +++#include "a68-parser-attrs.def" +++#undef A68_ATTR +++}; +++ +++/* Get the name of an attribute. */ +++ +++const char * +++a68_attribute_name (enum a68_attribute attr) +++{ +++ return attribute_names[attr]; +++} +++ +++/* Get the location of node P as a GCC location. */ +++ +++location_t +++a68_get_node_location (NODE_T *p) +++{ +++ LINE_T *line = LINE (INFO (p)); +++ +++ if (line == NO_LINE) +++ return UNKNOWN_LOCATION; +++ +++ unsigned line_number = NUMBER (line); +++ unsigned column_number = CHAR_IN_LINE (INFO (p)) - STRING (line) + 1; +++ const char *filename = FILENAME (line); +++ +++ location_t gcc_location; +++ +++ linemap_add (line_table, LC_ENTER, 0, filename, line_number); +++ linemap_line_start (line_table, line_number, 0); +++ gcc_location = linemap_position_for_column (line_table, column_number); +++ linemap_add (line_table, LC_LEAVE, 0, NULL, 0); +++ +++ return gcc_location; +++} +++ +++/* Get the location of POS inside LINE as a GCC location. */ +++ +++location_t +++a68_get_line_location (LINE_T *line, const char *pos) +++{ +++ location_t loc; +++ +++ linemap_add (line_table, LC_ENTER, 0, FILENAME (line), NUMBER (line)); +++ linemap_line_start (line_table, NUMBER (line), 0); +++ loc = linemap_position_for_column (line_table, pos - STRING (line) + 1); +++ linemap_add (line_table, LC_LEAVE, 0, NULL, 0); +++ return loc; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-postulates.cc ++@@ -0,0 +1,103 @@ +++/* Postulates needed for improving equivalence of modes. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++/* Initialise use of postulate-lists. */ +++ +++void +++a68_init_postulates (void) +++{ +++ A68 (top_postulate) = NO_POSTULATE; +++ A68 (top_postulate_list) = NO_POSTULATE; +++} +++ +++/* Make old postulates available for new use. */ +++ +++void +++a68_free_postulate_list (POSTULATE_T *start, POSTULATE_T *stop) +++{ +++ if (start == stop) +++ return; +++ +++ POSTULATE_T *last = start; +++ for (; NEXT (last) != stop; FORWARD (last)) +++ ; +++ +++ NEXT (last) = A68 (top_postulate_list); +++ A68 (top_postulate_list) = start; +++} +++ +++/* Add postulates to postulate-list. */ +++ +++void +++a68_make_postulate (POSTULATE_T **p, MOID_T *a, MOID_T *b) +++{ +++ POSTULATE_T *new_one; +++ +++ if (A68 (top_postulate_list) != NO_POSTULATE) +++ { +++ new_one = A68 (top_postulate_list); +++ A68 (top_postulate_list) = A68 (top_postulate_list)->next; +++ } +++ else +++ { +++ new_one = (POSTULATE_T *) ggc_cleared_alloc (); +++ A68 (new_postulates)++; +++ } +++ +++ new_one->a = a; +++ new_one->b = b; +++ new_one->next = *p; +++ *p = new_one; +++} +++ +++/* Where postulates are in the list. */ +++ +++POSTULATE_T +++*a68_is_postulated_pair (POSTULATE_T *p, MOID_T *a, MOID_T *b) +++{ +++ for (; p != NO_POSTULATE; p = p->next) +++ { +++ if (p->a == a && p->b == b) +++ return p; +++ } +++ +++ return NO_POSTULATE; +++} +++ +++/* Where postulate is in the list. */ +++ +++POSTULATE_T +++*a68_is_postulated (POSTULATE_T *p, MOID_T *a) +++{ +++ for (; p != NO_POSTULATE; p = p->next) +++ { +++ if (p->a == a) +++ return p; +++ } +++ +++ return NO_POSTULATE; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68-tree.def ++@@ -0,0 +1,24 @@ +++/* This file contains the definitions and documentation for the +++ additional tree codes used in the GNU Algol 68 compiler (see +++ tree.def for the standard codes). +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ You should have received a copy of the GNU General Public License along with +++ GCC; see the file COPYING3. If not see . */ +++ +++/* Tree nodes used in the Algol68 frontend only. */ +++ +++/* +++Local variables: +++mode:c +++End: +++*/ ++--- /dev/null +++++ b/src/gcc/algol68/a68-types.h ++@@ -0,0 +1,1166 @@ +++/* Type definitions for the ALGOL 68 parser. +++ Copyright (C) 2001-2023 J. Marcel van der Veer. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ Original implementation by J. Marcel van der Veer. +++ Adapted for GCC by Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#ifndef __A68_TYPES_H__ +++#define __A68_TYPES_H__ +++ +++#include "config.h" +++#include "system.h" +++ +++#include +++#include "vec.h" +++ +++/* Enumerations. */ +++ +++enum a68_stropping +++{ +++ UPPER_STROPPING, +++ SUPPER_STROPPING +++}; +++ +++enum a68_attribute +++{ +++ STOP = 0, +++#define A68_ATTR(ATTR,DESCR) ATTR, +++#include "a68-parser-attrs.def" +++#undef A68_ATTR +++}; +++ +++enum a68_tree_index +++{ +++ /* Type trees. */ +++ ATI_VOID_TYPE, +++ ATI_BOOL_TYPE, +++ ATI_CHAR_TYPE, +++ ATI_SHORT_SHORT_BITS_TYPE, +++ ATI_SHORT_BITS_TYPE, +++ ATI_BITS_TYPE, +++ ATI_LONG_BITS_TYPE, +++ ATI_LONG_LONG_BITS_TYPE, +++ ATI_BYTES_TYPE, +++ ATI_LONG_BYTES_TYPE, +++ ATI_SHORT_SHORT_INT_TYPE, +++ ATI_SHORT_INT_TYPE, +++ ATI_INT_TYPE, +++ ATI_LONG_INT_TYPE, +++ ATI_LONG_LONG_INT_TYPE, +++ ATI_REAL_TYPE, +++ ATI_LONG_REAL_TYPE, +++ ATI_LONG_LONG_REAL_TYPE, +++ /* Sentinel. */ +++ ATI_MAX +++}; +++ +++/* +++ * Type definitions. +++ */ +++ +++typedef char BUFFER[BUFFER_SIZE + 1]; +++ +++typedef struct MODES_T MODES_T; +++typedef struct NODE_T NODE_T; +++typedef struct MODE_CACHE_T MODE_CACHE_T; +++typedef struct MOID_T MOID_T; +++typedef struct GINFO_T GINFO_T; +++typedef struct KEYWORD_T KEYWORD_T; +++typedef struct LINE_T LINE_T; +++typedef struct NODE_INFO_T NODE_INFO_T; +++typedef struct PACK_T PACK_T; +++typedef struct SOID_T SOID_T; +++typedef struct TABLE_T TABLE_T; +++typedef struct TAG_T TAG_T; +++typedef struct TOKEN_T TOKEN_T; +++typedef struct ORIGIN_T ORIGIN_T; +++typedef struct POSTULATE_T POSTULATE_T; +++typedef struct OPTIONS_T OPTIONS_T; +++typedef struct PARSER_T PARSER_T; +++typedef struct MODULE_T MODULE_T; +++typedef struct EXTRACT_T EXTRACT_T; +++typedef struct MOIF_T MOIF_T; +++typedef struct A68_T A68_T; +++ +++#define NO_A68_REF ((A68_REF *) 0) +++#define NO_ARRAY ((A68_ARRAY *) 0) +++#define NO_BOOK ((BOOK_T *) 0) +++#define NO_BOOL ((bool *) 0) +++#define NO_BYTE ((BYTE_T *) 0) +++#define NO_CONSTANT ((void *) 0) +++#define NO_DEC ((DEC_T *) 0) +++#define NO_EDLIN ((EDLIN_T *) 0) +++#define NO_FILE ((FILE *) 0) +++#define NO_FORMAT ((A68_FORMAT *) 0) +++#define NO_GINFO ((GINFO_T *) 0) +++#define NO_GPROC ((void (*) (NODE_T *)) 0) +++#define NO_HANDLE ((A68_HANDLE *) 0) +++#define NO_INT ((int *) 0) +++#define NO_JMP_BUF ((jmp_buf *) 0) +++#define NO_KEYWORD ((KEYWORD_T *) 0) +++#define NO_NINFO ((NODE_INFO_T *) 0) +++#define NO_NOTE ((void (*) (NODE_T *)) 0) +++#define NO_OPTION_LIST ((OPTION_LIST_T *) 0) +++#define NO_PACK ((PACK_T *) 0) +++#define NO_PPROC ((PROP_T (*) (NODE_T *)) 0) +++#define NO_PROCEDURE ((A68_PROCEDURE *) 0) +++#define NO_REAL ((REAL_T *) 0) +++#define NO_REFINEMENT ((REFINEMENT_T *) 0) +++#define NO_REGMATCH ((regmatch_t *) 0) +++#define NO_SCOPE ((SCOPE_T *) 0) +++#define NO_SOID ((SOID_T *) 0) +++#define NO_STREAM NO_FILE +++#define NO_TEXT ((char *) 0) +++#define NO_TICK ((bool *) 0) +++#define NO_TOKEN ((TOKEN_T *) 0) +++#define NO_TUPLE ((A68_TUPLE *) 0) +++#define NO_VAR (0) +++ +++/* A STATUS_MASK_T is a word of flags denoting states. +++ +++ Status masks are used in parse tree nodes (NODE_T) and in entries in the +++ symbol table (TAG_T). +++ +++ +++ SCOPE_ERROR_MASK is used by the static scope checker in order to avoid +++ emitting duplicated scope warnings. */ +++ +++typedef uint32_t STATUS_MASK_T; +++ +++#define STATUS_CLEAR(p, q) {STATUS (p) &= (~(q));} +++#define STATUS_SET(p, q) {STATUS (p) |= (q);} +++#define STATUS_TEST(p, q) ((STATUS (p) & (q)) != (uint32_t) 0) +++ +++#define NULL_MASK ((STATUS_MASK_T) 0x00000000) +++#define SCOPE_ERROR_MASK ((STATUS_MASK_T) 0x00000200) +++ +++/* Structure containing the lowering context which is propagated while calling +++ the lowering handlers. */ +++ +++struct LOW_CTX_T +++{ +++ /* The common declarer in a declaration list. */ +++ NODE_T **declarer; +++ /* The defining identifier of the procedure declaration being processed, or +++ NO_NODE. This is set by a68_lower_procedure_declaration and used by +++ a68_lower_routine_text. */ +++ NODE_T *proc_decl_identifier; +++ /* If proc_decl_identifier is no NO_NODE, this denotes whether the +++ declaration being processed is of an operator. */ +++ bool proc_decl_operator; +++ /* Name of current module definition, or NULL. */ +++ const char *module_definition_name; +++ /* For debugging purposes. */ +++ int level; +++}; +++ +++typedef struct LOW_CTX_T LOW_CTX_T; +++ +++/* Type of the lowerer routines defined in a68-low-prelude.cc. */ +++typedef tree (*LOWERER_T) (struct NODE_T *, struct LOW_CTX_T); +++ +++#define NO_LOWERER a68_lower_unimplemented +++ +++struct GTY((chain_next ("%h.more"), chain_prev ("%h.less"))) KEYWORD_T +++{ +++ enum a68_attribute attribute; +++ const char *text; +++ KEYWORD_T *less, *more; +++}; +++ +++/* A MOID_T represents a mode indicator. +++ +++ NUMBER is an unique number assigned to the moid when it gets created. A +++ renumber_moids function exists in a68-parser-modes.cc but it dosn't seem to +++ be used at all. +++ +++ ATTRIBUTE characterizes the kind of mode and is one of the values defined in +++ a68-parser-attrs.def. Valid values are: +++ +++ PROC_SYMBOL for procecure modes. +++ ROWS_SYMBOL for row modes. +++ REF_SYMBOL for reference modes. +++ FLEX_SYMBOL for flexible reference modes. +++ STRUCT_SYMBOL for struct modes. +++ UNION_SYMBOL for union modes. +++ IN_TYPE_MODE for XXX modes. +++ OUT_TYPE_MODE for XXX modes. +++ SERIES_MODE for XXX modes. +++ INDICANT for XXX modes. +++ MODULE_INDICANT for XXX modules. +++ STANDARD for standard modes. +++ +++ NODE is a parse tree node XXX. +++ +++ HAS_ROWS is true if the mode contains rows somewhere in its internal +++ structure. +++ +++ The interpretation of SUB depends on the kind of mode: +++ - For REF modes it is the referred mode. +++ - For FLEX modes it is the referred mode. +++ - For ROW modes it is the mode of the elements. +++ - For PROC modes it is the mode of the value yielded by the procedure. +++ +++ The interpretation of DIM depends on the kind of mode: +++ - In VOID_SYMBOL, STANDARD or INDICANT mode, if DIM is positive it +++ specifies the size of the longsety of the mode. If DIM is negative then +++ abs (DIM) is the size of hte shortsety of the mode. +++ - In ROW modes, DIM is the number of dimensions. +++ - In STRUCT modes, DIM is the number of fields. +++ - In UNION modes, DIM is the number of united modes. +++ - In PROC_SYMBOL modes, DIM is the number of arguments. +++ - In SERIES_MODE and STOWED_MODE modes, DIM is the number modes. +++ +++ SLICE is the mode resulting from slicing a value of this mode. For example, +++ slicing a M_ROW_INT yields a M_INT. +++ +++ EQUIVALENT_MODE (referred as EQUIVALENT), for INDICANTs it is its declarer +++ mode (in MODE FOO = BAR FOO is the indicant and BAR is its declarer) and for +++ STANDARD modes it may be a mode that reflects its structure. +++ +++ USE is used by the is_well_formed function, which detects whether a mode is +++ well formed, i.e. that the mode doesn't refer to itself nor it relates to +++ void. +++ +++ DEFLEXED_MODE is like the current mode, but without FLEX. Only defined for +++ modes that have a SUB, i.e. REF, FLEX, ROW and PROC. In other modes this is +++ NO_MODE. +++ +++ For refs to structs, rows or flex, NAME points to the corresponding name +++ mode. For example, for a mode REF STRUCT (INT i, REAL x), NAME points to a +++ mode STRUCT (REF INT i, REF REAL x). This is used for selections. +++ +++ For rows of structs, rows or flex, MULTIPLE points to the corresponding row +++ mode. For example, for a mode [] STRUCT (INT i, REAL x), MULTIPLE points to +++ a mode STRUCT ([]INT i, []REAL x). This is used for selections. +++ +++ PACK is a pack of moids. For a STOWED_MODE, it contains the modes of the +++ arguments of a procedure, or the modes of the units in a collateral clause. +++ For a SERIES_MODE, it contains the modes of the completing units in a serial +++ clause, the alternatives in a conformity clause, the alternatives in a +++ CONDITIONAL_CLAUSE, the alternatives in a CASE_CLAUSE, +++ +++ CTYPE is a GCC GENERIC tree corresponding to this mode. It is computed and +++ installed by a68_lower_moid. +++ +++ ASM_LABEL is an assembly label used by a68_asm_output_mode. */ +++ +++#define NO_MOID ((MOID_T *) 0) +++ +++struct GTY((chain_next ("%h.next"))) MOID_T +++{ +++ int number; +++ int attribute; +++ int dim; +++ bool has_rows, use, portable, derivate; +++ NODE_T *node; +++ PACK_T *pack; +++ MOID_T *sub, *equivalent_mode, *slice, *deflexed_mode, *name, *multiple_mode, *next, *rowed, *trim; +++ tree ctype; +++ const char *asm_label; +++}; +++ +++/* A MODES_T struct contains a collection of particular pre-defined modes. +++ +++ These modes are initialized by either stand_moids or make_special_mode. +++ They are commonly referred using the corresponding M_* macros. +++ +++ ROWS is a mode to which any ROW mode can be strongly coerced. It is used as +++ the mode of the second operand of the ELEMS, LWB and UPB operators. +++ +++ HIP is the mode of NIL. */ +++ +++struct MODES_T +++{ +++ MOID_T *BITS, *BOOL, *BYTES, *CHANNEL, *CHAR, *COLLITEM, *COMPL, *COMPLEX, +++ *C_STRING, *ERROR, *FILE, *FORMAT, *HEX_NUMBER, *HIP, *INT, *LONG_BITS, *LONG_BYTES, +++ *LONG_COMPL, *LONG_COMPLEX, *LONG_INT, *LONG_LONG_BITS, *LONG_LONG_COMPL, +++ *LONG_LONG_COMPLEX, *LONG_LONG_INT, *LONG_LONG_REAL, *LONG_REAL, *NUMBER, +++ *PROC_REAL_REAL, *PROC_LONG_REAL_LONG_REAL, *PROC_REF_FILE_BOOL, *PROC_REF_FILE_VOID, *PROC_ROW_CHAR, +++ *PROC_STRING, *PROC_VOID, *REAL, *REF_BITS, *REF_BOOL, *REF_BYTES, +++ *REF_CHAR, *REF_COMPL, *REF_COMPLEX, *REF_FILE, *REF_INT, +++ *REF_LONG_BITS, *REF_LONG_BYTES, *REF_LONG_COMPL, *REF_LONG_COMPLEX, +++ *REF_LONG_INT, *REF_LONG_LONG_BITS, *REF_LONG_LONG_COMPL, +++ *REF_LONG_LONG_COMPLEX, *REF_LONG_LONG_INT, *REF_LONG_LONG_REAL, *REF_LONG_REAL, +++ *REF_REAL, *REF_REF_FILE, *REF_ROW_CHAR, *REF_ROW_COMPLEX, *REF_ROW_INT, +++ *REF_ROW_REAL, *REF_ROW_ROW_COMPLEX, *REF_ROW_ROW_REAL, +++ *REF_SHORT_BITS, *REF_SHORT_SHORT_BITS, *REF_SHORT_INT, +++ *REF_SHORT_SHORT_INT, *REF_STRING, +++ *ROW_BITS, *ROW_BOOL, *ROW_CHAR, *ROW_COMPLEX, *ROW_INT, *ROW_LONG_BITS, *ROW_LONG_LONG_BITS, +++ *ROW_REAL, *ROW_ROW_CHAR, *ROW_ROW_COMPLEX, *ROW_ROW_REAL, *ROWS, *ROW_SIMPLIN, *ROW_SIMPLOUT, +++ *ROW_STRING, *SEMA, *SHORT_BITS, *SHORT_SHORT_BITS, *SHORT_INT, *SHORT_SHORT_INT, +++ *SIMPLIN, *SIMPLOUT, *STRING, *FLEX_ROW_CHAR, +++ *FLEX_ROW_BOOL, *UNDEFINED, *VACUUM, *VOID; +++}; +++ +++/* The OPTIONS_T structure record which front-end options have been activated. +++ Each option OPTION has a corresponding GCC -f[no-]a68-OPTION command-line +++ switch that can be used to activate or deactivate it. +++ +++ STROPPING indicates the stropping regime in use. It can be UPPER_STROPPING +++ or SUPPER_STROPPING. +++ +++ BRACKETS indicates whether [ .. ] and { .. } are equivalent to ( .. ). +++ +++ STRICT indicates that no ALGOL 68 extension is allowed. +++ +++ ASSERT indicates whether to generate code for assertions. +++ +++ BOUNDS_CHECKING indicates whether to perform array bound checking at +++ run-time. +++ +++ NIL_CHECKING indicates whether to check for NIL when dereferencing at +++ run-time. */ +++ +++struct GTY(()) OPTIONS_T +++{ +++ enum a68_stropping stropping; +++ bool brackets; +++ bool strict; +++ bool assert; +++ bool bounds_checking; +++ bool nil_checking; +++}; +++ +++/* The access class static property of a stored value determines how the value +++ can be reached at run-time. It is used by the lowering pass in order to +++ minimize copies at run-time. +++ +++ CONSTANT is for constant literals. At run-time these literals will either +++ reside in operand instructions or in space allocated in CONSTAB%. +++ +++ DIRIDEN (direct identifier) means that the value is stored on IDST% at some +++ static address. This is the access class used for values ascribed to +++ identifiers as long as the block in hich they are declared has not been +++ left. It is also used for values resulting from actions such as the +++ selection from a value possessed by an identifier or the dereferencing fo a +++ name corespodning to a variable. +++ +++ VARIDEN (variable identifier) is used for values which are names/variables. +++ The name is stored on IDST%. The static elaboration of the dereferencing of +++ a variable with access VARIDEN results in a value with access DIRIDEN, not +++ requiring any run-time action. Same happens with selections of variables of +++ access VARIDEN. +++ +++ INDIDEN (indirect identifier) is used for values that are stored in a memory +++ location in IDST%. The static elaboration of a dereferencing applied to a +++ value of access DIRIDEN. +++ +++ DIRWOST (direct working stack) is very much like DIRIDEN, except that the +++ value is stored in WOST% rathern than in IDST%. This access is used for the +++ result of an action when this result does not preexist in memory and hence +++ has to be constructed in WOST%. +++ +++ INDWOST (indirect working stack) is very similar to INDIDEN. Such an access +++ can be obtained for example through the static elaboration of the +++ dereferencing of a name the access of which is DIRWOST. +++ +++ NIHIL is used to characterize the absence of value. This is used in the +++ static elaboration of a jump, a voiding and a call ith a void result. +++ +++ Note that in all these classes we assume as run-time the intermediate +++ language level we are lowering to, i.e. GENERIC. A DIRIDEN value, for +++ example, can very well stored in a register depending on further compiler +++ optimizations. */ +++ +++#define ACCESS_NIHIL 0 +++#define ACCESS_CONSTANT 1 +++#define ACCESS_DIRIDEN 2 +++#define ACCESS_INDIDEN 3 +++#define ACCESS_DIRWOST 4 +++ +++/* A NODE_T is a node in the A68 Syntax tree produced by the lexer-scanner and +++ later expanded by the Mailloux parser. +++ +++ NUMBER identifies the node uniquely in the syntax tree. +++ +++ ATTRIBUTE is a code that specifies the kind of entity denoted by the node. +++ Valid attributes are defined in the enumeration a68_attribute above in +++ this file. Examples of attributes are ELIF_PART, GOTO_SYMBOL or BOLD_TAG. +++ +++ ANNOTATION provides a way to annotate a node with a reference to another +++ node attribute. This is currently used by the mode checker to annotate +++ indexer nodes as slicer or as trimmers. +++ +++ TYPE (accessed as MOID) is either NO_MOID if the entity denoted by the node +++ doesn't have a mode, or a suitable MOID_T reflecting the mode of the entity. +++ This attribute is calculated and set in all the nodes of the tree by the +++ mode collection and checker pass implemented by make_moid_list. +++ +++ INFO contains additional attributes of the node. See NODE_INFO_T below. +++ +++ NEXT, PREVIOUS and SUB are links to other tree nodes. They are used to link +++ the syntax tree structure from the top: +++ +++ TOP <-> N <-> N <-> ... +++ | < is PREVIOUS +++ N <-> N <-> ... > is NEXT +++ | | is SUB +++ N <-> ... +++ +++ SEQUENCE is a link to another tree node. It is used by the tax collector +++ (symbol table builder) in order to handle DO .. OD ranges. +++ +++ NEST is a link to another tree node, which is the NEST for the current node. +++ It is set by the tax collector (symbol table builder) and it is used for +++ diagnostics. +++ +++ PACK (accessed as NODE_PACK) is either NO_PACK or an instance of the PACK_T +++ structure defined below. It is used by the modes checker. +++ +++ STATUS is a mask of flags, used by several passes that handle nodes. Valid status flags are: +++ +++ SYMBOL_TABLE (accessed as TABLE) is either NO_TABLE or a TABLE_T containing +++ a symbol table introduced by the entity denoted by the tree node. These +++ nodes are the ones introducing ranges: BEGIN, DO, etc. +++ +++ NON_LOCAL is either NO_TABLE, if the environ established by the node is +++ local, or a pointer to a TABLE_T identifying the non-local environment +++ associated with the tree node. It is set by the static scope checker. See +++ 3.2.2 and 5.2.3.2.b in the report for its application in the handling of +++ local generators in serial clauses. +++ +++ TAG (accessed as TAX) is either NO_TAG or a TAG_T used to bind identifier +++ nodes, routine texts and other indicants to their corresponding entry in a +++ symbol table. This is set by the taxes collector. +++ +++ The following fields are static properties managed an used in the lowering +++ pass. +++ +++ ORIGIN is a static property that describes the history of the entity denoted +++ by the node. This is only used in nodes denoting values. +++ +++ DYNAMIC_STACK_ALLOCS is a flag used in serial clause nodes. It determines +++ whether the elaboration of the phrases in the serial clause may involve +++ dynamic stack allocation. This is used by the lower pass, along with +++ NON_LOCAL above, in order to properly manage the stack pointer while +++ lowering these clauses. +++ +++ PUBLICIZED is true for DEFINING_OPERATOR, DEFINING_IDENTIFIER and +++ DEFINING_INDICANT nodes that appear in declarations marked with PUB. +++ +++ CDECL is a GCC GENERIC tree corresponding to a DECL_FIELD for FIELD +++ nodes. */ +++ +++struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) NODE_T +++{ +++ GINFO_T *genie; +++ int number; +++ enum a68_attribute attribute; +++ enum a68_attribute annotation; +++ MOID_T *type; +++ NODE_INFO_T *info; +++ NODE_T *next, *previous, *sub; +++ NODE_T *sequence, *nest; +++ PACK_T *pack; +++ STATUS_MASK_T status; +++ TABLE_T *symbol_table; +++ TABLE_T *non_local; +++ TAG_T *tag; +++ tree cdecl; +++ bool dynamic_stack_allocs; +++ bool publicized; +++}; +++ +++#define NO_NODE ((NODE_T *) 0) +++ +++/* A NODE_INFO_T struct contains additional attributes of a NODE_T parse tree +++ node. +++ +++ PROCEDURE_LEVEL indicates how lexically deep the tree node is in terms of +++ routine texts. This attribute is set for all the nodes in the syntax tree +++ by the taxes collector and originally used by ALGOL 68 Genie's monitor. +++ Even if at the moment this is not used by GCC, this field and the +++ correponding machinery is still here in case it is useful in the future. +++ +++ PRIORITY (accessed as PRIO) is used by operator tree nodes and specifies the +++ priority of the operator denoted by the node. This is set tree wide by the +++ bottom-up parser. +++ +++ SYMBOL (accessed indirectly as NSYMBOL) contains the symbol value, a string, +++ corresponding to the tree node. This is used by tree nodes representing +++ tokens such as bold tags, keywords and identifiers. The symbols are set by +++ the parser-scanner. +++ +++ LINE is a pointer to the source line from which the tree node originates. +++ This is set for tree nodes representing tokens and is set by the +++ parser-scanner. */ +++ +++struct GTY(()) NODE_INFO_T +++{ +++ int procedure_level; +++ int priority; +++ char * GTY((skip)) char_in_line; +++ int comment_type; +++ char * GTY((skip)) comment; +++ LINE_T *comment_line; +++ char * GTY((skip)) comment_char_in_line; +++ int pragmat_type; +++ char * GTY((skip)) pragmat; +++ LINE_T *pragmat_line; +++ char * GTY((skip)) pragmat_char_in_line; +++ const char *symbol; +++ LINE_T *line; +++}; +++ +++struct GTY(()) GINFO_T +++{ +++ MOID_T *partial_proc, *partial_locale; +++}; +++ +++struct GTY((chain_next ("%h.next"), chain_prev ("%h.previous"))) PACK_T +++{ +++ MOID_T *type; +++ const char *text; +++ NODE_T *node; +++ PACK_T *next, *previous; +++}; +++ +++/* Postulates. */ +++ +++struct GTY((chain_next ("%h.next"))) POSTULATE_T +++{ +++ MOID_T *a, *b; +++ POSTULATE_T *next; +++}; +++ +++#define NO_POSTULATE ((POSTULATE_T *) 0) +++ +++struct GTY((chain_next ("%h.next"))) SOID_T +++{ +++ int attribute, sort, cast; +++ MOID_T *type; +++ NODE_T *node; +++ SOID_T *next; +++}; +++ +++struct GTY((chain_next ("%h.next"))) LINE_T +++{ +++ char marker[6]; +++ char * GTY((skip)) string; +++ const char *filename; +++ int number; +++ LINE_T *next, *previous; +++}; +++#define NO_LINE ((LINE_T *) 0) +++ +++/* Symbol table. +++ +++ PUBLIC_RANGE is true in ranges whose declarations may be made accessible to +++ other compilation units. decl trees lowered for declarations in public +++ ranges will be put in the top-level block. This is used for top-level +++ module declarations. */ +++ +++struct GTY(()) TABLE_T +++{ +++ int num, level, nest, attribute; +++ bool initialise_frame, initialise_anon, proc_ops, public_range; +++ TABLE_T *previous, *outer; +++ TAG_T *identifiers, *operators, *modules, *priority, *indicants, *labels, *anonymous; +++ NODE_T *jump_to, *sequence; +++}; +++#define NO_TABLE ((TABLE_T *) 0) +++ +++/* A TAG_T structure denotes an entry in the symbol table. Each entry +++ corresponds to an identity. +++ +++ TAX: TAG; TAB; TAD; TAM; +++ +++ TYPE is the mode of the entry. +++ +++ NODE is the defining identifier associated to the declaration. +++ +++ SCOPE is the lexical depth of the tag. Zero corresponds to the primal +++ scope. It is set by the static scope checker. +++ +++ SCOPE_ASSIGNED determines whether a SCOPE has been actually assigned to the +++ tag. It is set by the static scope checker. The entities which get +++ assigned scopes are identities of format texts and routine texts. +++ +++ PORTABLE determines whether the construction associated with the tag is +++ Algol 68 or some extension. +++ +++ VARIABLE is set when the defining identifier in NODE is defined in a +++ variable declaration, as opposed to an identity declaration. This is set by +++ extract_variables and is used by the lowering pass. +++ +++ HEAP is used for defining identifier in NODE is defined in a variable +++ declaration. It is HEAP_SYMBOL or LOC_SYMBOL. +++ +++ IS_RECURSIVE is set for mode indicants whose definition is recursive, +++ i.e. they appear in actual declarers within its own definition. +++ +++ PUBLICIZED is set for tags that are marked as public and therefore shall be +++ exported as part of a module interface. +++ +++ EXPORTED is set for DEFINING_MODULEs whose module interface is to be +++ exported. +++ +++ ASCRIBED_ROUTINE_TEXT is set when the defining identifier is ascribed a +++ routine-text in an identity declaration. +++ +++ IN_PROC is set when the defining identifier has been set in a +++ proc-identity-declaration or in a brief-op-declaration. These declarations +++ are optimized in a similar way than variable declarations in order to avoid +++ indirect addressing. +++ +++ YOUNGEST_ENVIRON is used when NODE is either a ROUTINE_TEXT or a +++ FORMAT_TEXT, and contains the youngest (higher) lexical level of any object +++ directly declared in the routine or format body. This is filled in and used +++ by the scope checker. +++ +++ TREE_DECL is the GENERIC declaration for the definition of this symbol. +++ This is set and used by the lower pass. For mode indicants, it contains a +++ function that generates a pointer to the given mode, and is used by +++ a68_low_generator to handle recursive modes. +++ +++ MOIF is a list of module interfaces. This is used in ACCESS_CLAUSE nodes. +++ +++ EXTERN_SYMBOL is a string with the symbol that was obtained from an imported +++ module declaration. This is only used in entries where MOIF is not NO_MOIF. +++ +++ LOWERER is a lowering routine defined in a68-low-prelude.cc. These are used +++ in taxes that denote some pre-defined operator. */ +++ +++struct GTY((chain_next ("%h.next"))) TAG_T +++{ +++ TABLE_T *symbol_table; +++ MOID_T *type; +++ NODE_T *node, *unit; +++ const char *value; +++ bool scope_assigned, use, in_proc, loc_assigned, portable, variable; +++ bool ascribed_routine_text, is_recursive, publicized, exported; +++ int priority, heap, scope, youngest_environ, number; +++ STATUS_MASK_T status; +++ tree tree_decl; +++ MOIF_T *moif; +++ LOWERER_T lowerer; +++ TAG_T *next, *body; +++ const char *extern_symbol; +++}; +++#define NO_TAG ((TAG_T *) 0) +++ +++struct GTY((chain_next ("%h.more"), chain_prev ("%h.less"))) TOKEN_T +++{ +++ const char *text; +++ TOKEN_T *less, *more; +++}; +++#define NO_TOKEN ((TOKEN_T *) 0) +++ +++struct GTY(()) MODULE_T +++{ +++ bool tree_listing_safe, cross_reference_safe; +++ int error_count, warning_count, source_scan; +++ LINE_T *top_line; +++ MOID_T *top_moid, *standenv_moid; +++ NODE_T *top_node; +++ OPTIONS_T options; +++ FILE * GTY ((skip)) file_source_fd; +++ const char *file_source_name; +++ struct +++ { +++ LINE_T *save_l; +++ char * GTY((skip)) save_s, GTY((skip)) save_c; +++ } scan_state; +++}; +++ +++/* Module interface extracts. +++ +++ KIND is the kind of extract. One of the GA68_EXTRACT_* codes defined in +++ a68-exports.cc. +++ +++ SYMBOL is a string with the symbol name for the entity represented by the +++ extract. It is mangled. +++ +++ MODE applies to identifier, operator and indicatione extracts. +++ +++ PRIORITY is the priority number in a priority extract. +++ +++ VARIABLE applies to GA68_EXTRACT_IDEN and GA68_EXTRACT_OPER extracts, and +++ indicates whether the exported symbol was declared via a variable +++ declaration. These decls are optimized and don't require indirect +++ addressing. This is compiler-specific and part of mdextra. +++ +++ IN_PROC applies to GA68_EXTRACT_IDEN and GA68_EXTRACT_OPER extracts. If +++ set, the exported symbol shall not be indirected. This is compiler-specific +++ and part of mdextra. */ +++ +++struct GTY(()) EXTRACT_T +++{ +++ unsigned int kind; +++ const char *symbol; +++ MOID_T *mode; +++ int priority; +++ bool variable, in_proc; +++}; +++ +++/* Module interfaces. +++ +++ VERSION is the version of the exports format to report in the encoded data. +++ +++ NAME is the name of the module as it is accessed at the source level, which +++ corresponds to a bold word. +++ +++ PRELUDE and POSTLUDE are mangled symbols corresponding to the entry points +++ of the module's prelude and postlude. +++ +++ MODES is a vector of modes which conform the modes table of the module +++ interface. +++ +++ MODULES is a vector of TAGs for module extracts. +++ INDICANTS is a vector of TAGs for mode extracts. +++ IDENTIFIERS is a vector of TAGs for identifier extracts. +++ PRIOS is a vector of TAGs for operator priorities. */ +++ +++#define NO_MOIF ((MOIF_T *) 0) +++ +++struct GTY(()) MOIF_T +++{ +++ unsigned int version; +++ const char *name; +++ const char *prelude; +++ const char *postlude; +++ vec *modes; +++ vec *modules; +++ vec *indicants; +++ vec *identifiers; +++ vec *prios; +++ vec *operators; +++}; +++ +++struct MODE_CACHE_T +++{ +++ MOID_T *proc_bool; +++ MOID_T *proc_char; +++ MOID_T *proc_complex_complex; +++ MOID_T *proc_int; +++ MOID_T *proc_int_int; +++ MOID_T *proc_int_int_real; +++ MOID_T *proc_int_real; +++ MOID_T *proc_int_real_real; +++ MOID_T *proc_int_real_real_real; +++ MOID_T *proc_real; +++ MOID_T *proc_real_int_real; +++ MOID_T *proc_real_real; +++ MOID_T *proc_real_real_int_real; +++ MOID_T *proc_real_real_real; +++ MOID_T *proc_real_real_real_int; +++ MOID_T *proc_real_real_real_real; +++ MOID_T *proc_real_real_real_real_real; +++ MOID_T *proc_real_real_real_real_real_real; +++ MOID_T *proc_real_ref_real_ref_int_void; +++ MOID_T *proc_void; +++}; +++ +++/* A PARSER_T struct contains all the global state that is kept by the parser. +++ This information is managed and used exclusively by a68_parser. +++ +++ ERROR_TAG is a tag that signifies an error. It is initialized in +++ a68_parser. +++ +++ STOP_SCANNER is a control flag used exclusively by the main loop in +++ tokenise_source, which is recursive. +++ +++ SCAN_BUF is a scratch buffer used by the scanner for several purposes. This +++ buffer is known to be big enough to hold any substring from the source file. +++ It is initialized in read_source_file. +++ +++ MAX_SCAN_BUF_LENGTH is the useable size of SCAN_BUF. This is used by the +++ scanner to grow SCAN_BUF as it includes other files. +++ +++ TAG_NUMBER is a global counter used by the parser to assign an unique number +++ to each tag it creates. It is used in a68_new_tag. +++ +++ BOTTOM_UP_CRASH_EXIT and TOP_DOWN_CRASH_EXIT are used to longjmp from deeply +++ nested errors in the bottom-up and top-down parsers respectively. */ +++ +++struct GTY(()) PARSER_T +++{ +++ TAG_T *error_tag; +++ bool stop_scanner; +++ size_t max_scan_buf_length; +++ char * GTY((skip)) scan_buf; +++ int tag_number; +++ jmp_buf GTY((skip)) bottom_up_crash_exit; +++ jmp_buf GTY((skip)) top_down_crash_exit; +++}; +++ +++/* A A68_T struct contains the global state used by the ALGOL 68 front-end. +++ +++ OUTPUT_LINE is used by the diagnostics machinery in order to write out +++ message lines. +++ +++ EDIT_LINE is used as a scratch buffer for composing error messages and the +++ like. +++ +++ INPUT_LINE is used by the original ALGOL 68 Genie to read lines from the +++ tty. But in this parser it is used uninitialized (!) by the +++ a68_phrase_to_text routine in the top-down parser. XXX. +++ +++ NEW_NODES is a global counter that keeps the number of parse tree nodes +++ created. It is currently not used for anything, but still updated in +++ a68_new_node. +++ +++ NEW_MODES is a global counter that keeps the number of moids created. It is +++ currently not used for anything, but still updated in a68_new_moid. +++ +++ NEW_POSTULATES is a global counter that keeps the number of postulates +++ created by the front-end. It is currently not used for anything, but still +++ updated in a68_make_postulate. +++ +++ NEW_NODE_INFOS is a global counter that keeps the number of NODE_INFO_T +++ structures created by the front-end. It is currently not used for anything, +++ but still updated in a68_new_node_info. +++ +++ NEW_GENIE_INFOS is a global counter that keeps the number of GINFO_T +++ structures created by the front-end. It is currently no tused for anything, +++ but still updated in a68_new_genie_info. +++ +++ SYMBOL_TABLE_COUNT is a global counter used by the parser. XXX move to +++ parser global state when syntax tree finalisation is moved to a68_parser? +++ +++ MODE_COUNT is the number of modes registered in the global modes table. XXX +++ which table. +++ +++ TOP_KEYWORD is the top of the list of keywords known to the font-end. +++ +++ MODE_CACHE XXX. +++ +++ A68_MODES (accessed as MODE) is a collection of particular pre-defined +++ modes. These modes are initialized by stand_moids. +++ +++ JOB (accessed as A68_JOB) is the instance of MODULE_T with the global data +++ corresponding to the source file being compiled. +++ +++ OPTIONS is the set of options currently set for the front-end. +++ +++ TOP_POSTULATE and TOP_POSTULATE_LIST are lists of postulates maintained by +++ the front-end. +++ +++ POSTULATES is a collection of postulates used by the moid pretty printer. +++ +++ TOP_SOID_LIST is used by the moid machinery. +++ +++ STANDENV XXX. +++ +++ TOP_TOKEN XXX. +++ +++ INCLUDE_PATHS is the list of paths where we search for files to include. +++ Directories are added to the list at the option handling language hook. +++ The list is searched in FIFO order. +++ +++ IMPORT_PATHS is the list of paths where we search for module exports data. +++ Directories are added to the list at the option handling language hook. The +++ list is searched in FIFO order. +++ +++ GLOBAL_TREES is an array with global types like a68_void_type and +++ a68_long_int_type. It is indexed by an enum a68_tree_index. +++ +++ MODULE_DEFINITION_DECLS is the global list of the tree decls corresponding +++ to the module definition being compiled. Note that currently we only allow +++ top-level modules, so there is no nesting. This is part of the context of +++ the lowering pass, and these declarations are collected by the lowering +++ handlers and finally compiled down to assembler in lower_module_declaration. +++ It cannot go in LOW_CTX_T because the later is on the stack and is not +++ reachable by the GGC. +++ +++ PARSER_STATE contains the parser's global state. +++ +++ GLOBAL_CONTEXT is the context to be used for global declarations. Normally +++ the translation unit. +++ +++ GLOBAL_DECLARATIONS contains a array of global declarations to pass back to +++ the middle-end at the end of the compilation. +++*/ +++ +++struct GTY(()) A68_T +++{ +++ BUFFER output_line; +++ BUFFER edit_line; +++ BUFFER input_line; +++ int new_nodes; +++ int new_modes; +++ int new_postulates; +++ int new_node_infos; +++ int new_genie_infos; +++ int symbol_table_count; +++ int mode_count; +++ KEYWORD_T *top_keyword; +++ MODE_CACHE_T mode_cache; +++ MODES_T a68_modes; +++ MODULE_T job; +++ OPTIONS_T *options; +++ POSTULATE_T *postulates, *top_postulate, *top_postulate_list; +++ SOID_T *top_soid_list; +++ TABLE_T *standenv; +++ TOKEN_T *top_token; +++ vec *include_paths; +++ vec *import_paths; +++ hash_map *module_files; +++ tree global_trees[ATI_MAX]; +++ PARSER_T parser_state; +++ vec *module_definition_decls; +++ tree global_context; +++ vec *global_declarations; +++}; +++ +++/* +++ * Access macros to fields in the struct types defined above. These are used * +++ * in order to achieve a nice ALGOL-like field OF struct style. +++ */ +++ +++#define ASM_LABEL(m) ((m)->asm_label) +++#define BACKWARD(p) (p = PREVIOUS (p)) +++#define DEFLEX(p) (DEFLEXED (p) != NO_MOID ? DEFLEXED(p) : (p)) +++#define FORWARD(p) ((p) = NEXT (p)) +++#define A(p) ((p)->a) +++#define ANNOTATION(p) ((p)->annotation) +++#define ANONYMOUS(p) ((p)->anonymous) +++#define ATTRIBUTE(p) ((p)->attribute) +++#define ASCRIBED_ROUTINE_TEXT(p) ((p)->ascribed_routine_text) +++#define B(p) ((p)->b) +++#define BODY(p) ((p)->body) +++#define CAST(p) ((p)->cast) +++#define CHAR_IN_LINE(p) ((p)->char_in_line) +++#define CROSS_REFERENCE_SAFE(p) ((p)->cross_reference_safe) +++#define CDECL(p) ((p)->cdecl) +++#define COMMENT(p) ((p)->comment) +++#define COMMENT_CHAR_IN_LINE(p) ((p)->comment_char_in_line) +++#define COMMENT_LINE(p) ((p)->comment_line) +++#define COMMENT_TYPE(p) ((p)->comment_type) +++#define CTYPE(p) ((p)->ctype) +++#define DEFLEXED(p) ((p)->deflexed_mode) +++#define DEREFO(p) ((p).derefo) +++#define DERIVATE(p) ((p)->derivate) +++#define DIM(p) ((p)->dim) +++#define DYNAMIC_STACK_ALLOCS(p) ((p)->dynamic_stack_allocs) +++#define EQUIVALENT(p) ((p)->equivalent_mode) +++#define EQUIVALENT_MODE(p) ((p)->equivalent_mode) +++#define ERROR_COUNT(p) ((p)->error_count) +++#define EXPORTED(p) ((p)->exported) +++#define EXTERN_SYMBOL(p) ((p)->extern_symbol) +++#define EXTRACT_IN_PROC(p) ((p)->in_proc) +++#define EXTRACT_KIND(p) ((p)->kind) +++#define EXTRACT_MODE(p) ((p)->mode) +++#define EXTRACT_PRIO(p) ((p)->priority) +++#define EXTRACT_SYMBOL(p) ((p)->symbol) +++#define EXTRACT_VARIABLE(p) ((p)->variable) +++#define WARNING_COUNT(p) ((p)->warning_count) +++#define F(p) ((p)->f) +++#define FILENAME(p) ((p)->filename) +++#define FILE_SOURCE_FD(p) ((p)->file_source_fd) +++#define FILE_SOURCE_NAME(p) ((p)->file_source_name) +++#define FLEXO(p) ((p).flexo) +++#define FLEXO_KNOWN(p) ((p).flexo_known) +++#define G(p) ((p)->g) +++#define GINFO(p) ((p)->genie) +++#define GENO(p) ((p).geno) +++#define GET(p) ((p)->get) +++#define GPARENT(p) (PARENT (GINFO (p))) +++#define GREEN(p) ((p)->green) +++#define H(p) ((p)->h) +++#define HANDLE(p) ((p)->handle) +++#define HAS_ROWS(p) ((p)->has_rows) +++#define HEAP(p) ((p)->heap) +++#define ID(p) ((p)->id) +++#define IDENTIFICATION(p) ((p)->identification) +++#define IDENTIFIERS(p) ((p)->identifiers) +++#define IDF(p) ((p)->idf) +++#define IM(z) (VALUE (&(z)[1])) +++#define IN(p) ((p)->in) +++#define INDEX(p) ((p)->index) +++#define INDICANTS(p) ((p)->indicants) +++#define INFO(p) ((p)->info) +++#define INITIALISE_ANON(p) ((p)->initialise_anon) +++#define INITIALISE_FRAME(p) ((p)->initialise_frame) +++#define INI_PTR(p) ((p)->ini_ptr) +++#define INS_MODE(p) ((p)->ins_mode) +++#define IN_FORBIDDEN(p) ((p)->in_forbidden) +++#define IN_PREFIX(p) ((p)->in_prefix) +++#define IN_PROC(p) ((p)->in_proc) +++#define IN_TEXT(p) ((p)->in_text) +++#define IS_OPEN(p) ((p)->is_open) +++#define IS_RECURSIVE(p) ((p)->is_recursive) +++#define IS_TMP(p) ((p)->is_tmp) +++#define JUMP_STAT(p) ((p)->jump_stat) +++#define JUMP_TO(p) ((p)->jump_to) +++#define K(q) ((q)->k) +++#define LABELS(p) ((p)->labels) +++#define LAST(p) ((p)->last) +++#define LAST_LINE(p) ((p)->last_line) +++#define LESS(p) ((p)->less) +++#define LEVEL(p) ((p)->level) +++#define LEX_LEVEL(p) (LEVEL (TABLE (p))) +++#define LINBUF(p) ((p)->linbuf) +++#define LINE(p) ((p)->line) +++#define LINE_APPLIED(p) ((p)->line_applied) +++#define LINE_DEFINED(p) ((p)->line_defined) +++#define LINE_END_MENDED(p) ((p)->line_end_mended) +++#define LINE_NUMBER(p) (NUMBER (LINE (INFO (p)))) +++#define LINSIZ(p) ((p)->linsiz) +++#define LIST(p) ((p)->list) +++#define ln(x) (log (x)) +++#define LOCALE(p) ((p)->locale) +++#define LOC_ASSIGNED(p) ((p)->loc_assigned) +++#define LOWERER(p) ((p)->lowerer) +++#define LOWER_BOUND(p) ((p)->lower_bound) +++#define LWB(p) ((p)->lower_bound) +++#define MARKER(p) ((p)->marker) +++#define MATCH(p) ((p)->match) +++#define MODIFIED(p) ((p)->modified) +++#define MODULES(p) ((p)->modules) +++#define VERSION(p) ((p)->version) +++#define MODES(p) ((p)->modes) +++#define MOID(p) ((p)->type) +++#define MOIF(p) ((p)->moif) +++#define MORE(p) ((p)->more) +++#define MSGS(p) ((p)->msgs) +++#define MULTIPLE(p) ((p)->multiple_mode) +++#define MULTIPLE_MODE(p) ((p)->multiple_mode) +++#define NAME(p) ((p)->name) +++#define NEST(p) ((p)->nest) +++#define NEXT(p) ((p)->next) +++#define NEXT_NEXT(p) (NEXT (NEXT (p))) +++#define NEXT_NEXT_NEXT(p) (NEXT (NEXT_NEXT (p))) +++#define NEXT_SUB(p) (NEXT (SUB (p))) +++#define NF(p) ((p)->nf) +++#define NILO(p) ((p).nilo) +++#define NILO_KNOWN(p) ((p).nilo_known) +++#define NODE(p) ((p)->node) +++#define NODE_DEFINED(p) ((p)->node_defined) +++#define NODE_PACK(p) ((p)->pack) +++#define NON_LOCAL(p) ((p)->non_local) +++#define NCHAR_IN_LINE(p) (CHAR_IN_LINE (INFO (p))) +++#define NCOMMENT(p) (COMMENT (INFO (p))) +++#define NCOMMENT_CHAR_IN_LINE(p) (COMMENT_CHAR_IN_LINE (INFO (p))) +++#define NCOMMENT_LINE(p) (COMMENT_LINE (INFO (p))) +++#define NCOMMENT_TYPE(p) (COMMENT_TYPE (INFO (p))) +++#define NPRAGMAT(p) (PRAGMAT (INFO (p))) +++#define NPRAGMAT_CHAR_IN_LINE(p) (PRAGMAT_CHAR_IN_LINE (INFO (p))) +++#define NPRAGMAT_LINE(p) (PRAGMAT_LINE (INFO (p))) +++#define NPRAGMAT_TYPE(p) (PRAGMAT_TYPE (INFO (p))) +++#define NSYMBOL(p) (SYMBOL (INFO (p))) +++#define NUM(p) ((p)->num) +++#define NUMBER(p) ((p)->number) +++#define OPER(p) ((p)->oper) +++#define OPERATORS(p) ((p)->operators) +++#define OPT(p) ((p)->opt) +++#define OPTIONS(p) ((p)->options) +++#define OPTION_ASSERT(p) (OPTIONS (p).assert) +++#define OPTION_BOUNDS_CHECKING(p) (OPTIONS (p).bounds_checking) +++#define OPTION_BRACKETS(p) (OPTIONS (p).brackets) +++#define OPTION_NIL_CHECKING(p) (OPTIONS (p).nil_checking) +++#define OPTION_STRICT(p) (OPTIONS (p).strict) +++#define OPTION_STROPPING(p) (OPTIONS (p).stropping) +++#define OPTION_LIST(p) (OPTIONS (p).list) +++#define OPTION_LOCAL(p) (OPTIONS (p).local) +++#define OPTION_NODEMASK(p) (OPTIONS (p).nodemask) +++#define OUT(p) ((p)->out) +++#define OUTER(p) ((p)->outer) +++#define P(q) ((q)->p) +++#define PACK(p) ((p)->pack) +++#define PARTIAL_LOCALE(p) ((p)->partial_locale) +++#define PARTIAL_PROC(p) ((p)->partial_proc) +++#define PORTABLE(p) ((p)->portable) +++#define POSTLUDE(p) ((p)->postlude) +++#define PRAGMAT(p) ((p)->pragmat) +++#define PRAGMAT_CHAR_IN_LINE(p) ((p)->pragmat_char_in_line) +++#define PRAGMAT_LINE(p) ((p)->pragmat_line) +++#define PRAGMAT_TYPE(p) ((p)->pragmat_type) +++#define PRELUDE(p) ((p)->prelude) +++#define PREVIOUS(p) ((p)->previous) +++#define PRIO(p) ((p)->priority) +++#define PRIOS(p) ((p)->prios) +++#define PROCEDURE_LEVEL(p) ((p)->procedure_level) +++#define PROC_OPS(p) ((p)->proc_ops) +++#define PUBLICIZED(p) ((p)->publicized) +++#define PUBLIC_RANGE(p) ((p)->public_range) +++#define R(p) ((p)->r) +++#define RE(z) (VALUE (&(z)[0])) +++#define ROWED(p) ((p)->rowed) +++#define SCAN_STATE_C(p) ((p)->scan_state.save_c) +++#define SCAN_STATE_L(p) ((p)->scan_state.save_l) +++#define SCAN_STATE_S(p) ((p)->scan_state.save_s) +++#define SCOPE(p) ((p)->scope) +++#define SCOPE_ASSIGNED(p) ((p)->scope_assigned) +++#define SEQUENCE(p) ((p)->sequence) +++#define SEVERITY(p) ((p)->severity) +++#define SLICE(p) ((p)->slice) +++#define SORT(p) ((p)->sort) +++#define SOURCE_SCAN(p) ((p)->source_scan) +++#define STANDENV_MOID(p) ((p)->standenv_moid) +++#define STATUS(p) ((p)->status) +++#define STRING(p) ((p)->string) +++#define SUB(p) ((p)->sub) +++#define SUB_MOID(p) (SUB (MOID (p))) +++#define SUB_NEXT(p) (SUB (NEXT (p))) +++#define SUB_SUB(p) (SUB (SUB (p))) +++#define SYMBOL(p) ((p)->symbol) +++#define TABLE(p) ((p)->symbol_table) +++#define TAG_LEX_LEVEL(p) (LEVEL (TAG_TABLE (p))) +++#define TAG_TABLE(p) ((p)->symbol_table) +++#define TAX(p) ((p)->tag) +++#define TAX_TREE_DECL(p) ((p)->tree_decl) +++#define TEXT(p) ((p)->text) +++#define TOP_LINE(p) ((p)->top_line) +++#define TOP_MOID(p) ((p)->top_moid) +++#define TOP_NODE(p) ((p)->top_node) +++#define TRANSIENT(p) ((p)->transient) +++#define TREE_LISTING_SAFE(p) ((p)->tree_listing_safe) +++#define TRIM(p) ((p)->trim) +++#define TUPLE(p) ((p)->tuple) +++#define UNIT(p) ((p)->unit) +++#define USE(p) ((p)->use) +++#define VALUE(p) ((p)->value) +++#define VARIABLE(p) ((p)->variable) +++#define WHERE(p) ((p)->where) +++#define IS_FLEXETY_ROW(m) (IS_FLEX (m) || IS_ROW (m) || m == M_STRING) +++#define IS_FLEX(m) IS ((m), FLEX_SYMBOL) +++#define IS_LITERALLY(p, s) (strcmp (NSYMBOL (p), s) == 0) +++#define ISNT(p, s) (! IS (p, s)) +++#define IS(p, s) (ATTRIBUTE (p) == (s)) +++#define IS_REF_FLEX(m) (IS (m, REF_SYMBOL) && IS (SUB (m), FLEX_SYMBOL)) +++#define IS_REF(m) IS ((m), REF_SYMBOL) +++#define IS_INTEGRAL(m) \ +++ ((m) == M_INT \ +++ || (m) == M_LONG_INT \ +++ || (m) == M_LONG_LONG_INT \ +++ || (m) == M_SHORT_INT \ +++ || (m) == M_SHORT_SHORT_INT) +++#define IS_BITS(m) \ +++ ((m) == M_BITS \ +++ || (m) == M_LONG_BITS \ +++ || (m) == M_LONG_LONG_BITS \ +++ || (m) == M_SHORT_BITS \ +++ || (m) == M_SHORT_SHORT_BITS) +++#define IS_BYTES(m) \ +++ ((m) == M_BYTES || (m) == M_LONG_BYTES) +++#define IS_COMPLEX(m) \ +++ ((m) == M_COMPLEX \ +++ || (m) == M_LONG_COMPLEX \ +++ || (m) == M_LONG_LONG_COMPLEX) +++#define IS_REAL(m) \ +++ ((m) == M_REAL \ +++ || (m) == M_LONG_REAL \ +++ || (m) == M_LONG_LONG_REAL) +++#define IS_ROW(m) IS ((m), ROW_SYMBOL) +++#define IS_STRUCT(m) IS ((m), STRUCT_SYMBOL) +++#define IS_UNION(m) IS ((m), UNION_SYMBOL) +++#define YOUNGEST_ENVIRON(p) ((p)->youngest_environ) +++ +++#endif /* ! __A68_TYPES_H */ ++--- /dev/null +++++ b/src/gcc/algol68/a68-unistr.c ++@@ -0,0 +1,453 @@ +++/* Character conversion functions for the Algol 68 front-end. +++ Copyright (C) 1999-2002, 2006-2007, 2009-2024 Free Software Foundation, Inc. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ The code in this file has been adapted from the unistr gnulib module, +++ written by Bruno Haible. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#define INCLUDE_MEMORY +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++ +++#include "a68.h" +++ +++static int +++u8_mbtoucr (uint32_t *puc, const uint8_t *s, size_t n) +++{ +++ uint8_t c = *s; +++ +++ if (c < 0x80) +++ { +++ *puc = c; +++ return 1; +++ } +++ else if (c >= 0xc2) +++ { +++ if (c < 0xe0) +++ { +++ if (n >= 2) +++ { +++ if ((s[1] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x1f) << 6) +++ | (unsigned int) (s[1] ^ 0x80); +++ return 2; +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ else if (c < 0xf0) +++ { +++ if (n >= 2) +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xe1 || s[1] >= 0xa0) +++ && (c != 0xed || s[1] < 0xa0)) +++ { +++ if (n >= 3) +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x0f) << 12) +++ | ((unsigned int) (s[1] ^ 0x80) << 6) +++ | (unsigned int) (s[2] ^ 0x80); +++ return 3; +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ else if (c <= 0xf4) +++ { +++ if (n >= 2) +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xf1 || s[1] >= 0x90) +++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) +++ { +++ if (n >= 3) +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ if (n >= 4) +++ { +++ if ((s[3] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x07) << 18) +++ | ((unsigned int) (s[1] ^ 0x80) << 12) +++ | ((unsigned int) (s[2] ^ 0x80) << 6) +++ | (unsigned int) (s[3] ^ 0x80); +++ return 4; +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return -1; +++} +++ +++/* Get the UCS code for the first character of a given UTF-8 string. */ +++ +++int +++a68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n) +++{ +++ uint8_t c = *s; +++ +++ if (c < 0x80) +++ { +++ *puc = c; +++ return 1; +++ } +++ else if (c >= 0xc2) +++ { +++ if (c < 0xe0) +++ { +++ if (n >= 2) +++ { +++ if ((s[1] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x1f) << 6) +++ | (unsigned int) (s[1] ^ 0x80); +++ return 2; +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return 1; +++ } +++ } +++ else if (c < 0xf0) +++ { +++ if (n >= 3) +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xe1 || s[1] >= 0xa0) +++ && (c != 0xed || s[1] < 0xa0)) +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x0f) << 12) +++ | ((unsigned int) (s[1] ^ 0x80) << 6) +++ | (unsigned int) (s[2] ^ 0x80); +++ return 3; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 2; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 1; +++ } +++ else +++ { +++ *puc = 0xfffd; +++ if (n == 1) +++ { +++ /* incomplete multibyte character */ +++ return 1; +++ } +++ else +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xe1 || s[1] >= 0xa0) +++ && (c != 0xed || s[1] < 0xa0)) +++ { +++ /* incomplete multibyte character */ +++ return 2; +++ } +++ else +++ { +++ /* invalid multibyte character */ +++ return 1; +++ } +++ } +++ } +++ } +++ else if (c <= 0xf4) +++ { +++ if (n >= 4) +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xf1 || s[1] >= 0x90) +++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ if ((s[3] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x07) << 18) +++ | ((unsigned int) (s[1] ^ 0x80) << 12) +++ | ((unsigned int) (s[2] ^ 0x80) << 6) +++ | (unsigned int) (s[3] ^ 0x80); +++ return 4; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 3; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 2; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 1; +++ } +++ else +++ { +++ *puc = 0xfffd; +++ if (n == 1) +++ { +++ /* incomplete multibyte character */ +++ return 1; +++ } +++ else +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xf1 || s[1] >= 0x90) +++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) +++ { +++ if (n == 2) +++ { +++ /* incomplete multibyte character */ +++ return 2; +++ } +++ else +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ /* incomplete multibyte character */ +++ return 3; +++ } +++ else +++ { +++ /* invalid multibyte character */ +++ return 2; +++ } +++ } +++ } +++ else +++ { +++ /* invalid multibyte character */ +++ return 1; +++ } +++ } +++ } +++ } +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 1; +++} +++ +++/* Encode a given UCS code in UTF-8. */ +++ +++int +++a68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n) +++{ +++ if (uc < 0x80) +++ { +++ if (n > 0) +++ { +++ s[0] = uc; +++ return 1; +++ } +++ /* else return -2, below. */ +++ } +++ else +++ { +++ int count; +++ +++ if (uc < 0x800) +++ count = 2; +++ else if (uc < 0x10000) +++ { +++ if (uc < 0xd800 || uc >= 0xe000) +++ count = 3; +++ else +++ return -1; +++ } +++ else if (uc < 0x110000) +++ count = 4; +++ else +++ return -1; +++ +++ if (n >= count) +++ { +++ switch (count) /* note: code falls through cases! */ +++ { +++ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000; +++ gcc_fallthrough (); +++ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800; +++ gcc_fallthrough (); +++ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0; +++ /*case 1:*/ s[0] = uc; +++ } +++ return count; +++ } +++ } +++ return -2; +++} +++ +++/* Convert UTF-8 to UTF-32/UCS-4 */ +++ +++uint32_t * +++a68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp) +++{ +++ const uint8_t *s_end = s + n; +++ /* Output string accumulator. */ +++ uint32_t *result; +++ size_t allocated; +++ size_t length; +++ +++ if (resultbuf != NULL) +++ { +++ result = resultbuf; +++ allocated = *lengthp; +++ } +++ else +++ { +++ result = NULL; +++ allocated = 0; +++ } +++ length = 0; +++ /* Invariants: +++ result is either == resultbuf or == NULL or malloc-allocated. +++ If length > 0, then result != NULL. */ +++ +++ while (s < s_end) +++ { +++ uint32_t uc; +++ int count; +++ +++ /* Fetch a Unicode character from the input string. */ +++ count = u8_mbtoucr (&uc, s, s_end - s); +++ if (count < 0) +++ { +++ if (!(result == resultbuf || result == NULL)) +++ free (result); +++ errno = EILSEQ; +++ return NULL; +++ } +++ s += count; +++ +++ /* Store it in the output string. */ +++ if (length + 1 > allocated) +++ { +++ uint32_t *memory; +++ +++ allocated = (allocated > 0 ? 2 * allocated : 12); +++ if (length + 1 > allocated) +++ allocated = length + 1; +++ if (result == resultbuf || result == NULL) +++ memory = (uint32_t *) xmalloc (allocated * sizeof (uint32_t)); +++ else +++ memory = +++ (uint32_t *) xrealloc (result, allocated * sizeof (uint32_t)); +++ +++ if (memory == NULL) +++ { +++ if (!(result == resultbuf || result == NULL)) +++ free (result); +++ errno = ENOMEM; +++ return NULL; +++ } +++ if (result == resultbuf && length > 0) +++ memcpy ((char *) memory, (char *) result, +++ length * sizeof (uint32_t)); +++ result = memory; +++ } +++ result[length++] = uc; +++ } +++ +++ if (length == 0) +++ { +++ if (result == NULL) +++ { +++ /* Return a non-NULL value. NULL means error. */ +++ result = (uint32_t *) xmalloc (sizeof (uint32_t)); +++ if (result == NULL) +++ { +++ errno = ENOMEM; +++ return NULL; +++ } +++ } +++ } +++ else if (result != resultbuf && length < allocated) +++ { +++ /* Shrink the allocated memory if possible. */ +++ uint32_t *memory; +++ +++ memory = (uint32_t *) xrealloc (result, length * sizeof (uint32_t)); +++ if (memory != NULL) +++ result = memory; +++ } +++ +++ *lengthp = length; +++ return result; +++} ++--- /dev/null +++++ b/src/gcc/algol68/a68.h ++@@ -0,0 +1,1117 @@ +++/* Definitions for the Algol 68 GCC front end. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT +++ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +++ or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public +++ License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++#ifndef __A68_H__ +++#define __A68_H__ +++ +++/* Some common definitions first. */ +++ +++#define BUFFER_SIZE 1024 +++#define SMALL_BUFFER_SIZE 128 +++#define SNPRINTF_SIZE ((size_t) (BUFFER_SIZE - 1)) +++#define BUFCLR(z) {memset ((z), 0, BUFFER_SIZE + 1);} +++#define MOID_ERROR_WIDTH 80 +++ +++#define MONADS "%^&+-~!?" +++#define NOMADS ">= 4001) || GCC_VERSION == BUILDING_GCC_VERSION +++#define ATTRIBUTE_A68_DIAG(m, n) __attribute__ ((__format__ (__gcc_tdiag__, m, n))) ATTRIBUTE_NONNULL(m) +++#else +++#define ATTRIBUTE_A68_DIAG(m, n) ATTRIBUTE_NONNULL(m) +++#endif +++ +++/* Maximum number of priorities supported for operators. The Algol 68 RR +++ specifies 9. */ +++ +++#define MAX_PRIORITY 9 +++ +++/* The primal scope is the top-level scope. */ +++ +++#define PRIMAL_SCOPE 0 +++ +++/* Deflexing strategy. See the moid checking routines in +++ a68-parser-moids-check for an explanation of these values. */ +++ +++enum +++{ +++ NO_DEFLEXING = 1, SAFE_DEFLEXING, ALIAS_DEFLEXING, FORCE_DEFLEXING, +++ SKIP_DEFLEXING +++}; +++ +++/* Magic number for the exports data. */ +++ +++#define A68_EXPORT_MAGIC_LEN 2 +++ +++#define A68_EXPORT_MAGIC1 0x0a +++#define A68_EXPORT_MAGIC2 0x68 +++ +++/* The segment name we pass to simple_object_start_read to find Algol 68 export +++ data. */ +++ +++#ifndef A68_EXPORT_SEGMENT_NAME +++#define A68_EXPORT_SEGMENT_NAME "__GNU_A68" +++#endif +++ +++/* The section name we use when reading and writing export data. */ +++ +++#ifndef A68_EXPORT_SECTION_NAME +++#define A68_EXPORT_SECTION_NAME ".a68_exports" +++#endif +++ +++/* ga68 export format definitions. See ga68-exports.pk. */ +++ +++#define GA68_EXPORTS_VERSION 1 +++ +++#define GA68_MODE_UNKNOWN 0 +++#define GA68_MODE_VOID 1 +++#define GA68_MODE_INT 2 +++#define GA68_MODE_REAL 3 +++#define GA68_MODE_BITS 4 +++#define GA68_MODE_BYTES 5 +++#define GA68_MODE_CHAR 6 +++#define GA68_MODE_BOOL 7 +++#define GA68_MODE_CMPL 8 +++#define GA68_MODE_ROW 9 +++#define GA68_MODE_STRUCT 10 +++#define GA68_MODE_UNION 11 +++#define GA68_MODE_NAME 12 +++#define GA68_MODE_PROC 13 +++#define GA68_MODE_STRING 14 +++#define GA68_MODE_FLEX 15 +++ +++#define GA68_EXTRACT_MODU 0 +++#define GA68_EXTRACT_IDEN 1 +++#define GA68_EXTRACT_MODE 2 +++#define GA68_EXTRACT_PRIO 3 +++#define GA68_EXTRACT_OPER 4 +++ +++/* Then the types. */ +++ +++#include "a68-types.h" +++ +++/* Front-end global state. */ +++ +++extern GTY(()) A68_T a68_common; +++#define A68(z) (a68_common.z) +++#define A68_JOB A68 (job) +++#define A68_STANDENV A68 (standenv) +++#define A68_MCACHE(z) A68 (mode_cache.z) +++#define A68_INCLUDE_PATHS A68 (include_paths) +++#define A68_IMPORT_PATHS A68 (import_paths) +++#define A68_MODULE_FILES A68 (module_files) +++#define A68_GLOBAL_TREES A68 (global_trees) +++#define A68_PARSER(Z) (A68 (parser_state).Z) +++#define A68_MODULE_DEFINITION_DECLS A68 (module_definition_decls) +++#define A68_GLOBAL_CONTEXT A68 (global_context) +++#define A68_GLOBAL_DECLARATIONS A68 (global_declarations) +++ +++/* Particular pre-defined modes. */ +++ +++#define MODE(p) A68 (a68_modes.p) +++#define M_BITS (MODE (BITS)) +++#define M_BOOL (MODE (BOOL)) +++#define M_BYTES (MODE (BYTES)) +++#define M_CHANNEL (MODE (CHANNEL)) +++#define M_CHAR (MODE (CHAR)) +++#define M_COLLITEM (MODE (COLLITEM)) +++#define M_COMPLEX (MODE (COMPLEX)) +++#define M_C_STRING (MODE (C_STRING)) +++#define M_ERROR (MODE (ERROR)) +++#define M_FILE (MODE (FILE)) +++#define M_FLEX_ROW_BOOL (MODE (FLEX_ROW_BOOL)) +++#define M_FLEX_ROW_CHAR (MODE (FLEX_ROW_CHAR)) +++#define M_FORMAT (MODE (FORMAT)) +++#define M_HIP (MODE (HIP)) +++#define M_INT (MODE (INT)) +++#define M_LONG_BITS (MODE (LONG_BITS)) +++#define M_LONG_BYTES (MODE (LONG_BYTES)) +++#define M_LONG_COMPLEX (MODE (LONG_COMPLEX)) +++#define M_LONG_INT (MODE (LONG_INT)) +++#define M_LONG_LONG_INT (MODE (LONG_LONG_INT)) +++#define M_LONG_LONG_BITS (MODE (LONG_LONG_BITS)) +++#define M_LONG_LONG_COMPLEX (MODE (LONG_LONG_COMPLEX)) +++#define M_LONG_LONG_INT (MODE (LONG_LONG_INT)) +++#define M_LONG_LONG_REAL (MODE (LONG_LONG_REAL)) +++#define M_LONG_REAL (MODE (LONG_REAL)) +++#define M_NIL (MODE (NIL)) +++#define M_NUMBER (MODE (NUMBER)) +++#define M_PROC_LONG_REAL_LONG_REAL (MODE (PROC_LONG_REAL_LONG_REAL)) +++#define M_PROC_REAL_REAL (MODE (PROC_REAL_REAL)) +++#define M_PROC_REF_FILE_BOOL (MODE (PROC_REF_FILE_BOOL)) +++#define M_PROC_REF_FILE_VOID (MODE (PROC_REF_FILE_VOID)) +++#define M_PROC_ROW_CHAR (MODE (PROC_ROW_CHAR)) +++#define M_PROC_STRING (MODE (PROC_STRING)) +++#define M_PROC_VOID (MODE (PROC_VOID)) +++#define M_REAL (MODE (REAL)) +++#define M_REF_BITS (MODE (REF_BITS)) +++#define M_REF_BOOL (MODE (REF_BOOL)) +++#define M_REF_BYTES (MODE (REF_BYTES)) +++#define M_REF_CHAR (MODE (REF_CHAR)) +++#define M_REF_COMPLEX (MODE (REF_COMPLEX)) +++#define M_REF_FILE (MODE (REF_FILE)) +++#define M_REF_INT (MODE (REF_INT)) +++#define M_REF_LONG_BITS (MODE (REF_LONG_BITS)) +++#define M_REF_LONG_BYTES (MODE (REF_LONG_BYTES)) +++#define M_REF_LONG_COMPLEX (MODE (REF_LONG_COMPLEX)) +++#define M_REF_LONG_INT (MODE (REF_LONG_INT)) +++#define M_REF_LONG_LONG_BITS (MODE (REF_LONG_LONG_BITS)) +++#define M_REF_LONG_LONG_COMPLEX (MODE (REF_LONG_LONG_COMPLEX)) +++#define M_REF_LONG_LONG_INT (MODE (REF_LONG_LONG_INT)) +++#define M_REF_LONG_LONG_REAL (MODE (REF_LONG_LONG_REAL)) +++#define M_REF_LONG_REAL (MODE (REF_LONG_REAL)) +++#define M_REF_REAL (MODE (REF_REAL)) +++#define M_REF_REF_FILE (MODE (REF_REF_FILE)) +++#define M_REF_SHORT_BITS (MODE (REF_SHORT_BITS)) +++#define M_REF_SHORT_SHORT_BITS (MODE (REF_SHORT_SHORT_BITS)) +++#define M_REF_ROW_CHAR (MODE (REF_ROW_CHAR)) +++#define M_REF_ROW_COMPLEX (MODE (REF_ROW_COMPLEX)) +++#define M_REF_ROW_INT (MODE (REF_ROW_INT)) +++#define M_REF_ROW_REAL (MODE (REF_ROW_REAL)) +++#define M_REF_ROW_ROW_COMPLEX (MODE (REF_ROW_ROW_COMPLEX)) +++#define M_REF_ROW_ROW_REAL (MODE (REF_ROW_ROW_REAL)) +++#define M_REF_SHORT_INT (MODE (REF_SHORT_INT)) +++#define M_REF_SHORT_SHORT_INT (MODE (REF_SHORT_SHORT_INT)) +++#define M_REF_STRING (MODE (REF_STRING)) +++#define M_ROW_BITS (MODE (ROW_BITS)) +++#define M_ROW_BOOL (MODE (ROW_BOOL)) +++#define M_ROW_CHAR (MODE (ROW_CHAR)) +++#define M_ROW_COMPLEX (MODE (ROW_COMPLEX)) +++#define M_ROW_INT (MODE (ROW_INT)) +++#define M_ROW_REAL (MODE (ROW_REAL)) +++#define M_ROW_ROW_CHAR (MODE (ROW_ROW_CHAR)) +++#define M_ROW_ROW_COMPLEX (MODE (ROW_ROW_COMPLEX)) +++#define M_ROW_ROW_REAL (MODE (ROW_ROW_REAL)) +++#define M_ROW_SIMPLIN (MODE (ROW_SIMPLIN)) +++#define M_ROW_SIMPLOUT (MODE (ROW_SIMPLOUT)) +++#define M_ROWS (MODE (ROWS)) +++#define M_ROW_STRING (MODE (ROW_STRING)) +++#define M_SEMA (MODE (SEMA)) +++#define M_SHORT_BITS (MODE (SHORT_BITS)) +++#define M_SHORT_SHORT_BITS (MODE (SHORT_SHORT_BITS)) +++#define M_SHORT_INT (MODE (SHORT_INT)) +++#define M_SHORT_SHORT_INT (MODE (SHORT_SHORT_INT)) +++#define M_SIMPLIN (MODE (SIMPLIN)) +++#define M_SIMPLOUT (MODE (SIMPLOUT)) +++#define M_STRING (MODE (STRING)) +++#define M_UNDEFINED (MODE (UNDEFINED)) +++#define M_VACUUM (MODE (VACUUM)) +++#define M_VOID (MODE (VOID)) +++ +++/* Usage of TYPE_LANG_FLAG_* flags. */ +++ +++#define A68_ROW_TYPE_P(NODE) TYPE_LANG_FLAG_0 (NODE) +++#define A68_UNION_TYPE_P(NODE) TYPE_LANG_FLAG_1 (NODE) +++#define A68_STRUCT_TYPE_P(NODE) TYPE_LANG_FLAG_2 (NODE) +++#define A68_ROWS_TYPE_P(NODE) TYPE_LANG_FLAG_3 (NODE) +++#define A68_TYPE_HAS_ROWS_P(NODE) TYPE_LANG_FLAG_4 (NODE) +++ +++/* Language-specific tree checkers. */ +++ +++#define STRUCT_OR_UNION_TYPE_CHECK(NODE) \ +++ TREE_CHECK2 (NODE, RECORD_TYPE, UNION_TYPE) +++ +++/* Usage of TYPE_LANG_SLOT_* fields. */ +++ +++#define TYPE_FORWARD_REFERENCES(NODE) \ +++ (TYPE_LANG_SLOT_1 (STRUCT_OR_UNION_TYPE_CHECK (NODE))) +++ +++/* a68-unistr.cc */ +++ +++int a68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n); +++int a68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n); +++ +++uint32_t *a68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp); +++ +++/* a68-lang.cc */ +++ +++/* Global types. These are built in a68_build_a68_type_nodes and used by the +++ lowering routines. */ +++ +++#define a68_void_type A68_GLOBAL_TREES[ATI_VOID_TYPE] +++#define a68_bool_type A68_GLOBAL_TREES[ATI_BOOL_TYPE] +++#define a68_char_type A68_GLOBAL_TREES[ATI_CHAR_TYPE] +++#define a68_short_short_bits_type A68_GLOBAL_TREES[ATI_SHORT_SHORT_BITS_TYPE] +++#define a68_short_bits_type A68_GLOBAL_TREES[ATI_SHORT_BITS_TYPE] +++#define a68_bits_type A68_GLOBAL_TREES[ATI_BITS_TYPE] +++#define a68_long_bits_type A68_GLOBAL_TREES[ATI_LONG_BITS_TYPE] +++#define a68_long_long_bits_type A68_GLOBAL_TREES[ATI_LONG_LONG_BITS_TYPE] +++#define a68_bytes_type A68_GLOBAL_TREES[ATI_BYTES_TYPE] +++#define a68_long_bytes_type A68_GLOBAL_TREES[ATI_LONG_BYTES_TYPE] +++#define a68_short_short_int_type A68_GLOBAL_TREES[ATI_SHORT_SHORT_INT_TYPE] +++#define a68_short_int_type A68_GLOBAL_TREES[ATI_SHORT_INT_TYPE] +++#define a68_int_type A68_GLOBAL_TREES[ATI_INT_TYPE] +++#define a68_long_int_type A68_GLOBAL_TREES[ATI_LONG_INT_TYPE] +++#define a68_long_long_int_type A68_GLOBAL_TREES[ATI_LONG_LONG_INT_TYPE] +++#define a68_real_type A68_GLOBAL_TREES[ATI_REAL_TYPE] +++#define a68_long_real_type A68_GLOBAL_TREES[ATI_LONG_REAL_TYPE] +++#define a68_long_long_real_type A68_GLOBAL_TREES[ATI_LONG_LONG_REAL_TYPE] +++ +++struct lang_type *a68_build_lang_type (MOID_T *moid); +++struct lang_decl *a68_build_lang_decl (NODE_T *node); +++MOID_T *a68_type_moid (tree type); +++ +++/* a68-diagnostics.cc */ +++ +++void a68_error (NODE_T *p, const char *loc_str, ...); +++void a68_error_in_pragmat (NODE_T *p, size_t off, +++ const char *loc_str, ...); +++bool a68_warning (NODE_T *p, int opt, const char *loc_str, ...); +++void a68_inform (NODE_T *p, const char *loc_str, ...); +++void a68_fatal (NODE_T *p, const char *loc_str, ...); +++void a68_scan_error (LINE_T *u, char *v, const char *txt, ...); +++ +++/* a68-parser-scanner.cc */ +++ +++bool a68_lexical_analyser (const char *filename); +++ +++/* a68-parser.cc */ +++ +++int a68_count_operands (NODE_T *p); +++int a68_count_formal_bounds (NODE_T *p); +++void a68_count_pictures (NODE_T *p, int *k); +++bool a68_is_ref_refety_flex (MOID_T *m); +++bool a68_is_semicolon_less (NODE_T *p); +++bool a68_is_formal_bounds (NODE_T *p); +++bool a68_is_unit_terminator (NODE_T *p); +++bool a68_is_loop_keyword (NODE_T *p); +++bool a68_is_new_lexical_level (NODE_T *p); +++bool a68_dont_mark_here (NODE_T *p); +++enum a68_attribute a68_get_good_attribute (NODE_T *p); +++void a68_parser (const char *filename); +++NODE_INFO_T *a68_new_node_info (void); +++GINFO_T *a68_new_genie_info (void); +++NODE_T *a68_new_node (void); +++NODE_T *a68_some_node (const char *t); +++TABLE_T *a68_new_symbol_table (TABLE_T *p); +++MOID_T *a68_new_moid (void); +++PACK_T *a68_new_pack (void); +++TAG_T *a68_new_tag (void); +++void a68_make_special_mode (MOID_T **, int m); +++void a68_make_sub (NODE_T *p, NODE_T *, enum a68_attribute t); +++bool a68_whether (NODE_T *, ...); +++bool a68_is_one_of (NODE_T *p, ...); +++void a68_bufcat (char *dst, const char *src, int len); +++void a68_bufcpy (char *dst, const char *src, int len); +++char *a68_new_string (const char *t, ...); +++const char *a68_attribute_name (enum a68_attribute attr); +++location_t a68_get_node_location (NODE_T *p); +++location_t a68_get_line_location (LINE_T *line, const char *pos); +++ +++/* a68-parser-top-down.cc */ +++ +++void a68_substitute_brackets (NODE_T *p); +++const char *a68_phrase_to_text (NODE_T *p, NODE_T **w); +++void a68_top_down_parser (NODE_T *p); +++ +++/* a68-parser-bottom-up.cc */ +++ +++void a68_bottom_up_parser (NODE_T *p); +++void a68_bottom_up_error_check (NODE_T *p); +++void a68_rearrange_goto_less_jumps (NODE_T *p); +++void a68_bottom_up_coalesce_pub (NODE_T *p); +++ +++/* a68-parser-extract.cc */ +++ +++void a68_extract_indicants (NODE_T *p); +++void a68_extract_priorities (NODE_T *p); +++void a68_extract_operators (NODE_T *p); +++void a68_extract_labels (NODE_T *p, int expect); +++void a68_extract_declarations (NODE_T *p); +++void a68_elaborate_bold_tags (NODE_T *p); +++ +++/* a68-parser-keywords.cc */ +++ +++const char *a68_strop_keyword (const char *keyword); +++void a68_set_up_tables (void); +++TOKEN_T *a68_add_token (TOKEN_T **p, const char *t); +++KEYWORD_T *a68_find_keyword (KEYWORD_T *p, const char *t); +++KEYWORD_T *a68_find_keyword_from_attribute (KEYWORD_T *p, enum a68_attribute a); +++ +++/* a68-postulates.cc */ +++ +++void a68_init_postulates (void); +++void a68_free_postulate_list (POSTULATE_T *, POSTULATE_T *); +++void a68_make_postulate (POSTULATE_T **, MOID_T *, MOID_T *); +++POSTULATE_T *a68_is_postulated (POSTULATE_T *, MOID_T *); +++POSTULATE_T *a68_is_postulated_pair (POSTULATE_T *, MOID_T *, MOID_T *); +++ +++/* a68-parser-moids-check.cc */ +++ +++void a68_mode_checker (NODE_T *p); +++ +++/* a68-parser-moids-coerce.cc */ +++ +++void a68_coercion_inserter (NODE_T *p); +++ +++/* a68-parser-moids-equivalence.cc */ +++ +++bool a68_prove_moid_equivalence (MOID_T *, MOID_T *); +++ +++/* a68-parser-brackets.cc */ +++ +++void a68_check_parenthesis (NODE_T *top); +++ +++/* a68-parser-prelude.cc */ +++ +++void a68_make_standard_environ (void); +++ +++/* a68-parser-taxes.cc */ +++ +++void a68_set_proc_level (NODE_T *p, int n); +++void a68_set_nest (NODE_T *p, NODE_T *s); +++int a68_first_tag_global (TABLE_T * table, const char *name); +++void a68_collect_taxes (NODE_T *p); +++TAG_T *a68_add_tag (TABLE_T *s, int a, NODE_T *n, MOID_T *m, int p); +++TAG_T *a68_find_tag_global (TABLE_T *table, int a, const char *name); +++int a68_is_identifier_or_label_global (TABLE_T *table, const char *name); +++void a68_reset_symbol_table_nest_count (NODE_T *p); +++void a68_bind_routine_tags_to_tree (NODE_T *p); +++void a68_fill_symbol_table_outer (NODE_T *p, TABLE_T *s); +++void a68_finalise_symbol_table_setup (NODE_T *p, int l); +++void a68_preliminary_symbol_table_setup (NODE_T *p); +++void a68_mark_moids (NODE_T *p); +++void a68_mark_auxilliary (NODE_T *p); +++void a68_warn_for_unused_tags (NODE_T *p); +++void a68_jumps_from_procs (NODE_T *p); +++ +++/* a68-parser-victal.cc */ +++ +++void a68_victal_checker (NODE_T *p); +++ +++/* a68-parser-modes.cc */ +++ +++int a68_count_pack_members (PACK_T *u); +++MOID_T *a68_register_extra_mode (MOID_T **z, MOID_T *u); +++MOID_T *a68_create_mode (int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack); +++MOID_T *a68_search_equivalent_mode (MOID_T *m); +++MOID_T *a68_add_mode (MOID_T **z, int att, int dim, NODE_T *node, MOID_T *sub, PACK_T *pack); +++void a68_contract_union (MOID_T *u); +++PACK_T *a68_absorb_union_pack (PACK_T * u); +++void a68_add_mode_to_pack (PACK_T **p, MOID_T *m, const char *text, NODE_T *node); +++void a68_add_mode_to_pack_end (PACK_T **p, MOID_T *m, const char *text, NODE_T *node); +++void a68_make_moid_list (MODULE_T *mod); +++ +++void a68_renumber_moids (MOID_T *p, int n); +++ +++/* a68-moids-to-string.cc */ +++ +++const char *a68_moid_to_string (MOID_T *n, size_t w, NODE_T *idf, +++ bool indicant_value = false); +++ +++/* a68-moids-misc.cc */ +++ +++bool a68_basic_coercions (MOID_T *p, MOID_T *q, int c, int deflex); +++bool a68_clause_allows_balancing (int att); +++bool a68_is_balanced (NODE_T *n, SOID_T *y, int sort); +++bool a68_is_coercible_in_context (SOID_T *p, SOID_T *q, int deflex); +++bool a68_is_coercible (MOID_T *p, MOID_T *q, int c, int deflex); +++bool a68_is_coercible_series (MOID_T *p, MOID_T *q, int c, int deflex); +++bool a68_is_coercible_stowed (MOID_T *p, MOID_T *q, int c, int deflex); +++bool a68_is_deprefable (MOID_T *p); +++bool a68_is_equal_modes (MOID_T *p, MOID_T *q, int deflex); +++bool a68_is_firmly_coercible (MOID_T *p, MOID_T *q, int deflex); +++bool a68_is_firm (MOID_T *p, MOID_T *q); +++bool a68_is_meekly_coercible (MOID_T *p, MOID_T *q, int deflex); +++bool a68_is_mode_isnt_well (MOID_T *p); +++bool a68_is_moid_in_pack (MOID_T *u, PACK_T *v, int deflex); +++bool a68_is_name_struct (MOID_T *p); +++bool a68_is_nonproc (MOID_T *p); +++bool a68_is_printable_mode (MOID_T *p); +++bool a68_is_proc_ref_file_void_or_format (MOID_T *p); +++bool a68_is_readable_mode (MOID_T *p); +++bool a68_is_ref_row (MOID_T *p); +++bool a68_is_rows_type (MOID_T *p); +++bool a68_is_softly_coercible (MOID_T *p, MOID_T *q, int deflex); +++bool a68_is_strongly_coercible (MOID_T *p, MOID_T *q, int deflex); +++bool a68_is_strong_name (MOID_T *p, MOID_T *q); +++bool a68_is_strong_slice (MOID_T *p, MOID_T *q); +++bool a68_is_subset (MOID_T *p, MOID_T *q, int deflex); +++bool a68_is_transput_mode (MOID_T *p, char rw); +++bool a68_is_unitable (MOID_T *p, MOID_T *q, int deflex); +++bool a68_is_weakly_coercible (MOID_T * p, MOID_T * q, int deflex); +++bool a68_is_widenable (MOID_T *p, MOID_T *q); +++MOID_T *a68_absorb_related_subsets (MOID_T *m); +++MOID_T *a68_depref_completely (MOID_T *p); +++MOID_T *a68_depref_once (MOID_T *p); +++MOID_T *a68_depref_rows (MOID_T *p, MOID_T *q); +++MOID_T *a68_deproc_completely (MOID_T *p); +++MOID_T *a68_derow (MOID_T *p); +++MOID_T *a68_determine_unique_mode (SOID_T *z, int deflex); +++MOID_T *a68_get_balanced_mode (MOID_T *m, int sort, bool return_depreffed, int deflex); +++MOID_T *a68_get_balanced_mode_or_no_mode (MOID_T *m, int sort, bool return_depreffed, int deflex); +++MOID_T *a68_make_series_from_moids (MOID_T *u, MOID_T *v); +++MOID_T *a68_make_united_mode (MOID_T *m); +++MOID_T *a68_pack_soids_in_moid (SOID_T *top_sl, int attribute); +++MOID_T *a68_unites_to (MOID_T *m, MOID_T *u); +++void a68_absorb_series_pack (MOID_T **p); +++void a68_absorb_series_union_pack (MOID_T **p); +++void a68_add_to_soid_list (SOID_T **root, NODE_T *where, SOID_T *soid); +++void a68_free_soid_list (SOID_T *root); +++void a68_investigate_firm_relations (PACK_T *u, PACK_T *v, bool *all, bool *some); +++void a68_make_coercion (NODE_T *l, enum a68_attribute a, MOID_T *m); +++void a68_make_depreffing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); +++void a68_make_ref_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); +++void a68_make_rowing_coercion (NODE_T *n, MOID_T *p, MOID_T *q); +++void a68_make_soid (SOID_T *s, int sort, MOID_T *type, int attribute); +++void a68_make_strong (NODE_T *n, MOID_T *p, MOID_T *q); +++void a68_make_uniting_coercion (NODE_T *n, MOID_T *q); +++void a68_make_void (NODE_T *p, MOID_T *q); +++ +++#define A68_DEPREF true +++#define A68_NO_DEPREF false +++ +++#define A68_IF_MODE_IS_WELL(n) (! ((n) == M_ERROR || (n) == M_UNDEFINED)) +++ +++/* a68-parser-scope.cc */ +++ +++void a68_scope_checker (NODE_T *p); +++ +++/* a68-parser-serial-dsa.cc */ +++ +++void a68_serial_dsa (NODE_T *p); +++ +++/* a68-parser-pragmat.cc */ +++ +++void a68_handle_pragmats (NODE_T *p); +++ +++/* a68-moids-diagnostics.cc */ +++ +++const char *a68_mode_error_text (NODE_T *n, MOID_T *p, MOID_T *q, int context, int deflex, int depth); +++void a68_cannot_coerce (NODE_T *p, MOID_T *from, MOID_T *to, int context, int deflex, int att); +++void a68_warn_for_voiding (NODE_T *p, SOID_T *x, SOID_T *y, int c); +++void a68_semantic_pitfall (NODE_T *p, MOID_T *m, int c, int u); +++ +++/* a68-low-misc.cc */ +++ +++tree a68_lower_assertion (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_jump (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_parameter (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_parameter_list (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_parameter_pack (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_operator (NODE_T *p, LOW_CTX_T ctx); +++ +++/* a68-low-moids.cc */ +++ +++void a68_lower_moids (MOID_T *m); +++void a68_set_type_moid (tree type, MOID_T *m); +++tree a68_row_elements_pointer_type (tree type); +++tree a68_row_elements_type (tree type); +++tree a68_triplet_type (void); +++ +++/* a68-low-bits.cc */ +++ +++tree a68_get_bits_skip_tree (MOID_T *m); +++tree a68_bits_width (tree type); +++tree a68_bits_maxbits (tree type); +++tree a68_bits_bin (MOID_T *m, tree val); +++tree a68_bits_abs (MOID_T *m, tree bits); +++tree a68_bits_leng (tree type, tree bits); +++tree a68_bits_shorten (tree type, tree bits); +++tree a68_bits_not (tree bits); +++tree a68_bits_and (tree bits1, tree bits2); +++tree a68_bits_ior (tree bits1, tree bits2); +++tree a68_bits_xor (tree bits1, tree bits2); +++tree a68_bits_elem (NODE_T *p, tree pos, tree bits); +++tree a68_bits_subset (tree bits1, tree bits2); +++tree a68_bits_shift (tree shift, tree bits); +++tree a68_bits_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_bits_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++ +++/* a68-low_bools.cc */ +++ +++tree a68_get_bool_skip_tree (void); +++tree a68_bool_abs (tree val); +++tree a68_bool_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_bool_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++ +++/* a68-low-ints.cc */ +++ +++tree a68_get_int_skip_tree (MOID_T *m); +++tree a68_int_maxval (tree type); +++tree a68_int_minval (tree type); +++tree a68_int_width (tree type); +++tree a68_int_sign (tree val); +++tree a68_int_abs (tree val); +++tree a68_int_shorten (MOID_T *to_mode, MOID_T *from_mode, tree val); +++tree a68_int_leng (MOID_T *to_mode, MOID_T *from_mode, tree val); +++ +++tree a68_int_plus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_minus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_mult (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_div (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_mod (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_pow (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_int_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++ +++/* a68-low-complex.cc */ +++ +++tree a68_complex_i (MOID_T *mode, tree re, tree im); +++tree a68_complex_re (tree z); +++tree a68_complex_im (tree z); +++tree a68_complex_conj (MOID_T *mode, tree z); +++tree a68_complex_widen_from_real (MOID_T *mode, tree r); +++ +++/* a68-low-posix.cc */ +++ +++tree a68_posix_setexitstatus (void); +++tree a68_posix_argc (void); +++tree a68_posix_argv (void); +++tree a68_posix_getenv (void); +++tree a68_posix_putchar (void); +++tree a68_posix_puts (void); +++tree a68_posix_fconnect (void); +++tree a68_posix_fcreate (void); +++tree a68_posix_fopen (void); +++tree a68_posix_fclose (void); +++tree a68_posix_fsize (void); +++tree a68_posix_lseek (void); +++tree a68_posix_errno (void); +++tree a68_posix_perror (void); +++tree a68_posix_strerror (void); +++tree a68_posix_getchar (void); +++tree a68_posix_fgetc (void); +++tree a68_posix_fputc (void); +++tree a68_posix_fputs (void); +++tree a68_posix_gets (void); +++tree a68_posix_fgets (void); +++ +++/* a68-low-reals.cc */ +++ +++tree a68_get_real_skip_tree (MOID_T *m); +++tree a68_real_pi (tree type); +++tree a68_real_maxval (tree type); +++tree a68_real_minval (tree type); +++tree a68_real_smallval (tree type); +++tree a68_real_width (tree type); +++tree a68_real_exp_width (tree type); +++tree a68_real_sign (tree val); +++tree a68_real_abs (tree val); +++tree a68_real_sqrt (tree val); +++tree a68_real_tan (tree type); +++tree a68_real_sin (tree type); +++tree a68_real_cos (tree type); +++tree a68_real_acos (tree type); +++tree a68_real_asin (tree type); +++tree a68_real_atan (tree type); +++tree a68_real_ln (tree type); +++tree a68_real_log (tree type); +++tree a68_real_exp (tree type); +++tree a68_real_shorten (MOID_T *to_mode, MOID_T *from_mode, tree val); +++tree a68_real_leng (MOID_T *to_mode, MOID_T *from_mode, tree val); +++tree a68_real_entier (tree val, MOID_T *to_mode, MOID_T *from_mode); +++tree a68_real_round (tree val, MOID_T *to_mode, MOID_T *from_mode); +++ +++tree a68_real_plus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_minus (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_mult (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_div (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_mod (MOID_T *m, tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_pow (MOID_T *m, MOID_T *a_mode, MOID_T *b_mode, +++ tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_real_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++ +++ +++/* a68-low-strings.cc */ +++ +++tree a68_get_string_skip_tree (void); +++tree a68_string_concat (tree str1, tree str2); +++tree a68_string_mult (tree str1, tree str2); +++tree a68_string_from_char (tree c); +++tree a68_string_cmp (tree s1, tree s2); +++char *a68_string_process_breaks (NODE_T *p, const char *str); +++ +++/* a68-low-chars.cc */ +++ +++tree a68_get_char_skip_tree (void); +++tree a68_char_max (void); +++tree a68_char_repr (NODE_T *p, tree val); +++tree a68_char_abs (tree val); +++tree a68_char_eq (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_char_ne (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_char_lt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_char_le (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_char_gt (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++tree a68_char_ge (tree a, tree b, location_t loc = UNKNOWN_LOCATION); +++ +++/* a68-low-refs.cc */ +++ +++tree a68_get_ref_skip_tree (MOID_T *m); +++ +++/* a68-low-procs.cc */ +++ +++tree a68_get_proc_skip_tree (MOID_T *m); +++ +++/* a68-low-structs.cc */ +++ +++tree a68_get_struct_skip_tree (MOID_T *m); +++ +++/* a68-low-multiples.cc */ +++ +++tree a68_get_multiple_skip_tree (MOID_T *m); +++tree a68_multiple_dimensions (tree exp); +++tree a68_multiple_num_elems (tree exp); +++tree a68_multiple_lower_bound (tree exp, tree dim); +++tree a68_multiple_upper_bound (tree exp, tree dim); +++tree a68_multiple_stride (tree exp, tree dim); +++tree a68_multiple_triplets (tree exp); +++tree a68_multiple_elements (tree exp); +++tree a68_multiple_elements_size (tree exp); +++tree a68_multiple_set_elements (tree exp, tree elements); +++tree a68_multiple_set_elements_size (tree exp, tree elements_size); +++void a68_multiple_compute_strides (tree type, size_t dim, +++ tree *lower_bounds, tree *upper_bounds, +++ tree *strides); +++tree a68_multiple_set_lower_bound (tree exp, tree dim, tree bound); +++tree a68_multiple_set_upper_bound (tree exp, tree dim, tree bound); +++tree a68_multiple_set_stride (tree exp, tree dim, tree stride); +++tree a68_row_value (tree type, size_t dim, +++ tree elements, tree elements_size, +++ tree *lower_bound, tree *upper_bound); +++tree a68_row_value_raw (tree type, tree descriptor, +++ tree elements, tree elements_size); +++tree a68_row_malloc (tree type, int dim, +++ tree elements, tree elements_size, +++ tree *lower_bound, tree *upper_bound); +++tree a68_multiple_slice (NODE_T *p, tree multiple, bool slicing_name, +++ int num_indexes, tree *indexes); +++tree a68_multiple_copy_elems (MOID_T *to_mode, tree to, tree from); +++tree a68_rows_dim (tree exp); +++tree a68_rows_value (tree multiple); +++tree a68_rows_lower_bound (tree rows, tree dim); +++tree a68_rows_upper_bound (tree rows, tree dim); +++tree a68_rows_dim_check (NODE_T *p, tree rows, tree dim); +++tree a68_multiple_dim_check (NODE_T *p, tree multiple, tree dim); +++tree a68_multiple_single_bound_check (NODE_T *p, tree dim, tree multiple, +++ tree index, bool upper_bound); +++tree a68_multiple_bounds_check (NODE_T *p, tree dim, tree multiple, +++ tree index); +++tree a68_multiple_bounds_check_equal (NODE_T *p, tree m1, tree m2); +++ +++/* a68-low-ranges.cc */ +++ +++bool a68_in_global_range (void); +++void a68_init_ranges (void); +++void a68_push_range (MOID_T *mode); +++tree a68_pop_range (void); +++tree a68_pop_range_with_finalizer (tree *finalizer); +++void a68_push_stmt_list (MOID_T *mode); +++tree a68_pop_stmt_list (void); +++void a68_push_function_range (tree fndel, tree result_type, +++ bool top_level = false); +++void a68_pop_function_range (tree body); +++void a68_push_serial_clause_range (MOID_T *clause_mode, +++ bool save_restore_stack = false); +++tree a68_pop_serial_clause_range (void); +++void a68_add_stmt (tree exp); +++void a68_add_decl (tree decl); +++void a68_add_decl_expr (tree decl_expr); +++void a68_add_completer (void); +++tree a68_range_context (void); +++tree a68_range_names (void); +++tree a68_range_stmt_list (void); +++ +++/* a68-low-runtime.cc */ +++ +++enum a68_libcall_fn +++{ +++#define DEF_A68_RUNTIME(CODE, N, T, P, F) A68_LIBCALL_ ## CODE, +++#include "a68-low-runtime.def" +++#undef DEF_A68_RUNTIME +++ A68_LIBCALL_LAST +++}; +++ +++tree a68_get_libcall (a68_libcall_fn libcall); +++tree a68_build_libcall (a68_libcall_fn libcall, tree type, int nargs, ...); +++ +++/* a68-low-clauses.cc */ +++ +++void a68_begin_serial_clause (LOW_CTX_T *ctx, MOID_T *clause_mode); +++tree a68_finish_serial_clause (LOW_CTX_T ctx, MOID_T *clause_mode, tree parent_block); +++tree a68_lower_label (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_labeled_unit (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_completer (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_initialiser_series (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_serial_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_loop_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_conformity_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_case_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_enquiry_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_conditional_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_unit_list (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_access_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_collateral_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_parallel_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_closed_clause (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_enclosed_clause (NODE_T *p, LOW_CTX_T ctx); +++ +++/* a68-low-coercions.cc */ +++ +++tree a68_lower_dereferencing (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_rowing (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_widening (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_deproceduring (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_proceduring (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_voiding (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_uniting (NODE_T *p, LOW_CTX_T ctx); +++ +++/* a68-low-decls.cc */ +++ +++tree a68_lower_mode_declaration (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_variable_declaration (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_identity_declaration (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_procedure_declaration (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_procedure_variable_declaration (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_declarer (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_declaration_list (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_priority_declaration (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_brief_operator_declaration (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_operator_declaration (NODE_T *p, LOW_CTX_T ctx); +++ +++/* a68-low.cc */ +++ +++tree a68_lower_top_tree (NODE_T *p); +++tree a68_lower_tree (NODE_T *p, LOW_CTX_T ctx); +++tree a68_make_identity_declaration_decl (NODE_T *identifier, const char *module_name = NULL, +++ bool indicant = false, bool external = false, +++ const char *extern_symbol = NULL); +++tree a68_make_variable_declaration_decl (NODE_T *identifier, const char *module_name = NULL, +++ bool external = false, +++ const char *extern_symbol = NULL); +++tree a68_make_proc_identity_declaration_decl (NODE_T *identifier, const char *module_name = NULL, +++ bool indicant = false, bool external = false, +++ const char *extern_symbol = NULL); +++tree a68_make_anonymous_routine_decl (MOID_T *mode); +++tree a68_get_skip_tree (MOID_T *m); +++tree a68_get_empty (void); +++void a68_ref_counts (tree exp, MOID_T *m, int *num_refs, int *num_pointers); +++tree a68_consolidate_ref (MOID_T *m, tree expr); +++tree a68_lower_alloca (tree type, tree size); +++tree a68_lower_malloc (tree type, tree size); +++tree a68_checked_indirect_ref (NODE_T *p, tree exp, MOID_T *exp_mode); +++tree a68_low_deref (tree exp, NODE_T *p); +++tree a68_low_dup (tree exp, bool use_heap = false); +++tree a68_low_ascription (MOID_T *mode, tree lhs, tree rhs); +++tree a68_low_assignation (NODE_T *p, tree lhs, MOID_T *lhs_mode, tree rhs, MOID_T *rhs_mode); +++tree a68_lower_memcpy (tree dst, tree src, tree size); +++tree a68_lower_tmpvar (const char *name, tree type, tree init); +++tree a68_get_mangled_identifier (const char *name, +++ const char *mname = NULL, bool internal = false, +++ bool numbered = false); +++tree a68_get_mangled_indicant (const char *name, +++ const char *mname = NULL, bool internal = false, +++ bool numbered = false); +++char *a68_demangle_symbol (const char *mname, const char *symbol, +++ bool is_operator = false); +++tree a68_low_toplevel_func_decl (const char *name, tree fntype); +++tree a68_low_func_param (tree fndecl, const char *name, tree type); +++ +++/* a68-low-builtins.cc */ +++ +++void a68_install_builtins (); +++ +++/* a68-low-unions.c */ +++ +++int a68_united_mode_index (MOID_T *p, MOID_T *q); +++tree a68_get_union_skip_tree (MOID_T *m); +++tree a68_union_overhead (tree exp); +++tree a68_union_set_overhead (tree exp, tree overhead); +++tree a68_union_cunion (tree exp); +++tree a68_union_alternative (tree exp, int index); +++tree a68_union_value (MOID_T *mode, tree exp, MOID_T *exp_mode); +++tree a68_union_translate_overhead (MOID_T *from, tree from_overhead, MOID_T *to); +++bool a68_union_contains_mode (MOID_T *p, MOID_T *q); +++ +++/* a68-low-units.cc */ +++ +++tree a68_lower_identifier (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_denotation (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_denotation (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_skip (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_nihil (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_empty (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_identity_relation (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_logic_function (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_primary (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_cast (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_secondary (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_slice (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_selection (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_formula (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_monadic_formula (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_tertiary (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_assignation (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_routine_text (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_generator (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_call (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_unit (NODE_T *p, LOW_CTX_T ctx); +++ +++/* a68-low-generator.c */ +++ +++tree a68_low_generator (NODE_T *declarer, MOID_T *mode, +++ bool heap, LOW_CTX_T ctx); +++tree a68_low_gen (MOID_T *m, size_t nbuonds, tree *bounds, +++ bool use_heap); +++ +++/* a68-low-prelude.c */ +++ +++tree a68_lower_unimplemented (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_assert (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_intabs2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_realabs2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_boolabs2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_charabs2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_not2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_and3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_or3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_xor3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_confirm2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_negate2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_sign2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_realsign2 (NODE_T *p, LOW_CTX_T ctx); +++ +++tree a68_lower_plus_int (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_plus_real (NODE_T *p, LOW_CTX_T ctx); +++ +++tree a68_lower_minus_int (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_minus_real (NODE_T *p, LOW_CTX_T ctx); +++ +++tree a68_lower_mult_int (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_mult_real (NODE_T *p, LOW_CTX_T ctx); +++ +++tree a68_lower_multab3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_div3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_divab3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_rdiv3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_over3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_mod3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_int_eq3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_int_ne3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_int_lt3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_int_le3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_int_gt3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_int_ge3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_real_eq3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_real_ne3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_real_lt3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_real_le3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_real_gt3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_real_ge3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_char_eq3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_char_ne3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_char_lt3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_char_le3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_char_gt3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_char_ge3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bool_eq3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bool_ne3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_plusab3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_minusab3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_overab3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_modab3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_upb2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_upb3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_lwb2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_lwb3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_elems2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_elems3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_entier2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_round2 (NODE_T *p, LOW_CTX_T ctx); +++ +++tree a68_lower_pow_int (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_pow_real (NODE_T *p, LOW_CTX_T ctx); +++ +++tree a68_lower_odd2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_eq3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_ne3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_lt3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_le3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_gt3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_ge3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_plus3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_char_plus3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_plusab3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_mult3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_char_mult3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_multab3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_string_plusto3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_repr2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitelem3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bin2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitabs2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitleng2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitshorten2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitnot2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitand3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitior3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitxor3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_shl3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_shr3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bit_eq3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bit_ne3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bit_le3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bit_ge3 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_maxint (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_minint (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_maxbits (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_maxreal (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_minreal (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_smallreal (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitswidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longbitswidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longlongbitswidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_shortbitswidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_shortshortbitswidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_intwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longintwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longlongintwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_shortintwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_shortshortintwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_realwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longrealwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longlongrealwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_expwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longexpwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longlongexpwidth (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_pi (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_nullcharacter (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_flip (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_flop (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_errorchar (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_blank (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_eofchar (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_replacementchar (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_intlengths (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_intshorths (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitslengths (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_bitsshorths (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_reallengths (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_realshorths (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_infinity (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_minusinfinity (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_maxabschar (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_sqrt (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_sqrt (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_sqrt (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_tan (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_tan (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_tan (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_sin (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_sin (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_sin (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_cos (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_cos (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_cos (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_acos (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_acos (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_acos (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_asin (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_asin (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_asin (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_atan (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_atan (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_atan (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_ln (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_ln (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_ln (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_log (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_log (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_log (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_exp (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_exp (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_long_long_exp (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_reali (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longreali (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longlongreali (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_inti (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longinti (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longlonginti (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_re2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_im2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_conj2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_shortenint2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_lengint2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_lengreal2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_shortenreal2 (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_random (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longrandom (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_longlongrandom (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_setexitstatus (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixargc (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixargv (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixputchar (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixputs (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfputc (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfputs (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixgetenv (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfconnect (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfopen (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfcreate (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfclose (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfsize (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixlseek (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixseekcur (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixseekend (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixseekset (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixstdinfiledes (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixstdoutfiledes (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixstderrfiledes (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfileodefault (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfileordwr (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfileordonly (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfileowronly (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfileotrunc (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixerrno (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixperror (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixstrerror (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixgetchar (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfgetc (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixgets (NODE_T *p, LOW_CTX_T ctx); +++tree a68_lower_posixfgets (NODE_T *p, LOW_CTX_T ctx); +++ +++/* a68-exports.cc */ +++ +++MOIF_T *a68_moif_new (const char *module_name); +++void a68_moif_free (MOIF_T *moif); +++void a68_do_exports (NODE_T *p); +++ +++/* a68-imports.cc */ +++ +++MOIF_T *a68_open_packet (const char *module); +++ +++/* a68-parser-debug.cc */ +++ +++void a68_dump_parse_tree (NODE_T *p, bool tables = false, bool levels = false); +++void a68_dump_modes (MOID_T *m); +++void a68_dump_moif (MOIF_T *moif); +++ +++#endif /* ! __A68_H__ */ ++--- /dev/null +++++ b/src/gcc/algol68/a68spec.cc ++@@ -0,0 +1,222 @@ +++/* a68spec.c -- Specific flags and argument handling of the Algol 68 front end. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ You should have received a copy of the GNU General Public License along with +++ GCC; see the file COPYING3. If not see . */ +++ +++#include "config.h" +++#include "system.h" +++#include "coretypes.h" +++#include "opt-suggestions.h" +++#include "gcc.h" +++#include "tm.h" +++#include "opts.h" +++ +++/* satisfy intellisense */ +++#include "options.h" +++ +++/* How to link with libga68. */ +++enum libga68_link_mode +++{ +++ LIBGA68_NOLINK, +++ LIBGA68_STATIC, +++ LIBGA68_DYNAMIC +++}; +++ +++static enum libga68_link_mode libga68_link = LIBGA68_STATIC; +++ +++/* This bit is set if we saw a `-xfoo' language specification. */ +++#define LANGSPEC (1 << 1) +++/* This bit is set if they did `-lc'. */ +++#define WITHLIBC (1 << 2) +++/* Skip this option. */ +++#define SKIPOPT (1 << 3) +++ +++void +++lang_specific_driver (struct cl_decoded_option **in_decoded_options, +++ unsigned int *in_decoded_options_count, +++ int *in_added_libraries) +++{ +++ unsigned int i, j; +++ +++ /* The new argument list will be contained in this. */ +++ struct cl_decoded_option *new_decoded_options; +++ +++ /* "-lc" if it appears on the command line. */ +++ const struct cl_decoded_option *saw_libc = 0; +++ +++ /* An array used to flag each argument that needs a bit set for +++ LANGSPEC or WITHLIBC. */ +++ int *args; +++ +++ /* True if we saw -static. */ +++ int static_link = 0; +++ +++ /* True if we should add -shared-libgcc to the command-line. */ +++ int shared_libgcc = 1; +++ +++ /* The total number of arguments with the new stuff. */ +++ unsigned int argc; +++ +++ /* The argument list. */ +++ struct cl_decoded_option *decoded_options; +++ +++ /* The number of libraries added in. */ +++ int added_libraries; +++ +++ /* The total number of arguments with the new stuff. */ +++ int num_args = 1; +++ +++ /* Whether the -o option was used. */ +++ // bool saw_opt_o = false; +++ +++ argc = *in_decoded_options_count; +++ decoded_options = *in_decoded_options; +++ added_libraries = *in_added_libraries; +++ +++ args = XCNEWVEC (int, argc); +++ +++ for (i = 1; i < argc; i++) +++ { +++ const char *arg = decoded_options[i].arg; +++ +++ switch (decoded_options[i].opt_index) +++ { +++ case OPT__help: +++ case OPT__help_: +++ /* Let gcc.cc handle this. */ +++ *in_added_libraries = 0; +++ return; +++ case OPT_c: +++ case OPT_E: +++ case OPT_M: +++ case OPT_MM: +++ case OPT_fsyntax_only: +++ case OPT_S: +++ libga68_link = LIBGA68_NOLINK; +++ break; +++ +++ case OPT_l: +++ if (strcmp (arg, "c") == 0) +++ args[i] |= WITHLIBC; +++ break; +++ +++ case OPT_o: +++ //saw_opt_o = true; +++ break; +++ +++ case OPT_static: +++ static_link = 1; +++ break; +++ +++ case OPT_static_libgcc: +++ shared_libgcc = 0; +++ break; +++ +++ case OPT_static_libga68: +++ libga68_link = LIBGA68_STATIC; +++#ifdef HAVE_LD_STATIC_DYNAMIC +++ /* Remove -static-libga68 from the command only if target supports +++ LD_STATIC_DYNAMIC. When not supported, it is left in so that a +++ back-end target can use outfile substitution. */ +++ args[i] |= SKIPOPT; +++#endif +++ break; +++ +++ case OPT_shared_libga68: +++ libga68_link = LIBGA68_DYNAMIC; +++ args[i] |= SKIPOPT; +++ break; +++ +++ case OPT_SPECIAL_input_file: +++ break; +++ } +++ } +++ +++ /* There's no point adding -shared-libgcc if we don't have a shared +++ libgcc. */ +++#ifndef ENABLE_SHARED_LIBGCC +++ shared_libgcc = 0; +++#endif +++ +++ /* Make sure to have room for the trailing NULL argument. +++ - libga68 adds `-Bstatic -lga68 -Bdynamic' */ +++ num_args = argc + shared_libgcc + 1 * 5 + 10; +++ new_decoded_options = XNEWVEC (struct cl_decoded_option, num_args); +++ +++ i = 0; +++ j = 0; +++ +++ /* Copy the 0th argument, i.e., the name of the program itself. */ +++ new_decoded_options[j++] = decoded_options[i++]; +++ +++ /* NOTE: We start at 1 now, not 0. */ +++ while (i < argc) +++ { +++ new_decoded_options[j] = decoded_options[i]; +++ +++ if (!saw_libc && (args[i] & WITHLIBC)) +++ { +++ --j; +++ saw_libc = &decoded_options[i]; +++ } +++ +++ if ((args[i] & SKIPOPT) != 0) +++ --j; +++ +++ i++; +++ j++; +++ } +++ +++ if (saw_libc) +++ new_decoded_options[j++] = *saw_libc; +++ if (shared_libgcc && !static_link) +++ generate_option (OPT_shared_libgcc, NULL, 1, CL_DRIVER, +++ &new_decoded_options[j++]); +++ +++ /* Add `-lga68 -lm' if we haven't already done so. */ +++#ifdef HAVE_LD_STATIC_DYNAMIC +++ if (libga68_link == LIBGA68_STATIC && !static_link) +++ { +++ generate_option (OPT_Wl_, LD_STATIC_OPTION, 1, CL_DRIVER, +++ &new_decoded_options[j++]); +++ added_libraries++; /* The driver calls add_infile while handling -Wl */ +++ } +++#endif +++ generate_option (OPT_l, +++ "ga68", 1, +++ CL_DRIVER, &new_decoded_options[j++]); +++ added_libraries++; +++#ifdef HAVE_LD_STATIC_DYNAMIC +++ if (libga68_link == LIBGA68_STATIC && !static_link) +++ { +++ generate_option (OPT_Wl_, LD_DYNAMIC_OPTION, 1, CL_DRIVER, +++ &new_decoded_options[j++]); +++ added_libraries++; /* The driver calls add_infile while handling -Wl */ +++ } +++#endif +++ *in_decoded_options_count = j; +++ *in_decoded_options = new_decoded_options; +++ *in_added_libraries = added_libraries; +++} +++ +++/* Called before linking. Returns 0 on success and -1 on failure. */ +++int +++lang_specific_pre_link (void) +++{ +++ if (libga68_link != LIBGA68_NOLINK) +++ do_spec ("%:include(libga68.spec)"); +++ return 0; +++} +++ +++/* Number of extra output files that lang_specific_pre_link may generate. */ +++int lang_specific_extra_outfiles = 0; /* Not used for Algol68. */ ++--- /dev/null +++++ b/src/gcc/algol68/algol68-target.def ++@@ -0,0 +1,52 @@ +++/* Target hook definitions for the Algol68 front end. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ This program is free software; you can redistribute it and/or modify it +++ under the terms of the GNU General Public License as published by the +++ Free Software Foundation; either version 3, or (at your option) any +++ later version. +++ +++ This program is distributed in the hope that it will be useful, +++ but WITHOUT ANY WARRANTY; without even the implied warranty of +++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++ GNU General Public License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with this program; see the file COPYING3. If not see +++ . */ +++ +++/* See target-hooks-macros.h for details of macros that should be +++ provided by the including file, and how to use them here. */ +++ +++#include "target-hooks-macros.h" +++ +++#undef HOOK_TYPE +++#define HOOK_TYPE "Algol68 Target Hook" +++ +++HOOK_VECTOR (TARGETALGOL68M_INITIALIZER, gcc_targetalgol68m) +++ +++#undef HOOK_PREFIX +++#define HOOK_PREFIX "TARGET_" +++ +++/* Environmental CPU info and features (e.g. endianness, pointer size) relating +++ to the target CPU. */ +++DEFHOOK +++(algol68_cpu_info, +++ "Declare all environmental CPU info and features relating to the target CPU\n\ +++using the function @code{algol68_add_target_info}, which takes a string\n\ +++representing the feature key and a string representing the feature value.\n\ +++Configuration pairs predefined by this hook apply to all files that are being\n\ +++compiled.", +++ void, (void), +++ hook_void_void) +++ +++/* Environmental OS info relating to the target OS. */ +++DEFHOOK +++(algol68_os_info, +++ "Similar to @code{TARGET_ALGOL68_CPU_INFO}, but is used for configuration info\n\ +++relating to the target operating system.", +++ void, (void), +++ hook_void_void) +++ +++/* Close the 'struct gcc_targetalgol68m' definition. */ +++HOOK_VECTOR_END (C90_EMPTY_HACK) ++--- /dev/null +++++ b/src/gcc/algol68/config-lang.in ++@@ -0,0 +1,32 @@ +++# config-lang.in -- Top level configure fragment for gcc Algol 68 frontend. +++ +++# Copyright (C) 2025 Free Software Foundation, Inc. +++ +++# GCC is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3, or (at your option) +++# any later version. +++ +++# GCC is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++ +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# Configure looks for the existence of this file to auto-config each language. +++# We define several parameters used by configure: +++# +++# language - name of language as it would appear in $(LANGUAGES) +++# compilers - value to add to $(COMPILERS) +++ +++language="algol68" +++compilers="a681\$(exeext)" +++gtfiles="\$(srcdir)/algol68/a68-types.h \$(srcdir)/algol68/a68.h \$(srcdir)/algol68/a68-lang.cc \$(srcdir)/algol68/a68-low-ranges.cc" +++ +++target_libs="target-libga68" +++ +++# Do not build by default. +++build_by_default="no" ++--- /dev/null +++++ b/src/gcc/algol68/ga68-exports.pk ++@@ -0,0 +1,297 @@ +++/* ga68-exports.pk - GCC Algol 68 exports format. +++ +++ Copyright (C) 2025 Jose E. Marchesi +++ +++ This program is free software: you can redistribute it and/or modify +++ it under the terms of the GNU General Public License as published by +++ the Free Software Foundation, either version 3 of the License, or +++ (at your option) any later version. +++ +++ This program is distributed in the hope that it will be useful, +++ but WITHOUT ANY WARRANTY; without even the implied warranty of +++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++ GNU General Public License for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with this program. If not, see . */ +++ +++/* GNU Algol 68 source files (compilation units, or "packets") may +++ contain either a single particular-program or a set of one or more +++ module definitions. +++ +++ When compiling a compilation unit containing module definitions, +++ the ga68 compiler emits an ELF section called .a68_exports along +++ with the usual compiled object code. This section contains +++ information that reflects the PUBlicized identifiers exported by +++ module definitions: modes, operators, procedures, identifiers, +++ other module definitions, etc. This interface is complete enough +++ to allow other compilation units to access these declarations. +++ +++ The information that is in a module interface is defined in the MR +++ document using a sort of grammar. It is: +++ +++ module interface : +++ unique code & external symbol & hole description option & +++ mode table & definition summary. +++ +++ definition summary : +++ set of definition groups. +++ +++ definition group : +++ module identity & set of definition extracts. +++ +++ definition extract : +++ mode extract ; +++ operation extract ; +++ priority extract ; +++ identifier extract ; +++ definition module extract ; +++ invocation extract. +++ +++ mode extract : +++ mode marker & mode indication & mode & mdextra. +++ +++ operation extract : +++ operation marker & operator & mode & mdextra. +++ +++ priority extract : +++ priority marker & operator & integer priority & mdextra. +++ +++ identifier extract : +++ identifier marker & identifier & mode & mdextra. +++ +++ definition module extract : +++ definition module marker & definition module indication & +++ definition summary & mdextra. +++ +++ invocation extract : +++ module identity. +++ +++ mdextra : +++ extra machine-dependent information. +++ +++ This pickle precisely describes how the module interfaces are +++ encoded in the .a68_exports ELF section, which are of type PROGBITS +++ and thus are concatenated by ELF linkers. This works well because +++ each compilation unit may contain several module definitions, but a +++ module definition cannot be splitted among several compilation +++ units. */ +++ +++/* The exports format is versioned. A bump in the format version +++ number indicates the presence of a backward incompatibility. This +++ is important because .ga68_exports section may contain module +++ definition interfaces having different versions, so compilers and +++ tools designed to operate on version "n" must ignore, or error on, +++ modules definition interfaces with later versions. */ +++ +++var ga68_exports_ver = 1; +++ +++/* References other sections and the .ga68_export section itself are +++ realized via link-time relocations: +++ +++ References to code addresses are relative to some text section. +++ References to data in .ga68_export are relative to the start of the +++ section. */ +++ +++load elf; +++ +++type ga68_text_reloc = Elf64_Addr; +++type ga68_data_reloc = Elf64_Addr; +++ +++/* Strings are encoded in-place and are both pre-sized and +++ NULL-terminated. This is to ease reading them quickly and +++ efficiently. Note that the size includes the final NULL +++ character. */ +++ +++type ga68_str = +++ struct +++ { +++ offset,B> len; +++ string s: s'size == len; +++ }; +++ +++/* Each module definition interface includes a table of modes, that +++ contains not only the modes for which mode extracts exist, but also +++ the indirectly referred modes: since Algol 68 used structural +++ equivalence of modes, each mode has to be defined fully. The +++ encoding therefore tries to be as compact as possible while +++ allowing being read with a reasonable level of performance and +++ convenience. */ +++ +++var GA68_MODE_UNKNOWN = 0UB, +++ GA68_MODE_VOID = 1UB, +++ GA68_MODE_INT = 2UB, +++ GA68_MODE_REAL = 3UB, +++ GA68_MODE_BITS = 4UB, +++ GA68_MODE_BYTES = 5UB, +++ GA68_MODE_CHAR = 6UB, +++ GA68_MODE_BOOL = 7UB, +++ GA68_MODE_CMPL = 8UB, +++ GA68_MODE_ROW = 9UB, +++ GA68_MODE_STRUCT = 10UB, +++ GA68_MODE_UNION = 11UB, +++ GA68_MODE_NAME = 12UB, +++ GA68_MODE_PROC = 13UB, +++ GA68_MODE_STRING = 14UB, +++ GA68_MODE_FLEX = 15UB; +++ +++type ga68_mode = +++ struct +++ { +++ uint<8> kind : kind in [GA68_MODE_VOID, GA68_MODE_INT, +++ GA68_MODE_REAL, GA68_MODE_BITS, +++ GA68_MODE_BYTES, GA68_MODE_CHAR, +++ GA68_MODE_CMPL, GA68_MODE_ROW, +++ GA68_MODE_STRUCT, GA68_MODE_UNION, +++ GA68_MODE_NAME, GA68_MODE_PROC, +++ GA68_MODE_FLEX]; +++ +++ union +++ { +++ int<8> sizety : kind in [GA68_MODE_INT, GA68_MODE_REAL, +++ GA68_MODE_CMPL, GA68_MODE_BITS, +++ GA68_MODE_BYTES]; +++ struct +++ { +++ ga68_data_reloc mode; +++ } name : kind == GA68_MODE_NAME || kind == GA68_MODE_FLEX; +++ +++ struct +++ { +++ type triplet = struct { ga68_text_reloc lb; ga68_text_reloc ub; }; +++ +++ uint<8> ndims; +++ triplet[ndims] dims; +++ ga68_data_reloc row_of; +++ } row : kind == GA68_MODE_ROW; +++ +++ struct +++ { +++ type field = struct { ga68_data_reloc mode; ga68_str name; }; +++ +++ uint<16> nfields; +++ field[nfields] fields; +++ } sct : kind == GA68_MODE_STRUCT; +++ +++ struct +++ { +++ uint<8> nmodes; +++ ga68_data_reloc[nmodes] modes; +++ } uni : kind == GA68_MODE_UNION; +++ +++ struct +++ { +++ type arg = struct { ga68_data_reloc mode; ga68_str name; }; +++ +++ ga68_data_reloc ret_mode; +++ uint<8> nargs; +++ arg[nargs] args; +++ } routine : kind == GA68_MODE_PROC; +++ +++ struct { } _ : kind in [GA68_MODE_UNKNOWN, GA68_MODE_VOID, +++ GA68_MODE_CHAR, GA68_MODE_BOOL, +++ GA68_MODE_STRING]; +++ +++ } data; +++ }; +++ +++/* Each module definition interface includes a table of "extracts", +++ one per identifier PUBlicized by the module definition. +++ +++ Mode extracts represent declarations of mode indications, like for +++ example `mode Foo = struct (int i, real r)'. +++ +++ Identifier extracts represent declarations of constans, variables, +++ procedures and operators. Examples are `real pi = 3.14', `int +++ counter', `proc double = (int a) int : a * 2' and `op // = (int a, +++ b) int: a % b'. +++ +++ Priority extracts represent declarations of priorities for dyadic +++ operators, like for example `prio // = 9'. +++ +++ Finally, module extracts represent the PUBlication of some other +++ module definition. For example, the module definition `mode Foo = +++ access A, B def ... fed' will include module extracts for both "A" +++ and "B" in its interface. +++ +++ Some of the extracts may need some additional compiler-specific or +++ machine-specific information, whose contents are not specified +++ here. */ +++ +++var GA68_EXTRACT_MODU = 0UB, +++ GA68_EXTRACT_IDEN = 1UB, +++ GA68_EXTRACT_MODE = 2UB, +++ GA68_EXTRACT_PRIO = 3UB, +++ GA68_EXTRACT_OPER = 4UB; +++ +++type ga68_extract = +++ struct +++ { +++ Elf64_Off extract_size; +++ union +++ { +++ struct +++ { +++ uint<8> mark : mark == GA68_EXTRACT_MODU; +++ ga68_str module_indication; +++ } module; +++ +++ struct +++ { +++ uint<8> mark : mark == GA68_EXTRACT_IDEN; +++ ga68_str name; +++ ga68_data_reloc mode; +++ } identifier; +++ +++ struct +++ { +++ uint<8> mark : mark == GA68_EXTRACT_MODE; +++ ga68_str mode_indication; +++ ga68_data_reloc mode; +++ } mode; +++ +++ struct +++ { +++ uint<8> mark : mark == GA68_EXTRACT_PRIO; +++ ga68_str opname; +++ uint<8> prio; +++ } prio; +++ +++ struct +++ { +++ uint<8> mark : mark == GA68_EXTRACT_OPER; +++ ga68_str opname; +++ ga68_mode mode; +++ } oper; +++ +++ } extract : extract'size == extract_size; +++ +++ Elf64_Off mdextra_size; +++ uint<8>[mdextra_size] data; +++ }; +++ +++/* The contents of the .ga68_exports section can be mapped as a +++ ga68_module[sec.sh_size] */ +++ +++type ga68_module = +++ struct +++ { +++ uint<8>[2] magic : magic == [0x0aUB, 0xadUB]; +++ uint<16> version : version == ga68_exports_ver; +++ +++ /* Module identification. +++ Add a hash or UUID? */ +++ ga68_str name; +++ +++ /* Entry points. */ +++ ga68_str prelude; +++ ga68_str poslude; +++ +++ /* Table of modes. */ +++ Elf64_Off modes_size; +++ ga68_mode[modes_size] modes; +++ +++ /* Table of extracts. */ +++ Elf64_Off extracts_size; +++ ga68_extract[extracts_size] extracts; +++ }; ++--- /dev/null +++++ b/src/gcc/algol68/ga68-internals.texi ++@@ -0,0 +1,383 @@ +++\input texinfo @c -*-texinfo-*- +++@c %**start of header +++@setfilename ga68-internals.info +++ +++@include gcc-common.texi +++ +++@synindex tp cp +++ +++@settitle GNU Algol 68 Compiler Internals +++ +++@c %**end of header +++ +++@c %** start of document +++ +++@copying +++Copyright @copyright{} 2025 Jose E. Marchesi. +++ +++Permission is granted to copy, distribute and/or modify this document +++under the terms of the GNU Free Documentation License, Version 1.3 or +++any later version published by the Free Software Foundation; with no +++Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A +++copy of the license is included in the section entitled ``GNU Free +++Documentation License''. +++@end copying +++ +++@ifinfo +++@dircategory Software development +++@direntry +++* ga68-internals: (ga68-internals). The GNU Algol 68 Compiler Internals. +++@end direntry +++This file documents the internals of the GNU Algol 68 +++compiler, (@command{ga68}). +++ +++@insertcopying +++@end ifinfo +++ +++@c Macro for bold-tags. In TeX and HTML they expand to proper bold words, +++@c in other formats it resorts to upper stropping. +++@iftex +++@macro B{tag} +++@strong{\tag\} +++@end macro +++@end iftex +++ +++@ifhtml +++@macro B{tag} +++@strong{\tag\} +++@end macro +++@end ifhtml +++ +++@ifnottex +++@ifnothtml +++@macro B{tag} +++@sc{\tag\} +++@end macro +++@end ifnothtml +++@end ifnottex +++ +++@setchapternewpage odd +++@titlepage +++@title GNU Algol 68 Internals +++@versionsubtitle +++@author Jose E. Marchesi +++@page +++@vskip 0pt plus 1filll +++@sp 1 +++@insertcopying +++@end titlepage +++ +++@summarycontents +++@contents +++ +++@page +++ +++@ifnottex +++@node Top +++@top Introduction +++@cindex Introduction +++ +++This manual documents (some of) the internals of @command{ga68}, the +++GNU Algol 68 compiler. +++ +++@menu +++* Scope Checking:: Scope checking in assignation. +++* Storage Management:: Management of run-time storage. +++* Lowering Declarations:: Mapping external objects to internal objects. +++* Lowering Assignations:: Superceding the value referred by a name. +++* GNU Free Documentation License:: +++ How you can copy and share this manual. +++* Index:: Index of this documentation. +++@end menu +++@end ifnottex +++ +++@c --------------------------------------------------------------------- +++@c Scope Checking +++@c --------------------------------------------------------------------- +++ +++@node Scope Checking +++@chapter Scope Checking +++ +++Static scope checking: pass. +++Dynamic scope checking: run-time call. +++ +++@c --------------------------------------------------------------------- +++@c Storage Management +++@c --------------------------------------------------------------------- +++ +++@node Storage Management +++@chapter Storage Management +++ +++This chapter discusses the run-time management of internal objects in +++Algol 68. +++ +++First, a conceptual model is presented that describes the restrictions +++as mandated by the Report. The storage implied by the lowered GENERIC +++entities, as described in the previous chapter, shall match the +++storage of the conceptual model. +++ +++@menu +++* Storage Structure of Objects:: +++* Copying of Objects:: +++* The Stack:: +++* The Heap:: +++@end menu +++ +++@node Storage Structure of Objects +++@section Storage Structure of Objects +++ +++The internal objects which are the values in an Algol 68 program may +++consist on a hierarchy of memory locations, which may not be +++contiguous. This hierarchy of memory locations is the storage +++structure of the object, and is not concerned by the particular +++bit-patterns stored. +++ +++Simple values. +++ +++Names. +++ +++Multiple values. +++ +++Structured values. +++ +++Values of united modes. +++ +++@node Copying of Objects +++@section Copying of Objects +++ +++@node The Stack +++@section The Stack +++ +++XXX +++ +++@node The Heap +++@section The Heap +++ +++@itemize @minus +++@item +++A value that has rows and gets returned by a procedure shall be +++allocated on the stack. +++@item +++A copy of the right hand side is made before assigning it to the left +++hand side. This copy is always allocated in the heap, because the +++scope of the left hand side may be older than the scope of the right +++hand side. This happens when assigning to a global variable. +++@item +++A trimmer of a name. This is because the trimmed multiple may be +++allocated on the heap, and the trim shall have the same scope than the +++trimmed multiple. +++@end itemize +++ +++@c --------------------------------------------------------------------- +++@c Internal Objects +++@c --------------------------------------------------------------------- +++ +++@node Lowering Declarations +++@chapter Lowering Declarations +++ +++This chapter describes the mapping between external objects declared +++in identity and variable declarations and the internal objects that +++are the result of lowering the external objects in the parse tree into +++GENERIC entities. +++ +++@menu +++* Identity Declarations:: @code{@B{amode} xxx = init value} +++* Variable Declarations:: @code{@B{amode} xxx [:= init value]} +++* Procedure Identity Declarations:: @code{@B{proc} xxx = routine text} +++* Procedure Variable Declarations:: @code{@B{proc} xxx := routine text} +++* Operator Brief Declarations:: @code{@B{op} @B{xxx} = routine text} +++* Operator Declarations:: @code{@B{op}(...)@B{amode} @B{xxx} = routine text} +++* Applied Identifiers:: +++@end menu +++ +++@node Identity Declarations +++@section Identity Declarations +++ +++An identity declaration with the form: +++ +++@example +++@B{c} part 1 @B{c} +++@B{amode} defining_identifier = unit; +++@B{c} part 2 @B{c} +++@end example +++ +++@noindent +++Introduces the identifier @code{defining_identifier} in the current +++range and ascribes a copy of the value yielded by @code{unit} to it. +++Once established, the relationship between an identifier and the value +++ascribed to it is constant and it cannot change during the reach of +++the identifier. The ascribed unit can be any unitary clause, and its +++elaboration can be arbitrarily complicated. In particular, it is not +++required to be a compile-time constant. @code{@B{amode}} determines +++the mode of the value yielded by the unit, and the unit is elaborated +++in a strong context. +++ +++An identity declaration like the above, where @code{@B{amode}} is not +++a procedure mode (@xref{Procedure Identity Declarations}) is lowered +++into: +++ +++@itemize @bullet +++@item +++A @code{VAR_DECL} with name @code{defining_identifier}, type +++@code{CTYPE (@B{amode})} and initial value @code{@B{amode}(@B{skip})} +++that gets chained into the declarations list of the current block. +++@item +++A @code{DECL_EXPR} that gets prepended in the current statement's list. +++@item +++A @code{MODIFY_EXPR} setting the @code{VAR_DECL} to a copy of the +++lowering of @code{unit}, @code{a68_low_dup (unit)}. +++@end itemize +++ +++@noindent +++Schematically: +++ +++@example +++ BIND_EXPR (BLOCK (DECLS: ... -> VAR_DECL (defining_identifier, INITIAL=SKIP))) +++ STMT_LIST +++ | +++ +-- DECL_EXPR (defining_identifier) +++ | +++ | @B{c} part 1 @B{c} +++ | +++ +-- MODIFY_EXPR (defining_identifier, unit) +++ | +++ | @B{c} part 2 @B{c} +++ | +++@end example +++ +++The reason why the @code{VAR_DECL} is initialized to @code{@B{skip}} +++and then set to the initial @code{unit} specified in the source line +++is that the Report specifies that Algol 68 identifiers can be used +++before they are defined provided we are in the right range, but in +++that case the value ascribed to the identifier is ``undefined''. +++Accessing an ``undefined'' value in traditional Algol 68 +++implementations would lead to a run-time error (these implementations +++used a special value to denote undefined, such as @code{F00L}) but in +++GNU Algol 68 the ``undefined'' value is always @code{@B{skip}} which, +++if not terribly useful in most cases, is at least well defined in this +++implementation and doesn't lead to an error. +++ +++Identity declarations are the Algol 68 way of defining constants, and +++one may wonder why we are not using @code{CONST_DECL} instead of +++@code{VAR_DECL}. The reason is that @code{CONST_DECL} is really only +++intended for integral values in C enums, and the @code{@B{amode}} in +++the identity declaration can really be any mode, from simple integers +++or characters to fairly complicated structured modes, which may +++involve also rows and united modes. Whether the @code{VAR_DECL} will +++lead to allocating storage on the stack depends on the nature of the +++mode and the way the identifier is used in the program: whether its +++address is taken, etc. +++ +++@node Variable Declarations +++@section Variable Declarations +++ +++A variable declaration with the form: +++ +++@example +++[@B{loc}|@B{heap}] @B{amode} defining identifier [:= unit]; +++@end example +++ +++@noindent +++Is in principle equivalent to the identity declaration: +++ +++@example +++@B{ref} @B{amode} defining identifier = [@B{loc}|@B{heap}] @B{amode}; +++@end example +++ +++@noindent +++In both cases the object ascribed to the defining identifier is of +++mode @code{@B{ref} @B{amode}}. The ascribed object is a name which is +++created by a generator implied in the actual declarer in the variable +++declaration case, and an explicit generator in the initialization +++expression in the identity declaration case. +++ +++However, in this compiler these two cases are handled differently in +++order to reduce the amount of both indirect addressing and of storage: +++ +++@itemize @bullet +++@item +++The variable declaration @code{[@B{loc}|@B{heap}] @B{amode} foo} +++lowers into a @code{VAR_DECL} with type @code{CTYPE (amode)} provided +++that the generator is @code{@B{loc}} and that the type contains no +++rows. Accessing the variable will then involve direct addressing, and +++when its address is required an @code{ADDR_EXPR} shall be used. +++@item +++The identity declaration @code{@B{ref} @B{amode} foo = @B{loc} +++@B{amode}} lowers into a @code{VAR_DECL} with type @code{*CTYPE +++(amode)}. Accessing the variable will then involve indirect +++addressing: it is effectively a pointer. +++@end itemize +++ +++This optimization introduces the complication that an expression (the +++@code{VAR_DECL}) whose type is TYPE can appear in a place where *TYPE +++is expected, depending on the context and the r-value and l-value +++interpretation of the @code{VAR_DECL}. The function +++@code{a68_consolidate_ref} is used in several parts of the lowering +++pass to guarantee a given name is an address regardless of how it was +++initialized. +++ +++@node Procedure Identity Declarations +++@section Procedure Identity Declarations +++ +++XXX +++ +++@node Procedure Variable Declarations +++@section Procedure Variable Declarations +++ +++XXX +++ +++@node Operator Brief Declarations +++@section Operator Brief Declarations +++ +++XXX +++ +++@node Operator Declarations +++@section Operator Declarations +++ +++XXX +++ +++@node Applied Identifiers +++@section Applied Identifiers +++ +++XXX +++ +++@c --------------------------------------------------------------------- +++@c Lowering Assignations +++@c --------------------------------------------------------------------- +++ +++@node Lowering Assignations +++@chapter Lowering Assignations +++ +++Scope checking: +++ +++@itemize @bullet +++@item +++If static scope checking is relevant and OK, then just perform assignation. +++@item +++If static scope checking is relevant and not OK, a compile-time error +++will have already being emitted. +++@item +++If static scope checking is not relevant, perform dynamic scope +++checking: each time a name, a routine or a format of the data +++structure is assigned, its dynamic scope (scope%_si) is compared with +++the one of the destination (scope%_d). A run-time error message is +++provided in case scope%_d < scope%_si. +++@end itemize +++ +++@c --------------------------------------------------------------------- +++@c GNU Free Documentation License +++@c --------------------------------------------------------------------- +++ +++@include fdl.texi +++ +++ +++@c --------------------------------------------------------------------- +++@c Index +++@c --------------------------------------------------------------------- +++ +++@node Index +++@unnumbered Index +++ +++@printindex cp +++ +++@bye ++--- /dev/null +++++ b/src/gcc/algol68/ga68.texi ++@@ -0,0 +1,3169 @@ +++\input texinfo @c -*-texinfo-*- +++@setfilename ga68.info +++@settitle The GNU Algol 68 Compiler +++ +++@c Macro for bold-tags. In TeX and HTML they expand to proper bold words, +++@c in other formats it resorts to upper stropping. +++@iftex +++@macro B{tag} +++@strong{\tag\} +++@end macro +++@end iftex +++ +++@ifhtml +++@macro B{tag} +++@strong{\tag\} +++@end macro +++@end ifhtml +++ +++@ifnottex +++@ifnothtml +++@macro B{tag} +++\tag\ +++@end macro +++@end ifnothtml +++@end ifnottex +++ +++@c Create a separate index for command line options +++@defcodeindex op +++@c Merge the standard indexes into a single one. +++@syncodeindex fn cp +++@syncodeindex vr cp +++@syncodeindex ky cp +++@syncodeindex pg cp +++@syncodeindex tp cp +++ +++@include gcc-common.texi +++ +++@c Copyright years for this manual. +++@set copyrights-ga68 2025 +++ +++@copying +++@c man begin COPYRIGHT +++Copyright @copyright{} @value{copyrights-ga68} Free Software Foundation, Inc. +++ +++Permission is granted to copy, distribute and/or modify this document +++under the terms of the GNU Free Documentation License, Version 1.3 or +++any later version published by the Free Software Foundation; with no +++Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. +++A copy of the license is included in the +++@c man end +++section entitled ``GNU Free Documentation License''. +++@ignore +++@c man begin COPYRIGHT +++man page gfdl(7). +++@c man end +++@end ignore +++@end copying +++ +++@ifinfo +++@format +++@dircategory Software development +++@direntry +++* ga68: (ga68). A GCC-based compiler for Algol 68 +++@end direntry +++@end format +++ +++@insertcopying +++@end ifinfo +++ +++@titlepage +++@title The GNU Algol 68 Compiler +++@versionsubtitle +++@author Jose E. Marchesi +++ +++@page +++@vskip 0pt plus 1filll +++@sp 1 +++@insertcopying +++@end titlepage +++@summarycontents +++@contents +++@page +++ +++@node Top +++@top Introduction +++ +++This manual describes how to use @command{ga68}, the GNU compiler for +++Algol 68. This manual is specifically about how to invoke +++@command{ga68}, as well as its features. For more information about +++the Algol 68 language in general, the reader is referred to the +++bibliography. +++ +++Note that the particular way of representing Algol 68 code snippets in +++this manual will depend on the media. If you are reading this manual +++in a printed support or a PDF file rendered for publication then the +++bold words in programs will be rendered in actual bold typography and +++tags may have spaces within them. If you are reading this manual in a +++terminal or other media not supporting rich typography the code +++examples will follow the modern stropping regime with is the default +++in ga68. +++ +++Note also that we are making use of @dfn{pseudo-comments} in code +++examples, as it is traditional in Algol 68 related documentation. +++These appear surrounded by @code{@B{C}} marks and act as placeholders +++of some Algol 68 code. For example, @code{@B{C} frob the input +++variable @B{C}} is a pseudo-comment. +++ +++@menu +++* Invoking ga68:: How to run the compiler. +++* Composing programs:: Packets, modules, holes, particular programs. +++* Comments and pragmats:: Comments and pragmas. +++* Hardware representation:: Representation of programs. +++* Standard prelude:: Standard modes, operators, etc. +++* Extended prelude:: GNU extensions to the standard prelude. +++* POSIX prelude:: Simple I/O and system interaction facilities. +++* Language extensions:: GNU extensions to the Algol 68 language. +++* Copying:: The GNU General Public License. +++* GNU Free Documentation License:: +++ How you can share and copy this manual. +++* Option Index:: Index of command line options. +++* General Index:: General index. +++@end menu +++ +++@node Invoking ga68 +++@chapter Invoking ga68 +++ +++@c man title ga68 A GCC-based compiler for Algol 68 +++ +++@ignore +++@c man begin SYNOPSIS ga68 +++ga68 [@option{-c}|@option{-S}] [@option{-g}] [@option{-pg}] +++ [@option{-O}@var{level}] [@option{-W}@var{warn}@dots{}] +++ [@option{-I}@var{dir}@dots{}] [@option{-L}@var{dir}@dots{}] +++ [@option{-f}@var{option}@dots{}] [@option{-m}@var{machine-option}@dots{}] +++ [@option{-o} @var{outfile}] [@@@var{file}] @var{infile}@dots{} +++ +++Only the most useful options are listed here; see below for the +++remainder. +++@c man end +++@c man begin SEEALSO +++gpl(7), gfdl(7), fsf-funding(7), gcc(1) +++and the Info entries for @file{ga68} and @file{gcc}. +++@c man end +++@end ignore +++ +++@c man begin DESCRIPTION ga68 +++ +++The @command{ga68} command is the GNU compiler for the Algol 68 language and +++supports many of the same options as @command{gcc}. @xref{Option Summary, , +++Option Summary, gcc, Using the GNU Compiler Collection (GCC)}. +++This manual only documents the options specific to @command{ga68}. +++ +++@c man end +++ +++@menu +++* Dialect options:: Options controlling the accepted language. +++* Directory options:: Options influencing where to find source files. +++* Warnings options:: Options controlling warnings specific to ga68 +++* Runtime options:: Options controlling runtime behavior +++* Linking options:: Options influencing the linking step +++* Developer options:: Options useful for developers of ga68 +++@end menu +++ +++@node Dialect options +++@section Dialect options +++@cindex options, dialect +++ +++The following options control how the compiler handles certain dialect +++variations of the language. +++ +++@table @gcctabopt +++@opindex std=@var{std} +++@item -std=@var{std} +++Specify the standard to which the program is expected to conform, +++which may be one of @samp{algol68} or @samp{gnu68}. The default value +++for @var{std} is @samp{gnu68}, which specifies a strict super language +++of Algol 68 allowing GNU extensions. The @samp{algol68} value +++specifies that the program strictly conform to the Revised Report. +++@opindex fstropping=@var{stropping_regime} +++@item -fstropping=@var{stropping_regime} +++Specify the stropping regime to expect in the input programs. The +++default value for @var{stropping_regime} is @samp{supper}, which +++specifies the modern SUPPER stropping which is a GNU extension. The +++@samp{upper} value specifies the classic UPPER stropping of Algol 68 +++programs. @xref{Stropping regimes}. +++@opindex fbrackets +++@opindex fno-brackets +++@item -fbrackets +++This option controls whether @code{[ .. ]} and @code{@{ .. @}} are +++considered equivalent to @code{( .. )}. This syntactic variation is +++blessed by the Revised Report and is still strict Algol 68. +++ +++This option is disabled by default. +++@end table +++ +++@node Directory options +++@section Options for Directory Search +++@cindex directory options +++@cindex options, directory search +++@cindex search path +++ +++These options specify directories to search for files, libraries, and +++other parts of the compiler: +++ +++@table @gcctabopt +++ +++@opindex I +++@item -I@var{dir} +++Add the directory @var{dir} to the list of directories to be searched +++for files when processing the @ref{pragmat include}. Multiple +++@option{-I} options can be used, and the directories specified are +++scanned in left-to-right order, as with @command{gcc}. +++ +++@end table +++ +++@node Warnings options +++@section Warnings options +++@cindex options, warnings +++@cindex options, errors +++@cindex warnings, suppressing +++@cindex messages, error +++@cindex messages, warning +++@cindex suppressing warnings +++ +++Warnings are diagnostic messages that report constructions that +++are not inherently erroneous but that are risky or suggest there +++is likely to be a bug in the program. Unless @option{-Werror} is +++specified, they do not prevent compilation of the program. +++ +++@table @gcctabopt +++@opindex Wvoiding +++@opindex Wno-voiding +++@item -Wvoiding +++Warn on non-void units being voided due to a strong context. +++@opindex Wscope +++@opindex Wno-scope +++@item -Wscope +++Warn when a potential name scope violation is found. +++@opindex Whidden-declarations +++@opindex Wno-hidden-declarations +++@item -Whidden-declarations=@var{level} +++Warn when a declaration hides another declaration in a larger reach. +++This includes operators that hide firmly related operators defined in +++larger reach. +++ +++@table @gcctabopt +++@item -Whidden-declarations=none +++At this level no warning is issued for any hidden declaration on an +++outer scope. +++ +++@item -Whidden-declarations=prelude +++At this level, warnings are issued for hidden declarations defined in +++the standard prelude. This is the default warning level of +++@option{-Whidden-declarations}. +++ +++@item -Whidden-declarations=all +++At this level, warnings are issued for any and all hidden +++declarations. +++@end table +++ +++@opindex Wextensions +++@opindex Wno-extensions +++@item -Wextensions +++Warn when a non-portable Algol 68 construct is used, like GNU +++extensions to Algol 68. +++@end table +++ +++@node Runtime options +++@section Runtime options +++@cindex options, runtime +++ +++These options affect the runtime behavior of programs compiled with +++@command{ga68}. +++ +++@table @gcctabopt +++@opindex fassert +++@opindex fno-assert +++@item -fno-assert +++Turn off code generation for @code{ASSERT} contracts. +++ +++@opindex fcheck +++@item -fcheck=@var{} +++Enable the generation of run-time checks; the argument shall be a +++comma-delimited list of the following keywords. Prefixing a check +++with @option{no-} disables it if it was activated by a previous +++specification. +++ +++@table @asis +++@item @samp{all} +++Enable all run-time test of @option{-fcheck}. +++ +++@item @samp{none} +++Disable all run-time test of @option{-fcheck}. +++ +++@item @samp{nil} +++Check for nil while dereferencing. +++ +++@item @samp{bounds} +++Enable generation of run-time checks when indexing and trimming +++multiple values. +++@end table +++@end table +++ +++@node Linking options +++@section Linking options +++@cindex options, linking +++@cindex linking, static +++ +++These options come into play when the compiler links object files into +++an executable output file. They are meaningless if the compiler is +++not doing a link step. +++ +++@table @gcctabopt +++ +++@opindex shared-libga68 +++@item -shared-libga68 +++On systems that provide @file{libga68} as a shared and a static +++library, this option forces the use of the shared version. If no +++shared version was built when the compiler was configured, this option +++has no effect. +++ +++@opindex static-libga68 +++@item -static-libga68 +++On systems that provide @file{libga68} as a shared and a static +++library, this option forces the use of the static version. If no +++static version was built when the compiler was configured, this option +++has no effect. This is the default. +++@end table +++ +++@node Developer options +++@section Developer options +++@cindex developer options +++@cindex debug dump options +++@cindex dump options +++ +++This section describes command-line options that are primarily of +++interest to developers. +++ +++@table @gcctabopt +++@opindex fa68-dump-modes +++@item -fa68-dump-modes +++Output a list of all the modes parsed by the front-end. +++ +++@opindex fa68-dump-ast +++@item -fa68-dump-ast +++Dump a textual representation of the parse tree. +++ +++@opindex fa68-dump-module-interfaces +++@item -fa68-dump-module-interfaces +++Dump the interfaces of module definitions in the compiled packet. +++@end table +++ +++@node Composing programs +++@chapter Composing programs +++@cindex program +++@cindex separated compilation +++ +++This chapter documents how to compose full Algol 68 programs using the +++modules and separated compilation support provided by this compiler. +++ +++@menu +++* Packets:: Compilation units. +++* Modules:: Facilities for bottom-up programming. +++* Holes:: Facilities for top-down programming. +++* Particular programs:: The main program. +++* The standard environment:: Environment conforming a full program. +++@end menu +++ +++@node Packets +++@section Packets +++@cindex packet +++@cindex compilation unit +++ +++Each Algol 68 source file contains a @dfn{packet}. Packets therefore +++play the role of @dfn{compilation units}, and each packet can be +++compiled separately to an object file. A set of compiled object files +++can then be linked in the usual fashion into an executable, archive or +++shared object by the system linker, without the need of any +++language-specific link editor or build system. +++ +++@noindent +++This compiler supports three different kind of packets: +++ +++@itemize @minus +++@item +++@dfn{Particular programs} constitute the entry point of a program. +++They correspond to the @code{main} function of other languages like C. +++ +++@xref{Particular programs}. +++ +++@item +++@dfn{Prelude packets} contain the definition of one or more modules, +++which @dfn{publicize} definitions of modes, procedures, variables, +++operators and even the publicized definitions of other modules. The +++modules defined at the top-level of a prelude packet can be accessed +++by other packets via an @code{@B{access}} construct. Prelude packets +++are so-called because their contents get stuffed in the +++@dfn{user-prelude} in the case of user-defined modules, or the +++@dfn{library-prelude} in the case of module packets provided by the +++compiler. They are usually used to compose libraries that can be used +++in a bottom-up fashion. +++ +++@xref{Modules}. +++ +++@item +++@dfn{Stuffing packets} contain the definition of an @dfn{actual hole}, +++an @code{@B{egg}} construct, that can be stuffed in a matching +++@dfn{formal hole} in another package via a @code{@B{nest}} construct. +++Formal holes are used in order to achieve separated compilation in a +++top-bottom fashion, and also to invoke procedures written in other +++languages, such as C functions or Fortran subroutines. +++ +++@xref{Holes}. +++@end itemize +++ +++A @dfn{collection of packets}, all of which must be compatible with +++each other, constitutes either a @dfn{program} or a @dfn{library}. +++Exactly one of the packets constituting a program shall be a +++particular program. In libraries at least one packet must be a +++prelude packet. +++ +++@node Modules +++@section Modules +++@cindex module +++ +++@dfn{Definition modules}, often referred as just @dfn{modules} in the +++sequel, fulfill two different but related purposes. On one side, they +++provide some degree of @dfn{protection} by preventing accessing +++indicators defined within the module but not explicitly publicized. +++On the other, they allow to define @dfn{interfaces}, allow separated +++compilation based on these interfaces, and conform libraries. +++ +++Modules are usually associated with bottom-up development strategies, +++where several already written components are grouped and combined to +++conform bigger components. +++ +++@menu +++* Writing modules:: Writing modules. +++* Accessing modules:: Using the definitions of a module. +++* Module activation:: How and when modules execute. +++* Modules and libraries:: Using modules to conform libraries. +++* Modules and protection:: When block structure is not enough. +++@end menu +++ +++@node Writing modules +++@subsection Writing modules +++ +++A @dfn{definition module} is a construct that provides access to a set +++of publicized definitions. They can appear anywhere, but are +++typically found in the outer reach and compiled separately, in which +++case they conform a prelude packet (@pxref{Packets}). They are +++composed of a prelude and a postlude. The publicized definitions +++appear in the module's prelude. +++ +++Consider for example the following definition module, which implements +++a very simple logging facility: +++ +++@example +++@B{module} @B{Logger} = +++ @B{def} @B{int} fd = stderr; +++ @B{pub} @B{string} originator; +++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: +++ fputs (fd, (originator /= "" | ": ") + msg + "\n"); +++ +++ log ("beginning of log\n"); +++ @B{postlude} +++ log ("end of log\n"); +++ @B{fed} +++@end example +++ +++@noindent +++The @dfn{module text} delimited by @code{@B{def}} and @code{@B{fed}} +++gets ascribed to the module indicator @code{@B{Logger}}. Module +++indicators are bold tags. Once defined, the module @code{@B{Logger}} +++is accessible anywhere within its reach. +++ +++The @dfn{prelude} of the module spans from @code{@B{def}} to either +++@code{@B{postlude}}, or to @code{@B{fed}} in case of modules not +++featuring a postlude. It consists on a restricted serial clause in a +++void strong context, which can contain units and declarations, but no +++labels or completers. The declarations in the prelude may be either +++publicized or no publicized. As we shall see, publicized indicators +++are accessible within the reach of the defining module publicizing +++them. Publicized declarations are marked by preceding them with +++@code{@B{pub}}. +++ +++In our example the module prelude consists on three declarations and +++one unit. The indicator @code{fd} is not publicized and is to be used +++internally by the module. The indicators @code{originator} and +++@code{log}, on the other hand, are publicized and conform the +++interface of the module. Note how the range of the prelude also +++covers the postlude: the @code{log} procedure is reachable there, as +++it would be @code{fd} as well. +++ +++The @dfn{postlude} of the module is optional and spans from +++@code{@B{postlude}} to @code{@B{fed}}. It consists on a serial clause +++in a @code{@B{void}} strong context, where definitions, labels and +++module accesses are not allowed, just units. +++ +++@node Accessing modules +++@subsection Accessing modules +++ +++Once a module is defined (@pxref{Writing modules}) it can be accessed, +++provided it is within reach, using an @dfn{access clause}. The access +++clause identifies the modules to access and then makes the publicized +++definitions of these modules visible within a @dfn{control clause}. +++ +++For example, this is how we could use the logger definition module +++defined in a previous section to log the progress of some program that +++reads an input file and writes some output file: +++ +++@example +++@B{access} @B{Logger} +++@B{begin} # Identify ourselves with the program name # +++ originator := argv (1); +++ +++ # Read input file. # +++ @B{if} @B{NOT} parse_input (argv (2)) +++ @B{then} log ("error parsing input file"); stop @B{fi}; +++ +++ # Write output file. # +++ @B{if} @B{NOT} write_output (argv (3)) +++ @B{then} log ("error writing output file"); stop @B{fi}; +++ +++ log ("success") +++@B{end} +++@end example +++ +++@noindent +++In this case the controlled clause is the closed clause conforming the +++particular program, and the definitions publicized by the logger +++module, in this case @code{originator} and @code{log}, can be used +++within it. +++ +++@subsubsection Accessing several modules +++ +++An access clause is not restricted to just provide access to a single +++module: any number of module indicators can be specified in an access +++clause. Suppose that our example processing program has to read and +++write the data in JSON format, and that a suitable JSON library is +++available in the form of a reachable module. We could then make both +++logger and json modules accessible like this: +++ +++@example +++@B{access} @B{Logger}, @B{JSON} +++@B{begin} # Identify ourselves with the program name # +++ originator := argv (1); +++ +++ @B{JSONVal} data; +++ +++ # Read input file. # +++ @B{if} data := json_from_file (argv (2)); +++ data = json no val +++ @B{then} log ("error parsing input file"); stop @B{fi}; +++ +++ # Write output file. # +++ @B{if} @B{not} json_to_file (argv (3), data) +++ @B{then} log ("error writing output file"); stop @B{fi}; +++ +++ log ("success") +++@B{end} +++@end example +++ +++@noindent +++In this version of the program the access clause includes the module +++indicator @code{@B{json}}, and that makes the mode indicator +++@code{@B{jsonval}} and the tags @code{@B{json no val}}, @code{json +++from file} and @code{json to file} visible within the program's +++closed clause. +++ +++Note that the following two access clauses are not equivalent: +++ +++@example +++@B{access} @B{Logger}, @B{JSON} @B{C} ... @B{C}; +++@B{access} @B{Logger} @B{access} @B{JSON} @B{C} ... @B{C}; +++@end example +++ +++@noindent +++In the first case, a compilation time error is emitted if there is a +++conflict among the publicized definitions of both modules; for +++example, if both modules were to publicize a procedure called +++@code{log}. In the second case, the declaration of @code{log} +++publicized by @code{@B{Logger}} would hide the declaration of +++@code{log} publicized by @code{@B{JSON}}. This also has implications +++related to activation, that we will be discussing in a later section. +++ +++@subsubsection The controlled clause +++ +++The controlled clause in an access clause doesn't have to be a serial +++clause, like in the examples above. It can be any enclosed clause, +++like for example a loop clause: +++ +++@example +++@B{proc} frobnicate frobs = ([]@B{Frob} frobs) @B{void}: +++ @B{access} @B{Logger} @B{to} @B{UPB} frobs +++ @B{do} log ("frobnicating " + name @B{of} frob); +++ frobnicate (frob) +++ @B{od} +++@end example +++ +++@subsubsection The value yielded by an access clause +++ +++The elaboration of an access clause yields a value, which is the value +++yielded by the elaboration of the controlled clause. Since the later +++is an enclosed clause, coercions get passed into them whenever +++required, the usual fashion. +++ +++We can see an example of this in the following procedure, whose body +++is a controlled closed clause that yields a @code{@B{real}} value: +++ +++@example +++@B{proc} incr factor = (@B{ref}[]@B{real} factors, @B{int} idx) @B{real}: +++ @B{access} @B{logger} (log ("factor increased"); factors[idx] +:= 1.0) +++@end example +++ +++@noindent +++Note how the access clause above is in a strong context requiring a +++value of mode @code{@B{real}}. The value yielded by the access clause +++is the value yielded by the controlled enclosed clause, which in this +++case is a closed clause. The strong context and required mode gets +++passed to the last unit of the closed clause (the assignation) which +++in this case yields a value of mode @code{@B{ref} @B{real}}. The unit +++is coerced to @code{@B{real}} by dereferencing, and the resulting +++value becomes the value yielded by the access clause. +++ +++@subsubsection Modules accessing other modules +++ +++A definition module may itself access other modules. This is done by +++placing the module text as a controlled clause of an access clause. +++Suppose we rewrite our logger module so it uses JSON internally to log +++JSON objects rather than raw strings. We could do it this way: +++ +++@example +++@B{module} @B{logger} = +++ @B{access} @B{json} +++ @B{def} @B{int} fd = stderr; +++ @B{pub} @B{string} originator; +++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: +++ fputs (fd, json array (json string (originator), +++ json string (msg))); +++ +++ log (json string ("beginning of log\n")); +++ @B{postlude} +++ log (json string ("end of log\n")); +++ @B{fed} +++@end example +++ +++@noindent +++Note how this version of @code{@B{logger}} uses a few definitions +++publicized by the @code{@B{json}} module. +++ +++A program accessing @code{@B{logger}} will not see the definitions +++publicized by the @code{@B{json}} module. If that is what we +++intended, for example to allow the users of the logger to tweak their +++own JSON, we would need to specify it this way: +++ +++@example +++@B{module} @B{logger} = +++ @B{access} @B{pub} @B{json} +++ @B{def} @B{c} ...as before... @B{c} @B{fed} +++@end example +++ +++@noindent +++In this version the definitions publicized by @code{@B{json}} become +++visible to programs accessing @code{@B{logger}}. +++ +++@node Module activation +++@subsection Module activation +++ +++In all the examples seen so far the modules were accessed just once. +++In these cases, accessing the module via an access-clause caused the +++@dfn{activation} of the module. +++ +++Activating a module involves elaborating all the declarations and +++units that conform its prelude. Depending on the particular module +++definition that gets activated, this may involve all sort of side +++effects, such as allocating space for values and initializing them, +++opening files, @i{etc}. Once the modules specified in the access +++clause are successfully activated, the controlled clause gets +++elaborated itself, within the reach of all the publicized definitions +++by the activated modules as we saw in the last section. Finally, once +++the controlled clause has been elaborated, the module gets +++@dfn{revoked} by elaborating the serial clause in its postlude. +++ +++However, nothing prevents some given definition module to be accessed +++more than once in the same program. The following program, that makes +++use of the @code{@B{logger}} module, exemplifies this: +++ +++@example +++@B{access} @B{logger} +++@B{begin} originator := argv (1); +++ log ("executing program"); +++ @B{c} ... @B{c} +++ @B{access} @B{logger} (originator := argv (1) + ":subtask"; +++ log ("doing subtask") +++ @B{c} ... @B{c}) +++@B{end} +++@end example +++ +++@noindent +++In this program the module @code{@B{logger}} is accessed twice. The +++code is obviously written assuming that the inner access clause +++triggers a new activation of the @code{@B{logger}} module, allocating +++new storage and executing its prelude. This would result in the +++following log contents: +++ +++@example +++a.out: beginning of log +++a.out: executing program +++a.out:subtask: beginning of log +++a.out:subtask: doing subtask +++a.out:subtask: end of log +++a.out: end of log +++@end example +++ +++@noindent +++However, this is not what happens. The module gets only activated +++once, as the result of the outer access clause. The inner access +++clause just makes the publicized indicators visible in its controlled +++clause. The actual resulting log output is: +++ +++@example +++a.out: beginning of log +++a.out: executing program +++a.out:subtask: doing subtask +++a.out:subtask: end of log +++@end example +++ +++@noindent +++Which is not what we intended. Modules are not classes. If we wanted +++the logger to support several originators that can be nested, we would +++need to add support for it in the definition module. Something like: +++ +++@example +++@B{module} @B{logger} = +++ @B{def} @B{int} fd = stderr, max originators = 10; +++ @B{int} orig := 0; +++ [max originators]@B{string} originators; +++ +++ @B{pub} @B{proc} push originator = (@B{string} str) @B{void}: +++ (@B{assert} (orig < max originators); +++ orig +:= 1; +++ originators[orig] := str); +++ @B{pub} @B{proc} pop originator = @B{void}: +++ (@B{assert} (max originators > 0); +++ orig -:= 1); +++ @B{pub} @B{proc} log = (@B{string} msg) @B{void}: +++ fputs (fd, (originator[orig] /= "" | ": ") + msg + "\n"); +++ +++ log ("beginning of log\n"); +++ @B{postlude} +++ log ("end of log\n"); +++ @B{fed} +++@end example +++ +++@noindent +++Note how in this version of @code{@B{logger}} @code{originators} acts +++as a stack of originator strings, and it is not publicized. The +++management of the stack is done via a pair of publicized procedures +++@code{push originator} and @code{pop originator}. Our program will +++now look like: +++ +++@example +++@B{access} @B{logger} +++@B{begin} push originator (argv (1)); +++ log ("executing program"); +++ @B{c} ... @B{c} +++ @B{access} @B{logger} (push originator ("subtask"); +++ log ("doing subtask") +++ @B{c} ... @B{c}; +++ pop originator) +++@B{end} +++@end example +++ +++@noindent +++And the log output is: +++ +++@example +++a.out: beginning of log +++a.out: executing program +++a.out:subtask: doing subtask +++a.out: end of log +++@end example +++ +++ +++-------------------------------------------------------------- +++ +++module-indications are used to find interface-definitions of modules: +++ +++ ACCESS FOO SKIP +++ +++Looks for (in order): +++ +++ foo.m68 +++ foo.o +++ libfoo.so +++ +++Should we use instead: +++ +++ ACCESS "foo" SKIP +++ +++That would use for module indicators the same syntax than hole +++indicators. +++ +++Modules get accessed, invoked and revoked. +++ +++Access clauses: +++ +++: ACCESS A, B +++ +++Where A and B are ``revelations''. +++ +++In +++ +++: MODULE A = ACCESS B DEF ... FED +++ +++Doesn't reveals any contents of B. Whereas in: +++ +++: MODULE A = ACCESS PUB B DEF .. FED +++ +++The module A is also revealing B's public declarations. So accessing +++A provides access to B. +++ +++User-defined preludes go to the user-prelude. +++ +++Invocation and revocation:: How modules are executed. +++ +++It is possible for a definition module to not publicize any +++definition. Such modules would be used only for the side effects +++produced from executing the prelude and postlude when the module gets +++invoked and revoked. XXX: provide an example? +++ +++XXX +++ +++@node Modules and libraries +++@subsection Modules and libraries +++@cindex library +++@cindex prelude packet +++ +++XXX +++ +++@node Modules and protection +++@subsection Modules and protection +++@cindex protection +++@cindex publicized definition +++ +++XXX +++ +++@node Holes +++@section Holes +++@cindex hole +++ +++XXX +++ +++@node Particular programs +++@section Particular programs +++@cindex particular program +++ +++An Algol 68 @dfn{particular program} consists on an enclosed clause in +++a strong context with target mode @code{@B{void}}, possibly preceded +++by a set of zero or more labels. For example: +++ +++@example +++hello: +++@B{begin} puts ("Hello, world!\n") +++@B{end} +++@end example +++ +++@noindent +++Note that the enclosed clause conforming the particular program +++doesn't have to be a closed clause. Consider for example the +++following program, that prints out its command line arguments: +++ +++@example +++@B{for} i @B{to} argc +++@B{do} puts (argv (i) + "\n") @B{od} +++@end example +++ +++@menu +++* Exit status:: How do programs communicate success or failure. +++* The @code{stop} label:: How to terminate a program at any time. +++@end menu +++ +++@node Exit status +++@subsection Exit status +++@cindex exit status +++ +++Some operating systems have the notion of @dfn{exit status} of a +++process. In such systems, by default the execution of the particular +++program results in an exit status of success. It is possible for the +++program to specify an explicit exit status by using the standard +++procedure @code{set exit status}, like: +++ +++@example +++@b{begin} # ... program code ... # +++ @B{if} error found; +++ @B{then} set exit status (1) @B{fi} +++@b{end} +++@end example +++ +++In POSIX systems the status is an integer, and the system interprets a +++value other than zero as a run-time error. In other systems the +++status may be of some other type. To support this, the @code{set +++error status} procedure accepts as an argument an united value that +++accommodates all the supported systems. +++ +++The following example shows a very simple program that prints ``Hello +++world'' on the standard output and then returns to the operating +++system with a success status: +++ +++@example +++@B{begin} puts ("Hello world\n") +++@B{end} +++@end example +++ +++@node The @code{stop} label +++@subsection The @code{stop} label +++@cindex @code{stop} +++ +++A predefined label named @code{stop} is defined in the standard +++postlude. This label can be jumped to at any time by a program and it +++will cause it to terminate and exit. For example: +++ +++@example +++@B{begin} @B{if} argc /= 2 +++ @B{then} puts ("Program requires exactly two arguments."); +++ goto stop +++ @B{fi} +++ @B{C} ... @B{C} +++@B{end} +++@end example +++ +++@node The standard environment +++@section The standard environment +++@cindex standard environment +++ +++The environment in which particular programs run is expressed here in +++the form of pseudo code: +++ +++@example +++(@B{c} standard-prelude @B{c}; +++ @B{c} library-prelude @B{c}; +++ @B{c} system-prelude @B{c}; +++ @B{par} @B{begin} @B{c} system-task-1 @B{c}, +++ @B{c} system-task-2 @B{c}, +++ @B{c} system-task-n @B{c}, +++ @B{c} user-task-1 @B{c}, +++ @B{c} user-task-2 @B{c}, +++ @B{c} user-task-m @B{c} +++ @B{end}) +++@end example +++ +++@noindent +++Where each user task consists on: +++ +++@example +++(@B{c} particular-prelude @B{c}; +++ @B{c} user-prelude @B{c}; +++ @B{c} particular-program @B{c}; +++ @B{c} particular-postlude @B{c}) +++@end example +++ +++The only standard system task described in the report is expressed in +++pseudo-code as: +++ +++@example +++@B{do} @B{down} gremlins; undefined; @B{up} bfileprotect @B{od} +++@end example +++ +++@noindent +++Which denotes that, once a book (file) is closed, anything may happen. +++Other system tasks may exist, depending on the operating system. In +++general these tasks in the parallel clause denote the fact that the +++operating system is running in parallel (intercalated) with the user's +++particular programs. +++ +++@itemize @bullet +++@item +++The library-prelude contains, among other things, the prelude parts of +++the defining modules provided by library. +++ +++@item +++The particular-prelude and particular-postlude are common to all the +++particular programs. +++ +++@item +++The user-prelude is where the prelude parts of the defining modules +++involved in the compilation get stuffed. If no defining module is +++involved then the user-prelude is empty. +++@end itemize +++ +++Subsequent sections in this manual include a detailed description of +++the contents of these preludes. +++ +++@node Comments and pragmats +++@chapter Comments and pragmats +++ +++Comments and pragmats, also known collectively as @dfn{pragments}, can +++appear almost anywhere in an Algol 68 program. Comments are usually +++used for documentation purposes, and pragmats contain annotations for +++the compiler. Both are handled at the lexical level. +++ +++@menu +++* Comments:: Your typical friendly comments. +++* Pragmats:: In-source directives for the compiler. +++@end menu +++ +++@node Comments +++@section Comments +++ +++In the default modern stropping regime supported by GCC comments are +++written between @code{@{} and @code{@}} delimiters, and can be nested +++to arbitrary depth. For example: +++ +++@example +++foo +:= 1; @{ Increment foo. @} +++@end example +++ +++If UPPER stropping is selected, this compiler additionally supports +++three classical Algol 68 comment styles, in which the symbols marking +++the beginning of comments are the same than the symbols marking the +++end of comments and therefore can't be nested: @code{@B{comment} +++... @B{comment}}, @code{@B{co} ... @B{co}} and @code{# .. #}. For +++example: +++ +++@example +++@B{comment} +++ This is a comment. +++@B{comment} +++ +++foo := 10; @B{co} this is also a comment @B{co} +++foo +:= 1; # and so is this. # +++@end example +++ +++Unless @option{-std=algol68} is specified in the command line, two +++styles of nestable comments can be also used with UPPER stropping: the +++already explained @code{@{ ... @}} and a ``bold'' style that uses +++@code{@B{code} ... @B{edoc}}. For example: +++ +++@example +++foo := 10; @{ this is a nestable comment in brief style. @} +++foo +:= 1; @B{note} this is a nestable comment in bold style. @B{eton}. +++@end example +++ +++@example +++@B{note} +++ "Bold" nestable comments. +++@B{eton} +++ +++@{ "Brief" nestable comments. @} +++@end example +++ +++In UPPER stropping all comment styles are available, both classic and +++nestable. In modern SUPPER stropping, which is based on reserved +++words, only @code{@{ ... @}} is available. +++ +++@node Pragmats +++@section Pragmats +++ +++@cindex pragmat +++@dfn{Pragmats} (also known as @dfn{pragmas} in other programming +++languages) are directives and annotations for the compiler, and their +++usage impacts the compilation process in several ways. A pragmat +++starts with either @code{@B{pragmat}} or @code{@B{pr}} and finished +++with either @code{@B{pragmat}} or @code{@B{pr}} respectively. +++Pragmats cannot be nested. For example: +++ +++@example +++@B{pr} include "foo.a68" @B{pr} +++@end example +++ +++The interpretation of pragmats is compiler-specific. This chapter +++documents the pragmats supported by GCC. +++ +++@menu +++* pragmat include:: Include another source file. +++@end menu +++ +++@node pragmat include +++@subsection pragmat include +++@cindex include +++ +++An @dfn{include pragmat} has the form: +++ +++@example +++@B{pr} include "PATH" @B{pr} +++@end example +++ +++@noindent +++Where @code{PATH} is the path of the file whose contents are to be +++included at the location of the pragmat. If the provided path is +++relative then it is interpreted as relative to the directory +++containing the source file that contains the pragmat. +++ +++The @option{-I} command line option can be used in order to add +++additional search paths for @code{include}. +++ +++@node Hardware representation +++@chapter Hardware representation +++ +++The @dfn{reference language} specified by the Revised Report describes +++Algol 68 particular programs as composed by @dfn{symbols}. However, +++the Report leaves the matter of the concrete representation of these +++symbols, the @dfn{representation language}, open to the several +++implementations. This was motivated by the very heterogeneous +++computer systems in existence at the time the Report was written, +++which made flexibility in terms of representation a crucial matter. +++ +++This flexibility was indeed exploited by the early implementations, +++and there was a price to pay for it. A few years after the +++publication of the Revised Report the different implementations had +++already given rise to a plethora of many related languages that, +++albeit being strict Algol 68, differed considerably in appearance. +++This, and the fact that people were already engrossed in writing +++programs other than compilers that needed to process Algol 68 +++programs, such as code formatters and macro processors, prompted the +++WG 2.1 to develop and publish a @dfn{Report on the Standard Hardware +++Representation for ALGOL 68}, which came out in 1975. +++ +++This compiler generally follows the Standard Hardware Representation, +++but deviates from it in a few aspects. This chapter provides an +++overview of the hardware representation and documents any deviation. +++ +++@menu +++* Representation languages:: From symbols to syntactic marks. +++* Worthy characters:: Marks that can appear in a program. +++* Base characters:: Mapping of worthy characters to code points. +++* Stropping regimes:: Representation of bold words. +++* Monads and Nomads:: Characters that can appear in operator names. +++* String breaks:: String literals and escape sequences. +++@end menu +++ +++@node Representation languages +++@section Representation languages +++ +++A program in the strict Algol 68 language is composed by a series of +++symbols. These symbols have names such as @code{letter-a-symbol} and +++@code{assigns-to-symbol} which are, well, purely symbolic. In fact, +++these are notions in the two-level grammar that defines the strict +++language. +++ +++A @dfn{representation language} provides a mapping between symbols in +++the strict language and the representation of these symbols. Each +++representation is a sequence of syntactic marks. For example, the +++@code{completion symbol} may be represented by @strong{exit}, where +++the marks are the bold letters. The @code{tilde symbol} may be +++represented by @code{~}, which is a single mark. The representation of +++@code{assigns to symbol} is @code{:=}, which is composed by the two +++marks @code{:} and @code{=}. The representation of @code{letter-a} +++is, not surprising, the single mark @code{a}. +++ +++The section 9.4 of the Report describes the recommended representation +++for all the symbols of the language. The set of all recommendations +++constitutes the so-called @dfn{reference language}. Algol 68 +++implementations are strongly encouraged to use representation +++languages which are similar enough to the reference language, +++recognizable ``without further elucidation'', but this is not +++strictly required. +++ +++A representation language may specify more than one representation for +++a given symbol. For example, in the reference language the @code{is +++not symbol} is represented by @strong{isnt}, @code{:/=:} and a variant +++of the later where the slash sign is superimposed on the equal sign. +++In this case, an implementation can choose to implement any number of +++the representations. +++ +++Spaces, tabs and newlines are @dfn{typographical display features} +++that, when they appear between symbols, are of no significance and do +++not alter the meaning of the program. However, when a space or a tab +++appear in string or character denotations, they represent the +++@code{space symbol} and the @code{tab symbol} +++respectively@footnote{The @code{tab symbol} is a GNU extension}. +++ +++@node Worthy characters +++@section Worthy characters +++@cindex worthy characters +++ +++The syntactic marks of a representation language, both symbols and +++typographical display features, are realized as a set of @dfn{worthy +++characters} and the newline. Effectively, an Algol 68 program is a +++sequence of @dfn{worthy characters} and newlines. The worthy +++characters are: +++ +++@example +++a b c d e f g h i j k l m n o p q r s t u v w x y z +++A B C D E F G H I J K L M N O P Q R S T U V W X Y Z +++0 1 2 3 4 5 6 7 8 9 +++space tab " # $ % & ' ( ) * + , - . / : ; < = > @ [ \ ] +++^ _ | @ ! ? ~ @{ @} +++@end example +++ +++Some of the characters above were considered unworthy by the original +++Standard Hardware Representation: +++ +++@table @code +++@item ! +++It was considered unworthy because many installations didn't have a +++vertical bar base character, and @code{!} was used as a base character +++for @code{|}. Today every computer system features a vertical bar +++character, so @code{!} can qualify as a worthy character. +++@item & +++The Revised Report specifies that @code{&} is a monad, used as a +++symbol for the dyadic @code{@B{and}} operator. The Standard Hardware +++representation decided to turn it into an unworthy character, +++motivated by the fact that no nomads existed for the other logical +++operators @code{@B{not}} and @code{@B{or}}, and also with the goal of +++maintaining the set of worthy characters as small as possible to +++improve portability. Recognizing that the first motivation still +++holds, but not the second, this compiler re-instates @code{&} as a +++monad but doesn't use it as an alternative representation of the +++@code{@B{and}} operator. +++@item ~ +++The Standard Hardware Representation vaguely cites some ``severe +++difficulties'' with the hardware representation of the tilde +++character. Whatever these difficulties were at the time, they surely +++don't exist anymore. This compiler therefore recognizes @code{~} as a +++worthy character, and is used as a monad. +++@item ? +++The question mark character was omitted as a worthy character to limit +++the size of the worthy set. This compiler recognizes @code{?} as a +++worthy character, and is used as a monad. +++@item \ +++Back-slash wasn't included as a worthy character because back in 1975 +++it wasn't supported in EBCDIC (it is now). This compiler recognizes +++@code{\} as a worthy character. +++@item tab +++This compiler recognizes the tabulator character as a worthy +++character, and it is used as a typographical display feature. +++@end table +++ +++@node Base characters +++@section Base characters +++@cindex base characters +++ +++The worthy characters described in the previous section are to be +++interpreted symbolically rather than visually. The worthy character +++@code{|}, for example, is the vertical line character and generally +++looks the same in every system. The worthy character @code{space} is +++obviously referred by a symbolic name. +++ +++The actual visually distinguishable characters available in an +++installation are known as @dfn{base characters}. The Standard +++Hardware Representation allows implementations the possibility of +++using two or more base characters to represent a single worthy +++character. This was the case of the @code{|} character, which was +++represented in many implementations by either @code{|} or @code{!}. +++ +++This compiler uses the set of base characters corresponding to the +++subset of the Unicode character set that maps one to one to the set of +++worthy characters described in the previous section: +++ +++@example +++A-Z 65-90 +++a-z 97-122 +++space 32 +++tab 9 +++! 33 +++" 34 +++# 35 +++$ 36 +++% 37 +++& 38 +++' 39 +++( 40 +++) 41 +++* 42 ++++ 43 +++, 44 +++- 45 +++. 46 +++/ 47 +++: 58 +++; 59 +++< 60 +++= 61 +++> 62 +++? 63 +++@@ 64 +++[ 91 +++\ 92 +++] 93 +++^ 94 +++_ 95 +++| 124 +++~ 126 +++@end example +++ +++@node Stropping regimes +++@section Stropping regimes +++ +++The Algol 68 reference language establishes that certain source +++constructs, namely mode indications and operator indications, consist +++in a sequence of @dfn{bold letters} and @dfn{bold digits}, known as a +++@dfn{bold word}. In contrast, other constructs like identifiers, +++field selectors and labels, collectively known as @dfn{tags}, are +++composed of regular, non-bold letters and digits. +++ +++What is precisely a bold letter or digit, and how they differ from +++non-bold letters and digits, is not specified by the Report. This is +++no negligence, but a conscious effort at abstracting the definition of +++the so-called @dfn{strict language} from its representation. This +++allows different representations of the same language. +++ +++Some representations of Algol 68 are intended to be published in +++books, be it paper or electronic devices, and be consumed by persons. +++These are called @dfn{publication languages}. In publication +++languages bold letters and digits are typically represented by actual +++bold alphanumeric typographic marks. An Algol 68 program hand written +++on a napkin or a sheet of paper would typically represent bold letters +++and digits underlined, or stroked using a different color ink. +++ +++Other representations of Algol 68 are intended to be automatically +++processed by a computer. These representations are called +++@dfn{hardware languages}. Sometimes the hardware languages are also +++intended to be written and read by programmers; these are called +++@dfn{programming languages}. +++ +++Unfortunately, computer systems today usually do not yet provide +++readily usable and ergonomic bold or underline alphanumeric marks, +++despite the existence of Unicode and modern and sophisticated editing +++environments. The lack of appropriate input methods surely plays a +++role to explain this. Thus, the programming representation languages +++of Algol 68 should resort to a technique known as @dfn{stropping} in +++order to differentiate bold letters and digits from non-bold letters +++and digits. The set of rules specifying the representation of these +++characters is called a @dfn{stropping regime}. +++ +++There are three classical stropping regimes for Algol 68, which are +++standardized and specified in the Standard Hardware Representation +++normative document. These are @dfn{POINT stropping}, @dfn{RES +++stropping} and @dfn{UPPER stropping}. The following sections do a +++cursory tour over them; for more details the reader is referred to the +++Standard Hardware Representation. +++ +++This compiler implements UPPER stropping and SUPPER stropping. +++ +++@menu +++* POINT stropping:: +++* RES stropping:: +++* UPPER stropping:: +++* SUPPER stropping:: +++@end menu +++ +++@node POINT stropping +++@subsection POINT stropping +++ +++POINT stropping is in a way the most fundamental of the three standard +++regimes. It was designed to work in installations with limited +++character sets that provide only one alphabet, one set of digits, and +++a very restricted set of other symbols. +++ +++In POINT stropping a bold word is represented by its constituent +++letters and digits preceded by a point character. For example, the +++symbol @code{bold begin symbol} in the strict language, which is +++represented as @strong{begin} in bold face in the reference language, +++would be represented as @code{.BEGIN} in POINT stropping. +++ +++More examples are summarized in the following table. +++ +++@multitable @columnfractions .33 .33 .33 +++@headitem Strict language @tab Reference language @tab POINT stropping +++@item @code{true symbol} @tab @strong{true} @tab @code{.TRUE} +++@item @code{false symbol} @tab @strong{false} @tab @code{.FALSE} +++@item @code{integral symbol} @tab @strong{int} @tab @code{.INT} +++@item @code{completion symbol} @tab @strong{exit} @tab @code{.EXIT} +++@item @code{bold-letter-c-...} @tab @strong{crc32} @tab @code{.CRC32} +++@end multitable +++ +++In POINT stropping a tag is represented by writing its constituent +++non-bold letters and digits in order. But they are organized in +++several @dfn{taggles}. +++ +++Each taggle is a sequence of one or more letters and digits, +++optionally followed by an underscore character. For example, the tag +++@code{PRINT} is composed of a single taggle, but the tag +++@code{PRINT_TABLE} is composed of a first taggle @code{PRINT_} +++followed by a second taggle @code{TABLE}. +++ +++To improve readability it is possible to insert zero or more white +++space characters between the taggles in a tag. Therefore, the tag +++@code{PRINT_TABLE} could have been written @code{PRINT TABLE}, or even +++@code{PRINT_ TABLE}. This is the reason why Algol 68 identifiers, +++labels and field selectors can and do usually feature white spaces in +++them. +++ +++It is important to note that both the trailing underscore characters +++in taggles and the white spaces in a tag do not contribute anything to +++the denoted tag: these are just stropping artifacts aimed to improve +++readability. Therefore @code{FOOBAR} @code{FOO BAR}, @code{FOO_BAR} +++and @code{FOO_BAR_} are all representations of the same tag, that +++represents the +++@code{letter-f-letter-o-letter-o-letter-b-letter-a-letter-r} language +++construct. +++ +++Below is the text of an example Algol 68 procedure encoded in POINT +++stropping. +++ +++@example +++.PROC RECSEL OUTPUT RECORDS = .VOID: +++.BEGIN .BITS FLAGS +++ := (INCLUDE DESCRIPTORS | REC F DESCRIPTOR | REC F NONE); +++ .RECRSET RES = REC DB QUERY (DB, RECUTL TYPE, +++ RECUTL QUICK, FLAGS); +++ .RECWRITER WRITER := REC WRITER FILE NEW (STDOUT); +++ +++ SKIP COMMENTS .OF WRITER := .TRUE; +++ .IF RECUTL PRINT SEXPS +++ .THEN MODE .OF WRITER := REC WRITER SEXP .FI; +++ REC WRITE (WRITER, RES) +++.END +++@end example +++ +++@node RES stropping +++@subsection RES stropping +++ +++The early installations where Algol 68 ran not only featured a very +++restricted character set, but also suffered from limited storage and +++complex to use and time consuming input methods such as card punchers +++and readers. It was important for the representation of programs to +++be as compact as possible. +++ +++It is likely that is what motivated the introduction of the RES +++stropping regime. As its name implies, it removes the need of +++stropping many bold words by introducing @dfn{reserved words}. +++ +++A @dfn{reserved word} is one of the bold words specified in the +++section 9.4.1 of the Report as a representation of some symbol. +++Examples are @strong{at}, @strong{begin}, @strong{if}, @strong{int} +++and @strong{real}. +++ +++RES stropping encodes bold words and tags like POINT stropping, but if +++a bold word is a reserved word then it can then be written without a +++preceding point, achieving this way a more compact, and easier to +++read, representation for programs. +++ +++Introducing reserved words has the obvious disadvantage that some tags +++cannot be written the obvious way due to the possibility of conflicts. +++For example, to represent a tag @code{if} it is not possible to just +++write @code{IF}, because it conflicts with a reserved word, but this +++can be overcome easily (if not elegantly) by writing @code{IF_} +++instead. +++ +++Below is the @code{recsel output records} procedure again, this time +++encoded in RES stropping. +++ +++@example +++PROC RECSEL OUTPUT RECORDS = VOID: +++BEGIN BITS FLAGS +++ := (INCLUDE DESCRIPTORS | REC F DESCRIPTOR | REC F NONE); +++ .RECRSET RES = REC DB QUERY (DB, RECUTL TYPE, +++ RECUTL QUICK, FLAGS); +++ .RECWRITER WRITER := REC WRITER FILE NEW (STDOUT); +++ +++ SKIP COMMENTS OF WRITER := TRUE; +++ IF RECUTL PRINT SEXPS +++ THEN MODE .OF WRITER := REC WRITER SEXP FI; +++ REC WRITE (WRITER, RES) +++END +++@end example +++ +++Note how user-defined mode an operator indications still require +++explicit stropping. +++ +++@node UPPER stropping +++@subsection UPPER stropping +++ +++In time computers added support for more than one alphabet by +++introducing character sets with both upper and lower case letters, +++along with convenient ways to both input and display these. +++ +++In UPPER stropping the bold letters in bold word are represented by +++upper-case letters, whereas the letters in tags are represented by +++lower-case letters. +++ +++The notions of upper- and lower-case are not applicable to digits, but +++since the language syntax assures that it is not possible to have a +++bold word that starts with a digit, digits are considered to be bold +++if they follow a bold letter or another bold digit. +++ +++Below is the @code{recsel output records} procedure again, this time +++encoded in UPPER stropping. +++ +++@example +++PROC recsel output records = VOID: +++BEGIN BITS flags +++ := (include descriptors | rec f descriptor | rec f none); +++ RECRSET res = rec db query (db, recutl type, +++ recutl quick, flags); +++ RECWRITER writer := rec writer file new (stdout); +++ +++ skip comments of writer := TRUE; +++ IF recutl print sexps +++ THEN mode OF writer := rec writer sexp FI; +++ rec write (writer, res) +++END +++@end example +++ +++Note how in this regime it is almost never necessary to introduce bold +++tags with points. All in all, it looks much more natural to +++contemporary readers. UPPER stropping is in fact the stropping regime +++of choice today. It is difficult to think of any reason why anyone +++would resort to use POINT or RES stropping. +++ +++@node SUPPER stropping +++@subsection SUPPER stropping +++ +++In the SUPPER stropping regime bold words are written by writing a +++sequence of one or more @dfn{taggles}. Each taggle is written by +++writing a letter followed by zero or more other letters and digits and +++is optionally followed by a trailing underscore character. The first +++letter in a bold word shall be an upper-case letter. The rest of the +++letters in the bold word may be either upper- or lower-case. +++ +++For example, @code{RecRset}, @code{Rec_Rset} and @code{RECRset} are +++all different ways to represent the same mode indication. This allows +++to recreate popular naming conventions such as @code{CamelCase}. +++ +++As in the other stropping regimes, the casing of the letters and the +++underscore characters are not really part of the mode or operator +++indication. +++ +++Operator indications are also bold words and are written in exactly +++the same way than mode indications, but it is usually better to always +++use upper-case letters in operator indications. On one side, it looks +++better, especially in the case of dyadic operators where the asymmetry +++of, for example @code{Equal} would look odd, consider @code{m1 Equal +++m2} as opposed to @code{m1 EQUAL m2}. On the other side, tools like +++editors can make use of this convention in order to highlight operator +++indications differently than mode indications. +++ +++In the SUPPER stropping regime tags are written by writing a sequence +++of one or more @dfn{taggles}. Each taggle is written by writing a +++letter followed by zero or more other letters and digits and is +++optionally followed by a trailing underscore character. All letters +++in a tag shall be lower-case letters. +++ +++For example, the identifier @code{list} is represented by a single +++taggle, and it is composed by the letters @code{l}, @code{i}, @code{s} +++and @code{t}, in order. In the jargon of the strict language we would +++spell the tag as @code{letter-l-letter-i-letter-s-letter-t}. +++ +++The label @code{found_zero} is represented by two taggles, +++@code{found_} and @code{zero}, and it is composed by the letters +++@code{f}, @code{o}, @code{u}, @code{n}, @code{d}, @code{z}, @code{e}, +++@code{r} and @code{o}, in order. In the jargon of the strict language +++we would spell the tag as @code{letter-f-letter-o-letter-u-letter-n +++-letter-d-letter-z-letter-e-letter-r-letter-o}. +++ +++The identifier @code{crc_32} is likewise represented by two taggles, +++@code{crc_} and @code{32}. Note how the second taggle contains only +++digits. In the jargon of the strict language we would spell the tag +++as @code{letter-c-letter-r-letter-c-digit-three-digit-two}. +++ +++The underscore characters are not really part of the tag, but part of +++the stropping. For example, both @code{goto found_zero} and +++@code{goto foundzero} jump to the same label. +++ +++The @code{recsel output records} procedure, encoded in SUPPER +++stropping, looks like below. +++ +++@example +++proc recsel_output_records = void: +++begin bits flags +++ := (include_descriptors | rec_f_descriptor | rec_f_none); +++ RecRset res = rec_db_query (db, recutl_type, +++ recutl_uick, flags); +++ RecWriter writer := rec_writer_file_new (stdout); +++ +++ skip_comments of writer := true; +++ if recutl_print_sexps +++ then mode_ of writer := rec_writer_sexp fi; +++ rec_write (writer, res) +++end +++@end example +++ +++@node Monads and Nomads +++@section Monads and Nomads +++@cindex monads +++@cindex nomads +++ +++Algol68 operators, be them predefined or defined by the programmer, +++can be referred via either bold tags or sequences of certain +++non-alphabetic symbols. For example, the dyadic operator @code{+} is +++defined for many modes to perform addition, the monadic operator +++@code{@B{entier}} gets a real value and rounds it to an integral +++value, and the operator @code{:=:} is the identity relation. Many +++operators provide both bold tag names and symbols names, like in the +++case of @code{:/=:} that can also be written as @code{@B{isnt}}. +++ +++Bold tags are lexically well delimited, and if the same tag is used to +++refer to a monadic operator and to a dyadic operator, no ambiguity can +++arise. For example, in the following program it is clear that the +++second instance of @code{@B{plus}} refers to the monadic operator, and +++the first instance refers to the dyadic operator@footnote{If one would +++write @code{@B{plusplus}}, it would be a third different bold tag.}. +++ +++@example +++@B{op} @B{PLUS} = (@B{int} a, b) @B{int}: a + b, +++ @B{PLUS} = (@B{int} a): a; +++@B{int} val = 2 @B{PLUS} @B{PLUS} 3; +++@end example +++ +++On the other hand, symbols are not lexically delimited as words, and +++one symbol can appear immediately following another symbol. This can +++lead to ambiguities. For example, if we were to define a C-like +++monadic operator @code{++} like: +++ +++@example +++@B{op} ++ = (@B{ref} @B{int} a) @B{int}: (@B{int} t = a; a +:=1; t); +++@end example +++ +++@noindent +++Then the expression @code{++a} would be ambiguous: is it @code{++a} or +++@code{+(+a)}?. In a similar way, if we would use @code{++} as the +++name of a dyadic operator, an expression like @code{a++b} could be +++also interpreted as both @code{a++b} and @code{a+(+b)}. +++ +++To avoid these problems Algol 68 divides the symbols which are +++suitable to appear in the name of an operator into two classes: monads +++and nomads. @dfn{Monads} are symbols that can be used as monadic +++operators. @dfn{Nomads} are symbols which can be used as both monadic +++or dyadic operators. Given these two sets, the rules to conform a +++valid operator are: +++ +++@itemize @minus +++@item A bold tag. +++@item Any monad. +++@item A monad followed by a nomad. +++@item A monad optionally followed by a nomad followed by either @code{:=} or @code{=:}, but not by both. +++@end itemize +++ +++@noindent +++In the GNU Algol 68 compiler: +++ +++@itemize @minus +++@item The set of monads is @code{%^&+-~!?}. +++@item The set of nomads is @code{> 1} and +++@code{1 - small real < 1}. +++@end deftypevr +++ +++@deftypevr Constant @B{int} {bits lengths} +++1 plus the number of extra widths of bits which are meaningful. +++@end deftypevr +++ +++@deftypevr Constant @B{int} {bits shorths} +++1 plus the number of extra shorths of bits which are meaningful. +++@end deftypevr +++ +++@deftypevr Constant @B{int} {bits width} +++@deftypevrx Constant @B{int} {long bits width} +++@deftypevrx Constant @B{int} {long long bits width} +++The number of bits in a @code{@B{bits}} value. +++@end deftypevr +++ +++@deftypevr Constant @B{int} {bytes lengths} +++1 plus the number of extra widths of bytes which are meaningful. +++@end deftypevr +++ +++@deftypevr Constant @B{int} {bytes shorths} +++1 plus the number of extra shorths of bytes which are meaningful. +++@end deftypevr +++ +++@deftypevr Constant @B{int} {bytes width} +++@deftypevrx Constant @B{int} {long bytes width} +++@deftypevrx Constant @B{int} {long long bytes width} +++The number of chars in a @code{@B{bytes}} value. +++@end deftypevr +++ +++@deftypevr Constant @B{int} {max abs char} +++The largest value which @code{@B{abs}} of a @code{@B{char}} can yield. +++@end deftypevr +++ +++@deftypevr Constant @B{char} {null character} +++Some character. +++@end deftypevr +++ +++@deftypevr Constant @B{char} flip +++@deftypevrx Constant @B{char} flop +++Characters used to represent @code{@B{true}} and @code{@B{false}} +++boolean values in textual transput. +++@end deftypevr +++ +++@deftypevr Constant @B{char} {error char} +++Character used to represent the digit of a value resulting from a +++conversion error in textual transput. +++@end deftypevr +++ +++@deftypevr Constant @B{char} blank +++The space character. +++@end deftypevr +++ +++@deftypevr Constant {@B{l} @B{real}} {L pi} +++The number pi. +++@end deftypevr +++ +++@node Standard modes +++@section Standard modes +++ +++@deftp Mode @B{void} +++The only value of this mode is @code{@B{empty}}. +++@end deftp +++ +++@deftp Mode @B{bool} +++Mode for the boolean truth values @code{@B{true}} and @code{@B{false}}. +++@end deftp +++ +++@deftp Mode {@B{l} @B{int}} +++Modes for signed integral values. Each @code{@B{long}} or +++@code{@B{short}} may increase or decrease the range of the domain, +++depending on the characteristics of the current target. Further +++@code{@B{long}}s and @code{@B{short}}s may be specified with no +++effect. +++@end deftp +++ +++@deftp Mode {@B{l} @B{real}} +++Modes for signed real values. Each @code{@B{long}} may increase the +++upper range of the domain, depending on the characteristics of the +++current target. Further @code{@B{long}}s may be specified but with no +++effect. +++@end deftp +++ +++@deftp Mode @B{char} +++Mode for character values. The character values are mapped one-to-one +++to code points in the 21-bit space of Unicode. +++@end deftp +++ +++@deftp Mode @B{string} {= @B{flex}[1:0]@B{char}} +++Mode for sequences of characters. This is implemented as a flexible +++row of @code{@B{char}} values. +++@end deftp +++ +++@deftp Mode {@B{l} @B{compl}} {= @B{struct} (@B{real} re,im)} +++Modes for complex values. Each @code{@B{long}} may increase the +++precision of both the real and imaginary parts of the numbers, +++depending on the characteristics of the current target. Further +++@code{@B{long}}s may be specified with no effect. +++@end deftp +++ +++@deftp Mode {@B{l} @B{bits}} +++Compact and efficient representation of a row of boolean values. Each +++@code{@B{long}} may increase the number of booleans that can be packed +++in a bits, depending on the characteristics of the current target. +++@end deftp +++ +++@deftp Mode {@B{l} @B{bytes}} +++Compact and efficient representation of a row of character values. +++Each @code{@B{long}} may increase the number of characters that can be +++packed in a bytes, depending on the characteristics of the current +++target. +++@end deftp +++ +++@node Standard priorities +++@section Standard priorities +++ +++@table @code +++@item 1 +++@itemize @bullet +++@item @code{plusab}, @code{+:=} +++@item @code{minusab}, @code{-:=} +++@item @code{timesab}, @code{*:=} +++@item @code{divab}, @code{/:=} +++@item @code{overab}, @code{%:=} +++@item @code{modab}, @code{%*:=} +++@item @code{plusto}, @code{+=:} +++@end itemize +++ +++@item 2 +++@itemize @bullet +++@item @code{or} +++@end itemize +++ +++@item 3 +++@itemize @bullet +++@item @code{and} +++@item @code{xor} +++@end itemize +++ +++@item 4 +++@itemize @bullet +++@item @code{@B{eq}}, @code{=} +++@item @code{@B{ne}}, @code{/=} +++@end itemize +++ +++@item 5 +++@itemize @bullet +++@item @code{@B{lt}}, @code{<}, +++@item @code{@B{le}}, @code{<=} +++@item @code{@B{gt}}, @code{>} +++@item @code{@B{ge}}, @code{>=} +++@end itemize +++ +++@item 6 +++@itemize @bullet +++@item @code{+} +++@item @code{-} +++@end itemize +++ +++@item 7 +++@itemize @bullet +++@item @code{*} +++@item @code{/} +++@item @code{@B{over}}, @code{%} +++@item @code{@B{mod}}, @code{%*} +++@item @code{@B{elem}} +++@end itemize +++ +++@item 8 +++@itemize @bullet +++@item @code{**} +++@item @code{@B{shl}}, @code{@B{up}} +++@item @code{@B{shr}}, @code{@B{down}} +++@item @code{@B{up}}, @code{@B{down}} +++@item @code{^} +++@item @code{@B{lwb}} +++@item @code{@B{upb}} +++@end itemize +++ +++@item 9 +++@itemize @bullet +++@item @code{@B{i}} +++@item @code{+*} +++@end itemize +++@end table +++ +++@node Rows operators +++@section Rows operators +++ +++The following operators work on any row mode, denoted below using the +++pseudo-mode @code{@B{rows}}. +++ +++@deftypefn Operator {} {@B{lwb}} {= (@B{rows} a) @B{int}} +++Monadic operator that yields the lower bound of the first bound pair +++of the descriptor of the value of @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{upb}} {= (@B{rows} a) @B{int}} +++Monadic operator that yields the upper bound of the first bound pair +++of the descriptor of the value of @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{lwb}} {= (@B{int} n, @B{rows} a) @B{int}} +++Dyadic operator that yields the lower bound in the n-th bound pair of +++the descriptor of the value of @code{a}, if that bound pair exists. +++Attempting to access a non-existing bound pair results in a run-time +++error. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{upb}} {= (@B{int} n, @B{rows} a) @B{int}} +++Dyadic operator that yields the upper bound in the n-th bound pair of +++the descriptor of the value of @code{a}, if that bound pair exists. +++Attempting to access a non-existing bound pair results in a run-time +++error. +++@end deftypefn +++ +++@node Boolean operators +++@section Boolean operators +++ +++@deftypefn Operator {} {@B{not}} {= (@B{bool} a) @B{bool}} +++@deftypefnx Operator {} {~} {= (@B{bool} a) @B{bool}} +++Monadic operator that yields the logical negation of its operand. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{or}} {= (@B{bool} a, b) @B{bool}} +++Dyadic operator that yields the logical ``or'' of its operands. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{and}} {= (@B{bool} a, b) @B{bool}} +++@deftypefnx Operator {} {@B{&}} {= (@B{bool} a, b) @B{bool}} +++Dyadic operator that yields the logical ``and'' of its operands. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{eq}} {= (@B{bool} a, b) @B{bool}} +++@deftypefnx Operator {} {=} {= (@B{bool} a, b) @B{bool}} +++Dyadic operator that yields @code{@B{true}} if its operands are the +++same truth value, @code{@B{false}} otherwise. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ne}} {= (@B{bool} a, b) @B{bool}} +++@deftypefnx Operator {} {/=} {= (@B{bool} a, b) @B{bool}} +++Dyadic operator that yields @code{@B{false}} if its operands are the +++same truth value, @code{@B{true}} otherwise. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{abs}} {= (@B{bool} a) @B{int}} +++Monadic operator that yields 1 if its operand is @code{@B{true}}, and +++0 if its operand is @code{@B{false}}. +++@end deftypefn +++ +++@node Integral operators +++@section Integral operators +++ +++@subsection Arithmetic +++ +++@deftypefn Operator {} {+} {= (@B{l} @B{int} a) @B{l} @B{int}} +++Monadic operator that yields the affirmation of its operand. +++@end deftypefn +++ +++@deftypefn Operator {} {-} {= (@B{l} @B{int} a) @B{l} @B{int}} +++Monadic operator that yields the negative of its operand. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{int} a) @B{l} @B{int}} +++Monadic operator that yields the absolute value of its operand. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{sign}} {= (@B{l} @B{int} a) @B{int}} +++Monadic operator that yields -1 if @code{a} if negative, 0 if @code{a} +++is zero and 1 if @code{a} is positive. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{odd}} {= (@B{l} @B{int} a) @B{bool}} +++Monadic operator that yields @code{@B{true}} if its operand is odd, +++@code{@B{false}} otherwise. +++@end deftypefn +++ +++@deftypefn Operator {} {+} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++Dyadic operator that yields the addition of its operands. +++@end deftypefn +++ +++@deftypefn Operator {} {-} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++Dyadic operator that yields @code{b} subtracted from @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {*} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++Dyadic operator that yields the multiplication of its operands. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{over}} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++@deftypefnx Operator {} {%} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++Dyadic operator that yields the integer division of @code{a} by +++@code{b}, rounding the quotient toward zero. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{mod}} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++@deftypefnx Operator {} {%*} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++Dyadic operator that yields the remainder of the division of @code{a} +++by @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {/} {= (@B{l} @B{int} a, b) @B{l} @B{real}} +++Dyadic operator that yields the integer division with real result of +++@code{a} by @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {**} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++@deftypefnx Operator {} {^} {= (@B{l} @B{int} a, b) @B{l} @B{int}} +++Dyadic operator that yields @code{a} raised to the exponent @code{b}. +++@end deftypefn +++ +++@subsection Arithmetic combined with assignation +++ +++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, +++assigns the result of the operation to the name @code{a} and then +++yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{minusab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++@deftypefnx Operator {} {-:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++Dyadic operator that calculates @code{a - b}, assigns the result of +++the operation to the name @code{a} and then yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++Dyadic operator that calculates @code{a * b}, assigns the result of +++the operation to the name @code{a} and then yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{overab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++@deftypefnx Operator {} {%:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++Dyadic operator that calculates @code{a % b}, assigns the result of +++the operation to the name @code{a} and then yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{modab}} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++@deftypefnx Operator {} {%*:=} {= (@B{ref} @B{l} @B{int} a, @B{l} @B{int} b) @B{ref} @B{l} @B{int}} +++Dyadic operator that calculates @code{a %* b}, assigns the result of +++the operation to the name @code{a} and then yields @code{a}. +++@end deftypefn +++ +++@subsection Relational +++ +++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{int} a, b) @B{bool}} +++@deftypefnx Operator {} {=} {= (@B{l} @B{int} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are equal. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{int} a, b) @B{bool}} +++@deftypefnx Operator {} {/=} {= (@B{l} @B{int} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are not equal. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{int} a, b) @B{bool}} +++@deftypefnx Operator {} {<} {= (@B{l} @B{int} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is less than @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{int} a, b) @B{bool}} +++@deftypefnx Operator {} {<=} {= (@B{l} @B{int} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is less than, or equal to +++@code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{int} a, b) @B{bool}} +++@deftypefnx Operator {} {>} {= (@B{l} @B{int} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is greater than +++@code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{int} a, b) @B{bool}} +++@deftypefnx Operator {} {>=} {= (@B{l} @B{int} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is greater than, or equal +++to @code{b}. +++@end deftypefn +++ +++@subsection Conversion +++ +++@deftypefn Operator {} {@B{shorten}} {= (@B{short} @B{int} a) @B{short} @B{short} @B{int}} +++@deftypefnx Operator {} {@B{shorten}} {= (@B{int} a) @B{short} @B{int}} +++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{int} a) @B{int}} +++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{int} a) @B{long} @B{int}} +++Monadic operator that yields, if it exists, the integral value that +++can be lengthened to the value of @code{a}. If the value doesn't +++exist then the operator yields either the most positive integral value +++in the destination mode, if @code{a} is bigger than that value, or the +++most negative integral value in the destination mode, if @code{a} is +++smaller than that value. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{leng}} {= (@B{short} @B{short} @B{int} a) @B{short} @B{int}} +++@deftypefnx Operator {} {@B{leng}} {= (@B{short} @B{int} a) @B{int}} +++@deftypefnx Operator {} {@B{leng}} {= (@B{int} a) @B{long} @B{int}} +++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{int} a) @B{long} @B{long} @B{int}} +++Monadic operator that yields the integral value lengthened from the +++value of @code{a}. +++@end deftypefn +++ +++@node Real operators +++@section Real operators +++ +++@subsection Arithmetic +++ +++@deftypefn Operator {} {+} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Monadic operator that yields the affirmation of its operand. +++@end deftypefn +++ +++@deftypefn Operator {} {-} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Monadic operator that yields the negative of its operand. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Monadic operator that yields the absolute value of its operand. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{sign}} {= (@B{l} @B{real} a) @B{int}} +++Monadic operator that yields -1 if @code{a} if negative, 0 if @code{a} +++is zero and 1 if @code{a} is positive. +++@end deftypefn +++ +++@deftypefn Operator {} {+} {= (@B{l} @B{real} a, b) @B{l} @B{real}} +++Dyadic operator that yields the addition of its operands. +++@end deftypefn +++ +++@deftypefn Operator {} {-} {= (@B{l} @B{real} a, b) @B{l} @B{real}} +++Dyadic operator that yields @code{b} subtracted from @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {*} {= (@B{l} @B{real} a, b) @B{l} @B{real}} +++Dyadic operator that yields the multiplication of its operands. +++@end deftypefn +++ +++@deftypefn Operator {} {/} {= (@B{l} @B{real} a, b) @B{l} @B{real}} +++Dyadic operator that yields the realeger division with real result of +++@code{a} by @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {**} {= (@B{l} @B{real} a, b) @B{l} @B{real}} +++@deftypefnx Operator {} {^} {= (@B{l} @B{real} a, b) @B{l} @B{real}} +++Dyadic operator that yields @code{a} raised to the real exponent @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {**} {= (@B{l} @B{real} a, @B{int} b) @B{l} @B{real}} +++@deftypefnx Operator {} {^} {= (@B{l} @B{real} a, @B{int} b) @B{l} @B{real}} +++Dyadic operator that yields @code{a} raised to the integral exponent +++@code{b}. +++@end deftypefn +++ +++@subsection Arithmetic combined with assignation +++ +++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} +++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} +++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, +++assigns the result of the operation to the name @code{a} and then +++yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{minusab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} +++@deftypefnx Operator {} {-:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} +++Dyadic operator that calculates @code{a - b}, assigns the result of +++the operation to the name @code{a} and then yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} +++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} +++Dyadic operator that calculates @code{a * b}, assigns the result of +++the operation to the name @code{a} and then yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{divab}} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} +++@deftypefnx Operator {} {/:=} {= (@B{ref} @B{l} @B{real} a, @B{l} @B{real} b) @B{ref} @B{l} @B{real}} +++Dyadic operator that calculates @code{a / b}, assigns the result of +++the operation to the name @code{a} and then yields @code{a}. +++@end deftypefn +++ +++@subsection Relational +++ +++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{real} a, b) @B{bool}} +++@deftypefnx Operator {} {=} {= (@B{l} @B{real} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are equal. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{real} a, b) @B{bool}} +++@deftypefnx Operator {} {/=} {= (@B{l} @B{real} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are not equal. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{real} a, b) @B{bool}} +++@deftypefnx Operator {} {<} {= (@B{l} @B{real} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is less than @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{real} a, b) @B{bool}} +++@deftypefnx Operator {} {<=} {= (@B{l} @B{real} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is less than, or equal to +++@code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{real} a, b) @B{bool}} +++@deftypefnx Operator {} {>} {= (@B{l} @B{real} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is greater than +++@code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{real} a, b) @B{bool}} +++@deftypefnx Operator {} {>=} {= (@B{l} @B{real} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is greater than, or equal +++to @code{b}. +++@end deftypefn +++ +++@subsection Conversions +++ +++@deftypefn Operator {} {@B{round}} {= (@B{l} @B{real} a) @B{int}} +++Monadic operator that yields the nearest integer to its operand. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{entier}} {= (@B{l} @B{real} a) @B{int}} +++Monadic operator that yields the integer equal to @code{a}, or the +++next integer below (more negative than) @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{shorten}} {= (@B{long} @B{real} a) @B{real}} +++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{real} a) @B{long} @B{real}} +++Monadic operator that yields, if it exists, the real value that +++can be lengthened to the value of @code{a}. If the value doesn't +++exist then the operator yields either the most positive real value +++in the destination mode, if @code{a} is bigger than that value, or the +++most negative real value in the destination mode, if @code{a} is +++smaller than that value. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{leng}} {= (@B{real} a) @B{long} @B{real}} +++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{real} a) @B{long} @B{long} @B{real}} +++Monadic operator that yields the real value lengthened from the +++value of @code{a}. +++@end deftypefn +++ +++@node Character operators +++@section Character operators +++ +++@subsection Relational +++ +++@deftypefn Operator {} {@B{eq}} {= (@B{char} a, b) @B{bool}} +++@deftypefnx Operator {} {=} {= (@B{char} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are equal. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ne}} {= (@B{char} a, b) @B{bool}} +++@deftypefnx Operator {} {/=} {= (@B{char} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are not equal. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{lt}} {= (@B{char} a, b) @B{bool}} +++@deftypefnx Operator {} {<} {= (@B{char} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is less than @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{le}} {= (@B{char} a, b) @B{bool}} +++@deftypefnx Operator {} {<=} {= (@B{char} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is less than, or equal to +++@code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{gt}} {= (@B{char} a, b) @B{bool}} +++@deftypefnx Operator {} {>} {= (@B{char} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is greater than @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ge}} {= (@B{char} a, b) @B{bool}} +++@deftypefnx Operator {} {>=} {= (@B{char} a, b) @B{bool}} +++Dyadic operator that yields whether @code{a} is greater than, or equal +++to @code{b}. +++@end deftypefn +++ +++@subsection Conversions +++ +++@deftypefn Operator {} {@B{ABS}} {= (@B{char} a) @B{int}} +++Monadic operator that yields an unique integer for each permissable +++value of @code{@B{char}}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{REPR}} {= (@B{int} a) @B{char}} +++The opposite of @code{@B{abs}} of a character. +++@end deftypefn +++ +++@node String operators +++@section String operators +++ +++@subsection Relational +++ +++@deftypefn Operator {} {@B{eq}} {= (@B{string} a, b) @B{bool}} +++@deftypefnx Operator {} {=} {= (@B{string} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are equal. Two +++strings are equal if they contain the same sequence of characters. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ne}} {= (@B{string} a, b) @B{bool}} +++@deftypefnx Operator {} {/=} {= (@B{string} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are not equal. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{lt}} {= (@B{string} a, b) @B{bool}} +++@deftypefnx Operator {} {<} {= (@B{string} a, b) @B{bool}} +++Dyadic operator that yields whether the string @code{a} is less than +++the string @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{le}} {= (@B{string} a, b) @B{bool}} +++@deftypefnx Operator {} {<=} {= (@B{string} a, b) @B{bool}} +++Dyadic operator that yields whether the string @code{a} is less than, +++or equal to string @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{gt}} {= (@B{string} a, b) @B{bool}} +++@deftypefnx Operator {} {>} {= (@B{string} a, b) @B{bool}} +++Dyadic operator that yields whether the string @code{a} is greater +++than the string @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ge}} {= (@B{string} a, b) @B{bool}} +++@deftypefnx Operator {} {>=} {= (@B{string} a, b) @B{bool}} +++Dyadic operator that yields whether the string @code{a} is greater +++than, or equal to the string @code{b}. +++@end deftypefn +++ +++@subsection Composition +++ +++@deftypefn Operator {} {+} {= (@B{string} a, b) @B{string}} +++Dyadic operator that yields the concatenation of the two given +++strings as a new string. +++@end deftypefn +++ +++@deftypefn Operator {} {+} {= (@B{string} a, @B{char} b) @B{string}} +++Dyadic operator that yields the concatenation of the given string +++@code{a} and a string whose contents are the character @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {*} (= (@B{int} a, @B{string} b) @B{string}) +++@deftypefnx Operator {} {*} (= (@B{string} b, @B{int} a) @B{string}) +++Dyadic operator that yields the string @code{a} concatenated @code{a} +++times to itself. If @code{a} is less than zero then it is interpreted +++to be zero. +++@end deftypefn +++ +++@subsection Composition combined with assignation +++ +++@deftypefn Operator {} {@B{plusab}} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} +++@deftypefnx Operator {} {+:=} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} +++@dfn{Plus and become}. Dyadic operator that calculates @code{a + b}, +++assigns the result of the operation to the name @code{a} and then +++yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{plusto}} {= (@B{string} b, @B{ref} @B{string} a) @B{ref} @B{string}} +++@deftypefnx Operator {} {+=:} {= (@B{string} b, @B{ref} @B{string} b) @B{ref} @B{string}} +++Dyadic operator that calculates @code{a + b}, assigns the result of +++the operation to the name @code{a} and then yields @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{timesab}} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{string}} +++@deftypefnx Operator {} {*:=} {= (@B{ref} @B{string} a, @B{string} b) @B{ref} @B{stringl}} +++@dfn{Plus and become}. Dyadic operator that calculates @code{a * b}, +++assigns the result of the operation to the name @code{a} and then +++yields @code{a}. +++@end deftypefn +++ +++@node Complex operators +++@section Complex operators +++ +++@node Bits operators +++@section Bits operators +++ +++@subsection Logical +++ +++@deftypefn Operator {} {@B{NOT}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} +++@deftypefnx Operator {} {~} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} +++Monadic operator that yields the element-wise not logical operation in +++the elements of the given bits operand. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{AND}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} +++@deftypefnx Operator {} {&} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} +++Dyadic operator that yields the element-wise and logical operation in +++the elements of the given bits operands. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{OR}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} +++Dyadic operator that yields the element-wise ``or'' logical operation +++in the elements of the given bits operands. +++@end deftypefn +++ +++@subsection Shifting +++ +++@deftypefn Operator {} {@B{SHL}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} +++@deftypefnx Operator {} {@B{UP}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} +++Dyadic operator that yields the given bits operand shifted @code{n} +++positions to the left. Extra elements introduced on the right are +++initialized to @code{@B{false}}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{SHR}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} +++@deftypefnx Operator {} {@B{DOWN}} {= (@B{l} @B{bits} a, @B{int} n) @B{l} @B{bits}} +++Dyadic operator that yields the given bits operand shifted @code{n} +++positions to the right. Extra elements introduced on the left are +++initialized to @code{@B{false}}. +++@end deftypefn +++ +++@subsection Relational +++ +++@deftypefn Operator {} {@B{eq}} {= (@B{l} @B{bits} a, b) @B{bool}} +++@deftypefnx Operator {} {=} {= (@B{l} @B{bits} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are equal. Two +++bits are equal if they contain the same sequence of booleans. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ne}} {= (@B{l} @B{bits} a, b) @B{bool}} +++@deftypefnx Operator {} {/=} {= (@B{l} @B{bits} a, b) @B{bool}} +++Dyadic operator that yields whether its operands are not equal. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{lt}} {= (@B{l} @B{bits} a, b) @B{bool}} +++@deftypefnx Operator {} {<} {= (@B{l} @B{bits} a, b) @B{bool}} +++Dyadic operator that yields whether the bits @code{a} is less than +++the bits @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{le}} {= (@B{l} @B{bits} a, b) @B{bool}} +++@deftypefnx Operator {} {<=} {= (@B{l} @B{bits} a, b) @B{bool}} +++Dyadic operator that yields whether the bits @code{a} is less than, +++or equal to bits @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{gt}} {= (@B{l} @B{bits} a, b) @B{bool}} +++@deftypefnx Operator {} {>} {= (@B{l} @B{bits} a, b) @B{bool}} +++Dyadic operator that yields whether the bits @code{a} is greater than +++the bits @code{b}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{ge}} {= (@B{l} @B{bits} a, b) @B{bool}} +++@deftypefnx Operator {} {>=} {= (@B{l} @B{bits} a, b) @B{bool}} +++Dyadic operator that yields whether the bits @code{a} is greater +++than, or equal to the bits @code{b}. +++@end deftypefn +++ +++@subsection Conversions +++ +++@deftypefn Operator {} {@B{abs}} {= (@B{l} @B{bits} a) @B{l} @B{int}} +++Monadic operator that yields the integral value whose constituent bits +++correspond to the booleans stored in @code{a}. @xref{@code{@B{bin}} +++and @code{@B{abs}} of negative integral values}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{bin}} {= (@B{l} @B{int} a) @B{l} @B{bits}} +++Monadic operator that yields the bits value whose boolean elements map +++the bits in the given integral operand. @xref{@code{@B{bin}} and +++@code{@B{abs}} of negative integral values}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{shorten}} {= (@B{long} @B{bits} a) @B{bits}} +++@deftypefnx Operator {} {@B{shorten}} {= (@B{long} @B{long} @B{bits} a) @B{long} @B{bits}} +++Monadic operator that yields the bits value that can be lengthened to +++the value of @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{leng}} {= (@B{bits} a) @B{long} @B{bits}} +++@deftypefnx Operator {} {@B{leng}} {= (@B{long} @B{bits} a) @B{long} @B{long} @B{bits}} +++Monadic operator that yields the bits value lengthened from the value +++of @code{a}. The lengthened value features @code{@B{false}} in the +++extra left positions added to match the lengthened size. +++@end deftypefn +++ +++@node Bytes operators +++@section Bytes operators +++ +++@node Semaphore operators +++@section Semaphore operators +++ +++@node Math procedures +++@section Math procedures +++ +++@subsection Arithmetic +++ +++@deftypefn Procedure {} {@B{sqrt}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the square root of the given real argument. +++@end deftypefn +++ +++@subsection Logarithms +++ +++@deftypefn Procedure {} {@B{ln}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the base @code{e} logarithm of the given real +++argument. +++@end deftypefn +++ +++@deftypefn Procedure {} {@B{exp}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the exponential function of the given real +++argument. This is the inverse of @code{@B{ln}}. +++@end deftypefn +++ +++@subsection Trigonometric +++ +++@deftypefn Procedure {} {@B{sin}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the sin trigonometric function of the given real +++argument. +++@end deftypefn +++ +++@deftypefn Procedure {} {@B{arcsin}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the arc-sin trigonometric function of the given real +++argument. +++@end deftypefn +++ +++@deftypefn Procedure {} {@B{cos}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the cos trigonometric function of the given real +++argument. +++@end deftypefn +++ +++@deftypefn Procedure {} {@B{arccos}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the arc-cos trigonometric function of the given real +++argument. +++@end deftypefn +++ +++@deftypefn Procedure {} {@B{tan}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the tan trigonometric function of the given real +++argument. +++@end deftypefn +++ +++@deftypefn Procedure {} {@B{arctan}} {= (@B{l} @B{real} a) @B{l} @B{real}} +++Procedure that yields the arc-tan trigonometric function of the given +++real argument. +++@end deftypefn +++ +++@node Extended prelude +++@chapter Extended prelude +++@cindex prelude, extended +++ +++This chapter documents the GNU extensions to the standard prelude. +++The facilities documented below are available to Algol 68 programs +++only if the @option{gnu68} language dialect is selected, which is the +++default. +++ +++The extended prelude is available to Algol 68 programs without needing +++to import any module, provided they are compiled as @code{gnu68} code, +++which is the default. +++ +++@menu +++* Extended priorities:: Priorities of extended operators. +++* Extended environment enquiries:: Information about the implementation. +++* Extended rows operators:: Rows and associated operations. +++* Extended boolean operators:: Operations on boolean operands. +++* Extended bits operators:: Bits and associated operations. +++* Extended math procedures:: Mathematical constants and functions. +++@end menu +++ +++@node Extended priorities +++@section Extended priorities +++ +++@table @code +++@item 3 +++@itemize @bullet +++@item @code{@B{xor}} +++@end itemize +++ +++@item 8 +++@itemize @bullet +++@item @code{@B{elems}} +++@end itemize +++@end table +++ +++@node Extended environment enquiries +++@section Extended environment enquiries +++ +++An @dfn{environment enquiry} is a constant, whose value may be useful +++to the programmer, that reflects some characteristic of the particular +++implementation. The values of these enquiries are also determined by +++the architecture and operating system targeted by the compiler. +++ +++@deftypevr Constant {@B{l} @B{int}} {L min int} +++The most negative integral value. +++@end deftypevr +++ +++@deftypevr Constant {@B{l} @B{real}} {L min real} +++The most negative real value. +++@end deftypevr +++ +++@deftypevr Constant {@B{l} @B{real}} {L infinity} +++Positive infinity expressed in a real value. +++@end deftypevr +++ +++@deftypevr Constant {@B{l} @B{real}} {L minus infinity} +++Negative infinity expressed in a real value. +++@end deftypevr +++ +++@deftypevr Constant @B{char} {replacement char} +++A character that is unknown, unrecognizable or unrepresentable in +++Unicode. +++@end deftypevr +++ +++@deftypevr Constant @B{char} {eof char} +++@B{char} value that doesn't denote an actual char, but an end-of-file +++situation. +++@end deftypevr +++ +++@node Extended rows operators +++@section Extended rows operators +++ +++The following operators work on any row mode, denoted below using the +++pseudo-mode @code{@B{rows}}. +++ +++@deftypefn Operator {} {@B{elems}} {= (@B{rows} a) @B{int}} +++Monadic operator that yields the number of elements implied by the +++first bound pair of the descriptor of the value of @code{a}. +++@end deftypefn +++ +++@deftypefn Operator {} {@B{elems}} {= (@B{int} n, @B{rows} a) @B{int}} +++Dyadic operator that yields the number of elements implied by the n-th +++bound pair of the descriptor of the value of @code{a}. +++@end deftypefn +++ +++@node Extended boolean operators +++@section Extended boolean operators +++ +++@deftypefn Operator {} {@B{xor}} {= (@B{bool} a, b) @B{bool}} +++Dyadic operator that yields the exclusive-or operation of the given +++boolean arguments. +++@end deftypefn +++ +++@node Extended bits operators +++@section Extended bits operators +++ +++@deftypefn Operator {} {@B{xor}} {= (@B{l} @B{bits} a, b) @B{l} @B{bits}} +++Dyadic operator that yields the bit exclusive-or operation of the +++given bits arguments. +++@end deftypefn +++ +++@node Extended math procedures +++@section Extended math procedures +++ +++@subsection Logarithms +++ +++@deftypefn Procedure {} {@B{log}} {= (@B{l} @B{real} a, b) @B{l} @B{real}} +++Procedure that calculates the base ten logarithm of the given arguments. +++@end deftypefn +++ +++@node POSIX prelude +++@chapter POSIX prelude +++ +++The POSIX prelude provides facilities to perform simple transput (I/O) +++based on POSIX file descriptors, accessing the file system, +++command-line arguments, environment variables, etc. +++ +++This prelude is available to Algol 68 programs without needing to +++import any module, provided they are compiled as @code{gnu68} code, +++which is the default. +++ +++@menu +++* POSIX process:: Process exit status. +++* POSIX command line:: Parsing command-line arguments. +++* POSIX environment:: Environment variables. +++* POSIX errors:: Error handling and error descriptions. +++* POSIX files:: Creating, opening and closing files. +++* POSIX sockets:: Communication endpoints. +++* POSIX string transput:: Reading and writing characters and strings. +++@end menu +++ +++@node POSIX process +++@section POSIX process +++ +++The Algol 68 program can report an exit status to the operating system +++once they stop running. The exit status reported by default is zero, +++which corresponds to success. +++ +++@deftypefn Procedure {} {set exit status} {= (@B{int} status)} +++Procedure that sets the exit status to report to the operating system +++once the program stop executing. The default exit status is 0 which, +++by convention, is interpreted by POSIX systems as success. A value +++different to zero is interpreted as an error status. This procedure +++can be invoked more than one, the previous exit status being +++overwritten. +++@end deftypefn +++ +++@node POSIX command line +++@section POSIX command line +++ +++Algol 68 programs can access the command-line arguments passed to them +++by using the following procedures. +++ +++@deftypefn Procedure {} {argc} {= @B{int}} +++Procedure that yields the number of arguments passed in the command +++line, including the name of the program. +++@end deftypefn +++ +++@deftypefn Procedure {} {argv} {= (@B{int} n) @B{string}} +++Procedure that yields the @code{n}th argument passed in the command +++line. The first argument is always the name used to invoke the +++program. If @code{n} is out of range then this procedure returns the +++empty string. +++@end deftypefn +++ +++@node POSIX environment +++@section POSIX environment +++ +++@deftypefn Procedure {} {getenv} {= (@B{string} varname) @B{string}} +++Procedure that yields the value of the environment variable +++@code{varname} as a string. If the specified environmental variable +++is not defined the this procedure returns an empty string. +++@end deftypefn +++ +++@node POSIX errors +++@section POSIX errors +++ +++When a call to a procedure in this prelude results in an error, the +++called procedure signals the error in some particular way and also +++sets a global @code{errno} to a code describing the error. For +++example, trying to opening a file that doesn't exist will result in +++@code{fopen} returning -1, which signals an error. The caller can +++then inspect the global @code{errno} to see what particular error +++prevented the operation to be completed: in this case, @code{errno} +++will contain the error code corresponding to ``file doesn't exist''. +++ +++@deftypefn Procedure {} {errno} {= @B{int}} +++This procedure yields the current value of the global @code{errno}. +++The yielded value reflects the error status of the last executed POSIX +++prelude operation. +++@end deftypefn +++ +++@deftypefn Procedure {} {strerror} {= (@B{int} ecode) @B{string}} +++This procedure gets an error code and yields a string containing an +++explanatory short description of the error. It is typical to pass the +++output of @code{errno} to this procedure. +++@end deftypefn +++ +++@deftypefn Procedure {} {perror} {= (@B{string} msg) @B{void}} +++This procedure prints the given string @code{msg} in the standard +++error output, followed by a colon character, a space character and +++finally the string error of the current value of @code{errno}. +++@end deftypefn +++ +++@node POSIX files +++@section POSIX files +++ +++File descriptors are @code{@B{int}} values that identify open files +++that can be accessed by the program. The @code{fopen} procedure +++allocates file descriptors as it opens files, and the descriptor is +++used in subsequent transput calls to perform operations on the files. +++ +++@subsection Standard file descriptors +++ +++There are three descriptors, however, which are automatically opened +++when the program starts executing and automatically closed when the +++program finishes. These are: +++ +++@deftypevr Constant {@B{int}} {stdin} +++File descriptor associated with the standard input. Its value is @code{0}. +++@end deftypevr +++ +++@deftypevr Constant {@B{int}} {stdout} +++File descriptor associated with the standard output. Its value is @code{1}. +++@end deftypevr +++ +++@deftypevr Constant {@B{int}} {stderr} +++File descriptor associated with the standard error. Its value is @code{2}. +++@end deftypevr +++ +++@subsection Opening and closing files +++ +++@deftypefn Procedure {} {fopen} {= (@B{string} pathname, @B{bits} flags) @B{int}} +++Open the file specified by @code{pathname}. The argument @code{flags} +++is a combination of @code{file o} flags as defined below. If the +++specified file is successfully opened while satisfying the constraints +++implied by @code{flags} then this procedure yields a file descriptor +++that is used in subsequent I/O calls to refer to the open +++file. Otherwise, this procedure yields -1. The particular error can +++be inspected by calling the @code{errno} procedure. +++@end deftypefn +++ +++@deftypefn Procedure {} {fclose} {= (@B{int} fd) @B{int}} +++Close the given file descriptor, which no longer refers to any file. +++This procedure yields zero on success, and -1 on error. In the later +++case, the program can look at the particular error by calling the +++@code{errno} procedure. +++@end deftypefn +++ +++@subsection Creating files +++ +++@deftypefn Procedure {} {fcreate} {= (@B{string} pathname, @B{bits} mode) @B{int}} +++Create a file with name @code{pathname}. The argument @code{mode} is +++a @code{@B{bits}} value containing a bit pattern that determines the +++permissions on the created file. The bit pattern has the form +++@code{8rUGO}, where @code{U} reflects the permissions of the user who +++owns the file, @code{U} reflects the permissions of the users +++pertaining to the file's group, and @code{O} reflects the permissions +++of all other users. The permission bits are 1 for execute, 2 for +++write and 4 for read. If the file is successfully created then this +++procedure yields a file descriptor that is used in subsequent I/O +++calls to refer to the newly created file. Otherwise, this procedure +++yields -1. The particular error can be inspected by calling the +++@code{errno} procedure. +++@end deftypefn +++ +++@subsection Flags for @code{fopen} +++ +++The following flags can be combined using bit-wise operators. Note +++that in POSIX systems the effective mode of the created file is the +++mode specified by the programmer masked with the process's +++@dfn{umask}. +++ +++@deftypevr Constant {@B{bits}} {file o default} +++Flag for @code{fopen} indicating that the file shall be opened with +++whatever capabilities allowed by its permissions. +++@end deftypevr +++ +++@deftypevr Constant {@B{bits}} {file o rdwr} +++Flag for @code{fopen} indicating that the file shall be opened for +++both reading and writing. +++@end deftypevr +++ +++@deftypevr Constant {@B{bits}} {file o rdonly} +++Flag for @code{fopen} indicating that the file shall be opened for +++reading only. This flag is not compatible with @code{file o rdwr} nor +++with @code{file o wronly}. +++@end deftypevr +++ +++@deftypevr Constant {@B{bits}} {file o wronly} +++Flag for @code{fopen} indicating that the file shall be opened for +++write only. This flag is not compatible with @code{file o rdwr} nor +++with @code{file o rdonly}. +++@end deftypevr +++ +++@deftypevr Constant {@B{bits}} {file o trunc} +++Flag for @code{fopen} indicating that the opened file shall be +++truncated upon opening it. The file must allow writing for this flag +++to take effect. The effect of combining @code{file o trunc} and +++@code{file o rdonly} is undefined and varies among implementations. +++@end deftypevr +++ +++@subsection Getting file properties +++ +++@deftypefn Procedure {} {fsize} {= (@B{int} fd) @B{long} @B{long} @B{int}} +++Return the size in bytes of the file characterized by the file +++descriptor @code{fd}. If the system entity characterized by the given +++file descriptor doesn't have a size, if the size of the file cannot be +++stored in a @code{@B{long} @B{long} @B{int}}, or if there is any other +++error condition, this procedure yields -1 and @code{errno} is set +++appropriately. +++@end deftypefn +++ +++@deftypefn Procedure {} {lseek} {= (@B{int} fd, @B{long int} offset, @B{int} whence) @B{long long int}} +++Set the file offset of the file characterized by the file descriptor @code{fd} +++depending on the values of @code{offset} and @code{whence}. On success, the +++resulting offset, as measured in bytes from the beginning of the file, is +++returned. Otherwise, -1 is returned, @code{errno} is set to indicate the error, +++and the file offset remains unchanged. The effects of @code{offset} and +++@code{whence} are: +++@itemize +++@item +++If @code{whence} is @code{seek set}, the file offset is set to @code{offset} +++bytes. +++@item +++If @code{whence} is @code{seek cur}, the file offset is set to its current +++location plus @code{offset}. +++@item +++If @code{whence} is @code{seek end}, the file offset is set to the size of the +++file plus @code{offset}. +++@end itemize +++@end deftypefn +++ +++@node POSIX sockets +++@section POSIX sockets +++ +++A program can communicate with other computers, or with other +++processes running in the same computer, via sockets. The sockets are +++identified by file descriptors. +++ +++@deftypefn Procedure {} {fconnect} {= (@B{string} host, @B{int} port) @B{int}} +++This procedure creates a stream socket and connects it to the given +++@code{host} using port @code{port}. The established communication is +++full-duplex, and allows sending and receiving data using transput +++until it gets closed. On success this procedure yields a file +++descriptor. On error this procedure yields -1 and @code{errno} is set +++appropriately. +++@end deftypefn +++ +++@node POSIX string transput +++@section POSIX string transput +++ +++The following procedures read or write characters and strings from and +++to open files. The external encoding of the files is assumed to be +++UTF-8. Since Algol 68 @code{@B{char}}s are UCS-4, this means that +++reading or writing a character may involve reading or writing more +++than one byte, depending on the particular Unicode code points +++involved. +++ +++@subsection Output of strings and chars +++ +++@deftypefn Procedure {} {putchar} {= (@B{char} c) @B{char}} +++Write the given character to the standard output. This procedure +++yields @code{c} in case the character got successfully written, or +++@code{eof char} otherwise. +++@end deftypefn +++ +++@deftypefn Procedure {} {puts} {= (@B{string} str) @B{void}} +++Write the given string to the standard output. +++@end deftypefn +++ +++@deftypefn Procedure {} {fputc} {= (@B{int} fd, @B{char} c) @B{int}} +++Write given character @code{c} to the file with descriptor @code{fd}. +++This procedure yields @code{c} on success, or @code{eof char} on +++error. +++@end deftypefn +++ +++@deftypefn Procedure {} {fputs} {= (@B{int} fd, @B{string} str) @B{int}} +++Write the given string @code{str} to the file with descriptor +++@code{fd}. This procedure yields the number of bytes written on +++success, or 0 on error. +++@end deftypefn +++ +++@subsection Input of strings and chars +++ +++@deftypefn Procedure {} {getchar} {= @B{char}} +++Read a character from the standard input. This procedure yields the +++read character in case the character got successfully read, or +++@code{eof char} otherwise. +++@end deftypefn +++ +++@deftypefn Procedure {} {gets} {= (@B{int} n) @B{ref} @B{string}} +++Read a string composed of @code{n} characters from the standard input +++and yield a reference to it. If @code{n} is bigger than zero then +++characters get read until either @code{n} characters have been read or +++the end of line is reached. If @code{n} is zero or negative then +++characters get read until either a new line character is read or the +++end of line is reached. +++@end deftypefn +++ +++@deftypefn Procedure {} {fgetc} {= (@B{int} fd) @B{int}} +++Read a character from the file with descriptor @code{fd}. This +++procedure yields the read character in case a valid Unicode character +++got successfully read. If an unrecognizable or unknown character is +++found then this procedure yields @code{replacement char}. In case of +++end of file this procedure yields @code{eof char}. +++@end deftypefn +++ +++@deftypefn Procedure {} {fgets} {= (@B{int} fd, @B{int} n) @B{ref} @B{string}} +++Read a string from the file with descriptor @code{fd} and yield a +++reference to it. If @code{n} is bigger than zero then characters get +++read until either @code{n} characters have been read or the end of +++line is reached. If @code{n} is zero or negative then characters get +++read until either a new line character is read or the end of line is +++reached. +++@end deftypefn +++ +++@node Language extensions +++@chapter Language extensions +++ +++This chapter documents the GNU extensions implemented by this compiler +++on top of the Algol 68 programming language. These extensions +++collectively conform a strict @dfn{superlanguage} of Algol 68, and are +++enabled by default. To disable them the user can select the strict +++Algol 68 standard by passing the option @option{-std=algol68} when +++invoking the compiler. +++ +++@menu +++* @code{@B{bin}} and @code{@B{abs}} of negative integral values:: +++* Bold taggles:: Using underscores in mode and operator indications. +++@end menu +++ +++@node @code{@B{bin}} and @code{@B{abs}} of negative integral values +++@section @code{@B{bin}} and @code{@B{abs}} of negative integral values +++ +++The @code{@B{bin}} operator gets an integral value and yields a +++@code{@B{bits}} value that reflects the internal bits of the integral +++value. The semantics of this operator, as defined in the Algol 68 +++standard prelude, are: +++ +++@example +++@B{op} @B{bin} = (L @B{int} a) L @B{bits}: +++ @B{if} a >= L 0 +++ @B{then} L @B{int} b := a; L @B{bits}; +++ @B{for} i @B{from} L bits width @B{by} -1 @B{to} 1 +++ @B{do} (L F @B{of} c)[i] := @B{odd} b; b := b % L 2 @B{od}; +++ c +++ @B{fi}; +++@end example +++ +++The @code{@B{abs}} operator performs the inverse operation of +++@code{@B{bits}}. Given a @code{L @B{bits}} value, it yields the +++@code{L @B{int}} value whose bits representation is the bits value. +++The semantics of this operator, as defined in the Algol 68 prelude, +++are: +++ +++@example +++@B{op} @B{abs} = (L @B{bits} a) L @B{int}: +++@B{begin} L @B{int} c := L 0; +++ @B{for} i @B{to} L bits width +++ @B{do} c := L 2 * c + K @B{abs} (L F @B{of} a)[i] @B{od}; +++ c +++@B{end} +++@end example +++ +++@noindent +++Note how the @code{@B{bin}} of a negative integral value is not +++defined: the implicit else-part of the conditional yields +++@code{@B{skip}}, which is defined as any bits value in that context. +++Note also how @code{@B{abs}} doesn't make any provision to check +++whether the resulting value is positive: it assumes it is so. +++ +++The GNU Algol 68 compiler, when working in strict Algol 68 mode +++(@option{-std=algol68}), makes @code{@B{bin}} to always yield @code{L +++@B{bits} (@B{skip})} when given a negative value, as mandated by the +++report. But the skip value is always the bits representation of zero, +++@i{i.e.} 2r0. Strict Algol 68 programs, however, must not rely on +++this. +++ +++When GNU extensions are enabled (@option{-std=gnu68}) the +++@code{@B{bin}} of a negative value yields the two's complement bit +++pattern of the value rather than zero. Therefore, @code{@B{bin} - +++@B{short} @B{short} 2} yields @code{2r11111110}. And @code{@B{abs} +++@B{short} @B{short} 2r11111110} yields -2. +++ +++@node Bold taggles +++@section Bold taggles +++ +++This compiler supports the stropping regimes known as UPPER and +++SUPPER. In both regimes bold words are written by writing their +++constituent bold letters and digits, in order. In UPPER regime all +++the letters of a bold word are to be written using upper-case. In +++SUPPER regime, only the first bold letter is required to be written +++using upper-case, and this only when the bold word is not a reserved +++word. +++ +++When a bold word comprises several natural words, it may be a little +++difficult to distinguish them at first sight. Consider for example +++the following code, written fist in UPPER stropping: +++ +++@example +++MODE TREENODE = STRUCT (TREENODEPAYLOAD data, REF TREENODE next), +++ TREENODEPAYLOAD = STRUCT (INT code, REAL average, mean); +++@end example +++ +++@noindent +++Then written in SUPPER stropping: +++ +++@example +++mode TreeNode = struct (TreeNodePayload data, REF TreeNode next), +++ TreeNodePayload = struct (int code, real average, mean); +++@end example +++ +++Particularly in UPPER stropping, it may be difficult to distinguish +++the constituent natural words at first sight. +++ +++In order to improve this, this compiler implements a GNU extension +++called @dfn{bold taggles} that allows to use underscore characters +++(@code{_}) within mode and operator indications as a visual aid to +++improve readability. When this extension is enabled, mode indications +++and operator indications consist in a sequence of the so-called +++@dfn{bold taggles}, which are themselves sequences of one or more bold +++letters or digits optionally terminated by an underscore character. +++ +++With bold taggles enabled the program above could have been written +++using UPPER stropping as: +++ +++@example +++MODE TREE_NODE = STRUCT (TREE_NODE_PAYLOAD data, REF TREE_NODE next), +++ TREE_NODE_PAYLOAD = STRUCT (INT code, REAL average, mean); +++@end example +++ +++@noindent +++And using SUPPER stropping as: +++ +++@example +++mode Tree_Node = struct (Tree_Node_Payload data, ref Tree_Node next), +++ Tree_Node_Payload = struct (int code, real average, mean); +++@end example +++ +++@noindent +++Which is perhaps more readable for most people. Note that the +++underscore characters are not really part of the mode or operator +++indication. Both @code{TREE_NODE} and @code{TREENODE} denote the same +++mode indication. Note also that, following the definition, constructs +++like @code{Foo__bar} and @code{_Baz} are not valid indications. +++ +++Bold taggles are available when the gnu68 dialect of the language is +++selected. @xref{Dialect options}. +++ +++@include gpl_v3.texi +++@include fdl.texi +++ +++@node Option Index +++@unnumbered Option Index +++ +++@command{ga68}'s command line options are indexed here without any initial +++@samp{-} or @samp{--}. Where an option has both positive and negative forms +++(such as @option{-f@var{option}} and @option{-fno-@var{option}}), relevant +++entries in the manual are indexed under the most appropriate form; it may +++sometimes be useful to look up both forms. +++ +++@printindex op +++ +++@node General Index +++@unnumbered Index +++ +++@printindex cp +++ +++@bye ++--- /dev/null +++++ b/src/gcc/algol68/ga68.vw ++@@ -0,0 +1,1845 @@ +++{ ga68.vw - The GNU Algol 68 strict language -*- vw -*- +++ +++ Copyright (C) 2025 Jose E. Marchesi +++ +++ This program is free software; you can redistribute it and/or modify +++ it under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ This program is distributed in the hope that it will be useful, but +++ WITHOUT ANY WARRANTY; without even the implied warranty of +++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +++ General Public License for more details. } +++ +++{ This file contains an annotated description of the syntax of the GNU +++ Algol 68 strict language. GNU Algol 68 aims to be a super-language +++ of Algol 68. +++ +++ Extension to the strict Revised Report incorporated into GNU Algol +++ 68 are: +++ +++ [US] This is the GNU68-2025-001-unsafe GNU extension. It adds an +++ unsafe clause that marks a controlled clause as containing +++ unsafe constructs which are known by the programmer, and makes +++ the compiler to avoid certain diagnostics. See the GNU Algol +++ 68 Compiler manual for more information. +++ +++ [SC] This is the GNU68-2025-003-andth-orel GNU extension. It adds +++ two units that act as pseudo-operators providing logical AND +++ and OR functions with short-circuited elaboration. See the GNU +++ Algol 68 Compiler manual for more information. +++ +++ [MR] A modules and separated compilation system based on the modules +++ system recomended by IFIP Working Group 2.1 Standing +++ Subcommittee on Algol 68 Support, described in: +++ +++ A Modules and Separate Compilation Facility for Algol 68 by +++ Lindsey and Boom. +++ +++ [NC] This is the GNU68-2025-005-nestable-comments GNU extension. It +++ adds support for nestable block comments. +++ +++ The metaproduction rules, hyper-rules and hyper-alternatives +++ introduced by each extension are clearly marked in the sections +++ below. You can easily search for them using the extensions tags in +++ the list above. For example, to look for the extensions introduced +++ by the modules and separated compilation system, search for [MR]. +++ +++ The few deviations to the RR Algol 68 are clearly marked as well in +++ this specification. +++ +++ A complete description of the semantics of the Algol 68 subset of +++ the described language and the extensions is not included in this +++ file. The reader is referred to the Revised Report and other +++ documentation corresponding to the extensions, like the GNU Algol 68 +++ compiler manual. +++ +++ The sectioning and the enumeration of metaproduction rules and of +++ hyper-rules, including cross-references, are the same than in the +++ Report. The annotations and pragmatics added between curly brackets +++ explain the meaning of the rules and how they describe the syntax of +++ the language. Note that thanks to the expressive power of VW +++ grammars the syntax expressed by this description covers much more +++ than what is usually expressed by context-free grammars in the +++ descriptions of other languages that typically use some variant of +++ the BNF notation. +++ +++ Sample code in examples and pragmatics is expressed using the UPPER +++ stropping regime. +++ +++ This file is better browsed using the Emacs vw-mode, which provides +++ automatic indentation, font-lock, and other facilities like the +++ hiding of annotations an the following of cross-references. See the +++ vw-mode manual for more information, including a primer on VW +++ grammars and the formal description used in both the original Report +++ and this file. } +++ +++1 Language and metalanguage +++ +++1.2 General metaproduction rules +++ +++1.2.1 Metaproduction rules of modes +++ +++A) MODE :: PLAIN ; STOWED ; REF to MODE ; PROCEDURE ; +++ UNITED ; MU definition of MODE ; MU application. +++B) PLAIN :: INTREAL ; boolean ; character. +++C) INTREAL :: SIZETY integral ; SIZETY real. +++D) SIZETY :: long LONGSETY ; short SHORTSETY ; EMPTY. +++E) LONGSETY :: long LONGSETY ; EMPTY. +++F) SHORTSETY :: short SHORTSETY ; EMPTY. +++G) EMPTY :: . +++H) STOWED :: structured with FIELDS mode ; +++ FLEXETY ROWS of MODE. +++I) FIELDS :: FIELD ; FIELDS FIELD. +++J) FIELD :: MODE field TAG{942A}. +++K) FLEXETY :: flexible ; EMPTY. +++L) ROWS :: row ; ROWS row. +++M) REF :: reference ; transient reference. +++N) PROCEDURE :: procedure PARAMETY yielding MOID. +++O) PARAMETY :: with PARAMETERS ; EMPTY. +++P) PARAMETERS :: PARAMETER ; PARAMETERS PARAMETER. +++Q) PARAMETER :: MODE parameter. +++R) MOID :: MODE ; void. +++S) UNITED :: union of MOODS mode. +++T) MOODS :: MOOD ; MOODS MOOD. +++U) MOOD :: PLAIN ; STOWED ; reference to MODE ; PROCEDURE ; void. +++V) MU :: muTALLY. +++W) TALLY :: i ; TALLY i. +++ +++1.2.2 Metaproduction rules associated with phrases and coercion +++ +++{ Extensions: +++ [MR] access +++ [US] unsafe } +++ +++A) ENCLOSED :: closed ; collateral ; parallel ; CHOICE{34A} ; +++ loop ; access ; unsafe. +++B) SOME :: SORT MOID NEST. +++C) SORT :: strong ; firm ; meek ; weak ; soft. +++ +++{ Modules are activated by means of access-clauses. } +++ +++1.2.3 Metaproduction rules associated with nests +++ +++{ Extensions: +++ [MR] MODSETY, MOD, MODS, REVSETY, REVS, REV, +++ TAU, INKSETY, INKS, INK } +++ +++A) NEST :: LAYER ; NEST LAYER. +++B) LAYER :: new DECSETY LABSETY INKSETY. +++C) DECSETY :: DECS ; EMPTY. +++D) DECS :: DEC ; DECS DEC. +++E) DEC :: MODE TAG{942A} ; priority PRIO TAD{942F} ; +++ MOID TALLY TAB{942D} ; DUO TAD{942F} MONO TAM{492K} ; +++ MOD. +++F) PRIO :: i ; ii ; iii ; +++ iii i ; iii ii ; iii iii ; +++ iii iii i ; iii iii ii ; iii iii iii. +++G) MONO :: procedure with PARAMETER yielding MOID. +++H) DUO :: procedure with PARAMETER1 PARAMETER2 yielding MOID. +++I) LABSETY :: LABS ; EMPTY. +++J) LABS :: LAB ; LABS LAB. +++K) LAB :: label TAG{942A}. +++L) MODSETY :: MODS ; EMPTY. +++M) MODS :: MOD ; MODS MOD. +++N) MOD :: module REVS TAB. +++O) REVSETY :: REVS ; EMPTY. +++P) REVS :: REV ; REVS REV. +++Q) REV :: TAU reveals DECSETY INKS. +++R) TAU :: MU. +++S) INKSETY :: INKS ; EMPTY. +++T) INKS :: INK ; INKS INK. +++U) INK :: invoked TAU. +++ +++{ The primal environment is just 'new'. } +++ +++1.3 General hyper-rules +++ +++1.3.1 Syntax of general predicates +++ +++A) NOTION :: ALPHA ; NOTION ALPHA. +++B) ALPHA :: a ; b ; c ; d ; e ; f ; g ; h ; i ; j; +++ k ; l ; m ; n ; o ; p ; q ; r ; s ; t; +++ u ; v ; w ; x ; y ; z. +++C) NOTETY :: NOTION ; EMPTY. +++D) THING :: NOTION ; +++ (NOTETY1) NOTETY2 ; +++ THING (NOTETY1) NOTETY2. +++E) WHETHER :: where ; unless. +++ +++a) where true : EMPTY. +++b) unless false : EMPTY. +++c) where THING1 and THING2 : where THING1, where THING2. +++d) where THING1 or THING2 : where THING1 ; where THING2. +++e) unless THING1 and THING2 : unless THING1; unless THING2. +++f) unless THING1 or THING2 : unless THING1, unless THING2. +++g) WHETHER (NOTETY1) is (NOTETY2) : +++ WHETHER (NOTETY1) begins with (NOTETY2){h,i,j} +++ and (NOTETY2) begins with (NOTETY1){h,i,j}. +++h) WHETHER (EMPTY) begins with (NOTION){g,j} : +++ WHETHER false{b,-}. +++i) WHETHER (NOTETY1) begins with (EMPTY){g,j} : +++ WHETHER true{a,-}. +++j) WHETHER (ALPHA1 NOTETY1) begins with +++ (ALPHA2 NOTETY2){g,j,m} : +++ WHETHER (ALPHA1) coincides with (ALPHA2) in +++ (abcdefghijklmnopqrstuvwxyz){k,l,-} +++ and (NOTETY1) begins with (NOTETY2){h,i,j}. +++k) where (ALPHA) coincides with (ALPHA) in (NOTION){j} : +++ where true{a}. +++l) unless (ALPHA1) coincides with (ALPHA2) in (NOTION){j} : +++ where (NOTION) contains (ALPHA1 NOTETY ALPHA2){m} +++ or (NOTION) contains (ALPHA2 NOTETY ALPHA1){m}. +++m) WHETHER (ALPHA NOTETY) contains (NOTION){l,m} : +++ WHETHER (ALPHA NOTETY) begins with (NOTION){j} +++ or (NOTETY) contains (NOTION){m,n}. +++n) WHETHER (EMPTY) contains (NOTION){m} : WHETHER false{b,-}. +++ +++1.3.3 Syntax of general constructions +++ +++A) STYLE :: brief ; bold ; style TALLY. +++ +++a) NOTION option : NOTION ; EMPTY. +++b) NOTION sequence{b} : NOTION ; NOTION, NOTION sequence{b}. +++c) NOTION list{c} : +++ NOTION ; NOTION, and also{94f} token, NOTION list{c}. +++d) NOTETY STYLE pack : +++ STYLE begin{94f,-} token, NOTETY, STYLE end{94f,-} token. +++e) NOTION STYLE bracket : +++ STYLE sub{94f,-} token, NOTION, STYLE bus{94f,-} token. +++f) THING1 or alternatively THING2 : THING1 ; THING2. +++ +++2 The computer and the program +++ +++2.2 The program +++ +++2.2.1 Syntax +++ +++a) program : program token, strong integral new closed clause{31a}. +++ +++{ The value yielded by the elaboration of the program is the exit +++ status returned by the process to the operating system upon +++ termination. This is a slight deviation from the Report, which +++ instead specifies: +++ +++ a) program : strong void new closed clause. +++ +++ and mandates that the production tree of a particular program should +++ be akin to the production of the program in the strict language. } +++ +++3 Clauses +++ +++3.0.1 Syntax +++ +++{ Extensions: +++ [MR] "NEST module text publishing REVS defining LAYER", +++ "NEST LAYER1 LAYER2 module series with DECSETY +++ without DECSETY", +++ "SOID NEST access clause" } +++ +++a) *phrase : SOME unit{32d} ; NEST declaration of DECS{41a}. +++b) *SORT MODE expression : SORT MODE NEST UNIT{5A}. +++c) *statement : strong void NEST UNIT{5A}. +++d) *MOID constant : MOID NEST DEFIED identifier with TAG{48a,b} ; +++ MOID NEST denoter{80a}. +++e) *MODE variable : +++ reference to MODE NEST DEFIED identifier with TAG{48a,b}. +++f) *NEST range : +++ SOID NEST serial clause defining LAYER{32a} ; +++ SOID NEST chooser CHOICE STYLE clause{34b} ; +++ SOID NEST case part of choice using UNITED{34i} ; +++ NEST STYLE repeating part with DEC{35e} ; +++ NEST STYLE while do part{35f} ; +++ PROCEDURE NEST routine text{541a,b} ; +++ NEST module text publishing REVS defining LAYER{49c,-} ; +++ NEST LAYER1 LAYER2 module series +++ with DECSETY without DECSETY1{49d} ; +++ SOID NEST access clause{36a}. +++ +++{ The rules b and c establish a precise definition of "expressions" +++ and "statements". The former are units yielding values of a mode +++ other than VOID in any context. The later are units in a strong +++ context with a-posteriori mode of VOID, that get voided. } +++ +++{ The rules d and e establish a precise definition of "constants" and +++ "variables". The former are either a denotation or an identifier of +++ some mode. The second are identifiers of a "reference to" mode. } +++ +++{ The rule f introduces a paranotion for all the constructs that +++ introduce new ranges. } +++ +++3.1 Closed clauses +++ +++3.1.1 Syntax +++ +++A) SOID :: SORT MOID. +++B) PACK :: STYLE pack. +++ +++a) SOID NEST closed clause{22a,5D,551a,A341h,A349a} : +++ SOID NEST serial clause defining LAYER{32a} PACK. +++ +++{ Examples: +++ a) BEGIN x := 1; y := 2 END } +++ +++3.2 Serial clauses +++ +++3.2.1 Syntax +++ +++{ Extensions: +++ [MR] "establishing clause" } +++ +++a) SOID NEST serial clause defining new PROPSETY{31a,34f,1,35h} : +++ SOID NEST new PROPSETY series with PROPSETY{b}. +++b) SOID NEST series with PROPSETY{a,b,35c} : +++ strong void NEST unit{d}, go on{94f} token, +++ SOID NEST series with PROPSETY{b} ; +++ where (PROPSETY) is (DECS DECSETY LABSETY), +++ NEST declaration of DECS{41a}, go on{94f} token, +++ SOID NEST series with DECSETY LABSETY{b} ; +++ where (PROPSETY) is (LAB LABSETY), +++ NEST label definition of LAB{c}, +++ SOID NEST series with LABSETY{b} ; +++ where (PROPSETY) is (LAB LABSETY) +++ and SOID balances SOID1 and SOID2{3}, SOID1 NEST unit{d}, +++ completion{94f} token, NEST label definition of LAB{c}, +++ SOID2 NEST series with LABSETY{b} ; +++ where (PROPSETY) is (EMPTY), +++ SOID NEST unit{d}. +++c) NEST label definition of label TAG{b} : +++ label NEST defining identifier with TAG{48a}, label{94f} token. +++d) SOME unit{b,33b,g,34i,35d,46m,n,521c,532e,541a,b,543c,A34Ab,c,d} : +++ SOME UNIT{5A,-}. +++e) WHETHER SORT MOID balances +++ SORT1 MOID1 an SORT2 MOID2{b,33b,34d,h} : +++ WHETHER SORT balances SORT1 and SORT2{f} +++ and MOID balances MOID1 and MOID2{g}. +++f) WHETHER SORT balances SORT1 and SORT2{e,522a} : +++ where (SORT1) is (strong), WHETHER (SORT2) is (SORT) ; +++ where (SORT2) is (strong), WHETHER (SORT1) is (SORT). +++g) WHETHER MOID balances MOID1 and MOID2{3} : +++ where (MOID1) is (MOID2), WHETHER (MOID) is (MOID1) ; +++ where (MOID1) is (transient MOID2), +++ WHETHER (MOID) is (MOID1) ; +++ where (MOID2) is (transient MOID1), +++ WHETHER (MOID) is (MOID2). +++ +++h) *SOID unitary clause : SOID NEST unit{d}. +++i) *establishing clause : +++ SOID NEST serial clause defining LAYER{32a} ; +++ MODE NEST enquiry clause defining LAYER{34c}. +++ +++{ The paranotion establishing-clause encompasses both module-texts and +++ revelations. } +++ +++{ Examples: +++ b) read (x1); REAL s:= 0; +++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT +++ nonpos: print (s) +++ +++ REAL s := 0; +++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT +++ nonpos: print (s) +++ +++ sum: FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT +++ nonpos: print (s) +++ +++ FOR i TO n DO (x1[i] > 0 | s :+= x1[i] | nonpos) OD EXIT +++ nonpos: print (s) +++ c) sum: +++ d) print (s) } +++ +++3.3 Collateral and parallel clauses +++ +++3.3.1 Syntax +++ +++a) strong void NEST collateral clause{5D,551a} : +++ strong void NEST joined portrait{b} PACK. +++b) SOID NEST joined portrait{a,b,c,d,34g} : +++ were SOID balances SOID1 and SOID2{32e}, +++ SOID1 NEST unit{32d}, and also{94f} token, +++ SOID2 NEST unit{32d} +++ or alternatively SOID2 NEST joined portrait{b}. +++c) strong void NEST parallel clause{5D,551a} : +++ parallel{94f} token, strong void NEST joined portrait{b} PACK. +++d) strong ROWS of MODE NEST collateral clause{5D,551a} : +++ where (ROWS) is (row), +++ strong MODE NEST joined portrait{b} PACK ; +++ where (ROWS) is (row ROWS1), +++ strong ROWS1 of MODE NEST joined portrait{b} PACK ; +++ EMPTY PACK. +++e) strong structured with +++ FIELDS FIELD mode NEST collateral clause{5D,551a} : +++ NEST FIELDS FIELD portrait{f} PACK. +++f) NEST FIELDS FIELD portrait{3,f} : +++ NEST FIELDS portrait{f,g}, an also{94f} token, +++ NEST FIELD portrait{g}. +++g) NEST MODE field TAG portrait{f} : strong MODE NEST unit{32d}. +++ +++h) *structure display : +++ strong structured with FIELDS FIELD mode NEST collateral clause{e}. +++i) *row display : +++ strong ROWS of MODE NEST collateral clause{d}. +++j) *display : strong STOWED NEST collateral clause{d,e}. +++k) *vacuum : EMPTY PACK. +++ +++3.4 Choice clauses +++ +++3.4.1 Syntax +++ +++A) CHOICE :: choice using boolean ; CASE. +++B) CASE :: choice using intgral ; choice using UNITED. +++ +++a) SOID NEST1 CHOICE clause{5D,551a,A341h,A349a} : +++ CHOICE STYLE start{91a,-}, +++ SOID NEST1 chooser CHOICE STYLE clause{b}, +++ CHOICE STYLE finish{91e,-}. +++b) SOID NEST1 chooser choice using MODE STYLE clause{a,l} : +++ MODE NEST1 enquiry clause defining LAYER2{c,-}, +++ SOID NEST1 LAYER2 alternate choice using MODE STYLE clause{d}. +++c) MODE NEST1 enquiry clause defining new DECSETY2{b,35g} : +++ meek MODE NEST1 new DESETY2 series with DECSETY2{32b}. +++d) SOID NEST2 alternate CHOICE STYLE clause{b} : +++ SOID NEST2 in CHOICE STYLE clause{e} ; +++ where SOID balances SOID1 and SOID2{32e}, +++ SOID1 NEST2 in CHOICE STYLE clause{3}, +++ SOID2 NEST2 out CHOICE STYLE clause{l}. +++e) SOID NEST2 in CHOICE STYLE clause{d} : +++ CHOICE STYLE in{91b,-}, SOID NEST2 in part of CHOICE{f,g,h}. +++f) SOID NEST2 in part of choice using boolean{e} : +++ SOID NEST2 serial clause defining LAYER3{32a}. +++g) SOID NEST2 in part of choice using integral{e} : +++ SOID NEST2 joined portrait{33b}. +++h) SOID NEST2 in part of choice using UNITED{e,h} : +++ SOID NEST2 case part of choice using UNITED{i} ; +++ where SOID balances SOID1 and SOID2{32e}, +++ SOID1 NEST2 case part of choice using UNITED{i}, +++ and also{94f} token, +++ SOID2 NEST2 in part of choice using UNITED{h}. +++i) SOID NEST2 case part of choice using UNITED{h} : +++ MOID NEST2 LAYER3 specification defining LAYER3{jk,-}, +++ where MOID unites to UNITED{64b}, +++ SOID NEST2 LAYER3 unit{32d}. +++j) MODE NEST3 specification defining new MODE TAG3{i} : +++ NEST3 declarative defining new MODE TAG3{541e} brief pack, +++ colon{94f} token. +++k) MOID NEST3 specification defining new EMPTY{i} : +++ formal MOID NEST3 declarer{46b} brief pack, colon{94f} token. +++l) SOID NEST2 out CHOICE STYLE clause{d} : +++ CHOICE STYLE out{91d,-}, +++ SOID NEST2 serial lause defining LAYER3{32a} ; +++ CHOICE STYLE again{91c,-}, +++ SOID NEST2 chooser CHOICE2 STYLE clause{b}, +++ where CHOICE2 may follow CHOICE{m}. +++m) WHETHER choice using MODE2 may follow choice using MODE1{l} : +++ where (MODE1) is (MOOD), WHETHER (MODE2) is (MODE1) ; +++ where (MODE1) begins with (union of), +++ WHETHER (MODE2) begins with (union of). +++ +++n) *SOME choice clause : SOME CHOICE clause{a}. +++o) *SOME conditional clause : SOME choice using boolean clause{a}. +++p) *SOME case clause : SOME choice using integral clause{a}. +++q) *SOME conformity clause : SOME choice using UNITED clause{a}. +++ +++3.5 Loop clauses +++ +++3.5.1 Syntax +++ +++A) FROBYT :: from ; by ; to. +++ +++a) strong void NEST1 loop clause{5D,551a} : +++ NEST1 STYLE for part defining new integral TAG2{b}, +++ NEST1 STYLE intervals{c}, +++ NEST1 STYLE repeating part with integral TAG2{e}. +++b) NEST1 STYLE for part defining new integral TAG2{a} : +++ STYLE for{94g,-} token, +++ integral NEST1 new integral TAG2 defining identifier +++ with TAG2{48a} ; +++ where (TAG2) is (letter aleph), EMPTY. +++c) NEST1 STYLE intervals{a} : +++ NEST1 STYLE from part{d} option, +++ NEST1 STYLE by part{d} option, +++ NEST1 STYLE to part{d} option. +++d) NEST1 STYLE FROBYT part{c} : +++ STYLE FROBYT{94g,-} token, meek integral NEST1 unit{32d}. +++e) NEST1 STYLE repeating part with DEC2{a} : +++ NEST1 new DEC2 STYLE while do part{f} ; +++ NEST1 new DEC2 STYLE do part{h}. +++f) NEST2 STYLE while do part{e} : +++ NEST2 STYLE while part defining LAYER3{g}, +++ NEST2 LAYER3 STYLE do part{h}. +++g) NEST2 STYLE while part defining LAYER3{f} : +++ STYLE while{94g,-} token, +++ boolean NEST2 enquiry clause defining LAYER3{34c,-}. +++h) NEST3 STYLE do part{3,f} : +++ STYLE do{94g,-} token, +++ strong void NEST3 serial clause defining LAYER4{32a}, +++ STYLE od{94g,-} token. +++ +++3.6 Access clauses +++ +++{ Extensions: +++ [MR] GMR } +++ +++{ Access clauses contain a controlled-clause, which is an +++ enclosed-clause. } +++ +++3.6.1 Syntax +++ +++a) SOID NEST access clause{5D,551a,A341h,A349a} : +++ NEST revelation publishing EMPTY defining LAYER{b}, +++ SOID NEST LAYER ENCLOSED clause{a,31a,33a,c,d,e,34a,35a,-}. +++b) NEST revelation publishing REVSETY +++ defining new DECSETY INKSETY{a,49c} : +++ access{94d} token, +++ NEST joined module call publishing REVSETY revealing REVS{c}, +++ where DECSETY INKS revealed by REVS{e,f} +++ and NEST filters INKSETY out of INKS{h}. +++c) NEST joined module call publishing REVSETY revealing RES{b,c} : +++ NEST moule call publishing REVSETY revealing REVS{d,-} ; +++ where (REVSETY) is (REVSETY1 REVSETY2) +++ an (REVS) is (REVS1 REVS2), +++ NEST module call publishing REVSETY1 revealing REVS1{d,-}, +++ and also{94f} token, +++ NEST joined module call publishing REVSETY2 revealing REVS2{c}. +++d) NEST module call publishing REVSETY revealing REVS{c} : +++ where (REVSETY) is (EMPTY), +++ module REVS NEST applied module indication with TAB{48b} ; +++ where (REVSETY) is (REVS), +++ public{94d} token, +++ module REVS NEST applied module indication with TAB{48b}. +++e) WHETHER DECSETY1 DECSETY2 INKS1 INKSETY2 revealed by +++ TAU reveals DECSETY1 INKS1 REVSETY3 +++ TAU reveals DECSETY1 INKS1 REVSETY4{b,e,f} : +++ WHETHER DECSETY DECSETY2 INKS1 INKSETY2 revealed by +++ TAU reveals DECSETY1 INKS1 REVSETY3 REVSETY4{e,f}. +++f) WHETHER DECSETY1 DECSETY2 INKS1 INKSETY2 revealed by +++ TAU reveals DECSETY1 INKS1 REVSETY2{b,e,f} : +++ WHETHER DECSETY2 INKSETY2 revealed by REVSETY2 +++ and DECSETY1 independent DECSETY2{71a,b,c}. +++g) WHETHER EMPTY revealed by EmPTY{e,f} : WHETHER true. +++h) WHETHER NEST filters INKSETY1 out of INKSETY INK{b} : +++ unless INK ientified in NEST{72a}, +++ WHETHER (INKSETY) is (INKSETY2 INK) +++ and NEST INK filers INKSETY2 out of INKSETY{h,i} ; +++ where INK identified in NEST{72a}, +++ WHETHER NEST filters INKSETY1 out of INKSETY{h,i}. +++i) WHETHER NEST filters EMPTY out of EMPTY{h} : WHETHER true. +++ +++{ Examples: +++ a) ACCESS A, B (gets (f, a); puts (a)) +++ b) ACCESS A, B +++ c) A, B +++ d) A +++ PUB B } +++ +++{ In rule b, the 'invoke TAU's enveloped by 'INKS' represent those +++ modules which might need to be invoked at any module-call whose +++ applied-module-indication identified a particular +++ defining-module-indication, whereas those enveloped by 'INKSETY' +++ represent only those which need invocation in the particular +++ context, the remainder having already being elaborated, as can be +++ determined statically from the 'NEST'. The presence of 'INKSETY' in +++ the nest of all descendent constructs of the access-clause ensures +++ that all modules now invoked will never be invoked again within +++ those descendents. } +++ +++{ Rule f ensures the independence of declarations revealed by one +++ revelation; thus +++ +++ MODULE A = DEF PUB REAL x FED, B = DEF PUB REAL x FED; +++ ACCESS A, B (x) +++ +++ is not produced. However, rule e allows a given declaration to be +++ revealed by two public accesses of the same module, as in +++ +++ MODULE A = DEF PUB REAL x FED; +++ MODULE B = ACCESS PUB A DEF REAL y FED, +++ C = ACCESS PUB A DEF REAL z FED; +++ ACCESS B C (x + y + z) +++ +++ in which the module-definitions for both B and C reveal x, by virtue +++ of the PUB A in their constituent revelations. } +++ +++{ Note that a particular-program may now consist of a +++ joined-label-definition followed by an access-clause. The +++ defining-module- indications identified thereby would be in the +++ library-prelude or the user-prelude. } +++ +++3.7 Unsafe clauses +++ +++{ Extensions: [US] } +++ +++{ Unsafe clauses contain a controlled-clause, which is an enclosed-clause. } +++ +++3.7.1 Syntax +++ +++a) SOID NEST unsafe clause : +++ unsafe{94f} token, SOID NEST ENCLOSED clause{a,31a,33a,c,d,e,34a,35a,-}. +++ +++{ Examples: +++ a) UNSAFE (ptr := dst) } +++ +++4 Declarations, declarers and indicators +++ +++4.1 Declarations +++ +++4.1.1 Syntax +++ +++{ Extensions: +++ [MR] module +++ "declaration with DECSETY without DECSETY1" } +++ +++A) COMMON :: mode ; priority ; MODINE identity ; +++ reference to MODINE variable ; MODINE operation ; +++ PARAMETER ; MODE FIELDS ; module. +++ { MODINE :: MODE ; routine. } +++ +++a) NEST declaration of DECS{a,32b} : +++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,-} ; +++ where (DECS) is (DECS1 DECS2), +++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,-}, +++ and also{94f} token, NEST declaration of DECS2{a}. +++b) NEST COMMON joined definition of PROPS PROP{b,42a,43a,44a,e,45a,46e,541e} : +++ NEST COMON joined definition of PROPS{b,c}, +++ and also{94f} token, +++ NEST COMMON joined definition of PROP{c}. +++c) NEST COMMON joined definition of PROP{b,42a,43a,44a,e,45a,46e,541e} : +++ NEST COMMON definition of PROP{42b,43b,44c,f,45c,46f,541f,-}. +++ +++d) *definition of PROP : +++ NEST COMMON definition of PROP{42b,43b,44c,f,45c,46f,541f} ; +++ NEST label definition of PROP{32}. +++e) NEST declaration with DECSETY without DECSETY1{49e} : +++ where (DECSETY without DECSETY1) is (EMPTY without DECS1), +++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,49a,-} ; +++ where (DECSETY without DECSETY1) is (DECS without EMPTY), +++ public{94d} token, +++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,49a,-} ; +++ where (DECSETY without DECSETY1) is +++ (DECSETY without DECS1 DECSETY2), +++ NEST COMMON declaration of DECS1{42a,43a,44a,e,45a,49a,-}, +++ and also{94f} token, +++ NEST declaration with DECSETY without DECSETY2{e} ; +++ where (DECSETY without DECSETY1) is +++ (DECS DECSETY3 without DECSETY1), +++ public{94d} token, +++ NEST COMMON declaration of DECS{42a,43a,44a,e,45a,49a,-}, +++ and also{94f} token, +++ NEST declaration with DECSETY3 without DECSETY1{e}. +++ +++{ Rule e determines how a "NEST declaration with DECSETY without +++ DECSETY1" results into two groups of declarations. The declarations +++ in 'DECSETY' are public and syntactically preceded by PUB. The +++ declarations in 'DECSETY1 are non-public and are not marked by +++ PUB. } +++ +++4.2 Mode declarations +++ +++4.2.1 Syntax +++ +++a) NEST mode declaration of DECS{41a} : +++ mode{94d} token, NEST mode joined definition of DECS{41b,c}. +++b) NEST mode definition of MOID TALLY TAB{41c} : +++ where (TAB) is (bold TAG) or (NEST) is (new LAYER), +++ MOID TALLY NEST defining mode indication with TAB{48a}, +++ is defined as{94d} token, +++ actual MOI TALLY NEST declarer{c}. +++c) actual MOID TALLY1 NEST declarer{b} : +++ where (TALLY1) is (i), +++ actual MOID NEST declarator{46c,d,g,h,o,s,-} ; +++ where (TALLY1) is (TALLY2 i), +++ MOID TALLY2 NEST applied mode indication with TAB2{48b}. +++ +++{ The use of TALLY excludes circular chains of mode-definitions such +++ as `mode a = b, b = a'. } +++ +++4.3 Priority declarations +++ +++4.3.1 Syntax +++ +++a) NEST priority declaration of DECS{41a} : +++ priority{94d} token, NEST priority joined definition of DECS{41b,c}. +++b) NEST priority definition of priority PRIO TAD{41c} : +++ priority PRIO NEST definining operator with TAD{48a}, +++ is defined as{94d} token, DIGIT{94b} token, +++ where DIGIT counts DIGIT{94b} token, +++ where DIGIT counts PRIO{c,d}. +++ {DIGIT :: digit zero ; digit one ; digit two ; digit three ; +++ digit four ; digit five ; digit six ; digit seven ; +++ digit eight ; digit nine.} +++c) WHETHER DIGIT1 counts PRIO i{b,c} : +++ WHETHER DIGIT2 counts PRIO{c,d}, +++ where (digit one igit two digit three digit four +++ digit five digit six digit seven digit eight digit nine) +++ contains (DIGIT2 DIGIT1). +++d) WHETHER digit one counts i{b,c} : WHETHER true. +++ +++4.4 Identifier declarations +++ +++4.4.1 Syntax +++ +++A) MODINE :: MODE ; routine. +++B) LEAP :: local ; heap ; primal. +++ +++a) NEST MODINE identity declaration of DECS{41a} : +++ formal MODINE NEST declarer{b,46b}, +++ NEST MODINE identity joined definition of DECS{41b,c}. +++b) VICTAL routine NEST declarer{a,523b} : procedure{94d} token. +++c) NEST MODINE identity definition of MODE TAG{41c} : +++ MODE NEST defining identifier with TAG{48a}, +++ is defined as{94d} token, MODE NEST source for MODINE{d}. +++d) MODE NEST source for MODINE{c,f,45c} : +++ where (MODINE) is (MODE), MODE NEST source{521c} ; +++ where (MODINE) is (routine), MODE NEST routine text{541a,b,-}. +++e) NEST reference to MODINE variable declaration of DECS{41a} : +++ reference to MODINE NEST LEAP sample generator{523b}, +++ NEST reference to MODINE variable joined definition of DECS{41b,c}. +++f) NEST reference to MODINE variable definition +++ of reference to MODE TAG{41c} : +++ reference to MODE NEST defining identifier with TAG{48a}, +++ becomes{94c} token, MODE NEST soure for MODINE{d} ; +++ where (MODINE) is (MODE), +++ reference to MODE NEST defining identifier with TAG{48a}. +++ +++g) *identifier declaration : +++ NEST MODINE identity declaration of DECS{a} ; +++ NEST reference to MODINE variable declaration of DECS{e}. +++ +++4.5 Operation declarations +++ +++4.5.1 Syntax +++ +++A) PRAM :: DUO ; MONO. +++B) TAO :: TAD ; TAM. +++ +++a) NEST MODINE operation delarations of DECS{41a} : +++ operator{94d} token, formal MODINE NEST plan{b,46p,-}, +++ NEST MODINE operation joined definition of DECS{41b,c}. +++b) formal routine NEST plan{a} : EMPTY. +++c) NEST MODINE operation definition of PRAM TAO{41c} : +++ PRAM NEST defining operator with TAO{48a}, +++ is defined as{94d} token, PRAM NEST source for MODINE{44d}. +++ +++4.6 Declarers +++ +++4.6.1 Syntax +++ +++A) VICTAL :: VIRACT ; formal. +++B) VIRACT :: virtual ; actual. +++C) MOIDS :: MOID ; MOIDS MOID. +++ +++a) VIRACT MOID NEST declarer{c,e,g,h,523a,b} : +++ VIRACT MOID NEST declarator{c,d,g,h,o,s,-} ; +++ MOID TALLY NEST applied mode indication with TAB{48b,-}. +++b) formal MOID NEST declarer{e,h,p,r,u,34k,44a,541a,b,e,551a} : +++ where MOID deflexes to MOID{47a,b,c,-}, +++ formal MOID NEST declarator{c,d,h,o,s,-} ; +++ MOID1 TALLY NEST applied mode indication with TAB{48b,-}, +++ where MOID1 deflexes to MOID{47a,b,c,-}. +++c) VICTAL reference to MODE NEST declarator{a,b,42c} : +++ reference to{94d} token, virtual MODE NEST declarer{a}. +++d) VICTAL structured with FIELDS mode NEST declarator{a,b,42c} : +++ structure{94d} token, +++ VICTAL FIELDS NEST portrayer of FIELDS{e} brief pack. +++e) VICTAL FIELDS NEST portrayer of FIELDS1{d,e} : +++ VICTAL MODE NEST declarer{a,b}, +++ NEST MODE FIELDS joined definition of FIELDS1{41b,c} ; +++ where (FIELDS1) is (FIELDS2 FIELDS3), +++ VICTAL MODE NEST declarer{a,b}, +++ NEST MODE FIELDS joined definition of FIELDS2{41b,c}, +++ and also{94f} token, +++ VICTAL FIELDS NEST portrayer of FIELDS3{e}. +++f) NEST MODE FIELDS definition of MODE field TAG{41c} : +++ MODE field FIELDS defining field selector with TAG{48c}. +++g) VIRACT flexible ROWS of MODE NEST declarator{a,42c} : +++ flexible{94d} token, VIRACT ROWS of MODE NEST declarer{a}. +++h) VICTAL ROWS of MODE NEST declarator{a,b,42c} : +++ VICTAL ROWS NEST rower{i,j,k,l} STYLE bracket, +++ VICTAL MODE NEST declarer{a,b,}. +++i) VICTAL row ROWS NEST rower{h,i} : +++ VICTAL row NEST rower{j,k,l}, and also{94f} token, +++ VICTAL ROWS NEST rower{i,j,k,l}. +++j) actual row NEST rower{h,i} : +++ NEST lower bound{m}, up to{94f} token, NEST upper bound{n} ; +++ NEST upper bound{n}. +++k) virtual row NEST rower{h,i} : up to{94f} token option. +++l) formal row NEST rower{h,i} : up to{94f} token option. +++m) NEST lower bound{j,532f,g} : meek integral NEST unit{32d}. +++n) NEST upper bound{j,532f} : meek integral NEST unit{32d}. +++o) VICTAL PROCEDURE NEST declarator{a,b,42c} : +++ procedure{94d} token, formal PROCEDURE NEST plan{p}. +++p) formal procedure PARAMETY yieling MOID NEST plan{o,45a} : +++ where (PARAMETY) is (EMPTY), formal MOID NEST declarer{b} ; +++ PARAMETERS NEST joined declarer{q,r} brief pack, +++ formal MOID NEST declarer{b}. +++q) PARAMETERS PARAMETER NEST joined declarer{p,q} : +++ PARAMETERS NEST joined declarer{q,r}, and also{94f} token, +++ PARAMETER NEST joined declarer{r}. +++r) MODE parameter NEST joined declarer{p,q} : +++ formal MODE NEST declarer{b}. +++s) VICTAL union of MOODS1 MOOD1 mode NEST declarator{a,b,42c} : +++ unless EMPTY with MOODS1 MOOD1 incestuous{47f}, +++ union of{94d} token, +++ MOIDS NEST joined declarer{t,u} brief pack, +++ where MOIDS ravels to MOODS2{47g} +++ and safe MOODS1 MOOD1 subset of safe MOODS2{73l} +++ and safe MOODS2 subset of safe MOODS1 MOOD1{731,m}. +++t) MOIDS MOID NEST joined declarer{s,t} : +++ MOIDS NEST joined declarer{t,u}, an also{94f} token, +++ MOID NEST joined declarer{u}. +++u) MOID NEST joined declarer{s,t} : formal MOID NEST declarer{b}. +++ +++4.7 Relationships between modes +++ +++4.7.1 Syntax +++ +++A) NONSTOWED :: PLAIN ; REF to MODE ; PROCEDURE ; UNITED ; void. +++B) MOODSETY :: MOODS ; EMPTY. +++C) MOIDSETY :: MOIDS ; EMPTY. +++ +++a) WHETHER NONSTOWED deflexes to NONSTOWED{b,e,46b,521c,62a,71n} : +++ WHETHER true. +++b) WHETHER FLEXETY ROWS of MODE1 deflexes to ROWS of MODE2{b,e,46b,521c,62a,71n} : +++ WHETHER MODE1 deflexes to MODE2{a,b,c,-}. +++c) WHETHER structured with FIELDS1 mode deflexes to +++ structured with FIELDS2 mode{b,e,46b,521c,62a,71n} : +++ WHETHER FIELDS1 deflexes to FIELDS2{d,e,-}. +++d) WHETHER FIELDS1 FIELD1 deflexes to FIELDS2 FIELD2{c,d} : +++ WHETHER FIELDS1 deflexes to FIELDS2{d,e,-} +++ and FIELD1 deflexes to FIELD2{e,-}. +++e) WHETHER MODE1 field TAG deflexes to MODE2 field TAG{c,d} : +++ WHETHER MODE1 deflexes to MODE2{a,b,c,-}. +++ +++f) WHETHER MOODSETY1 with MOODSETY2 inestuous{f,46s} : +++ where (MOODSETY2) is (MOOD MOODSETY3), +++ WHETHER MOODSETY1 MOOD with MOODSETY3 incestuous{f} +++ or MOOD is firm union of MOODSETY1 MOODSETY3 mode{71m} ; +++ where (MOODSETY2) is (EMPTY), WHETHER false. +++ +++g) WHETHER MOIDS ravels to MOODS{g,46s} : +++ where (MOIDS) is (MOODS), WHETHER true ; +++ where (MOIDS) is +++ (MOODSETY union of MOODS1 mode MOIDSETY), +++ WHETHER MOODSETY MOODS1 MOIDSETY ravels to MOODS{g}. +++ +++{ The hyperrules from a) to e) implement a predicate deflexes-to that +++ determines whether a given mode deflexes to another mode. Any +++ non-stowed mode deflexes to any other non-stowed mode. A row mode +++ deflexes to another row mode if the ranks of the modes are the same +++ and the mode of the former's elements deflexes to the mode of the +++ later's elements. A structured mode deflexes to another structured +++ mode if they have the same number of fields with the same tags and +++ their modes deflex. } +++ +++{ The hyperrule f) implements a predicate that determines whether two +++ provided sets of moods are incestuous, i.e. whether they contain +++ modes which are firmly related. } +++ +++{ The hyperrule g) determines whether a set of moods and +++ united modes may be ravelled. } +++ +++4.8 Indicators and field selectors +++ +++4.8.1 Syntax +++ +++{ Extensions: +++ [MR] INK, "module indication", "module REVS", "invoked", TAU } +++ +++A) INDICATOR :: identifier ; mode indication ; operator ; +++ module indication. +++B) DEFIED :: defining ; applied. +++C) PROPSETY :: PROPS ; EMPTY. +++D) PROPS :: PROP ; PROPS PROP. +++E) PROP :: DEC ; LAB ; FIELD ; INK. +++F) QUALITY :: MODE ; MOID TALLY ; DYADIC ; label ; MODE field ; +++ module REVS ; invoked. +++G) TAX :: TAG ; TAB ; TAD ; TAM ; TAU. +++ +++a) QUALITY NEST new PROPSETY1 QUALITY TAX PROPSETY2 +++ defining INDICATOR with TAX{32c,35b,42b,43b,44c,f,45c,541f} : +++ where QUALITY TAX independent PROPSETY1 PROPSETY2{71a,b,c}, +++ TAX{942A,D,F,K} token. +++b) QUALITY NEST applied INDICATOR with TAX{42c,46a,b,5D,542a,b,544a} : +++ where QUALITY TAX identified in NEST{72a}, +++ TAX{942A,D,F,K} token. +++c) MODE field PROPSETY1 MODE field TAG PROPSETY2 defining +++ field selector with TAG{46f} : +++ where MODE field TAG independent PROPSETY1 PrOPSETY2{71a,b,c}, +++ TAX{942A} token. +++d) MODE field FIELDS applied field selector with TAG{531a} : +++ where MODE field TAG resides in FIELDS{72b,c,-}, +++ TAG{942A} token. +++ +++e) *QUALITY NEST DEFIED indicator with TAX : +++ QUALITY NEST DEFIED INDICATOR with TAX{a,b}. +++f) *MODE DEFIED field seletor with TAG : +++ MODE field FIELDS DEFIED field selector with TAG{c,d}. +++ +++{ MODs are introduced into a nest by module-declarations. +++ INKs are introduced into a nest by module-calls. } +++ +++{ Modules are ascribed to module-indications by means of +++ module-declarations. } +++ +++4.9 Module declarations +++ +++4.9.1 Syntax +++ +++a) NEST1 module declaration of MODS{41a,e} : +++ module{94d} token, +++ NEST1 module joined definition of MODS{41b,c}. +++b) NEST1 module definition of module RESETY REV TAB{41c} : +++ where (REV) is (TAU reveals DECSETY invoked TAU) +++ and (TAB) is (bold TAG), +++ where (NEST1) is (NOTION1 invoked TAU NOTETY2), +++ unless (NOTION1 NOTETY2) contains (invoked TAU), +++ module REVSETY REV NEST1 defining module indication with TAB{48a}, +++ is defined as{94d} token, +++ NEST1 module text publishing REVSETY REV defining LAYER{c,-}. +++c) NEST1 module text +++ publishing REVSETY TAU reveals DECSETY INKSETY INK +++ defining new DECSETY1 DECSETY INK{b} : +++ where (INKSETY) is (EMPTY) and (REVSETY) is (EMPTY), +++ def{94d} token, +++ NEST1 new new DECSETY1 DECSETY INK module series +++ with DECSETY without DECSETY1{d}, +++ fed{94d} token ; +++ NEST1 revelation publishing REVSETY defining LAYER{36b}, +++ def{94d} token, +++ NEST1 LAYER new DECSETY1 DECSETY INK module series +++ with DECSETY without DECSETY1{d}, +++ fed{94d} token, +++ where (LAYER) is (new DECSETY2 INKSETY). +++d) NEST3 module series with DECSETY without DECSETY1{c} : +++ NEST3 module prelude with DECSETY without DECSETY1{e}, +++ NEST3 module postlude{f} option. +++e) NEST3 module prelude with DECSETY1 without DECSETY2{d,e} : +++ strong void NEST3 unit{32d}, go on{94f} token, +++ NEST3 module prelude with DECSETY1 without DECSETY2{e} ; +++ where (DECSETY1 without DECSETY2) is +++ (DECSETY3 DECSETY4 without DECSETY5 DECSETY6>, +++ NEST3 declaration with DECSETY3 without DECSETY5{41e}, +++ go on{94f} token, +++ NEST3 module prelude with DECSETY4 without DECSETY6{e} ; +++ where (DECSETY1 without DECSETY2) is (EMPTY without EMPTY), +++ strong void NEST3 unit{32d} ; +++ NEST3 declaration with DECSETY1 without DECSETY2{41e}. +++f) NEST3 module postlude{d} : +++ postlude{94d} token, strong void NEST3 series with EMPTY{32b}. +++ +++g) *module text : +++ NEST module text publishing REVS defining LAYER{c}. +++ +++{ Examples: +++ a) MODULE A = DEF STRING s; gets (s); +++ PUB STRING t = "file"+s, PUB REAL a FED, +++ B = ACCESS A DEF PUB INT fd; +++ fopen (fd, file o rdonly) +++ POSTLUDE close (f) FED +++ +++ b) A = DEF STRING s; gets (s); +++ PUB STRING t = "file"+s, PUB REAL a FED +++ +++ B = ACCESS A DEF PUB FILE f; +++ fopen (fd, file o rdonly) +++ POSTLUDE close (f) FED +++ +++ c) DEF STRING s; gets (s); +++ PUB STRING t = "file"+s, PUB REAL a FED +++ +++ ACCESS A DEF PUB FILE f; +++ fopen (fd, file o rdonly) +++ POSTLUDE close (f) FED +++ +++ d) STRING s; gets (s); PUB STRING t = "file"+s, PUB real a +++ +++ PUB FILE f; fopen (fd, file o rdonly) POSTLUDE close (f) +++ +++ e) STRING s; gets (s); PUB STRING t = "file"+s, PUB real a +++ +++ PUB FILE f; fopen (fd, file o rdonly) +++ +++ f) POSTLUDE close (f) } +++ +++{ Note that the EMPTY (for PROPSETY) in rule f enforces that a module +++ postlude cannot contain declarations, labels or module accesses. +++ Only units are allowed. } +++ +++{ Rule b ensures that a unique 'TAU' is associated with each +++ module-text accessible from any given point in the program. This is +++ used to ensure that an invoke ATU' can be identified in the nest of +++ all descendent constructs of any access-clause or module-text which +++ invokes that module-text. +++ +++ In general, a module-text-publishing-REVS-defining-LAYER T makes +++ 'LAYER' visible within itself, and makes the properties revealed by +++ 'REVS' visible wherever T is accessed. 'LAYER' includes both a +++ 'DECSETY' corresponding to its public declarations and an INK' which +++ links T to its unique associated 'TAU' and signifies in the nest +++ that T is now known to be invoked. REVS' always reveals 'DECSETY +++ INKSETY INK' (but not 'DECSETY1'), where INKSETY' signifies the +++ invocation of any other modules accessed by T. 'REVS' may also +++ reveal the publications of the other modules accessed by T if their +++ module-calls within T contained a public-token. } +++ +++5 Units +++ +++5.1 Syntax +++ +++{ Extensions: +++ [MR] formal hole, virtual hole } +++ +++A) UNIT{32d} :: +++ assignation{521a} coercee ; identity relation{522a} coercee ; +++ routine text{541a,b} coercee ; jump{544a} ; skip{552a} ; +++ and function{57a} ; or function{57b} ; +++ formal hole{561b} ; virtual hole{561a} ; +++ TERTIARY{B}. +++B) TERTIARY{A,521b,522a} :: +++ ADIC formula{542a,b} coercee ; nihil ; +++ SECONDARY{C}. +++C) SECONDARY{B,531a,542c} :: +++ LEAP generator{523a} coercee ; selection{531a} coercee ; +++ PRIMARY{D}. +++D) PRIMARY{C,532a,543a} :: +++ slice{532a} coercee ; call{543a} coercee ; +++ format text{A341a} coercee ; +++ applied identifier with TAG{48b} coercee ; +++ ENCLOSED clause{31a,33a,c,d,e,34a,35a}. +++ +++a) *SOME hip : +++ SOME jump{544a} : SOME skip{552a} ; SOME nihil{524a}. +++ +++5.2 Units associated with names +++ +++5.2.1 Assignations +++ +++5.2.1.1 Syntax +++ +++a) REF to MODE NEST assignation{5A} : +++ REF to MODE NEST destination{b}, becomes{94c} token, +++ MODE NEST source{c}. +++b) REF to MODE NEST destination{a} : +++ soft REF to MODE NEST TERTIARY{5B}. +++c) MODE1 NEST source{a,44d} : +++ strong MODE2 NEST unit{32d}, +++ where MODE1 deflexes to MODE2{47a,b,c,-}. +++ +++5.2.2 Identity relations +++ +++5.2.2.1 Syntax +++ +++a) boolean NEST identity relation{5A} : +++ where soft balances SORT1 and SORT2{32f}, +++ SORT1 reference to MODE NEST TERTIARY1{5B}, +++ identity relator{b}, +++ SORT2 reference to MODE NEST TERTIARY2{5B}. +++b) identity relator{a} : is{94f} token ; is not{94f} token. +++ +++5.2.3 Generators +++ +++5.2.3.1 Syntax +++ +++a) reference to MODE NEST LEAP generator{5C} : +++ LEAP{94d,-} token, actual MODE NEST declarer{46a}. +++b) reference to MODINE NEST LEAP sample generator{44e} : +++ LEAP{94d,-} token, actual MODINE NEST declarer{44b,46a} ; +++ where (LEAP) is (local), actual MODINE NEST declarer{44b,46a}. +++ +++5.2.4 Nihils +++ +++5.2.4.1 Syntax +++ +++a) strong reference to MODE NEST nihil{5B} : +++ nil{94f} token. +++ +++5.3 Units associated with stowed values +++ +++5.3.1 Selections +++ +++5.3.1.1 Syntax +++ +++A) REFETY :: REF to ; EMPTY. +++B) REFLEXETY :: REF to ; REF to flexible ; EMPTY. +++ +++a) REFETY MODE1 NEST selection{5C} : +++ MODE1 field FIELDS applied field selector with TAG{48d}, +++ of{94f} token, weak REFLEXETY ROWS of structured with +++ FIELDS mode NEST SECONDARY{5C}, +++ where (REFETY) is derived from (REFLEXETY){b,c,-}. +++b) WHETHER (transient reference to) is derived from +++ (REF to flexible){a,532,66a} : +++ WHETHER true. +++c) WHETHER (REFETY) is derived from (REFETY){a,532a,66a} : +++ WHETHER true. +++ +++5.3.2 Slices +++ +++5.3.2.1 Syntax +++ +++A) ROWSETY :: ROWS ; EMPTY. +++ +++a) REFETY MODE1 NEST slice{5D} : +++ weak REFLEXETY ROWS1 of MODE1 NEST PRIMARY{5D}, +++ ROWS1 leaving EMPTY NEST indexer{b,c,-} STYLE bracket, +++ where (REFETY) is derived from (REFLEXETY){531b,c,-} ; +++ where (MODE1) is (ROWS2 of MODE2), +++ weak REFLEXETY ROWS1 of MODE2 NEST PRIMARY{5D}, +++ ROWS1 leaving ROWS2 NEST indexer{b,d,-} STYLE bracket, +++ where (REFETY) is derived from (REFLEXETY){531b,c,-}. +++b) row ROWS leaving ROWSETY1 ROWSETY2 NEST indexer{a,b} : +++ row leaing ROWSETY1 NEST indexer{c,d,-}, and also{94f} token, +++ ROWS leaving ROWSETY2 NEST indexer{b,c,d,-}. +++c) row leaving EMPTY NEST indexer{a,b} : NEST subscript{3}. +++d) row leaving row NEST indexer{a,b} : +++ NEST trimmer{f} ; NEST revised lower bound{g} option. +++e) NEST subscript{c} : meek integral NEST unit{32d}. +++f) NEST trimmer{d} : +++ NEST lower bound{46m} option, up to{94f} token, +++ NEST upper bound{46n} option, +++ NEST revised lower bound{g} option. +++g) NEST revised lower bound{d,f} : +++ at{94f} token, NEST lower bound{46m}. +++ +++h) *trimscript : +++ NEST subscript{e} ; NEST trimmer{f}; +++ NEST revised lower bound{g} option. +++i) *indexer : +++ ROWS leaving ROWSETY NEST indexer{b,c,d}. +++j) *boundscript : +++ NEST subscript{e} ; NEST lower bound{46m} ; +++ NEST upper bound{46n} ; NEST revised lowe bound{g}. +++ +++5.4 Units associated with routines +++ +++5.4.1 Routine texts +++ +++5.4.1.1 Syntax +++ +++a) procedure yielding MOID NEST1 routine text{44d,5A} : +++ formal MOID NEST1 declarer{46b}, routine{94f} token, +++ strong MOID NEST1 unit{32d}. +++b) procedure with PARAMETERS yielding +++ MOID NEST1 routine text{44d,5A} : +++ NEST1 new DECS2 declarative defining +++ new DECS2{e} brief pack, +++ where DECS2 like PARAMETERS{c,d,-}, +++ formal MOID NEST1 declarer{46b}, routine{94f} token, +++ strong MOID NEST1 new DECS2 unit{32d}. +++c) WHETHER DECS DEC like PARAMETERS PARAMETER{b,c} : +++ WHETHER DECS like PARAMETERS{c,d-} +++ and DEC like PARAMETER{d,-}. +++d) WHETHER MODE TAG like MODE parameters{b,c} : +++ WHETHER true. +++e) NEST2 declarative defining new DECS2{b,e,34j} : +++ formal MODE NEST2 declarer{46b}, +++ NEST2 MODE parameter joined definition of DECS2{41b,c} ; +++ where (DECS2) is (DECS3 DECS4), +++ formal MODE NEST2 declarer{46b}, +++ NEST2 MODE parameter joind definition of DECS3{41b,c}, +++ and also{94f} token, NEST2 declarative defining new DECS4{3}. +++f) NEST2 MODE parameter efinition of MODE TAG2{41c} : +++ MDOE NEST2 defining identifier with TAG2{48a}. +++ +++g) *formal MODE parameter : +++ NEST MODE parameter definition of MODE TAG{f}. +++ +++5.4.2 Formulas +++ +++5.4.2.1 Syntax +++ +++A) DYADIC :: priority PRIO. +++B) MONADIC :: priority iii iii iii i. +++C) ADIC :: DYADIC ; MONADIC. +++D) TALLETY :: TALLY ; EMPTY. +++ +++a) MOID NEST DYADIC formula{c,5B} : +++ MODE1 NEST DYADIC TALLETY operand{c,-}, +++ procedure with MODE1 parameter MODE2 parameter +++ yielding MOID NEST applied operator with TAD{48b}, +++ where DYADIC TAD identified in NEST{72a}, +++ MODE2 NEST DYADIC TALLY operand{c,-}. +++b) MOID NEST MONADIC formula{c,5B} : +++ procedure with MODE parameter yielding MOID +++ NEST applied operator ith TAM{48b}, +++ MODE NEST MONADIC operand{c}. +++c) MODE NEST ADIC operand{a,b} : +++ firm MODE NEST ADIC formula{a,b} coercee{61b} ; +++ where (ADIC) is (MONADIC), firm MODE NEST SECONDARY{5C}. +++ +++d) *MOID formula : MOID NEST ADIC formula{a,b}. +++e) *DUO dyadic operator with TAD : +++ DUO NEST DEFIED operator with TAD{48a,b}. +++f) *MONO monadic operator with TAM : +++ MONO NEST DEFIED operator with TAM{48a,b}. +++g) *MODE operand : MODE NEST ADIC operand{c}. +++ +++5.4.3 Calls +++ +++5.4.3.1 Syntax +++ +++a) MOID NEST call{5D} : +++ meek procedure with PARAMETERS yielding MOID NEST PRIMARY{5D}, +++ actual NEST PARAMETERS{b,c} brief pack. +++b) actual NEST PARAMETERS PARAMETER{a,b} : +++ actual NEST PARAMETERS{b,c}, and also{94f} token, +++ actual NEST PARAMETER{c}. +++c) actual NEST MODE parameter{a,b} : strong MODE NEST unit{32d}. +++ +++5.4.4 Jumps +++ +++5.4.4.1 Syntax +++ +++a) strong MOID NEST jump{5A} : +++ go to{b} option, +++ label NEST applied identifier with TAG{48b}. +++b) go to{a} : STYLE go to{94f,-} token ; +++ STYLE go{94f,-} token, STYLE to symbol{94g,-}. +++ +++5.5 Units associated with values of any mode +++ +++5.5.1 Casts +++ +++5.5.1.1 Syntax +++ +++a) MOID NEST cast{5D} : +++ formal MOID NEST declarer{46b}, +++ strong MOID NEST ENCLOSED clause{31a,33c,d,e,34a,35a,-}. +++ +++5.5.2 Skips +++ +++5.5.2.1 Syntax +++ +++a) strong MOID NEST skip{5A} : skip{94f} token. +++ +++5.6 Holes +++ +++5.6.1 Syntax +++ +++A) LANGUAGE :: algol sixty eight ; fortran ; c language ; cpp language. +++B) ALGOL68 :: algol sixty eight. +++C) FORTRAM :: fortran. +++D) CLANG :: c language. +++E) CPPLANG :: cpp language. +++F) DLANG :: d language. +++ +++a) strong MOID NEST virtual hole{5A} : +++ virtual nest symbol, strong MOID NEST closed clause{31a}. +++b) strong MOID NEST formal hole{5A} : +++ formal nest{94d} token, MOID LANGUAGE indication{e,f,-}, +++ hole indication{d}. +++c) MOID NEST actual hole{A6a} : +++ strong MOID NEST ENCLOSED clause{31a,33a,c,34a,35a,36a,-}. +++d) hole indication{b} : +++ character denotation{814a} ; row of character denotation{83a}. +++e) MOID ALGOL68 indication{b} : EMPTY. +++f) MOID FORTRAN indication{b} : bold letter f letter o letter r letter t +++ letter r letter a letter n token. +++g) MOID CLANG indication{b} : bold letter c letter l letter a letter n +++ letter g. +++e) MOID CPPLANG indication{b} : bold letter c letter p letter p letter l +++ letter a letter n letter g. +++f) MOID DLANG indication{b} : bold letter d letter l letter a letter n +++ letter g. +++ +++{ Since no representation is provided for the virtual-nest-symbol, the +++ user is unable to construct virtual-holes for himself, but a +++ mechanism is provided (10.6.2.a) for constructing them out of +++ formal- and actual-holes. } +++ +++5.7 Short-circuit logical functions +++ +++{ Extensions: [SC] } +++ +++{ The short-circuit logical functions are pseudo-operators providing +++ logical AND and OR functions with short-circuited elaboration. } +++ +++5.7.1 Syntax +++ +++a) boolean NEST and function{5A} : +++ meek boolean NEST TERTIARY1, andth{94c} token, meek boolean NEST TERTIARY2. +++ +++b) boolean NEST or function{5A} : +++ meek boolean NEST TERTIARY1, orel{94c} token, meek boolean NEST TERTIARY2. +++ +++c) *boolean NEST short circuit function : +++ boolean NEST and function{a} ; boolean NEST or function{b}. +++ +++{ Examples: +++ a) UPB str > 2 ANDTH str[3] /= "x" +++ b) error = 0 OREL (print ("error"); stop; SKIP) } +++ +++6 Coercion +++ +++6.1 Coercees +++ +++6.1.1 Syntax +++ +++A) STRONG{a,66a} :: +++ FIRM{B} ; widened to{65a,b,c,d} ; rowed to{66a} ; +++ voided for{67a,b}. +++B) FIRM{A,b} :: MEEK{C} ; united to{64a}. +++C) MEEK{B,c,d,64a,63a,64a,65a,b,c,d} :: +++ unchanged from{f} ; dereferenced to{62a} ; deprocedured to{63a}. +++D) SOFT{e,63b} :: +++ unchanged from{f} ; softly deprocedured to{63b}. +++E) FORM :: MORF ; COMORF. +++F) MORF :: +++ NEST selection ; NEST slice ; NEST routine text ; +++ NEST ADIC formula ; NEST call ; +++ NEST applied identifier with TAG. +++G) COMORF :: +++ NEST assignation ; NEST identity relation ; +++ NEST LEAP generator ; NEST cast ; NEST denoter ; +++ NEST format text. +++ +++a) strong MOID FORM coercee{5A,B,C,D,A341i} : +++ where (FORM) is (MORF), STRONG{A} MOID MORF ; +++ where (FORM) is (COMORF), STRONG{A} MOID COMORF, +++ unless (STRONG MOID) is (deprocedured to void). +++b) firm MODE FORM coercee{5A,B,C,D,542c} : FIRM{B} MODE FORM. +++c) meek MODE FORM coercee{5A,B,C,D} : MEEK{C} MOID FORM. +++d) weak REFETY STOWED FORM coercee{5A,B,C,D} : +++ MEEK{C} REFETY STOWED FORM, +++ unless (MEEK) is (dereferenced to) +++ and (REFETY) is (EMPTY). +++e) soft MODE FORM coercee{5A,B,C,D} : SOFT{D} MODE FORM. +++f) unchanged from MOID FORM{C,D,67a,b} : MOID FORM. +++ +++g) *SORT MOID coercee : SORT MOID FORM coercee{a,b,c,d,e}. +++h) *MOID coercend : MOID FORM. +++ +++{ Examples: +++ a) 3.14 (in x := 3.14) +++ b) 3.14 (in x + 3.14) +++ c) sin (in sin (x)) +++ d) x1 (in x1[2] := 3.14) +++ e) x (in x := 3.14) } +++ +++6.2 Dereferencing +++ +++6.2.1 Syntax +++ +++a) dereferenced to{61C} MODE1 FORM : +++ MEEK{61C} REF to MODE2 FORM, +++ where MODE2 deflexes to MODE1{47a,b,c,-}. +++ +++{ Examples: +++ a) x in (real (x)) } +++ +++6.3 Deproceduring +++ +++6.3.1 Syntax +++ +++a) deprocedured to{61C,67a} MOID FORM : +++ MEEK{61C} procedure yielding MOID FORM. +++b) softly deprocedured to{61D} MODE FORM : +++ SOFT{61D} procedure yielding MODE FORM. +++ +++{ Examples: +++ a) random (in real (random)) +++ b) x or y (in x or y := 3.14, given +++ PROC x or y = REF REAL: (random < .5 | x | y)) } +++ +++6.4 Uniting +++ +++6.4.1 Syntax +++ +++a) united to{64B} UNITED FORM : +++ MEEK{61C} MOID FORM, +++ where MOID unites to UNITED{b}. +++b) WHETHER MOID1 unites to MOID2{a,34i,71m} : +++ where MOID1 equivalent MOID2{73a}, WHETHER false ; +++ unless MOID1 equivalent MOID2{73a}, +++ WHETHER safe MOODS1 subset of safe MOODS2{73l,m,n}, +++ where (MOODS1) is (MOID1) +++ or (union of MOODS1 mode) is (MOID1), +++ where (MOODS2) is (MOIDS2) +++ or (union of MOODS2 mode) is (MOIDS2). +++ +++{ Examples: +++ a) x (in uir := x) +++ u (in UNION(CHAR,INT,VOID)(u), in a reach containing +++ UNION(INt,VOID) u := EMPTY) } +++ +++6.5 Widening +++ +++6.5.1 Syntax +++ +++A) BITS :: structured with +++ row of boolean field SITHETY letter aleph mode. +++B) BYTES :: structured with +++ row of character field SITHETY letter aleph mode. +++C) SITHETY :: LENGTH LENGTHETY ; SHORT SHORTHETY ; EMPTY. +++D) LENGTH :: letter l letter o letter n letter g. +++E) SHORT :: letter s letter h letter o letter r letter t. +++F) LENGTHETY :: LENGTH LENGTHETY ; EMPTY. +++G) SHORTHETY :: SHORT SHORTHETY ; EMPTY. +++ +++a) widened to{b,61A} SIZETY real FORM : +++ MEEK{61C} SIZETY integral FORM. +++b) widened to{61A} structured with SIZETY real field letter r letter e +++ SIZETY real field letter i letter m mode FORM : +++ MEEK{61C} SIZETY real FORM ; +++ widened to{a} SIZETY real FORM. +++c) widened to{61A} row of boolean FORM : MEEK{61C} BIT FORM. +++d) widened to{61A} row of character FORM : MEEK{61C} BYTES FORM. +++ +++{ Examples: +++ a) 1 (in x := 1) +++ b) 1.0 (in z := 1.0) +++ 1 (in z := 1) +++ c) 2r101 (in []BOOL(2r101)) +++ d) r (in []CHAR(r)) } +++ +++6.6 Rowing +++ +++6.6.1 Syntax +++ +++a) rowed to{61A} REFETY ROWS1 of MODE FORM : +++ where (ROWS1) is (row), +++ STRONG{61A} REFLEXETY MODE FORM, +++ where (REFETY) is derived from (REFLEXETY){531b,c,-} ; +++ where (ROWS1) is (row ROWS2), +++ STRONG{61A} REFLEXETY ROWS2 of MODE FORM, +++ where (REFETY) is derived from (REFLEXETY){531b,c,-}. +++ +++{ Examples: +++ a) 4.13 (in [1:1]REAL b1 := 4.13) +++ x1 (in [1:1,1:n]REAL b2 := x1) } +++ +++6.7 Voiding +++ +++6.7.1 Syntax +++ +++A) NONPROC :: PLAIN ; STOWED ; REF to NONPROC ; +++ procedure with PARAMETERS yielding MOID ; UNITED. +++ +++a) voided to{61A} void MORF : +++ deprocedured to{63a} NONPROC MORF ; +++ unchanged from{61f} NONPROC MORF. +++b) voided to{61A} void COMORF : +++ unchanged from{61f} MODE COMORF. +++ +++{ Examples: +++ a) random (in SKIP; random;) +++ next random (last random) +++ (in SKIP; next random (lat random);) +++ b) PROC VOID (pp) (in PROC PROC VOID pp = PROC VOID : (print (1); +++ VOID : print (2)); PROC VOID (pp);) } +++ +++8 Denotations +++ +++8.1 Plain denotations +++ +++8.1.0.1 Syntax +++ +++A) SIZE:: long ; short. +++B) *NUMERAL :: fixed point numeral ; variable point numeral ; +++ floating point numeral. +++ +++a) SIZE INTREAL denotation{a,80a} : +++ SIZE symbol{94d}, INTREAL, denotation{a,811a,812a}. +++ +++b) *plain denotation : +++ PLAIN denotation{a,811a,812a,813a,814a} ; void denotation{815a}. +++ +++{ Example: +++ a) LONG 0 } +++ +++8.1.1 Integral denotations +++ +++8.1.1.1 Syntax +++ +++a) integral denotation{80a,810a} : fixed point numeral{b}. +++b) fixed point numeral{a,812c,d,f,i,A341h} : digit cypher{c} sequence. +++c) digit cypher{b} : DIGIT symbol{94b}. +++ +++{ Examples: +++ a) 4096 +++ b) 4096 +++ c) 4 } +++ +++8.1.2 Real denotations +++ +++8.1.2.1 Syntax +++ +++a) real denotation{80a,810a} : +++ variable point numeral{b} ; floating point numeral{e}. +++b) variable point numeral{a,f} : +++ integral part{c} option, fractional part{d}. +++c) integral part{b} : fixed point numeral{811b}. +++d) fractional part{b} : point symbol{94b}, fixed point numeral{811b}. +++e) floating point numeral{a} : stagnant part{f}, exponent part{g}. +++f) stagnant part{e} : +++ fixed point numeral{811b} : variable point numeral{b}. +++g) exponent part{e} : +++ times ten to the power choice{h}, power of then{i}. +++h) times ten to the power choice{g} : +++ times ten to the power symbol{94b} ; letter e symbol{94a}. +++i) power of ten{g}: plusminus{j} option, fixed point numeral{811b}. +++j) plusminus{i} : plus symbol{94c} ; mius symbol{94c}. +++ +++{ Examples: +++ a) 0.00123 +++ 1.23e-3 +++ b) 0.00123 +++ c) 0 +++ d) .00123 +++ e) 1.23e-3 +++ f) 123 +++ 1.23 +++ g) E-3 +++ h) E +++ i) -3 +++ j) + +++ - } +++ +++8.1.3 Boolean denotations +++ +++8.1.3.1 Syntax +++ +++a) boolean denotation{80a} : true{94b} symbol ; false{94b} smbol. +++ +++{ Examples: +++ a) TRUE +++ FALSE } +++ +++8.1.4 Character denotations +++ +++8.1.4.1 Syntax +++ +++a) character denotation{80a} : +++ quote{94b} symbol, string item{b}, quote sybol{94b}. +++b) string item{a,83b} : +++ character glyph{c} ; quote image symbol{94f} ; other string item{d}. +++c) character glyph{b,92c} : +++ LETTER symbol{94a} ; DIGIT symbol{94b} ; +++ point sybol{94b} ; open symbol{94f} ; close symbol{94f} ; +++ comma symbol{94b} ; space symbol{94b} ; +++ plus symbol{94c} ; minus symbol{94c}. +++ +++{ A production rule may be added for the notion 'other string item' +++ each of whose alternatives is a symbol 1.1.3.1.f which is different +++ from any terminal production of 'character glyph' and which is not +++ 'quote symbol' } +++ +++{ Examples: +++ a) "a" +++ b) a +++ "" +++ ? +++ c) a 1 . ( ) , . space + - } +++ +++8.1.5 Void denotation +++ +++5.1.5.1 Syntax +++ +++a) void denotation{80a} : empty{94b} symbol. +++ +++{ Example: +++ a) EMPTY } +++ +++8.2 Bits denotations +++ +++8.2.1 Syntax +++ +++A) RADIX :: radix two ; radix four ; radix eight ; radix sixteen. +++ +++a) structured with row of boolean field +++ LENGTH LENGTHETY letter aleph mode denotation{a,80a} : +++ long{94d} symbol, structured with row of boolean field +++ LENGTHETY letter aleph mode denotation{a,c}. +++b) structured with row of boolean field +++ SHORT SHORTHTETY letter aleph mode denotation{b,80a} : +++ short{94d} symbol, +++ structured with row of boolean field SHORTHETY letter aleph mode denotation{b,c}. +++c) structured wih row of boolean field +++ letter aleph mode denotation{a,b,80a} : +++ RADIX{d,e,f,g}, letter r symbol{94a}, RADIX digit{h,i,j,k} sequence. +++d) radix two{c,A347b} : digit two{94b} symbol. +++e) radix four{c,A347b} : digit four{94b} symbol. +++f) radix eight{c,A347b} : digit eight{94b} symbol. +++g) radix sixteen{c,A347b} : digit one symbol{94b}, digit six symbol{94b}. +++h) radix two digit{c,i} : digit zero symbol{94b} ; digit one symbol{94b}. +++i) radix four digit{c,j} : +++ radix two digit{h} ; digit two symbol{94b} ; +++ digit three symbol{94b}. +++j) raidx eight digit{c,k} : +++ radix four digit{i} ; digit four symbol{94b} ; +++ digit five symbol{94b} ; digit six symbol{94b} ; +++ digit seven symbol{94b}. +++k) radix sixteen digit{c} : +++ radix eight digit{j} ; digit eight symbol{94b} ; +++ digit nine symbol{94b} ; letter a symbol{94a} ; +++ letter b symbol{94a} ; letter e symbol{94a} ; letter d symbol{94a} ; +++ letter e symbol{94a} ; letter f symbol{94a}. +++ +++l) *bits denotation : BITS denotation{a,b,c}. +++m) *radix digit : RADIX digit{h,i,j,k}. +++ +++{ Examples: +++ a) LONG 2r101 +++ b) SHORT 16rffff +++ c) 8r231 } +++ +++8.3 String denotations +++ +++8.3.1 Syntax +++ +++a) row of character denotation{80a} : +++ quote{94b} symbol, string{b} option, quote symbol{94b}. +++b) string{a} : string item{814b}, string item{814b} sequence. +++ +++c) *string denotation : row of charater denotation{a}. +++ +++{ Examples: +++ a) "abc" +++ b) abc } +++ +++9 Tokens and symbols +++ +++9.1 Tokens +++ +++{ Tokens are symbols possibly preceded by pragments. } +++ +++9.1.1 Syntax +++ +++a) CHOICE STYLE start{34a} : +++ where (CHOICE) is (choice using boolean), +++ STYLE if{94f,-} token ; +++ where (CHOICE) is (CASE), STYLE case{94f,-} token. +++b) CHOICE STYLE in{34e} : +++ where (CHOICE) is (choice using boolean), +++ STYLE then{94f,-} token ; +++ where (CHOICE) is (CASE), STYLE in{94f,-} token. +++c) CHOICE STYLE again{34l} : +++ where (CHOICE) is (choice using boolean), +++ STYLE else if{94f,-} token ; +++ where (CHOICE) is (CASE), STYLE ouse{94f,-} token. +++d) CHOICE STYLE out{34l} : +++ where (CHOICE) is (choice using boolean), +++ STYLE else{94f,-} token ; +++ where (CHOICE) is (CASE), STYLE out{94f,-} token. +++e) CHOICE STYLE finish{34a} : +++ whre (CHOICE) is (choice using boolean), +++ STYLE fi{94f,-} token ; +++ where (CHOICE) is (CASE), STYLE esac{94f,-} token. +++f) NOTION token : +++ pragment{92a} sequence option, +++ NOTION symbol{94a,b,c,d,e,f,g,h}. +++ +++g) *token : NOTION token{f}. +++h) *symbol : NOTION symbol{94a,b,c,d,e,f,g,h}. +++ +++9.2 Comments and pragmats +++ +++9.2.1 Syntax +++ +++{ Extensions: +++ [NC] nestable comments. } +++ +++A) PRAGMENT :: pragmat ; comment. +++ +++a) pragment{80a,91f,A341b,h,A348a,b,c,A349a,A34Ab} : PRAGMENT{b}. +++b) PRAGMENT{a} : +++ STYLE PRAGMENT symbol{94h,-}, +++ STYLE PRAGMENT item{c} sequence option, +++ STYLE PRAGMENT symbol{94h,-} ; +++ STYLE nestable comment{d}. +++c) STYLE PRAGMENT item{b} : +++ character glyph{814c} ; STYLE other PRAGMENT item{d}. +++d) STYLE nestable comment{b} : +++ STYLE comment begin symbol{94h,-}, +++ STYLE nestable comment contents{e} sequence, +++ STYLE comment end symbol{94h,-}. +++e) STYLE nestable comment contents{d} : +++ STYLE nestable comment item{c} sequence option, +++ STYLE nestable comment{d} option. +++f) STYLE nestable comment item{e} : +++ character glyph{814c} ; STYLE other nestable comment item{d}. +++ +++{ A production rule may be added for each notion designated by 'STYLE +++ other PRAGMENT item' each of whose alternatives is a symbol +++ different from any terminal production of 'character glyph', and +++ such that no terminal production of any 'STYLE other PRAGMENT item' +++ is the corresponding 'STYLE PRAGMENT symbol'. This allows to nest +++ different comment or pragmat for example. } +++ +++9.4 The reference language +++ +++9.4.1 Representations of symbols +++ +++{ Extensions: +++ [CS] andth symbol, orel symbol +++ [MR] access symbol, module symbol, def symbol, public symbol, +++ postlude symbol, formal nest symbol, egg symbol +++ [US] unsafe symbol } +++ +++{ This section of the Report doesn't describe syntax, but lists all +++ the different symbols along with their representation in the +++ reference language. We only include here symbols corresponding to +++ the GNU extensions implemented by this compiler. } +++ +++ symbol representation +++ +++c) andth symbol{57a} ANDTH +++ orel symbol{57b} OREL +++d) module symbol{49a} MODULE +++ access symbol{36b} ACCESS +++ def symbol{49c} DEF +++ fed symbol{49c} FED +++ public symbol{36d,41e} PUB +++ postlude symbol{49f} POSTLUDE +++ formal nest symbol{56b} NEST +++ egg symbol{A6a,c} EGG +++f) unsafe symbol{37a} UNSAFE +++h) bold comment begin symbol{92a} NOTE +++ bold comment end symbol{92a} ETON +++ brief comment begin symbol{92a} { +++ brief comment end symbol{92a} } +++ +++10.1.1 Syntax +++ +++{ Extensions: +++ [MR] user, user task } +++ +++A) EXTERNAL :: user. +++ +++f) NEST1 user task{d} : +++ NEST2 particular prelude with DECS{c}, +++ NEST2 user prelude with MODSETY{c}, +++ NEST2 particular program{g} PACK, go on{94f} token, +++ NEST2 particualr poslude{i}, +++ where (NEST2) is (NEST1 new DECS MODSETY STOP). +++ +++10.6 Packets +++ +++10.6.1 Syntax +++ +++a) MOID NEST new MODSETY ALGOL68 stuffing packet{A7a} : +++ egg{94d} token, hole indication{56d}, is defined as{94d} token, +++ MOID NEST new MODSETY actual hole{56c}. +++ +++{ b) Note that the rules for "MOID NEST new MODSETY LANGUAGE stuffing +++ packets" for other languages are not explicitly included in the +++ syntax. These rules conceptually transform all such +++ LANGUAGE-stuffing-packets into ALGOL68-stuffing-packets with the +++ same meaning. } +++ +++c) NEST new MODSETY1 MODS definition module packet of MODS{A7a} : +++ egg{94d} token, hole indication{56d}, is defined as{94d} token, +++ NEST new MODSETY1 MODS module declaration of MODS{49a}, +++ where MODS absent from NEST{e}. +++d) new LAYER1 new DECS MODSETY1 MODS STOP +++ prelude packet of MODS{A7a} : +++ new LAYER1 new DECS MODSETY1 MODS STOP +++ module declaration of MODS{4a}, +++ where MODS absent from new LAYER1{e}. +++e) WHETHER MODSETY MOD absent from NEST{c,d} : +++ WHETEHR MODSETY absent from NEST{e,f} +++ and MOD independent PROPSETY{71a,b,c}, +++ where PROPSETY collected properties from NEST{g,h}. +++f) WHETHER EMPTY absent from NEST{e} : +++ WHETHER true. +++g) WHETHER PROPSETY1 PROPSETY2 collected properties from +++ NEST new PROPSETY2{e,g} : +++ WHETHER PROPSETY1 collected properties from NEST {g,h}. +++h) WHETHER EMPTY collected properties from new EMPTY{e,g} : +++ WHETHER true. +++ +++i) *NEST new PROPSETY packet : +++ MOID NEST new PROPSETY LANGUAGE stuffing packet{a,b} ; +++ NEST new PROPSETY definition module packet of MODS{c} ; +++ NEST new PROPSETY particular program{A1g} ; +++ NEST new PROPSETY prelude packet of MODS{d}. +++j) *letter symbol : LETTER symbol{94a}. +++k) *digit symbol : DIGIT symbol{94b}. +++ +++{ Examples: +++ +++ a) EGG "abc" = ACCESS A,B (x := 1; y := 2; print (x+y)) +++ c) EGG "abc" = MODULE A = DEF PUB REAL x FED +++ d) MODULE B = DEF PUB REAL y FED +++ +++ The thre examples above would form a compatible collection of +++ packets when taken in conjunction with the particular-program BEGIN +++ NEST "abc" END } +++ +++{ In rule a above, 'MODSETY' envelops the 'MOD's defined by al the +++ definition-module-packets that are being stuffed along with the +++ stuffing-packet. +++ +++ In rules c and d, 'MODSETY1' need only envelop the 'MOD's for those +++ modules actually accessed from within that packet. +++ +++ The semantics related to packets are only defined if, for a +++ collection of packets being stuffed together, all the 'MOD's +++ enveloped by the various 'MODSETY1's are enveloped by 'MODSETY'. } +++ +++{ A stuffing packet contains the definition of an actual-hole. For +++ Algol 68 this consists on an enclosed-clause. For other values of +++ the metanotion 'LANGUAGE' it is different, and it is expected to be +++ translated somehow to an equivalent Algol 68 definition, +++ conceptually naturally. +++ +++ A definition module packet contains the definition of an actual-hole +++ which consists in one or more joined module declarations, with the +++ restriction that none of the declared modules shall exist in the +++ static environment at the formal-hole. +++ +++ A prelude packet contains one or more joined module declarations. } +++ +++10.7 Compilation systems +++ +++{ An implementtion of Algol 68 in which packets of a collection are +++ compiled into a collection of object-modules should conform to the +++ provisions of this section. } +++ +++10.7.1 Syntax +++ +++{ Note that we use the notion "compilation unit" rather than the +++ original "compilation input" used in the IFIP modules definition. } +++ +++A) *LAYERS :: LAYER ; LAYERS LAYER. +++ +++a) compilation unit : +++ MOID NEST new MODSETY LANGUAGE stuffing packet{A6a,b}, +++ MOID NEST hole interface{d}, +++ joined module interface with MODSETY{b,c} ; +++ NEST new MODSETY1 MODS definition module packet of MODS{A6c}, +++ MOID NEST hole interface{d}, +++ joined module interface with MODSETY1{b,c}, +++ module interface with MODS{d} option ; +++ new LAYER1 new DECS MODSETY STOP particular program{A1g}, +++ { void new LAYER1 new DECS STOP hole interface,} +++ unless (DECS) contains (MODULE), +++ joined module interface with MODSETY{b,c} ; +++ new LAYER1 new DECS MODSETY1 MODS STOP +++ prelude packet of MODS{A6d}, +++ { void new LAYER1 new DECS STOP hole interface,} +++ unless (DECS) contains (module), +++ joined module interface with MODSETY1{b,c}, +++ module interface with MODS{d} option. +++b) joined module interface with MODS MODSETY{a,b} : +++ module interface with MODS{d}, +++ joined module interface with MODSETY{b,c}. +++c) joined module inteface with EMPTY{a,b} : EMPTY. +++ +++{ A compilation-unit is either a stuffing packet, a definition module +++ packet, a particular program, or a prelude packet. The packets +++ shall be accompanied by the required hole and module interface +++ information. } +++ +++{ d) Hyper-rules for "MOID NEST hole interface", "module interface +++ with MODS" and "MOID NEST object module". The terminal +++ productions will most likely be in some cryptic notation +++ understood only by the compiler, i.e. the interface data. } +++ +++{ The inclusion of the hypernotions "void new LAYER1 new DECS STOP +++ hole interface" within pragmatic remarks in rule a is intended to +++ signify that this information (which describes the standard +++ environment) must clearly be available to the compiler, but that it +++ may well not be provided in the form of an explicit +++ hole-interface. } ++--- /dev/null +++++ b/src/gcc/algol68/lang-specs.h ++@@ -0,0 +1,24 @@ +++/* lang-specs.h -- gcc driver specs for Algol 68 frontend. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under +++ the terms of the GNU General Public License as published by the Free +++ Software Foundation; either version 3, or (at your option) any later +++ version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or +++ FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++ for more details. +++ +++ You should have received a copy of the GNU General Public License +++ along with GCC; see the file COPYING3. If not see +++ . */ +++ +++/* This is the contribution to the `default_compilers' array in gcc.cc for the +++ Algol 68 language. */ +++ +++{".a68", "@algol68", 0, 1, 0}, +++ {"@algol68", +++ "a681 %i %(cc1_options) %{I*} %{L*} %D %{!fsyntax-only:%(invoke_as)}", 0, 1, +++ 0}, ++--- /dev/null +++++ b/src/gcc/algol68/lang.opt ++@@ -0,0 +1,122 @@ +++; Options for the Algol 68 front end. +++; Copyright (C) 2025 Free Software Foundation, Inc. +++; +++; GCC is free software; you can redistribute it and/or modify it under +++; the terms of the GNU General Public License as published by the Free +++; Software Foundation; either version 3, or (at your option) any later +++; version. +++; +++; GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++; WARRANTY; without even the implied warranty of MERCHANTABILITY or +++; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +++; for more details. +++; +++; You should have received a copy of the GNU General Public License +++; along with GCC; see the file COPYING3. If not see +++; . +++ +++; See the GCC internals manual for a description of this file's format. +++ +++; Please try to keep this file in ASCII collating order. +++ +++; Describes command-line options used by this frontend +++ +++Language +++Algol68 +++ +++I +++Algol68 Joined Separate +++; Documented in c-family/c.opt +++ +++Wextensions +++Algol68 Warning Var(warn_algol68_extensions) LangEnabledBy(Algol68, Wextra) +++Warn for usage of non-portable extensions of Algol 68. +++ +++Wvoiding +++Algol68 Warning Var(warn_algol68_voiding) LangEnabledBy(Algol68, Wextra) +++Warn when voiding occurs. +++ +++Wextra +++Algol68 Warning +++; Documented in common.opt +++ +++Wscope +++Algol68 Warning Var(warn_algol68_scope) +++Warn for potential name scope violations. +++ +++Enum +++Name(warn_hidden_declarations_level) Type(int) UnknownError(argument %qs to %<-Whidden-declaration%> not recognized) +++ +++EnumValue +++Enum(warn_hidden_declarations_level) String(none) Value(0) +++ +++EnumValue +++Enum(warn_hidden_declarations_level) String(prelude) Value(1) +++ +++EnumValue +++Enum(warn_hidden_declarations_level) String(all) Value(2) +++ +++Whidden-declarations +++Algol68 Alias(Whidden-declarations=,prelude,none) +++Warn about hidden declarations in inner scopes. +++ +++Whidden-declarations= +++Algol68 Warning Var(warn_algol68_hidden_declarations) Enum(warn_hidden_declarations_level) Joined RejectNegative LangEnabledBy(Algol68,Wall) +++-Whidden-declarations=[none|prelude|all] Warn about declarations hidden in inner scopes. +++ +++fbrackets +++Algol68 Var(flag_brackets) +++-fbrackets Consider [ .. ] and { .. } as being equivalent to ( .. ). +++ +++fassert +++Algol68 Var(flag_assert) +++Generate code for assert contracts. +++ +++fcheck= +++Algol68 RejectNegative JoinedOrMissing +++-fcheck=[...] Specify which runtime checks are to be performed. +++ +++fa68-dump-modes +++Algol68 Var(flag_a68_dump_modes) +++Dump Algol 68 modes after parsing. +++ +++fa68-dump-ast +++Algol68 Var(flag_a68_dump_ast) +++Dump Algol 68 parse tree after parsing. +++ +++fa68-dump-module-interfaces +++Algol68 Var(flag_a68_dump_moif) +++Dump the interfaces of module definitions in the compiled packet. +++ +++static-libga68 +++Driver +++Link the GNU Algol run-time library statically in the compilation. +++ +++shared-libga68 +++Driver +++Link the GNU Algol 68 run-time library dynamically in the compilation. +++ +++std=algol68 +++Algol68 +++Compile strict Algol 68 as defined by the Revised Report +++ +++std=gnu68 +++Algol68 +++Accept GNU extensions to Algol 68 +++ +++; Stropping regimes. +++ +++fstropping= +++Algol68 Joined RejectNegative Enum(stropping_regime) Var(flag_stropping_regime) +++-fstropping=[upper|supper] Stropping regime to expect in Algol 68 programs. +++ +++Enum +++Name(stropping_regime) Type(int) UnknownError(unknown stropping_regime setting %qs) +++ +++EnumValue +++Enum(stropping_regime) String(upper) Value(0) +++ +++EnumValue +++Enum(stropping_regime) String(supper) Value(1) +++ +++; This comment is to ensure we retain the blank line above. ++--- /dev/null +++++ b/src/gcc/algol68/lang.opt.urls ++@@ -0,0 +1,41 @@ +++; Autogenerated by regenerate-opt-urls.py from gcc/algol68/lang.opt and generated HTML +++ +++I +++UrlSuffix(gcc/Directory-Options.html#index-I) LangUrlSuffix_D(gdc/Directory-Options.html#index-I) LangUrlSuffix_Algol68(ga68/Directory-options.html#index-I) +++ +++Wextensions +++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wextensions) +++ +++Wvoiding +++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wno-voiding) +++ +++Wextra +++UrlSuffix(gcc/Warning-Options.html#index-Wextra) LangUrlSuffix_D(gdc/Warnings.html#index-Wextra) LangUrlSuffix_Fortran(gfortran/Error-and-Warning-Options.html#index-Wextra) +++ +++Wscope +++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Wno-scope) +++ +++Whidden-declarations +++LangUrlSuffix_Algol68(ga68/Warnings-options.html#index-Whidden-declarations) +++ +++fbrackets +++LangUrlSuffix_Algol68(ga68/Dialect-options.html#index-fbrackets) +++ +++fassert +++LangUrlSuffix_D(gdc/Runtime-Options.html#index-fassert) LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fassert) +++ +++fcheck= +++LangUrlSuffix_Fortran(gfortran/Code-Gen-Options.html#index-fcheck) LangUrlSuffix_Algol68(ga68/Runtime-options.html#index-fcheck) +++ +++fa68-dump-modes +++LangUrlSuffix_Algol68(ga68/Developer-options.html#index-fa68-dump-modes) +++ +++fa68-dump-ast +++LangUrlSuffix_Algol68(ga68/Developer-options.html#index-fa68-dump-ast) +++ +++static-libga68 +++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-static-libga68) +++ +++shared-libga68 +++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-shared-libga68) +++ ++--- a/src/gcc/common.opt +++++ b/src/gcc/common.opt ++@@ -3914,6 +3914,9 @@ Driver Joined ++ static ++ Driver ++ +++static-libga68 +++Driver +++ ++ static-libgcc ++ Driver ++ ++--- a/src/gcc/common.opt.urls +++++ b/src/gcc/common.opt.urls ++@@ -1895,6 +1895,9 @@ UrlSuffix(gcc/Overall-Options.html#index-specs) ++ ; duplicate: 'gcc/Darwin-Options.html#index-static-1' ++ ; duplicate: 'gcc/Link-Options.html#index-static' ++ +++static-libga68 +++LangUrlSuffix_Algol68(ga68/Linking-options.html#index-static-libga68) +++ ++ static-libgcc ++ UrlSuffix(gcc/Link-Options.html#index-static-libgcc) ++ ++--- a/src/gcc/config.gcc +++++ b/src/gcc/config.gcc ++@@ -93,6 +93,9 @@ ++ # tm_rust_file list of headers with definitions of target hook ++ # macros for the Rust compiler. ++ # +++# tm_algol68_file list of headers with definitions of target hook +++# macros for the Algol68 compiler. +++# ++ # out_file The name of the machine description C support ++ # file, if different from "$cpu_type/$cpu_type.c". ++ # ++@@ -155,6 +158,9 @@ ++ # rust_target_objs List of extra target-dependent objects that be ++ # linked into the Rust compiler only. ++ # +++# algol68_target_objs List of extra target-dependent objects that be +++# linked into the Algol68 compiler only. +++# ++ # target_gtfiles List of extra source files with type information. ++ # ++ # xm_defines List of macros to define when compiling for the ++@@ -210,6 +216,9 @@ ++ # ++ # target_has_targetrustm Set to yes or no depending on whether the target ++ # has its own definition of targetrustm. +++# target_has_targetalgol68m +++# Set to yes or no depending on whether the target +++# has its own definition of targetalgol68m. ++ ++ out_file= ++ common_out_file= ++@@ -228,10 +237,12 @@ cxx_target_objs= ++ d_target_objs= ++ fortran_target_objs= ++ rust_target_objs= +++algol68_target_objs= ++ target_has_targetcm=no ++ target_has_targetm_common=yes ++ target_has_targetdm=no ++ target_has_targetrustm=no +++target_has_targetalgol68m=no ++ tm_defines= ++ xm_defines= ++ # Set this to force installation and use of collect2. ++@@ -621,6 +632,16 @@ then ++ rust_target_objs="${rust_target_objs} ${cpu_type}-rust.o" ++ fi ++ +++tm_algol68_file= +++if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-algol68.h +++then +++ tm_algol68_file="${cpu_type}/${cpu_type}-algol68.h" +++fi +++if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-algol68.cc +++then +++ algol68_target_objs="${algol68_target_objs} ${cpu_type}-algol68.o" +++fi +++ ++ extra_modes= ++ if test -f ${srcdir}/config/${cpu_type}/${cpu_type}-modes.def ++ then ++@@ -790,9 +811,11 @@ case ${target} in ++ d_target_objs="${d_target_objs} darwin-d.o" ++ fortran_target_objs="darwin-f.o" ++ rust_target_objs="${rust_target_objs} darwin-rust.o" +++ algol68_target_objs="${algol68_target_objs} darwin-algol68.o" ++ target_has_targetcm=yes ++ target_has_targetdm=yes ++ target_has_targetrustm=yes +++ target_has_targetalgol68m=no ++ extra_objs="${extra_objs} darwin.o" ++ extra_gcc_objs="darwin-driver.o" ++ default_use_cxa_atexit=yes ++@@ -825,6 +848,8 @@ case ${target} in ++ target_has_targetdm=yes ++ rust_target_objs="${rust_target_objs} dragonfly-rust.o" ++ target_has_targetrustm=yes +++ algol68_target_objs="${algol68_target_objs} dragonfly-algol68.o" +++ target_has_targetalgol68m=yes ++ ;; ++ *-*-freebsd*) ++ # This is the generic ELF configuration of FreeBSD. Later ++@@ -878,12 +903,16 @@ case ${target} in ++ target_has_targetdm=yes ++ rust_target_objs="${rust_target_objs} freebsd-rust.o" ++ target_has_targetrustm=yes +++ algol68_target_objs="${algol68_target_objs} freebsd-algol68.o" +++ target_has_targetalgol68m=yes ++ ;; ++ *-*-fuchsia*) ++ native_system_header_dir=/include ++ tmake_file="t-fuchsia" ++ rust_target_objs="${rust_target_objs} fuchsia-rust.o" ++ target_has_targetrustm=yes +++ algol68_target_objs="${algol68_target_objs} fuchsia-algol68.o" +++ target_has_targetalgol68m=yes ++ ;; ++ *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-gnu* | *-*-kopensolaris*-gnu | *-*-uclinuxfdpiceabi) ++ extra_options="$extra_options gnu-user.opt" ++@@ -992,6 +1021,8 @@ case ${target} in ++ esac ++ rust_target_objs="${rust_target_objs} netbsd-rust.o" ++ target_has_targetrustm=yes +++ algol68_target_objs="${algol68_target_objs} netbsd-algol68.o" +++ target_has_targetalgol68m=yes ++ ;; ++ *-*-openbsd*) ++ tmake_file="t-openbsd" ++@@ -1009,6 +1040,8 @@ case ${target} in ++ target_has_targetdm=yes ++ rust_target_objs="${rust_target_objs} openbsd-rust.o" ++ target_has_targetrustm=yes +++ algol68_target_objs="${algol68_target_objs} openbsd-algol68.o" +++ target_has_targetalgol68m=yes ++ ;; ++ *-*-phoenix*) ++ gas=yes ++@@ -1071,6 +1104,8 @@ case ${target} in ++ target_has_targetdm=yes ++ rust_target_objs="${rust_target_objs} sol2-rust.o" ++ target_has_targetrustm=yes +++ algol68_target_objs="${algol68_target_objs} sol2-algol68.o" +++ target_has_targetalgol68m=yes ++ ;; ++ *-*-*vms*) ++ extra_options="${extra_options} vms/vms.opt" ++@@ -1106,6 +1141,9 @@ case ${target} in ++ rust_target_objs="${rust_target_objs} vxworks-rust.o" ++ target_has_targetrustm=yes ++ +++ algol68_target_objs="${algol68_target_objs} vxworks-algol68.o" +++ target_has_targetalgol68m=yes +++ ++ extra_gcc_objs="vxworks-driver.o" ++ ++ # This private header exposes a consistent interface for checks on ++@@ -2232,6 +2270,8 @@ i[34567]86-*-mingw* | x86_64-*-mingw*) ++ target_has_targetdm="yes" ++ rust_target_objs="${rust_target_objs} winnt-rust.o" ++ target_has_targetrustm="yes" +++ algol68_target_objs="${algol68_target_objs} winnt-algol68.o" +++ target_has_targetalgol68m=yes ++ case ${target} in ++ x86_64-*-* | *-w64-*) ++ need_64bit_isa=yes ++@@ -3702,6 +3742,10 @@ if [ "$target_has_targetrustm" = "no" ]; then ++ rust_target_objs="$rust_target_objs default-rust.o" ++ fi ++ +++if [ "$target_has_targetalgol68" = "no" ]; then +++ algol68_target_objs="$algol68_target_objs default-algol68.o" +++fi +++ ++ # Support for --with-cpu and related options (and a few unrelated options, ++ # too). ++ case ${with_cpu} in ++--- a/src/gcc/config/darwin.h +++++ b/src/gcc/config/darwin.h ++@@ -507,6 +507,7 @@ extern GTY(()) int darwin_ms_struct; ++ %{static|static-libgcc|static-libgcobol:%:replace-outfile(-lgcobol libgcobol.a%s)}\ ++ %{static|static-libgcc|static-libstdc++|static-libgfortran:%:replace-outfile(-lgomp libgomp.a%s)}\ ++ %{static|static-libgcc|static-libstdc++:%:replace-outfile(-lstdc++ libstdc++.a%s)}\ +++ %{static|static-libga68:%:replace-outfile(-lga68 libga68.a%s)}\ ++ %{static|static-libgm2:%:replace-outfile(-lm2pim libm2pim.a%s)}\ ++ %{static|static-libgm2:%:replace-outfile(-lm2iso libm2iso.a%s)}\ ++ %{static|static-libgm2:%:replace-outfile(-lm2min libm2min.a%s)}\ ++@@ -1285,4 +1286,8 @@ extern void darwin_driver_init (unsigned int *,struct cl_decoded_option **); ++ #undef BTF_INFO_SECTION_NAME ++ #define BTF_INFO_SECTION_NAME "__CTF_BTF,__btf,regular,debug" ++ +++/* Algol68 */ +++#undef A68_EXPORT_SECTION_NAME +++#define A68_EXPORT_SECTION_NAME "__a68_exports" +++ ++ #endif /* CONFIG_DARWIN_H */ ++--- a/src/gcc/config/rs6000/rs6000-logue.cc +++++ b/src/gcc/config/rs6000/rs6000-logue.cc ++@@ -5332,18 +5332,18 @@ rs6000_output_function_epilogue (FILE *file) ++ /* Tbtab format type. Use format type 0. */ ++ fputs ("\t.byte 0,", file); ++ ++- /* Language type. Unfortunately, there does not seem to be any ++- official way to discover the language being compiled, so we ++- use language_string. ++- C is 0. Fortran is 1. Ada is 3. Modula-2 is 8. C++ is 9. ++- Java is 13. Objective-C is 14. Objective-C++ isn't assigned ++- a number, so for now use 9. LTO, Go, D, and JIT aren't assigned ++- numbers either, so for now use 0. */ +++ /* Language type. Unfortunately, there does not seem to be any official +++ way to discover the language being compiled, so we use +++ language_string. C is 0. Fortran is 1. Ada is 3. Modula-2 is 8. +++ C++ is 9. Java is 13. Objective-C is 14. Objective-C++ isn't +++ assigned a number, so for now use 9. LTO, Go, D, Algol 68 and JIT +++ aren't assigned numbers either, so for now use 0. */ ++ if (lang_GNU_C () ++ || ! strcmp (language_string, "GNU GIMPLE") ++ || ! strcmp (language_string, "GNU Go") ++ || ! strcmp (language_string, "GNU D") ++ || ! strcmp (language_string, "GNU Rust") +++ || ! strcmp (language_string, "GNU Algol 68") ++ || ! strcmp (language_string, "libgccjit")) ++ i = 0; ++ else if (! strcmp (language_string, "GNU F77") ++--- a/src/gcc/configure +++++ b/src/gcc/configure ++@@ -649,6 +649,7 @@ ISLLIBS ++ GMPINC ++ GMPLIBS ++ target_cpu_default +++algol68_target_objs ++ rust_target_objs ++ d_target_objs ++ fortran_target_objs ++@@ -658,6 +659,8 @@ use_gcc_stdint ++ xm_defines ++ xm_include_list ++ xm_file_list +++tm_algol68_include_list +++tm_algol68_file_list ++ tm_rust_include_list ++ tm_rust_file_list ++ tm_d_include_list ++@@ -15149,6 +15152,17 @@ for f in $tm_rust_file; do ++ esac ++ done ++ +++tm_algol68_file_list= +++tm_algol68_include_list= +++for f in $tm_algol68_file; do +++ case $f in +++ * ) +++ tm_algol68_file_list="${tm_algol68_file_list} \$(srcdir)/config/$f" +++ tm_algol68_include_list="${tm_algol68_include_list} config/$f" +++ ;; +++ esac +++done +++ ++ xm_file_list= ++ xm_include_list= ++ for f in $xm_file; do ++@@ -21520,7 +21534,7 @@ else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++-#line 21523 "configure" +++#line 21537 "configure" ++ #include "confdefs.h" ++ ++ #if HAVE_DLFCN_H ++@@ -21626,7 +21640,7 @@ else ++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 ++ lt_status=$lt_dlunknown ++ cat > conftest.$ac_ext <<_LT_EOF ++-#line 21629 "configure" +++#line 21643 "configure" ++ #include "confdefs.h" ++ ++ #if HAVE_DLFCN_H ++@@ -34096,6 +34110,9 @@ fi ++ ++ ++ +++ +++ +++ ++ ++ ++ ++--- a/src/gcc/configure.ac +++++ b/src/gcc/configure.ac ++@@ -2472,6 +2472,17 @@ for f in $tm_rust_file; do ++ esac ++ done ++ +++tm_algol68_file_list= +++tm_algol68_include_list= +++for f in $tm_algol68_file; do +++ case $f in +++ * ) +++ tm_algol68_file_list="${tm_algol68_file_list} \$(srcdir)/config/$f" +++ tm_algol68_include_list="${tm_algol68_include_list} config/$f" +++ ;; +++ esac +++done +++ ++ xm_file_list= ++ xm_include_list= ++ for f in $xm_file; do ++@@ -7562,6 +7573,8 @@ AC_SUBST(tm_d_file_list) ++ AC_SUBST(tm_d_include_list) ++ AC_SUBST(tm_rust_file_list) ++ AC_SUBST(tm_rust_include_list) +++AC_SUBST(tm_algol68_file_list) +++AC_SUBST(tm_algol68_include_list) ++ AC_SUBST(xm_file_list) ++ AC_SUBST(xm_include_list) ++ AC_SUBST(xm_defines) ++@@ -7571,6 +7584,7 @@ AC_SUBST(cxx_target_objs) ++ AC_SUBST(fortran_target_objs) ++ AC_SUBST(d_target_objs) ++ AC_SUBST(rust_target_objs) +++AC_SUBST(algol68_target_objs) ++ AC_SUBST(target_cpu_default) ++ ++ AC_SUBST_FILE(language_hooks) ++--- a/src/gcc/dwarf2out.cc +++++ b/src/gcc/dwarf2out.cc ++@@ -25480,6 +25480,14 @@ gen_compile_unit_die (const char *filename) ++ else if (strcmp (language_string, "GNU Rust") == 0) ++ language = DW_LANG_Rust; ++ } +++ else if (!dwarf_strict) +++ { +++ if (strcmp (language_string, "GNU Algol 68") == 0) +++ { +++ language = DW_LANG_Algol68; +++ lname = DW_LNAME_Algol68; +++ } +++ } ++ } ++ /* Use a degraded Fortran setting in strict DWARF2 so is_fortran works. */ ++ else if (startswith (language_string, "GNU Fortran")) ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -4666,11 +4666,13 @@ driver_handle_option (struct gcc_options *opts, ++ case OPT_static_libgfortran: ++ case OPT_static_libquadmath: ++ case OPT_static_libphobos: +++ case OPT_static_libga68: ++ case OPT_static_libgm2: ++ case OPT_static_libstdc__: ++ /* These are always valid; gcc.cc itself understands the first two ++ gfortranspec.cc understands -static-libgfortran, ++ libgfortran.spec handles -static-libquadmath, +++ a68spec.cc understands -static-libga68, ++ d-spec.cc understands -static-libphobos, ++ gm2spec.cc understands -static-libgm2, ++ and g++spec.cc understands -static-libstdc++. */ ++--- a/src/gcc/genhooks.cc +++++ b/src/gcc/genhooks.cc ++@@ -36,6 +36,7 @@ static struct hook_desc hook_array[] = { ++ #include "common/common-target.def" ++ #include "d/d-target.def" ++ #include "rust/rust-target.def" +++#include "algol68/algol68-target.def" ++ #undef DEFHOOK ++ }; ++ ++--- a/src/gcc/regenerate-opt-urls.py +++++ b/src/gcc/regenerate-opt-urls.py ++@@ -361,7 +361,8 @@ def write_url_file(index, optfile, dstfile): ++ PER_LANGUAGE_OPTION_INDEXES = [ ++ ('gcc/Option-Index.html', None), ++ ('gdc/Option-Index.html', 'D'), ++- ('gfortran/Option-Index.html', 'Fortran') +++ ('gfortran/Option-Index.html', 'Fortran'), +++ ('ga68/Option-Index.html', 'Algol68'), ++ ] ++ ++ def main(args): ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/README.mcts ++@@ -0,0 +1,37 @@ +++The tests in compile/mcts and execute/mcts have been adapted from: +++ +++ The Revised MC Algol 68 Test Set, version 3 +++ +++edited by Dick Grüne in 1973 and originally published by the +++Mathematisch Centrum in Amsterdam, a non-profit institution founded in +++1946 aiming at the promotion of pure mathematics and its applications. +++ +++The WG 2.1 blessed the test set with this authorized statement: +++ +++ "This ALGOL68 Test Set has been reviewed by the IFIP Working Group +++ 2.1, which considers it as a valuable means of testing +++ implementations of ALGOL68." +++ +++The test set explores all odd corners of Algol 68. +++ +++The tests have been modified in order to accommodate the GNU Algol 68 +++implementation. Some general adaptations are: +++ +++- Many tests in the original MC test set print out expected results so +++ they can be verified visually. We check for them programmatically +++ instead making use of the ASSERT construct. +++ +++Additional particular modifications are explained and justified in the +++source files of the corresponding tests. +++ +++The tests fall in the following categories: +++ +++Null programs (nullNN.a68) +++ Various forms of empty enclosed-clauses. +++ +++Simple tests (simpNN.a68) +++ Contains almost all language features of the language used in +++ simple ways. +++ +++Declarers tests (declNN.a68) +++ Declarers and their well-formedness. ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/a68includes/goodbye-supper.a68 ++@@ -0,0 +1,4 @@ +++proc goodbye = (string name) string: +++begin string msg := "Goodbye " + name; +++ msg +++end; ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/a68includes/goodbye.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# PR UPPER PR # +++ +++PROC goodbye = (STRING name) STRING: +++BEGIN +++ STRING msg := "Goodbye " + name; +++ msg +++END; ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/a68includes/hello-supper.a68 ++@@ -0,0 +1,5 @@ +++proc hello = (string name) string: +++begin string msg := "Hello " + name; +++ msg +++end; +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/a68includes/hello.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# PR UPPER PR # +++ +++PROC hello = (STRING name) STRING: +++BEGIN +++ STRING msg := "Hello " + name; +++ msg +++END; ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT a := (1,2,3); # { dg-error "actual bounds expected" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-2.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN LOC[]INT a := (1,2,3); # { dg-error "actual bounds expected" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/actual-bounds-expected-3.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN LOC[]INT a := (1,2,3), # { dg-error "actual bounds expected" } # +++ b := (4); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/balancing-1.a68 ++@@ -0,0 +1,7 @@ +++mode Word = union (void,real), +++ Rules = union (void,string); +++ +++op LEN = (Word w) int: skip, +++LEN = (Rules r) int: skip; +++ +++skip ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/bold-nestable-comment-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options {-fstropping=upper} } # +++# pr UPPER pr # +++BEGIN NOTE This is a +++ NOTE nestable ETON comment in bold style. +++ ETON +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/bold-taggle-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options {-std=gnu68 -fstropping=upper} } # +++ +++BEGIN MODE FOO_BAR = INT; +++ FOO_BAR foo_bar = 10; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/brief-nestable-comment-1.a68 ++@@ -0,0 +1,4 @@ +++begin { This is a +++ { nestable } comment in brief style. } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/brief-nestable-comment-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN NOTE This is a +++ { nestable } comment in brief style. +++ ETON +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/char-break-1.a68 ++@@ -0,0 +1,11 @@ +++{ Make sure char denotations with string breaks work. } +++begin prio % = 9; +++ op % = (char a) char: a; +++ assert (ABS %"'n" = 10); +++ assert (ABS %"'f" = 12); +++ assert (ABS %"'t" = 9); +++ assert (ABS %"'r" = 13); +++ assert (%"'( u0061)" = "a"); +++ assert (%"'(U00000061 )" = "a"); +++ assert (%"'(u1234)" = replacement_char) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/compile.exp ++@@ -0,0 +1,34 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# Compile tests, no torture testing. +++# +++# These tests raise errors in the front end; torture testing doesn't apply. +++ +++load_lib algol68-dg.exp +++ +++# Initialize `dg'. +++dg-init +++ +++# Main loop. +++set saved-dg-do-what-default ${dg-do-what-default} +++ +++set dg-do-what-default "compile" +++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] "" "" +++set dg-do-what-default ${saved-dg-do-what-default} +++ +++# All done. +++dg-finish ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/conditional-clause-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN INT i := 26; +++ IF INT ii = i * 2; ii > 50 THEN +++ ii +++ ELIF i = 10 THEN +++ 100 +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-bold-taggle-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options {-std=algol68 -fstropping=upper} } # +++ +++BEGIN MODE FOO_BAR = INT; # { dg-error "unworthy" } # +++ FOO_BAR foo_bar = 10; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-coercion-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN INT a; +++ a := "foo" # { dg-error "cannot be coerced" } # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-coercion-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# This is Example 4.2.6c in McGETTRICK[78]. # +++BEGIN []STRUCT([]INT a) r = (1,2,3); # { dg-error "cannot be coerced" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-coercion-flex-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Coercing from REF FLEX[]REAL to REF[]REAL is not allowed, since +++ flexibility shall match # +++BEGIN FLEX[1:0] REAL rowvar := SKIP; +++ REF [] REAL xlm = rowvar; # { dg-error "FLEX.*cannot be coerced" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-compile-unknown-tag-1.a68 ++@@ -0,0 +1,8 @@ +++module Foo = def pub int idpublic = 10; +++ int idprivate = 20; +++ skip +++ fed, +++ Bar = def pub int idpublic = 30; +++ int idprivate = 40; +++ xxx { dg-error "" } +++ fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-conformance-clause-1.a68 ++@@ -0,0 +1,8 @@ +++{ This is an invalid program. } +++begin case +++ if true then "foo" else 10 fi { dg-error "not a united mode" } +++ in (string): skip, +++ (int): skip +++ esac +++end +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-contraction-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Contracting mixed collateral variable and constant declarations is +++ not allowed. +++# +++(INT foo = 100, bar := 200) # { dg-error "mixed" } # ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-contraction-2.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Contracting mixed collateral variable and constant declarations is +++ not allowed. # +++BEGIN PROC x = VOID: SKIP, +++ y := VOID: SKIP; # { dg-error "mixed" } # +++ x +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-def-1.a68 ++@@ -0,0 +1,3 @@ +++module Foo = +++def skip; { dg-error "fed" } +++ skip ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-incestuous-union-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Union modes shall not contain modes which are firmly related, i.e. +++ it shall not be possible to coerce from one mode to another in a +++ firm context. # +++BEGIN UNION(INT, REF INT) incestuous; # { dg-error "has firmly related components" } # +++ incestuous +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-label-after-decl-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN GOTO end; +++ ASSERT(FALSE); +++end: 0; +++ INT i = 10; # { dg-error "declaration cannot follow" } # +++ i +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-1.a68 ++@@ -0,0 +1,3 @@ +++begin struct (int i, real r) j; +++ j := "joo" { dg-error "char.*struct \\(int i, real r\\)" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-10.a68 ++@@ -0,0 +1,3 @@ +++begin long long int j; +++ j := "joo" { dg-error "char.*long long int" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-11.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN LONG LONG INT j; +++ j := "joo" { dg-error "CHAR.*LONG LONG INT" } +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-12.a68 ++@@ -0,0 +1,3 @@ +++begin short int j; +++ j := "joo" { dg-error "char.*short int" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-13.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN SHORT INT j; +++ j := "joo" { dg-error "CHAR.*SHORT INT" } +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-14.a68 ++@@ -0,0 +1,3 @@ +++begin short short int j; +++ j := "joo" { dg-error "char.*short short int" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-15.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN SHORT SHORT INT j; +++ j := "joo" { dg-error "CHAR.*SHORT SHORT INT" } +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-16.a68 ++@@ -0,0 +1,3 @@ +++begin flex[1:0]int j; +++ j := "joo" { dg-error "char.*flex.*int" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-17.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN FLEX[1:0]INT j; +++ j := "joo" { dg-error "CHAR.*FLEX.*INT" } +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-2.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRUCT (INT i, REAL r) j; +++ j := "joo" # { dg-error "CHAR.*STRUCT \\(INT i, REAL r\\)" } # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-3.a68 ++@@ -0,0 +1,3 @@ +++begin union (int,real) j; +++ j := "joo" { dg-error "char.*union \\( *real *, *int *\\)" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-4.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN UNION (INT,REAL) j; +++ j := "joo" { dg-error "CHAR.*UNION \\( *REAL *, *INT *\\)" } +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-5.a68 ++@@ -0,0 +1,3 @@ +++begin proc union (int,real) j; +++ j := "joo" { dg-error "char.*proc union \\( *real *, *int *\\)" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-6.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC UNION (INT,REAL) j; +++ j := "joo" { dg-error "CHAR.*PROC UNION \\( *REAL *, *INT *\\)" } +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-8.a68 ++@@ -0,0 +1,3 @@ +++begin long int j; +++ j := "joo" { dg-error "char.*long int" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-mode-stropping-9.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN LONG INT j; +++ j := "joo" { dg-error "CHAR.*LONG INT" } +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-module-coercions-1.a68 ++@@ -0,0 +1,15 @@ +++{ This test makes sure mode checks are carried +++ over the inside of module texts. } +++module Foo = def +++ skip +++ postlude +++ int i = "foo"; { dg-error "coerced" } +++ skip +++ fed, +++ Bar = def +++ int i = 3.14; { dg-error "coerced" } +++ skip +++ postlude +++ skip +++ fed, +++ Baz = def skip fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-module-not-found-1.a68 ++@@ -0,0 +1,4 @@ +++access +++ Foo { dg-error "cannot find module" } +++begin skip end +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-module-ranges-1.a68 ++@@ -0,0 +1,13 @@ +++{ Definitions in the def-part of a module text are visible in the +++ postlude-part, but not the other way around. } +++ +++module Foo = def int i; +++ x := 20 { dg-error "" } +++ postlude +++ i := 10 { this is ok } +++ fed, +++ Bar = def int x; +++ skip +++ postlude +++ x := 20 { this is ok } +++ fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-nestable-comments-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# pr UPPER pr # +++BEGIN NOTE This is a +++ NOTE nestable ETON comment in brief style. +++ ETON +++ { Another { comment }. } +++ NOTE invalid { nesting ETON of comments } # { dg-error "" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-nested-comment-1.a68 ++@@ -0,0 +1,6 @@ +++{ The string in nested comment is in one logical line. } +++begin +++ { puts ("{'n { dg-error {} } +++"); { this prints foo }} +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-no-bounds-allowed-1.a68 ++@@ -0,0 +1,15 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN [1:10]INT i, +++ [1:10]STRUCT(REF[]INT i, BOOL j) k, +++ [1:10]STRUCT([1:10]INT i, BOOL j) l, +++ [1:10]REF[]INT p; +++ # formal, so no bounds allowed: # +++ [1:10]PROC[1:10]INT q, # { dg-error "formal bounds expected" } # +++ STRUCT(REF[1:10]INT i, BOOLj) m, # { dg-error "virtual bounds expected" } # +++ [1:10]REF[1:10]INT mn, # { dg-error "virtual bounds expected" } # +++ PROC([1:10]INT)VOID pp, # { dg-error "formal bounds expected" } # +++ UNION([1:10] INT, BOOL) nm, # { dg-error "formal bounds expected" } # +++ [1:10]INT u = (1); # { dg-error "formal bounds expected" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-1.a68 ++@@ -0,0 +1,8 @@ +++{ dg-error "unrecognized pragmat" } pr invalid Foo in "module" pr +++ +++begin prio // = 8; +++ op (int,int)int // = lala; +++ proc lala = (int a, b) int: a + b; +++ proc void jeje = skip; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-access-1.a68 ++@@ -0,0 +1,8 @@ +++pr access Foo in pr { dg-error "expected string" } +++ +++begin prio // = 8; +++ op (int,int)int // = lala; +++ proc lala = (int a, b) int: a + b; +++ proc void jeje = skip; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-pragmat-access-2.a68 ++@@ -0,0 +1,9 @@ +++pr access Foo in "lala" pr +++pr access Foo in "lele" pr { dg-error "multiple" } +++ +++begin prio // = 8; +++ op (int,int)int // = lala; +++ proc lala = (int a, b) int: a + b; +++ proc void jeje = skip; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-pub-loc-1.a68 ++@@ -0,0 +1,10 @@ +++{ Publicized varifables cannot go on the stack, for obvious reasons. } +++ +++module Foo = +++def +++ pub string xx; +++ pub heap string yy; +++ pub loc string zz; { dg-error "" } +++ loc string vv; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-pub-out-of-def-1.a68 ++@@ -0,0 +1,13 @@ +++module Foo = +++def pub mode JORL = int; +++ pub proc plus = (int a, b) int: a + b; +++ pub proc vplus := (int a, b) int: a + b; +++ pub loc proc lvplus := (int a, b) int: a + b; +++ pub heap proc hvplus := (int a, b) int: a + b; +++ pub prio // = 8; +++ pub op // = (int a, b) int: a % b; +++ proc invalid = void: +++ (pub mode JI = void; { dg-error "" } +++ skip); +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-pub-out-of-def-2.a68 ++@@ -0,0 +1,9 @@ +++begin pub mode Jorl = void; { dg-error "" } +++ pub proc lala = void: skip; { dg-error "" } +++ pub proc lele := void: skip; { dg-error "" } +++ begin pub prio + = 4; { dg-error "" } +++ skip +++ end; +++ pub op // = (int a, b) int: a % b; { dg-error "" } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-string-break-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN puts ("hello '_ world") # { dg-error "invalid string break sequence" } # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-string-break-2.a68 ++@@ -0,0 +1,2 @@ +++begin puts ("hello '(U0000) world") # { dg-error "eight" } # +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-string-break-3.a68 ++@@ -0,0 +1,2 @@ +++begin puts ("hello '(u00) world") # { dg-error "four" } # +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-string-break-4.a68 ++@@ -0,0 +1,2 @@ +++begin puts ("hello '(u) world") # { dg-error "four" } # +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-string-break-5.a68 ++@@ -0,0 +1,2 @@ +++begin puts ("hello '(u0010u0020) world") # { dg-error "" } # +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-string-break-6.a68 ++@@ -0,0 +1,2 @@ +++begin puts ("hello '(u0010'/) world") # { dg-error "" } # +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-string-break-7.a68 ++@@ -0,0 +1,2 @@ +++begin puts ("'") # { dg-error "" } # +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-string-break-8.a68 ++@@ -0,0 +1,4 @@ +++begin string s = +++ "'(Uf09f94a5)"; { dg-error "Unicode" } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-stropping-5.a68 ++@@ -0,0 +1,3 @@ +++begin int j; +++ j := "joo" { dg-error "char.*int" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-stropping-6.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT j; +++ j := "joo" # { dg-error "CHAR.*INT" } # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-1.a68 ++@@ -0,0 +1,2 @@ +++begin for i to 10 skip od { dg-error "do" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-2.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN FOR i TO 10 SKIP OD # { dg-error "DO" } # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-3.a68 ++@@ -0,0 +1,2 @@ +++begin if then 10 else 20 fi { dg-error "if" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-stropping-keyword-4.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN IF THEN 10 ELSE 20 FI # { dg-error "IF" } # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-supper-1.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options {-fstropping=upper} } # +++ +++begin ~ end # { dg-error "" } # ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-supper-2.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options {-fstropping=supper} } # +++ +++begin int foo__bar = 10; # { dg-error "unworthy" } # +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-supper-3.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options {-fstropping=supper} } # +++ +++begin int _bar = 10; # { dg-error "unworthy" } # +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-supper-4.a68 ++@@ -0,0 +1,5 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin int foo bar = 10; { dg-error "" } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-supper-5.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options {-fstropping=supper} } # +++ +++begin int foo__ = 10; # { dg-error "unworthy" } # +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-supper-6.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options {-fstropping=supper} } # +++ +++begin mode foo_Invalid = int; # { dg-error "Invalid" } # +++ foo_Invalid some_int = 10; # { dg-error "Invalid" } # +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-underscore-in-mode-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Underscores are unworthy characters if they are not trailing +++ either a taggle or, in UPPER stropping, a bold word. # +++BEGIN INT invalid_tag__; # { dg-error "unworthy character" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-underscore-in-tag-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Underscores are unworthy characters if they are not trailing a +++ taggle or, in UPPER stropping, a bold word.. # +++BEGIN MODE INVALID_BOLD_WORD__; # { dg-error "unworthy character" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-upper-1.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options {-fstropping=supper} } # +++ +++BEGIN ~ END # { dg-error "" } # ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-1.a68 ++@@ -0,0 +1,2 @@ +++begin { dg-error "" } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-2.a68 ++@@ -0,0 +1,2 @@ +++( { dg-error "" } +++) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-vacuum-3.a68 ++@@ -0,0 +1,3 @@ +++begin struct(int i, real r) foo = (); { dg-error "" } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN INT a := 10; +++ LONG REAL l := a; # { dg-error "coerced" } # +++ l +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN INT a := 10; +++ LONG INT l := a; # { dg-error "coerced" } # +++ l +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-3.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN INT d := 0; +++ INT y := 10; +++ LONG REAL x; +++ 2 +++ + (d > 0 | x | # { dg-error "" } # +++ y +++ ) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-4.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN +++ INT d := 0; +++ LONG REAL x; +++ 2 +++ + (d > 0 | x | # { dg-error "" } # +++ 10 +++ ) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-5.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN +++ LONG INT d := 0; # { dg-error "coerced" } # +++ d +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-6.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN +++ LONG LONG INT d := LONG 0; # { dg-error "coerced" } # +++ d +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-7.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN +++ LONG REAL d := 3.14; # { dg-error "coerced" } # +++ d +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-8.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN +++ LONG LONG REAL d := LONG 3.14; # { dg-error "coerced" } # +++ d +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/error-widening-9.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN +++ INT d := 0; +++ LONG LONG REAL x; +++ 2 +++ + (d > 0 | x | # { dg-error "" } # +++ 10 +++ ) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/hidden-operators-1.a68 ++@@ -0,0 +1,11 @@ +++{ dg-options {-Whidden-declarations} } +++ +++begin mode Trilean = union (void,bool); +++ +++ Trilean unknown = empty; +++ op NOT = (Trilean a) Trilean: { dg-warning "hides" } +++ skip; +++ op AND = (Trilean a,b) Trilean: { dg-warning "hides" } +++ skip; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/implicit-widening-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-Wextensions -fstropping=upper" } # +++ +++# This program shall compile without warning, because +++ widening from INT to REAL is legal in the strict language, +++ since they have the same size. # +++ +++BEGIN BOOL cond; +++ REAL x, y; +++ y + (cond | x | 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/include-supper.a68 ++@@ -0,0 +1,16 @@ +++{ dg-options "-I$srcdir/algol68/compile/a68includes" } +++{ dg-additional-files "$srcdir/algol68/compile/a68includes/hello-supper.a68 $srcdir/algol68/compile/a68includes/goodbye-supper.a68" } +++ +++begin string name := "Algol68 with supper!"; +++ { Both files are in `./a68includes'. +++ The first one will be included because we uwed `-I. +++ The second one will be included because of the relative path. } +++ pr include "hello-supper.a68" pr +++ pr include "a68includes/goodbye-supper.a68" pr +++ +++ string bye := goodbye(name); +++ string hi := hello(name); +++ +++ puts(hi + "\n"); +++ puts(bye + "\n") +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/include.a68 ++@@ -0,0 +1,19 @@ +++# { dg-options "-I$srcdir/algol68/compile/a68includes -fstropping=upper" } # +++# { dg-additional-files "$srcdir/algol68/compile/a68includes/hello.a68 $srcdir/algol68/compile/a68includes/goodbye.a68" } # +++ +++# PR UPPER PR # +++ +++BEGIN STRING name := "Algol68!"; +++ # Both files are in `./a68includes'. +++ The first one will be included because we used `-I'. +++ The second one will be included because of the relative path. +++ # +++ PR include "hello.a68" PR +++ PR include "a68includes/goodbye.a68" PR +++ +++ STRING bye := goodbye(name); +++ STRING hi := hello(name); +++ +++ puts(hi + "\n"); +++ puts(bye + "\n") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/labeled-unit-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# This tests that the mode of the value yielded by a labeled unit is +++ the mode of the unit. # +++BEGIN 10; +++jorl: 20 +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcgt-1.3b.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN REAL r := 10.0, circum, area; +++ circum := 2 * pi * r; area := pi * r * r +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcgt-7.1.3a-bis.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Transient references and declarations. # +++BEGIN FLEX[4,6]INT p; +++ # Illegal, cannot remember transient name. # +++ REF[]INT q2 = p[3,]; # { dg-error "" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcgt-7.1.3a.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Transient references and declarations. # +++BEGIN FLEX[4,6]INT p; +++ # Illegal. p cannot be deflexed since it is a REF FLEX. # +++ REF[,]INT q3 = p; # { dg-error "" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/compile.exp ++@@ -0,0 +1,34 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# Compile tests, no torture testing. +++# +++# These tests raise errors in the front end; torture testing doesn't apply. +++ +++load_lib algol68-dg.exp +++ +++# Initialize `dg'. +++dg-init +++ +++# Main loop. +++set saved-dg-do-what-default ${dg-do-what-default} +++ +++set dg-do-what-default "compile" +++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] "" "" +++set dg-do-what-default ${saved-dg-do-what-default} +++ +++# All done. +++dg-finish ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/decl06.a68 ++@@ -0,0 +1,258 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN # 1. Actual declaration. # +++ # 1.a Without bounds. # +++ +++ # primitive # +++ BEGIN INT x1, +++ INT x2, x3, +++ INT x4, x5, x6, +++ REAL x7, x8, x9, x10, x11, x12, +++ LONG INT x13, +++ LONG REAL x14, +++ BOOL x15, +++ CHAR x16; +++ SKIP +++ END; +++ +++ # ref + primitive # +++ BEGIN REF INT x1, +++ REF REF REF REAL x2, +++ REF REF REF REF LONG REAL x3, +++ REF REF REF REF REF BOOL x4, +++ REF REF REF REF REF REF CHAR x5, +++ REF REF PROC VOID x6; +++ SKIP +++ END; +++ +++ # proc # +++ BEGIN PROC VOID x1, +++ PROC PROC REAL x2, +++ PROC PROC PROC PROC LONG REAL x3, +++ PROC PROC PROC PROC PROC BOOL x4, +++ PROC PROC PROC PROC PROC PROC CHAR x5, +++ PROC PROC PROC VOID x6; +++ SKIP +++ END; +++ +++ # ref + proc # +++ BEGIN REF REF REF REF REF REF PROC VOID x1, +++ PROC REF REAL x2, +++ PROC REF PROC REF LONG REAL x3, +++ PROC REF PROC REF PROC BOOL x4, +++ REF PROC REF PROC REF PROC CHAR x5, +++ PROC REF PROC VOID x6; +++ SKIP +++ END; +++ +++ # proc with one parameter which is primitive or ref + primitive # +++ BEGIN PROC(INT)VOID x1, +++ PROC(REF REF REF LONG INT)VOID x2, +++ PROC(BOOL)VOID x3, +++ PROC(REF CHAR)VOID x4, +++ PROC(LONG REAL)VOID x5, +++ PROC(REF REF REF BOOL)VOID x6, +++ PROC(PROC VOID)VOID x7, +++ PROC(REF REF PROC VOID)VOID x8; +++ SKIP +++ END; +++ +++ # ref + proc with one parameter which is primitive or ref + primitive # +++ BEGIN REF PROC(INT)VOID x1, +++ REF REF PROC(LONG REAL)VOID x2, x3, +++ REF REF REF REF PROC(REF CHAR)VOID x4, +++ REF PROC(PROC VOID)VOID x5, +++ REF REF PROC(REF PROC VOID)VOID x6; +++ SKIP +++ END; +++ +++ # ref * proc with more than one parameter which are ref * primitive # +++ BEGIN PROC(INT,LONG INT)VOID x1, +++ PROC(REAL,REF LONG REAL,REF REF BOOL)VOID x2, +++ PROC(REF REF REF CHAR,INT,LONG INT,REAL,REAL,INT)VOID x3, +++ REF PROC(INT,INT,INT,REF CHAR)VOID x4, +++ REF REF REF PROC(PROC VOID,REF REF PROC VOID,INT)VOID x5; +++ SKIP +++ END; +++ +++ # ref + row of * ref * primitive # +++ BEGIN REF[]INT x1, +++ REF[,]REAL x2, +++ REF REF[,,,]LONG REAL x3, +++ REF REF REF[,,,,,]REF BOOL x4, +++ REF[]REF REF REF LONG INT x5, +++ REF REF[,,,,]REF REF CHAR x6, +++ REF[]PROC VOID x7, +++ REF[,]REF REF PROC VOID x8; +++ SKIP +++ END; +++ +++ # ref + row of * ref * proc # +++ BEGIN REF[] PROC VOID x1, +++ REF REF[,] PROC(REF INT)VOID x2, +++ REF REF REF[]PROC(INT, REF REF INT)VOID x3, +++ REF[]REF PROC(REF LONG REAL, REF REF REF CHAR, REF LONG LONG REAL)VOID x4, +++ REF REF[,,,]REF REF REF PROC(REF INT, LONG LONG LONG INT)VOID x5; +++ REF[]PROC(PROC VOID,REF PROC VOID)VOID x6; +++ SKIP +++ END; +++ +++ # ref * proc with row of parameters # +++ BEGIN PROC([]REAL)VOID x1, +++ REF PROC(INT, []LONG REAL)VOID x2, +++ REF REF PROC([,]INT, []REF REF BOOL)VOID x3, +++ REF REF REF REF PROC(REF[]INT, REF REF[]REF REF LONG REAL)VOID x4, +++ PROC(REF REF[,,,]REF REF REF REAL)VOID x5, +++ PROC([]REF REAL, [,,,]REF CHAR, REF[,]BOOL)VOID x6, +++ PROC([]REF PROC VOID, REF[,,]PROC VOID, REF REF[,]REF REF PROC VOID)VOID x7; +++ SKIP +++ END; +++ +++ # nested rows # +++ BEGIN REF[,,,]REF[,]INT x1, +++ REF[]REF[]PROC VOID x2, +++ REF[]REF REF[]REF BOOL x3, +++ REF[,,,]REF[,,,]REF REF REF PROC VOID x4, +++ REF REF[]REF[]INT x5, +++ REF[]REF[]REF[]REF[]REF[]LONG REAL x6; +++ SKIP +++ END; +++ +++ # nested procs # +++ BEGIN PROC(PROC(PROC (PROC VOID)VOID)VOID)VOID x1, +++ PROC(INT, +++ PROC(REF REF PROC VOID, +++ REAL, +++ REF PROC(REF LONG INT, PROC VOID)VOID, +++ INT) VOID)VOID x2, +++ PROC(INT, +++ PROC VOID, +++ PROC (INT, +++ PROC VOID, +++ REF REAL, +++ REF PROC VOID)VOID)VOID x3, +++ PROC(INT, +++ PROC (INT,INT) VOID, +++ PROC (INT) VOID, +++ REAL)VOID x4; +++ SKIP +++ END; +++ +++ # mixed rows and procs # +++ BEGIN REF[]PROC([,]INT,PROC([]PROC VOID) VOID, +++ [,] PROC(PROC VOID, INT) VOID, +++ REF[]PROC VOID)VOID x1; +++ SKIP +++ END; +++ +++ # 1.b. With bounds. # +++ BEGIN [1:1]INT x1, +++ [1:1,1:1]REF LONG REAL x2, +++ [1:1,1:1,1:1]REF REF PROC VOID x3, +++ [1:1]PROC VOID x4, +++ [1:1]PROC(INT)VOID x5, +++ [1:1]PROC(INT,REAL,REF PROC VOID)VOID x6, +++ [1:1,1:1,1:1,1:1]REF REF PROC(INT)VOID x7, +++ [1:1]REF[]INT x8, +++ [1:1]REF[,,,]REF PROC VOID x9, +++ [1:1]REF PROC([]INT)VOID x10, +++ [1:1]PROC([]REF PROC VOID, REF[,,]PROC VOID, +++ REF REF REF REF[,]REF REF REF PROC VOID)VOID x11, +++ [1:1]REF[]REF[,,]REF REF[]LONG REAL x12, +++ [1:1]PROC(REF[]PROC VOID, []PROC VOID, []REF INT)VOID x13; +++ SKIP +++ END; +++ +++ # 2. Variable and constant declarations. # +++ +++ BEGIN PROC VOID a; PROC(INT)VOID b; +++ PROC VOID c, d; REAL e; REAL f, g; +++ SKIP; SKIP; SKIP; SKIP +++ END; +++ +++ # 3. Declarations of routines. # +++ +++ BEGIN INT i; +++ PROC a = VOID: SKIP; +++ PROC(INT)VOID b = (INT c) VOID: SKIP; +++ PROC(INT,REAL)VOID c = (INT e, REAL f) VOID: SKIP; +++ BEGIN PROC c = VOID: a; # no error # SKIP END +++ END; +++ +++ # 4. Call without parameters. # +++ +++ BEGIN PROC VOID a = VOID: SKIP; +++ PROC VOID b := a; +++ REF PROC VOID c := b; +++ REF REF PROC VOID d = c; +++ +++ a; # without deref # +++ b; # with deref # +++ c; # with deref # +++ d; # with deref # +++ +++ SKIP +++ END; +++ +++ # 5. Call with parameters. # +++ BEGIN INT int; REAL real; +++ PROC(INT)VOID dcs1, +++ PROC(INT,REAL)VOID dcs2; +++ PROC(INT)VOID a = (INT a) VOID: SKIP; +++ PROC(INT)VOID b; +++ REF PROC(INT)VOID c = b; +++ REF PROC(INT)VOID d; +++ PROC(INT,REAL)VOID e = (INT a, REAL b) VOID: SKIP; +++ +++ a (int); +++ dcs1 (int); +++ dcs2 (int, real); +++ e (int, real); +++ b (int); +++ c (int); +++ d (int); +++ BEGIN REF REF REF REF REF REF REF REF REF REF +++ REF REF REF REF REF REF REF REF REF REF +++ PROC(INT)VOID a; a (int); SKIP +++ END; +++ BEGIN # No error # +++ PROC(REF INT, REF REAL)VOID a; +++ a (int, real) +++ END; +++ +++ BEGIN PROC(INT)VOID a; a (int) END; +++ BEGIN PROC(INT)VOID a; a (int); SKIP END +++ END; +++ +++ # 6. Assignation with an identifier as destination. # +++ +++ BEGIN INT a; REF INT b = a; PROC(REAL)REAL c; +++ a := 1; +++ b := a; +++ CO c := sin; XXX CO +++ SKIP +++ END; +++ +++ # 7. Assignation with a slice as destination. # +++ +++ BEGIN INT i, j, k, l; +++ [i:i]REAL a1; +++ [i:i,j:j]REAL a2; +++ REF[]REAL a3 = a1; +++ REF[,]REAL a4; +++ REF[,,]REAL a5 = a4; +++ [,,,]REF REAL a6 = a3[i]; +++ +++ a1[i] := 3; +++ a2[i,j] := 3; +++ a3[i] := 3; +++ a4[i,j] := 3; +++ a5[i,j,k] := 3; +++ a6[i,j,k,l] := 3; +++ BEGIN REF REF REF REF REF REF REF REF REF REF +++ REF REF REF REF REF REF REF REF REF REF +++ []REAL x; +++ x[i] := 3.0 +++ END +++ END +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/idef10.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN INT count := 0; +++ FOR i FROM 1 BY i DO count +:= 1 OD; # { dg-error "" } # +++ ASSERT (count = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq01.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Mode equivalencing. # +++BEGIN MODE N = UNION(STRUCT(REAL re, im), COMPL); # { dg-error "" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq03.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Mode equivalencing. # +++BEGIN MODE M = PROC(M)M, +++ N = PROC(N)N, +++ O = UNION(N,M); # { dg-error "" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq05.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Mode equivalencing. # +++BEGIN MODE N = UNION (BYTES, BITS, REF BITS); # { dg-error "" } # +++ MODE SZEREDI = UNION (INT,REAL,REF UNION (INT, REAL)); # { dg-error "" } # +++ # Szeredi - ambiguity. # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/mdeq06.a68 ++@@ -0,0 +1,18 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Some equivalencing. # +++BEGIN MODE A = STRUCT (REF A l, REF A r), +++ B = STRUCT (REF B l, REF B r), +++ C = STRUCT (REF D l, REF E r), +++ D = STRUCT (REF E l, REF C r), +++ E = STRUCT (REF C l, REF D r), +++ F = STRUCT (REF STRUCT (REF A l, REF B r) l, +++ REF STRUCT (REF STRUCT (REF C l, REF D r) l, +++ REF STRUCT (REF E l, REF F r) r +++ ) r +++ ); +++ +++ # error - all modes are the same # +++ MODE M = UNION (A,B,C,D,E,F); # { dg-error "" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/oper05.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Operator test, mutual recursion. # +++BEGIN PRIO +>=1, +<=1; +++ OP +> = (INT a, b) INT: a+b; +++ 1+>2 +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/oper06.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN OP + = (REAL a, b) REAL: a - b; # { dg-error "" } # +++ OP + = (REF REAL a, b) REAL: a - b; # { dg-error "" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/oper12.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Operator test, illegal operator. # +++BEGIN OP += = (INT a) INT: -a; +++ OP +:= = (INT a) INT: -a; +++ OP -/:= = (INT a) INT: -a; +++ OP +==: = (INT a) INT: -a; +++ +++ # Correct version. # +++ +=+:=-/:=+==:+==:+=+:=+==:1; +++ # Bad version. # +++ +=+:=-/:=+==:+==+=+:=+==:=1 # { dg-error "" } # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/mcts/oper15.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Incorrect, since not all declarers are of the mode row-of # +++BEGIN UPB UNION ([]INT,BOOL) ([]INT (1)); # { dg-error "" } # +++ LWB UNION (REF[,]STRING,STRING) ("ab"); # { dg-error "" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-1.a68 ++@@ -0,0 +1,69 @@ +++module Argp = +++def mode ArgOpt = struct (char name, string long_name, +++ bool arg_required, proc(string)bool handler); +++ +++ proc argp = (int p, [][]ArgOpt opts, +++ proc(int,string)bool no_opt_handler, +++ proc(string)void error_handler) void: +++ begin +++ proc getopt = (string prefix, string arg) ArgOpt: +++ begin ArgOpt res, bool found := false; +++ for i to UPB opts while NOT found +++ do for j to UPB opts[i] while NOT found +++ do if arg = long_name of opts[i][j] +++ OR (arg /= " " AND arg = name of opts[i][j]) +++ then res := opts[i][j]; found := true +++ fi +++ od +++ od; +++ (NOT found | error_handler ("unknown option " + prefix + arg)); +++ res +++ end; +++ +++ bool found_dash_dash := false, +++ skip_next_opt := false, +++ continue := true; +++ +++ for i from p to argc while continue +++ do string arg = argv (i); +++ if skip_next_opt +++ then skip_next_opt := false +++ elif arg = "--" AND NOT found_dash_dash +++ then found_dash_dash := true +++ elif found_dash_dash OR (UPB arg >= 1 andth arg[1] /= "-") +++ then continue := no_opt_handler (i + 1, arg) +++ elif UPB arg > 1 andth arg[2] = "-" +++ then { Long option. It may have an argument. } +++ int eqidx = char_in_string (arg, "="); +++ string optname = (eqidx > 0 | arg[3:eqidx - 1] | arg[3:]), +++ optarg = (eqidx > 0 AND UPB arg >= (eqidx + 1) | arg[eqidx + 1:]); +++ ArgOpt opt = getopt ("--", optname); +++ +++ if (arg_required of opt) AND optarg = "" +++ then error_handler ("option --" + arg + " requires an argument") fi; +++ continue := (handler of opt) (optarg) +++ else { This is one or more short options. } +++ for j to UPB arg[2:] +++ do ArgOpt opt = getopt ("-", arg[j + 1]); +++ if arg_required of opt +++ then if i = argc orel (ELEMS argv (i + 1) > 1 andth argv (i + 1)[1] = "-") +++ then error_handler ("option -" + arg[2+j] + " requires an argument") +++ fi; +++ (handler of opt) (argv (i + 1)); +++ skip_next_opt := true +++ else continue := (handler of opt) ("") +++ fi +++ od +++ fi +++ od +++ end; +++ +++ proc char_in_string = (string s, char c) int: +++ begin int res := 0, bool found := false; +++ for i to UPB s while NOT found +++ do (s[i] = c | res := i; found := true) od; +++ res +++ end; +++ +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-2.a68 ++@@ -0,0 +1,16 @@ +++module Foo = def pub int idpublic = 10; +++ int idprivate = 20; +++ pub int varpublic := 100; +++ real varprivate := 3.14; +++ pub proc lala = (int a, b) int: a + b; +++ pub proc lele := (int a, b) int: a - b; +++ skip +++ fed, +++ Bar = def pub int idpublic = 30; +++ int idprivate = 40; +++ pub int varpublic := 100; +++ real varprivate := 3.14; +++ pub proc lala = (int a, b) int: a + b; +++ pub proc lele := (int a, b) int: a - b; +++ skip +++ fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-extracts-1.a68 ++@@ -0,0 +1,29 @@ +++{ dg-options "-O0 -dA" } +++ +++module Foo = +++def pub mode JURL = union (void,int,real); +++ { dg-final { scan-assembler "mode extract FOO_JURL" } } +++ pub proc plus = (int a, b) int: a + b; +++ { dg-final { scan-assembler "identifier extract FOO_plus" } } +++ pub proc vplus := (int a, b) int: a + b; +++ { dg-final { scan-assembler "identifier extract FOO_vplus" } } +++ pub proc lvplus := (int a, b) int: a + b; +++ { dg-final { scan-assembler "identifier extract FOO_lvplus" } } +++ pub heap proc hvplus := (int a, b) int: a + b; +++ { dg-final { scan-assembler "identifier extract FOO_hvplus" } } +++ pub proc(int,int)int vplus2 = vplus; +++ { dg-final { scan-assembler "identifier extract FOO_vplus2" } } +++ pub proc(int,int)int lvplus2 := lvplus; +++ { dg-final { scan-assembler "identifier extract FOO_lvplus2" } } +++ pub heap proc(int,int)int hvplus2 := hvplus; +++ { dg-final { scan-assembler "identifier extract FOO_hvplus2" } } +++ pub int i; +++ { dg-final { scan-assembler "identifier extract FOO_i" } } +++ int k = 10; +++ { dg-final { scan-assembler-not "identifier extract FOO_k" } } +++ pub prio // = 8; +++ { dg-final { scan-assembler "operator extract FOO_s_s_\[0-9\]+" } } +++ pub op // = (int a, b) int: a % b; +++ { dg-final { scan-assembler "operator extract FOO_s_s_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-1.a68 ++@@ -0,0 +1,21 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyInt = int; +++ pub mode MyLongInt = long int; +++ pub mode MyLongLongInt = long long int; +++ pub mode MyShortInt = short int; +++ pub mode MyShortShortInt = short short int; +++ skip +++fed +++ +++{ GA68_MODE_INT = 2UB } +++ +++{ dg-final { scan-assembler-times "2\[\t ]+\[^0-9\]+int" 5 } } +++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0xff\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0xfe\[\t \]+\[^\n\]*sizety" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-2.a68 ++@@ -0,0 +1,17 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyReal = real; +++ pub mode MyLongReal = long real; +++ pub mode MyLongLongReal = long long real; +++ skip +++fed +++ +++{ GA68_MODE_REAL = 3UB } +++ +++{ dg-final { scan-assembler-times "\[\t \]+0x3\[\t \]+\[^\n\]*real" 3 } } +++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-3.a68 ++@@ -0,0 +1,12 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyString = string; +++ skip +++fed +++ +++{ GA68_MODE_STRING = 14UB } +++ +++{ dg-final { scan-assembler-times "\[\t \]+0xe\[\t \]+\[^\n\]*string" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-4.a68 ++@@ -0,0 +1,12 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyChar = char; +++ skip +++fed +++ +++{ GA68_MODE_CHAR = 6UB } +++ +++{ dg-final { scan-assembler-times "\[\t \]+0x6\[\t \]+\[^\n\]*char" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-5.a68 ++@@ -0,0 +1,21 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyBits = bits; +++ pub mode MyLongBits = long bits; +++ pub mode MyLongLongBits = long long bits; +++ pub mode MyShortBits = short bits; +++ pub mode MyShortShortBits = short short bits; +++ skip +++fed +++ +++{ GA68_MODE_BITS = 4UB } +++ +++{ dg-final { scan-assembler-times "4\[\t ]+\[^0-9\]+bits" 5 } } +++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0xff\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0xfe\[\t \]+\[^\n\]*sizety" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-6.a68 ++@@ -0,0 +1,15 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyBool = bool; +++ pub mode MyVoid = void; +++ skip +++fed +++ +++{ GA68_MODE_BOOL = 7UB +++ GA68_MODE_VOID = 1UB } +++ +++{ dg-final { scan-assembler-times "7\[\t ]+\[^0-9\]+bool" 1 } } +++{ dg-final { scan-assembler-times "1\[\t ]+\[^0-9\]+void" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-7.a68 ++@@ -0,0 +1,13 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyName = ref int; +++ skip +++fed +++ +++{ GA68_MODE_NAME = 12UB } +++ +++{ dg-final { scan-assembler-times "0xc\[\t ]+\[^0-9\]+ref" 1 } } +++{ dg-final { scan-assembler-times "0x2\[\t ]+\[^0-9\]+int" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-8.a68 ++@@ -0,0 +1,17 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyCompl = compl; +++ pub mode MyLongCompl = long compl; +++ pub mode MyLongLongCompl = long long compl; +++ skip +++fed +++ +++{ GA68_MODE_CMPL = 8UB } +++ +++{ dg-final { scan-assembler-times "0x8\[\t ]+\[^0-9\]+compl" 3 } } +++{ dg-final { scan-assembler-times "\[\t \]+0x2\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0x1\[\t \]+\[^\n\]*sizety" 1 } } +++{ dg-final { scan-assembler-times "\[\t \]+0\[\t \]+\[^\n\]*sizety" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-mode-exports-9.a68 ++@@ -0,0 +1,12 @@ +++{ dg-options "-dA" } +++ +++{ Test for mode table in module definition exports. } +++ +++module Foo = +++def pub mode MyProc = proc void; +++ skip +++fed +++ +++{ GA68_MODE_CMPL = 8UB } +++ +++{ dg-final { scan-assembler-times "0xd\[\t ]+\[^0-9\]+proc" 1 } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-1.a68 ++@@ -0,0 +1,16 @@ +++module Foo = +++def pub mode JORL = int, JURL = union (void,int,real); +++ pub proc plus = (int a, b) int: a + b; +++ pub proc vplus := (int a, b) int: a + b; +++ pub proc lvplus := (int a, b) int: a + b; +++ pub heap proc hvplus := (int a, b) int: a + b; +++ pub proc(int,int)int vplus2 = vplus; +++ pub proc(int,int)int lvplus2 := lvplus; +++ pub heap proc(int,int)int hvplus2 := hvplus; +++ pub int i, x, y; +++ pub int k = 10; +++ pub int j := 20; +++ pub prio // = 8; +++ pub op // = (int a, b) int: a % b; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-1.a68 ++@@ -0,0 +1,15 @@ +++{ dg-options "-O0" } +++ +++module Foo = def pub int foo; { dg-final { scan-assembler "FOO_foo" } } +++ int bar; { dg-final { scan-assembler "FOO_bar" } } +++ skip +++ fed, +++ Bar = def pub int foo; { dg-final { scan-assembler "BAR_foo" } } +++ int bar; { dg-final { scan-assembler "BAR_bar" } } +++ skip +++ fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } +++{ dg-final { scan-assembler "BAR__prelude" } } +++{ dg-final { scan-assembler "BAR__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-10.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio + = 9; +++ op + = (int a, b) int: skip; { dg-final { scan-assembler "FOO_u_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-11.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio - = 9; +++ op - = (int a, b) int: skip; { dg-final { scan-assembler "FOO_m_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-12.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio % = 9; +++ op % = (int a, b) int: skip; { dg-final { scan-assembler "FOO_p_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-13.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio ^ = 9; +++ op ^ = (int a, b) int: skip; { dg-final { scan-assembler "FOO_c_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-14.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio & = 9; +++ op & = (int a, b) int: skip; { dg-final { scan-assembler "FOO_a_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-15.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio ~ = 9; +++ op ~ = (int a, b) int: skip; { dg-final { scan-assembler "FOO_t_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-16.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio ! = 9; +++ op ! = (int a, b) int: skip; { dg-final { scan-assembler "FOO_b_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-17.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio ? = 9; +++ op ? = (int a, b) int: skip; { dg-final { scan-assembler "FOO_q_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-18.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio > = 9; +++ op > = (int a, b) int: skip; { dg-final { scan-assembler "FOO_g_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-19.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio < = 9; +++ op < = (int a, b) int: skip; { dg-final { scan-assembler "FOO_l_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-2.a68 ++@@ -0,0 +1,15 @@ +++{ dg-options "-O0" } +++ +++module Foo = def pub struct (int i, real r) foo;{ dg-final { scan-assembler "FOO_foo" } } +++ struct (int i, real r) bar; { dg-final { scan-assembler "FOO_bar" } } +++ skip +++ fed, +++ Bar = def pub struct (int i, real r) foo;{ dg-final { scan-assembler "BAR_foo" } } +++ struct (int i, real r) bar; { dg-final { scan-assembler "BAR_bar" } } +++ skip +++ fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } +++{ dg-final { scan-assembler "BAR__prelude" } } +++{ dg-final { scan-assembler "BAR__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-20.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio / = 9; +++ op / = (int a, b) int: skip; { dg-final { scan-assembler "FOO_s_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-21.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio = = 9; +++ op = = (int a, b) int: skip; { dg-final { scan-assembler "FOO_e_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-22.a68 ++@@ -0,0 +1,10 @@ +++{ dg-options "-O0" } +++ +++{ Mangling of monads, nomads and : +++ Unfortunately we cannot do all of them in a single test. } +++ +++module Foo = +++def prio +:= = 9; +++ op +:= = (int a, b) int: skip; { dg-final { scan-assembler "FOO_u_o_e_\[0-9\]+" } } +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-3.a68 ++@@ -0,0 +1,15 @@ +++{ dg-options "-O0" } +++ +++module Foo = def pub int foo = 10; { dg-final { scan-assembler "FOO_foo" } } +++ int bar = 20; { dg-final { scan-assembler "FOO_bar" } } +++ skip +++ fed, +++ Bar = def pub int foo = 30; { dg-final { scan-assembler "BAR_foo" } } +++ int bar = 40; { dg-final { scan-assembler "BAR_bar" } } +++ skip +++ fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } +++{ dg-final { scan-assembler "BAR__prelude" } } +++{ dg-final { scan-assembler "BAR__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-4.a68 ++@@ -0,0 +1,17 @@ +++{ dg-options "-O0" } +++ +++{ Procedure variable declarations. } +++ +++module Foo = def pub proc int foo; { dg-final { scan-assembler "FOO_foo" } } +++ proc int bar := int: skip; { dg-final { scan-assembler "FOO_bar" } } +++ skip +++ fed, +++ Bar = def pub proc int foo; { dg-final { scan-assembler "BAR_foo" } } +++ proc int bar := foo; { dg-final { scan-assembler "BAR_bar" } } +++ skip +++ fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } +++{ dg-final { scan-assembler "BAR__prelude" } } +++{ dg-final { scan-assembler "BAR__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-5.a68 ++@@ -0,0 +1,17 @@ +++{ dg-options "-O0" } +++ +++{ Procedure identity declarations. } +++ +++module Foo = def pub proc foo = int: skip; { dg-final { scan-assembler "FOO_foo" } } +++ proc bar = int: skip; { dg-final { scan-assembler "FOO_bar" } } +++ skip +++ fed, +++ Bar = def pub proc foo = int: skip; { dg-final { scan-assembler "BAR_foo" } } +++ proc bar = int: skip; { dg-final { scan-assembler "BAR_bar" } } +++ skip +++ fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } +++{ dg-final { scan-assembler "BAR__prelude" } } +++{ dg-final { scan-assembler "BAR__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-6.a68 ++@@ -0,0 +1,21 @@ +++{ dg-options "-O0" } +++ +++{ Operator brief identity declarations. } +++ +++module Foo = def pub op + = (int a, b) int: a + b; +++ { dg-final { scan-assembler "FOO_u_" } } +++ op - = (int a, b) int: a - b; +++ { dg-final { scan-assembler "FOO_m_" } } +++ skip +++ fed, +++ Bar = def pub op + = (int a, b) int: a + b; +++ { dg-final { scan-assembler "BAR_u_" } } +++ op - = (int a, b) int: a - b; +++ { dg-final { scan-assembler "BAR_m_" } } +++ skip +++ fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } +++{ dg-final { scan-assembler "BAR__prelude" } } +++{ dg-final { scan-assembler "BAR__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-7.a68 ++@@ -0,0 +1,19 @@ +++{ dg-options "-O0" } +++ +++{ Operator identity declarations. } +++ +++module Foo = +++def prio // = 8; +++ pub op(int,int)int // = lala; +++ { dg-final { scan-assembler "FOO_s_s_" } } +++ proc lala = (int a, b) int: a + b; +++ prio JORL = 8, JURL = 9; +++ pub op(int,int)int JORL = lala; +++ { dg-final { scan-assembler "FOO_JORL" } } +++ op(int,int)int JURL = (int a, b) int: a - b; +++ { dg-final { scan-assembler "FOO_JORL" } } +++ skip +++fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-8.a68 ++@@ -0,0 +1,18 @@ +++{ dg-options "-O0" } +++ +++{ Symbols that should _not_ include the module name. } +++ +++module Foo = +++def begin string foo = "foo'n"; { dg-final { scan-assembler-not "FOO_foo" } } +++ proc printfoo = void: puts (foo); { dg-final { scan-assembler-not "FOO_printfoo" } } +++ printfoo +++ end; +++ skip +++postlude +++ int lala; +++ proc incrlala = void: lala +:= 1; { dg-final { scan-assembler-not "FOO_incrlala" } } +++ incrlala +++fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-pub-mangling-9.a68 ++@@ -0,0 +1,14 @@ +++{ dg-options "-O0" } +++ +++{ Operator symbols are numbered so having overloaded symbols in the +++ module's public range works. } +++ +++module Foo = +++def prio // =9; +++ op // = (int a, b) int: a + b; { dg-final { scan-assembler "FOO_s_s_\[0-9\]+" } } +++ op // = (real a, b) real: a + b; { dg-final { scan-assembler "FOO_s_s_\[0-9\]+" } } +++ skip +++fed +++ +++{ dg-final { scan-assembler "FOO__prelude" } } +++{ dg-final { scan-assembler "FOO__postlude" } } ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/module-top-down-1.a68 ++@@ -0,0 +1,14 @@ +++{ This test is to check that serial clauses and +++ enquiry clauses are properly skipped in module texts. } +++module Foo = +++def int i; +++ int j = 20; +++ string ss; +++ prio // = 8; +++ op // = (int a, b) int: a + b; +++ proc ticks = void: to i do puts ("tick'n") od; +++ i := 5 +++postlude +++ if j > 5 then ticks fi; +++ (j < 0 | puts ("error'n") | puts ("success'n")) +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/compile.exp ++@@ -0,0 +1,40 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# Compile tests, no torture testing. +++# +++# These tests raise errors in the front end; torture testing doesn't apply. +++ +++load_lib algol68-dg.exp +++ +++# Initialize `dg'. +++dg-init +++ +++# The programs need to be able to find the built modules, which are +++# left in objdir. +++ +++global MODULES_OPTIONS +++set MODULES_OPTIONS "-I $objdir" +++ +++# Main loop. +++set saved-dg-do-what-default ${dg-do-what-default} +++ +++set dg-do-what-default "compile" +++algol68-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/program*.a68]] "" "" +++set dg-do-what-default ${saved-dg-do-what-default} +++ +++# All done. +++dg-finish ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module1.a68 ++@@ -0,0 +1,9 @@ +++module Module1 = +++def +++ pub mode MyInt = int; +++ pub int beast_number := 666; +++ pub string who = "jemarch"; +++ puts ("Hello from module'n") +++postlude +++ puts ("Bye from module'n") +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module2.a68 ++@@ -0,0 +1,5 @@ +++module Module2 = +++def prio // = 9; { Note priority is not publicized. } +++ pub op // = (int a, b) int: a + b; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module3.a68 ++@@ -0,0 +1,6 @@ +++module Module_3 = +++def pub proc foo = (int i, string s) void: skip; +++ pub mode Jorl = struct (int i, string s); +++ pub mode Jurl = union (int, string, real); +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module4.a68 ++@@ -0,0 +1,4 @@ +++module Module_4 = +++def access Module_3 (foo (10, "foo")); +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module5.a68 ++@@ -0,0 +1,6 @@ +++module Module_5 = +++def +++ pub mode JSON_Val = union (ref JSON_Elm,int), +++ JSON_Elm = struct (int lala); +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module6.a68 ++@@ -0,0 +1,5 @@ +++module Module6 = +++ access Module5 +++def pub proc getval = JSON_VAl: skip; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module7.a68 ++@@ -0,0 +1,5 @@ +++module Module7 = +++access Module5, Module6 +++def pub JSON_Val val = getval; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module8.a68 ++@@ -0,0 +1,5 @@ +++module Module_8 = +++def +++ pub proc lala = ([]struct (string n, v) arg) void: skip; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/module9.a68 ++@@ -0,0 +1,6 @@ +++module Module_9 = +++def +++ pub mode Foo = struct (flex[1:0]Event events); +++ pub mode Event = int; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/program-7.a68 ++@@ -0,0 +1,3 @@ +++{ dg-modules "module5 module6 module7" } +++ +++access Module7 (skip) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/program-8.a68 ++@@ -0,0 +1,3 @@ +++{ dg-modules "module8" } +++ +++access Module_8 ( lala ((("foo", "bar"), ("baz", "quux"))) ) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/program-9.a68 ++@@ -0,0 +1,3 @@ +++{ dg-modules "module9" } +++ +++access Module_9 (skip) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/program-error-no-prio-1.a68 ++@@ -0,0 +1,6 @@ +++{ dg-modules "module2" } +++ +++access Module_2 +++begin assert (2 // 3 = 5); { dg-error "no priority" } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/program-error-outside-access-1.a68 ++@@ -0,0 +1,6 @@ +++{ dg-modules "module1" } +++ +++begin int x = access Module1 ( beast_number ), +++ y = beast_number; { dg-error "declared" } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/program-module-accesses-module-1.a68 ++@@ -0,0 +1,5 @@ +++{ dg-modules "module3 module4" } +++{ This test accesses a Module4 that itself accesses a Module3. } +++ +++access Module_4 (skip) +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/modules/program-proc-arg-order-1.a68 ++@@ -0,0 +1,8 @@ +++{ dg-modules "module3" } +++ +++access Module_3 +++begin foo (10, "foo"); +++ Jorl x = (10, "foo"); +++ Jurl y = 3.14; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/nested-comment-1.a68 ++@@ -0,0 +1,4 @@ +++{ Comment delimiters within strings get ignored. } +++begin { puts { ("{""'n"); } } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/nested-comment-2.a68 ++@@ -0,0 +1,6 @@ +++{ The string in nested comment is in one logical line. } +++begin +++ { puts ("{'n\ +++"); { this prints foo }} +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/operators-firmly-related.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN PRIO MIN = 6; +++ OP MIN = (REF REAL a, b) REF REAL: (a < b | a | b), # { dg-error "firmly related" } # +++ MIN = (REAL a, b) REAL: (a < b | a | b); # { dg-error "firmly related" } # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/recursive-modes-1.a68 ++@@ -0,0 +1,33 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# This program triggered a bug related to incomplete modes. # +++BEGIN MODE REC_MSET = STRUCT (REF REC_MSET_ELM head, tail, +++ INT num elems, +++ PROC(REC_MSET_DATA)BOOL gate), +++ REC_MSET_ELM = STRUCT (REC_MSET_DATA data, BOOL mark, REF REC_MSET_ELM next), +++ REC_MSET_DATA = UNION (REC_RSET,REC_RECORD,REC_FIELD,REC_CMNT), +++ REC_RSET = STRUCT (REC_MSET mset, +++ INT min size, max size, +++ REF REC_RECORD descriptor), +++ REC_RECORD = STRUCT (REC_LOC loc, REC_MSET mset, INT foo), +++ REC_CMNT = STRUCT (REC_LOC loc, STRING content), +++ REC_FIELD = STRUCT (REC_LOC loc, STRING name, value), +++ REC_LOC = STRUCT (STRING source, INT line, char); +++ +++ PROC rec loc unknown = REC_LOC: +++ ("unknown", 0, 0); +++ PROC rec record gate = (REC_MSET_DATA d) BOOL: +++ (d | (REC_FIELD): TRUE, (REC_CMNT): TRUE | FALSE); +++ REF REC_MSET_ELM rec no mset elm = NIL; +++ +++ PROC rec mset new = (PROC(REC_MSET_DATA)BOOL gate) REC_MSET: +++ (HEAP REC_MSET := (rec no mset elm, rec no mset elm, +++ 0, gate)); +++ +++ REF REC_RECORD rec no record = NIL; +++ +++ PROC rec record new = REF REC_RECORD: +++ HEAP REC_RECORD := (rec loc unknown, rec mset new (rec record gate), 0); +++ +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/recursive-modes-2.a68 ++@@ -0,0 +1,7 @@ +++begin mode Word = union (int, struct (ref Word w)), +++ Value = union (void,Word), +++ Stack = struct (ref Stack prev, Value val); +++ +++ struct (Word a) qs; { type_2 has no size! } +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/serial-clause-jump-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# This is an infinite loop, but it should compile just fine an yield +++ an integer after infinite time. # +++ +++BEGIN foo: foo +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/snobol.a68 ++@@ -0,0 +1,1100 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# This is Frank Pagan's SNOBOL4 Interpreter in ALGOL 68 (1976), +++ fetched from Dick Grune's page https://dickgrune.com/CS/Algol68/ +++ +++ The interpreter described in "Algol 68 as an Implementation Language\ +++ for Portable Interpreters", ACM SIGPLAN Notices - Proceedings of the +++ Strathclyde ALGOL 68 conference, Volume 12 Issue 6, June 1977, +++ pp. 54 - 62, and "A Highly-Structured Interpreter for a SNOBOL4 +++ Subset", Software: Practice and Experience, Vol. 9, 4, +++ pp. 281-312, April 1979. +++ +++ Modifications by Jose E. Marchesi: +++ - Use the simple POSIX-like transput provided by GCC. +++ - Read programs from lines rather than from cards. +++ - Add command-line option -l (listing). +++# +++ +++BEGIN PROC itoa = (INT i) STRING: +++ BEGIN IF i = 0 +++ THEN "0" +++ ELSE INT n := ABS i; +++ STRING res; +++ WHILE n /= 0 +++ DO INT rem = n %* 10; +++ res := REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0") + res; +++ n %:= 10 +++ OD; +++ (i < 0 | "-" + res | res) +++ FI +++ END; +++ +++ CHAR sharp = REPR 35; # Sharp character, +++ to avoid confusing Emacs. # +++ +++ # Input file. # +++ INT filein; +++ +++ # IMPLEMENTATION RESTRICTIONS # +++ INT spoolsize = 400, +++ stlim = 50, +++ arglim = 5, +++ rslim = 80, +++ pslim = 20, +++ ftlim = 10; +++ +++ # ABSTRACT MACHINE # +++ MODE ITEM = UNION (INT, REF STRINGITEM, PATTERN), +++ STRINGITEM = STRUCT (STRING val, REF ITEM ref), +++ PATTERN = REF[]COMPONENT, +++ COMPONENT = STRUCT (INT routine, subsequent, alternate, extra, +++ REF ITEM arg), +++ PSENTRY = STRUCT (INT cursor, alternate), +++ RSENTRY = REF ITEM, +++ FTENTRY = STRUCT (REF ITEM fnname, entry name, +++ REF[]REF ITEM params, locals); +++ +++ [1:spoolsize] REF ITEM spool; +++ [1:pslim] PSENTRY pattern stack; +++ [1:rslim] RSENTRY run stack; +++ [1:ftlim] FTENTRY function table; +++ +++ BOOL failed := FALSE; +++ INT nin, psp, rsp := 0, ftp := 0; +++ INT mstr = 1, mlen = 2, mbrk = 3, mspn = 4, many = 5, mnul = 6, +++ miv1 = 7, miv2 = 8, m1 = 9, mat = 10, mpos = 11, mtab = 12, +++ mrpos = 13, mrtab = 14, mnty = 15; +++ +++ # INTERNAL FORM OF PROGRAMS # +++ +++ MODE STMT = STRUCT (REF IDR label, +++ UNION (REF ASMT, REF MATCH, +++ REF REPL, REF EXPR) stmt core, +++ REF GOTOFIELD goto), +++ IDR = STRUCT (REF ITEM idr addr), +++ NUM = STRUCT (REF ITEM num addr), +++ LSTR = STRUCT (REF ITEM lstr addr), +++ ASMT = STRUCT (REF EXPR subject, object), +++ MATCH = STRUCT (REF EXPR subject, pattern), +++ REPL = STRUCT (REF EXPR subject, pattern, object), +++ EXPR = UNION (REF UNARYEXPR, REF BINARYEXPR, IDR, NUM, +++ LSTR, REF CALL), +++ GOTOFIELD = STRUCT (REF DEST upart, spart, fpart), +++ DEST = UNION (REF EXPR, CHAR), +++ UNARYEXPR = STRUCT (REF EXPR operand, CHAR operator), +++ BINARYEXPR = STRUCT (REF EXPR operand1, operand2, +++ CHAR operator), +++ CALL = STRUCT (IDR fnname, REF[]REF EXPR args); +++ +++ REF[]STMT t; +++ REF ITEM prog entry := NIL; +++ +++ PROC error = (STRING mess) VOID: +++ (puts ("error: " + mess + "'n"); stop); +++ +++ # TRANSLATION PHASE # +++ +++ BEGIN # DECLARATIONS FOR SCANNER # +++ STRING card, INT cp, # SOURCE LINE AND POINTER # +++ CHAR ch, # SOURCE CHARACTER # +++ [1:80]CHAR str, INT sp, # STRING BUFFER AND POINTER # +++ CHAR tok, # TOKEN CODE # +++ REF ITEM psn, # POSITION OF A CREATED VALUE # +++ INT nv, # NUMERIC VALUE OF CONSTANT # +++ INT stn, # SOURCE STATEMENT NUMBER # +++ BOOL listing, # FLAG FOR SOURCE LISTING # +++ CHAR c; # TEMPORARY # +++ +++ # TOKEN MNEMONICS # +++ CHAR doll = "$", bdoll = "D", +++ plus = "+", bplus = "P", +++ minus = "-", bminus = "M", +++ at = "@", bbar = "!", +++ bstar = "*", bslash = "/", +++ lpar = "(", rpar = ")", +++ comma = ",", colon = ":", +++ equal = "=", blank = " ", +++ eos = ";", name = "A", +++ lstring = "L", number = "U", +++ endt = "E", ret = "R", +++ fret = "F", stok = "Y", +++ ftok = "Z"; +++ +++ PROC get card = VOID: +++ BEGIN cp := 0; +++ WHILE card := fgets (filein, 80); +++ IF UPB card = 0 THEN exit FI; +++ c := card[1]; +++ IF c /= "." AND c /= "+" AND c /= "-" AND c /= "*" +++ THEN stn := stn + 1 FI; +++ IF listing THEN puts (itoa (stn) + " " + card + "'n") FI; +++ IF c = "-" +++ THEN IF card[2:5] = "LIST" +++ THEN listing := TRUE +++ ELIF card[2:7] = "UNLIST" +++ THEN listing := FALSE +++ FI +++ FI; +++ c = "-" OR c = "*" +++ DO SKIP OD; +++ exit: SKIP +++ END; +++ +++ PROC next ch = VOID: +++ IF cp = UPB card +++ THEN get card; +++ IF c = "." OR c = "+" +++ THEN ch := " "; cp := 1 +++ ELSE ch := sharp # END OF LINE AND STATEMENT # +++ FI +++ ELSE ch := card[cp +:= 1] +++ FI; +++ +++ PROC lookup = (STRING sv) REF ITEM : ( +++ INT i := 0, BOOL nf := TRUE; +++ WHILE IF (i +:= 1) <= nin +++ THEN nf := sv /= val OF (spool[i] | (REF STRINGITEM s) : s) +++ ELSE FALSE +++ FI +++ DO SKIP OD; +++ IF nf +++ THEN IF nin = spoolsize THEN error ("too many strings") FI; +++ spool[nin +:= 1] := HEAP ITEM := HEAP STRINGITEM := +++ (sv, NIL) +++ FI; +++ spool[i]); +++ +++ PROC scan = VOID: +++ IF ch = " " # BLANKS AND BINARY OPERATORS # +++ THEN WHILE next ch; ch = " " DO SKIP OD; +++ # IGNORE TRAILING BLANKS IN A STATEMENT # +++ IF ch = ";" THEN next ch; stn := stn + 1; tok := eos +++ ELIF ch = sharp THEN next ch; tok := eos +++ ELIF ch = "!" OR ch = "$" OR ch = "+" OR ch = "-" +++ OR ch = "*" OR ch = "/" +++ THEN IF card[cp+1] = " " +++ THEN c := ch; +++ WHILE next ch; ch = " " DO SKIP OD ; +++ tok := (c = "!" | bbar +++ |: c = "$" | bdoll +++ |: c = "-" | bminus +++ |: c = "+" | bplus +++ |: c = "*" | bstar +++ | bslash) +++ ELSE tok := blank +++ FI +++ ELSE tok := blank +++ FI +++ ELIF ch = "''" OR ch = """" # LITERAL STRINGS # +++ THEN c := ch; sp := 0; +++ WHILE next ch; +++ IF ch = sharp THEN error ("UNTERMINATED LITERAL") FI; +++ (str[sp +:= 1] := ch) /= c +++ DO SKIP OD ; +++ next ch; +++ tok := lstring; +++ IF sp = 1 +++ THEN psn := NIL +++ ELSE STRING s = str[1:sp-1] ; +++ psn := lookup (s) +++ FI +++ ELIF ch >= "0" AND ch <= "9" # NUMBERS # +++ THEN nv := 0 ; +++ WHILE nv := nv * 10 + ABS ch - ABS "0"; +++ next ch; +++ ch >= "0" AND ch <= "9" +++ DO SKIP OD ; +++ tok := number; +++ psn := HEAP ITEM := nv +++ ELIF ch >= "A" AND ch <= "Z" # NAMES # +++ THEN sp := 0; +++ WHILE str[sp +:= 1] := ch; +++ next ch; +++ ch = "." OR ch >= "A" AND ch <= "Z" +++ OR ch >= "0" AND ch <= "9" +++ DO SKIP OD ; +++ STRING s = str[1:sp]; +++ tok := (s = "S" | stok +++ |: s = "F" | ftok +++ |: s = "END" | endt +++ |: s = "RETURN" | ret +++ |: s = "FRETURN" | fret +++ | psn := lookup (s); name) +++ ELIF ch = ";" +++ THEN next ch; stn := stn + 1; tok := eos +++ ELIF ch = sharp +++ THEN next ch; tok := eos +++ ELSE # ( ) , : = @ $ + - # +++ tok := ch; next ch +++ FI; +++ +++ PROC init = VOID: +++ BEGIN stn := 0; +++ spool[nin := 1] := HEAP ITEM := HEAP STRINGITEM := +++ ("ARB", HEAP ITEM := HEAP[1:3]COMPONENT := +++ ((mnul, 2, 0, SKIP, NIL), +++ (mnul, 0, 3, SKIP, NIL), +++ (m1, 2, 0, SKIP, NIL))); +++ get card; +++ next ch; +++ scan +++ END; +++ +++ PROC verify = (CHAR token) VOID: +++ IF tok = token THEN scan +++ ELSE STRING s := "TOKEN "" "" DOES NOT OCCUR WHERE EXPECTED"; +++ s[8] := token; +++ error (s) +++ FI; +++ +++ PROC translate = VOID: +++ BEGIN HEAP[1:stlim]STMT ss, INT ssc := 0; +++ WHILE IF ssc = stlim THEN error ("TOO MANY STATEMENTS") FI; +++ tok /= endt +++ DO ss[ssc +:= 1] := trans stmt OD; +++ scan; +++ IF tok = blank +++ THEN scan; +++ IF tok = name THEN prog entry := psn FI +++ FI; +++ t := ss[1:ssc] +++ END; +++ +++ PROC trans stmt = STMT: +++ BEGIN +++ REF IDR lab := NIL; +++ REF EXPR subj, pat, obj := NIL; +++ REF GOTOFIELD go := NIL; +++ BOOL asgn; +++ +++ PROC move to obj = STMT: +++ BEGIN +++ IF tok = blank +++ THEN scan; +++ IF tok = colon +++ THEN go := trans gofield +++ ELSE obj := trans expr; +++ IF tok = colon +++ THEN go := trans gofield +++ ELSE verify (eos) +++ FI +++ FI +++ ELSE verify (eos) +++ FI ; +++ IF asgn +++ THEN STMT (lab, HEAP ASMT := (subj, obj), go) +++ ELSE STMT (lab, HEAP REPL := (subj, pat, obj), go) +++ FI +++ END; +++ +++ PROC move to subj = STMT: +++ BEGIN scan; +++ IF tok = colon +++ THEN STMT (lab, REF EXPR (NIL), trans gofield) +++ ELSE subj := trans elem; +++ IF tok = blank +++ THEN scan; +++ IF tok = colon +++ THEN STMT (lab, REF EXPR (subj), trans gofield) +++ ELIF tok = equal +++ THEN asgn := TRUE; scan; move to obj +++ ELSE pat := trans expr; +++ IF tok = colon +++ THEN STMT (lab, HEAP MATCH := (subj, pat), trans gofield) +++ ELIF tok = equal +++ THEN asgn := FALSE; scan; move to obj +++ ELSE verify (eos); +++ STMT (lab, HEAP MATCH := (subj, pat), NIL) +++ FI +++ FI +++ ELSE verify (eos); +++ STMT (lab, REF EXPR (subj), NIL) +++ FI +++ FI +++ END; +++ +++ # Body of trans stmt. # +++ IF tok = name +++ THEN lab := HEAP IDR; idr addr OF lab := psn; scan; +++ IF tok = blank +++ THEN move to subj +++ ELSE verify (eos); +++ STMT (lab, REF EXPR (NIL), NIL) +++ FI +++ ELIF tok = blank +++ THEN move to subj +++ ELSE verify (eos); +++ STMT (lab, REF EXPR (NIL), NIL) +++ FI +++ END; +++ +++ PROC trans gofield = REF GOTOFIELD: +++ BEGIN PROC where = REF DEST: +++ BEGIN HEAP DEST d; +++ verify (lpar); +++ IF tok = blank THEN scan FI; +++ d := (tok = endt | scan; "E" +++ |: tok = ret | scan; "R" +++ |: tok = fret | scan; "F" +++ | trans expr); +++ verify (rpar); +++ d +++ END; +++ +++ REF DEST uncond := NIL, succ := NIL, fail := NIL; +++ scan; IF tok = blank THEN scan FI; +++ IF tok = stok +++ THEN scan; succ := where; +++ IF tok = blank THEN scan FI; +++ IF tok = ftok THEN scan; fail := where FI; +++ verify (eos) +++ ELIF tok = ftok +++ THEN scan; fail := where; +++ IF tok = blank THEN scan FI; +++ IF tok = stok THEN scan; succ := where FI; +++ verify (eos) +++ ELSE uncond := where; verify (eos) +++ FI; +++ HEAP GOTOFIELD := (uncond, succ, fail) +++ END; +++ +++ PROC trans expr = REF EXPR: +++ BEGIN REF EXPR e := trans expr1; +++ WHILE tok = bbar +++ DO scan; +++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans expr1, "!") +++ OD; +++ e +++ END; +++ +++ PROC trans expr1 = REF EXPR: +++ BEGIN REF EXPR e := trans expr2; +++ WHILE tok = blank +++ DO scan; +++ IF tok /= colon AND tok /= rpar AND tok /= comma AND tok /= equal +++ THEN e := HEAP EXPR := HEAP BINARYEXPR := (e, trans expr2, "C") +++ FI +++ OD; +++ e +++ END; +++ +++ PROC trans expr2 = REF EXPR: +++ BEGIN REF EXPR e := trans term; +++ CHAR opr; +++ WHILE tok = bplus OR tok = bminus +++ DO opr := (tok = bplus | "+" | "-"); +++ scan; +++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term, opr) +++ OD; +++ e +++ END; +++ +++ PROC trans term = REF EXPR: +++ BEGIN REF EXPR e := trans term1; +++ WHILE tok = bslash +++ DO scan; +++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term1, "/") +++ OD; +++ e +++ END; +++ +++ PROC trans term1 = REF EXPR: +++ BEGIN REF EXPR e := trans term2; +++ WHILE tok = bstar +++ DO scan; +++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans term2, "*") +++ OD; +++ e +++ END; +++ +++ PROC trans term2 = REF EXPR: +++ BEGIN REF EXPR e := trans elem; +++ WHILE tok = bdoll +++ DO scan; +++ e := HEAP EXPR := HEAP BINARYEXPR := (e, trans elem, "$") +++ OD; +++ e +++ END; +++ +++ PROC trans elem = REF EXPR: +++ IF tok = doll OR tok = plus OR tok = minus OR tok = at +++ THEN CHAR opr = tok; +++ scan; +++ HEAP EXPR := HEAP UNARYEXPR := (trans element, opr) +++ ELSE trans element +++ FI; +++ +++ PROC trans element = REF EXPR: +++ IF tok = name +++ THEN IDR n; +++ idr addr OF n := psn; +++ scan; +++ IF tok /= lpar +++ THEN HEAP EXPR := n +++ ELSE HEAP[1:arglim]REF EXPR a, INT ac := 0; +++ WHILE scan; +++ IF tok = blank THEN scan FI; +++ IF ac = arglim +++ THEN error ("TOO MANY ARGUMENTS IN FUNCTION CALL") +++ FI; +++ IF NOT (ac = 0 AND tok = rpar) +++ THEN a[ac +:= 1] := (tok = comma OR tok = rpar | NIL | trans expr) +++ FI; +++ IF tok /= comma AND tok /= rpar +++ THEN error ("ERROR IN ARGUMENT LIST") +++ FI; +++ tok = comma +++ DO SKIP OD; +++ scan; +++ HEAP EXPR := HEAP CALL := (n, a[1:ac]) +++ FI +++ ELIF tok = lstring +++ THEN LSTR ls; +++ lstr addr OF ls := psn; +++ scan; +++ HEAP EXPR := ls +++ ELIF tok = number +++ THEN NUM nu; num addr OF nu := psn; +++ scan; +++ HEAP EXPR := nu +++ ELSE verify (lpar); +++ IF tok = blank THEN scan FI; +++ REF EXPR e = trans expr; +++ verify (rpar); +++ e +++ FI; +++ +++ PROC usage = VOID: +++ BEGIN puts ("Usage: snobol [-l] FILE'n"); +++ stop +++ END; +++ +++ listing := FALSE; +++ IF argc < 2 THEN usage FI; +++ FOR i FROM 2 TO argc +++ DO IF argv (i) = "-l" THEN listing := TRUE +++ ELIF filein = 0 +++ THEN filein := fopen (argv (i), file o rdonly); +++ IF (filein = -1) +++ THEN error ("opening " + argv (i) + ": " + strerror (errno)) FI +++ ELSE usage +++ FI +++ OD; +++ init; +++ translate +++ END; # TRANSLATION PHASE # +++ +++ BEGIN # INTERPRETATION PHASE # +++ +++ OP INTG = (REF ITEM a) INT: (a | (INT i) : i), +++ STR = (REF ITEM a) REF STRINGITEM: (a | (REF STRINGITEM s): s), +++ PAT = (REF ITEM a) PATTERN: (a | (PATTERN p) : p); +++ BOOL fn success; +++ +++ PROC interpret = (INT stmt no) VOID: +++ BEGIN INT sn := stmt no; BOOL cycling := TRUE; +++ +++ PROC jump = (REF DEST dest) VOID: +++ BEGIN failed := FALSE; +++ CASE dest +++ IN (REF EXPR e): sn := find label (eval softly (e)), +++ (CHAR c): IF c = "E" THEN sn := UPB t + 1 +++ ELIF c = "R" THEN fn success := TRUE; +++ cycling := FALSE +++ ELSE # c = "F" # fn success := cycling := FALSE +++ FI +++ ESAC +++ END; +++ +++ WHILE cycling +++ DO IF sn > UPB t THEN stop FI; +++ failed := FALSE; +++ +++ # EXECUTE STATEMENT CORE # +++ CASE stmt core OF t[sn] +++ IN (REF ASMT a): +++ (REF ITEM sp = eval softly (subject OF a); +++ assign (sp, eval strongly (object OF a))), +++ (REF MATCH m): +++ (REF ITEM svp = eval strongly (subject OF m); +++ match (convert to str (svp), +++ convert to pat (eval strongly (pattern OF m)))), +++ (REF REPL r): +++ (REF ITEM sp = eval softly (subject OF r); +++ REF ITEM pp = convert to pat (eval strongly (pattern OF r)); +++ REF ITEM svp = convert to str (ref OF (STR sp)); +++ INT c = match (svp, pp); +++ REF ITEM b = (svp IS NIL | NIL | make str ((val OF (STR svp))[c+1:])); +++ REF ITEM obp = eval strongly (object OF r); +++ assign (sp, concatenate (obp, b))), +++ (REF EXPR e): +++ eval strongly (e) +++ ESAC; +++ +++ # PROCESS GOTO FIELD # +++ REF GOTOFIELD go = goto OF t[sn]; +++ IF go IS NIL THEN sn := sn + 1 +++ ELIF REF DEST (upart OF go) ISNT NIL +++ THEN jump (upart OF go) +++ ELIF NOT failed AND (REF DEST (spart OF go) ISNT NIL) +++ THEN jump (spart OF go) +++ ELIF failed AND (REF DEST (fpart OF go) ISNT NIL) +++ THEN jump (fpart OF go) +++ ELSE sn := sn + 1 +++ FI +++ OD +++ END; # END OF INTERPRET # +++ +++ PROC find label = (REF ITEM label ptr) INT: +++ BEGIN INT stmt no := 0; +++ IF failed THEN error ("FAILURE IN GOTO FIELD") FI; +++ FOR i TO UPB t WHILE stmt no = 0 +++ DO IF (REF IDR (label OF t[i]) IS NIL +++ | FALSE +++ | label ptr IS idr addr OF label OF t[i]) +++ THEN stmt no := i +++ FI +++ OD; +++ IF stmt no = 0 THEN error ("UNDEFINED LABEL") FI; +++ stmt no +++ END; +++ +++ PROC match = (REF ITEM subject ptr, pattern ptr) INT: +++ IF failed +++ THEN 0 +++ ELSE PATTERN p = PAT pattern ptr; +++ STRING subj = (subject ptr IS NIL | "" | val OF (STR subject ptr)); +++ INT u = UPB subj; +++ INT iarg, # INTEGER COMPONENT ARGUMENT # +++ STRING sarg, # STRING COMPONENT ARGUMENT # +++ INT l; # LENGTH OF SARG # +++ INT cn := 1, # COMPONENT NUMBER # +++ c := 0, # CURSOR # +++ code; # NEW CURSOR OR -1 IF COMPONENT NO-MATCH # +++ BOOL matching := TRUE; +++ +++ psp := 0; # CLEAR PATTERN STACK # +++ WHILE matching +++ DO IF alternate OF p[cn] /= 0 +++ THEN # PUSH PATTERN STACK # +++ pattern stack[psp +:= 1] := (c, alternate OF p[cn]) +++ FI; +++ IF REF ITEM (arg OF p[cn]) ISNT NIL +++ THEN CASE arg OF p[cn] +++ IN (INT i) : iarg := i, +++ (REF STRINGITEM s): +++ (sarg := val OF s; l := UPB sarg) +++ ESAC +++ FI; +++ +++ # EXECUTE INDICATED MATCHING ROUTINE # +++ CASE routine OF p[cn] +++ IN # MSTR # +++ IF REF ITEM (arg OF p[cn]) IS NIL +++ THEN code := c +++ ELIF c + l > u THEN code := -1 +++ ELSE code := (sarg = subj[c+1:c+l] | c + l | -1) +++ FI, +++ # MLEN # +++ code := (iarg <= u - c | c + iarg | -1), +++ # MBRK # +++ IF c >= u THEN code := -1 +++ ELSE INT n = break scan (subj[c+1:], sarg); +++ code := (n < u - c | c + n | -1) +++ FI, +++ # MSPN # +++ IF c >= u THEN code := -1 +++ ELIF any (sarg, subj[c+1]) +++ THEN INT j := c + 1; +++ FOR i FROM c + 2 TO u WHILE any (sarg, subj[i]) +++ DO j := i OD; +++ code := j +++ ELSE code := -1 +++ FI, +++ # MANY # +++ IF c >= u +++ THEN code := -1 +++ ELSE code := (any (sarg, subj[c+1]) | c + 1 | -1) +++ FI, +++ # MNUL # +++ code := c, +++ # MIV1 # +++ code := extra OF p[cn] := c, +++ # MIV2 # +++ (INT m = extra OF p[cn - extra OF p[cn]] + 1; +++ assign (arg OF p[cn], make str (subj[m:c])); +++ code := c), +++ # M1 # +++ code := (1 <= u - c | c + 1 | -1), +++ # MAT # +++ (assign (arg OF p[cn], make int (c)); +++ code := c), +++ # MPOS # +++ code := (c = iarg | c | -1), +++ # MTAB # +++ code := (c <= iarg AND iarg <= u | iarg | -1), +++ # MRPOS # +++ code := (u - c = iarg | c | -1), +++ # MRTAB # +++ code := (u - c >= iarg | u - iarg | -1), +++ # MNTY # +++ IF c >= u +++ THEN code := -1 +++ ELSE code := (any (sarg, subj[c+1]) | -1 | c + 1) +++ FI +++ ESAC; +++ +++ # DECIDE WHAT TO DO NEXT # +++ IF code >= 0 +++ THEN IF subsequent OF p[cn] = 0 +++ THEN matching := FALSE #SUCCESSFUL TERMINATION # +++ ELSE cn := subsequent OF p[cn]; +++ c := code # CONTINUE # +++ FI +++ ELIF psp = 0 +++ THEN failed := TRUE; +++ matching := FALSE # STMT FAILURE # +++ ELSE # POP PATTERN STACK TO BACKTRACK # +++ cn := alternate OF pattern stack[psp]; +++ c := cursor OF pattern stack[psp]; +++ psp := psp - 1 +++ FI +++ OD; +++ (failed | 0 | code) +++ FI; # END OF MATCH PROCEDURE # +++ +++ PROC assign = (REF ITEM subject ptr, object ptr) VOID: +++ IF failed THEN SKIP +++ ELSE REF STRINGITEM s = STR subject ptr; +++ ref OF s := object ptr; +++ IF val OF s = "OUTPUT" +++ THEN IF object ptr IS NIL +++ THEN puts ("'n") +++ ELSE CASE object ptr +++ IN (REF STRINGITEM r): puts ((val OF r) + "'n"), +++ (INT i): puts (itoa (i) + "'n"), +++ (PATTERN): (error ("ATTEMPT TO OUTPUT PATTERN"); SKIP) +++ ESAC +++ FI +++ FI +++ FI; +++ +++ PROC eval softly = (REF EXPR expression) REF ITEM: +++ IF failed THEN SKIP +++ ELSE CASE expression # CAN NEVER BE NIL # +++ IN (IDR id): idr addr OF id, +++ (REF UNARYEXPR ue): +++ IF operator OF ue = "$" +++ THEN REF ITEM r = convert to str (eval strongly (operand OF ue)); +++ IF r IS NIL +++ THEN error ("NULL RESULT WHERE VAR REQUIRED"); +++ SKIP +++ ELSE r +++ FI +++ ELSE error ("INAPPROPRIATE UNARY EXPR WHERE VAR REQUIRED"); +++ SKIP +++ FI +++ OUT error ("INAPPROPRIATE EXPR WHERE VAR REQUIRED"); +++ SKIP +++ ESAC +++ FI; +++ +++ PROC eval strongly = (REF EXPR expression) REF ITEM: +++ IF failed THEN SKIP +++ ELIF expression IS NIL THEN NIL +++ ELSE CASE expression +++ IN (IDR id): +++ (REF STRINGITEM s = STR (idr addr OF id); +++ IF val OF s = "INPUT" +++ THEN STRING line; +++ # SNOBOL programs read data from stdin. # +++ line := gets (80); +++ IF (line = "") THEN failed := TRUE; eof FI; +++ assign (idr addr OF id, make str (line)); +++ eof: SKIP +++ FI; +++ ref OF s), +++ (NUM nbr): +++ num addr OF nbr, +++ (LSTR ls): +++ lstr addr OF ls, +++ (REF UNARYEXPR ue): +++ (REF ITEM arg ptr = (operator OF ue = "@" +++ | eval softly (operand OF ue) +++ | eval strongly (operand OF ue)); +++ eval unary (arg ptr, operator OF ue)), +++ (REF BINARYEXPR be): +++ (REF ITEM arg1 ptr = eval strongly (operand1 OF be); +++ REF ITEM arg2 ptr = (operator OF be = "$" +++ | eval softly (operand2 OF be) +++ | eval strongly (operand2 OF be)); +++ eval binary (arg1 ptr, arg2 ptr, operator OF be)), +++ (REF CALL cl): +++ (INT n = UPB args OF cl; +++ [1:n]REF ITEM arglist; +++ FOR i TO n +++ DO arglist[i] := eval strongly ((args OF cl)[i]) OD; +++ eval call (idr addr OF fnname OF cl, arglist)) +++ ESAC +++ FI; +++ +++ PROC eval unary = (REF ITEM arg ptr, CHAR opr) REF ITEM: +++ IF failed THEN SKIP +++ ELSE IF opr = "$" +++ THEN IF arg ptr IS NIL +++ THEN error ("INDIRECTION APPLIED TO NULL STRING"); +++ SKIP +++ ELSE ref OF (STR convert to str (arg ptr)) +++ FI +++ ELIF opr = "+" +++ THEN convert to int (arg ptr) +++ ELIF opr = "-" +++ THEN INT k = INTG convert to int (arg ptr); +++ make int (-k) +++ ELSE # OPR = "@" # +++ make pat comp (mat, arg ptr) +++ FI +++ FI; +++ +++ PROC eval binary = (REF ITEM arg1 ptr, arg2 ptr, CHAR opr) REF ITEM: +++ IF failed THEN SKIP +++ ELSE IF opr = "$" +++ THEN REF ITEM c = concatenate (make pat comp (miv1, NIL), +++ arg1 ptr); +++ concatenate (c, make pat comp (miv2, arg2 ptr)) +++ ELIF opr = "*" OR opr = "/" OR opr = "+" OR opr = "-" +++ THEN INT m = INTG convert to int (arg1 ptr), +++ n = INTG convert to int (arg2 ptr); +++ make int ((opr = "*" | m * n +++ |: opr = "/" | m OVER n +++ |: opr = "+" | m + n | m - n)) +++ ELIF opr = "C" +++ THEN concatenate (arg1 ptr, arg2 ptr) +++ ELSE # OPR = "!" # +++ PATTERN p1 = PAT convert to pat (arg1 ptr), +++ p2 = PAT convert to pat (arg2 ptr); +++ INT u1 = UPB p1, u2 = UPB p2; +++ PATTERN p = HEAP[u1 + u2]COMPONENT, +++ INT offset = u1 + 1, INT j := 1; +++ p[1:u1] := p1[1:u1]; +++ WHILE alternate OF p[j] /= 0 +++ DO j := alternate OF p[j] OD; +++ alternate OF p[j] := offset; +++ FOR i FROM offset TO u1 + u2 +++ DO p[i] := p2 [i - u1]; +++ IF subsequent OF p[i] /= 0 +++ THEN subsequent OF p[i] +:= u1 +++ FI; +++ IF alternate OF p[i] /= 0 +++ THEN alternate OF p[i] +:= u1 +++ FI +++ OD; +++ HEAP ITEM := p +++ FI +++ FI; +++ +++ PROC eval call = (REF ITEM name ptr, REF[]REF ITEM arglist) REF ITEM: +++ IF failed THEN SKIP +++ ELSE # SEARCH FUNCTION TABLE FOR NAME # +++ BOOL not found := TRUE, INT j; +++ FOR i TO ftp WHILE not found +++ DO IF name ptr IS fnname OF function table[i] +++ THEN j := i; not found := FALSE +++ FI +++ OD; +++ IF not found +++ THEN exec prim fn (name ptr, arglist) +++ ELSE #PROGRAMMER-DEFINED FUNCTION # +++ +++ PROC stack = (REF ITEM a) VOID: +++ (IF rsp = rslim THEN error ("RUN STACK OVERFLOW") FI; +++ run stack [rsp +:= 1] := a); +++ +++ PROC unstack = REF ITEM: +++ (IF rsp = 0 THEN error ("RETURN FROM LEVEL 0") FI; +++ run stack [(rsp -:= 1) + 1]); +++ +++ REF STRINGITEM name = STR name ptr; +++ +++ # ENTRY PROTOCOL # +++ stack (ref OF name); +++ assign (name ptr, NIL); +++ REF[]REF ITEM params = params OF function table[j], +++ INT n = UPB arglist; +++ IF UPB params /= n +++ THEN error ("WRONG NUMBER OF ARGUMENTS IN CALL") +++ FI; +++ FOR i TO n +++ DO stack (ref OF (STR params[i])); +++ assign (params[i], arglist[i]) +++ OD; +++ REF[]REF ITEM locals = locals OF function table[j]; +++ FOR i TO UPB locals +++ DO stack (ref OF (STR locals[i])); +++ assign (locals[i], NIL) +++ OD; +++ +++ interpret (find label (entry name OF function table[j])); +++ +++ # RETURN PROTOCOL # +++ FOR i FROM UPB locals BY -1 TO 1 +++ DO assign (locals[i], unstack) OD; +++ FOR i FROM n BY -1 TO 1 +++ DO assign (params[i], unstack) OD; +++ REF ITEM result = ref OF name; +++ assign (name ptr, unstack); +++ (fn success | result | failed := TRUE ; SKIP) +++ FI +++ FI; +++ +++ PROC exec prim fn = (REF ITEM name ptr, +++ REF[]REF ITEM arglist) REF ITEM: +++ BEGIN +++ PROC gen1 = (INT routine) REF ITEM: +++ BEGIN # CREATE PATTERN COMPONENT WITH STRING ARGUMENT # +++ REF ITEM arg = convert to str (arglist[1]); +++ IF arg IS NIL +++ THEN error ("NULL ARG FOR PATTERN-VALUED PRIMITIVE FUNCTION" ) +++ FI; +++ make pat comp (routine, arg) +++ END; +++ +++ PROC gen2 = (INT routine) REF ITEM: +++ BEGIN # CREATE PATTERN COMPONENT WITH INTEGER ARGUMENT # +++ REF ITEM arg = convert to int (arglist[1]); +++ IF INTG arg < 0 +++ THEN error ("NEGATIVE ARG FOR PATTERN-VALUED PRIMITIVE FUNCTION") +++ FI; +++ make pat comp (routine, arg) +++ END; +++ +++ STRING fn = val OF (STR name ptr), INT n = UPB arglist; +++ IF fn = "LE" AND n = 2 +++ THEN IF INTG convert to int (arglist[1]) +++ <= INTG convert to int (arglist[2]) +++ THEN NIL +++ ELSE failed := TRUE; +++ SKIP +++ FI +++ ELIF fn = "EQ" AND n = 2 +++ THEN IF INTG convert to int (arglist[1]) +++ = INTG convert to int (arglist[2]) +++ THEN NIL +++ ELSE failed := TRUE; +++ SKIP +++ FI +++ ELIF fn = "NE" AND n = 2 +++ THEN IF INTG convert to int (arglist[1]) +++ /= INTG convert to int (arglist[2]) +++ THEN NIL +++ ELSE failed := TRUE; +++ SKIP +++ FI +++ ELIF fn = "IDENT" AND n = 2 +++ THEN IF REF ITEM (arglist[1]) IS arglist[2] +++ THEN NIL +++ ELSE failed := TRUE; +++ SKIP +++ FI +++ ELIF fn = "DIFFER" AND n = 2 +++ THEN IF REF ITEM (arglist[1]) ISNT arglist[2] +++ THEN NIL +++ ELSE failed := TRUE; +++ SKIP +++ FI +++ ELIF fn = "ANY" AND n = 1 THEN gen1 (many) +++ ELIF fn = "LEN" AND n = 1 THEN gen2 (mlen) +++ ELIF fn = "POS" AND n = 1 THEN gen2 (mpos) +++ ELIF fn = "TAB" AND n = 1 THEN gen2 (mtab) +++ ELIF fn = "SPAN" AND n = 1 THEN gen1 (mspn) +++ ELIF fn = "RPOS" AND n = 1 THEN gen2 (mrpos) +++ ELIF fn = "RTAB" AND n = 1 THEN gen2 (mrtab) +++ ELIF fn = "BREAK" AND n = 1 THEN gen1 (mbrk) +++ ELIF fn = "NOTANY" AND n = 1 THEN gen1 (mnty) +++ ELIF fn = "SIZE" AND n = 1 +++ THEN make int (UPB val OF (STR convert to str (arglist[1]))) +++ ELIF fn = "DEFINE" AND n = 2 +++ THEN IF REF ITEM (arglist[1]) IS NIL +++ THEN error ("NULL PROTOTYPE") FI; +++ STRING prototype = val OF (STR convert to str (arglist[1])); +++ REF ITEM entry = convert to str (arglist[2]); +++ IF entry IS NIL THEN error ("NULL ENTRY LABEL") FI; +++ +++ PROC check and find = (STRING str) REF ITEM: +++ BEGIN IF UPB str = 0 THEN error ("ILLEGAL PROTOTYPE") FI; +++ STRING an = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789."; +++ IF NOT any (an[:26], str[1]) +++ THEN error ("ILLEGAL PROTOTYPE") FI; +++ FOR i FROM 2 TO UPB str +++ DO IF NOT any (an, str[i]) +++ THEN error ("ILLEGAL PROTOTYPE") +++ FI +++ OD; +++ make str (str) +++ END; +++ +++ PROC breakup = (STRING str) REF[]REF ITEM: +++ BEGIN #ANALYZE A LIST OF IDENTIFIERS # +++ [1:arglim]REF ITEM r, INT p := 0, a := 1, b; +++ WHILE a <= UPB str +++ DO b := break scan (str[a:], ","); +++ IF p >= arglim +++ THEN error ("TOO MANY PARAMETERS OR LOCALS IN PROTOTYPE") FI; +++ r[p +:= 1] := check and find (str[a:a+b-1]); +++ a := a + b + 1 +++ OD; +++ HEAP[1:p]REF ITEM := r[:p] +++ END; +++ +++ INT lp = UPB prototype; +++ INT a = break scan (prototype, "("); +++ IF a >= lp THEN error ("ILLEGAL PROTOTYPE") FI; +++ REF ITEM name ptr = check and find (prototype[:a]); +++ INT b = break scan (prototype[a+2:], ")"); +++ IF b >= lp - a - 1 THEN error ("ILLEGAL PROTOTYPE") FI; +++ REF[]REF ITEM params = breakup (prototype[a+2:a+1+b]); +++ REF[]REF ITEM locals = breakup (prototype[a+b+3:]); +++ +++ BOOL not found := TRUE; +++ FOR i TO ftp WHILE not found +++ DO IF name ptr IS fnname OF function table[i] +++ THEN not found := FALSE; +++ function table[i] := (name ptr, entry, params, locals) +++ FI +++ OD; +++ IF not found +++ THEN IF ftp = ftlim +++ THEN error ("FUNCTION TABLE OVERFLOW") FI; +++ function table [ftp +:= 1] := (name ptr, entry, params, locals) +++ FI; +++ NIL # RESULT OF DEFINE(...) # +++ ELSE error ("ILLEGAL FUNCTION CALL"); +++ SKIP +++ FI +++ END; +++ +++ PROC concatenate = (REF ITEM ptr1, ptr2) REF ITEM: +++ BEGIN +++ +++ PROC concat patterns = (PATTERN p1, p2) REF ITEM: +++ BEGIN INT u1 = UPB p1, u2 = UPB p2; +++ PATTERN p = HEAP[u1 + u2]COMPONENT; +++ INT offset = u1 + 1; +++ FOR i TO u1 +++ DO p[i] := p1[i]; +++ IF subsequent OF p[i] = 0 +++ THEN subsequent OF p[i] := offset FI +++ OD; +++ FOR i FROM offset TO u1 + u2 +++ DO p[i] := p2[i - u1]; +++ IF subsequent OF p[i] /= 0 +++ THEN subsequent OF p[i] +:= u1 FI; +++ IF alternate OF p[i] /= 0 +++ THEN alternate OF p[i] +:= u1 FI +++ OD; +++ IF u2 = 1 AND routine OF p[offset] = miv2 +++ THEN extra OF p[offset] := u1 FI; +++ HEAP ITEM := p +++ END; +++ +++ IF failed THEN SKIP +++ ELSE IF ptr1 IS NIL THEN ptr2 +++ ELIF ptr2 IS NIL THEN ptr1 +++ ELSE CASE ptr1 +++ IN (PATTERN p1): +++ concat patterns (p1, PAT convert to pat (ptr2)) +++ OUSE ptr2 +++ IN (PATTERN p2): +++ concat patterns (PAT convert to pat (ptr1), p2) +++ OUT STRING s1 = val OF (STR convert to str (ptr1)); +++ make str (s1 + val OF (STR convert to str (ptr2))) +++ ESAC +++ FI +++ FI +++ END; +++ +++ PROC convert to int = (REF ITEM ptr) REF ITEM: +++ IF failed THEN SKIP +++ ELSE IF ptr IS NIL THEN make int (0) +++ ELSE CASE ptr +++ IN (INT): ptr, +++ (PATTERN): (error ("PATTERN VALUE WHERE INTEGER REQUIRED"); SKIP), +++ (REF STRINGITEM s): +++ (INT n := 0, d, z := ABS "0"; +++ FOR i TO UPB val OF s +++ DO d := ABS (val OF s)[i] - z; +++ IF d < 0 OR d > 9 +++ THEN error ("STRING NOT CONVERTIBLE TO INTEGER") FI; +++ n := n * 10 + d +++ OD; +++ make int (n)) +++ ESAC +++ FI +++ FI; +++ +++ PROC convert to pat = (REF ITEM ptr) REF ITEM: +++ IF failed THEN SKIP +++ ELSE IF ptr IS NIL +++ THEN make pat comp (mstr, NIL) +++ ELSE CASE ptr +++ IN (PATTERN): ptr +++ OUT make pat comp (mstr, convert to str (ptr)) +++ ESAC +++ FI +++ FI; +++ +++ PROC convert to str = (REF ITEM ptr) REF ITEM: +++ IF failed THEN SKIP +++ ELSE IF ptr IS NIL THEN ptr +++ ELSE CASE ptr +++ IN (REF STRINGITEM): ptr, +++ (PATTERN): (error ("PATTERN VALUE WHERE STRING REQUIRED"); SKIP), +++ (INT i): make str (itoa (i)) +++ ESAC +++ FI +++ FI; +++ +++ PROC make int = (INT val) REF ITEM: +++ IF failed THEN SKIP +++ ELSE HEAP ITEM := val +++ FI; +++ +++ PROC make pat comp = (INT routine, REF ITEM arg) REF ITEM: +++ IF failed THEN SKIP +++ ELSE HEAP ITEM := HEAP[1:1]COMPONENT := COMPONENT (routine, 0, 0, SKIP, arg) +++ FI; +++ +++ PROC make str = (STRING val) REF ITEM: +++ IF failed THEN SKIP +++ ELIF UPB val = 0 THEN NIL +++ ELSE INT i := 0, BOOL nf := TRUE; +++ WHILE IF (i +:= 1) <= nin +++ THEN nf := val /= val OF (STR spool [i]) +++ ELSE FALSE +++ FI +++ DO SKIP OD; +++ IF nf +++ THEN IF nin = spoolsize THEN error ("TOO MANY STRINGS") FI; +++ spool[nin +:= 1] := HEAP ITEM := HEAP STRINGITEM := (val, NIL) +++ FI; +++ spool[i] +++ FI; +++ +++ PROC break scan = (STRING str, arg) INT: +++ BEGIN # RESULT = UPB STR IF NO BREAK CHAR, LESS OTHERWISE # +++ INT j := 0; +++ FOR i TO UPB str WHILE NOT any (arg, str[i]) +++ DO j := i OD; +++ j +++ END; +++ +++ PROC any = (STRING str, CHAR ch) BOOL: +++ BEGIN BOOL nf; +++ FOR i TO UPB str WHILE nf := ch /= str[i] DO SKIP OD; +++ NOT nf +++ END; +++ +++ interpret ((REF ITEM (prog entry) IS NIL | 1 | find label (prog entry))) +++ END # INTERPRETATION PHASE # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-1.a68 ++@@ -0,0 +1,11 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin mode Some_Mode = real; +++ Some_Mode some_real := random; +++ +++ puts ("Hello time for SUPPER!\n"); +++ if some_real > 0.5 +++ then puts ("YES\n") +++ else puts ("NO\n") +++ fi +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-10.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin mode BEGIN = int; +++ BEGIN some_int = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-11.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin mode BEGIN = int; +++ BEGIN some_int = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-12.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin for i while i < 10 +++ do puts ("lala\n") +++ od +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-13.a68 ++@@ -0,0 +1,7 @@ +++{ dg-options "-fstropping=supper" } +++ +++{ mode_ should not be recognized as a symbol. } +++ +++begin int mode_ = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-2.a68 ++@@ -0,0 +1,5 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin int foo_bar = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-3.a68 ++@@ -0,0 +1,5 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin int foo_bar_ = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-4.a68 ++@@ -0,0 +1,5 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin int foo_ = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-5.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin mode Foo_bar = int; +++ Foo_bar some_int = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-6.a68 ++@@ -0,0 +1,5 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin go to done; +++done: skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-7.a68 ++@@ -0,0 +1,5 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin goto done; +++done: skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-8.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin mode Int = int; +++ Int some_int = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/supper-9.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options {-fstropping=supper} } +++ +++begin mode BEGIN = int; +++ BEGIN some_int = 10; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/uniting-1.a68 ++@@ -0,0 +1,8 @@ +++{ dg-options {-fstropping=supper} } +++begin mode JSON_Val = union (int,ref JSON_Obj), +++ JSON_Obj = struct (int je), +++ +++ proc json_new_obj = JSON_Val: +++ (JSON_Obj o; o); +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/upper-1.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options {-fstropping=upper} } # +++ +++BEGIN MODE SOME_MODE = REAL; +++ SOME_MODE some_real := random; +++ +++ puts ("Hello time for SUPPER!\n"); +++ IF some_real > 0.5 +++ THEN puts ("YES\n") +++ ELSE puts ("NO\n") +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-1.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options "-Whidden-declarations" } +++begin +++ op UPB = (union (int,string) v) int: { dg-warning "hides" } +++ (v | (string s): UPB s | 0); +++ UPB "lala" +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-2.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options "-Whidden-declarations" } +++begin +++ op UPB = (union ([]int,string) v) int: { dg-warning "hides" } +++ (v | (string s): UPB s | 0); +++ UPB "lala" +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-3.a68 ++@@ -0,0 +1,5 @@ +++{ dg-options "-Whidden-declarations" } +++begin op UPB = (union (int,union(string,real)) v) int: { dg-warning "hides" } +++ (v | (string s): UPB s | 0); +++ UPB "lala" +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-4.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options "-Whidden-declarations" } +++begin +++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } +++ (v | (string s): UPB s | 0); +++ UPB "lala" +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-5.a68 ++@@ -0,0 +1,9 @@ +++{ dg-options "-Whidden-declarations=none" } +++begin real b; +++ begin int getchar = 10; +++ int b; +++ op UPB = (int i, union (int,string) v) int: +++ (v | (string s): UPB s | 0); +++ UPB "lala" +++ end +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-6.a68 ++@@ -0,0 +1,9 @@ +++{ dg-options "-Whidden-declarations=prelude" } +++begin real b; +++ begin int getchar = 10; { dg-warning "hides" } +++ int b; +++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } +++ (v | (string s): UPB s | 0); +++ UPB "lala" +++ end +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-hidding-7.a68 ++@@ -0,0 +1,9 @@ +++{ dg-options "-Whidden-declarations=all" } +++begin real b; +++ begin int getchar = 10; { dg-warning "hides" } +++ int b; { dg-warning "hides" } +++ op UPB = (int i, union (int,string) v) int: { dg-warning "hides" } +++ (v | (string s): UPB s | 0); +++ UPB "lala" +++ end +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-module-hidding-1.a68 ++@@ -0,0 +1,6 @@ +++{ dg-options "-Whidden-declarations=all" } +++ +++module Foo = def int i; i := 10 postlude puts ("bye foo'n") fed, +++ Bar = def int j; j := 20 +++ postlude int j; puts ("bye bar'n") fed, { dg-warning "hidden" } +++ Baz = def skip fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-pub-loc-1.a68 ++@@ -0,0 +1,7 @@ +++module Foo = +++def pub ref int xx = loc int := 777; { dg-warning "" } +++ pub ref int yy; +++ pub ref int zz = heap int := 888; +++ ref int vv = loc int := 999; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-scope-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++ +++# Potential scope violation warnings are disabled by default. # +++BEGIN PROC increase = (REF INT i) REF INT: +++ BEGIN INT j := i; +++ j # Inhibited warning. # +++ END; +++ increase (LOC INT) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-scope-2.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options {-Wscope -fstropping=upper} } # +++BEGIN PROC increase = (REF INT i) REF INT: +++ BEGIN +++ INT j := i; +++ j # { dg-warning "scope violation" } # +++ END; +++ increase (LOC INT) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-scope-3.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options {-Wscope -fstropping=upper} } # +++(REF INT xx; +++ xx := (INT x; x := 3)) # { dg-warning "scope violation" } # ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-scope-4.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options {-Wscope -fstropping=upper} } # +++(REF INT xx; +++ (INT x; xx:= x; x := 3)) # { dg-warning "scope violation" } # ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-scope-5.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options {-Wscope -fstropping=upper} } # +++# The scope violation here is due to the routine text, which is copied +++ to P, referring to a value whose range doesn't exist anymore: X # +++BEGIN (PROC REAL p; +++ (REAL x; +++ p := REAL: x * 2); # { dg-warning "scope violation" } # +++ p) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-scope-6.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options {-Wscope -fstropping=upper} } # +++BEGIN (PROC REAL p; REAL mypi := 3.14; +++ (REAL x; +++ p := REAL: mypi * 2); # No scope violation here. # +++ p) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-scope-7.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options {-Wscope -fstropping=upper} } # +++# N,M below represent pairs of insc, outsc # +++BEGIN (INT x; +++ REF INT xx; +++ (REF INT yy; +++ INT y; +++ xx := yy; # 0,0 := 1,0. Dynamic check. # +++ yy := y; # 1,1 := 1,1. OK # +++ xx := y # 0,0 := 1,1. { dg-warning "scope violation" } # +++ ) +++ ) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-voiding-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options {-Wvoiding -fstropping=upper} } # +++BEGIN PROC sum = (INT a, INT b) INT: +++ ( a + b ); +++ sum (10, 20) # { dg-warning "will be voided" } # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/compile/warning-voiding-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++ +++BEGIN PROC sum = (INT a, INT b) INT: +++ ( a + b ); +++ sum (10, 20) # Voiding warning won't be emitted by default. # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/abs-bits-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# ABS for SIZETY BITS # +++BEGIN ASSERT (255 = ABS 16rff); +++ ASSERT (LONG 255 = ABS LONG 16rff); +++ ASSERT (LONG LONG 255 = ABS LONG LONG 16rff) +++ # XXX test ABS of negative numbers (extension). # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/abs-bool-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (ABS TRUE /= 0); +++ ASSERT (ABS FALSE = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/abs-char-1.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (ABS "a" = 97) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/abs-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (ABS 10 = 10); +++ ASSERT (ABS -10 = 10); +++ ASSERT (ABS SHORT 10 = SHORT 10); +++ ASSERT (ABS - SHORT 10 = SHORT 10); +++ ASSERT (ABS - SHORT SHORT 10 = SHORT SHORT 10); +++ ASSERT (ABS LONG 10 = LONG 10); +++ ASSERT (ABS - LONG 10 = LONG 10); +++ ASSERT (ABS - LONG LONG 10 = LONG LONG 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/abs-int-negative-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper -std=algol68" } # +++BEGIN SHORT SHORT BITS b = BIN - SHORT SHORT 2; +++ ASSERT (ABS b = SHORT SHORT INT (SKIP)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/abs-int-negative-gnu-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper -std=gnu68" } # +++BEGIN SHORT SHORT BITS b = BIN - SHORT SHORT 2; +++ ASSERT (ABS b = - SHORT SHORT 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/acos-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 1.0; +++ LONG REAL rr = LONG 45.0; +++ LONG LONG REAL rrr = LONG LONG 60.0; +++ ASSERT (arccos (r) = 0.0); +++ long arccos (rr); +++ long long arccos (rrr) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/affirm-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; +++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; +++ ASSERT (+i = 10); +++ ASSERT (+ii = LONG 10); +++ ASSERT (+iii = LONG LONG 10); +++ ASSERT (+ss = SHORT 10); +++ ASSERT (+sss = SHORT SHORT 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/and-bits-1.a68 ++@@ -0,0 +1,18 @@ +++# { dg-options "-fstropping=upper" } # +++# AND for SIZETY BITS. # +++BEGIN BITS b = 16r0f0f0; +++ ASSERT ((b AND 16r0f0f) = 16r0); +++ ASSERT ((b AND 16r00ff) = 16rf0); +++ LONG BITS bb = LONG 16r0f0f0; +++ ASSERT ((bb AND LONG 16r0f0f) = LONG 16r0); +++ ASSERT ((bb AND LONG 16r00ff) = LONG 16rf0); +++ LONG LONG BITS bbb = LONG LONG 16r0f0f0; +++ ASSERT ((bbb AND LONG LONG 16r0f0f) = LONG LONG 16r0); +++ ASSERT ((bbb AND LONG LONG 16r00ff) = LONG LONG 16rf0); +++ SHORT BITS ss = SHORT 16r0f0f0; +++ ASSERT ((ss AND SHORT 16r0f0f) = SHORT 16r0); +++ ASSERT ((ss AND SHORT 16r00ff) = SHORT 16rf0); +++ SHORT SHORT BITS sss = SHORT SHORT 16r0f0f0; +++ ASSERT ((sss AND SHORT SHORT 16r0f0f) = SHORT SHORT 16r0); +++ ASSERT ((sss AND SHORT SHORT 16r00ff) = SHORT SHORT 16rf0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/andf-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10; +++ ASSERT (i /= 0 ANDTH i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/ascription-1.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++# Make sure structs are copied when ascribed. # +++BEGIN MODE BAR = STRUCT (INT j, REAL r); +++ MODE FOO = STRUCT (INT i, BAR bar); +++ +++ FOO f1 := (10, (20, 3.14)); +++ FOO f2 = f1; +++ +++ j OF bar OF f1 := 200; +++ ASSERT (j OF bar OF f1 = 200); +++ ASSERT (j OF bar OF f2 = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/asin-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 0.0; +++ LONG REAL rr = LONG 45.0; +++ LONG LONG REAL rrr = LONG LONG 60.0; +++ ASSERT (arcsin (r) = 0.0); +++ long arcsin (rr); +++ long long arcsin (rrr) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assert-1.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (TRUE) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-char-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN CHAR c; +++ c := "x"; +++ ASSERT (c = "x") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-int-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i; +++ i := 20; +++ ASSERT (i = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-int-2.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN x := 100; +++ INT x; +++ ASSERT (x = 100) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-int-3.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REF INT j = LOC INT; +++ INT i; +++ i := j := 20; +++ ASSERT (i + j = 40) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-int-4.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REF INT xx; +++ INT x := 10; +++ ASSERT ((xx := (x)) = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-int-5.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx := x; +++ x := 20; +++ ASSERT ((xx := (INT j; x)) = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-multiple-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRUCT ([2:3]INT m, [1:5]REAL g) s; +++ g OF s:= (1.0, 2.0, 3.0, 4.0, 5.0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-multiple-2.a68 ++@@ -0,0 +1,15 @@ +++begin [5]struct(char i, real r) foo; +++ +++ { The stride in the single dimension of the multiple resulting +++ from the selection is not the size of a 'char'. } +++ i of foo := ("a","b","c","d","e"); +++ puts ((i of foo) + "'n"); +++ { Via indexing then selection. } +++ assert (i of foo[1] = "a"); +++ assert (i of foo[2] = "b"); +++ assert (i of foo[3] = "c"); +++ assert (i of foo[4] = "d"); +++ assert (i of foo[5] = "e"); +++ { Via selection of multiple. } +++ assert (i of foo = "abcde"); +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-struct-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE NODE = STRUCT (INT one, two, three); +++ NODE top; +++ top := (10,20,30); +++ ASSERT (two OF top = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/assignation-struct-2.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Struct containing a multiple, which must be copied when +++ the struct value is assigned. # +++BEGIN MODE FOO = STRUCT (STRING s, INT i); +++ FOO f1; +++ f1 := ("foo", 10); +++ ASSERT (i OF f1 = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/atan-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 0.0; +++ LONG REAL rr = LONG 45.0; +++ LONG LONG REAL rrr = LONG LONG 60.0; +++ ASSERT (arctan (r) = 0.0); +++ long arctan (rr); +++ long long arctan (rrr) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/balancing-1.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL x, y; +++ REF REAL xx, yy; +++ xx := yy := x; +++ +++ ASSERT (xx :=: x); +++ ASSERT (x :=: xx); +++ ASSERT (xx :/=: yy); +++ ASSERT (REF REAL (xx) :=: yy); +++ ASSERT (xx :=: REF REAL (yy)); +++ ASSERT (REF REAL (xx) :=: REF REAL (yy)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/balancing-rows-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (UPB IF FALSE THEN []INT (1) ELSE [,]REAL (1) FI = 1); +++ ASSERT (2 UPB CASE 2 IN []INT (1), [,]REAL (1) ESAC = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/bin-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# BIN for SIZETY INTs # +++BEGIN ASSERT (BIN 255 = 16rff); +++ ASSERT (BIN LONG 255 = LONG 16rff); +++ ASSERT (BIN LONG LONG 255 = LONG LONG 16rff) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/bin-negative-1.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper -std=algol68" } # +++BEGIN ASSERT (BIN - SHORT SHORT 2 = SHORT SHORT 2r0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/bin-negative-gnu-1.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper -std=gnu68" } # +++BEGIN ASSERT (BIN - SHORT SHORT 2 = SHORT SHORT 2r11111110) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/boolops-1.a68 ++@@ -0,0 +1,18 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BOOL t := TRUE; +++ BOOL f := FALSE; +++ ASSERT (NOT t = FALSE); +++ ASSERT (~t = FALSE); +++ ASSERT ((t AND t) = TRUE); +++ ASSERT ((t AND f) = FALSE); +++ ASSERT ((f AND f) = FALSE); +++ ASSERT ((f AND t) = FALSE); +++ ASSERT ((t OR t) = TRUE); +++ ASSERT ((t OR f) = TRUE); +++ ASSERT ((f OR f) = FALSE); +++ ASSERT ((f OR t) = TRUE); +++ ASSERT ((t XOR t) = FALSE); +++ ASSERT ((t XOR f) = TRUE); +++ ASSERT ((f XOR f) = FALSE); +++ ASSERT ((f XOR t) = TRUE) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/call-1.a68 ++@@ -0,0 +1,19 @@ +++# { dg-options "-fstropping=upper" } # +++# Calling a procedure that gets a row of united values. # +++BEGIN INT num ints := 0, num reals := 0, num strings := 0; +++ PROC foo = ([]UNION(INT,REAL,STRING) d) VOID: +++ BEGIN FOR i TO UPB d +++ DO CASE d[i] +++ IN (STRING): num strings +:= 1, +++ (INT): num ints +:= 1, +++ (REAL): num reals +:= 1 +++ ESAC +++ OD +++ END; +++ foo (()); +++ foo (10); +++ ASSERT (num ints = 1 AND num reals = 0 AND num strings = 0); +++ num ints := 0; +++ foo (("baz", 1, 3.14, 2, 0.0, "foo")); +++ ASSERT (num ints = 2 AND num reals = 2 AND num strings = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/call-2.a68 ++@@ -0,0 +1,21 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT control := 0; +++ PROC set control = (PROC(INT)VOID p) VOID: p (100); +++ PROC setter = (INT i) VOID: control := i; +++ PROC(INT)VOID setter 2 = (INT i) VOID: control := i + 1; +++ PROC(INT)VOID setter 3 := setter 2; +++ PROC(INT)VOID setter 4 := (INT i) VOID: control := i + 2; +++ REF PROC(INT)VOID setter 5 := setter 4; +++ set control (setter); +++ ASSERT (control = 100); +++ set control (setter 2); +++ ASSERT (control = 101); +++ control := 0; +++ set control (setter 3); +++ ASSERT (control = 101); +++ set control (setter 4); +++ ASSERT (control = 102); +++ control := 0; +++ set control (setter 5); +++ ASSERT (control = 102) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/case-clause-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT j := 1; +++ ASSERT ((j|10,20,30|40) = 10); +++ j := 2; +++ ASSERT ((j|10,20,30|40) = 20); +++ j := 3; +++ ASSERT ((j|10,20,30|40) = 30); +++ j := 100; +++ ASSERT ((j|10,20,30|40) = 40) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/case-clause-2.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 2; +++ ASSERT (CASE INT x = 10; i +++ IN x + 1, +++ x + 2, +++ x + 3 +++ ESAC = 12) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/case-clause-3.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT days, INT month = 2, year = 2024; +++ days := CASE month +++ IN 31, (year MOD 4 = 0 AND year MOD 100 /= 0 OR year MOD 400 = 0 | 29 | 28), +++ 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 ESAC; +++ ASSERT (days = 29) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/case-clause-4.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT day = 3; +++ STRING day name = (day | "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"); +++ ASSERT (day name[1] = "W") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/closed-clause-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL pie, my small real := 0.001; +++ PROC my sqrt = (REAL r) REAL: r; +++ BEGIN REAL w := 0, INT i := 1, REAL z = my sqrt (my small real / 2); +++ loop: w := w + 2 / (i * (i + 2)); +++ i := i + 4; +++ IF 1/i > z THEN GO TO loop FI; +++ pie := 4 * w +++ END +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/closed-clause-2.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL my small real := 0.001; +++ PROC my sqrt = (REAL r) REAL: r; +++ REAL res = 4 * (REAL w := 0, INT i := 1; REAL z = my sqrt (my small real / 2); +++ loop: w := w + 2/(i * (i + 2)); i := i + 4; +++ IF 1/i > z THEN loop FI; +++ w); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10; +++ (i, i + 1, i + 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-2.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10; +++ ( +++ BEGIN +++ (i + 1, i +:= 1, i + 2) +++ END +++ ); +++ ASSERT (i = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-3.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10; +++ ( +++ i +:= 1; +++ BEGIN +++ (i + 1, (i +:= 1, i + 10, i + 11, SKIP), i + 2) +++ END; +++ i +:= i +++ ); +++ ASSERT (i = 24) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-4.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN (SKIP,SKIP) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-5.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x, y, z; +++ (x := 1, y := 2, z := 3); +++ ASSERT (x = 1 AND y = 2 AND z = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/collateral-clause-6.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i; +++ PROC side = INT: (i := 1; i := 2; i); +++ PROC add = (INT ii, INT jj) INT: ii + jj; +++ INT res = add (side, side); +++ # can be 3 or 4 due to collateral evaluation of arguments. # +++ ASSERT (res = 3 OR res = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i; +++ BEGIN (i := 20 EXIT +++cont: i := 30 +++ ); +++ i +:= 1 +++ END; +++ ASSERT (i = 21) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-10.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 20; +++ REF INT xx := x; +++ REF REF INT xxx; +++ REF INT i := (x := 10; xxx := xx EXIT foo: xxx EXIT bar: xxx := xx); +++ ASSERT (i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-2.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = (foo; +++ 10 EXIT +++foo: 20 EXIT +++bar: 30); +++ ASSERT (i = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-3.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = ((((foo; 10 EXIT foo: 20 EXIT bar: 30)))); +++ ASSERT (i = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-4.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := (foo; 10 EXIT foo: 20 EXIT bar: 30); +++ ASSERT (i = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-5.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x; +++ REF INT i := (foo; x := 10 EXIT foo: x := 20 EXIT bar: x := 30); +++ ASSERT (i = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-6.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 20; +++ REF INT i := (foo; x := 10 EXIT foo: x EXIT bar: x := 30); +++ ASSERT (i = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-7.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 20; +++ REF INT i := (x := 10 EXIT foo: x EXIT bar: x := 30); +++ ASSERT (i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-8.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 20; +++ REF INT i := (x EXIT foo: x EXIT bar: x := 30); +++ ASSERT (i = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/completer-9.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 20; +++ REF INT xx := x; +++ REF INT i := (xx EXIT foo: xx EXIT bar: xx := x); +++ ASSERT (i = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10, x; +++ IF i > 5 THEN x := i FI; +++ ASSERT (x = i) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-2.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10, x; +++ IF i < 5 THEN x = i FI; +++ ASSERT (x /= i) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-3.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 5; +++ IF i = 5 +++ THEN 0 +++ ELSE ASSERT (FALSE); 1 +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-4.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++# Declarations in enquiry clause. # +++(INT i; i := 3 ; i := 2; i /= i | ASSERT (FALSE); 1 | 0) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-5.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++# Closed clauses in enquiry clause. # +++((INT i; (i := 3 ; i := 2); ((i /= i))) | ASSERT (FALSE); 1 | 0) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-6.a68 ++@@ -0,0 +1,23 @@ +++# { dg-options "-fstropping=upper" } # +++# Nested conditional clauses # +++BEGIN +++ INT i = 10; +++ IF i > 5 THEN +++ IF i < 15 THEN +++ IF i > 11 THEN +++ ASSERT (FALSE); +++ 1 +++ ELSE +++ 0 +++ FI +++ FI +++ ELSE +++ IF i > 100 THEN +++ ASSERT (FALSE); +++ 1 +++ ELSE +++ ASSERT (FALSE); +++ 1 +++ FI +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-7.a68 ++@@ -0,0 +1,23 @@ +++# { dg-options "-fstropping=upper" } # +++# Nested conditional clauses # +++BEGIN +++ INT i = 12; +++ IF i > 5 THEN +++ IF i < 15 THEN +++ IF i > 11 THEN +++ 0 +++ ELSE +++ ASSERT (FALSE); +++ 1 +++ FI +++ FI +++ ELSE +++ IF i > 100 THEN +++ ASSERT (FALSE); +++ 1 +++ ELSE +++ ASSERT (FALSE); +++ 1 +++ FI +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-8.a68 ++@@ -0,0 +1,20 @@ +++# { dg-options "-fstropping=upper" } # +++# ELIF # +++BEGIN +++ INT i = 12; +++ IF i > 20 THEN +++ 1 +++ ELIF i > 5 THEN +++ BEGIN +++ IF FALSE THEN +++ ASSERT (FALSE); +++ 1 +++ ELSE +++ 0 +++ FI +++ END +++ ELIF i < 10 THEN +++ ASSERT (FALSE); +++ 1 +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cond-clause-9.a68 ++@@ -0,0 +1,23 @@ +++# { dg-options "-fstropping=upper" } # +++# ELIF with ELSE # +++BEGIN +++ INT i = 12; +++ IF i > 20 THEN +++ 1 +++ ELIF i > 12 THEN +++ BEGIN +++ IF FALSE THEN +++ ASSERT (FALSE); +++ 1 +++ ELSE +++ ASSERT (FALSE); +++ 1 +++ FI +++ END +++ ELIF i < 10 THEN +++ ASSERT (FALSE); +++ 1 +++ ELSE +++ 0 +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); +++ DATUM datum := 10; +++ INT i = CASE datum +++ IN (REAL): 2, +++ (INT i): i + 1, +++ (CHAR): 3 +++ ESAC; +++ ASSERT (i = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-2.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); +++ DATUM datum := "X"; +++ INT i = CASE datum +++ IN (REAL): 2, +++ (INT val): val + 1 +++ OUT INT x = 100; +++ x + 10 +++ ESAC; +++ ASSERT (i = 110) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-3.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE DATUM = UNION(INT,REAL,CHAR); +++ DATUM datum := 20; +++ INT i = CASE INT i = 10; datum +++ IN (REAL): 2, +++ (INT val): val + i +++ OUT INT x = 100; +++ x + 10 +++ ESAC; +++ ASSERT (i = 30) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-4.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []UNION(INT,STRING,REAL) datum = (10, 3.14, "foo", 200); +++ ASSERT (CASE datum[1] IN (INT): 100 ESAC = 100); +++ ASSERT (CASE datum[2] IN (REAL): 200 ESAC = 200); +++ ASSERT (CASE datum[3] IN (STRING): 300 ESAC = 300); +++ ASSERT (CASE datum[4] IN (INT): 400 ESAC = 400) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-5.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN UNION(CHAR,BOOL,INT,REAL) cbira := "X"; +++ IF CASE cbira +++ IN (BOOL b): b, +++ (INT i): i > 0, +++ (REAL r): r > 0 +++ OUT FALSE +++ ESAC +++ THEN # We get here if cbira was not a CHAR and was otherwise +++ TRUE or >0, as the case may be. +++ # +++ ASSERT (FALSE) +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-6.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN UNION (CHAR,BOOL,REAL) cbra = 3.14, UNION (INT,REAL) ira = 10; +++ IF (cbra | (CHAR): FALSE, (BOOL b): b +++ |: ira | (INT i): i > 0, (REAL r): r > 0) +++ THEN SKIP +++ ELSE ASSERT (FALSE) +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-7.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN UNION (CHAR,BOOL,REAL) cbra = 3.14, UNION (INT,REAL) ira = -10; +++ IF (cbra | (CHAR): FALSE, (BOOL b): b +++ |: ira | (INT i): i > 0, (REAL r): r > 0) +++ THEN ASSERT (FALSE) +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-8.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE JORL = STRUCT (UNION(INT,REAL) i, REF JORL next); +++ REF JORL p := HEAP JORL := (10, HEAP JORL := (20.0, NIL)); +++ p := HEAP JORL := (30, p); +++ INT num ints := 0, num reals := 0; +++ WHILE REF JORL (p) ISNT NIL +++ DO CASE i OF p IN (INT): num ints +:= 1, (REAL): num reals +:= 1 ESAC; +++ p := next OF p +++ OD; +++ ASSERT (num ints = 2 AND num reals = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conformity-clause-9.a68 ++@@ -0,0 +1,10 @@ +++begin union (int, bool, string) foo = 666; +++ case foo +++ in (union(int,string) bar): +++ case bar +++ in (int i): assert (i = 666), +++ (string s): assert (false) +++ esac, +++ (bool baz): assert (false) +++ esac +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/conj-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN COMPL z = 4.0I5.0; +++ CONJ z; +++ LONG COMPL zz = LONG 4.0 I LONG 6.0; +++ CONJ zz; +++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; +++ CONJ zzz; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/cos-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 0.0; +++ LONG REAL rr = LONG 45.0; +++ LONG LONG REAL rrr = LONG LONG 60.0; +++ ASSERT (cos (r) = 1.0); +++ long cos (rr); +++ long long cos (rrr) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/declarer-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# Tests a jump out of the elaboration of a declarer. # +++BEGIN STRING month = CASE 13 +++ IN "Jan", "Feb","March","April","May","June", +++ "July","Aug","Sept", "Oct", "Nov","Dec", +++ stop +++ ESAC; +++ ASSERT (FALSE) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/declarer-2.a68 ++@@ -0,0 +1,6 @@ +++begin int n := 1; +++ { The actual-declarer below should be +++ elaborated only once. } +++ [1: n +:= 1]real a, b; +++ assert (n = 2) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deprocedure-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x = 100; +++ PROC foo = INT: (INT i = 10, j = 20; PROC bar = INT: 100; i + j + bar); +++ ASSERT (foo = 130) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deprocedure-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Procedure variables. # +++BEGIN INT x = 100; +++ PROC foo := INT: (INT i = 10, j = 20; PROC bar := INT: 100; i + j + bar); +++ ASSERT (foo = 130) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deref-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ INT res := (REF INT xx := x; xx); +++ ASSERT (res = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deref-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx := x; +++ x := 20; +++ ASSERT (xx = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deref-3.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ INT y := 20; +++ REF INT xx := x; +++ CO This makes xx to refer to y +++ REF REF INT := REF INT +++ CO +++ xx := y; +++ y := 30; +++ ASSERT (xx = 30) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deref-4.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ INT y := 20; +++ REF INT xx := x; +++ # This sets x to the current value of y # +++ REF INT (xx) := y; +++ ASSERT (x = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deref-5.a68 ++@@ -0,0 +1,42 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx := x; +++ REF REF INT xxx := xx; +++ ASSERT (x = 10); +++ ASSERT (xx = 10); +++ ASSERT (xxx = 10); +++ ASSERT ((x) = 10); +++ ASSERT ((xx) = 10); +++ ASSERT ((xxx) = 10); +++ ASSERT (x + 1 = 11); +++ ASSERT (xx + 1 = 11); +++ ASSERT (xxx + 1 = 11); +++ ASSERT ((x + 1) = 11); +++ ASSERT ((xx + 1) = 11); +++ ASSERT ((xxx + 1) = 11); +++ ASSERT ((x := x) = 10); +++ ASSERT ((xx := x) = 10); +++ ASSERT ((xxx := xx) = 10); +++ ASSERT ((x := x) + 1 = 11); +++ ASSERT ((xx := x) + 1 = 11); +++ ASSERT ((xxx := xx) + 1 = 11); +++ x := 20; +++ ASSERT (x = 20); +++ ASSERT (xx = 20); +++ ASSERT (xxx = 20); +++ ASSERT ((x) = 20); +++ ASSERT ((xx) = 20); +++ ASSERT ((xxx) = 20); +++ ASSERT (x + 1 = 21); +++ ASSERT (xx + 1 = 21); +++ ASSERT (xxx + 1 = 21); +++ ASSERT ((x + 1) = 21); +++ ASSERT ((xx + 1) = 21); +++ ASSERT ((xxx + 1) = 21); +++ ASSERT ((x := x) = 20); +++ ASSERT ((xx := x) = 20); +++ ASSERT ((xxx := xx) = 20); +++ ASSERT ((x := x) + 1 = 21); +++ ASSERT ((xx := x) + 1 = 21); +++ ASSERT ((xxx := xx) + 1 = 21) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deref-6.a68 ++@@ -0,0 +1,48 @@ +++# { dg-options "-fstropping=upper" } # +++# Dereferencing of struct fields. # +++BEGIN MODE S = STRUCT (REF INT x, REF REF INT xx, REF REF REF INT xxx); +++ +++ INT x := 10; +++ REF INT xx := x; +++ REF REF INT xxx := xx; +++ +++ S s = (x, xx, xxx); +++ +++ ASSERT (x OF s = 10); +++ ASSERT (xx OF s = 10); +++ ASSERT (xxx OF s = 10); +++ ASSERT ((x) = 10); +++ ASSERT ((xx) = 10); +++ ASSERT ((xxx) = 10); +++ ASSERT (x OF s + 1 = 11); +++ ASSERT (xx OF s + 1 = 11); +++ ASSERT (xxx OF s + 1 = 11); +++ ASSERT ((x OF s + 1) = 11); +++ ASSERT ((xx OF s + 1) = 11); +++ ASSERT ((xxx OF s + 1) = 11); +++ ASSERT ((x OF s := x) = 10); +++ ASSERT ((xx OF s := x) = 10); +++ ASSERT ((xxx OF s := xx) = 10); +++ ASSERT ((x OF s := x) + 1 = 11); +++ ASSERT ((xx OF s := x) + 1 = 11); +++ ASSERT ((xxx OF s := xx) + 1 = 11); +++ x OF s := 20; +++ ASSERT (x OF s = 20); +++ ASSERT (xx OF s = 20); +++ ASSERT (xxx OF s = 20); +++ ASSERT ((x) = 20); +++ ASSERT ((xx) = 20); +++ ASSERT ((xxx) = 20); +++ ASSERT (x OF s + 1 = 21); +++ ASSERT (xx OF s + 1 = 21); +++ ASSERT (xxx OF s + 1 = 21); +++ ASSERT ((x OF s + 1) = 21); +++ ASSERT ((xx OF s + 1) = 21); +++ ASSERT ((xxx OF s + 1) = 21); +++ ASSERT ((x OF s := x) = 20); +++ ASSERT ((xx OF s := x) = 20); +++ ASSERT ((xxx OF s := xx) = 20); +++ ASSERT ((x OF s := x) + 1 = 21); +++ ASSERT ((xx OF s := x) + 1 = 21); +++ ASSERT ((xxx OF s := xx) + 1 = 21) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deref-7.a68 ++@@ -0,0 +1,48 @@ +++# { dg-options "-fstropping=upper" } # +++# Dereferencing of struct fields. Version with sub-names. # +++BEGIN MODE S = STRUCT (INT x, REF INT xx, REF REF INT xxx); +++ +++ INT x := 10; +++ REF INT xx := x; +++ REF REF INT xxx := xx; +++ +++ S s := (x, xx, xxx); +++ +++ ASSERT (x OF s = 10); +++ ASSERT (xx OF s = 10); +++ ASSERT (xxx OF s = 10); +++ ASSERT ((x) = 10); +++ ASSERT ((xx) = 10); +++ ASSERT ((xxx) = 10); +++ ASSERT (x OF s + 1 = 11); +++ ASSERT (xx OF s + 1 = 11); +++ ASSERT (xxx OF s + 1 = 11); +++ ASSERT ((x OF s + 1) = 11); +++ ASSERT ((xx OF s + 1) = 11); +++ ASSERT ((xxx OF s + 1) = 11); +++ ASSERT ((x OF s := x) = 10); +++ ASSERT ((xx OF s := xx) = 10); +++ ASSERT ((xxx OF s := xxx) = 10); +++ ASSERT ((x OF s := x) + 1 = 11); +++ ASSERT ((xx OF s := xx) + 1 = 11); +++ ASSERT ((xxx OF s := xxx) + 1 = 11); +++ x := 20; +++ ASSERT (x OF s = 10); +++ ASSERT (xx OF s = 20); +++ ASSERT (xxx OF s = 20); +++ ASSERT ((x) = 20); +++ ASSERT ((xx) = 20); +++ ASSERT ((xxx) = 20); +++ ASSERT (x OF s + 1 = 11); +++ ASSERT (xx OF s + 1 = 21); +++ ASSERT (xxx OF s + 1 = 21); +++ ASSERT ((x OF s + 1) = 11); +++ ASSERT ((xx OF s + 1) = 21); +++ ASSERT ((xxx OF s + 1) = 21); +++ ASSERT ((x OF s := x) = 20); +++ ASSERT ((xx OF s := xx) = 20); +++ ASSERT ((xxx OF s := xxx) = 20); +++ ASSERT ((x OF s := x) + 1 = 21); +++ ASSERT ((xx OF s := xx) + 1 = 21); +++ ASSERT ((xxx OF s := xxx) + 1 = 21) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/deref-8.a68 ++@@ -0,0 +1,53 @@ +++# { dg-options "-fstropping=upper" } # +++# Dereferencing of struct fields. Version with sub-names and +++ explicit assignations instead of initialization in variable declaration. # +++BEGIN MODE S = STRUCT (INT x, REF INT xx, REF REF INT xxx); +++ +++ INT x := 10; +++ REF INT xx := x; +++ REF REF INT xxx := xx; +++ +++ S s; +++ +++ x OF s := x; +++ xx OF s := xx; +++ xxx OF s := xxx; +++ +++ ASSERT (x OF s = 10); +++ ASSERT (xx OF s = 10); +++ ASSERT (xxx OF s = 10); +++ ASSERT ((x) = 10); +++ ASSERT ((xx) = 10); +++ ASSERT ((xxx) = 10); +++ ASSERT (x OF s + 1 = 11); +++ ASSERT (xx OF s + 1 = 11); +++ ASSERT (xxx OF s + 1 = 11); +++ ASSERT ((x OF s + 1) = 11); +++ ASSERT ((xx OF s + 1) = 11); +++ ASSERT ((xxx OF s + 1) = 11); +++ ASSERT ((x OF s := x) = 10); +++ ASSERT ((xx OF s := xx) = 10); +++ ASSERT ((xxx OF s := xxx) = 10); +++ ASSERT ((x OF s := x) + 1 = 11); +++ ASSERT ((xx OF s := xx) + 1 = 11); +++ ASSERT ((xxx OF s := xxx) + 1 = 11); +++ x := 20; +++ ASSERT (x OF s = 10); +++ ASSERT (xx OF s = 20); +++ ASSERT (xxx OF s = 20); +++ ASSERT ((x) = 20); +++ ASSERT ((xx) = 20); +++ ASSERT ((xxx) = 20); +++ ASSERT (x OF s + 1 = 11); +++ ASSERT (xx OF s + 1 = 21); +++ ASSERT (xxx OF s + 1 = 21); +++ ASSERT ((x OF s + 1) = 11); +++ ASSERT ((xx OF s + 1) = 21); +++ ASSERT ((xxx OF s + 1) = 21); +++ ASSERT ((x OF s := x) = 20); +++ ASSERT ((xx OF s := xx) = 20); +++ ASSERT ((xxx OF s := xxx) = 20); +++ ASSERT ((x OF s := x) + 1 = 21); +++ ASSERT ((xx OF s := xx) + 1 = 21); +++ ASSERT ((xxx OF s := xxx) + 1 = 21) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/div-int-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; +++ ASSERT (i / 2 = 5.0); +++ ASSERT (ii / LONG 2 = LONG 5.0); +++ ASSERT (iii / LONG LONG 2 = LONG LONG 5.0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/divab-real-1.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r := 3.14; +++ r DIVAB 2.0; +++ r /:= 2.0; +++ LONG REAL rr := LONG 3.14; +++ rr DIVAB LONG 2.0; +++ rr /:= LONG 2.0; +++ LONG LONG REAL rrr := LONG LONG 3.14; +++ rrr DIVAB LONG LONG 2.0; +++ rrr /:= LONG LONG 2.0 +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/elem-bits-1.a68 ++@@ -0,0 +1,18 @@ +++# { dg-options "-fstropping=upper" } # +++# ELEM for SIZETY BITS # +++BEGIN BITS b = 2r1010; +++ ASSERT ((bits width - 1) ELEM b); +++ ASSERT (NOT ((bits width - 2) ELEM b)); +++ LONG BITS bb = LONG 2r1010; +++ ASSERT ((long bits width - 1) ELEM bb); +++ ASSERT (NOT ((long bits width - 2) ELEM bb)); +++ LONG LONG BITS bbb = LONG LONG 2r1010; +++ ASSERT ((long long bits width - 1) ELEM bbb); +++ ASSERT (NOT ((long long bits width - 2) ELEM bbb)); +++ SHORT BITS ss = SHORT 2r1010; +++ ASSERT ((short bits width - 1) ELEM ss); +++ ASSERT (NOT ((short bits width - 2) ELEM ss)); +++ SHORT SHORT BITS sss = SHORT SHORT 2r1010; +++ ASSERT ((short short bits width - 1) ELEM sss); +++ ASSERT (NOT ((short short bits width - 2) ELEM sss)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/elems-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (ELEMS "foo" = 3); +++ ASSERT (ELEMS "" = 0); +++ ASSERT (1 ELEMS "foo" = 3); +++ ASSERT (1 ELEMS "" = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/elems-2.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Flat and ultra-flat multiples. # +++BEGIN [3,10:3]INT arr; +++ ASSERT (2 ELEMS arr = 0); +++ [1:0]INT arr2; +++ ASSERT (ELEMS arr2 = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/entier-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL x = 3.14, y = 3.80; +++ LONG REAL xx = LONG 3.14, yy = LONG 3.80; +++ LONG LONG REAL xxx = LONG LONG 3.14, yyy = LONG LONG 3.80; +++ ASSERT (ENTIER x = 3 AND ENTIER y = 3); +++ ASSERT (ENTIER xx = LONG 3 AND ENTIER yy = LONG 3); +++ ASSERT (ENTIER xxx = LONG LONG 3 AND ENTIER yyy = LONG LONG 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for SIZETY INTs # +++BEGIN ASSERT (max int /= 0); +++ (INT max int = 10; ASSERT (max int = 10)); +++ ASSERT (long max int >= LENG max int); +++ ASSERT (long long max int >= LENG long max int); +++ ASSERT (min int /= 0); +++ ASSERT (long min int <= LENG min int); +++ ASSERT (long long min int <= LENG long min int) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-2.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for SIZETY REALs # +++BEGIN ASSERT (max real /= 0.0); +++ ASSERT (long max real >= LENG max real); +++ ASSERT (long long max real >= LENG long max real); +++ ASSERT (min real /= 0.0); +++ ASSERT (long min real <= LENG min real); +++ ASSERT (long long min real <= LENG long min real); +++ ASSERT (small real > 0.0); +++ ASSERT (long small real > LONG 0.0); +++ ASSERT (long long small real > LONG LONG 0.0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-3.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for SIZETY BITS # +++BEGIN ASSERT (bits width > 0); +++ ASSERT (long bits width >= bits width); +++ ASSERT (long long bits width >= long bits width); +++ ASSERT (short bits width <= bits width); +++ ASSERT (short short bits width <= short bits width) +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-4.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for pi constants. # +++BEGIN ASSERT (pi > 3.0 AND pi < 4.0); +++ ASSERT (long pi > LONG 3.0 AND long pi < LONG 4.0); +++ ASSERT (long long pi > LONG LONG 3.0 AND long long pi < LONG LONG 4.0) +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-5.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for certain particular characters. # +++BEGIN ASSERT (null character /= blank); +++ ASSERT (max abs char = ABS 16r10ffff) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-6.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for SIZETY BITs # +++BEGIN ASSERT (max bits /= 10r0); +++ # XXX use LENG max bits below # +++ ASSERT (long max bits >= LONG 10r0); +++ ASSERT (long long max bits >= LONG LONG 10r0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-7.a68 ++@@ -0,0 +1,15 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for widths # +++BEGIN ASSERT (int width > 0); +++ ASSERT (long int width > 0); +++ ASSERT (long long int width > 0); +++ ASSERT (short int width > 0); +++ ASSERT (short short int width > 0); +++ ASSERT (real width > 0); +++ ASSERT (long real width > 0); +++ ASSERT (long long real width > 0) +++CO exp width; +++ long exp width; +++ long long exp width; +++CO +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/environment-enquiries-8.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (flip = "T"); +++ ASSERT (flop = "F"); +++ ASSERT (error char = "*"); +++ ASSERT (ABS replacement char = ABS 16rfffd) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/eq-bits-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BITS b, LONG BITS bb = LONG 16rff, LONG LONG BITS bbb; +++ SHORT BITS ss = SHORT 16rff, SHORT SHORT BITS sss; +++ ASSERT (b = 2r0); +++ ASSERT (bb EQ LONG 8r377); +++ ASSERT (bbb = LONG LONG 8r0); +++ ASSERT (ss EQ SHORT 8r377); +++ ASSERT (sss = SHORT SHORT 8r0) +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/eq-char-char-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ("a" = "a") +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/eq-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 12; +++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; +++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; +++ ASSERT (12 = i); +++ ASSERT (ii = LONG 12); +++ ASSERT (iii = LONG LONG 12); +++ ASSERT (s = SHORT 12); +++ ASSERT (ss = SHORT SHORT 12) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/eq-string-1.a68 ++@@ -0,0 +1,16 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; +++ # = # +++ ASSERT ("" = ""); +++ ASSERT ("foo" = foo); +++ ASSERT (NOT (foo = bar)); +++ ASSERT (NOT (foo = quux)); +++ ASSERT (NOT (quux = foo)); +++ # EQ # +++ ASSERT ("" EQ ""); +++ ASSERT ("foo" EQ foo); +++ ASSERT (NOT (foo EQ bar)); +++ ASSERT (NOT (foo EQ quux)); +++ ASSERT (NOT (quux EQ foo)) +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/eq-string-stride-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]CHAR matrix = (("1", "2", "3"), +++ ("4", "5", "6"), +++ ("7", "8", "9")); +++ ASSERT (matrix[1:3,2] = "258") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/execute.exp ++@@ -0,0 +1,37 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# Execute tests, torture testing. +++ +++if $tracelevel then { +++ strace $tracelevel +++} +++ +++load_lib algol68-torture.exp +++load_lib torture-options.exp +++ +++torture-init +++set-torture-options $TORTURE_OPTIONS +++ +++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { +++ # If we're only testing specific files and this isn't one of them, skip it. +++ if ![runtest_file_p $runtests $testcase] then { +++ continue +++ } +++ algol68-torture-execute $testcase +++ set algol68_compile_args "" +++} +++ +++torture-finish ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/factorial-1.a68 ++@@ -0,0 +1,170 @@ +++# { dg-options "-fstropping=upper" } # +++# The Most Contrived Factorial Program +++ By John P. Baker +++ University of Bristol. +++ +++ Published in the Algol Bulletin 42. +++ http://jemarch.net/algol-bulletin-42.pdf +++ +++ Version adapted for GCC. +++# +++ +++BEGIN INT one = 1, two = 2, three = 3, four = 4, five = 5, +++ six = 6, seven = 7, eight = 8, nine = 9, ten = 10, +++ eleven = 11, twelve = 12; +++ INT a = one; +++ PRIO ME=5, LOVE=7, MY=7, LORDS=7, LADIES=7, +++ PIPERS=7, DRUMMERS=7, MAIDS=7, SWANS=7, GEESE=7, +++ GOLD=7, COLLY=7, FRENCH=7, TURTLE=7, PARTRIDGE=6; +++ BOOL sent to := TRUE; +++ OP THE = (BOOL a) BOOL: a, +++ TWELFTH = (INT a) BOOL: a = twelve, +++ ELEVENTH = (INT a) BOOL: a = eleven, +++ TENTH = (INT a) BOOL: a = ten, +++ NINTH = (INT a) BOOL: a = nine, +++ EIGHTH = (INT a) BOOL: a = eight, +++ SEVENTH = (INT a) BOOL: a = seven, +++ SIXTH = (INT a) BOOL: a = six, +++ FIFTH = (INT a) BOOL: a = five, +++ FOURTH = (INT a) BOOL: a = four, +++ THIRD = (INT a) BOOL: a = three, +++ SECOND = (INT a) BOOL: a = two, +++ FIRST = (INT a) BOOL: a = one; +++ OP ME = (BOOL a, INT b) VOID: SKIP; # XXX when transput done (a|print(b)) # +++ OP LOVE = (BOOL a, b) BOOL: (a|b|FALSE), +++ MY = (BOOL a, b) BOOL: a LOVE b; +++ OP AND = (INT a) INT: a; +++ MODE DATE = STRUCT (INT day, month); +++ LOC DATE christmas := (25, 12); +++ OP LORDS = (INT a, b) INT: a * b, +++ LADIES = (INT a, b) INT: a * b, +++ PIPERS = (INT a, b) INT: a * b, +++ DRUMMERS = (INT a, b) INT: a * b, +++ MAIDS = (INT a, b) INT: a * b, +++ SWANS = (INT a, b) INT: a * b, +++ GEESE = (INT a, b) INT: a * b, +++ GOLD = (INT a, b) INT: a * b, +++ COLLY = (INT a, b) INT: a * b, +++ FRENCH = (INT a, b) INT: a * b, +++ TURTLE = (INT a, b) INT: a * b; +++ OP LEAPING = (INT a) INT: a, +++ DANCING = (INT a) INT: a, +++ PIPING = (INT a) INT: a, +++ DRUMMING = (INT a) INT: a, +++ MILKING = (INT a) INT: a, +++ SWIMMING = (INT a) INT: a, +++ LAYING = (INT a) INT: a, +++ RINGS = (INT a) INT: a, +++ BIRDS = (INT a) INT: a, +++ HENS = (INT a) INT: a, +++ DOVES = (INT a) INT: a; +++ OP PARTRIDGE = (INT a, b) INT: a + b; +++ INT in a pear tree = 0; +++ +++ # Now we are ready... # +++ +++ THE FIRST day OF christmas MY TRUE LOVE sent to ME +++ a PARTRIDGE in a pear tree; +++ +++ THE SECOND day OF christmas MY TRUE LOVE sent to ME +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE THIRD day OF christmas MY TRUE LOVE sent to ME +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE FOURTH day OF christmas MY TRUE LOVE sent to ME +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE FIFTH day OF christmas MY TRUE LOVE sent to ME +++ five GOLD RINGS +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE SIXTH day OF christmas MY TRUE LOVE sent to ME +++ six GEESE LAYING +++ five GOLD RINGS +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE SEVENTH day OF christmas MY TRUE LOVE sent to ME +++ seven SWANS SWIMMING +++ six GEESE LAYING +++ five GOLD RINGS +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE EIGHTH day OF christmas MY TRUE LOVE sent to ME +++ eight MAIDS MILKING +++ seven SWANS SWIMMING +++ six GEESE LAYING +++ five GOLD RINGS +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE NINTH day OF christmas MY TRUE LOVE sent to ME +++ nine DRUMMERS DRUMMING +++ eight MAIDS MILKING +++ seven SWANS SWIMMING +++ six GEESE LAYING +++ five GOLD RINGS +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE TENTH day OF christmas MY TRUE LOVE sent to ME +++ ten PIPERS PIPING +++ nine DRUMMERS DRUMMING +++ eight MAIDS MILKING +++ seven SWANS SWIMMING +++ six GEESE LAYING +++ five GOLD RINGS +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE ELEVENTH day OF christmas MY TRUE LOVE sent to ME +++ eleven LADIES DANCING +++ ten PIPERS PIPING +++ nine DRUMMERS DRUMMING +++ eight MAIDS MILKING +++ seven SWANS SWIMMING +++ six GEESE LAYING +++ five GOLD RINGS +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ THE TWELFTH day OF christmas MY TRUE LOVE sent to ME +++ twelve LORDS LEAPING +++ eleven LADIES DANCING +++ ten PIPERS PIPING +++ nine DRUMMERS DRUMMING +++ eight MAIDS MILKING +++ seven SWANS SWIMMING +++ six GEESE LAYING +++ five GOLD RINGS +++ four COLLY BIRDS +++ three FRENCH HENS +++ two TURTLE DOVES AND +++ a PARTRIDGE in a pear tree; +++ +++ SKIP +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/flat-assignation-1.a68 ++@@ -0,0 +1,7 @@ +++{ Assigning to the flexible name replaces the descriptor +++ as well as the elements. } +++begin [10:0]int flat1; +++ flex[10:-10]int flat2; +++ flat2 := flat1; +++ assert (UPB flat2 = 0 AND LWB flat2 = 10) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/flat-assignation-2.a68 ++@@ -0,0 +1,8 @@ +++{ Assigning to the flexible name replaces the descriptor +++ as well as the elements. } +++begin [1:20,10:0]int flat1; +++ flex[100:200,10:-10]int flat2; +++ flat2 := flat1; +++ assert (1 UPB flat2 = 20 AND 1 LWB flat2 = 1); +++ assert (2 UPB flat2 = 0 AND 2 LWB flat2 = 10) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/flex-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN FLEX[3]INT list := (1,2,3); +++ list[2] := 20; +++ ASSERT (list[2] = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/flex-2.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Rowing to flexible rows. # +++BEGIN FLEX[]INT list = 10; +++ ASSERT (list[1] = 10); +++ FLEX[,]INT table = 10; +++ ASSERT (table[1,1] = 10) +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/flex-3.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Slicing flexible names. # +++BEGIN FLEX[]INT list = (1,2,3); +++ FLEX[]INT sliced = list[2:3]; +++ ASSERT (LWB sliced = 1 AND UPB sliced = 2); +++ ASSERT (sliced[1] = 2 AND sliced[2] = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/flex-4.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Rowing to flexible rows. # +++BEGIN FLEX[3]INT list := (1,2,3); +++ list := (10,20,30,40); +++ ASSERT (list[4] = 40) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/flex-5.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN FLEX[1:0]INT a; +++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0); +++ a := (1,2,3); +++ ASSERT (LWB a = 1 AND UPB a = 3 AND a[1] = 1 AND a[2] = 2 AND a[3] = 3); +++ a := (10,a[2],a[3]); +++ ASSERT (LWB a = 1 AND UPB a = 3 AND a[1] = 10 AND a[2] = 2 AND a[3] = 3); +++ a := 100; +++ ASSERT (LWB a = 1 AND UPB a = 1 AND a[1] = 100); +++ a := (); +++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/formula-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN OP JORL = (INT a, b) INT: a + b; +++ OP JORL = (REAL a, b) REAL: a + b; +++ OP JORL = ([]CHAR s) INT: ELEMS s; +++ PRIO JORL = 6; +++ ASSERT (10 JORL 20 = 30); +++ ASSERT (REAL r = 3.14 JORL REAL (1); r > 4.13 AND r < 4.15); +++ ASSERT (JORL "foo" = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/formula-2.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i; +++ PROC side = INT: (i := 1; i := 2; i); +++ INT res = side + side; +++ # Can be either due to collateral elaboration in the formula above. # +++ ASSERT (res = 3 OR res = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/fsize-1.a68 ++@@ -0,0 +1,2 @@ +++begin assert (fsize (-1) = - long long 1) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/ge-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 12; +++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; +++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; +++ ASSERT (i >= 10); +++ ASSERT (ii GE LONG 10); +++ ASSERT (iii >= LONG LONG 12); +++ ASSERT (s >= SHORT 12); +++ ASSERT (ss >= SHORT SHORT 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/ge-string-stride-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]CHAR matrix = (("1", "0", "1"), +++ ("4", "0", "4"), +++ ("7", "0", "7")); +++ ASSERT (matrix[1:3,1] >= matrix[1:3,3]); +++ ASSERT (("1","4","7") >= matrix[1:3,3]) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-flex-1.a68 ++@@ -0,0 +1,10 @@ +++begin flex[10:-10]int je; +++ int num_fields = 3; +++ assert (UPB je = -10 AND LWB je = 10 AND ELEMS je = 0); +++ +++ [1:num_fields][1:num_fields]string fields; +++ for i to num_fields +++ do for j to num_fields +++ do assert (fields[i][j] = "") od +++ od +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT jorl; +++ REF INT var = HEAP INT; +++ var := jorl := 10; +++ ASSERT (var = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT jorl; +++ REF INT var := HEAP INT; +++ var := jorl := 10; +++ ASSERT (var = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-3.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT jorl; +++ INT var := HEAP INT := 15; # The generated name goes away # +++ ASSERT (var = 15) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-bool-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REF BOOL x = HEAP BOOL; +++ ASSERT (x = FALSE); +++ x := TRUE; +++ ASSERT (x = TRUE) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-int-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REF INT x = HEAP INT := 4; +++ ASSERT (x = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-real-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REF REAL x = HEAP REAL := 4; +++ ASSERT (x > 3.9 AND x < 4.1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN HEAP STRUCT(INT i, REAL r) foo; +++ ASSERT (i OF foo = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-2.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN HEAP STRUCT([10]INT i, REAL r) foo; +++ FOR i FROM LWB i OF foo TO UPB i OF foo +++ DO ASSERT ((i OF foo)[i] = 0) OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-heap-struct-3.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN HEAP STRUCT([10]INT i, STRING s) foo; +++ FOR i FROM LWB i OF foo TO UPB i OF foo +++ DO ASSERT ((i OF foo)[i] = 0) OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-loc-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT jorl; +++ REF INT var = LOC INT; +++ var := jorl := 10; +++ ASSERT (var = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-loc-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT jorl; +++ REF INT var := LOC INT; +++ var := jorl := 10; +++ ASSERT (var = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-loc-3.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT jorl; +++ INT var := LOC INT := 15; # The generated name goes away # +++ ASSERT (var = 15) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-loc-4.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); +++ +++ NODE top := (10, NIL); +++ next OF top := LOC NODE := (20, NIL); +++ ASSERT (code OF top = 10); +++ ASSERT (code OF next OF top = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-multiple-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE JORL = [(INT x; x + 1)]INT; +++ JORL xx; +++ ASSERT (ELEMS xx = 1 AND xx[1] = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-union-1.a68 ++@@ -0,0 +1,17 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN UNION(INT,REAL,[]INT,CHAR) datux; +++ ASSERT (CASE datux +++ IN (INT): 10, +++ (REAL): 20, +++ (CHAR): 30, +++ ([]INT): 40 +++ ESAC = 0); +++ []INT ja = (1,2,3); +++ datux := ja; +++ ASSERT (CASE datux +++ IN (INT): 10, +++ (REAL): 20, +++ (CHAR): 30, +++ ([]INT): 40 +++ ESAC = 40) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-union-2.a68 ++@@ -0,0 +1,20 @@ +++# { dg-options "-fstropping=upper" } # +++# pr UPPER pr # +++BEGIN [10]UNION(INT,REAL,[]INT,CHAR) datux; +++ FOR i FROM LWB datux TO UPB datux +++ DO ASSERT (CASE datux[i] +++ IN (INT): 10, +++ (REAL): 20, +++ (CHAR): 30, +++ ([]INT): 40 +++ ESAC = 0); +++ []INT ja = (1,2,3); +++ datux[i] := ja; +++ ASSERT (CASE datux[i] +++ IN (INT): 10, +++ (REAL): 20, +++ (CHAR): 30, +++ ([]INT): 40 +++ ESAC = 40) +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gen-union-3.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++# An union generated from SKIP has -1 as overhead. # +++BEGIN MODE JSONVAL = UNION (JSONOBJ,JSONSTR), +++ JSONSTR = STRING, +++ JSONOBJ = STRUCT (REF JSONFLD fields), +++ JSONFLD = STRUCT (JSONVAL value, REF JSONFLD next); +++ +++ JSONFLD fields; +++ ASSERT (CASE value OF fields +++ IN (JSONSTR s): "string", +++ (JSONOBJ o): "object" +++ OUT "fuckyou" +++ ESAC = "fuckyou") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/goto-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 0; +++beg: IF (i < 5) +++ THEN i +:= 1; +++ GOTO beg +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/goto-2.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN GOTO end; +++ ASSERT(FALSE); +++end: SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/goto-3.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN +++ INT i := 0; +++ beginning: +++ IF (i < 5) THEN +++ i +:= 1; +++ GO TO beginning +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/goto-4.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN +++ INT i := 0; +++ beginning: +++ IF (i < 5) THEN +++ i +:= 1; +++ beginning +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/goto-5.a68 ++@@ -0,0 +1,20 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC is prime = (INT m) BOOL: +++ BEGIN IF m < 2 +++ THEN puts ("program terminated because m is less than 2\n"); +++ GOTO stop +++ FI; +++ +++ BOOL factor found := NOT (ODD m OR m = 2); +++ FOR i FROM 3 BY 2 TO m - 1 WHILE NOT factor found +++ DO factor found := m MOD i = 0 OD; +++ factor found +++ END; +++ +++ ASSERT (is prime (1)); +++ ASSERT (is prime (3)); +++ ASSERT (is prime (71)); +++ ASSERT (is prime (97)); +++ is prime (0); +++ ASSERT (FALSE) # Should jump to stop in the standard postlude. # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gt-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 12; +++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; +++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; +++ ASSERT (i > 10); +++ ASSERT (ii GT LONG 10); +++ ASSERT (iii > LONG LONG 10); +++ ASSERT (s > SHORT 10); +++ ASSERT (ss > SHORT SHORT 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/gt-string-stride-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]CHAR matrix = (("1", "0", "1"), +++ ("4", "0", "4"), +++ ("7", "0", "6")); +++ ASSERT (matrix[1:3,1] > matrix[1:3,3]); +++ ASSERT (("1","4","7") > matrix[1:3,3]) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/i-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN COMPL z = 4I5; +++ LONG COMPL zz = LONG 4 I LONG 6; +++ LONG LONG COMPL zzz = LONG LONG 4 I LONG LONG7; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/i-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN COMPL z = 4.0I5.0; +++ LONG COMPL zz = LONG 4.0 I LONG 6.0; +++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identification-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC a = REAL: b := c; +++ REAL b := 1, c := 2; +++ REAL x := a; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identification-2.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++# The identification of c in the assignation marked with XXX works. +++ In some Algol 68 systems the assignation may fail or result in UB, +++ because the storage of the REF REAL c doesn't exist yet. In GNU +++ Algol 68 this works and the value yielded by c is guaranteed to be +++ zero. +++# +++ +++BEGIN REAL b; +++ b := c; # XXX # +++ ASSERT (b = 0); +++ REAL c; +++ c := b +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx = x := 20; +++ ASSERT (xx = 20); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx = x; +++ ASSERT (xx = 10); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-3.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx = (x := 20); +++ ASSERT (xx = 20); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-4.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx = ((x)); +++ ASSERT (xx = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-5.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE FOO = STRUCT (STRING s, INT i); +++ FOO f1 = ("foo", 10); +++ ASSERT (i OF f1 = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT foo = (1,2,3); +++ ASSERT (ELEMS foo = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-2.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [][]INT foo = ((1,2,3),(4,5,6)); +++ ASSERT (ELEMS foo = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-3.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [3]INT a := (1,2,3); +++ REF[]INT nn = a; # No copy happens here. # +++ nn[1] := 200; +++ ASSERT (a[1] = 200) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-5.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [:]INT foo = (1,2,3); +++ ASSERT (ELEMS foo = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT a = (); +++ ASSERT (UPB a = 0); +++ ASSERT (LWB a = 1); +++ ASSERT (ELEMS a = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-2.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,,]INT a = (); +++ ASSERT (1 UPB a = 0); +++ ASSERT (1 LWB a = 1); +++ ASSERT (1 ELEMS a = 0); +++ ASSERT (2 UPB a = 0); +++ ASSERT (2 LWB a = 1); +++ ASSERT (2 ELEMS a = 0); +++ ASSERT (3 UPB a = 0); +++ ASSERT (3 LWB a = 1); +++ ASSERT (3 ELEMS a = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-3.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC foo = ([]INT a) VOID: (ASSERT (ELEMS a = 0)); +++ foo ([]INT()) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-multiple-empty-4.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC foo = ([]INT a) VOID: (ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0)); +++ foo (()) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/identity-declaration-struct-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++# An identity declaration shall make a copy of the struct value being +++ ascribed. # +++BEGIN MODE FOO = STRUCT (STRING s, INT n); +++ FOO f1 := ("foo", 10); +++ FOO f2 = f1; +++ f1 := ("bar", 20); +++ ASSERT (n OF f1 = 20); +++ ASSERT (n OF f2 = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/infinity-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN infinity; +++ minus infinity +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/le-ge-bits-1.a68 ++@@ -0,0 +1,17 @@ +++# { dg-options "-fstropping=upper" } # +++# <= and => for SIZETY BITS # +++BEGIN ASSERT (16rff <= 16rffff); +++ ASSERT (2r101 LE 2r111); +++ ASSERT (2r111 >= 2r101); +++ ASSERT (16rffff GE 16rff); +++ +++ ASSERT (LONG 16rff <= LONG 16rffff); +++ ASSERT (LONG 2r101 LE LONG 2r111); +++ ASSERT (LONG 2r111 >= LONG 2r101); +++ ASSERT (LONG 16rffff GE LONG 16rff); +++ +++ ASSERT (LONG LONG 16rff <= LONG LONG 16rffff); +++ ASSERT (LONG LONG 2r101 LE LONG LONG 2r111); +++ ASSERT (LONG LONG 2r111 >= LONG LONG 2r101); +++ ASSERT (LONG LONG 16rffff GE LONG LONG 16rff) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/le-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 12; +++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; +++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; +++ ASSERT (i <= 13); +++ ASSERT (ii LE LONG 13); +++ ASSERT (iii <= LONG LONG 13); +++ ASSERT (s <= SHORT 12); +++ ASSERT (ss <= SHORT SHORT 13) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/le-string-stride-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]CHAR matrix = (("1", "Z", "1"), +++ ("4", "Y", "4"), +++ ("7", "X", "9")); +++ ASSERT (matrix[1:3,1] <= matrix[1:3,3]); +++ ASSERT (("1","4","9") <= matrix[1:3,3]) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-bits-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# SHORTEN and LENG on SIZETY BITS # +++BEGIN ASSERT (LENG 16rff = LONG 16rff); +++ ASSERT (SHORTEN LONG 16rffff = 16rffff); +++ ASSERT (LENG LONG 16rffff = LONG LONG 16rffff); +++ ASSERT (SHORTEN LONG LONG 16rffff = LONG 16rffff) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-ints-1.a68 ++@@ -0,0 +1,27 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for SIZETY INTs # +++BEGIN # LENG # +++ (SHORT SHORT INT iii = short short max int; ASSERT (LENG iii = LENG short short max int)); +++ (SHORT INT ii = short max int; ASSERT (LENG ii = LENG short max int)); +++ (INT i = max int; ASSERT (LENG i = LENG max int)); +++ (LONG INT ii = long max int; ASSERT (LENG ii = LENG long max int)); +++ # SHORTEN # +++ (SHORT INT i = SHORT 10; SHORT SHORT INT ii = SHORT SHORT 100; ASSERT (ii + SHORTEN i = SHORT SHORT 110)); +++ IF int shorths > 2 +++ THEN (SHORT INT ii = LENG short short max int - SHORT 2; +++ ASSERT (SHORTEN ii = short short max int - SHORT SHORT 2)); +++ (SHORT INT ii = LENG short short max int + SHORT 1; ASSERT (SHORTEN ii = short short max int)); +++ (SHORT INT ii = LENG short short min int - SHORT 1; ASSERT (SHORTEN ii = short short min int)) +++ FI; +++ (INT i = LENG short max int - 2; ASSERT (SHORTEN i = SHORTEN max int - SHORT 2)); +++ (INT i = LENG short max int + 1; ASSERT (SHORTEN i = SHORTEN max int)); +++ (INT i = LENG short min int - 1; ASSERT (SHORTEN i = SHORTEN min int)); +++ (LONG INT ii = LENG max int - LONG 2; ASSERT (SHORTEN ii = max int - 2)); +++ (LONG INT ii = LENG max int + LONG 1; ASSERT (SHORTEN ii = max int)); +++ (LONG INT ii = LENG min int - LONG 1; ASSERT (SHORTEN ii = min int)); +++ IF int lengths > 2 +++ THEN (LONG LONG INT ii = LENG long max int - LONG LONG 2; ASSERT (SHORTEN ii = long max int - LONG 2)); +++ (LONG LONG INT ii = LENG long max int + LONG LONG 1; ASSERT (SHORTEN ii = long max int)); +++ (LONG LONG INT ii = LENG long min int - LONG LONG 1; ASSERT (SHORTEN ii = long min int)) +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/leng-shorten-reals-1.a68 ++@@ -0,0 +1,17 @@ +++# { dg-options "-fstropping=upper" } # +++# Environment enquiries for SIZETY REALs # +++BEGIN # LENG # +++ (REAL i = max real; ASSERT (LENG i = LENG max real)); +++ (LONG REAL ii = long max real; ASSERT (LENG ii = LENG long max real)); +++ +++ # SHORTEN # +++ (LONG REAL ii = LENG max real - LONG 2.0; ASSERT (SHORTEN ii = max real - 2.0)); +++ (LONG REAL ii = LENG max real + LONG 1.0; ASSERT (SHORTEN ii = max real)); +++ (LONG REAL ii = LENG min real - LONG 1.0; ASSERT (SHORTEN ii = min real)); +++ IF (long long max real > LENG long max real) +++ THEN (LONG LONG REAL ii = LENG long max real - LONG LONG 2.0; +++ ASSERT (SHORTEN ii = long max real - LONG 2.0)); +++ (LONG LONG REAL ii = LENG long max real + LONG LONG 1.0; ASSERT (SHORTEN ii = long max real)); +++ (LONG LONG REAL ii = LENG long min real - LONG LONG 1.0; ASSERT (SHORTEN ii = long min real)) +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/lengths-shorths-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (int lengths > 0); +++ ASSERT (int shorths > 0); +++ ASSERT (bits lengths > 0); +++ ASSERT (bits shorths > 0); +++ ASSERT (real lengths > 0); +++ ASSERT (real shorths > 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/lisp-1.a68 ++@@ -0,0 +1,25 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT num ints := 0, num chars := 0; +++ PROC collect stats = (REF CONS tree) VOID: +++ BEGIN REF CONS e := tree; +++ WHILE REF CONS (e) ISNT NIL +++ DO CASE car OF e +++ IN (CHAR c): num chars +:= 1, +++ (INT): num ints +:= 1, +++ (REF CONS s): collect stats (s) +++ ESAC; +++ e := cdr OF e +++ OD +++ END; +++ MODE ATOM = UNION (CHAR, INT); +++ MODE CONS = STRUCT (UNION (ATOM, REF CONS) car, REF CONS cdr); +++ PROC list = ([]UNION (ATOM, REF CONS) item) REF CONS: +++ BEGIN REF CONS a := NIL; +++ FOR i FROM UPB item BY -1 TO 1 +++ DO a := HEAP CONS := (item[i], a) OD; +++ a +++ END; +++ REF CONS expression := list (("X", "+", list (("Y", "x", 2)))); +++ collect stats (expression); +++ ASSERT (num ints = 1 AND num chars = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/lisp-2.a68 ++@@ -0,0 +1,21 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT num constants := 0, num vars := 0, num operators := 0; +++ PROC collect stats = (REF EXPRESSION expr) VOID: +++ BEGIN CASE left OF expr +++ IN (INT): num constants +:= 1, +++ (CHAR): num vars +:= 1, +++ (REF EXPRESSION s): collect stats (s) +++ ESAC; +++ num operators +:= 1; +++ CASE right OF expr +++ IN (INT): num constants +:= 1, +++ (CHAR): num vars +:= 1, +++ (REF EXPRESSION s): collect stats (s) +++ ESAC +++ END; +++ MODE OPERAND = UNION (CHAR,INT,REF EXPRESSION), +++ EXPRESSION = STRUCT (OPERAND left, CHAR operator, OPERAND right); +++ REF EXPRESSION expression := HEAP EXPRESSION := ("X", "+", HEAP EXPRESSION := ("Y", "x", 2)); +++ collect stats (expression); +++ ASSERT (num constants = 1 AND num vars = 2 AND num operators = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/ln-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 1.0; +++ LONG REAL rr = LONG 2.0; +++ LONG LONG REAL rrr = LONG LONG 60.0; +++ ASSERT (ln (r) = 0.0); +++ long ln (rr); +++ long long ln (rrr) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/log-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 1.0; +++ LONG REAL rr = LONG 2.0; +++ LONG LONG REAL rrr = LONG LONG 60.0; +++ ASSERT (log (r) = 0.0); +++ long log (rr); +++ long long log (rrr) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 0; +++ DO i +:= 1; IF i = 5 THEN exit FI +++ OD; +++exit: ASSERT (i = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-10.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 0, n := 2; +++ FOR a FROM n BY 2 TO n + 2 DO i +:= a OD; +++ ASSERT (i = 2 + 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-11.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Negative steps towards minus infinity. # +++BEGIN INT i := 0, n := -5; +++ BY -1 TO n - 1 DO i -:= 1 OD; +++ ASSERT (i = -8) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-12.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 0, n := 5; +++ FOR a TO n WHILE a < 3 DO i +:= 1 OD; +++ ASSERT (i = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-13.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 0; +++ FOR a FROM 2 BY 1 WHILE a <= 10 +++ DO i +:= 1 OD; +++ ASSERT (i = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-14.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# The while-part shall not be elaborated if the iterator is exhausted. # +++BEGIN STRING s = "abc", INT j := 0; +++ FOR i TO UPB s WHILE s[i] /= "x" +++ DO j +:= 1 OD; +++ ASSERT (j = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-2.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# While loop. # +++BEGIN INT i := 0; +++ WHILE INT j = 5; i < j +++ DO i +:= 1 OD; +++ ASSERT (i = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-3.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++# Nested loops. # +++BEGIN INT i := 10, res := 0; +++ WHILE i > 0 +++ DO INT j := 10; +++ WHILE j > 0 +++ DO res +:= 1; +++ j -:= 1 +++ OD; +++ ASSERT (j = 0); +++ i -:= 1; +++ OD; +++ ASSERT (i = 0 AND res = 100) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-4.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++# Nested loops and j on outside range. # +++BEGIN INT i := 10, j := 10, res := 0; +++ WHILE i > 0 +++ DO j := 10; +++ WHILE j > 0 +++ DO res +:= 1; +++ j -:= 1 +++ OD; +++ i -:= 1 +++ OD; +++ ASSERT (i = 0 AND j = 0 AND res = 100) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-5.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Skip in loop. # +++BEGIN INT i := 0; +++ WHILE i +:= 1; i < 10 +++ DO SKIP OD; +++ ASSERT (i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-6.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# The range of the while-part shall cover the do-part. # +++BEGIN INT i := 0; +++ WHILE INT incr = 2; i < 10 +++ DO i +:= incr OD; +++ ASSERT (i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-7.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 0, n := 5; +++ TO n + 1 DO i +:= 1 OD; +++ ASSERT (i = 6) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-8.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 0, n := 2; +++ FOR a TO n + 1 DO i +:= a OD; +++ ASSERT (i = 1 + 2 + 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-9.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 0, n := 2; +++ FOR a FROM n TO n + 2 DO i +:= a OD; +++ ASSERT (i = 2 + 3 + 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/loop-overflow-underflow.a68 ++@@ -0,0 +1,55 @@ +++{ Test for overflow/underflow in loops with implicit and explicit +++ iterators. } +++ +++begin int count; +++ +++ { Overflow. } +++ count := 0; +++ by 1 while true do count +:= 1 od; +++ assert (count = max_int); +++ +++ count := 0; +++ from max_int do count +:= 1 od; +++ assert (count = 1); +++ count := 0; +++ +++ by max_int do count +:= 1 od; +++ assert (count = 1); +++ +++ count := 0; +++ for i by max_int do count +:= 1 od; +++ assert (count = 1); +++ +++ count := 0; +++ by max_int % 2 do count +:= 1 od; +++ assert (count = 3); +++ +++ count := 0; +++ by max_int - 1 do count +:= 1 od; +++ assert (count = 2); +++ +++ { Underflow. } +++ count := 0; +++ by -1 while true do count +:= 1 od; +++ assert (count = -min_int + 2); +++ +++ count := 0; +++ from min_int by -1 do count +:= 1 od; +++ assert (count = 1); +++ count := 0; +++ +++ by min_int do count +:= 1 od; +++ assert (count = 2); +++ +++ count := 0; +++ for i by min_int do count +:= 1 od; +++ assert (count = 2); +++ +++ count := 0; +++ by min_int % 2 do count +:= 1 od; +++ assert (count = 3); +++ +++ count := 0; +++ by min_int + 1 do count +:= 1 od; +++ assert (count = 2) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/lt-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 12; +++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; +++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; +++ ASSERT (i < 13); +++ ASSERT (ii LT LONG 13); +++ ASSERT (iii < LONG LONG 13); +++ ASSERT (s < SHORT 13); +++ ASSERT (ss < SHORT SHORT 13) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/lt-string-stride-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]CHAR matrix = (("1", "Z", "1"), +++ ("4", "Y", "4"), +++ ("7", "X", "9")); +++ ASSERT (matrix[1:3,1] < matrix[1:3,3]); +++ ASSERT (("1","4","0") < matrix[1:3,3]) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/lwb-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (LWB "foo" = 1); +++ ASSERT (LWB "" = 1); +++ ASSERT (1 LWB "foo" = 1); +++ ASSERT (1 LWB "" = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/execute.exp ++@@ -0,0 +1,29 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++if $tracelevel then { +++ strace $tracelevel +++} +++ +++load_lib algol68-torture.exp +++ +++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { +++ # If we're only testing specific files and this isn't one of them, skip it. +++ if ![runtest_file_p $runtests $testcase] then { +++ continue +++ } +++ algol68-torture-execute $testcase +++} ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-1.3a.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL e = 2.7182818284; REAL circum; +++ circum := 2 * pi * e +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-1.3c.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := 10, result; +++ result := n * (n + 1) * (2 * n + 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.1a.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++# Integer denotations. # +++BEGIN 000; 43; 456; 0 +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.2a.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Real denotations. # +++BEGIN .5; 0.5; 2.0; .001; +++ 2.3e1; 2e0; 2e+0; 2e-0 +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.2.3a.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++# Character denotations. # +++BEGIN "X"; "a"; "1"; "."; " " +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3a.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Identifiers. # +++BEGIN INT circum, r, ibm, a1, log2, begin; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3b.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Identity declarations. # +++BEGIN REAL e = 2.7182818284, log2 = 0.618, INT ten = 10, g = 32; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3c.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Equivalent declarations. # +++BEGIN REAL x = 2.34; +++ REF INT n = LOC INT, REF INT m = LOC INT; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.3e.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Initialisation. # +++BEGIN CHAR firstchar := "A", lastchar := "Z", currentchar; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2a.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Ordinary division. # +++BEGIN ASSERT (4/2 = 2.0); +++ INT a = 4, b = 7; +++ a/b # Yields a value of mode REAL. # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2b.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++# Integer division. The operator OVER (%) performs integer +++ division with truncation. # +++BEGIN ASSERT (4 % 2 = 2); +++ ASSERT (4 OVER 2 = 2); +++ ASSERT (5 % 3 = 1); +++ ASSERT (5 OVER 3 = 1); +++ INT n = -5, m = -3; +++ ASSERT (n % 3 = -1); +++ ASSERT (n % m = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.2c.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# Integer modulus. The operator MOD (%*) performs integer modulus +++ with truncation. # +++BEGIN ASSERT (0 MOD 4 = 0); +++ ASSERT (0 %* 4 = 0); +++ ASSERT (5 %* 3 = 2); +++ INT m = 5, n = -3; +++ ASSERT (m MOD n = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.4.3a.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++# Exponentiation. # +++BEGIN ASSERT (2 ** 3 = 8) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.6a.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Comparison operators. # +++BEGIN REAL x = 2.7, y = 3.6, z = 4.7; +++ ASSERT (x < y); +++ ASSERT ("B" /= "C") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.6b.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Comparison operators and boolean operators. # +++BEGIN INT a = 4, b = 5, c = 9, REAL x = 4.7, y = 5.7, z = 6.7; +++ ASSERT (NOT (x + y < z) AND a + b = c) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.7d.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Widening. # +++BEGIN REAL x := 4, y := 7, z := 2.7; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.7e.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Dereferencing and widening. # +++BEGIN INT n, REAL x = n; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.8a.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Examples of assignations. # +++BEGIN REAL pi = 3.14, e = 2.71, INT n = 10, REAL circum, INT result; +++ circum := 2 * pi * e; +++ result := n * (n + 1) * ( 2 * n + 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.8b.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Coercions and assignations. # +++BEGIN REAL y, INT n, m := 1; +++ y := n % m +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-2.9.1a.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Arithmetical assignment operators. # +++BEGIN INT m, n := 4; +++ n PLUSAB 1; +++ ASSERT (n = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.5.1a.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++# Equivalence. # +++BEGIN INT m := 3; REF INT p = m; +++ ASSERT (m = 3 AND p = 3); +++ BEGIN INT m := 100; +++ ASSERT (m = 100 AND p = 3); +++ m -:= 1; p +:= 1 +++ END; +++ ASSERT (m = 4 AND p = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.5d.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# On the availability and accessibility of space. # +++BEGIN INT m := 3, INT five = 5; +++ ASSERT (m = 3); +++ BEGIN INT m := 100; CHAR five = "5"; +++ m +:= 1 +++ END; +++ ASSERT (m = 3 AND five = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.7.2a.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT p := 10, q := 12; +++ FROM p TO q DO (p +:= 1, q +:= 1) OD; +++ ASSERT (p = 13 AND q = 15) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.8.2a.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++# Using case clauses. # +++BEGIN PROC is divisible = (INT m) BOOL: +++ BEGIN BOOL divisible := FALSE; +++ FOR i TO 4 WHILE NOT divisible +++ DO INT k = (i|3, 5, 7, 11); +++ divisible := m MOD k = 0 +++ OD; +++ divisible +++ END; +++ ASSERT (is divisible (50)); +++ ASSERT (is divisible (253)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-3.9.1b.a68 ++@@ -0,0 +1,16 @@ +++# { dg-options "-fstropping=upper" } # +++# Using jumps. # +++BEGIN INT a, INT b = 0, c = 2, d = 10, BOOL e = TRUE; +++ CO The following program using jumps is equivalent to: +++ FOR a FROM b BY c TO d WHILE e DO SKIP OD +++ CO +++ BEGIN INT j := b, INT k = c, m = d; +++ next: IF (k > 0 AND j <= m) OR (k < 0 AND j >= m) OR k = 0 +++ THEN INT i = j; +++ IF e +++ THEN SKIP; j +:= k; GOTO next +++ FI +++ FI; +++ ASSERT (j = 12) +++ END +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.2a.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Monadic lwb and upb. # +++BEGIN INT n := 4; [n]INT a; +++ ASSERT (UPB a = 4); +++ n := 6; +++ ASSERT (UPB a = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.3a.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# Dyadic lwb an upb. # +++BEGIN [0:10,-4:100]REAL xx; +++ ASSERT (1 LWB xx = 0); +++ ASSERT (1 UPB xx = 10); +++ ASSERT (1 UPB xx = UPB xx); +++ ASSERT (2 LWB xx = -4); +++ ASSERT (2 UPB xx = 100) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6a.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [4]REAL x2 := (6, 7, 8, 9); +++ ASSERT (x2[2] > 6.9); +++ ASSERT (x2[2] < 7.1); +++ x2 := (1, 1, 1, 1); +++ ASSERT(x2[2] > 0.9); +++ ASSERT(x2[2] < 1.1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6b.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Multi-dimensional row displays. # +++BEGIN [2,3]INT aa := ((1,2,3),(4,5,6)); +++ [2,3,4]REAL bb := (((1,2,3,4), (5,6,7,8), (9,10,11,12)), +++ ((13,14,15,16),(17,18,19,20),(21,22,2,24))); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.1.6c.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Further row displays. # +++BEGIN [4]INT a, b; +++ [4]INT c := a, d := (1,2,3,0); +++ [2,4]INT ab := (a,b), cd := ((0,0,0,0), b); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6a.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRUCT (INT day, month, year) indep day = (4, 7, 1776); +++ ASSERT (day OF indep day = 4); +++ ASSERT (month OF indep day = 7); +++ ASSERT (year OF indep day = 1776); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6b.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []STRUCT(CHAR letter, INT integer) roman +++ = (("I",1),("V",5),("X",10),("L",50),("C",100)); +++ # XXX letter OF roman should be ("I","V","X","L","C") # +++ # XXX integer OF roman whould be (1,5,10,50,100) # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.2.6d.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++# Multiple values and structures. +++ +++ Having strings of different lenghts would not be valid in a variable +++ declaration, but is acceptable in an identity declaration. +++# +++BEGIN []STRUCT ([]CHAR name, INT age) family = +++ (("JOHN", 3), ("ROBERT", 1), ("CATHERINE", 4)); +++ SKIP +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.1a.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Simple mode declarations. # +++BEGIN MODE INTEGER = INT; +++ MODE Z = INT, R = REAL, B = BOOL, V = VOID; +++ MODE ARRAYA = [100]INT, ARRAYB = [10,2:9]REAL; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.1b.a68 ++@@ -0,0 +1,15 @@ +++# { dg-options "-fstropping=upper" } # +++# Dynamic arrays revisited. # +++BEGIN INT p := 2, q := 10; +++ MODE M = [p:q]INT; +++ M a; +++ ASSERT (LWB a = 2 AND UPB a = 10); +++ q := 4; +++ M b; +++ ASSERT (LWB a = 2 AND UPB a = 10); +++ ASSERT (LWB b = 2 AND UPB b = 4); +++ M c = (1,2,3,4); # M is interpreted as formal declarer. +++ Bounds are ignored. +++ # +++ ASSERT (LWB c = 1 AND UPB c = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-4.3.2a.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Rows of integers. # +++BEGIN [][]INT g = ((1,2,3),(4,5),(6,7,8,9)); +++ ASSERT (UPB g[1] = 3 AND UPB g[2] = 2 AND UPB g[3] = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.2a.a68 ++@@ -0,0 +1,15 @@ +++# { dg-options "-fstropping=upper" } # +++# Procedure declarations I. # +++BEGIN INT x = 10, y = 20, i = 2; +++ PROC xxx = (INT arg) INT: 10; +++ PROC yyy = (INT arg) INT: 20; +++ PROC zzz = (INT arg) INT: 30; +++ PROC(INT)INT f = IF x > y THEN xxx ELSE zzz FI, +++ g = CASE i IN xxx, yyy, zzz ESAC; +++ PROC(INT)INT h := IF x < y THEN xxx ELSE yyy FI; +++ ASSERT (f (100) = 30); +++ ASSERT (g (200) = 20); +++ ASSERT (h (300) = 10); +++ h := yyy; +++ ASSERT (h (300) = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.3a.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++# Using the factorial function in a program # +++BEGIN PROC f = (INT n) INT: +++ BEGIN INT product := 1; +++ FOR i TO n DO product *:= i OD; +++ product +++ END; +++ ASSERT (f(0) = 1); +++ ASSERT (f(1) = 1); +++ ASSERT (f(2) = 2); +++ ASSERT (f(3) = 6) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.3c.a68 ++@@ -0,0 +1,29 @@ +++# { dg-options "-fstropping=upper" } # +++# Procedure declarations III # +++BEGIN # From the ALGOL68 Revised Report. # +++ PROC my char in string = (CHAR c, REF INT i, []CHAR s) BOOL: +++ BEGIN BOOL found := FALSE; +++ FOR k FROM LWB s TO UPB s WHILE NOT found +++ DO (c = s[k] | i := k; found := TRUE) OD; +++ found +++ END; +++ ASSERT ((INT idx := 0; +++ my char in string ("o", idx, "foo") +++ ANDTH idx = 2)); +++ ASSERT (my char in string ("x", LOC INT, "foo") = FALSE); +++ # Swapping function. # +++ PROC swap = (REF INT a, b) VOID: +++ (INT r = a; a := b; b := r); +++ ASSERT ((INT x := 1, y := 2; +++ swap (x, y); +++ x = 2 AND y = 1)); +++ # Euclid's algorithm. # +++ PROC hcf = (INT m, n) INT: +++ BEGIN INT a := m, b := n; +++ IF a < b THEN swap (a, b) FI; +++ WHILE b /= 0 +++ DO INT c = b; b := a MOD b; a := c OD; +++ a +++ END; +++ ASSERT (hcf (10, 20) = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-5.1.5a.a68 ++@@ -0,0 +1,19 @@ +++# { dg-options "-fstropping=upper" } # +++# Recursive procedures. # +++BEGIN PROC f = (INT m, n) INT: +++ IF n = 0 +++ THEN m +++ ELIF m < n +++ THEN f (n, m) +++ ELSE m * f (m % n, n - 1) + n * f (m - 1, n) +++ FI; +++ f (10, 20); +++ PROC a = (INT m, n) INT: +++ IF m = 0 +++ THEN + 1 +++ ELIF n = 0 +++ THEN a (m - 1, 1) +++ ELSE a (m - 1, a (m, n - 1)) +++ FI; +++ a (10, 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2a.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Using AND and OR # +++BEGIN ASSERT ((2r111 AND 2r101) = 2r101); +++ ASSERT ((16rff AND 2r111) = 16r7) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2b.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Comparing objects of mode BITS # +++BEGIN ASSERT (2r1010 <= 2r1110); +++ ASSERT (4r331 >= 8r74); +++ ASSERT (NOT (2r100 >= 2r011)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-6.2.2c.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Using BIN # +++BEGIN ASSERT (BIN 7 = 2r111); +++ INT i = 22; +++ ASSERT ((BITS b = BIN i; ABS (b SHL 3) + ABS (b SHL 1)) = 220) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.1a.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Declarations of flexible names. # +++BEGIN FLEX[1:0]INT n; +++ ASSERT (LWB n = 1 AND UPB n = 0 AND ELEMS n = 0); +++ FLEX[4,6]INT p; +++ ASSERT (1 LWB p = 1 AND 1 UPB p = 4 AND 1 ELEMS p = 4 +++ AND 2 LWB p = 1 AND 2 UPB p = 6 AND 2 ELEMS p = 6) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.1b.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++# Null row displays an string denotations. # +++BEGIN FLEX[4]INT a, FLEX[4,6]INT b, FLEX[10]CHAR c; +++ a := (); +++ ASSERT (LWB a = 1 AND UPB a = 0); +++ b := ((),()); +++ ASSERT (1 LWB b = 1 AND 1 UPB b = 2 +++ AND 2 LWB b = 1 AND 2 UPB b = 0); +++ c := (); +++ c := "" +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.1.3a.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Transient references and declarations. # +++BEGIN FLEX[4,6]INT p; +++ []INT q1 = p[3,]; # Transient name is dereferenced giving []INT # +++ REF FLEX[,]INT q5 = p; # p and q5 are different ways of accessing +++ the same name. # +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.2a.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++# Virtual declarers. # +++BEGIN REF[]INT s; +++ STRUCT ([10]INT a, [4]REF[]INT b) c; +++ UNION (REF FLEX[]INT, PROC(INT)INT) f; +++ FLEX[4][3]INT a; +++ REF FLEX[][]INT aa = LOC FLEX[4][3]INT; +++ [4]FLEX[3]INT b; +++ REF[]FLEX[]INT bb = LOC[4]FLEX[3]INT; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.6a.a68 ++@@ -0,0 +1,23 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := 3, m := 3; +++ REF INT w := n, z := n, REF INT y = n; +++ # Delivers TRUE since y and n deliver the same variable of mode REF +++ INT. No coercions take place. +++ # +++ ASSERT (y :=: n); +++ # Delivers TRUE. here w is dereferenced to yield n. The right +++ hand side is taken to be strong since dereferencing cannot +++ occur in a soft position. +++ # +++ ASSERT (n :=: w); +++ # Similarly delivers TRUE. Strong position is lhs. # +++ ASSERT (w :=: n); +++ # Delivers TRUE. No coercions take place. # +++ ASSERT (y ISNT m); +++ # Delivers true. w gets coerced to REF INT due to the strong +++ context introduced by the cast. No further coercions take place. +++ # +++ ASSERT (REF INT (w) :=: z); +++ # Delives true. No coercions take place. # +++ ASSERT (w :/=: z) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.3.6b.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN +++ [3]INT a := (1,2,3); +++ +++ CO Comparing transient or flex names using an identity relation is +++ undefined. Therefore, a[2:3] :=: a[2:3] is undefined. +++ CO +++ +++ # But the following are defined. # +++ ASSERT (a[1] :=: a[1]); +++ ASSERT (a[1] :/=: a[2]) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcgt/mcgt-7.5.3a.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Declarations involving global generators. # +++BEGIN REF REAL xx; +++ BEGIN REF REAL x = HEAP REAL := 4; +++ xx := x +++ END; +++ ASSERT (xx = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/clau02.a68 ++@@ -0,0 +1,23 @@ +++{ Case conformity. } +++begin mode M = union ([]int, bool, string); +++ proc prpm = ref proc M: heap proc M := M: "aap "; +++ +++ int control := 0; +++ for n to 4 +++ do case case n +++ in true, +++ if false then "aa" else "b " fi, +++ prpm { Gets deprocedured twice to yield a string. } +++ out loc[1:1]int := 1 { Gets dereferenced then copied. } +++ esac +++ in (union(string, bool) sb): +++ (control +:= 1; +++ (sb | (bool b): assert (b), (string s): assert (s = "b " OR s = "aap "))), +++ ([]int i): +++ (control +:= 1; +++ assert (i[1] = 1)) +++ out assert (false) +++ esac +++ od; +++ assert (control = 4) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/clau04.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++# Vacuum. # +++BEGIN ASSERT (LWB []INT BEGIN END = 1); +++ ASSERT (UPB []INT() = 0); +++ CO XXX trimmer ASSERT (UPB([]INT())[1:0] = 0); CO +++ ASSERT (2UPB[,]INT([]INT(puts("here");())) = 0); +++ ASSERT (1UPB[,]INT([]INT(puts("there");())) = 1); +++ ASSERT (2UPB[,]INT(()) = 0); +++ CO runtime error: wrong length CO +++ CO 2UPB[,]INT((),(1)) CO +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/clau05.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++# Test vaccum as string. # +++BEGIN PROC p = (STRING s) VOID: +++ BEGIN ASSERT (LWB s = 1); +++ ASSERT (UPB s = 0) +++ END; +++ +++ p (""); +++ p (()); +++ p (BEGIN END) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/clau07.a68 ++@@ -0,0 +1,21 @@ +++# { dg-options "-fstropping=upper" } # +++# If-, case- and ucase-clauses. # +++BEGIN FOR i +++ DO (i = 1 | 1 |: i = 2 | 2 |: i = 3 | 3 | eo if) OD; +++eo if: +++ +++ FOR i +++ DO (i | 4, 5 |: i - 2 | 6, 7 | eo case) OD; +++eo case: +++ +++ FOR i +++ DO ( (UNION (INT,REAL,CHAR,STRING,BOOL) +++ (i | 1, 1.0, "a", "", TRUE) +++ | (INT): 8, (REAL): 9 +++ |: UNION (CHAR,STRING,BOOL) (i - 2 | "a", "", TRUE) +++ | (CHAR): 10, (STRING): 11 +++ | eo ucase) ) +++ OD; +++eo ucase: +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/clau08.a68 ++@@ -0,0 +1,159 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN stop; # no errors, but loops if not stopped here # +++ +++# A: Statements in the context of a BEGIN block # +++ +++BEGIN label : SKIP; +++ l1:BEGIN SKIP; SKIP END; +++ +++ BEGIN GOTO label; GO TO label END; +++ +++ BEGIN INT a1, a2, a3; +++ l4:FOR i FROM a1BY a2TO a3 DO SKIP OD; +++ FOR i FROM a1BY a2TO a3 DO SKIP OD +++ END; +++ +++ l2:BEGIN BOOL a; +++ IF a THEN SKIP FI; +++ l5:IF a THEN SKIP FI +++ END; +++ +++ BEGIN PROC VOID a; l6: a; a END; +++ +++ l3 : BEGIN PROC (INT) VOID a; INT b; +++ a(b); l7 : a(b) +++ END; +++ +++ BEGIN REAL a; a:= a; a:= a END; +++ +++ BEGIN REF[]REAL a; INT i; +++ l8 : a[i]:=i; a[i]:=i +++ END; +++ +++ BEGIN BEGIN SKIP END; +++ BEGIN SKIP END +++ END +++END; +++ +++# B: Statements in the context of a ( block # +++ +++( label : SKIP; +++ l1:( SKIP; SKIP ); +++ +++ ( GOTO label; GO TO label ); +++ +++ ( INT a1, a2, a3; +++ l4:FOR i FROM a1BY a2TO a3 DO SKIP OD; +++ FOR i FROM a1BY a2TO a3 DO SKIP OD +++ ); +++ +++ l2:( BOOL a; +++ IF a THEN SKIP FI; +++ l5:IF a THEN SKIP FI +++ ); +++ +++ ( PROC VOID a; l6: a; a ); +++ +++ l3 : ( PROC (INT) VOID a; INT b; +++ a(b); l7 : a(b) +++ ); +++ +++ ( REAL a; a:= a; a:= a ); +++ +++ ( REF[]REAL a; INT i; +++ l8 : a[i]:=i; a[i]:=i +++ ); +++ +++ ( ( SKIP ); +++ ( SKIP ) +++ ) +++); +++ +++# C: Statements in the context of IF statement # +++ +++BEGIN BOOL true; +++ +++ IF true THEN SKIP; SKIP FI; +++ +++ IF true THEN SKIP ELSE SKIP; SKIP FI; +++ +++ IF true THEN IF true THEN SKIP FI +++ FI; +++ +++ IF true THEN IF true THEN SKIP FI +++ ELSE SKIP FI; +++ +++ IF true THEN IF true THEN SKIP ELSE SKIP FI +++ FI; +++ +++ IF true THEN IF true THEN SKIP ELSE SKIP FI +++ ELSE SKIP FI; +++ +++ IF true THEN SKIP +++ ELSE IF true THEN SKIP FI +++ FI; +++ +++ IF true THEN SKIP +++ ELSE IF true THEN SKIP ELSE SKIP FI; +++ IF true THEN SKIP FI; SKIP +++ FI +++ +++END; +++ +++# D: Statements in the context of a FOR statement # +++ +++BEGIN INT a1, a2, a3; BOOL true; +++ PROC VOID proc1; PROC (INT) VOID proc2; +++ REAL aa; REF[]REAL bb; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO SKIP; SKIP OD; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO GOTO stop; GOTO stop OD; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO IF true THEN SKIP FI; +++ IF true THEN SKIP FI OD; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO FOR i FROM a1 BY a2 TO a3 +++ DO SKIP OD; +++ FOR i FROM a1 BY a2 TO a3 +++ DO SKIP OD OD; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO proc1; proc1 OD; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO proc2(a1); proc2(a1) OD; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO aa := aa; aa := aa OD; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO bb [i] := a1; bb[i] := a1 OD; +++ +++ FOR i FROM a1 BY a2 TO a3 +++ DO BEGIN SKIP END; +++ BEGIN SKIP END OD +++ +++END; +++ +++# E: Statements in the context of a routine declaration # +++ +++BEGIN BOOL true; INT a1, a2, a3; +++ REF[]INT a4 = a1; REAL a5; +++ PROC a = VOID:SKIP; +++ PROC b = VOID: IF TRUE THEN SKIP FI; +++ PROC c = VOID: FOR i FROM a1 BY a2 TO a3 DO SKIP +++ OD; +++ PROC d = VOID: d; +++ PROC (INT) VOID e = (INT f) VOID: e(f); +++ PROC f = VOID: a5:=a5; +++ PROC g = VOID: a4[a1] := a1; +++ PROC h = VOID: BEGIN SKIP END; +++ +++ SKIP +++END +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/clau09.a68 ++@@ -0,0 +1,82 @@ +++# { dg-options "-fstropping=upper" } # +++# Optimisation correct? # +++BEGIN +++ PROC itoa = (INT i) STRING: +++ BEGIN IF i = 0 +++ THEN "0" +++ ELSE INT n := i; +++ STRING res := (i < 0 | n := -n; "-"); +++ WHILE n /= 0 +++ DO INT rem = n %* 10; +++ res +:= REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0"); +++ n %:= 10 +++ OD; +++ res +++ FI +++ END; +++ +++ puts("\nPrints errors only\n"); +++ +++ PROC puti = (INT i, INT p, q) VOID: +++ IF p /= q THEN puts (itoa (i) + "," + itoa (p) + "," + itoa (q)) FI; +++ +++ PROC putr = (INT i, REAL p, q) VOID: +++ IF p /= q THEN puts (itoa (i) + ", p /= q") FI; +++ +++BEGIN +++ [1:3]INT a; +++ a[1]:=2; a[2]:=3; a[3]:=1; +++ putr(1, 44.9104, +++ (-1.0+(-2.0+(-3.0+(-4.0+2)))) +++ +( +++ (-5.0+(-2.0-(-5.0+(-2.0-7)))) +++ -( +++ a[a[a[a[a[2]]]]] +++ +( +++ a[a[a[a[a[1]]]]] +++ -( +++ a[a[a[a[a[3]]]]] +++ + ( +++ (-1.0*(-2.0*(-3.0*(-4.0*2)))) +++ - ( +++ (-5.0*(-2.0*(-5.0*(-2.0*7)))) +++ * ( +++ 128*(-1.0/(-2.0/(-4.0/(-4.0/2)))) +++ / ( +++ (-10.0/(-5.0/(-5.0/(-2.0/2)))) +++ ** +++ a[a[a[a[a[2]]]]] +++ ** +++ a[a[a[a[a[1]]]]] +++ ** +++ a[a[a[a[a[3]]]]] +++ )))))))) +++ ) +++END; +++ +++BEGIN REAL x; [1:20]REAL a; +++ FOR i FROM 1 BY 1 TO 20 +++ DO a[i] := i-10 OD; +++ x := a[1]+(a[2]+(a[3]+(a[4]+(a[5]+(a[6]+(a[7]+(a[8]+(a[9]+ +++ (a[10]+(a[11]+(a[12]+(a[13]+(a[14]+(a[15]+(a[16]+ +++ (a[17]+(a[18]+(a[19]+(a[20])))))))))))))))))))-9.0; +++ putr(2, 1.0, x) +++END; +++ +++BEGIN +++ +++ [1:10]INT a; +++ +++ FOR i FROM 1 BY 1 TO 9 DO a[i]:=i+1 OD; +++ a[10]:=1; +++ +++ FOR i FROM 1 BY 1 TO 10 +++ DO puti(3, i, a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[a[i +++ ]]]]]]]]]]]]]]]]]]]] +++ ) +++ OD +++END; +++ +++ puts ("\nEnd of tests\n"); +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer01.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ((REAL x := 0; REF[]REAL (x) := 1; x) = 1.0); +++ ASSERT ((INT n := 0; n +:= 1 := 5) = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer02.a68 ++@@ -0,0 +1,20 @@ +++# { dg-options "-fstropping=upper" } # +++# Widening # +++BEGIN +++ FOR i TO 2 DO +++ ASSERT ( +++ CASE i IN TRUE, 2r1 OUT []BOOL(TRUE) ESAC +++ [CASE i IN 1 , bits width OUT SKIP ESAC] +++ ) OD; # TT # +++ +++ INT n := 1; +++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 1.0); +++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 0.0); +++ n := 2; +++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 2.0); +++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 0.0); +++ n := 3; +++ ASSERT ((re OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 3.0); +++ ASSERT ((im OF CASE n IN 1, 2.0, 3 I 5 ESAC) = 5.0) +++ # 1.0 0.0, 2.0 0.0, 3.0 5.0 # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer03.a68 ++@@ -0,0 +1,53 @@ +++# { dg-options "-fstropping=upper" } # +++# Morf versus comorf. # +++BEGIN BOOL canary := FALSE; +++ PROC right = VOID: canary := TRUE, +++ wrong = VOID: (ASSERT (FALSE)), +++ check = VOID: (ASSERT (canary); canary := FALSE); +++ +++ PROC deproc = (STRING mcm) VOID: +++ (puts (mcm); puts ("deproc:")); +++ PROC nodeproc = (STRING mcm) VOID: +++ (puts (mcm); puts ("nodeproc:")); +++ +++ deproc ("selection"); +++ proc OF STRUCT(PROC VOID proc, INT d)(right, SKIP); +++ check; +++ +++ deproc ("slice"); +++ []PROC VOID(right)[1]; +++ check; +++ +++ deproc ("routine text"); +++ PROC VOID: right; +++ check; +++ +++ deproc ("formula"); +++ OP + = (INT i) PROC VOID: right; +1; +++ check; +++ +++ deproc ("call"); +++ ((INT i) PROC VOID: right)(1); +++ check; +++ +++ deproc ("identifier"); +++ right; +++ check; +++ +++ nodeproc ("assignation"); +++ LOC PROC VOID := wrong; +++ +++ nodeproc ("cast"); +++ PROC VOID (wrong); +++ +++ nodeproc ("generator"); +++ LOC PROC VOID; +++ +++ FOR i TO 2 +++ DO IF i = 1 +++ THEN deproc ("balance"); right +++ ELSE nodeproc ("balance"); PROC VOID(wrong) +++ FI; +++ IF i = 1 THEN check FI +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer07.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++# Weak balance. # +++BEGIN COMPL c := (COMPL x:=1; +++ CASE 2 +++ IN NIL, +++ IF [] BOOL (TRUE, FALSE)[2] +++ THEN REF REF [] COMPL: NIL +++ ELSE x +++ FI, +++ LOC PROC REF [] STRUCT (REAL re,im) +++ ESAC # REF [] COMPL = x # [1]:=3; x); +++ ASSERT (re OF c = 3.0); +++ ASSERT (im OF c = 0.0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer08.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# Soft balance. # +++BEGIN ASSERT ((HEAP INT x := 314; +++ CASE 3 +++ IN SKIP, +++ IF x < 0 THEN GOTO stop ELSE REF[]INT: NIL FI, +++ IF x > 0 THEN x ELSE x +:= 1 FI +++ ESAC := 200)[1] = 200) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer09.a68 ++@@ -0,0 +1,16 @@ +++# { dg-options "-fstropping=upper" } # +++# Soft balance. # +++BEGIN ASSERT (CASE 2 +++ IN SKIP, +++ NIL, +++ IF BOOL (SKIP) +++ THEN GOTO stop +++ ELSE PROC REF[]INT (SKIP) +++ FI +++ ESAC :=: CASE 3 +++ IN LOC REF REF []INT, +++ LOC INT, +++ NIL +++ ESAC) +++ # TRUE, would you believe. # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer10.a68 ++@@ -0,0 +1,62 @@ +++# { dg-options "-fstropping=upper" } # +++# Union with VOID # +++BEGIN OP TOPROCINT = (INT i) PROC INT : INT : 1; +++ OP TOVOID = (INT i) VOID : 1; +++ +++ STRING proc int = "proc int", void = "void", +++ before = "before ", after = " after", +++ newline = "\n"; +++ +++ puts ("Results must be:" + newline + +++ void + newline + +++ proc int + after + " 1 " + newline + +++ before + void + newline + +++ before + void + newline + +++ before + void + newline + +++ proc int + " 1 " + newline + +++ void + newline + +++ proc int + " 1 " + newline + +++ proc int + after + " 1 " + newline + +++ before + void + newline + +++ newline + "Results are:" + newline); +++ +++ UNION(PROC INT, VOID) upiv := EMPTY; +++ PROC pupiv = VOID: +++ (upiv +++ |(PROC INT pi) : (puts (proc int + " pi " + newline)) +++ | puts (void + newline)); +++ +++ pupiv; +++ upiv:= INT : (puts(after); 1); +++ pupiv; +++ +++ upiv:= VOID : (puts(before); 1); +++ pupiv; +++ +++ upiv:= VOID ((puts(before); 1)); +++ pupiv; +++ +++ # firm void position # +++ upiv:= puts(before); +++ pupiv; +++ +++ upiv:= TOPROCINT 1; +++ pupiv; +++ +++ upiv:= TOVOID 1; +++ pupiv; +++ +++ upiv:= INT : 1; +++ upiv:= label # must jump before assigning #; puts("Error 1"); +++label: +++ pupiv; +++ +++ FOR i TO 2 +++ DO upiv:= +++ CASE i IN +++ INT : (puts(after); 1), +++ VOID : (puts(before); 1) +++ ESAC; +++ pupiv +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer11.a68 ++@@ -0,0 +1,37 @@ +++# { dg-options "-fstropping=upper" } # +++# Contains all possible two-member coercion sequences. # +++BEGIN UNION(INT, BOOL) ib:= 1; +++ +++ []REAL(1); +++ []REAL(INT : 1); +++ []REAL(REAL : 1); +++ +++ [,]COMPL (1); +++ [] [,]COMPL (LOC INT:= 1); +++ [] [,]COMPL ([]COMPL(1, 2)); +++ +++ [,,] [] BOOL (16 r f); +++ [,,] [] [,] BOOL (16 r f); +++ [,,] [] BOOL (BITS : 16 r f); +++ [,,] [] [,] BOOL (BITS : 16 r f); +++ +++COMMENT XXX bytes pack not supported yet +++ [,] [] CHAR (bytes pack ("ab")); +++ [,] [] [,] CHAR (bytes pack ("ab")); +++ [,] [] CHAR (LOC BYTES:= bytes pack("ab")); +++ [,] [] [,] CHAR(LOC BYTES:= bytes pack("ab")); +++COMMENT +++ +++ REF[]INT(REF INT : HEAP INT:= 1); +++ REF[,]INT(REF[]INT : HEAP[1]INT:= 1); +++ +++ UNION(INT, REAL, BOOL) (ib); +++ [] REF [] [,] [] [] INT +++ (LOC PROC REF INT:= REF INT : HEAP INT:= 1) [1]; +++ +++ []UNION(INT, REAL) (LOC INT:= 1) [1]; +++ []UNION(INT, REAL) (REAL : 1) [1]; +++ []UNION(INT, REAL, BOOL) (ib) [1]; +++ +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer13.a68 ++@@ -0,0 +1,19 @@ +++# { dg-options "-fstropping=upper" } # +++# Soft balance with EXIT's. # +++BEGIN INT i; [ 1 : 1 ]INT ri, rj; +++ PROC pri = REF[]INT : rj; +++ +++ FOR c TO 3 +++ DO +++ ([]PROC VOID switch = ( lrri, li, lpri); +++ switch[c]; SKIP # hip # +++ EXIT lrri: LOC REF[]INT := ri # deref # +++ EXIT li: i # row # +++ EXIT lpri: pri # deproc # +++ ) := c +++ OD; +++ +++ ASSERT (ri[1] = 1); +++ ASSERT (i = 2); +++ ASSERT (pri[1] = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/coer14.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++# Rowing of NIL yields NIL. # +++BEGIN ASSERT (REF[]INT(NIL) :=: REF INT(NIL)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/decl01.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Some declarers. # +++BEGIN [1:10]INT i, +++ [1:10]STRUCT(REF[]INT i, BOOL j) k, +++ [1:10]STRUCT([1:10]INT i, BOOL j) l, +++ [1:10]REF[]INT p; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/decl03.a68 ++@@ -0,0 +1,40 @@ +++# { dg-options "-fstropping=upper" } # +++# P.G. Hibbard, Proc. Int. Conf. A68 III, Winnipeg, June 1974: +++ applied occurrence of mode-indication in actual-bounds +++ of its actual-declarer +++# +++BEGIN PROC itoa = (INT i) STRING: +++ BEGIN IF i = 0 +++ THEN "0" +++ ELSE INT n := i; +++ STRING res := (i < 0 | n := -n; "-"); +++ WHILE n /= 0 +++ DO INT rem = n %* 10; +++ res +:= REPR (rem > 9 | (rem - 10) + ABS "a" | rem + ABS "0"); +++ n %:= 10 +++ OD; +++ res +++ FI +++ END; +++ +++ INT n := 4; +++ CHAR a := "a", b := "b", c := "c", d; +++ +++ PROC swap = (REF CHAR c1, c2) VOID: +++ (d := c1; c1 := c2; c2 := d); +++ +++ MODE HANOI = +++ [IF n > 0 +++ THEN n -:= 1; +++ swap (b, c); +++ HANOI h1; +++ swap (b, c); +++ puts ("move " + itoa (LWB h1 + 1) + " from " + a + " to " + c); +++ swap (a, b); +++ HANOI h2; +++ swap (a, b); +++ n +:= 1 +++ ELSE 0 +++ FI : 1] INT; +++ LOC HANOI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/decl04.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++(MODE U = UNION(INT,REAL); +++ LOC UNION(U) # no list needed # u := 1; SKIP) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/decl05.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Application of a virtually useless mode. # +++BEGIN puts ("Result should be ppp"); +++ MODE P = PROC (P) P; +++ P p = (P p) P: (puts ("p"); p); +++ (p(p(p(p)))) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/execute.exp ++@@ -0,0 +1,29 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++if $tracelevel then { +++ strace $tracelevel +++} +++ +++load_lib algol68-torture.exp +++ +++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.a68]] { +++ # If we're only testing specific files and this isn't one of them, skip it. +++ if ![runtest_file_p $runtests $testcase] then { +++ continue +++ } +++ algol68-torture-execute $testcase +++} ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/flex01.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE S = FLEX[1:0]CHAR, T = [1:0]CHAR; +++ REF STRING n = LOC STRING := "Next line will be empty, then a"; +++ UNION (REF S, REF T) f = LOC T := ""; +++ UNION (STRING, CHAR) u = UNION (S,CHAR) ("a"); +++ +++ puts (n); +++ puts ((f | (REF S s): s, (REF T t): t)); +++ puts ((u | (STRING s): s, (CHAR c): c)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/flex02.a68 ++@@ -0,0 +1,11 @@ +++{ Transiency tests. } +++begin bool b = true, y = false; +++ +++ assert ((if b then loc char else (loc string)[1] fi := "a") +++ = "a"); +++ assert ((if b then loc[1:3]char else (loc string)[] fi := "bcd") +++ = "bcd"); +++ { XXX original says loc string but parser doesn't like it. +++ probably parser bug } +++ if y then loc char else loc[1:1,1:3]char fi := "efg" +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef01.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN IF INT i := 1; FALSE +++ THEN INT i := 2; ASSERT (i = 2) +++ ELSE ASSERT (i = 1) +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef02.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN IF INT i := 1; TRUE +++ THEN INT i := 2; ASSERT (i = 2) +++ ELSE ASSERT (i = 1) +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef03.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 1; +++ +++ PROC a = INT: (INT i = 2; b); +++ PROC b = INT: i; +++ ASSERT (a = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef04.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 1, j := -1; +++ +++ PROC a = VOID: (INT i = 2, j = -2; b); +++ PROC b = VOID: (INT j = -3; +++ PROC c = VOID: (ASSERT (i + j = -2)); +++ d (c)); +++ PROC d = (PROC VOID e) VOID: +++ (INT i = 4, j = -4; e); +++ a +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef05.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 2; +++ (INT i = i; ASSERT (i = 0)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef06.a68 ++@@ -0,0 +1,23 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING int = "INT", real = "REAL", rreal = "[]REAL"; +++ +++ OP AA = (UNION(INT,REAL,[]REAL) p) UNION(REAL,[]REAL): +++ CASE p +++ IN (INT i): AA REAL (i), +++ (REAL r): AA []REAL (r) +++ OUSE p +++ IN ([]REAL rr): CASE ROUND rr[1] IN 3.0, rr OUT 4.0 ESAC +++ OUT error +++ ESAC; +++ +++ FOR i TO 3 +++ DO AA AA CASE i +++ IN UNION(REAL,INT)(1), +++ UNION(INT,[]REAL)([]REAL(2)), +++ AA 3 +++ ESAC +++ OD; +++ 0 EXIT +++error: +++ puts ("Error in united-case clause"); +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef07.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Redeclaring LWB. # +++BEGIN OP LWB = ([]INT a) REAL: a[1] + a[2]; +++ OP LWB = ([]REAL a) REAL: a[1] - a[2]; +++ +++ ASSERT (LWB (1| (8, 2), 3, []INT: SKIP) = 10); +++ ASSERT (LWB (1| (8, 2), 3, []REAL: SKIP) = 6.0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef11.a68 ++@@ -0,0 +1,17 @@ +++# { dg-options "-fstropping=upper" } # +++# More operators and uniting. # +++BEGIN MODE UN = UNION (INT, REAL); +++ OP + = (UNION (REF UN, REF CHAR) a) VOID: +++ BEGIN CASE a +++ IN (REF UN ru): (ru | +++ (INT i): (puts ("integer"); SKIP), +++ (REAL r): (puts ("real"); SKIP) +++ ), +++ (REF CHAR ch): (puts ("char"); SKIP) +++ ESAC +++ END; +++ +++ +(HEAP UN := 1); +++ +(HEAP UN := 2.0); +++ +(HEAP CHAR := "3") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idef12.a68 ++@@ -0,0 +1,52 @@ +++# { dg-options "-fstropping=upper" } # +++# Priorities and weird constructions # +++BEGIN +++WHILE INT n:= 0; +++ OP + = (REF INT i, CHAR c) STRING: "ab"; +++ ( WHILE DO GOTO skip OD; TRUE DO SKIP OD; +++ PRIO + = 1; SKIP +++ EXIT skid: +++ (HEAP INT +:= 1 + "1" +=: (HEAP STRING := "c")) = "abc" +++ EXIT skip: GOTO skid +++ ) +++DO DO +++ # The implicit structure of the formulas is +++ ( a O1 ( b + ( c O2 d))) +++ which is only achieved if pr(O1) < pr(+) < pr(O2) +++ # +++ +++ PRIO + = 2; +++ +++ OP + = (INT i, BOOL b) STRING: (puts("corr"); "ect,"); +++ OP + = (REAL x, BOOL b) BOOL: (puts("Line "); FALSE); +++ OP + = (CHAR c, BOOL b) BOOL: (puts("two "); FALSE); +++ OP + = (BITS b, INT i) STRING: (puts("one "); "Nope "); +++ OP + = (REF BYTES b, REAL x) INT: (puts("is "); -(n+:=1)); +++ OP + = (STRING s, COMPL c) BITS: (puts("sho"); drop); +++ +++ puts((HEAP STRING +:= +++ ABS +++ IF PRIO + = 3; +++ ODD n OR 2.0 + "a" = "b" +++ THEN PRIO + = 4; +++ TRUE AND "a" + 2 < 3 +++ ELSE PRIO + = 5; +++ "prio" = 2r1 + 2 - 3 +++ FI +++ +++ + # prio 2 # +++ +++ CASE PRIO + = 7; +++ 0 - LOC BYTES + 3.0 ** 5 +++ IN TRUE, FALSE +++ OUT PRIO + = 8; +++ 3 ELEM "prio" + 2.0 I 3.0 +++ ESAC +++ +++ AND random < .5) + "\n") +++ OD +++ EXIT drop: +++ puts("rter than line three." + "\n" + "End of test"); +++ stop +++OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/idrl01.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Identity relations. # +++BEGIN REAL x; REF REAL y := x; +++ ASSERT ((x :=: y) AND (y :=: x)); +++ ASSERT (x :=: REF[]REAL(x)[1]); +++ ASSERT (x :/=: REF[]REAL(x)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/jump01.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# Simple jumps and EXITs. # +++BEGIN INT control := 0; +++ FOR i TO 2 +++ DO IF i = 2 THEN GOTO l FI; control +:= 10 EXIT +++ l: control +:= 3 +++ OD; +++ ASSERT (control = 13) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/jump02.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL a; +++ GOTO l; +++ INT i := 1; +++ # The declaration of `i' has not been elaborated. # +++l: ASSERT (i = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/jump03.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 1, j := 2; +++ i := j := (GOTO l; 3); +++l: ASSERT (i = 1 AND j = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/jump04.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++# Jump out of procedure. # +++BEGIN # Directly # +++ (PROC jump = VOID: (GOTO l; ASSERT (FALSE)); +++ jump; ASSERT (FALSE); +++ l: SKIP); +++ # Indirectly # +++ (MODE HIDE = PROC VOID; +++ HIDE p = (TRUE | GOTO m); +++ p; ASSERT (FALSE); m: SKIP) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/mdeq02.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Mode equivalencing. # +++BEGIN MODE N = PROC(M)M, M = PROC(N)N; +++ # Both okay, since M and N are the same. # +++ PROC M(PROC N(SKIP)); +++ PROC N(PROC M(SKIP)); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/mdeq04.a68 ++@@ -0,0 +1,17 @@ +++# { dg-options "-fstropping=upper" } # +++# Unions. # +++BEGIN MODE N = UNION (REAL, UNION (BOOL, INT)), +++ M = UNION (UNION (REAL, BOOL), INT); +++ # Both okay, since M and N are the same. # +++ PROC M (PROC N (SKIP)); +++ PROC N (PROC M (SKIP)); +++ +++ MODE U = UNION (INT, PROC(U)INT), +++ V = UNION (U, PROC(V)INT); +++ # Both okay, since U and V are the same. # +++ PROC U (PROC V (SKIP)); +++ PROC V (PROC U (SKIP)); +++ +++ SKIP +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/misc07.a68 ++@@ -0,0 +1,207 @@ +++# { dg-options "-fstropping=upper" } # +++# 100 nested proc declarations; prints 100 100 # +++(INT i := 0; INT j := (INT a = +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++(PROC a = INT: +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++i+:=1; a); +++a); +++ASSERT (i = j); +++ASSERT (i = 100 AND j = 100) +++) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null01.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# The original test uses just SKIP, but this compiler requires an +++ enclosed clause. # +++ +++(SKIP) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null02.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++(0) +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null03.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN DO stop OD +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null04.a68 ++@@ -0,0 +1,2 @@ +++# { dg-options "-fstropping=upper" } # +++((SKIP,SKIP)) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null05.a68 ++@@ -0,0 +1,2 @@ +++# { dg-options "-fstropping=upper" } # +++(PAR (SKIP,SKIP)) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null06.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BY 0 DO stop OD +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null07.a68 ++@@ -0,0 +1,2 @@ +++# { dg-options "-fstropping=upper" } # +++IF BOOL (SKIP) THEN SKIP FI ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null08.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++CASE INT(SKIP) IN SKIP, SKIP ESAC +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/null09.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++CASE UNION(BOOL, VOID)(SKIP) IN (VOID): SKIP ESAC +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/numr07.a68 ++@@ -0,0 +1,81 @@ +++# { dg-options "-fstropping=upper" } # +++#JKok, 730612, test Choleski decomposition# +++BEGIN OP * = ([]REAL a, b) REAL : +++ (REAL s:= 0; FOR i TO UPB a DO s +:= a[i] * b[i] OD;s); +++ +++ PROC decsym= (REF [,] REAL a, REF [] INT p, REAL aux) +++ INT : +++ IF INT n = 1 UPB a; +++ 2 UPB a /= n OR UPB p /= n THEN 0 +++ ELSE REAL max:= 0, epsnorm, ukk, uki, aii, INT pk:= 1, r:= 0; +++ +++ PROC ichvec= (REF [] REAL a, b) VOID : +++ IF INT n= UPB a; n > 0 THEN +++ [] REAL h= a; a:= b; b:= h +++ FI # interchange two vectors#; +++ +++ FOR k TO n +++ DO IF a[k,k] > max THEN max:= a[k,k]; pk:= k FI OD; +++ epsnorm:= aux * max; +++ FOR k TO n WHILE max > epsnorm +++ DO INT k1 = k + 1; +++ p[k]:= pk; r:= k; +++ IF pk /= k +++ THEN ichvec(a[ :k-1,k], a[ :k-1,pk]); +++ ichvec(a[k,k1:pk - 1], a[k1:pk - 1,pk]); +++ ichvec(a[k,pk + 1: ], a[pk,pk + 1: ]); +++ a[pk,pk]:= a[k,k] +++ FI; +++ ukk:= a[k,k]:= sqrt(max); max:= 0; pk:= k1; +++ FOR i FROM k1 TO n +++ DO uki:= a[k,i]:= (a[k,i] - a[ :k-1,k]*a[ :k-1,i]) / ukk; +++ aii:= a[i,i] -:= uki * uki; +++ IF aii > max THEN max:= aii; pk:= i FI +++ OD +++ OD; +++ r +++ FI # Choleski decomposition with diagonal pivoting#, +++ +++ PROC solsym= ([,] REAL a,[] INT p,REF [] REAL b) VOID: +++ IF INT n = 1 UPB a; +++ 2 UPBa = n AND UPB p = n AND UPB b = n +++ THEN INT pk, REAL r; +++ FOR k TO n +++ DO r:= b[k]; pk:= p[k]; +++ b[k]:= (b[pk] - a[ :k - 1,k] * b[ :k - 1]) / a[k,k]; +++ IF pk /= k THEN b[pk]:= r FI +++ OD; +++ FOR k FROM n BY - 1 TO 1 +++ DO b[k]:= (b[k] - a[k,k+1: ] * b[k+1: ]) / a[k,k] OD; +++ FOR k FROM n BY - 1 TO 1 +++ DO IF pk:= p[k]; pk /= k +++ THEN r:= b[k]; b[k]:= b[pk]; b[pk]:= r FI +++ OD +++ FI # solution of Choleski decomposed system #; +++ +++ puts ("Value, expected, difference\n\n"); +++ +++ FOR n TO 8 +++ DO [1:n, 1:n] REAL a, aa, [1:n]REAL b, c, [1:n]INT piv; +++ FOR i TO n DO FOR j TO n +++ DO a[i,j]:= aa[i,j]:= 1 / (2 * n + 1 - i - j) OD OD; +++ FOR i TO n DO b[i]:= 2 ** (n - i) OD; +++ IF decsym (a, piv, 1e-13) = n +++ THEN solsym(a, piv, b); +++ FOR i TO n +++ DO +++ CO puts (aa[i,] * b, REAL(2 ** (n - i)), +++ aa[i,] * b - 2 ** (n - i)); +++ CO +++ puts ("term\n") +++ OD +++ ELSE puts ("Coefficients matrix is not positive definite") +++ FI; +++ puts ("\n") +++ OD +++ #Output approximately: 1 +++ 2 1 +++ 4 2 1 +++ . . . +++ 128 64 . . . 1 # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper01.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Operator test. # +++BEGIN OP +:= = (INT a, b) INT: a + b; +++ OP +:= = (INT a, REAL b) INT: ROUND (a - b); +++ +++ ASSERT ((2+:=1) = 3); +++ ASSERT ((2+:=1.0) = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper02.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Operator and balancing. # +++BEGIN OP + = (UNION(INT,BOOL) a) INT: (a|(BOOL):1,(INT):2); +++ ASSERT (+IF TRUE THEN TRUE ELSE 0 FI = 1); +++ ASSERT (+IF FALSE THEN TRUE ELSE 0 FI = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper03.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++# Operator priorities. # +++BEGIN PRIO + = 7; +++ ASSERT ((1+2*3) = 9); +++ BEGIN PRIO + = 6; +++ ASSERT ((1+2*3) = 7); +++ FOR i TO 1 WHILE PRIO + = 7; TRUE +++ DO ASSERT ((1+2*3) = 9); OD; +++ ASSERT ((1+2*3) = 7) +++ END; +++ ASSERT ((1+2*3) = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper04.a68 ++@@ -0,0 +1,21 @@ +++# { dg-options "-fstropping=upper" } # +++# Operator identification. # +++BEGIN MODE M = UNION ([]INT, BOOL, STRING); +++ +++ OP + = (REAL a) INT: 2; +++ OP + = (CHAR a) INT: 3; +++ OP + = (M a) INT: 1; +++ +++ PROC prpm = REF PROC M: HEAP PROC M := M : "aap"; +++ UNION (BOOL, STRING) b = "b "; +++ +++ FOR n TO 5 +++ DO ASSERT ((+ CASE n +++ IN SKIP, +++ TRUE, +++ IF FALSE THEN "aa" ELSE b FI, +++ prpm +++ OUT LOC[1:1]INT := 1 +++ ESAC) = 1) +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper05.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Operator test, mutual recursion. # +++BEGIN PRIO +> = 1, +< = 1; +++ INT cnt := 0; +++ OP +> = (INT a, b) INT: IF (cnt +:= 1) = 10 THEN stop ELSE a +< b FI; +++ OP +< = (INT a, b) INT: IF (cnt +:= 1) = 10 THEN stop ELSE a +> b FI; +++ 1 +> 2 # loop # +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper07.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++# Operator declarations. # +++BEGIN OP SQ = (REAL x) REAL: x * x, +++ RD = (INT x) REAL: random, +++ OP (REAL)REAL SIN = (puts ("Print ten times 1\n"); sin), +++ COS = cos; +++ +++ puts ("\n"); +++ TO 10 +++ DO REAL x = RD 1; SQ SIN x + SQ COS x OD; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper08.a68 ++@@ -0,0 +1,18 @@ +++# { dg-options "-fstropping=upper" } # +++# A complicated formula relying totally on priorities. # +++( +++ OP I= (INT i, j) COMPL : (i, j); +++ OP ** = (INT i, COMPL z) INT : ROUND(i + RE z + IM z); +++ OP < = (INT i, j) INT : (i - j) * 2; +++ OP = = (INT i, j) INT : (i + j) * 2; +++ OP AND= (INT i, j) INT : (i + i - j) * 3; +++ OP OR= (INT i, j) INT : (i - j - j) * 3; +++ +++ INT loc int; +++ # Note: all operators are followed by their priorities # +++ ASSERT (((loc int := 0) -:= 1 OR 2 AND 3 = 4 < 5 + 6 * 7 ** 8 I 9 +++ -:= 1 ** 8 OR 2 * 7 AND 3 + 6 = 4 < 5) EQ 10650) +++ # The implied parenthesis structure is : +++ (1(2(3(4(5(6(7(8(9)))))))))1((8)2((7)3((6)4(5)))) +++ and it yields 10650 # +++) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper09.a68 ++@@ -0,0 +1,65 @@ +++# { dg-options "-fstropping=upper" } # +++# Monadic operators, non-bold monads. # +++BEGIN INT decls := 0; +++ OP += (INT a) INT: a + 1; decls +:= 1; +++ OP +<= (INT a) INT: a + 1; decls +:= 1; +++ OP +>= (INT a) INT: a + 1; decls +:= 1; +++ OP +/= (INT a) INT: a + 1; decls +:= 1; +++ OP +== (INT a) INT: a + 1; decls +:= 1; +++ OP +*= (INT a) INT: a + 1; decls +:= 1; +++ OP +:== (INT a) INT: a + 1; decls +:= 1; +++ OP +<:== (INT a) INT: a + 1; decls +:= 1; +++ OP +>:== (INT a) INT: a + 1; decls +:= 1; +++ OP +/:== (INT a) INT: a + 1; decls +:= 1; +++ OP +=:== (INT a) INT: a + 1; decls +:= 1; +++ OP +*:== (INT a) INT: a + 1; decls +:= 1; +++ OP +=:= (INT a) INT: a + 1; decls +:= 1; +++ OP +<=:= (INT a) INT: a + 1; decls +:= 1; +++ OP +>=:= (INT a) INT: a + 1; decls +:= 1; +++ OP +/=:= (INT a) INT: a + 1; decls +:= 1; +++ OP +==:= (INT a) INT: a + 1; decls +:= 1; +++ OP +*=:= (INT a) INT: a + 1; decls +:= 1; +++ +++ OP -= (INT a) INT: a + 1; decls +:= 1; +++ OP -<= (INT a) INT: a + 1; decls +:= 1; +++ OP ->= (INT a) INT: a + 1; decls +:= 1; +++ OP -/= (INT a) INT: a + 1; decls +:= 1; +++ OP -== (INT a) INT: a + 1; decls +:= 1; +++ OP -*= (INT a) INT: a + 1; decls +:= 1; +++ OP -:== (INT a) INT: a + 1; decls +:= 1; +++ OP -<:== (INT a) INT: a + 1; decls +:= 1; +++ OP ->:== (INT a) INT: a + 1; decls +:= 1; +++ OP -/:== (INT a) INT: a + 1; decls +:= 1; +++ OP -=:== (INT a) INT: a + 1; decls +:= 1; +++ OP -*:== (INT a) INT: a + 1; decls +:= 1; +++ OP -=:= (INT a) INT: a + 1; decls +:= 1; +++ OP -<=:= (INT a) INT: a + 1; decls +:= 1; +++ OP ->=:= (INT a) INT: a + 1; decls +:= 1; +++ OP -/=:= (INT a) INT: a + 1; decls +:= 1; +++ OP -==:= (INT a) INT: a + 1; decls +:= 1; +++ OP -*=:= (INT a) INT: a + 1; decls +:= 1; +++ +++ OP %= (INT a) INT: a + 1; decls +:= 1; +++ OP %<= (INT a) INT: a + 1; decls +:= 1; +++ OP %>= (INT a) INT: a + 1; decls +:= 1; +++ OP %/= (INT a) INT: a + 1; decls +:= 1; +++ OP %== (INT a) INT: a + 1; decls +:= 1; +++ OP %*= (INT a) INT: a + 1; decls +:= 1; +++ OP %:== (INT a) INT: a + 1; decls +:= 1; +++ OP %<:== (INT a) INT: a + 1; decls +:= 1; +++ OP %>:== (INT a) INT: a + 1; decls +:= 1; +++ OP %/:== (INT a) INT: a + 1; decls +:= 1; +++ OP %=:== (INT a) INT: a + 1; decls +:= 1; +++ OP %*:== (INT a) INT: a + 1; decls +:= 1; +++ OP %=:= (INT a) INT: a + 1; decls +:= 1; +++ OP %<=:= (INT a) INT: a + 1; decls +:= 1; +++ OP %>=:= (INT a) INT: a + 1; decls +:= 1; +++ OP %/=:= (INT a) INT: a + 1; decls +:= 1; +++ OP %==:= (INT a) INT: a + 1; decls +:= 1; +++ OP %*=:= (INT a) INT: a + 1; decls +:= 1; +++ +++ ASSERT (++<+>+/+=+*+:=+<:=+>:=+/:=+=:=+*:=+=:+<=:+>=:+/=:+==:+*=: +++ --<->-/-=-*-:=-<:=->:=-/:=-=:=-*:=-=:-<=:->=:-/=:-==:-*=: +++ %%<%>%/%=%*%:=%<:=%>:=%/:=%=:=%*:=%=:%<=:%>=:%/=:%==:%*=: 0 = decls) +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper10.a68 ++@@ -0,0 +1,87 @@ +++# { dg-options "-fstropping=upper" } # +++# Dyadic operators, non-bold monads # +++BEGIN # the first declaration is different to avoid a recursive loop # +++ INT decls := 0; +++ OP += (INT a, b) INT: (INT c:= a; c PLUSAB b); +++ decls PLUSAB 1; +++ OP +<= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +>= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +/= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +*= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +<:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +>:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +/:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +=:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +*:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +<=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +>=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +/=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +==:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP +*=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ +++ OP -= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -<= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP ->= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -/= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -*= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -<:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP ->:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -/:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -=:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -*:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -<=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP ->=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -/=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -==:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP -*=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ +++ OP %= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %<= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %>= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %/= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %*= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %<:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %>:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %/:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %=:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %*:== (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %<=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %>=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %/=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %==:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ OP %*=:= (INT a, b) INT: a + b; decls PLUSAB 1; +++ +++ PRIO +++ +=1, +<=1, +>=1, +/=1, +==1, +*=1, +++ +:==1, +<:==1, +>:==1, +/:==1, +=:==1, +*:==1, +++ +=:=1, +<=:=1, +>=:=1, +/=:=1, +==:=1, +*=:=1, +++ +++ -=1, -<=1, ->=1, -/=1, -==1, -*=1, +++ -:==1, -<:==1, ->:==1, -/:==1, -=:==1, -*:==1, +++ -=:=1, -<=:=1, ->=:=1, -/=:=1, -==:=1, -*=:=1, +++ +++ %=1, %<=1, %>=1, %/=1, %==1, %*=1, +++ %:==1, %<:==1, %>:==1, %/:==1, %=:==1, %*:==1, +++ %=:=1, %<=:=1, %>=:=1, %/=:=1, %==:=1, %*=:=1; +++ +++ ASSERT ((+ 1 +< 1 +> 1 +/ 1 += 1 +* 1 +++ +:= 1 +<:= 1 +>:= 1 +/:= 1 +=:= 1 +*:= 1 +++ +=: 1 +<=: 1 +>=: 1 +/=: 1 +==: 1 +*=: 1 +++ +++ - 1 -< 1 -> 1 -/ 1 -= 1 -* 1 +++ -:= 1 -<:= 1 ->:= 1 -/:= 1 -=:= 1 -*:= 1 +++ -=: 1 -<=: 1 ->=: 1 -/=: 1 -==: 1 -*=: 1 +++ +++ % 1 %< 1 %> 1 %/ 1 %= 1 %* 1 +++ %:= 1 %<:= 1 %>:= 1 %/:= 1 %=:= 1 %*:= 1 +++ %=: 1 %<=: 1 %>=: 1 %/=: 1 %==: 1 %*=: 1) EQ decls) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper11.a68 ++@@ -0,0 +1,141 @@ +++# { dg-options "-fstropping=upper" } # +++# Dyadic operators, non-bold nomads # +++BEGIN INT decls := 0; +++ +++ OP <= (INT a, b) INT: a + b; decls +:= 1; +++ OP <<= (INT a, b) INT: a + b; decls +:= 1; +++ OP <>= (INT a, b) INT: a + b; decls +:= 1; +++ OP :== (INT a, b) INT: a + b; decls +:= 1; +++ OP =:= (INT a, b) INT: a + b; decls +:= 1; +++ OP = (INT a, b) INT: a + b; decls +:= 1; +++ OP ><= (INT a, b) INT: a + b; decls +:= 1; +++ OP >>= (INT a, b) INT: a + b; decls +:= 1; +++ OP >/= (INT a, b) INT: a + b; decls +:= 1; +++ OP >== (INT a, b) INT: a + b; decls +:= 1; +++ OP >*= (INT a, b) INT: a + b; decls +:= 1; +++ OP >:== (INT a, b) INT: a + b; decls +:= 1; +++ OP ><:== (INT a, b) INT: a + b; decls +:= 1; +++ OP >>:== (INT a, b) INT: a + b; decls +:= 1; +++ OP >/:== (INT a, b) INT: a + b; decls +:= 1; +++ OP >=:== (INT a, b) INT: a + b; decls +:= 1; +++ OP >*:== (INT a, b) INT: a + b; decls +:= 1; +++ OP >=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP ><=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP >>=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP >/=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP >==:= (INT a, b) INT: a + b; decls +:= 1; +++ OP >*=:= (INT a, b) INT: a + b; decls +:= 1; +++ +++ OP /= (INT a, b) INT: a + b; decls +:= 1; +++ OP /<= (INT a, b) INT: a + b; decls +:= 1; +++ OP />= (INT a, b) INT: a + b; decls +:= 1; +++ OP //= (INT a, b) INT: a + b; decls +:= 1; +++ OP /== (INT a, b) INT: a + b; decls +:= 1; +++ OP /*= (INT a, b) INT: a + b; decls +:= 1; +++ OP /:== (INT a, b) INT: a + b; decls +:= 1; +++ OP /<:== (INT a, b) INT: a + b; decls +:= 1; +++ OP />:== (INT a, b) INT: a + b; decls +:= 1; +++ OP //:== (INT a, b) INT: a + b; decls +:= 1; +++ OP /=:== (INT a, b) INT: a + b; decls +:= 1; +++ OP /*:== (INT a, b) INT: a + b; decls +:= 1; +++ OP /=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP /<=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP />=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP //=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP /==:= (INT a, b) INT: a + b; decls +:= 1; +++ OP /*=:= (INT a, b) INT: a + b; decls +:= 1; +++ +++ OP == (INT a, b) INT: a + b; decls +:= 1; +++ OP =<= (INT a, b) INT: a + b; decls +:= 1; +++ OP =>= (INT a, b) INT: a + b; decls +:= 1; +++ OP =/= (INT a, b) INT: a + b; decls +:= 1; +++ OP === (INT a, b) INT: a + b; decls +:= 1; +++ OP =*= (INT a, b) INT: a + b; decls +:= 1; +++ OP =:== (INT a, b) INT: a + b; decls +:= 1; +++ OP =<:== (INT a, b) INT: a + b; decls +:= 1; +++ OP =>:== (INT a, b) INT: a + b; decls +:= 1; +++ OP =/:== (INT a, b) INT: a + b; decls +:= 1; +++ OP ==:== (INT a, b) INT: a + b; decls +:= 1; +++ OP =*:== (INT a, b) INT: a + b; decls +:= 1; +++ OP ==:= (INT a, b) INT: a + b; decls +:= 1; +++ OP =<=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP =>=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP =/=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP ===:= (INT a, b) INT: a + b; decls +:= 1; +++ OP =*=:= (INT a, b) INT: a + b; decls +:= 1; +++ +++ OP *= (INT a, b) INT: a + b; decls +:= 1; +++ OP *<= (INT a, b) INT: a + b; decls +:= 1; +++ OP *>= (INT a, b) INT: a + b; decls +:= 1; +++ OP */= (INT a, b) INT: a + b; decls +:= 1; +++ OP *== (INT a, b) INT: a + b; decls +:= 1; +++ OP **= (INT a, b) INT: a + b; decls +:= 1; +++ OP *:== (INT a, b) INT: a + b; decls +:= 1; +++ OP *<:== (INT a, b) INT: a + b; decls +:= 1; +++ OP *>:== (INT a, b) INT: a + b; decls +:= 1; +++ OP */:== (INT a, b) INT: a + b; decls +:= 1; +++ OP *=:== (INT a, b) INT: a + b; decls +:= 1; +++ OP **:== (INT a, b) INT: a + b; decls +:= 1; +++ OP *=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP *<=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP *>=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP */=:= (INT a, b) INT: a + b; decls +:= 1; +++ OP *==:= (INT a, b) INT: a + b; decls +:= 1; +++ OP **=:= (INT a, b) INT: a + b; decls +:= 1; +++ +++ PRIO +++ <=1, <<=1, <>=1, :==1, =:=1, =1, ><=1, >>=1, >/=1, >==1, >*=1, +++ >:==1, ><:==1, >>:==1, >/:==1, >=:==1, >*:==1, +++ >=:=1, ><=:=1, >>=:=1, >/=:=1, >==:=1, >*=:=1, +++ +++ /=1, /<=1, />=1, //=1, /==1, /*=1, +++ /:==1, /<:==1, />:==1, //:==1, /=:==1, /*:==1, +++ /=:=1, /<=:=1, />=:=1, //=:=1, /==:=1, /*=:=1, +++ +++ ==1, =<=1, =>=1, =/=1, ===1, =*=1, +++ =:==1, =<:==1, =>:==1, =/:==1, ==:==1, =*:==1, +++ ==:=1, =<=:=1, =>=:=1, =/=:=1, ===:=1, =*=:=1, +++ +++ *=1, *<=1, *>=1, */=1, *==1, **=1, +++ *:==1, *<:==1, *>:==1, */:==1, *=:==1, **:==1, +++ *=:=1, *<=:=1, *>=:=1, */=:=1, *==:=1, **=:=1; +++ +++ ASSERT ((0 +++ < 1 << 1 <> 1 := 1 =: 1 1 >< 1 >> 1 >/ 1 >= 1 >* 1 +++ >:= 1 ><:= 1 >>:= 1 >/:= 1 >=:= 1 >*:= 1 +++ >=: 1 ><=: 1 >>=: 1 >/=: 1 >==: 1 >*=: 1 +++ +++ / 1 /< 1 /> 1 // 1 /= 1 /* 1 +++ /:= 1 /<:= 1 />:= 1 //:= 1 /=:= 1 /*:= 1 +++ /=: 1 /<=: 1 />=: 1 //=: 1 /==: 1 /*=: 1 +++ +++ = 1 =< 1 => 1 =/ 1 == 1 =* 1 +++ =:= 1 =<:= 1 =>:= 1 =/:= 1 ==:= 1 =*:= 1 +++ ==: 1 =<=: 1 =>=: 1 =/=: 1 ===: 1 =*=: 1 +++ +++ * 1 *< 1 *> 1 */ 1 *= 1 ** 1 +++ *:= 1 *<:= 1 *>:= 1 */:= 1 *=:= 1 **:= 1 +++ *=: 1 *<=: 1 *>=: 1 */=: 1 *==: 1 **=: 1) EQ decls) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper14.a68 ++@@ -0,0 +1,32 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (UPB []INT(1,2,3,4) = 4); +++ ASSERT (UPB "abcde" = 5); +++ ASSERT (UPB []INT(SKIP,SKIP)[1:1@5] = 5); +++ ASSERT (2 UPB [,]INT(1,2)[,@4] = 4); +++ +++ # All declarers are of the mode row-of, so UPB/LWB +++ should work. +++ # +++ ASSERT (UPB UNION([]INT,[,]INT)([]INT (1)) = 1); +++ ASSERT (UPB UNION([]INT,[,]INT)([,]INT (1,1)) = 2); +++ ASSERT (UPB UNION([]STRING,STRING)("ab") = 2); +++ ASSERT (LWB UNION([]INT,[,]INT)([]INT (1)) = 1); +++ ASSERT (LWB UNION([]INT,[,]INT)([,]INT (1,1)) = 1); +++ ASSERT (LWB UNION([]STRING,STRING)("ab") = 1); +++ +++ ASSERT (1 UPB [,,]CHAR ("abc", "def") = 2); +++ ASSERT (2 UPB [,,]CHAR ("abc", "def") = 1); +++ ASSERT (3 UPB [,,]CHAR ("abc", "def") = 3); +++ +++ ASSERT (LWB LOC STRING LWB LOC STRING = 1); +++ +++ # Balance. # +++ FOR n TO 4 +++ DO n UPB CASE n +++ IN []INT (1), +++ [,]REAL (1), +++ UNION([]INT,[,,]BOOL) ([,,]BOOL (TRUE)), +++ UNION([]INT,UNION([,]REAL,[,,,]CHAR))([,,,]CHAR ("a")) +++ ESAC +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/oper16.a68 ++@@ -0,0 +1,866 @@ +++# { dg-options "-fstropping=upper" } # +++# Tests on operators. # +++BEGIN +++ PROC itoa = (INT i) STRING: +++ BEGIN IF i = 0 +++ THEN "0" +++ ELSE INT n := ABS i; +++ STRING res; +++ WHILE n /= 0 +++ DO INT rem = n %* 10; +++ res := REPR (rem > 9 +++ | (rem - 10) + ABS "a" +++ | rem + ABS "0") + res; +++ n %:= 10 +++ OD; +++ (i < 0 | "-" + res | res) +++ FI +++ END; +++ +++ INT errors := 0; +++ PROC error = (INT i) VOID: +++ (puts("Error in test " + itoa (i)); errors +:= 1); +++ +++ PROC tste = (INT i) VOID: +++ BEGIN error(i); +++ puts ("; wrong branch taken\n") +++ END; +++ +++ PROC tsti = (INT i, INT p, q) VOID: +++ IF p = q THEN SKIP +++ ELSE error(i); +++ puts ("; value is: " + itoa (q) + ", must be: " + itoa (p) + "\n") +++ FI; +++ +++ PROC tstr = (INT i, REAL p, q) VOID: +++ # two reals are considered equal if their difference is negligible +++ compared to one of them +++ # +++ IF p + (p-q)/8 = p THEN SKIP +++ ELSE error(i); +++ errors -:= 1; # XXX Optimizations make comparisons to fail. # +++ puts ("; real values are not equal\n") +++ FI; +++ +++ PROC tstb = (INT i, BOOL p, q) VOID: +++ BEGIN +++ IF p THEN IF q THEN SKIP ELSE GOTO bad FI +++ ELSE IF q THEN GOTO bad ELSE SKIP FI +++ FI +++ EXIT bad: +++ error(i); +++ puts ("; boolean values are not equal\n") +++ END; +++ +++ PROC tstc = (INT i, CHAR p, q) VOID: +++ IF p = q THEN SKIP +++ ELSE error(i); +++ puts ("; value is: " + q + ", must be: " + p + "\n") +++ FI; +++ +++ PROC tstli = (INT i, LONG INT p, q) VOID: +++ IF p = q THEN SKIP +++ ELSE error(i); +++ puts ("; long int values are not equal\n") +++ FI; +++ +++ PROC tstlr = (INT i, LONG REAL p, q) VOID: +++ IF p + (p-q)/LONG 8 = p THEN SKIP +++ ELSE error(i); +++ errors -:= 1; # XXX Optimizations make comparisons to fail. # +++ puts ("; long real values are not equal\n") +++ FI; +++ +++puts("Test: REPR, ABS\n"); +++BEGIN +++ INT b1; LONG INT b2; +++ INT b0 = 44; +++ [1:2]CHAR a; +++ a[2]:="a"; +++ tstc(1, "a", REPR ABS"a"); +++ tstc(2, "a", REPR ABS a[2]); +++ tsti(3, +43, ABS(REPR 43)); +++ tsti(4, +44, ABS(REPR b0)); +++ b1:=45; +++ tsti(5, +45, ABS(REPR b1)); +++ tsti(6, +46, ABS(REPR (46+0))); +++ b2:=LONG 43; +++ tsti(7, +43, ABS(REPR SHORTEN b2)); +++ tsti(8, +46, ABS REPR SHORTEN LONG 46) +++END; +++ +++puts("Test: LWB, UPB\n"); +++BEGIN +++ REF[]CHAR b; +++ [-5:-3, -1:3]REF[ , ]REAL a; +++ tsti(9, -5, 1 LWB a); +++ tsti(10, -5, LWB a); +++ tsti(11, -1, 2 LWB a); +++ tsti(12, -3, 1 UPB a); +++ tsti(13, -3, UPB a); +++ tsti(14, +3, 2 UPB a); +++ FOR i FROM LWB a BY 1 TO UPB a DO +++ FOR j FROM 2 LWB a BY 1 TO 2 UPB a DO +++ BEGIN +++ [i:j, -j:-i]REAL b; +++ a[i, j] := b; +++ tsti(15, i, 1 LWB a[i, j]); +++ tsti(16, j, UPB a[i, j]); +++ tsti(17, -j, 2 LWB a[i, j]); +++ tsti(18, -i, 2 UPB a[i, j]) +++ END +++ OD OD +++END; +++ +++BEGIN +++ [1:3, 2:4, 3:5]INT a aaaaa; +++ INT jjjjjj; +++ FOR i FROM 1 BY 1 TO 3 +++ DO tsti(19, i, i LWB aaaaaa); +++ tsti(20, i+2, i UPB aaaaaa) +++ OD; +++ FOR i FROM-3BY 1 TO-1 +++ DO tsti(21, -i, -i LWB aaaaaa); +++ tsti(22, 2-i, -i UPB aaaaaa) +++ OD; +++ jjjjjj:=2; tsti(23, +2, jjjjjj LWB aaaaaa); +++ tsti(24, +4, jjjjjj UPB aaaaaa); +++ tsti(25, +1, LWB"abc"); +++ tsti(26, +3, UPB"cde"); +++ tsti(27, +1, (1+0) LWB"abc"); +++ tsti(28, +3, 1 UPB"efg") +++END; +++ +++puts("Test: OR, AND\n"); +++BEGIN +++ BOOL t = TRUE; BOOL f = FALSE; +++ BOOL a; +++ a:=t OR t; tstb(29, TRUE, a); +++ a:=t OR f; tstb(30, TRUE, a); +++ a:=f OR t; tstb(31, TRUE, a); +++ a:=f OR f; tstb(32, FALSE, a); +++ a:=t AND t; tstb(33, TRUE, a); +++ a:=t AND f; tstb(34, FALSE, a); +++ a:=f AND t; tstb(35, FALSE, a); +++ a:=f AND f; tstb(36, FALSE, a); +++ a:=NOT t AND t; tstb(37, FALSE, a); +++ a:=NOT f AND t; tstb(38, TRUE, a); +++ a:=NOT t AND f; tstb(39, FALSE, a); +++ a:=NOT f AND f; tstb(40, FALSE, a); +++ a:=NOT t OR t; tstb(41, TRUE, a); +++ a:=NOT f OR t; tstb(42, TRUE, a); +++ a:=NOT t OR f; tstb(43, FALSE, a); +++ a:=NOT f OR f; tstb(44, TRUE, a); +++ a:=t AND NOT t; tstb(45, FALSE, a); +++ a:=t AND NOT f; tstb(46, TRUE, a); +++ a:=f AND NOT t; tstb(47, FALSE, a); +++ a:=f AND NOT f; tstb(48, FALSE, a); +++ a:=t OR NOT t; tstb(49, TRUE, a); +++ a:=t OR NOT f; tstb(50, TRUE, a); +++ a:=f OR NOT t; tstb(51, FALSE, a); +++ a:=f OR NOT f; tstb(52, TRUE, a); +++ a:=NOT t AND NOT t; tstb(53, FALSE, a); +++ a:=NOT t AND NOT f; tstb(54, FALSE, a); +++ a:=NOT f AND NOT t; tstb(55, FALSE, a); +++ a:=NOT f AND NOT f; tstb(56, TRUE, a); +++ a:=NOT t OR NOT t; tstb(57, FALSE, a); +++ a:=NOT t OR NOT f; tstb(58, TRUE, a); +++ a:=NOT f OR NOT t; tstb(59, TRUE, a); +++ a:=NOT f OR NOT f; tstb(60, TRUE, a); +++ +++ a:=t; tstb(61, TRUE, a); +++ a:=a AND t; tstb(62, TRUE, a); +++ a:=a OR t; tstb(63, TRUE, a); +++ a:=a OR f; tstb(64, TRUE, a); +++ a:=a AND f; tstb(65, FALSE, a); +++ a:=a AND f; tstb(66, FALSE, a); +++ a:=a AND t; tstb(67, FALSE, a); +++ a:=a OR f; tstb(68, FALSE, a); +++ a:=a OR t; tstb(69, TRUE, a); +++ a:=t; tstb(70, TRUE, a); +++ a:=t AND a; tstb(71, TRUE, a); +++ a:=t OR a; tstb(72, TRUE, a); +++ a:=f OR a; tstb(73, TRUE, a); +++ a:=f AND a; tstb(74, FALSE, a); +++ a:=f AND a; tstb(75, FALSE, a); +++ a:=t AND a; tstb(76, FALSE, a); +++ a:=f OR a; tstb(77, FALSE, a); +++ a:=t OR a; tstb(78, TRUE, a); +++ SKIP +++END; +++ +++BEGIN +++ BOOL t = TRUE; BOOL f = FALSE; +++ tstb(79, TRUE, t OR f); +++ tstb(80, TRUE, t OR t); +++ tstb(81, TRUE, f OR t); +++ tstb(82, FALSE, f OR f); +++ tstb(83, TRUE, NOT (f OR f)); +++ tstb(84, TRUE, NOT (f AND f)); +++ tstb(85, TRUE, t AND t); +++ tstb(86, FALSE, t AND f); +++ tstb(87, FALSE, f AND t); +++ tstb(88, FALSE, f AND f); +++ tstb(89, TRUE, (t OR t) OR (f OR f)); +++ tstb(90, FALSE, (t OR t) AND (f OR f)); +++ tstb(91, TRUE, t OR (f OR f)); +++ tstb(92, TRUE, NOT (t AND (f OR f))); +++ tstb(93, FALSE, NOT NOT ((f OR f) OR f)); +++ tstb(94, TRUE, NOT NOT NOT ((f OR f) AND f)); +++ IF t OR f THEN SKIP ELSE tste(95) FI; +++ IF t OR t THEN SKIP ELSE tste(96) FI; +++ IF f OR t THEN SKIP ELSE tste(97) FI; +++ IF f OR f THEN tste(98) FI; +++ IF NOT (f OR f) THEN SKIP ELSE tste(99) FI; +++ IF NOT (f AND f) THEN SKIP ELSE tste(100) FI; +++ IF t AND t THEN SKIP ELSE tste(101) FI; +++ IF t AND f THEN tste(102) FI; +++ IF f AND t THEN tste(103) FI; +++ IF f AND f THEN tste(104) FI; +++ IF (t OR t) AND (t OR t) THEN SKIP ELSE tste(105) FI; +++ IF (t OR t) OR (t OR t) THEN SKIP ELSE tste(106) FI; +++ IF (t OR t) OR f THEN SKIP ELSE tste(107) FI; +++ IF (t OR t) AND t THEN SKIP ELSE tste(108) FI; +++ IF t OR (t OR t) THEN SKIP ELSE tste(109) FI; +++ IF t AND (t OR f) THEN SKIP ELSE tste(110) FI; +++ BOOL a1; a1:=t AND f; tstb(111, FALSE, a1); +++ BOOL a2; a2:=NOT (t OR f); tstb(112, FALSE, a2); +++ BEGIN +++ BOOL t; t := TRUE; +++ BOOL f; f:=FALSE; +++ IF (NOT (NOT ((t OR t) AND (t OR t)) OR +++ ((f OR f) OR f) AND (t OR f AND f)) AND f) +++ OR NOT t +++ THEN tste(113) ELSE SKIP FI; +++ BOOL x; x:= +++ (NOT (NOT ((t OR t) AND (t OR t)) OR +++ ((f OR f) OR f) AND (t OR (f AND f))) AND f) +++ OR NOT t; +++ tstb(114, FALSE, x); +++ BOOL y = +++ (NOT (NOT ((t OR t) AND (t OR t)) OR +++ ((f OR f) OR f) AND (t OR (f AND f))) AND f) +++ OR NOT t; +++ tstb(115, FALSE, y) +++ END +++END; +++ +++puts("Test: NE, EQ for booleans\n"); +++BEGIN +++ BOOL t = TRUE; BOOL f = FALSE; +++ tstb(116, TRUE, t NE f); +++ tstb(117, FALSE, t NE t); +++ tstb(118, TRUE, f NE t); +++ tstb(119, FALSE, f NE f); +++ tstb(120, TRUE, NOT (f NE f)); +++ tstb(121, FALSE, NOT (f EQ f)); +++ tstb(122, TRUE, t EQ t); +++ tstb(123, FALSE, t EQ f); +++ tstb(124, FALSE, f EQ t); +++ tstb(125, TRUE, f EQ f); +++ tstb(126, FALSE, (t NE t) NE (f NE f)); +++ tstb(127, TRUE, (t NE t) EQ (f NE f)); +++ tstb(128, TRUE, t NE (f NE f)); +++ tstb(129, TRUE, NOT (t EQ (f NE f))); +++ tstb(130, FALSE, NOT NOT ((f NE f) NE f)); +++ tstb(131, FALSE, NOT NOT NOT ((f NE f) EQ f)); +++ IF t NE f THEN SKIP ELSE tste(132) FI; +++ IF t NE t THEN tste(133) FI; +++ IF f NE t THEN SKIP ELSE tste(134) FI; +++ IF f NE f THEN tste(135) FI; +++ IF NOT (f NE f) THEN SKIP ELSE tste(136) FI; +++ IF NOT (f EQ f) THEN tste(137) FI; +++ IF t EQ t THEN SKIP ELSE tste(138) FI; +++ IF t EQ f THEN tste(139) FI; +++ IF f EQ t THEN tste(140) FI; +++ IF f EQ f THEN SKIP ELSE tste(141) FI; +++ IF (t NE t) EQ (t NE t) THEN SKIP ELSE tste(142) FI; +++ IF (t NE t) NE (t NE t) THEN tste(143) FI; +++ IF (t NE t) NE f THEN tste(144) FI; +++ IF (t NE t) EQ t THEN tste(145) FI; +++ IF t NE (t NE t) THEN SKIP ELSE tste(146) FI; +++ IF t EQ (t NE f) THEN SKIP ELSE tste(147) FI; +++ BOOL a1; a1:=t EQ f; tstb(148, FALSE, a1); +++ BOOL a2; a2:=NOT (t NE f); tstb(149, FALSE, a2); +++ BEGIN +++ BOOL t; t := TRUE; +++ BOOL f; f:=FALSE; +++ IF (NOT (NOT ((t NE t) EQ (t NE t)) NE +++ ((f NE f) NE f) EQ (t NE f EQ f)) EQ f) +++ NE NOT t +++ THEN SKIP ELSE tste(150) FI; +++ BOOL x; x:= +++ (NOT (NOT ((t NE t) EQ (t NE t)) NE +++ ((f NE f) NE f) EQ (t NE (f EQ f))) EQ f) +++ NE NOT t; +++ tstb(151, TRUE, x); +++ BOOL y = +++ (NOT (NOT ((t NE t) EQ (t NE t)) NE +++ ((f NE f) NE f) EQ (t NE (f EQ f))) EQ f) +++ NE NOT t; +++ tstb(152, TRUE, y) +++ END +++END; +++ +++puts("Test: NOT\n"); +++BEGIN +++ BOOL a1, a2, a3, b1, b2, b3; +++ BOOL a4=NOT FALSE; BOOL a5=NOT NOT FALSE; +++ BOOL a6=NOT NOT NOT FALSE; +++ BOOL a7=NOT a6; BOOL a8=NOT a7; BOOL a9=NOT NOT a8; +++ BOOL a10=NOT NOT NOT a9; +++ IF NOT TRUE THEN tste(153) FI; +++ IF NOT NOT TRUE THEN SKIP ELSE tste(154) FI; +++ IF NOT NOT NOT TRUE THEN tste(155) FI; +++ a1:=NOT TRUE; a2:=NOT NOT FALSE; +++ a3:=NOT NOT NOT TRUE; +++ b1:=NOT TRUE AND FALSE; +++ b2:=NOT NOT TRUE AND FALSE; +++ b3:=TRUE OR NOT NOT NOT TRUE OR FALSE; +++ tstb(156, FALSE, a1); +++ tstb(157, FALSE, a2); +++ tstb(158, FALSE, a3); +++ tstb(159, TRUE, a4); +++ tstb(160, FALSE, a5); +++ tstb(161, TRUE, a6); +++ tstb(162, FALSE, a7); +++ tstb(163, TRUE, a8); +++ tstb(164, TRUE, a9); +++ tstb(165, FALSE, a10); +++ tstb(166, FALSE, b1); +++ tstb(167, FALSE, b2); +++ tstb(168, TRUE, b3) +++END; +++ +++puts("Test: EQ, NE, LT, LE, GT, GE\n"); +++BEGIN +++ IF -1=-1 THEN SKIP ELSE tste(169) FI; +++ tstb(170, TRUE, -LONG 1=-LONG 1); +++ IF -1/=1 THEN SKIP ELSE tste(171) FI; +++ tstb(172, TRUE, -LONG 1/=LONG 1); +++ IF 1 /= -1 THEN SKIP ELSE tste(173) FI; +++ tstb(174, TRUE, LONG 1/=-LONG 1); +++ IF 1 =1 THEN SKIP ELSE tste(175) FI; +++ tstb(176, TRUE, LONG 1=LONG 1); +++ IF 0=0.0 THEN SKIP ELSE tste(177) FI; +++ tstb(178, TRUE, LONG 0=LONG 0.0); +++ IF 1.0=1 THEN SKIP ELSE tste(179) FI; +++ tstb(180, TRUE, LONG 1.0=LONG 1); +++ IF -1.0=-1.0 THEN SKIP ELSE tste(181) FI; +++ tstb(182, TRUE, -LONG 1.0=-LONG 1.0); +++ IF -1.0/=1.0 THEN SKIP ELSE tste(183) FI; +++ tstb(184, TRUE, LENG-1.0/=LONG 1.0); +++ IF 1.0/= -1.0 THEN SKIP ELSE tste(185) FI; +++ tstb(186, TRUE, LONG 1.0/=LENG-1.0); +++ BOOL +++ a1=1=1, a2=1/=1, a3=1>1, +++ a4=1<1, a5=1<= 1, a6=1>=0, +++ a7=1.0=2.0, a8=1.0/=2.0, a9=1.0<2.0, +++ a10=1.0>0.0, a11=1.0<=1.0, +++ a12=1.0>=-1.0; +++ tstb(187, TRUE, a1); +++ tstb(188, FALSE, a2); +++ tstb(189, FALSE, a3); +++ tstb(190, FALSE, a4); +++ tstb(191, TRUE, a5); +++ tstb(192, TRUE, a6); +++ tstb(193, FALSE, a7); +++ tstb(194, TRUE, a8); +++ tstb(195, TRUE, a9); +++ tstb(196, TRUE, a10); +++ tstb(197, TRUE, a11); +++ tstb(198, TRUE, a12); +++ IF 1 = 1 THEN SKIP ELSE tste(199) FI; +++ tstb(200, TRUE, 1=1); +++ IF NOT (1/=1) THEN SKIP ELSE tste(201) FI; +++ tstb(202, TRUE, NOT NOT NOT (1/=1)); +++ IF 1/=2 AND 2/=3 AND 4/=5 THEN SKIP ELSE tste(203) FI +++END; +++ +++BEGIN +++ REAL j; +++ [-3 : 3] BOOL lt0; +++ lt0[-3]:= lt0[-2]:= lt0[-1]:= TRUE; +++ lt0[0]:= lt0[1]:= lt0[2]:= lt0[3]:= FALSE; +++ FOR i FROM -3 BY 1 TO 3 +++ DO +++ tstb(204, NOT(lt0[i] OR lt0[-i]), i=0); +++ tstb(205, lt0[i] OR lt0[-i], i/=0); +++ tstb(206, lt0[-i], i>0); +++ tstb(207, NOT lt0[i], i>=0); +++ tstb(208, lt0[i], i<0); +++ tstb(209, NOT lt0[-i], i<=0); +++ j:=i; +++ tstb(210, NOT(lt0[i] OR lt0[-i]), j=0); +++ tstb(211, lt0[i] OR lt0[-i], j/=0); +++ tstb(212, lt0[-i], j>0); +++ tstb(213, NOT lt0[i], j>=0); +++ tstb(214, lt0[i], j<0); +++ tstb(215, NOT lt0[-i], j<=0) +++ OD +++END; +++ +++puts("Test: monadic -\n"); +++BEGIN +++ INT x0, x1, x2, x3; LONG INT z0, z1, z2, z3; +++ REAL y0, y1, y2, y3; LONG REAL t0, t1, t2, t3; +++ INT x4 = 10; LONG INT z4 = LONG 10; +++ REAL y4 = x4; LONG REAL t4 = z4; +++ z0 := --LONG 38; z1 := -LONG 1000000000; z2 := -z1; +++ x0:=--79; x1 := -1; x2 := -x1; x3 := -SHORTEN z0; +++ t0 := --LONG 8.7; t1 := -LONG 79.99e-2; t2 := -t1; +++ y0 := --6.7e-4; y1 := -39.47e-2; y2 := -y1; y3 := -SHORTEN t2; +++ tsti(216, +79, x0); +++ tsti(217, -1, x1); +++ tsti(218, +1, x2); +++ tsti(219, -38, x3); +++ tsti(220, +10, x4); +++ tstli(221, +LONG 38, z0); +++ tstli(222, -LONG 1000000000, z1); +++ tstli(223, +LONG 1000000000, z2); +++ tstli(224, +LONG 10, z4); +++ tstr(225, +6.7e-4, y0); +++ tstr(226, -3.947e-1, y1); +++ tstr(227, +3.947e-1, y2); +++ tstr(228, -7.999e-1, y3); +++ tstr(229, +1e+1, y4); +++ tstlr(230, +LONG 8.7e+0, t0); +++ tstlr(231, -LONG 7.999e-1, t1); +++ tstlr(232, +LONG 7.999e-1, t2); +++ tstlr(233, +LONG 10e+0, t4) +++END; +++ +++puts("Test: dyadic -\n"); +++BEGIN +++ tsti(234, -2, 1-3); +++ tstli(235, +LONG 4, LONG 7-LONG 3); +++ tsti(236, -4, -1-3); +++ tstli(237, -LONG 13, -LONG 8-LONG 5); +++ tsti(238, +4, 1--3); +++ tstli(239, +LONG 7, LONG 4--LONG 3); +++ tsti(240, +2, -1--3); +++ tstli(241, -LONG 10, -LONG 5--LENG-5); +++ +++ tstr(242, -6.4e+0, 1-7.4); +++ tstlr(243, +LONG 8e+0, LONG 4-LENG-4.0); +++ tstr(244, +6.4e+0, 7.4-1); +++ tstlr(245, -LONG 1.2e+1, -LONG 6.0-LONG 6); +++ tstr(246, +1.22e+1, 6.1--6.1); +++ tstlr(247, +LONG 8.6e+0, LONG 4.3--LONG 4.3); +++ +++ tsti(248, +29999, 30000-1); +++ tstli(249, +LONG 999999998, LONG 1000000000-LONG 2); +++ +++ tstr(250, +1e+0, -1.0-(-1.0-(-1.0-(-1.0-1)))); +++ tstlr(251, +LONG 0e+0, +++ -LONG 1.0-(-LONG 1.0-(-LONG 1.0-(-LONG 1.0 +++ -(LONG 1-LONG 1.0))))) +++END; +++ +++puts("Test: dyadic +\n"); +++BEGIN +++ tsti(252, +4, 1+3); +++ tstli(253, +LONG 10, LONG 7+LONG 3); +++ tsti(254, +2, -1+3); +++ tstli(255, -LONG 3, -LONG 8+LONG 5); +++ tsti(256, -2, 1+-3); +++ tstli(257, +LONG 1, LONG 4+-LONG 3); +++ tsti(258, -4, -1+-3); +++ tstli(259, +LONG 0, -LONG 5+-LENG-5); +++ +++ tstr(260, +8.4e+0, 1+7.4); +++ tstlr(261, +LONG 0e+0, LONG 4+LENG-4.0); +++ tstr(262, +8.4e+0, 7.4+1); +++ tstlr(263, +LONG 0e+0, -LONG 6.0+LONG 6); +++ tstr(264, +0e+0, 6.1+-6.1); +++ tstlr(265, +LONG 0e+0, LONG 4.3+-LONG 4.3); +++ +++ tsti(266, -29999, -30000+1); +++ tstli(267, -LONG 999999998, -LONG 1000000000+LONG 2); +++ +++ tstr(268, -3e+0, -1.0+(-1.0+(-1.0+(-1.0+1)))); +++ tstlr(269, -LONG 2e+0, +++ -LONG 1.0+(-LONG 1.0+(-LONG 1.0+(-LONG 1.0 +++ +(LONG 1+LONG 1.0))))) +++END; +++ +++puts("Test: ABS\n"); +++BEGIN +++ tsti(270, +19, ABS 19); +++ tsti(271, +19, ABS-19); +++ tsti(272, +0, ABS 0); +++ tsti(273, +32, SHORTEN ABS LONG 32); +++ tsti(274, +43, SHORTEN ABS-LONG 43); +++ tsti(275, +0, SHORTEN ABS LONG 0); +++ tstr(276, +1.97e+2, ABS 197.0); +++ tstr(277, +4.97e+1, ABS-49.7); +++ tstr(278, +0e+0, ABS .0); +++ tstr(279, +1e+0, SHORTEN ABS LONG 1.0); +++ tstr(280, +0e+0, SHORTEN ABS LONG 0.0e+7); +++ tstr(281, +1.9e+0, SHORTEN ABS-LONG 1.9) +++END; +++ +++puts("Test: * for integers\n"); +++BEGIN +++ tsti(282, +6, 2*3); +++ tsti(283, -6, -2*3); +++ tsti(284, -6, 2*-3); +++ tsti(285, +6, -2*-3); +++ tsti(286, +6, SHORTEN(-LONG 2*-LONG 3)); +++ tsti(287, -6, SHORTEN(LONG 2*-LONG 3)); +++ tsti(288, -6, SHORTEN(-LONG 2*LONG 3)); +++ tsti(289, +6, SHORTEN(LONG 2*LONG 3)); +++ tsti(290, +0, 0*10); +++ tstli(291, +LONG 0, LONG 0*-LONG 10); +++ tsti(292, +0, 10*0); +++ tstli(293, +LONG 0, -LONG 10*LENG 0); +++ tsti(294, +3, 1*3); +++ tstli(295, +LONG 3, LONG 3*LONG 1); +++ tsti (296, +16384, 2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2*(2 +++ )))))))))))))) +++END; +++ +++puts("Test: * mixed\n"); +++BEGIN +++ REAL a1=1.0; LONG REAL a2=-LONG 1.0; +++ REAL a3; LONG REAL a4; +++ tstr(297, +4.2e+1, 6.0*7.0); +++ tstlr(298, +LONG 2.6e+1, LONG 13.0*LONG 2.0); +++ tstr(299, -4.2e+1, -6.0*7.0); +++ tstlr(300, -LONG 6e+0, -LONG 2.0*LONG 3.0); +++ tstr(301, -5.6e+1, 7.0*-8.0); +++ tstlr(302, -LONG 4.8e+1, LONG 16.0*-LENG 3.0); +++ tstr(303, +5.6e+1, -8.0*-7.0); +++ tstlr(304, +LONG 2.5e+1, -LENG 5.0*-LONG 5.0); +++ +++ tstr(305, +4.2e+1, 7*6.0); +++ tstlr(306, +LONG 2.1e+1, LONG 3*LONG 7.0); +++ tstr(307, +4.2e+1, 6.0*7); +++ tstlr(308, +LONG 3.6e+1, LONG 6.0*LONG 6); +++ tstr(309, +4.2e+1, -7*-6.0); +++ tstlr(310, +LONG 2.25e+2, -LONG 15*-LONG 15.0); +++ tstr(311, +4.2e+1, -6.0*-7); +++ tstlr(312, +LONG 1.9e+1, -LONG 19.0*-LONG 1); +++ +++ a3:=14.0; a4:=LENG-13.0; +++ tstr(313, +1.4e+1, a3*a1); +++ tstlr(314, +LONG 1.3e+1, a2*a4); +++ tstr(315, +10e-43, 1.0e-20*1.0e-22); +++ tstlr(316, +LONG 10e+39, LONG 1.0e+20*LONG 1.0e+20) +++END; +++ +++puts("Test: OVER, MOD\n"); +++BEGIN +++ tsti(317, +2, 12 OVER 6); +++ tsti(318, -5, -20 OVER 4); +++ tsti(319, -25, 100 OVER -4); +++ tsti(320, +10, -10 OVER -1); +++ tsti(321, +2, 7 OVER 3); +++ tsti(322, -2, -8 OVER 3); +++ tsti(323, -1, 10 OVER -7); +++ tsti(324, +1, -49 OVER -27); +++ tsti(325, +3, SHORTEN(LONG 10 OVER LONG 3)); +++ tsti(326, -1, SHORTEN(-LONG 50 OVER LONG 50)); +++ tsti(327, -1, -12 OVER 7); +++ tsti(328, -1, 12 OVER -7); +++ tsti(329, -1, SHORTEN(-LONG 50 OVER LONG 50)); +++ tsti(330, +0, SHORTEN(LONG 0 OVER -LONG 25)); +++ tsti(331, +0, 12 MOD 6); +++ tsti(332, +0, -20 MOD 4); +++ tsti(333, +0, 100 MOD -4); +++ tsti(334, +0, -10 MOD -1); +++ tsti(335, +1, 7 MOD 3); +++ tsti(336, +1, -8 MOD 3); +++ tsti(337, +3, 10 MOD -7); +++ tsti(338, +5, -49 MOD -27); +++ tsti(339, +1, SHORTEN(LONG 10 MOD LONG 3)); +++ tsti(340, +0, SHORTEN(-LONG 50 MOD LONG 50)); +++ tsti(341, +2, -12 MOD 7); +++ tsti(342, +5, 12 MOD -7); +++ tsti(343, +0, SHORTEN(-LONG 50 MOD LONG 50)); +++ tsti(344, +0, SHORTEN(LONG 0 MOD -LONG 25)) +++END; +++ +++puts("Test: /\n"); +++BEGIN +++ REAL a, b; LONG REAL c, d; REAL x = 127.0; +++ FOR i FROM -3 BY 1 TO 3 DO +++ FOR j FROM -3 BY 1 TO 3 DO +++ IF j /= 0 THEN +++ a:=i/j; +++ tstr(345, i, a*j); +++ a:=i; a:=a/j; +++ tstr(346, i, a*j); +++ a:=j; a :=i/a; +++ tstr(347, i, a*j); +++ a := i; b := j; a := a/b; +++ tstr(348, i, a*j); +++ c := LENG i/LENG j; +++ tstlr(349, LENG i, c*LENG j); +++ c := LENG i; c := c/LENG j; +++ tstlr(350, LENG i, c*LENG j); +++ c := LENG j; c :=LENG i/c; +++ tstlr(351, LENG i, c*LENG j); +++ c := LENG i; d:=LENG j; c:=c/d; +++ tstlr(352, LENG i, c*LENG j) +++ FI +++ OD OD; +++ tstr(353, -1e+0, 1.9e-7/-1.9e-7); +++ a:=19.74e+2; +++ tstr(354, +1e+0, 19.74e+2/a); +++ tstr(355, +10e-5, 19.74e-2/19.74e+2); +++ tstr(356, +1e+3, 127000.0/x); +++ tstr(357, +1e+2, x/1.27); +++ tstr(358, -1e+1, x/-12.7); +++ tstr(359, +1e+0, x/x); +++ a:=1270.0; +++ tstr(360, +10e-2, x/a); +++ a:=0.0149; tstr(361, +1e+0, a/149e-4); +++ tstr(362, +1e+0, a/a); +++ tstr(363, +1.173228346456693e-4, a/x); +++ tstr(364, -1e-2, a/-1.49); +++ tstr(365, +1.27e+2, -x/-1.0); +++ tstr(366, -1e+0, -x/x); +++ tstr(367, -8.523489932885906e+3, -x/a); +++ tstr(368, +1e+0, -x/-x) +++END; +++ +++puts("Test: **\n"); +++BEGIN +++ INT a; +++ tsti(369, +1, 1**0); +++ tsti(370, +1, 10**0); +++ tsti(371, +1, -20**0); +++ tsti(372, +1, 1**1); +++ tsti(373, +10, 10**1); +++ tsti(374, -10, -10**1); +++ tsti(375, +0, 0**1); +++ tsti(376, +0, 0**30000); +++ tsti(377, +1, 0**0); +++ tsti(378, +49, 7**2); +++ tsti(379, +1, 1**2); +++ tsti(380, +9, -3**2); +++ tsti(381, -27, -3**3); +++ tsti(382, +32, 2**5); +++ tsti(383, +81, SHORTEN(LONG 9**2)); +++ tsti(384, -19683, SHORTEN(-LONG 27**3)); +++ tstr(385, +2.7e+1, 3.0**3); +++ tstr(386, +6.5536e+4, 2.0**16); +++ tstr(387, -3.2768e+4, -2.0**15); +++ tstr(388, +3.6e+1, -6.0**2); +++ tstr(389, +2.5e-1, 2.0**-2); +++ tstr(390, -10e-4, -10.0**-3); +++ tstr(391, +1e+0, 3.0**-0); +++ tstr(392, +1e+0, 3.0**-0); +++ tstr(393, +4.9e+1, SHORTEN(LONG 7.0**2)); +++ tstr(394, +3.969e+1, SHORTEN(-LONG 6.3**2)); +++ tstr(395, +1.385019350059107e-8, SHORTEN(LONG 37.3**-5)); +++ a:= 1; +++ FOR i FROM 1 BY 1 TO 10 +++ DO tsti(396, a, (-1)**(i-1)); a:= -a OD; +++ a:= 0; +++ FOR i FROM 1 BY 1 TO 10 +++ DO a := a + 1**30000 OD; +++ tsti(397, +10, a) +++END; +++ +++puts("Test: SHORTEN, LENG\n"); +++BEGIN +++ LONG INT a1 = LONG 128; LONG INT a2; +++ LONG REAL a3 = LONG 1.9999999999; LONG REAL a4; +++ REAL a6; +++ INT a5; a5 := 30000; +++ a6 := 2/3; +++ tstli(398, +LONG 179, LENG 179); +++ tsti(399, +19, SHORTEN LONG 19); +++ tsti(400, +30000, SHORTEN LONG 30000); +++ tsti(401, -27, SHORTEN-LONG 27); +++ tsti(402, -30000, SHORTEN-LONG 30000); +++ tsti(403, +128, SHORTEN a1); +++ a2:=LONG 0; +++ tsti(404, +0, SHORTEN a2); +++ tsti(405, +30000, SHORTEN LENG a5); +++ tstr(406, +1.234566666e-1, SHORTEN LONG .1234566666); +++ tstr(407, +1.9999999999e+0, SHORTEN a3); +++ a4:=LONG .1111111111; tstr(408, +1.111111111e-1, SHORTEN a4); +++ tstr(409, -3.333333333333333e-1, SHORTEN-LENG (1/3)); +++ tstr(410, +6.666666666666667e-1, SHORTEN LENG a6) +++END; +++ +++puts("Test: ODD\n"); +++BEGIN +++ IF ODD-1 THEN SKIP ELSE tste(411) FI; +++ tstb(412, FALSE, ODD 2); +++ IF NOT ODD-LONG 2 THEN SKIP ELSE tste(413) FI; +++ tstb(414, TRUE, ODD LONG 1); +++ BOOL a1, a2; +++ a1:= FALSE; +++ FOR i FROM -10 BY 1 TO 10 +++ DO tstb(415, a1, ODD i); a1:= NOT a1 OD; +++ a1:=ODD-3; +++ a2:=ODD-LONG 0; +++ BOOL b1 = NOT ODD -13; +++ BOOL b2 = NOT NOT ODD -LONG 16; +++ tstb(416, TRUE, a1); +++ tstb(417, FALSE, a2); +++ tstb(418, FALSE, b1); +++ tstb(419, FALSE, b2); +++ tstb(420, FALSE, NOT NOT NOT ODD 55); +++ tstb(421, FALSE, NOT NOT NOT ODD LONG 1) +++END; +++ +++puts("Test: SIGN\n"); +++BEGIN +++ tsti(422, +1, SIGN 7); +++ tsti(423, +0, SIGN 0); +++ tsti(424, -1, SIGN-7); +++ tsti(425, +1, SIGN LONG 1000000000); +++ tsti(426, +0, SIGN LONG 0); +++ tsti(427, -1, SIGN-LONG 8); +++ tsti(428, +1, SIGN 1.9); +++ tsti(429, +0, SIGN 0.0); +++ tsti(430, -1, SIGN-3.6); +++ tsti(431, +1, SIGN LONG 67.0); +++ tsti(432, +0, SIGN LONG 0.0); +++ tsti(433, -1, SIGN-LONG 37.0) +++END; +++ +++puts("Test: ROUND, ENTIER\n"); +++BEGIN +++ REAL a1 = 1.7; LONG REAL a2 = LONG 27.7; +++ REAL a3; LONG REAL a4; +++ tstli(434, -LONG 28, LENG ROUND-27.7); +++ tstli(435, -LONG 28, LENG ENTIER-27.7); +++ tstli(436, +LONG 2, LENG ROUND a1); +++ tstli(437, +LONG 1, LENG ENTIER a1); +++ tstli(438, +LONG 13, LENG ROUND 12.9); +++ tstli(439, +LONG 12, LENG ENTIER 12.994); +++ a3:=134e+2; a4:=LONG 135.1e-1; +++ tstli(440, +LONG 13400, LENG ROUND a3); +++ tstli(441, +LONG 13400, LENG ENTIER a3); +++ tstli(442, +LONG 14, LENG ROUND SHORTEN a4); +++ tstli(443, +LONG 13, LENG ENTIER SHORTEN a4); +++ tstli(444, -LONG 1, ROUND-LENG 127e-2); +++ tstli(445, +LONG 1, ENTIER--LONG 127e-2); +++ tstli(446, +LONG 28, ROUND a2); +++ tstli(447, +LONG 27, ENTIER a2); +++ tstli(448, +LONG 13, ROUND LONG 12.87); +++ tstli(449, +LONG 12, ENTIER LONG 12.87); +++ tstli(450, +LONG 14, ROUND a4); +++ tstli(451, +LONG 13, ENTIER a4); +++ tstli(452, -LONG 2, ROUND-LONG 1.5001); +++ tstli(453, -LONG 2, ENTIER-LENG 1.5001); +++ tstli(454, +LONG 6, LENG ROUND 6.499) +++END; +++ +++puts("Test: EQ, NE, LT, LE, GT, GE for chars\n"); +++BEGIN +++ CHAR a = "1"; CHAR b = "2"; CHAR c; c := "1"; +++ [1:1]CHAR d; d[1]:="$"; +++ INT abs0 = ABS"0", abs1 = ABS"1", abs2 = ABS"2"; +++ +++ tstb(455, TRUE, "1"="1"); +++ tstb(456, FALSE, "1"/="1"); +++ tstb(457, TRUE, "1"<="1"); +++ tstb(458, FALSE, "1"<"1"); +++ tstb(459, TRUE, "1">="1"); +++ tstb(460, FALSE, "1">"1"); +++ tstb(461, FALSE, "1"="2"); +++ tstb(462, TRUE, "1"/="2"); +++ tstb(463, TRUE, "1"<="2"); +++ tstb(464, TRUE, "1"<"2"); +++ tstb(465, FALSE, "1">="2"); +++ tstb(466, FALSE, "1">"2"); +++ tstb(467, FALSE, "2"="1"); +++ tstb(468, TRUE, "2"/="1"); +++ tstb(469, FALSE, "2"<="1"); +++ tstb(470, FALSE, "2"<"1"); +++ tstb(471, TRUE, "2">="1"); +++ tstb(472, TRUE, "2">"1"); +++ +++ tstb(473, TRUE, a=a); +++ tstb(474, FALSE, a/=a); +++ tstb(475, TRUE, a<=a); +++ tstb(476, FALSE, a=a); +++ tstb(478, FALSE, a>a); +++ tstb(479, FALSE, a=b); +++ tstb(480, TRUE, a/=b); +++ tstb(481, TRUE, a<=b); +++ tstb(482, TRUE, a=b); +++ tstb(484, FALSE, a>b); +++ tstb(485, FALSE, b=a); +++ tstb(486, TRUE, b/=a); +++ tstb(487, FALSE, b<=a); +++ tstb(488, FALSE, b=a); +++ tstb(490, TRUE, b>a); +++ +++ tstb(491, TRUE, REPR abs1=REPR abs1); +++ tstb(492, FALSE, REPR abs1/=REPR abs1); +++ tstb(493, TRUE, REPR abs1<=REPR abs1); +++ tstb(494, FALSE, REPR abs1=REPR abs1); +++ tstb(496, FALSE, REPR abs1>REPR abs1); +++ tstb(497, FALSE, REPR abs1=REPR abs2); +++ tstb(498, TRUE, REPR abs1/=REPR abs2); +++ tstb(499, TRUE, REPR abs1<=REPR abs2); +++ tstb(500, TRUE, REPR abs1=REPR abs2); +++ tstb(502, FALSE, REPR abs1>REPR abs2); +++ tstb(503, FALSE, REPR abs2=REPR abs1); +++ tstb(504, TRUE, REPR abs2/=REPR abs1); +++ tstb(505, FALSE, REPR abs2<=REPR abs1); +++ tstb(506, FALSE, REPR abs2=REPR abs1); +++ tstb(508, TRUE, REPR abs2>REPR abs1); +++ +++ tstb(509, TRUE, REPR abs1=c); +++ tstb(510, FALSE, REPR abs1/=c); +++ tstb(511, TRUE, REPR abs1<=c); +++ tstb(512, FALSE, REPR abs1=c); +++ tstb(514, FALSE, REPR abs1>c); +++ tstb(515, FALSE, REPR abs0=c); +++ tstb(516, TRUE, REPR abs0/=c); +++ tstb(517, TRUE, REPR abs0<=c); +++ tstb(518, TRUE, REPR abs0=c); +++ tstb(520, FALSE, REPR abs0>c); +++ tstb(521, FALSE, REPR abs2=c); +++ tstb(522, TRUE, REPR abs2/=c); +++ tstb(523, FALSE, REPR abs2<=c); +++ tstb(524, FALSE, REPR abs2=c); +++ tstb(526, TRUE, REPR abs2>c); +++ +++ tstb(527, TRUE, c=REPR abs1); +++ tstb(528, FALSE, c/=REPR abs1); +++ tstb(529, TRUE, c<=REPR abs1); +++ tstb(530, FALSE, c=REPR abs1); +++ tstb(532, FALSE, c>REPR abs1); +++ tstb(533, FALSE, c=REPR abs0); +++ tstb(534, TRUE, c/=REPR abs0); +++ tstb(535, FALSE, c<=REPR abs0); +++ tstb(536, FALSE, c=REPR abs0); +++ tstb(538, TRUE, c>REPR abs0); +++ tstb(539, FALSE, c=REPR abs2); +++ tstb(540, TRUE, c/=REPR abs2); +++ tstb(541, TRUE, c<=REPR abs2); +++ tstb(542, TRUE, c=REPR abs2); +++ tstb(544, FALSE, c>REPR abs2); +++ +++ tstb(545, TRUE, "$"=d[1]); +++ tstb(546, FALSE, "$"/=d[1]); +++ tstb(547, TRUE, "$"<=d[1]); +++ tstb(548, FALSE, "$"=d[1]); +++ tstb(550, FALSE, "$">d[1]); +++ tstb(551, TRUE, "$"=d[1]) +++END; +++ ASSERT (errors = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp01.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# ALGOL68 test to see if the compiler exists # +++BEGIN INT i, j, k; +++ INT s := 17, INT t := 3; +++ i := 0; +++ FOR l FROM 0 BY 2 TO 13 DO i +:= l OD; +++ ASSERT (i = 42) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp02.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++# Test that ranges are correct # +++range_of_variables: +++BEGIN INT i, j; +++ i := 3; j := 4; +++ BEGIN INT i, k; +++ i := 2; k := 5; +++ ASSERT (i = 2); +++ ASSERT (k = 5) +++ END; +++ ASSERT (i = 3); +++ ASSERT (j = 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp03.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++# Referencing and dereferencing. # +++BEGIN INT i1 := 1; +++ INT i2 := 2; +++ INT i3 := 3; +++ INT ii1 := i1; +++ INT ii2 := i2; +++ REF INT iii1 := ii1; +++ ASSERT (iii1 = 1); +++ iii1 := ii2; +++ ASSERT (iii1 = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp04.a68 ++@@ -0,0 +1,46 @@ +++# { dg-options "-fstropping=upper" } # +++# Multiple values. # +++multiples: +++structures: +++BEGIN [1:100]INT i, j, k; +++ FOR l TO 100 DO i[l] := j[l] := k[l] := l OD; +++ FOR l TO 100 +++ DO IF i[l] /= l OR j[l] /= l OR k[l] /= l +++ THEN ASSERT (FALSE) +++ FI +++ OD; +++ [1:100]REAL p; +++ p[1] := 1.0; +++ p[1:5] := (2.0, 3.0, 4.0, 5.0, 6.0); +++ FOR i FROM 1 TO 5 DO ASSERT (p[i] = REAL(i) + 1.0) OD; +++ # Test the @ workings # +++ p[2:6 # Implicit @1 #] := (2.0, 3.0, 4.0, 5.0, 6.0); +++ FOR i FROM 2 TO 6 DO ASSERT (p[i] = REAL(i)) OD; +++ p[2:3@8] := p[3:4@8]; +++ ASSERT (UPB p[1:3@9] = 11 AND UPB p[1:0@5] = 4); +++ [1:10,1:10] INT l; +++ FOR i TO 10 DO FOR j TO 10 DO l[i,j] := 10 OD OD; +++ FOR i TO 2 DO FOR j TO 10 DO l[1:2,1:10][i,j] := 11 OD OD; +++ FOR i TO 10 DO FOR j TO 10 +++ DO IF i >= 1 AND i <= 2 +++ THEN ASSERT (l[i,j] = 11) +++ ELSE ASSERT (l[i,j] = 10) +++ FI +++ OD +++ OD; +++ # Structures. # +++ STRUCT ([1:2] INT m, +++ [1:i[5] # Whose value is 5 from above. #]REAL g, +++ BOOL t) s1, s2; +++ t OF s1 := t OF s2 := l[1,1] = l[1:1,1:2][1,1]; +++ ASSERT (t OF s1 AND t OF s2); +++ FOR m TO UPB m OF s1 +++ DO (m OF s1)[m] := ((m OF s2)[3-m] := 50) + 1 OD; +++ g OF s1 := (g OF s2)[] := (1.0, 2.0, 3.0, 4.0, 5.0); +++ ASSERT ((m OF s1)[1] = 51 AND (m OF s1)[2] = 51); +++ # REF STRUCT's # +++ [1:2]REF STRUCT ([]INT m, []REAL g, BOOL t) ss1 := (s1, s2); +++ t OF ss1[2] := FALSE; +++ ASSERT (t OF s1 = TRUE); +++ ASSERT (t OF s2 = FALSE) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp05.a68 ++@@ -0,0 +1,28 @@ +++# { dg-options "-fstropping=upper" } # +++# Simple jumps. # +++(INT j:= 0, i; +++ k: i:= j; +++ IF i >= 2 THEN GOTO l FI; +++ puts ("0"); +++ m: IF i >= 1 THEN n FI; +++ puts ("0"); +++ o: GOTO p; +++ l: puts ("1"); i := i - 2; m; +++ n: puts ("1"); o; +++ p: puts (""); +++ j := j + 1; +++ IF j <= 3 THEN k FI) +++CO +++Result: +++ 0 +++ 0 +++ +++ 0 +++ 1 +++ +++ 1 +++ 0 +++ +++ 1 +++ 1 +++CO ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp07.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++# loops. # +++BEGIN INT i = 5, INT c := 0; +++ FOR i TO i DO c +:= 1 OD; +++ ASSERT (c = 5); +++ INT s = 8; +++ FOR a FROM s BY 1 WHILE INT b = a - s + 1; a <= 2 * s +++ DO INT q := 0, r := a; +++ WHILE r >= b DO (q +:= 1, r -:= b) OD; +++ IF a /= b * q + r OR r >= b +++ THEN ASSERT (FALSE) +++ FI +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp08.a68 ++@@ -0,0 +1,35 @@ +++# { dg-options "-fstropping=upper" } # +++# Simple coercions. # +++BEGIN [1:3]INT ia := (1, 2, 3); +++ PROC get ia = REF[]INT: ia; +++ # Dereferencing. # +++ INT i := LOC REF INT := ia[1]; # Twice dereferenced, at the right moment. # +++ ASSERT (i = 1); +++ REF INT ri := ia[2]; # No deref # +++ REF INT (ri) := -2; +++ ASSERT (ia[1] = 1 AND ia[2] = -2 AND ia[3] = 3); +++ # Deproceduring. # +++ PROC pri = REF INT: ia[3]; pri := -3; # Soft deproc. # +++ ASSERT (ia[1] = 1 AND ia[2] = -2 AND ia[3] = -3); +++ PROC pria = REF[]INT: ia; pria[1] := pria[2]; +++ ASSERT (ia[1] = -2 AND ia[2] = -2 AND ia[3] = -3); +++ # Uniting. # +++ UNION(REAL,[]INT,[,]INT) unia = # some uniting # +++ UNION(REAL,[]INT) # cast # # one uniting # (ia); # deref # +++ ia := (3,2,1); # spoil ia # +++ CASE unia +++ IN ([]INT ia): (ASSERT (ia[1] = -2 AND ia[2] = -2 AND ia[3] = -3); +++ ASSERT (get ia[1] = 3 AND get ia[2] = 2 AND get ia[3] = 1)) +++ OUT SKIP +++ ESAC; +++ # Widening. # +++ REAL x = ia[1]; +++ ASSERT (x > 2.9 AND x < 3.1); +++ # Rowing. # +++ [1:1,1:3] INT iaa; FOR i TO 3 DO iaa[1,i] := 5 + i OD; +++ # Hipping. # +++ REF INT p = NIL, q = NIL; +++ ASSERT (p :=: q); +++ ia := (5, SKIP, 7); ia[2] := 6; +++ ASSERT (ia[1] = 5 AND ia[2] = 6 AND ia[3] = 7) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp09.a68 ++@@ -0,0 +1,17 @@ +++# { dg-options "-fstropping=upper" } # +++# In "situ" permutation # +++BEGIN PROC permvec = (REF[]INT vec, []INT p) VOID: +++ FOR j TO UPB p +++ DO INT k := p[j]; +++ WHILE k > j DO k := p[k] OD; +++ IF k = j +++ THEN INT h = vec[j], INT l := p[k]; +++ WHILE l NE j +++ DO vec[k] := vec[l]; k := l; l := p[k] OD; +++ vec[k] := h +++ FI +++ OD, +++ [1:5]INT x := (4, 5, 1, 3, 2); +++ permvec (x, (3,5,4,1,2)); +++ ASSERT (x[1] = 1 AND x[2] = 2 AND x[3] = 3 AND x[4] = 4 AND x[5] = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp10.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++(INT i := 1; +++ PROC a = (INT j) INT: i + j; +++ (INT i := 2; ASSERT (a(10) = 11) +++ ) +++ ) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp11.a68 ++@@ -0,0 +1,36 @@ +++# { dg-options "-fstropping=upper" } # +++# Translation decimal number to Roman notation and vice versa # +++BEGIN PROC roman = (INT number) STRING: +++ BEGIN INT n := number, STRING result; +++ []STRUCT(INT value, STRING r) table = +++ ((1000, "M"), (900, "CM"), (500, "D"), (400, "DC"), +++ (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), +++ (10, "X"), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")); +++ FOR i TO UPB table +++ DO INT v = value OF table[i], STRING r = r OF table[i]; +++ WHILE v LE n DO (result +:= r, n -:= v) OD +++ OD; +++ result +++ END; +++ +++ PROC value of roman = (STRING text) INT: +++ IF text = "" +++ THEN 0 +++ ELSE OP ABS = (CHAR s) INT: +++ CASE INT p; char in string (s, p, "IVXLCDM"); p +++ IN 1, 5, 10, 50, 100, 500, 1000 +++ ESAC, +++ PROC char in string = (CHAR c, REF INT i, STRING s) BOOL: +++ (FOR k TO UPB s DO (c = s[k] | i := k; l) OD; FALSE EXIT l: TRUE); +++ INT v, maxv := 0, maxp; +++ FOR p TO UPB text +++ DO IF (v := ABS text[p]) > maxv +++ THEN maxp := p; maxv := v +++ FI +++ OD; +++ maxv - value of roman (text[: maxp-1])+ value of roman (text[maxp + 1:]) +++ FI; +++ +++ ASSERT (roman (1968) = "MCMLXVIII"); +++ ASSERT (value of roman ("MCMLXXIII") = 1973) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/simp13.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++# Continued fraction. # +++BEGIN OP / = ([]REAL a, b) REAL: +++ (UPB a = 0 | 0 | a[1]/(b[1] + a[2:]/b[2:])), +++ [1:20]REAL x,y; +++ +++ FOR i TO 20 +++ DO x[i] := (i-1)**2; y[i] := 2*i-1 OD; +++ x[1] := 1; +++ FOR i TO 20 +++ DO 4 * (x[1:i]/y[1:i]) # Approximations of PI # +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/stow02.a68 ++@@ -0,0 +1,15 @@ +++# { dg-options "-fstropping=upper" } # +++# Some slices # +++BEGIN [0:7][0:15] INT a; +++ INT n:= 0; +++ +++ FOR i TO 8 DO FOR j TO 16 DO a[i-1][j-1]:= n+:=1OD OD; +++ ASSERT (a[0][15] = 16); +++ ASSERT (a[0:0 AT 0][0][15] = 16); +++ ASSERT (a[0:0 AT 0][0:0 AT 0][0][3:15][11:13 AT 2][4] = 16); +++CO XXX run-time error +++ []INT k = a[0:0][15] # wrong, a[0:0] has bounds [1:1][0:15], +++ so there occurs overflow #; +++CO +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mcts/stow06.a68 ++@@ -0,0 +1,30 @@ +++# { dg-options "-fstropping=upper" } # +++# Against over-optimization of string comparison. # +++BEGIN +++ STRING newline = "'n"; +++ STRING str = "string with step > 1"; STRING ref str:= str; +++ [1:UPB str] STRUCT(REAL flub, CHAR c) rst; +++ +++ puts ("Result must be:" +++ + newline + str + "." + newline + str + "." + newline +++ + "First test OK" + newline + "Second test OK" + newline +++ + newline + "Result is:" + newline); +++ +++ FOR i TO UPB str DO c OF rst[i]:= ref str[i] OD; +++ puts (c OF rst + "." + newline + ref str + "." + newline); +++ +++ IF c OF rst = str AND c OF rst = ref str +++ THEN puts ("First test OK" + newline) +++ ELSE puts ("Erroneous string, is: " + c OF rst +++ + " , must be: " + str + newline); +++ ASSERT (FALSE) +++ FI; +++ +++ c OF rst:= str; +++ IF c OF rst /= str OR c OF rst /= ref str +++ THEN puts ("Erroneous string, is: " + c OF rst +++ + " , must be: " + str + newline); +++ ASSERT (FALSE) +++ ELSE puts ("Second test OK" + newline) +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/minus-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; +++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; +++ ASSERT (i - 2 = 8); +++ ASSERT (ii - LONG 2 = LONG 8); +++ ASSERT (iii - LONG LONG 2 = LONG LONG 8); +++ ASSERT (ss - SHORT 2 = SHORT 8); +++ ASSERT (sss - SHORT SHORT 2 = SHORT SHORT 8) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/minusab-1.a68 ++@@ -0,0 +1,32 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BEGIN INT i := 10; +++ i -:= 2; +++ ASSERT (i = 8); +++ i MINUSAB 2; +++ ASSERT (i = 6) +++ END; +++ BEGIN LONG INT i := LONG 1000; +++ i -:= LONG 100; +++ ASSERT (i = LONG 900); +++ i MINUSAB LONG 100; +++ ASSERT (i = LONG 800) +++ END; +++ BEGIN LONG LONG INT i := LONG LONG 10000; +++ i -:= LONG LONG 1000; +++ ASSERT (i = LONG LONG 9000); +++ i MINUSAB LONG LONG 1000; +++ ASSERT (i = LONG LONG 8000) +++ END; +++ BEGIN SHORT INT i := SHORT 100; +++ i -:= SHORT 10; +++ ASSERT (i = SHORT 90); +++ i MINUSAB SHORT 10; +++ ASSERT (i = SHORT 80) +++ END; +++ BEGIN SHORT SHORT INT i := SHORT SHORT 10; +++ i -:= SHORT SHORT 1; +++ ASSERT (i = SHORT SHORT 9); +++ i MINUSAB SHORT SHORT 2; +++ ASSERT (i = SHORT SHORT 7) +++ END +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/minusab-2.a68 ++@@ -0,0 +1,20 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BEGIN REAL i := 10.0; +++ i -:= 2.0; +++ ASSERT (i = 8.0); +++ i MINUSAB 2.0; +++ ASSERT (i = 6.0) +++ END; +++ BEGIN LONG REAL i := LONG 1000.0; +++ i -:= LONG 100.0; +++ ASSERT (i = LONG 900.0); +++ i MINUSAB LONG 100.0; +++ ASSERT (i = LONG 800.0) +++ END; +++ BEGIN LONG LONG REAL i := LONG LONG 10000.0; +++ i -:= LONG LONG 1000.0; +++ ASSERT (i = LONG LONG 9000.0); +++ i MINUSAB LONG LONG 1000.0; +++ ASSERT (i = LONG LONG 8000.0) +++ END +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/minusab-3.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := 10; +++ (((n -:= 1))) := 5; +++ ASSERT (n = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/minusab-4.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT num ints := 10; +++ num ints -:= 1; +++ ASSERT (num ints = 9); +++ ASSERT ((LOC INT -:= 12) = -12) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mod-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; +++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; +++ ASSERT (i %* 3 = 1); +++ ASSERT (ii %* LONG 3 = LONG 1); +++ ASSERT (iii %* LONG LONG 3 = LONG LONG 1); +++ ASSERT (ss %* SHORT 3 = SHORT 1); +++ ASSERT (sss MOD SHORT SHORT 3 = SHORT SHORT 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modab-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN (SHORT SHORT INT i := SHORT SHORT 11; i MODAB SHORT SHORT 2; ASSERT (i = SHORT SHORT 1)); +++ (SHORT INT i := SHORT 11; i MODAB SHORT 2; ASSERT (i = SHORT 1)); +++ (INT i := 11; i MODAB 2; ASSERT (i = 1)); +++ (INT i := 11; i %*:= 2; ASSERT (i = 1)); +++ (LONG INT i := LONG 11; i MODAB LONG 2; ASSERT (i = LONG 1)); +++ (LONG INT i := LONG 11; i %*:= LONG 2; ASSERT (i = LONG 1)); +++ (LONG LONG INT i := LONG LONG 11; i MODAB LONG LONG 2; ASSERT (i = LONG LONG 1)); +++ (LONG LONG INT i := LONG LONG 11; i %*:= LONG LONG 2; ASSERT (i = LONG LONG 1)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modab-2.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := 10; +++ (((n MODAB 1))) := 5; +++ ASSERT (n = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mode-indication-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT j; REAL y; +++ MODE R = REAL; +++ BEGIN MODE R = INT; +++ R i := j; +++ SKIP +++ END; +++ R x := y; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/README ++@@ -0,0 +1,7 @@ +++This directory contains tests that require using several packets. +++ +++Files named module*.a68 contain prelude packets, i.e. the definitions +++of one or more modules. These are to be referred within test programs +++using dg-modules. +++ +++Each program*.a68 file is a testcase. ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/execute.exp ++@@ -0,0 +1,44 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# Execute tests, torture testing. +++ +++if $tracelevel then { +++ strace $tracelevel +++} +++ +++load_lib algol68-torture.exp +++load_lib torture-options.exp +++ +++torture-init +++set-torture-options $TORTURE_OPTIONS +++ +++# The programs need to be able to find the built modules, which are +++# left in objdir. +++global BUILT_MODULES_DIR +++set BUILT_MODULES_DIR "$objdir" +++ +++foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/program-*.a68]] { +++ # If we're only testing specific files and this isn't one of them, skip it. +++ if ![runtest_file_p $runtests $testcase] then { +++ continue +++ } +++ algol68-torture-execute $testcase +++ set algol68_compile_args "" +++ global module_objects +++ set module_objects "" +++} +++ +++torture-finish ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module1.a68 ++@@ -0,0 +1,9 @@ +++module Module1 = +++def +++ pub mode MyInt = int; +++ pub int beast_number := 666; +++ pub string who = "jemarch"; +++ puts ("Hello from module'n") +++postlude +++ puts ("Bye from module'n") +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module10.a68 ++@@ -0,0 +1,7 @@ +++module Module10 = +++access Module9, Module3 +++def int je = foo; +++ prio QUUX = 9; +++ pub Lala bar = (bump; getcounter); {11} +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module11.a68 ++@@ -0,0 +1,11 @@ +++{ Mixing module texts with revelations and without revelations. } +++ +++module Module11 = +++ access Module1, Module3 +++ def pub proc someproc = (int a, b) int: a + b; +++ skip +++ postlude +++ skip +++ fed, +++ Foo = def skip postlude skip fed, +++ Bar = def skip fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module12.a68 ++@@ -0,0 +1,5 @@ +++module Module_12 = +++def pub proc foo = (proc(int,string)void cb, int a) void: cb (a, "Foo"); +++ pub proc bar = (real r) void: skip; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module13.a68 ++@@ -0,0 +1,5 @@ +++module Module_13 = +++def +++ pub mode JSON_Val = struct (int i); +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module14.a68 ++@@ -0,0 +1,5 @@ +++module Module14 = +++access Module13 +++def pub proc getval = JSON_Val: skip; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module15.a68 ++@@ -0,0 +1,8 @@ +++module Module15 = +++access Module13, Module14 +++def pub proc foo = int: +++ begin JSON_Val val = getval; +++ i of val +++ end; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module16.a68 ++@@ -0,0 +1,8 @@ +++module Module_16 = +++def +++ pub int counter; +++ skip +++postlude +++ assert (counter = 666); +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module17.a68 ++@@ -0,0 +1,13 @@ +++module Module = +++def +++ pub int ce_port; +++ pub string ce_host; +++ +++ pub proc ce_connect = void: +++ myconnect (ce_host, ce_port); +++ +++ proc myconnect = (string host, int port) void: +++ skip; +++ +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module3.a68 ++@@ -0,0 +1,11 @@ +++module Module_3 = +++def +++ { variable = 0 in_proc = 1 } pub proc bump = void: counter +:= 1; +++ { variable = 0 in_proc = 1 } pub proc bumptimes = (int n) void: to n do bump od; +++ { variable = 1 in_proc = 0 } pub proc vbump := void: counter +:= 1; +++ { variable = 1 in_proc = 0 } pub proc vbumptimes := (int n) void: to n do vbump od; +++ { variable = 0 in_proc = 1 } pub proc getcounter = int: counter; +++ { variable = 0 in_proc = 0 } pub proc int anothergetcounter = getcounter; +++ int counter := 10; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module4.a68 ++@@ -0,0 +1,4 @@ +++module Module_4 = +++def pub int ten = 10; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module5.a68 ++@@ -0,0 +1,7 @@ +++module Module_5 = +++def pub prio // = 9; +++ pub op // = (int a, b) int: a + b; +++ pub prio LALA = 9; +++ pub op LALA = (int a, b) int: a - b; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module6.a68 ++@@ -0,0 +1,5 @@ +++module Module_6 = +++def prio // = 9; { Note priority is not publicized. } +++ pub op // = (int a, b) int: a + b; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module7.a68 ++@@ -0,0 +1,10 @@ +++{ This module exports an operator defined in a non-brief operator +++ declaration. This means the exported symbol is a pointer to a +++ function and shall be indirected on the accessing side. } +++ +++module Module_7 = +++def pub prio MINUS = 9; +++ pub op (int,int)int MINUS = minus; +++ proc minus = (int a, b) int: a - b; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module8.a68 ++@@ -0,0 +1,9 @@ +++module Module_8 = +++access Module_1, Module_4 +++def +++ pub proc checks = void: +++ begin assert (ten = 10); +++ assert (beast_number = 666) +++ end; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/module9.a68 ++@@ -0,0 +1,8 @@ +++module Module9 = +++def pub int foo = 10; +++ pub prio // = 9; +++ pub op QUUX = (int a, b) int: a + b; +++ prio QUUX = 9; +++ pub mode Lala = int; +++ skip +++fed ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-1.a68 ++@@ -0,0 +1,20 @@ +++{ dg-modules "module1" } +++ +++begin string je = access Module1 begin who end; +++ string ju = access Module1 ( who ); +++ string ji = access Module1 if true then who else who fi; +++ string ja = access Module1 (true | who | who); +++ string aa = access Module1 case 1 in who, "no" esac; +++ mode United = union (void,int); +++ string bb = access Module1 case United (10) in (int): who esac; +++ string cc = access Module1 (1 | who, "no"); +++ assert (je = "jemarch"); +++ assert (ju = "jemarch"); +++ assert (ji = "jemarch"); +++ assert (ja = "jemarch"); +++ assert (aa = "jemarch"); +++ assert (bb = "jemarch"); +++ assert (cc = "jemarch"); +++ access Module1 to 1 do assert (who = "jemarch") od; +++ access Module1 (assert (beast_number = 666)) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-10.a68 ++@@ -0,0 +1,6 @@ +++{ dg-modules "module3 module9 module10" } +++ +++access Module10 +++begin int x = 11; +++ assert (x = bar) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-11.a68 ++@@ -0,0 +1,3 @@ +++{ dg-modules "module1 module3 module11" } +++ +++access Module11 ( assert (someproc (2, 3) = 5)) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-12.a68 ++@@ -0,0 +1,6 @@ +++{ dg-modules "module12" } +++ +++access Module_12 +++begin proc lala = (int n, string s) void: skip; +++ foo (lala, 10) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-15.a68 ++@@ -0,0 +1,3 @@ +++{ dg-modules "module13 module14 module15" } +++ +++access Module15 (assert (foo = 0)) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-16.a68 ++@@ -0,0 +1,8 @@ +++{ dg-modules module16 } +++ +++access Module_16 +++begin assert (counter = 0); +++ counter := 20; +++ access Module_16 (assert (counter = 20)); +++ counter := 666 +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-17.a68 ++@@ -0,0 +1,7 @@ +++{ dg-modules module17 } +++ +++access Module17 +++begin ce_port := 8888; +++ ce_host := "localhost"; +++ ce_connect +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-2.a68 ++@@ -0,0 +1,15 @@ +++{ dg-modules "module1" } +++ +++begin int x = 1 + access Module1 ( beast_number); +++ int i = access Module1 ( beast_number ) + 1; +++ int z = 1 + access Module1 if true then beast_number fi; +++ int v = access Module1 if true then beast_number fi + 1; +++ int w = access Module1 if true then beast_number fi +++ + access Module1 if true then beast_number fi; +++ assert (i = 667); +++ assert (x = 667); +++ assert (z = 667); +++ assert (v = 667); +++ assert (w = 666 * 2); +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-3.a68 ++@@ -0,0 +1,16 @@ +++{ dg-modules "module3" } +++ +++access Module_3 +++begin assert (getcounter = 10); +++ bump; +++ assert (getcounter = 11); +++ bumptimes (3); +++ assert (getcounter = 14) +++ { vbump and vbumptimes are set to non-publicized routines +++ that are local to the module, so it is a scope violation +++ to call them. } +++{ vbump; +++ assert (getcounter = 15); +++ vbumptimes (10); +++ assert (anothergetcounter = 25) } +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-4.a68 ++@@ -0,0 +1,7 @@ +++{ dg-modules "module4" } +++ +++{ The widening coercion "jumps" inside the controlled xclause. } +++ +++begin real realten = access Module_4 (ten); +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-5.a68 ++@@ -0,0 +1,7 @@ +++{ dg-modules "module5" } +++ +++access Module_5 +++begin assert (2 // 3 = 5); +++ assert (2 LALA 3 = -1); +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-6.a68 ++@@ -0,0 +1,9 @@ +++{ dg-modules "module6" } +++ +++{ New priority is given to an importe operator. } +++ +++access Module_6 +++begin assert (2 // 3 = 5); +++ prio // = 9; +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-7.a68 ++@@ -0,0 +1,3 @@ +++{ dg-modules "module7" } +++ +++access Module_7 ( assert (2 MINUS 3 = -1) ) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/modules/program-8.a68 ++@@ -0,0 +1,3 @@ +++{ dg-modules "module1 module4 module8" } +++ +++access Module_8 (checks) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mult-char-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ("a" * 3 = "aaa"); +++ ASSERT ("" * 1 = ""); +++ ASSERT ("x" * 0 = "x") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mult-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; +++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; +++ ASSERT (i * 2 = 20); +++ ASSERT (ii * LONG 2 = LONG 20); +++ ASSERT (iii * LONG LONG 2 = LONG LONG 20); +++ ASSERT (ss * SHORT 2 = SHORT 20); +++ ASSERT (sss * SHORT SHORT 2 = SHORT SHORT 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mult-string-1.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING foo = "foo"; +++ ASSERT (foo * -10 = "foo"); +++ ASSERT (-10 * foo = "foo"); +++ ASSERT (foo * 0 = "foo"); +++ ASSERT (0 * foo = "foo"); +++ ASSERT (foo * 1 = "foo"); +++ ASSERT (1 * foo = "foo"); +++ ASSERT (foo * 2 = "foofoo"); +++ ASSERT (2 * foo = "foofoo"); +++ ASSERT (foo * 3 = "foofoofoo"); +++ ASSERT (3 * foo = "foofoofoo") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mult-string-2.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []CHAR foo = ("f","o","o"); +++ ASSERT (foo * -10 = "foo"); +++ ASSERT (-10 * foo = "foo"); +++ ASSERT (foo * 0 = "foo"); +++ ASSERT (0 * foo = "foo"); +++ ASSERT (foo * 1 = "foo"); +++ ASSERT (1 * foo = "foo"); +++ ASSERT (foo * 2 = "foofoo"); +++ ASSERT (2 * foo = "foofoo"); +++ ASSERT (foo * 3 = "foofoofoo"); +++ ASSERT (3 * foo = "foofoofoo") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mult-string-3.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN FLEX[3]CHAR foo := ("f","o","o"); +++ ASSERT (foo * -10 = "foo"); +++ ASSERT (-10 * foo = "foo"); +++ ASSERT (foo * 0 = "foo"); +++ ASSERT (0 * foo = "foo"); +++ ASSERT (foo * 1 = "foo"); +++ ASSERT (1 * foo = "foo"); +++ ASSERT (foo * 2 = "foofoo"); +++ ASSERT (2 * foo = "foofoo"); +++ ASSERT (foo * 3 = "foofoofoo"); +++ ASSERT (3 * foo = "foofoofoo") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mult-string-4.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING foo = "abc"; +++ ASSERT (foo[] * 2 = "abcabc") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/multab-1.a68 ++@@ -0,0 +1,31 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 2; +++ i *:= 2; +++ ASSERT (i = 4); +++ i *:= 2; +++ ASSERT (i = 8); +++ +++ SHORT INT s := SHORT 2; +++ s *:= SHORT 2; +++ ASSERT (s = SHORT 4); +++ s *:= SHORT 3; +++ ASSERT (s = SHORT 12); +++ +++ SHORT SHORT INT ss := SHORT SHORT 2; +++ ss *:= SHORT SHORT 2; +++ ASSERT (ss = SHORT SHORT 4); +++ ss *:= SHORT SHORT 3; +++ ASSERT (ss = SHORT SHORT 12); +++ +++ REF LONG INT ii = HEAP LONG INT := LONG 2; +++ ii *:= LONG 2; +++ ASSERT (ii = LONG 4); +++ ii *:= LONG 2; +++ ASSERT (ii = LONG 8); +++ +++ LONG LONG INT iii := LONG LONG 2; +++ iii *:= LONG LONG 2; +++ ASSERT (iii = LONG LONG 4); +++ iii *:= LONG LONG 2; +++ ASSERT (iii = LONG LONG 8) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/multab-2.a68 ++@@ -0,0 +1,31 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 2; +++ i TIMESAB 2; +++ ASSERT (i = 4); +++ i TIMESAB 2; +++ ASSERT (i = 8); +++ +++ REF SHORT INT ss = HEAP SHORT INT := SHORT 2; +++ ss TIMESAB SHORT 2; +++ ASSERT (ss = SHORT 4); +++ ss TIMESAB SHORT 2; +++ ASSERT (ss = SHORT 8); +++ +++ SHORT SHORT INT sss := SHORT SHORT 2; +++ sss TIMESAB SHORT SHORT 2; +++ ASSERT (sss = SHORT SHORT 4); +++ sss TIMESAB SHORT SHORT 2; +++ ASSERT (sss = SHORT SHORT 8); +++ +++ REF LONG INT ii = HEAP LONG INT := LONG 2; +++ ii TIMESAB LONG 2; +++ ASSERT (ii = LONG 4); +++ ii TIMESAB LONG 2; +++ ASSERT (ii = LONG 8); +++ +++ LONG LONG INT iii := LONG LONG 2; +++ iii TIMESAB LONG LONG 2; +++ ASSERT (iii = LONG LONG 4); +++ iii TIMESAB LONG LONG 2; +++ ASSERT (iii = LONG LONG 8) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/multab-3.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT num ints := 10; +++ num ints *:= 2; +++ ASSERT (num ints = 20); +++ ASSERT ((LOC INT *:= 12) = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/mutual-recursion-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC is even = (INT n) BOOL: (n = 0 | TRUE | is odd (n - 1)); +++ PROC is odd = (INT n) BOOL: (n = 0 | FALSE | is even (n - 1)); +++ ASSERT (is even (20)); +++ ASSERT (is odd (13)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/ne-bits-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BITS b, LONG BITS bb = LONG 16rff, LONG LONG BITS bbb; +++ SHORT BITS ss = SHORT 16rff, SHORT SHORT BITS sss; +++ ASSERT (b /= 2r1); +++ ASSERT (bb NE LONG 8r477); +++ ASSERT (bbb /= LONG LONG 8r2); +++ ASSERT (ss NE SHORT 8r477); +++ ASSERT (sss /= SHORT SHORT 8r2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/ne-char-char-1.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ("x" /= "a") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/ne-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 12; +++ LONG INT ii = LONG 12, LONG LONG INT iii = LONG LONG 12; +++ SHORT INT s = SHORT 12, SHORT SHORT INT ss = SHORT SHORT 12; +++ ASSERT (13 /= i); +++ ASSERT (ii NE LONG 13); +++ ASSERT (iii /= LONG LONG 13); +++ ASSERT (s /= SHORT 13); +++ ASSERT (ss /= SHORT SHORT 13) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/ne-string-1.a68 ++@@ -0,0 +1,15 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; +++ # /= # +++ ASSERT (NOT ("" /= "")); +++ ASSERT (NOT ("foo" /= foo)); +++ ASSERT (foo /= bar); +++ ASSERT (foo /= quux); +++ ASSERT (quux /= foo); +++ # NE # +++ ASSERT (NOT ("" NE "")); +++ ASSERT (NOT ("foo" NE foo)); +++ ASSERT (foo NE bar); +++ ASSERT (foo NE quux); +++ ASSERT (quux NE foo) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/neg-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; +++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; +++ ASSERT (-i = -10); +++ ASSERT (-ii = - LONG 10); +++ ASSERT (-iii = - LONG LONG 10); +++ ASSERT (-ss = - SHORT 10); +++ ASSERT (-sss = - SHORT SHORT 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/not-bits-1.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++# NOT for SIZETY BITS. # +++BEGIN BITS b = 16rf0f0; +++ ASSERT ((NOT b AND 16rffff) = 16r0f0f); +++ LONG BITS bb = LONG 16rf0f0; +++ ASSERT ((NOT bb AND LONG 16rffff) = LONG 16r0f0f); +++ LONG LONG BITS bbb = LONG LONG 16rf0f0; +++ ASSERT ((NOT bbb AND LONG LONG 16rffff) = LONG LONG 16r0f0f); +++ SHORT BITS ss = SHORT 16rf0f0; +++ ASSERT ((NOT ss AND SHORT 16rffff) = SHORT 16r0f0f); +++ SHORT SHORT BITS sss = SHORT SHORT 16rf0f0; +++ ASSERT ((NOT sss AND SHORT SHORT 16rffff) = SHORT SHORT 16r0f0f) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/odd-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT a = 1; +++ ASSERT (ODD a); +++ ASSERT (ODD LONG 3); +++ ASSERT (NOT ODD LONG LONG 4); +++ ASSERT (ODD SHORT 3); +++ ASSERT (NOT ODD SHORT SHORT 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/op-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN OP ONEOVER = (REAL a) REAL: 1/a; +++ REAL x; +++ x := ONEOVER 3.14 +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/op-2.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN OP + = (INT a, b) INT: a - -b; +++ ASSERT (10 + 30 = 40) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/op-3.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN OP MIN = (REAL a, b) REAL: (a < b | a | b), +++ MIN = (INT a, REAL b) REAL: (a < b | a | b), +++ MIN = (REAL a, INT b) REAL: a MIN REAL (b); +++ PRIO MIN = 6; +++ ASSERT (10.0 MIN 20.0 > 9.9 AND 10.0 MIN 20.0 < 10.1); +++ ASSERT (10.0 MIN 100 > 9.9 AND 10.0 MIN 100 < 10.1); +++ ASSERT (100.0 MIN 10 > 9.9 AND 100.0 MIN 10 < 10.1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/operator-declaration-1.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n = 10; +++ # Note that the priority for the monadic operators gets ignored. # +++ PRIO JORL = 6, JURL = 6, XXX = 6, YYY = 6; +++ OP(INT)INT JORL = (n > 10 | (INT a) INT: a + 1 | (INT a) INT: a - 1), +++ JURL = (n <= 10 | (INT a) INT: a + 1 | (INT a) INT: a - 1); +++ OP(INT,INT)INT XXX = (INT a, b) INT: a + b, +++ YYY = (n > 10 | (INT a,b) INT: a * b | (INT a,b) INT: a - b); +++ ASSERT (JORL 10 = 9); +++ ASSERT (JURL 10 = 11); +++ ASSERT (2 XXX 3 = 5); +++ ASSERT (2 YYY 3 = -1); +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/or-bits-1.a68 ++@@ -0,0 +1,18 @@ +++# { dg-options "-fstropping=upper" } # +++# OR for SIZETY BITS. # +++BEGIN BITS b = 16rf0f0; +++ ASSERT ((b OR 16r0f0f) = 16rffff); +++ ASSERT ((b OR 16r00ff) = 16rf0ff); +++ LONG BITS bb = LONG 16rf0f0; +++ ASSERT ((bb OR LONG 16r0f0f) = LONG 16rffff); +++ ASSERT ((bb OR LONG 16r00ff) = LONG 16rf0ff); +++ LONG LONG BITS bbb = LONG LONG 16rf0f0; +++ ASSERT ((bbb OR LONG LONG 16r0f0f) = LONG LONG 16rffff); +++ ASSERT ((bbb OR LONG LONG 16r00ff) = LONG LONG 16rf0ff); +++ SHORT BITS ss = SHORT 16rf0f0; +++ ASSERT ((ss OR SHORT 16r0f0f) = SHORT 16rffff); +++ ASSERT ((ss OR SHORT 16r00ff) = SHORT 16rf0ff); +++ SHORT SHORT BITS sss = SHORT SHORT 16rf0f0; +++ ASSERT ((sss OR SHORT SHORT 16r0f0f) = SHORT SHORT 16rffff); +++ ASSERT ((sss OR SHORT SHORT 16r00ff) = SHORT SHORT 16rf0ff) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/orf-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10; +++ ASSERT (i = 0 OREL i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/over-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; +++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; +++ ASSERT (i % 2 = 5); +++ ASSERT (ii % LONG 2 = LONG 5); +++ ASSERT (iii % LONG LONG 2 = LONG LONG 5); +++ ASSERT (ss % SHORT 2 = SHORT 5); +++ ASSERT (sss % SHORT SHORT 2 = SHORT SHORT 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/overab-1.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN (INT i := 11; i OVERAB 2; ASSERT (i = 5)); +++ (INT i := 11; i %:= 2; ASSERT (i = 5)); +++ (SHORT INT i := SHORT 11; i OVERAB SHORT 2; ASSERT (i = SHORT 5)); +++ (SHORT INT i := SHORT 11; i %:= SHORT 2; ASSERT (i = SHORT 5)); +++ (SHORT SHORT INT i := SHORT SHORT 11; i OVERAB SHORT SHORT 2; ASSERT (i = SHORT SHORT 5)); +++ (SHORT SHORT INT i := SHORT SHORT 11; i %:= SHORT SHORT 2; ASSERT (i = SHORT SHORT 5)); +++ (LONG INT i := LONG 11; i OVERAB LONG 2; ASSERT (i = LONG 5)); +++ (LONG INT i := LONG 11; i %:= LONG 2; ASSERT (i = LONG 5)); +++ (LONG LONG INT i := LONG LONG 11; i OVERAB LONG LONG 2; ASSERT (i = LONG LONG 5)); +++ (LONG LONG INT i := LONG LONG 11; i %:= LONG LONG 2; ASSERT (i = LONG LONG 5)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/overab-2.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := 10; +++ (((n OVERAB 1))) := 5; +++ ASSERT (n = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/particular-program-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++# Particular program with preceding labels. # +++jo: ju: +++BEGIN SKIP END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plus-char-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ("a" + "b" = "ab"); +++ ASSERT ("" + "x" = "x") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plus-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ LONG INT ii = LONG 10, LONG LONG INT iii = LONG LONG 10; +++ SHORT INT ss = SHORT 10, SHORT SHORT INT sss = SHORT SHORT 10; +++ ASSERT (i + 2 = 12); +++ ASSERT (ii + LONG 2 = LONG 12); +++ ASSERT (iii + LONG LONG 2 = LONG LONG 12); +++ ASSERT (ss + SHORT 2 = SHORT 12); +++ ASSERT (sss + SHORT SHORT 2 = SHORT SHORT 12) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plus-string-1.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING foo = "foo", bar = "bar", quux = "quux"; +++ ASSERT ("" + "" = ""); +++ ASSERT ("" + foo = "foo"); +++ ASSERT (bar + "" = "bar"); +++ ASSERT (foo + bar = "foobar"); +++ STRING res = foo + bar; +++ ASSERT (LWB res = 1 AND UPB res = 6); +++ STRING empty = "" + ""; +++ ASSERT (LWB empty = 1 AND UPB empty = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plus-string-2.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC rec parse comment = VOID: +++ BEGIN STRING content; +++ done; +++ 100; +++ done: +++ ASSERT (content + "x" = "x") +++ END; +++ +++ rec parse comment +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plus-string-stride-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]CHAR matrix = (("1","H","3"), +++ ("4","O","6"), +++ ("7","M","9"), +++ ("8","E","2")); +++ ASSERT (matrix[1:2,1] + matrix[3:4,3] = "1492") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plusab-1.a68 ++@@ -0,0 +1,34 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BEGIN INT i := 10; +++ i +:= 2; +++ ASSERT (i = 12); +++ i PLUSAB 2; +++ ASSERT (i = 14) +++ END; +++ +++ BEGIN SHORT INT i := SHORT 1000; +++ i +:= SHORT 100; +++ ASSERT (i = SHORT 1100); +++ i PLUSAB SHORT 100; +++ ASSERT (i = SHORT 1200) +++ END; +++ BEGIN SHORT SHORT INT i := SHORT SHORT 10000; +++ i +:= SHORT SHORT 1000; +++ ASSERT (i = SHORT SHORT 11000); +++ i PLUSAB SHORT SHORT 1000; +++ ASSERT (i = SHORT SHORT 12000) +++ END; +++ +++ BEGIN LONG INT i := LONG 1000; +++ i +:= LONG 100; +++ ASSERT (i = LONG 1100); +++ i PLUSAB LONG 100; +++ ASSERT (i = LONG 1200) +++ END; +++ BEGIN LONG LONG INT i := LONG LONG 10000; +++ i +:= LONG LONG 1000; +++ ASSERT (i = LONG LONG 11000); +++ i PLUSAB LONG LONG 1000; +++ ASSERT (i = LONG LONG 12000) +++ END +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plusab-2.a68 ++@@ -0,0 +1,20 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BEGIN REAL i := 10.0; +++ i +:= 2.0; +++ ASSERT (i > 11.9); +++ i PLUSAB 2.0; +++ ASSERT (i > 13.9) +++ END; +++ BEGIN LONG REAL i := LONG 1000.0; +++ i +:= LONG 100.0; +++ ASSERT (i > LONG 1099.9); +++ i PLUSAB LONG 100.0; +++ ASSERT (i > LONG 1199.9) +++ END; +++ BEGIN LONG LONG REAL i := LONG LONG 10000.0; +++ i +:= LONG LONG 1000.0; +++ ASSERT (i > LONG LONG 10999.9); +++ i PLUSAB LONG LONG 1000.0; +++ ASSERT (i > LONG LONG 11999.9) +++ END +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plusab-3.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := 0; +++ (((n +:= 1))) := 5; +++ ASSERT (n = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plusab-4.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT num ints := 0; +++ num ints +:= 1; +++ ASSERT (num ints = 1); +++ ASSERT ((LOC INT +:= 12) = 12) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plusab-string-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING foo := ""; +++ foo +:= "foo"; +++ ASSERT (LWB foo = 1 AND UPB foo = 3 AND foo = "foo"); +++ foo PLUSAB "bar"; +++ ASSERT (LWB foo = 1 AND UPB foo = 6 AND foo = "foobar") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plusto-char-1.a68 ++@@ -0,0 +1,7 @@ +++begin string foo := "foo"; +++ char c := "x"; +++ c PLUSTO foo; +++ assert (foo = "xfoo"); +++ c +=: foo; +++ assert (foo = "xxfoo") +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/plusto-string-1.a68 ++@@ -0,0 +1,6 @@ +++begin string foo := "foo"; +++ "bar" PLUSTO foo; +++ assert (foo = "barfoo"); +++ "quux" +=: foo; +++ assert (foo = "quuxbarfoo") +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-argc-argv-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (argc >= 1); +++ ASSERT (argv (1000) = ""); +++ ASSERT (argv (-1) = ""); +++ FOR i TO argc +++ DO puts (argv (i)) OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-fopen-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT fd = fopen ("doesn''t exist", file o default); +++ ASSERT (fd = -1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-fputc-fputs-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN fputc (stdout, "X"); +++ ASSERT (fputs (stdout, "foo") = 3); +++ fputs (stdout, fputc (stdout, "Y") + "T"); +++ fputc (stdout, "Z"); +++ ASSERT (fputs (stdout, "") = 0); +++ puts ("") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-getenv-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (getenv ("") = ""); +++ ASSERT (getenv ("DOESNT EXIST FOR SURE") = "") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-lseek.a68 ++@@ -0,0 +1,17 @@ +++begin int fd = fopen ("../../ga68", file_o_rdonly); +++ assert (fd /= -1); +++ assert (errno = 0); +++ long long int offset; +++ offset := lseek (fd, long long 0, seek_cur); +++ assert (offset = long long 0); +++ assert (errno = 0); +++ offset := lseek (fd, long long 0, seek_set); +++ assert (offset = long long 0); +++ assert (errno = 0); +++ offset := lseek (fd, long long 0, seek_end); +++ long long int offset2 = lseek (fd, offset, seek_set); +++ assert (offset = offset2); +++ long long int file_size = fsize (fd); +++ assert (errno = 0); +++ assert (offset = file_size) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-perror-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# { dg-output "^something unique: " } # +++BEGIN INT fd = fopen ("doesn''t exist", file o default); +++ IF fd = -1 THEN +++ ASSERT (strerror (errno) /= ""); +++ perror ("something unique") +++ FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-putchar-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN putchar ("X"); +++ putchar ("Y"); +++ putchar ("Z"); +++ puts ("\n") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-stdinouterr-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (stdin = 0); +++ ASSERT (stdout = 1); +++ ASSERT (stderr = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-strerror-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT fd = fopen ("doesn''t exist", file o default); +++ IF fd = -1 THEN ASSERT (strerror (errno) /= "") FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/posix-stride-1.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]CHAR matrix = (("1","H","3"), +++ ("4","O","6"), +++ ("7","M","9"), +++ ("8","E","0")); +++ []CHAR column = matrix[1:4,2]; +++ puts (column); +++ fputs (stdout, matrix[3,2:3]); +++ puts ("\n"); +++ fputs (stdout, matrix[1:3,1]); +++ puts ("\n"); +++ puts (getenv (matrix[,2])); +++ perror (matrix[,3]) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/pow-int-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 2; +++ LONG INT ii = LONG 2, LONG LONG INT iii = LONG LONG 2; +++ SHORT INT ss = SHORT 2, SHORT SHORT INT sss = SHORT SHORT 2; +++ ASSERT (i ** 2 = 4); +++ ASSERT (ii ** 2 = LONG 4); +++ ASSERT (iii ** 2 = LONG LONG 4); +++ ASSERT (ss ** 2 = SHORT 4); +++ ASSERT (sss ** 2 = SHORT SHORT 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/pow-real-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r0 = 2.0; LONG REAL rr0 = LONG 2.0; LONG LONG REAL rrr0 = LONG LONG 2.0; +++ REAL r1 = r0 ^ 2; REAL r2 = r0 ^ 3.0; +++ LONG REAL rr1 = rr0 ^ LONG 2; LONG REAL rr2 = rr0 ^ LONG 3.0; +++ LONG LONG REAL rrr1 = rrr0 ^ LONG LONG 2; LONG LONG REAL rrr2 = rrr0 ^ LONG LONG 3.0; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC foo = INT: 100; +++ ASSERT (foo = 100) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-10.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC(INT,INT)INT foo = (INT i, j) INT: i + j; +++ ASSERT (foo (10, 20) = 30) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-12.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC(INT)INT foo = baz; +++ PROC bar = (INT i) INT: i + 1; +++ PROC baz = (INT i) INT: i - 1; +++ ASSERT (foo (10) = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-13.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC is even := (INT n) BOOL: n %* 2 = 0; +++ ASSERT (is even (40)); +++ PROC no args := BOOL: TRUE; +++ ASSERT (no args) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-14.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC is even := (INT n) BOOL: n %* 2 = 0; +++ PROC is odd := (INT n) BOOL: n %* 2 /= 0; +++ PROC(INT)BOOL f = is even; +++ PROC(INT)BOOL g = is odd; +++ ASSERT (f (40)); +++ ASSERT (g (3)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-15.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Nested procedures. # +++BEGIN PROC foo = (INT i) INT: +++ BEGIN PROC bar = (INT i) INT: i - 1; +++ bar (i) * 10 +++ END; +++ ASSERT (foo (10) = 90) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-16.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC bar = (INT i) INT: i - 1; +++ PROC foo = (INT i) INT: +++ BEGIN +++ bar (i) * 10 +++ END; +++ ASSERT (foo (10) = 90) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-17.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++# Identity declarations and procedures. # +++BEGIN PROC foo = (INT i) INT: i + 1; +++ ASSERT (foo (10) = 11); +++ PROC(INT)INT bar = (INT i) INT: i + 1; +++ ASSERT (bar (10) = 11); +++ PROC(INT)INT baz = foo; +++ ASSERT (baz (10) = 11); +++ PROC(INT)INT quux = IF 10 > 1 THEN baz ELSE foo FI; +++ ASSERT (quux (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-18.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC foo = (INT i) INT: i + 1; +++ PROC(INT)INT bar; +++ bar := foo; +++ ASSERT (bar (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-19.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC foo = (INT i) INT: i + 1; +++ PROC(INT)INT bar := foo; +++ ASSERT (bar (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Call a non-variable procedure before declaration. # +++BEGIN ASSERT (foo = 100); +++ PROC foo = INT: 100; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-20.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC foo := (INT i) INT: i + 1; +++ PROC(INT)INT bar := foo; +++ ASSERT (bar (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-21.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# REF REF PROC # +++BEGIN PROC foo = (INT i) INT: i + 1; +++ PROC(INT)INT bar := foo; +++ REF PROC(INT)INT baz; +++ baz := bar; +++ ASSERT (baz (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-22.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# REF REF PROC # +++BEGIN PROC foo = (INT i) INT: i + 1; +++ PROC(INT)INT bar := foo; +++ REF PROC(INT)INT baz := bar; +++ ASSERT (baz (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-23.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC increment = (INT a) INT: a + 1; +++ PROC getproc = PROC(INT)INT: +++ BEGIN increment +++ END; +++ # getproc below gets deprocedured to yield increment. # +++ ASSERT (getproc (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-25.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC increment := (INT a) INT: a + 1; +++ PROC getproc := PROC(INT)INT: +++ BEGIN increment +++ END; +++ # getproc below gets deprocedured to yield increment. # +++ ASSERT (getproc (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-26.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC sum = (INT a, b) INT: a + b, +++ minus = (INT a, b) INT: a - b; +++ ASSERT (sum (1, 2) = 3); +++ ASSERT (minus (1, 2) = -1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-27.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC reciprocal = (REAL a) REAL: 1/a; +++ REAL x; +++ x := reciprocal (3.14) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-28.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC hcf = (INT m, n) INT: +++ IF m < n +++ THEN hcf (n, m) +++ ELIF n = 0 +++ THEN m +++ ELSE hcf (n, m MOD n) +++ FI; +++ ASSERT (hcf (10, 20) = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-29.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# A heap proc variable. # +++BEGIN HEAP PROC foo := INT: 666; +++ ASSERT (foo = 666) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-3.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC foo = (INT i, j) INT: i + j + 1; +++ ASSERT (foo (10, 11) = 22) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-4.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (foo (10, 11) = 22); +++ PROC foo = (INT i, j) INT: i + j + 1; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-5.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Recursive function. # +++BEGIN PROC foo = (INT i) INT: (i > 0 | i + foo (i - 1) | 0); +++ ASSERT (foo (10) = 55) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-6.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Recursive function, used before declared. # +++BEGIN ASSERT (foo (10) = 55); +++ PROC foo = (INT i) INT: BEGIN (i > 0 | i + foo (i - 1) | 0) END; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-7.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC foo = (INT i) INT: i + 1; +++ PROC(INT)INT bar = foo; +++ ASSERT (bar (10) = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/proc-8.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC INT foo = INT: 100; +++ ASSERT (foo = 100) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/procedured-goto-1.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 4; +++beg: WHILE i > 0 +++ DO []PROC VOID table = (l3,l1,l2,end); +++ table[i]; +++l1: puts ("uno\n"); i -:= 1; beg; +++l2: puts ("dos\n"); i -:= 1; beg; +++l3: puts ("tres\n"); i -:= 1; beg; +++end: puts ("cuatro\n"); i -:= 1; beg +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/quine.a68 ++@@ -0,0 +1,2 @@ +++# { dg-options "-fstropping=upper" } # +++(STRING a="(STRING a="";puts(2*a[:19]+2*a[19:]);0)";puts(2*a[:19]+2*a[19:])) ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/random-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN IF random > 0.5 THEN puts ("yes\n") ELSE puts ("no\n") FI; +++ LONG REAL rr = long random; +++ IF rr > LONG 0.5 THEN puts ("long yes\n") ELSE puts ("long no\n") FI; +++ LONG LONG REAL rrr = long long random; +++ IF rrr > LONG LONG 0.5 THEN puts ("long long yes\n") ELSE puts ("long long no\n") FI +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/re-im-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN COMPL z = 4.0I5.0; +++ ASSERT (RE z = 4.0 AND IM z = 5.0); +++ LONG COMPL zz = LONG 4.0 I LONG 6.0; +++ ASSERT (RE zz = LONG 4.0 AND IM zz = LONG 6.0); +++ LONG LONG COMPL zzz = LONG LONG 4.0 I LONG LONG 7.0; +++ ASSERT (RE zzz = LONG LONG 4.0 AND IM zzz = LONG LONG 7.0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rela-string-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ("" >= ""); +++ ASSERT ("" <= ""); +++ ASSERT ("zzz" > "aaa"); +++ ASSERT ("zzz" >= "aaa"); +++ ASSERT ("HelloA" < "HelloB") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/repr-1.a68 ++@@ -0,0 +1,3 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (REPR ABS "x" = "x") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/round-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL x = 3.14, y = 3.80; +++ LONG REAL xx = LONG 3.14, yy = LONG 3.80; +++ LONG LONG REAL xxx = LONG LONG 3.14, yyy = LONG LONG 3.80; +++ ASSERT (ROUND x = 3 AND ROUND y = 4); +++ ASSERT (ROUND xx = LONG 3 AND ROUND yy = LONG 4); +++ ASSERT (ROUND xxx = LONG LONG 3 AND ROUND yyy = LONG LONG 4) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/row-display-1.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT foo = (7,8,9); +++ [,]INT bar = ((1,2,3),(4,5,6),foo); +++ ASSERT (bar[1,1] = 1); +++ ASSERT (bar[1,2] = 2); +++ ASSERT (bar[1,3] = 3); +++ ASSERT (bar[2,1] = 4); +++ ASSERT (bar[2,2] = 5); +++ ASSERT (bar[2,3] = 6); +++ ASSERT (bar[3,1] = 7); +++ ASSERT (bar[3,2] = 8); +++ ASSERT (bar[3,3] = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/row-display-2.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT foo = (7,8,9); +++ [3,3]INT bar := ((1,2,3),(4,5,6),foo); +++ ASSERT (bar[1,1] = 1); +++ ASSERT (bar[1,2] = 2); +++ ASSERT (bar[1,3] = 3); +++ ASSERT (bar[2,1] = 4); +++ ASSERT (bar[2,2] = 5); +++ ASSERT (bar[2,3] = 6); +++ ASSERT (bar[3,1] = 7); +++ ASSERT (bar[3,2] = 8); +++ ASSERT (bar[3,3] = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/row-display-3.a68 ++@@ -0,0 +1,15 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE FOO = STRUCT (INT i, STRING s); +++ [,]FOO matrix = (((10, "foo"), (20, "bar"), (30, "baz")), +++ ((40, "uno"), (50, "dos"), (60, "tres")), +++ ((70, "cuatro"), (80, "cinco"), (90, "seis"))); +++ ASSERT (i OF matrix[1,1] = 10); +++ ASSERT (i OF matrix[1,2] = 20); +++ ASSERT (i OF matrix[1,3] = 30); +++ ASSERT (i OF matrix[2,1] = 40); +++ ASSERT (i OF matrix[2,2] = 50); +++ ASSERT (i OF matrix[2,3] = 60); +++ ASSERT (i OF matrix[3,1] = 70); +++ ASSERT (i OF matrix[3,2] = 80); +++ ASSERT (i OF matrix[3,3] = 90) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/row-display-4.a68 ++@@ -0,0 +1,16 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,][]INT duples = (((1,2), (3,4), (5,6)), +++ ((7,8), (9,10), (11,12))); +++ ASSERT (duples[1,1][1] = 1); +++ ASSERT (duples[1,1][2] = 2); +++ ASSERT (duples[1,2][1] = 3); +++ ASSERT (duples[1,2][2] = 4); +++ ASSERT (duples[1,3][1] = 5); +++ ASSERT (duples[1,3][2] = 6); +++ ASSERT (duples[2,1][1] = 7); +++ ASSERT (duples[2,1][2] = 8); +++ ASSERT (duples[2,2][1] = 9); +++ ASSERT (duples[2,2][2] = 10); +++ ASSERT (duples[2,3][1] = 11); +++ ASSERT (duples[2,3][2] = 12) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/row-display-5.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT list1 = (1,2,3), +++ list2 = (4,5,6), +++ list3 = (7,8,9); +++ [,]INT matrix = (list1, list2, list3); +++ [,,]INT cube = (matrix, matrix, matrix); +++ ASSERT (cube[1,1,1] = 1); +++ ASSERT (cube[2,2,2] = 5); +++ ASSERT (cube[3,3,3] = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT a = 10; +++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); +++ ASSERT (a[1] = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-10.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10; +++ REF[,]INT a = i; +++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); +++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); +++ a[1,1] := a[1,1] + 1; +++ ASSERT (a[1,1] = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-11.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10; +++ REF[,,]INT a = i; +++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); +++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); +++ ASSERT (3 LWB a = 1 AND 3 UPB a = 1 AND 3 ELEMS a = 1); +++ a[1,1,1] := a[1,1,1] + 1; +++ ASSERT (a[1,1,1] = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-12.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Rowing of NIL yields NIL. # +++BEGIN REF INT i = NIL; +++ REF[]INT a = i; +++ ASSERT (a :=: NIL) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-13.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# Rowing of NIL yields NIL. # +++BEGIN REF INT i = (NIL); +++ REF[,,]INT a = (i); +++ ASSERT (a :=: NIL) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [][]INT a = 10; +++ ASSERT (a[1][1] = 10); +++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); +++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-3.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [][][]INT a = 10; +++ ASSERT (a[1][1][1] = 10); +++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); +++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1); +++ ASSERT (LWB a[1][1] = 1 AND UPB a[1][1] = 1 AND ELEMS a[1][1] = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-4.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE FOO = STRUCT (INT i, REAL r); +++ FOO foo = (10, 3.14); +++ [][]FOO a = foo; +++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); +++ ASSERT (LWB a[1] = 1 AND UPB a[1] = 1 AND ELEMS a[1] = 1); +++ ASSERT (i OF a[1][1] = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-5.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++# Rowing of a name. # +++BEGIN INT i := 10; +++ REF[]INT a = i; +++ ASSERT (LWB a = 1 AND UPB a = 1 AND ELEMS a = 1); +++ a[1] := a[1] + 1; +++ ASSERT (a[1] = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-6.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Rowing of NIL yields NIL. # +++BEGIN REF[]INT a = REF INT(NIL); +++ ASSERT (a :=: NIL) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-7.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]INT a = 10; +++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); +++ ASSERT (2 LWB a = 1 AND 2 UPB a = 1 AND 2 ELEMS a = 1); +++ ASSERT (a[1,1] = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-8.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT a = 10; +++ ASSERT (1 LWB a = 1 AND 1 UPB a = 1 AND 1 ELEMS a = 1); +++ [,]INT aa = a; +++ ASSERT (1 LWB aa = 1 AND 1 UPB aa = 1 AND 1 ELEMS aa = 1); +++ ASSERT (2 LWB aa = 1 AND 2 UPB aa = 1 AND 2 ELEMS aa = 1); +++ [,,]INT aaa = aa; +++ ASSERT (1 LWB aaa = 1 AND 1 UPB aaa = 1 AND 1 ELEMS aaa = 1); +++ ASSERT (2 LWB aaa = 1 AND 2 UPB aaa = 1 AND 2 ELEMS aaa = 1); +++ ASSERT (3 LWB aaa = 1 AND 3 UPB aaa = 1 AND 3 ELEMS aaa = 1); +++ ASSERT (aaa[1,1,1] = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/rowing-9.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,,]INT aaa = 10; +++ ASSERT (1 LWB aaa = 1 AND 1 UPB aaa = 1 AND 1 ELEMS aaa = 1); +++ ASSERT (2 LWB aaa = 1 AND 2 UPB aaa = 1 AND 2 ELEMS aaa = 1); +++ ASSERT (3 LWB aaa = 1 AND 3 UPB aaa = 1 AND 3 ELEMS aaa = 1); +++ ASSERT (aaa[1,1,1] = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/selection-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Selecting a struct results in a sub-value. # +++BEGIN MODE PERSON = STRUCT (INT age, REAL income, INT num children); +++ PERSON person = (44, 999.99, 0); +++ ASSERT (age OF person = 44); +++ ASSERT (num children OF person = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/selection-2.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++# Selecting a struct name results in sub-names. # +++BEGIN MODE PERSON = STRUCT (INT age, REAL income, INT num children); +++ PERSON person; +++ age OF person := 44; +++ income OF person := 999.99; +++ num children OF person := 0; +++ ASSERT (age OF person = 44); +++ ASSERT (num children OF person = 0); +++ REF INT ptr to age := age OF person; +++ ASSERT (ptr to age = 44); +++ age OF person := 55; +++ ASSERT (ptr to age = 55) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/selection-3.a68 ++@@ -0,0 +1,12 @@ +++# { dg-options "-fstropping=upper" } # +++# Structs can be nested in other structs. # +++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); +++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); +++ +++ PERSON person = (44, (999.99, 0.0, 10), 3); +++ +++ ASSERT (age OF person = 44); +++ ASSERT (code OF income OF person = 10); +++ ASSERT (num children OF person = 3); +++ ASSERT (num children OF person * code OF income OF person = 30) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/selection-4.a68 ++@@ -0,0 +1,19 @@ +++# { dg-options "-fstropping=upper" } # +++# Structs can be nested in other structs. Version with subnames. # +++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); +++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); +++ +++ PERSON person; +++ +++ age OF person := 44; +++ salary OF income OF person := 999.99; +++ stock OF income OF person := 0.0; +++ num children OF person := 3; +++ code OF income OF person := num children OF person; +++ +++ ASSERT (age OF person = 44); +++ ASSERT (code OF income OF person = num children OF person); +++ ASSERT (code OF income OF person = 3); +++ ASSERT (num children OF person = 3); +++ ASSERT (num children OF person * code OF income OF person = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/selection-5.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++# pr UPPER pr # +++BEGIN MODE JORL = STRUCT (INT i, REAL r); +++ REF JORL jorl = LOC JORL := (10, 3.14); +++ ASSERT (i OF jorl = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/selection-multiple-1.a68 ++@@ -0,0 +1,12 @@ +++begin [10]struct (int age, string name) persons; +++ +++ for i to UPB persons +++ do age of persons[i] := 20 + i; +++ name of persons[i] := "x" * i +++ od; +++ +++ for i to UPB name of persons +++ do assert ((age of persons)[i] = 20 + i); +++ assert ((name of persons)[i] = "x" * i) +++ od +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/selection-multiple-2.a68 ++@@ -0,0 +1,18 @@ +++begin [10,5]struct (int age, string name) persons; +++ +++ for i to 1 UPB persons +++ do for j to 2 UPB persons +++ do age of persons[i,j] := 20 + i + j; +++ name of persons[i,j] := "x" * (i + j) +++ od +++ od; +++ +++ assert (1 UPB name of persons = 10); +++ assert (2 UPB name of persons = 5); +++ for i to 1 UPB name of persons +++ do for j to 2 UPB name of persons +++ do assert ((age of persons)[i,j] = 20 + i + j); +++ assert ((name of persons)[i,j] = "x" * (i + j)) +++ od +++ od +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ BEGIN INT i = 20; # { dg-warning "hides" } # +++ ASSERT (i = 20); +++ i +++ END; +++ ASSERT (i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-10.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# NIL is not voided and can appear in a context requiring VOID. # +++BEGIN (NIL); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-2.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BEGIN ASSERT (i = 0); +++ i +++ END; +++ INT i = 10; +++ ASSERT (i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-3.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (i = 0); +++ INT i = 10; +++ ASSERT (i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-4.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i := 10; +++ BEGIN ASSERT (i = 10); +++ i +:= 1 +++ END; +++ ASSERT (i = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-5.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN BEGIN ASSERT (i = 0); +++ i +++ END; +++ INT i := 10; +++ ASSERT (i = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-6.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ((INT y := 10; +++ INT x := 20; +++ REF INT yy; +++ (REF INT xx := x; +++ yy := y; +++ xx := yy +++ ) +++ ) = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-7.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ((INT y := 10; +++ INT x := 20; +++ REF INT yy; +++ (REF INT xx := x; +++ yy := y; +++ xx + yy +++ ) +++ ) = 30) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-8.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT ((INT y := 10; +++ INT x := 20; +++ REF INT yy; +++ (REF INT xx := x; +++ yy := y; +++ xx +++ ) +++ ) = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-clause-9.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# Serial clause with jump at the end. # +++ +++BEGIN INT i := BEGIN BOOL cont := TRUE; +++ back: cont := FALSE; +++ IF cont THEN GOTO back FI +++ END; +++ ASSERT (i = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-1.a68 ++@@ -0,0 +1,18 @@ +++{ This tests stack management for DSA serial clauses. +++ If it fails a stack overflow happens. } +++begin { DSA due to stack allocated multiple. } +++ to 10000 +++ do [10000]int foo; +++ skip +++ od; +++ { DSA due to stack allocated multiple. Explicit loc. } +++ to 10000 +++ do loc[10000]int foo; +++ skip +++ od; +++ { DSA due to loc generator. } +++ to 10000 +++ do ref[]int jorl = loc [10000]int; +++ skip +++ od +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-2.a68 ++@@ -0,0 +1,6 @@ +++{ Check value yielding of DSA serial clauses. } +++begin assert ((ref int foo = loc int := 100; +++ foo) = 100); +++ []int a = ([10000]int foo; foo[10] := 666; foo); +++ assert (a[10] = 666) +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-3.a68 ++@@ -0,0 +1,12 @@ +++{ The jump to leak should not leak stack. } +++begin by 10000 +++ do +++ by 10000 +++ do [10000]int foo; +++ skip; +++ goto leak +++ od; +++ leak: +++ skip +++ od +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-4.a68 ++@@ -0,0 +1,4 @@ +++begin (ref int a = loc int := 10; goto leak; a); +++leak: +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-5.a68 ++@@ -0,0 +1,3 @@ +++begin assert ((ref int a = loc int := 10; a) + 1 = 11); +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/serial-dsa-6.a68 ++@@ -0,0 +1,4 @@ +++{ DSA and completers in a serial clause. } +++begin assert ((ref int a = loc int := 10; a exit foo: a +:= 1) + 1 = 11); +++ skip +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/sign-int-1.a68 ++@@ -0,0 +1,28 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT zero = 0; +++ SHORT INT short zero = SHORT 0; +++ SHORT SHORT INT short short zero = SHORT SHORT 0; +++ LONG INT long zero = LONG 0; +++ LONG LONG INT long long zero = LONG LONG 0; +++ INT ten = 10; +++ SHORT INT short ten = SHORT 10; +++ SHORT SHORT INT short short ten = SHORT SHORT 10; +++ LONG INT long ten = LONG 10; +++ LONG LONG INT long long ten = LONG LONG 10; +++ ASSERT (SIGN zero = 0); +++ ASSERT (SIGN short zero = 0); +++ ASSERT (SIGN short short zero = 0); +++ ASSERT (SIGN long zero = 0); +++ ASSERT (SIGN long long zero = 0); +++ ASSERT (SIGN ten = 1); +++ ASSERT (SIGN short ten = 1); +++ ASSERT (SIGN short short ten = 1); +++ ASSERT (SIGN long ten = 1); +++ ASSERT (SIGN long long ten = 1); +++ ASSERT (SIGN -ten = -1); +++ ASSERT (SIGN -short ten = -1); +++ ASSERT (SIGN -short short ten = -1); +++ ASSERT (SIGN -long ten = -1); +++ ASSERT (SIGN -long long ten = -1) +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/sign-real-1.a68 ++@@ -0,0 +1,17 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL zero = 0.0; +++ LONG REAL long zero = LONG 0.0; +++ LONG LONG REAL long long zero = LONG LONG 0.0; +++ REAL ten = 10.0; +++ LONG REAL long ten = LONG 10.0; +++ LONG LONG REAL long long ten = LONG LONG 10.0; +++ ASSERT (SIGN zero = 0); +++ ASSERT (SIGN long zero = 0); +++ ASSERT (SIGN long long zero = 0); +++ ASSERT (SIGN ten = 1); +++ ASSERT (SIGN long ten = 1); +++ ASSERT (SIGN long long ten = 1); +++ ASSERT (SIGN -ten = -1); +++ ASSERT (SIGN -long ten = -1); +++ ASSERT (SIGN -long long ten = -1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/sin-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 0.0; +++ LONG REAL rr = LONG 45.0; +++ LONG LONG REAL rrr = LONG LONG 60.0; +++ ASSERT (sin (r) = 0.0); +++ long sin (rr); +++ long long sin (rrr) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/skip-1.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++# Check SKIPs for INT modes # +++BEGIN INT int skip = SKIP; +++ ASSERT (int skip = 0); +++ SHORT INT short int skip = SKIP; +++ ASSERT (short int skip = SHORT 0); +++ SHORT SHORT INT short short int skip = SKIP; +++ ASSERT (short short int skip = SHORT SHORT 0); +++ LONG INT long int skip = SKIP; +++ ASSERT (long int skip = LONG 0); +++ LONG LONG INT long long int skip = SKIP; +++ ASSERT (long long int skip = LONG LONG 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/skip-2.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# Check SKIP values for BOOL and CHAR. # +++BEGIN BOOL bool skip = SKIP; +++ ASSERT (bool skip = FALSE); +++ CHAR char skip = SKIP; +++ ASSERT (char skip = " ") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/skip-struct-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT jorl); +++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); +++ PERSON person = SKIP; +++ ASSERT (age OF person = 0); +++ ASSERT (jorl OF income OF person = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING foo = "foo"; +++ ASSERT (foo[1] = "f"); +++ ASSERT (foo[2] = "o"); +++ ASSERT (foo[3] = "o"); +++ STRING bar := "foo"; +++ ASSERT (bar[1] = "f"); +++ ASSERT (bar[2] = "o"); +++ ASSERT (bar[3] = "o") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-2.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT foo = (1,2,3); +++ ASSERT (foo[1] = 1); +++ ASSERT (foo[2] = 2); +++ ASSERT (foo[3] = 3); +++ [3]INT bar := (1,2,3); +++ ASSERT (bar[1] = 1); +++ ASSERT (bar[2] = 2); +++ ASSERT (bar[3] = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-3.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT foo = (10,20,30); +++ ASSERT (foo[1] = 10); +++ ASSERT (foo[2] = 20); +++ ASSERT (foo[3] = 30); +++ [3]INT bar := (100,200,300); +++ ASSERT (bar[1] = 100); +++ ASSERT (bar[2] = 200); +++ ASSERT (bar[3] = 300) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-4.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE PERSON = STRUCT (INT i, STRING s); +++ []PERSON persons = ((10, "foo"), (20, "barbar"), (30, "baz")); +++ puts (s OF persons[1]); +++ puts (s OF persons[2]); +++ puts (s OF persons[3]); +++ ASSERT (i OF persons[1] = 10); +++ ASSERT (i OF persons[2] = 20); +++ ASSERT (i OF persons[3] = 30) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-5.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRUCT([]INT i, REAL r) s = ((1,2,3), 3.14); +++ ASSERT ((i OF s)[1] = 1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-6.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT rsp := 5; +++ [10]INT run stack; +++ run stack [(rsp -:= 1) + 1] +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/slice-indexing-7.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING s := "foo"; +++ s[2] := "x" +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/sqrt-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 100.0; +++ LONG REAL rr = LONG 25.0; +++ LONG LONG REAL rrr = LONG LONG 25.0; +++ ASSERT (sqrt (r) = 10.0); +++ ASSERT (long sqrt (rr) = LONG 5.0); +++ ASSERT (long long sqrt (rrr) = LONG LONG 5.0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/string-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING s = ""; +++ ASSERT (LWB s = 1 AND UPB s = 0); +++ STRING t = (); +++ ASSERT (LWB t = 1 AND UPB t = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/string-2.a68 ++@@ -0,0 +1,13 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING s; +++ ASSERT (LWB s = 1 AND UPB s = 0 AND ELEMS s = 0); +++ s := "foo"; +++ puts (s); +++ ASSERT (LWB s = 1 AND UPB s = 3 AND s[1] = "f" AND s[2] = "o" AND s[3] = "o"); +++ s := "bar"; +++ puts (s); +++ ASSERT (LWB s = 1 AND UPB s = 3 AND s[1] = "b" AND s[2] = "a" AND s[3] = "r"); +++ s := "x"; +++ ASSERT (LWB s = 1 AND UPB s = 1 AND s[1] = "x"); +++ puts (s) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/string-4.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING s; +++ ASSERT (LWB s = 1 AND UPB s = 0 AND ELEMS s = 0); +++ s +:= "foo"; +++ ASSERT (LWB s = 1 AND UPB s = 3 AND ELEMS s = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/string-break-1.a68 ++@@ -0,0 +1,8 @@ +++begin assert (UPB "foo'nbar" = 7 AND "foo'nbar"[4] = REPR 10); +++ assert (UPB "foo'tbar" = 7 AND "foo'tbar"[4] = REPR 9); +++ assert (UPB "foo'rbar" = 7 AND "foo'rbar"[4] = REPR 13); +++ assert (UPB "foo'fbar" = 7 AND "foo'fbar"[4] = REPR 12); +++ assert (UPB "foo''bar" = 7 AND "foo''bar"[4] = REPR 39); +++ assert ("'(u0048,u0065,U0000006c,u006c,U0000006f)" = "Hello"); +++ assert ("'( u0048, u0065, U0000006c,u006c, U0000006f )" = "Hello") +++end ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/struct-self-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); +++ NODE top; +++ ASSERT (next OF top :=: REF NODE (NIL)) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/struct-self-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); +++ NODE top = (20, NIL); +++ ASSERT (code OF top = 20); +++ ASSERT (next OF top :=: NIL) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/struct-self-3.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE NODE = STRUCT (INT code, REF NODE next); +++ NODE top := (10, NIL); +++ NODE next := (20, NIL); +++ next OF top := next; +++ ASSERT (code OF next OF top = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/structure-display-1.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE INCOME = STRUCT (REAL salary, stock, INT code); +++ MODE PERSON = STRUCT (INT age, INCOME income, INT num children); +++ INCOME income = (100.0, 200.0, 300); +++ ASSERT (code OF income = 300); +++ PERSON person := (24, (1000.0, 2000.0, 3000), 3); +++ ASSERT (code OF income OF person = 3000); +++ ASSERT (num children OF person = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/structure-display-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE NODE = STRUCT (INT code, REF INT next); +++ INT val := 20; +++ NODE top = (10, val); +++ ASSERT (val = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/structure-display-3.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE FOO = STRUCT (INT i, REF INT j); +++ INT x := 10; +++ FOO foo; +++ foo := (10, x); +++ ASSERT (j OF foo = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/structure-display-4.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE FOO = STRUCT (INT i, REF INT j); +++ INT x := 10; +++ REF INT xx; +++ FOO foo; +++ foo := (10, xx := x); +++ ASSERT (j OF foo = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/structure-display-5.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE VEC = STRUCT (REAL xcoord, ycoord, zcoord); +++ VEC v1, v2, v3; +++ v1 := (1,1,1); +++ ASSERT (xcoord OF v1 = 1); +++ ASSERT (ycoord OF v1 = 1); +++ ASSERT (zcoord OF v1 = 1); +++ REAL x = 3.14, i = 3; +++ v2 := (x + 2, 3.4, i - 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/tan-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REAL r = 0.0; +++ LONG REAL rr = LONG 50.0; +++ LONG LONG REAL rrr = LONG LONG 50.0; +++ ASSERT (tan (r) = 0.0); +++ long tan (rr); +++ long long tan (rrr) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/timesab-string-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN STRING foo := "foo"; +++ foo TIMESAB 1; +++ ASSERT (foo = "foo"); +++ foo *:= 3; +++ ASSERT (foo = "foofoofoo") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; +++ ASSERT (arr[3] = 2 AND arr[4] = 3); +++ []INT jorl = arr[2:3@20]; +++ ASSERT (LWB jorl = 20 AND UPB jorl = 21); +++ ASSERT (jorl[20] = 1 AND jorl [21] = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-10.a68 ++@@ -0,0 +1,14 @@ +++# { dg-options "-fstropping=upper" } # +++# Trimming with flat descriptors should lead to flat multiples. # +++BEGIN []INT a = (1,2,3); +++ +++ ASSERT (UPB a[2:1] < LWB a[2:1]); +++ ASSERT (UPB a[20:2] < LWB a[20:2]); +++ +++ [,]INT aa = ((1,2,3), +++ (4,5,6), +++ (7,8,9)); +++ +++ ASSERT ((1 UPB aa[1,2:1]) < ((1 LWB aa[1,2:1]))); +++ ASSERT ((1 UPB aa[1,20:]) < ((1 LWB aa[1,20:]))) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-2.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; +++ ASSERT (arr[3] = 2 AND arr[4] = 3); +++ []INT jorl = arr[2:3]; +++ ASSERT (LWB jorl = 1 AND UPB jorl = 2); +++ ASSERT (jorl[1] = 1 AND jorl [2] = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-3.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; +++ ASSERT (arr[3] = 2 AND arr[4] = 3); +++ []INT jorl = arr[:@20]; +++ ASSERT (LWB jorl = 20 AND UPB jorl = 22); +++ ASSERT (jorl[20] = 1 AND jorl[21] = 2 AND jorl[22] = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-4.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; +++ ASSERT (arr[3] = 2 AND arr[4] = 3); +++ []INT jorl = arr[3:]; +++ ASSERT (LWB jorl = 1 AND UPB jorl = 2); +++ ASSERT (jorl[1] = 2 AND jorl[2] = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-5.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; +++ ASSERT (arr[3] = 2 AND arr[4] = 3); +++ []INT jorl = arr[:3 AT 10]; +++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); +++ ASSERT (jorl[10] = 1 AND jorl[11] = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-6.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; +++ ASSERT (arr[3] = 2 AND arr[4] = 3); +++ []INT jorl = arr[:3@10]; +++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); +++ ASSERT (jorl[10] = 1 AND jorl[11] = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-7.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT arr = (1,2,3); +++ ASSERT (arr[2] = 2 AND arr[3] = 3); +++ []INT jorl = arr[2:3@20]; +++ ASSERT (LWB jorl = 20 AND UPB jorl = 21); +++ ASSERT (jorl[20] = 2 AND jorl [21] = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-8.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [2:4]INT arr := []INT(1,2,3)[@2]; +++ ASSERT (arr[3] = 2 AND arr[4] = 3); +++ [10:11]INT jorl := arr[:3 AT 10]; +++ ASSERT (LWB jorl = 10 AND UPB jorl = 11); +++ ASSERT (jorl[10] = 1 AND jorl[11] = 2); +++ jorl[10] := 100; +++ ASSERT (jorl[10] = 100 AND jorl[11] = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-9.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT arr = (1,2,3); +++ ASSERT (arr[2] = 2 AND arr[3] = 3); +++ []INT jorl = arr[@20]; +++ ASSERT (LWB jorl = 20 AND UPB jorl = 22); +++ ASSERT (jorl[20] = 1 AND jorl [21] = 2 AND jorl [22] = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-1.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]INT matrix = ((1,2,3), +++ (4,5,6), +++ (7,8,9)); +++ [2]INT column := matrix[3,2:3]; +++ ASSERT (column[1] = 8); +++ ASSERT (column[2] = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-2.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]INT matrix = ((1,2,3), +++ (4,5,6), +++ (7,8,9)); +++ [2]INT column := matrix[2,1:2]; +++ ASSERT (column[1] = 4); +++ ASSERT (column[2] = 5) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-3.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]INT matrix = ((1,2,3), +++ (4,5,6), +++ (7,8,9)); +++ [3]INT column := matrix[2,1:3]; +++ ASSERT (column[1] = 4); +++ ASSERT (column[2] = 5); +++ ASSERT (column[3] = 6) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-4.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]INT matrix = ((1,2,3), +++ (4,5,6), +++ (7,8,9)); +++ []INT column = matrix[1:3,2]; +++ ASSERT (LWB column = 1); +++ ASSERT (UPB column = 3); +++ ASSERT (column[1] = 2 AND column[2] = 5 AND column[3] = 8) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-5.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]INT matrix = ((1,2,3), +++ (4,5,6), +++ (7,8,9)); +++ []INT column = matrix[2:3,2]; +++ ASSERT (LWB column = 1); +++ ASSERT (UPB column = 2); +++ ASSERT (column[1] = 5 AND column[2] = 8) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-matrix-6.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [,]INT matrix = ((1,2,3), +++ (4,5,6), +++ (7,8,9)); +++ []INT row = matrix[3,1:3]; +++ ASSERT (LWB row = 1); +++ ASSERT (UPB row = 3); +++ ASSERT (row[1] = 7 AND row[2] = 8 AND row[3] = 9) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/trimmer-name-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN REF[]CHAR t; +++ PROC foo = VOID: (HEAP[3]CHAR ss := ("1","2","3"); t := ss[1:3]); +++ foo; +++ ASSERT (LWB t = 1 AND UPB t = 3); +++ ASSERT (t[1] = "1" AND t[2] = "2" AND t[3] = "3") +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/undefined-1.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++# j's value is undefined (defined to be 0 in GNU Algol) # +++BEGIN INT x := 0; +++ FOR i TO 5 +++ DO ASSERT (j = 0); +++ IF j > 20 THEN stop FI; +++ INT j = x + i; +++ x +:= 1 +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/undefined-2.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++# The undefined value of the multiple `a' is an empty multiple. # +++BEGIN ASSERT (i = 0); +++ ASSERT (LWB a = 1 AND UPB a = 0 AND ELEMS a = 0); +++ []INT a = (1, 2, 3); +++ INT i = 10; +++ ASSERT (i = 10); +++ ASSERT (LWB a = 1 AND UPB a = 3 AND ELEMS a = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/undefined-3.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (sum = 1); +++ PROC sum = INT: i + 1; +++ INT i = 10; +++ ASSERT (sum = 11) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/undefined-4.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC is even = (INT n) BOOL: (n = zero | TRUE | is odd (n - 1)); +++ PROC is odd = (INT n) BOOL: (n = zero | FALSE | is even (n - 1)); +++ ASSERT (is even (20)); +++ ASSERT (is odd (13)); +++ INT zero := 0; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/undefined-5.a68 ++@@ -0,0 +1,9 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN PROC is even = (INT n) BOOL: (n = zero | TRUE | is odd (DECR n)); +++ PROC is odd = (INT n) BOOL: (n = zero | FALSE | is even (DECR n)); +++ OP DECR = (INT a) INT: a - 1; +++ ASSERT (is even (20)); +++ ASSERT (is odd (13)); +++ INT zero := 0; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/uniting-1.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN UNION(INT,REAL,CHAR) datum := 3.14; +++ UNION(INT,REAL,[]INT,CHAR) datux; +++ datux := datum; +++ ASSERT (CASE datux +++ IN (INT): 10, +++ (REAL): 20, +++ (CHAR c): 30 +++ ESAC = 20); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/uniting-2.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN UNION(INT,REAL,CHAR) datum := "X"; +++ UNION(INT,REAL,[]INT,CHAR) datux; +++ datux := datum; +++ ASSERT (CASE datux +++ IN (INT): 10, +++ (REAL): 20, +++ (CHAR c): 30 +++ ESAC = 30); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/uniting-3.a68 ++@@ -0,0 +1,11 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN UNION(INT,REAL,CHAR) datum := 10; +++ UNION(INT,REAL,[]INT,CHAR) datux; +++ datux := datum; +++ ASSERT (CASE datux +++ IN (INT): 10, +++ (REAL): 20, +++ (CHAR c): 30 +++ ESAC = 10); +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/uniting-4.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++# Uniting STRING to ROWS. # +++BEGIN PROC strlen = (STRING s) INT: ELEMS s; +++ ASSERT (strlen ("foo") = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/up-down-bits-1.a68 ++@@ -0,0 +1,33 @@ +++# { dg-options "-fstropping=upper" } # +++# SHORTEN and LENG on SIZETY BITS # +++BEGIN BITS b = 16rff; +++ ASSERT (b UP 4 = 16rff0); +++ ASSERT (b SHL 4 = 16rff0); +++ ASSERT (b DOWN 4 = 16r0f); +++ ASSERT (b SHR 4 = 16r0f); +++ +++ LONG BITS bb = LONG 16rff; +++ ASSERT (bb UP 4 = LONG 16rff0); +++ ASSERT (bb SHL 4 = LONG 16rff0); +++ ASSERT (bb DOWN 4 = LONG 16r0f); +++ ASSERT (bb SHR 4 = LONG 16r0f); +++ +++ LONG LONG BITS bbb = LONG LONG 16rff; +++ ASSERT (bbb UP 4 = LONG LONG 16rff0); +++ ASSERT (bbb SHL 4 = LONG LONG 16rff0); +++ ASSERT (bbb DOWN 4 = LONG LONG 16r0f); +++ ASSERT (bbb SHR 4 = LONG LONG 16r0f); +++ +++ SHORT BITS ss = SHORT 16rff; +++ ASSERT (ss UP 4 = SHORT 16rff0); +++ ASSERT (ss SHL 4 = SHORT 16rff0); +++ ASSERT (ss DOWN 4 = SHORT 16r0f); +++ ASSERT (ss SHR 4 = SHORT 16r0f); +++ +++ SHORT SHORT BITS sss = SHORT SHORT 16r0f; +++ ASSERT (sss UP 4 = SHORT SHORT 16rf0); +++ ASSERT (sss SHL 4 = SHORT SHORT 16rf0); +++ ASSERT (sss DOWN 2 = SHORT SHORT 16r03); +++ ASSERT (sss SHR 2 = SHORT SHORT 16r03) +++END +++ ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/upb-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN ASSERT (UPB "foo" = 3); +++ ASSERT (1 UPB "foo" = 3); +++ ASSERT (UPB "" = 0); +++ ASSERT ((INT i = 1; UPB "") = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/vacuum-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN []INT a = (); +++ ASSERT (LWB a = 1 AND UPB a = 0) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx := x := 20; +++ ASSERT (xx = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-2.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx := x; +++ ASSERT (xx = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-3.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx := (x := 20); +++ ASSERT (xx = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-4.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF INT xx := ((x)); +++ ASSERT (xx = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-5.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT x := 10; +++ REF REF INT xx := LOC REF INT := x := 20; +++ ASSERT (xx = 20) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-6.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN MODE FOO = STRUCT (STRING s, INT i); +++ FOO f1 := ("foo", 10); +++ ASSERT (i OF f1 = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-heap-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN HEAP INT a := 10; +++ ASSERT (a = 10) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-heap-2.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN HEAP INT x, y; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-1.a68 ++@@ -0,0 +1,5 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [10,3]INT arr; +++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); +++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n = 10; +++ [n,3]INT arr; +++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); +++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-3.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := 10, m := 3; +++ [n,m]INT arr; +++ ASSERT (1 LWB arr = 1 AND 1 UPB arr = 10 AND 1 ELEMS arr = 10); +++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 3 AND 2 ELEMS arr = 3) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-4.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := -4, m := 0; +++ [n:m,2]INT arr; +++ ASSERT (1 LWB arr = -4 AND 1 UPB arr = 0 AND 1 ELEMS arr = 5); +++ ASSERT (2 LWB arr = 1 AND 2 UPB arr = 2 AND 2 ELEMS arr = 2) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-5.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := -4, m := 0; +++ [n:m,2]INT arr; +++ FOR i FROM 1 LWB arr TO 1 UPB arr +++ DO FOR j FROM 2 LWB arr TO 2 UPB arr +++ DO ASSERT (arr[i,j] = INT(SKIP)) OD +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-6.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := -4, m := 0; +++ [n:m,2]REF INT arr; +++ FOR i FROM 1 LWB arr TO 1 UPB arr +++ DO FOR j FROM 2 LWB arr TO 2 UPB arr +++ DO ASSERT (REF INT (arr[i,j]) :=: REF INT(SKIP)) OD +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-7.a68 ++@@ -0,0 +1,8 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := 2, m := 3; +++ [n][m]INT arr; +++ FOR i FROM LWB arr TO UPB arr +++ DO FOR j FROM LWB arr[i] TO UPB arr[i] +++ DO ASSERT (arr[i][j] = INT(SKIP)) OD +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-8.a68 ++@@ -0,0 +1,10 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT n := -4, m := 0; +++ [10][n:m,2]INT arr; +++ FOR k FROM LWB arr TO UPB arr +++ DO FOR i FROM 1 LWB arr[k] TO 1 UPB arr[k] +++ DO FOR j FROM 2 LWB arr[k] TO 2 UPB arr[k] +++ DO ASSERT (arr[k][i,j] = INT(SKIP)) OD +++ OD +++ OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/variable-declaration-multiple-9.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN [4]INT x, y; +++ SKIP +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/voiding-1.a68 ++@@ -0,0 +1,4 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i; +++ 2 = i +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/widening-1.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN INT i = 10; +++ REAL foo = i; +++ ASSERT (foo > 9.9); +++ ASSERT (foo < 10.1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/widening-2.a68 ++@@ -0,0 +1,6 @@ +++# { dg-options "-fstropping=upper" } # +++BEGIN LONG INT i = LONG 10; +++ LONG REAL foo = i; +++ ASSERT (foo > LONG 9.9); +++ ASSERT (foo < LONG 10.1) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/widening-bits-1.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# XXX use environment enquiry for actual size of BITS # +++BEGIN []BOOL foo = 16rffff; +++ ASSERT (LWB foo = 1 AND UPB foo = 32); +++ FOR i TO 16 DO ASSERT (foo[i] = FALSE) OD; +++ FOR i FROM 17 TO 32 DO ASSERT (foo[i] = TRUE) OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/widening-bits-2.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# XXX use environment enquiry for actual size of LONG BITS # +++BEGIN []BOOL foo = LONG 16rffffffff; +++ ASSERT (LWB foo = 1 AND UPB foo = 64); +++ FOR i TO 32 DO ASSERT (foo[i] = FALSE) OD; +++ FOR i FROM 33 TO 64 DO ASSERT (foo[i] = TRUE) OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/widening-bits-3.a68 ++@@ -0,0 +1,7 @@ +++# { dg-options "-fstropping=upper" } # +++# XXX use environment enquiry for actual size of LONG LONG BITS # +++BEGIN []BOOL foo = LONG LONG 16rffffffff; +++ ASSERT (LWB foo = 1 AND UPB foo = 64); +++ FOR i TO 32 DO ASSERT (foo[i] = FALSE) OD; +++ FOR i FROM 33 TO 64 DO ASSERT (foo[i] = TRUE) OD +++END ++--- /dev/null +++++ b/src/gcc/testsuite/algol68/execute/xor-bits-1.a68 ++@@ -0,0 +1,18 @@ +++# { dg-options "-fstropping=upper" } # +++# XOR for SIZETY BITS. # +++BEGIN BITS b = 16rf0f0; +++ ASSERT ((b XOR 16r0f0f) = 16rffff); +++ ASSERT ((b XOR 16r00ff) = 16rf00f); +++ LONG BITS bb = LONG 16rf0f0; +++ ASSERT ((bb XOR LONG 16r0f0f) = LONG 16rffff); +++ ASSERT ((bb XOR LONG 16r00ff) = LONG 16rf00f); +++ LONG LONG BITS bbb = LONG LONG 16rf0f0; +++ ASSERT ((bbb XOR LONG LONG 16r0f0f) = LONG LONG 16rffff); +++ ASSERT ((bbb XOR LONG LONG 16r00ff) = LONG LONG 16rf00f); +++ SHORT BITS ss = SHORT 16rf0f0; +++ ASSERT ((ss XOR SHORT 16r0f0f) = SHORT 16rffff); +++ ASSERT ((ss XOR SHORT 16r00ff) = SHORT 16rf00f); +++ SHORT SHORT BITS sss = SHORT SHORT 16rf0; +++ ASSERT ((sss XOR SHORT SHORT 16r0f) = SHORT SHORT 16rff); +++ ASSERT ((sss XOR SHORT SHORT 16rff) = SHORT SHORT 16r0f) +++END ++--- /dev/null +++++ b/src/gcc/testsuite/lib/algol68-dg.exp ++@@ -0,0 +1,96 @@ +++# Copyright (C) 1997-2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++load_lib gcc-dg.exp +++ +++# Define ALGOL68 callbacks for dg.exp. +++ +++proc algol68-dg-test { prog do_what extra_tool_flags } { +++ return [gcc-dg-test-1 algol68_target_compile $prog $do_what $extra_tool_flags] +++} +++ +++proc algol68-dg-prune { system text } { +++ return [gcc-dg-prune $system $text] +++} +++ +++# Global modules options +++set MODULES_OPTIONS "" +++ +++# Modified dg-runtest that can cycle through a list of optimization options +++# as c-torture does. +++proc algol68-dg-runtest { testcases flags default-extra-flags } { +++ global runtests +++ global TORTURE_OPTIONS +++ global MODULES_OPTIONS +++ +++ foreach test $testcases { +++ # If we're only testing specific files and this isn't one of +++ # them, skip it. +++ if ![runtest_file_p $runtests $test] { +++ continue +++ } +++ +++ # look if this is dg-do-run test, in which case +++ # we cycle through the option list, otherwise we don't +++ if [expr [search_for $test "dg-do run"]] { +++ set option_list $TORTURE_OPTIONS +++ } else { +++ set option_list [list { -O2 } ] +++ } +++ +++ set nshort [file tail [file dirname $test]]/[file tail $test] +++ +++ foreach flags_t $option_list { +++ verbose "Testing $nshort, $flags $flags_t" 1 +++ dg-test $test "$MODULES_OPTIONS $flags $flags_t" ${default-extra-flags} +++ } +++ } +++} +++ +++# Build a series of modules ACCESSed by this test. +++# +++# The first to dg-modules is a list of module names. The source file +++# for a given module MODULE is assumed to be MODULE.a68, and that file +++# must reside in the current directory. +++# +++# The second option to dg-modules, which is optional, can be used to +++# specify additional options to be passed to ga68 when it compiles the +++# modules. +++ +++proc dg-modules { args } { +++ +++ global objdir +++ global srcdir +++ global subdir +++ +++ if { [llength $args] != 2 && [llength $args] != 3 } { +++ error "[lindex $args 0]: invalid arguments" +++ } +++ set modules [lindex $args 1] +++ +++ set module_options {} +++ if { [llength $args] == 3 } { +++ set module_options [lindex $args 2] +++ } +++ +++ foreach module $modules { +++ set srcfile "${module}.a68" +++ set objfile "${module}.o" +++ # Compile the module +++ set comp_output [algol68_target_compile $srcdir/$subdir/$srcfile \ +++ $objdir/$objfile object $module_options] +++ } +++} ++--- /dev/null +++++ b/src/gcc/testsuite/lib/algol68-torture.exp ++@@ -0,0 +1,480 @@ +++# Copyright (C) 2009-2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# Please email any bugs, comments, and/or additions to this file to +++# the author. +++ +++load_lib dg.exp +++ +++load_lib target-supports.exp +++ +++load_lib target-utils.exp +++ +++# The default option list can be overridden by +++# TORTURE_OPTIONS="{ { list1 } ... { listN } }" +++ +++if ![info exists TORTURE_OPTIONS] { +++ set TORTURE_OPTIONS [list \ +++ { -O0 } { -O1 } { -O2 } \ +++ { -O2 -fomit-frame-pointer -finline-functions } \ +++ { -O2 -fomit-frame-pointer -finline-functions -funroll-loops } \ +++ { -O2 -fcheck=bounds } \ +++ { -O2 -fcheck=nil } \ +++ { -O3 -g } \ +++ { -Os }] +++ +++ if [check_effective_target_lto] { +++ set TORTURE_OPTIONS \ +++ [concat $TORTURE_OPTIONS [list {-flto}]] +++ } +++} +++ +++# Location of built modules +++set BUILT_MODULES_DIR "" +++ +++# Build a series of modules ACCESSed by this test. +++# +++# The first to dg-modules is a list of module names. The source file +++# for a given module MODULE is assumed to be MODULE.a68, and that file +++# must reside in the current directory. +++# +++# The second option to dg-modules, which is optional, can be used to +++# specify additional options to be passed to ga68 when it compiles the +++# modules. +++ +++set module_objects "" +++ +++proc dg-modules { args } { +++ +++ global objdir +++ global srcdir +++ global subdir +++ global module_objects +++ +++ if { [llength $args] != 2 && [llength $args] != 3 } { +++ error "[lindex $args 0]: invalid arguments" +++ } +++ set modules [lindex $args 1] +++ +++ set module_options {} +++ if { [llength $args] == 3 } { +++ set module_options [lindex $args 2] +++ } +++ +++ foreach module $modules { +++ set srcfile "${module}.a68" +++ set objfile "${module}.o" +++ # Compile the module +++ set comp_output [algol68_target_compile $srcdir/$subdir/$srcfile \ +++ $objdir/$objfile object $module_options] +++ lappend module_objects $objfile +++ } +++} +++ +++# +++# algol68-torture-compile -- compile an algol68/execute/torture testcase. +++# +++# SRC is the full pathname of the testcase. +++# OPTION is the specific compiler flag we're testing (eg: -O2). +++# +++proc algol68-torture-compile { src option } { +++ global output +++ global srcdir tmpdir +++ global host_triplet +++ +++ set output "$tmpdir/[file tail [file rootname $src]].o" +++ +++ regsub "(?q)$srcdir/" $src "" testcase +++ +++ # If we couldn't rip $srcdir out of `src' then just do the best we can. +++ # The point is to reduce the unnecessary noise in the logs. Don't strip +++ # out too much because different testcases with the same name can confuse +++ # `test-tool'. +++ if [string match "/*" $testcase] { +++ set testcase "[file tail [file dirname $src]]/[file tail $src]" +++ } +++ +++ verbose "Testing $testcase, $option" 1 +++ +++ # Run the compiler and get results in comp_output. +++ set options "" +++ lappend options "additional_flags=-w $option" +++ +++ set comp_output [algol68_target_compile "$src" "$output" object $options] +++ +++ # See if we got something bad. +++ set fatal_signal "*algol68*: Internal compiler error: program*got fatal signal" +++ +++ if [string match "$fatal_signal 6" $comp_output] then { +++ algol68_fail $testcase "Got Signal 6, $option" +++ catch { remote_file build delete $output } +++ return +++ } +++ +++ if [string match "$fatal_signal 11" $comp_output] then { +++ algol68_fail $testcase "Got Signal 11, $option" +++ catch { remote_file build delete $output } +++ return +++ } +++ +++ if [regexp -line -- "internal compiler error.*" $comp_output ice] then { +++ algol68_fail $testcase "$option ($ice)" +++ catch { remote_file build delete $output } +++ return +++ } +++ +++ # We shouldn't get these because of -w, but just in case. +++ if [string match "*algol68*:*warning:*" $comp_output] then { +++ warning "$testcase: (with warnings) $option" +++ send_log "$comp_output\n" +++ unresolved "$testcase, $option" +++ catch { remote_file build delete $output } +++ return +++ } +++ +++ # Prune warnings we know are unwanted. +++ set comp_output [prune_warnings $comp_output] +++ +++ # Report if the testcase is not supported. +++ set unsupported_message [algol68_check_unsupported_p $comp_output] +++ if { $unsupported_message != "" } { +++ unsupported "$testcase: $unsupported_message" +++ catch { remote_file build delete $output } +++ return +++ } +++ +++ # remove any leftover LF/CR to make sure any output is legit +++ regsub -all -- "\[\r\n\]*" $comp_output "" comp_output +++ +++ # If any message remains, we fail. +++ if ![string match "" $comp_output] then { +++ algol68_fail $testcase $option +++ catch { remote_file build delete $output } +++ return +++ } +++ +++ algol68_pass $testcase $option +++ catch { remote_file build delete $output } +++} +++ +++ +++# +++# algol68-torture-execute -- compile and execute a testcase. +++# +++# SRC is the full pathname of the testcase. +++# +++# If the testcase has an associated .x file, we source that to run the +++# test instead. We use .x so that we don't lengthen the existing filename +++# to more than 14 chars. +++# +++proc algol68-torture-execute { src } { +++ global output +++ global srcdir tmpdir +++ global tool +++ global compiler_conditional_xfail_data +++ global TORTURE_OPTIONS +++ global BUILT_MODULES_DIR +++ global module_objects +++ global errorCode errorInfo +++ global algol68_compile_args +++ global algol68_execute_args +++ global dg-extra-tool-flags +++ +++ set dg-excess-errors-flag 0 +++ set dg-messages "" +++ set dg-extra-tool-flags "" +++ set dg-final-code "" +++ +++ # `dg-output-text' is a list of two elements: pass/fail and text. +++ # Leave second element off for now (indicates "don't perform test") +++ set dg-output-text "P" +++ +++ set tmp [dg-get-options $src] +++ foreach op $tmp { +++ verbose "Processing option: $op" 3 +++ set status [catch $op errmsg] +++ if { $status != 0 } { +++ if { 0 && [info exists errorInfo] } { +++ # This also prints a backtrace which will just confuse +++ # testcase writers, so it's disabled. +++ perror "$src: $errorInfo\n" +++ } else { +++ perror "$src: $errmsg for \"$op\"\n" +++ } +++ perror "$src: $errmsg for \"$op\"" 0 +++ return +++ } +++ } +++ +++ # Check for alternate driver. +++ set additional_flags "" +++ if [file exists [file rootname $src].x] { +++ verbose "Using alternate driver [file rootname [file tail $src]].x" 2 +++ set done_p 0 +++ catch "set done_p \[source [file rootname $src].x\]" +++ if { $done_p } { +++ return +++ } +++ } +++ +++ # Setup the options for the testcase run. +++ set option_list $TORTURE_OPTIONS +++ set executable $tmpdir/[file tail [file rootname $src].x] +++ regsub "(?q)$srcdir/" $src "" testcase +++ +++ if { ! [info exists algol68_compile_args] } { +++ set algol68_compile_args "" +++ } +++ if { ! [info exists algol68_execute_args] } { +++ set algol68_execute_args "" +++ } +++ +++ # If we couldn't rip $srcdir out of `src' then just do the best we can. +++ # The point is to reduce the unnecessary noise in the logs. Don't strip +++ # out too much because different testcases with the same name can confuse +++ # `test-tool'. +++ if [string match "/*" $testcase] { +++ set testcase "[file tail [file dirname $src]]/[file tail $src]" +++ } +++ +++ # Walk the list of options and compile and run the testcase for all +++ # options that are not explicitly disabled by the .x script (if present). +++ foreach option $option_list { +++ +++ # Torture_{compile,execute}_xfail are set by the .x script. +++ if [info exists torture_compile_xfail] { +++ setup_xfail $torture_compile_xfail +++ } +++ +++ # Torture_execute_before_{compile,execute} can be set by the .x script. +++ if [info exists torture_eval_before_compile] { +++ set ignore_me [eval $torture_eval_before_compile] +++ } +++ +++ # FIXME: We should make sure that the modules required by this testcase +++ # exist. If not, the testcase should XFAIL. +++ +++ # Compile the testcase. +++ catch { remote_file build delete $executable } +++ verbose "Testing $testcase, $option" 1 +++ +++ set options "" +++ lappend options "additional_flags=-w $option" +++ if { ${dg-extra-tool-flags} != "" } { +++ lappend options "additional_flags=${dg-extra-tool-flags}" +++ } +++ if { $additional_flags != "" } { +++ lappend options "additional_flags=$additional_flags" +++ } +++ if { $algol68_compile_args != "" } { +++ lappend options "additional_flags=$algol68_compile_args" +++ } +++ if { $BUILT_MODULES_DIR != "" } { +++ lappend options "additional_flags=-I$BUILT_MODULES_DIR" +++ } +++ if { $module_objects != "" } { +++ lappend options "additional_flags=$module_objects" +++ } +++ set comp_output [algol68_target_compile "$src" "$executable" executable $options] +++ +++ # See if we got something bad. +++ set fatal_signal "*algol68*: Internal compiler error: program*got fatal signal" +++ +++ if [string match "$fatal_signal 6" $comp_output] then { +++ algol68_fail $testcase "Got Signal 6, $option" +++ catch { remote_file build delete $executable } +++ continue +++ } +++ +++ if [string match "$fatal_signal 11" $comp_output] then { +++ algol68_fail $testcase "Got Signal 11, $option" +++ catch { remote_file build delete $executable } +++ continue +++ } +++ +++ if [regexp -line -- "internal compiler error.*" $comp_output ice] then { +++ algol68_fail $testcase "$option ($ice)" +++ catch { remote_file build delete $executable } +++ continue +++ } +++ +++ # We shouldn't get these because of -w, but just in case. +++ if [string match "*algol68*:*warning:*" $comp_output] then { +++ warning "$testcase: (with warnings) $option" +++ send_log "$comp_output\n" +++ unresolved "$testcase, $option" +++ catch { remote_file build delete $executable } +++ continue +++ } +++ +++ # Prune warnings we know are unwanted. +++ set comp_output [prune_warnings $comp_output] +++ +++ # Report if the testcase is not supported. +++ set unsupported_message [algol68_check_unsupported_p $comp_output] +++ if { $unsupported_message != "" } { +++ unsupported "$testcase: $unsupported_message" +++ continue +++ } elseif ![file exists $executable] { +++ if ![is3way] { +++ fail "$testcase compilation, $option" +++ untested "$testcase execution, $option" +++ continue +++ } else { +++ # FIXME: since we can't test for the existence of a remote +++ # file without short of doing an remote file list, we assume +++ # that since we got no output, it must have compiled. +++ pass "$testcase compilation, $option" +++ } +++ } else { +++ pass "$testcase compilation, $option" +++ } +++ +++ if [info exists torture_execute_xfail] { +++ setup_xfail $torture_execute_xfail +++ } +++ +++ if [info exists torture_eval_before_execute] { +++ set ignore_me [eval $torture_eval_before_execute] +++ } +++ +++ # Run the testcase, and analyse the output. +++ set result [algol68_load "$executable" "$algol68_execute_args" ""] +++ set status [lindex $result 0] +++ set output [lindex $result 1] +++ if { $status eq "pass" } { +++ pass "$testcase execution test, $option" +++ verbose "Exec succeeded." 3 +++ if { [llength ${dg-output-text}] > 1 } { +++ if { [lindex ${dg-output-text} 0] eq "F" } { +++ setup_xfail "*-*-*" +++ } +++ set texttmp [lindex ${dg-output-text} 1] +++ if { ![regexp -- $texttmp $output] } { +++ fail "$testcase output pattern test, $option" +++ send_log "Output was:\n${output}\nShould match:\n$texttmp\n" +++ verbose "Failed test for output pattern $texttmp" 3 +++ } else { +++ pass "$testcase output pattern test, $option" +++ verbose "Passed test for output pattern $texttmp" 3 +++ } +++ unset texttmp +++ } +++ } elseif { $status eq "fail" } { +++ if {[info exists errorCode]} { +++ verbose "Exec failed, errorCode: $errorCode" 3 +++ } else { +++ verbose "Exec failed, errorCode not defined!" 3 +++ } +++ fail "$testcase execution test, $option" +++ } else { +++ $status "$testcase execution, $option" +++ } +++ catch { remote_file build delete $executable } +++ } +++} +++ +++ +++# +++# search_for_re -- looks for a string match in a file +++# +++proc search_for_re { file pattern } { +++ set fd [open $file r] +++ while { [gets $fd cur_line]>=0 } { +++ set lower [string tolower $cur_line] +++ if [regexp "$pattern" $lower] then { +++ close $fd +++ return 1 +++ } +++ } +++ close $fd +++ return 0 +++} +++ +++ +++# +++# algol68-torture -- the algol68-torture testcase source file processor +++# +++# This runs compilation only tests (no execute tests). +++# +++# SRC is the full pathname of the testcase, or just a file name in which +++# case we prepend $srcdir/$subdir. +++# +++# If the testcase has an associated .x file, we source that to run the +++# test instead. We use .x so that we don't lengthen the existing filename +++# to more than 14 chars. +++# +++proc algol68-torture { args } { +++ global srcdir subdir +++ global compiler_conditional_xfail_data +++ global TORTURE_OPTIONS +++ +++ set src [lindex $args 0] +++ if { [llength $args] > 1 } { +++ set options [lindex $args 1] +++ } else { +++ set options "" +++ } +++ +++ # Prepend $srdir/$subdir if missing. +++ if ![string match "*/*" $src] { +++ set src "$srcdir/$subdir/$src" +++ } +++ +++ # Check for alternate driver. +++ if [file exists [file rootname $src].x] { +++ verbose "Using alternate driver [file rootname [file tail $src]].x" 2 +++ set done_p 0 +++ catch "set done_p \[source [file rootname $src].x\]" +++ if { $done_p } { +++ return +++ } +++ } +++ +++ # loop through all the options +++ set option_list $TORTURE_OPTIONS +++ foreach option $option_list { +++ +++ # torture_compile_xfail is set by the .x script (if present) +++ if [info exists torture_compile_xfail] { +++ setup_xfail $torture_compile_xfail +++ } +++ +++ # torture_execute_before_compile is set by the .x script (if present) +++ if [info exists torture_eval_before_compile] { +++ set ignore_me [eval $torture_eval_before_compile] +++ } +++ +++ algol68-torture-compile $src "$option $options" +++ } +++} +++ +++# +++# add-ieee-options -- add options necessary for 100% ieee conformance. +++# +++proc add-ieee-options { } { +++ # Ensure that excess precision does not cause problems. +++ if { [istarget i?86-*-*] +++ || [istarget m68k-*-*] } then { +++ uplevel 1 lappend additional_flags "-ffloat-store" +++ } +++ +++ # Enable full IEEE compliance mode. +++ if { [istarget alpha*-*-*] +++ || [istarget sh*-*-*] } then { +++ uplevel 1 lappend additional_flags "-mieee" +++ } +++} ++--- /dev/null +++++ b/src/gcc/testsuite/lib/algol68.exp ++@@ -0,0 +1,219 @@ +++# Copyright (C) 2012-2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# +++# ALGOL68 support library routines +++# +++ +++load_lib prune.exp +++load_lib gcc-defs.exp +++load_lib timeout.exp +++load_lib target-libpath.exp +++ +++# +++# ALGOL68_UNDER_TEST is the compiler under test. +++# +++ +++set algol68_compile_options "" +++ +++ +++# +++# algol68_include_flags -- include flags for the gcc tree structure +++# +++ +++proc algol68_include_flags { paths } { +++ global srcdir +++ global TESTING_IN_BUILD_TREE +++ +++ set flags "" +++ +++ if { [is_remote host] || ![info exists TESTING_IN_BUILD_TREE] } { +++ return "${flags}" +++ } +++ +++ set gccpath ${paths} +++ +++ return "$flags" +++} +++ +++# +++# algol68_link_flags -- linker flags for the gcc tree structure +++# +++ +++proc algol68_link_flags { paths } { +++ global srcdir +++ global ld_library_path +++ global shlib_ext +++ global SHARED_OPTION +++ global ALGOL68_UNDER_TEST +++ +++ set gccpath ${paths} +++ set libio_dir "" +++ set flags "" +++ set ld_library_path "." +++ set shlib_ext [get_shlib_extension] +++ set SHARED_OPTION "" +++ verbose "shared lib extension: $shlib_ext" +++ +++ # We need to add options to locate libga68. +++ set target_wants_B_option 0 +++ if { [istarget *-*-darwin9* ] || [istarget *-*-darwin\[12\]* ] } { +++ set target_wants_B_option 1 +++ } +++ +++ if { $gccpath != "" } { +++ # Path to libga68.spec. +++ append flags "-B${gccpath}/libga68 " +++ if { [file exists "${gccpath}/libga68/.libs/libga68.a"] \ +++ || [file exists "${gccpath}/libga68/.libs/libga68.${shlib_ext}"] } { +++ if { $target_wants_B_option } { +++ append flags "-B${gccpath}/libga68/.libs " +++ } else { +++ append flags "-L${gccpath}/libga68/.libs " +++ } +++ append ld_library_path ":${gccpath}/libga68/.libs" +++ } +++ # Static linking is default. If only the shared lib is available adjust +++ # flags to always use it. If both are available, set SHARED_OPTION which +++ # will be added to PERMUTE_ARGS +++ if { [file exists "${gccpath}/libga68/src/.libs/libga68.${shlib_ext}"] } { +++ if { [file exists "${gccpath}/libga68/src/.libs/libga68.a"] } { +++ set SHARED_OPTION "-shared-libga68" +++ } else { +++# append flags "-shared-libga68 " +++ } +++ } +++ if [file exists "${gccpath}/libiberty/libiberty.a"] { +++ append flags "-L${gccpath}/libiberty " +++ } +++ append ld_library_path [gcc-set-multilib-library-path $ALGOL68_UNDER_TEST] +++ } +++ +++ set_ld_library_path_env_vars +++ +++ return "$flags" +++} +++ +++# +++# algol68_init -- called at the start of each subdir of tests +++# +++ +++proc algol68_init { args } { +++ global subdir +++ global algol68_initialized +++ global base_dir +++ global tmpdir +++ global libdir +++ global gluefile wrap_flags +++ global objdir srcdir +++ global ALWAYS_ALGOL68FLAGS +++ global TOOL_EXECUTABLE TOOL_OPTIONS +++ global ALGOL68_UNDER_TEST +++ global TESTING_IN_BUILD_TREE +++ global gcc_warning_prefix +++ global gcc_error_prefix +++ +++ # We set LC_ALL and LANG to C so that we get the same error messages as expected. +++ setenv LC_ALL C +++ setenv LANG C +++ +++ if ![info exists ALGOL68_UNDER_TEST] then { +++ if [info exists TOOL_EXECUTABLE] { +++ set ALGOL68_UNDER_TEST $TOOL_EXECUTABLE +++ } else { +++ if { [is_remote host] || ! [info exists TESTING_IN_BUILD_TREE] } { +++ set ALGOL68_UNDER_TEST [transform ga68] +++ } else { +++ set ALGOL68_UNDER_TEST [findfile $base_dir/../../ga68 "$base_dir/../../ga68 -B$base_dir/../../" [findfile $base_dir/ga68 "$base_dir/ga68 -B$base_dir/" [transform ga68]]] +++ } +++ } +++ } +++ +++ if ![is_remote host] { +++ if { [which $ALGOL68_UNDER_TEST] == 0 } then { +++ perror "ALGOL68_UNDER_TEST ($ALGOL68_UNDER_TEST) does not exist" +++ exit 1 +++ } +++ } +++ +++ if ![info exists tmpdir] { +++ set tmpdir "/tmp" +++ } +++ +++ if [info exists gluefile] { +++ unset gluefile +++ } +++ +++ set gcc_warning_prefix "warning:" +++ set gcc_error_prefix "(fatal )?error:" +++ +++ verbose "algol68 is initialized" 3 +++} +++ +++# +++# algol68_target_compile -- compile a source file +++# +++ +++proc algol68_target_compile { source dest type options } { +++ global tmpdir +++ global gluefile wrap_flags +++ global ALWAYS_ALGOL68FLAGS +++ global ALGOL68_UNDER_TEST +++ global individual_timeout +++ global TEST_ALWAYS_FLAGS +++ +++ # HACK: guard against infinite loops in the compiler +++ set individual_timeout 20 +++ +++ if { [target_info needs_status_wrapper] != "" && [info exists gluefile] } { +++ lappend options "libs=${gluefile}" +++ lappend options "ldflags=${wrap_flags}" +++ } +++ +++ set ALWAYS_ALGOL68FLAGS "" +++ +++ # TEST_ALWAYS_FLAGS are flags that should be passed to every +++ # compilation. They are passed first to allow individual +++ # tests to override them. +++ if [info exists TEST_ALWAYS_FLAGS] { +++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=$TEST_ALWAYS_FLAGS" +++ } +++ +++ if ![is_remote host] { +++ if [info exists TOOL_OPTIONS] { +++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=[algol68_include_flags [get_multilibs ${TOOL_OPTIONS}] ]" +++ lappend ALWAYS_ALGOL68FLAGS "ldflags=[algol68_link_flags [get_multilibs ${TOOL_OPTIONS}] ]" +++ } else { +++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=[algol68_include_flags [get_multilibs] ]" +++ lappend ALWAYS_ALGOL68FLAGS "ldflags=[algol68_link_flags [get_multilibs] ]" +++ } +++ } +++ +++ if [info exists TOOL_OPTIONS] { +++ lappend ALWAYS_ALGOL68FLAGS "additional_flags=$TOOL_OPTIONS" +++ } +++ +++ verbose -log "ALWAYS_ALGOL68FLAGS set to $ALWAYS_ALGOL68FLAGS" +++ +++ lappend options "timeout=[timeout_value]" +++ lappend options "compiler=$ALGOL68_UNDER_TEST" +++ +++ set options [concat "$ALWAYS_ALGOL68FLAGS" $options] +++ set options [dg-additional-files-options $options $source $dest $type] +++ set ret [target_compile $source $dest $type $options] +++ unset individual_timeout +++ return $ret +++} ++--- a/src/include/dwarf2.h +++++ b/src/include/dwarf2.h ++@@ -409,6 +409,7 @@ enum dwarf_source_language ++ DW_LANG_Ruby = 0x0040, ++ DW_LANG_Move = 0x0041, ++ DW_LANG_Hylo = 0x0042, +++ DW_LANG_Algol68 = 0x0044, ++ ++ DW_LANG_lo_user = 0x8000, /* Implementation-defined range start. */ ++ DW_LANG_hi_user = 0xffff, /* Implementation-defined range end. */ ++@@ -476,6 +477,7 @@ enum dwarf_source_language_name ++ DW_LNAME_Odin = 0x002a, ++ DW_LNAME_P4 = 0x002b, ++ DW_LNAME_Metal = 0x002c, +++ DW_LNAME_Algol68 = 0x002e, ++ ++ DW_LNAME_lo_user = 0x8000, /* Implementation-defined range start. */ ++ DW_LNAME_hi_user = 0xffff /* Implementation-defined range end. */ ++--- /dev/null +++++ b/src/libga68/Makefile.am ++@@ -0,0 +1,122 @@ +++# Makefile for libga68. +++# Copyright (C) 2025 Jose E. Marchesi. +++# +++# This file is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with this program; see the file COPYING3. If not see +++# . +++# +++# +++# if this file is changed then you need to run +++# +++# autoreconf2.69 +++ +++AUTOMAKE_OPTIONS = 1.8 foreign +++ACLOCAL_AMFLAGS = -I .. -I ../config +++# Multilib support. +++MAKEOVERRIDES= +++ +++gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +++TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd) +++ +++GCC_DIR = $(TOP_GCCDIR)/gcc +++A68_SRC = $(GCC_DIR)/algol68 +++ +++toolexeclibdir=@toolexeclibdir@ +++toolexecdir=@toolexecdir@ +++A68_FOR_TARGET=@A68_FOR_TARGET@ +++ +++extra_darwin_ldflags_libga68=@extra_darwin_ldflags_libga68@ +++ +++if ENABLE_DARWIN_AT_RPATH +++extra_darwin_ldflags_libga68 += -Wc,-nodefaultrpaths +++extra_darwin_ldflags_libga68 += -Wl,-rpath,@loader_path +++endif +++ +++A68_BUILDDIR := $(shell pwd) +++ +++# Work around what appears to be a GNU make bug handling MAKEFLAGS +++# values defined in terms of make variables, as is the case for CC and +++# friends when we are called from the top level Makefile. +++AM_MAKEFLAGS = \ +++ "GCC_DIR=$(GCC_DIR)" \ +++ "A68_SRC=$(A68_SRC)" \ +++ "AR_FLAGS=$(AR_FLAGS)" \ +++ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ +++ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ +++ "A68_FOR_TARGET=$(A68_FOR_TARGET)" \ +++ "CFLAGS=$(CFLAGS)" \ +++ "CXXFLAGS=$(CXXFLAGS)" \ +++ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ +++ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ +++ "CFLAGS_LONGDOUBLE=$(CFLAGS_LONGDOUBLE)" \ +++ "EXPECT=$(EXPECT)" \ +++ "INSTALL=$(INSTALL)" \ +++ "INSTALL_DATA=$(INSTALL_DATA)" \ +++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ +++ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ +++ "LDFLAGS=$(LDFLAGS)" \ +++ "LIBCFLAGS=$(LIBCFLAGS)" \ +++ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ +++ "MAKE=$(MAKE)" \ +++ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ +++ "PICFLAG=$(PICFLAG)" \ +++ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ +++ "SHELL=$(SHELL)" \ +++ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ +++ "exec_prefix=$(exec_prefix)" \ +++ "infodir=$(infodir)" \ +++ "libdir=$(libdir)" \ +++ "includedir=$(includedir)" \ +++ "prefix=$(prefix)" \ +++ "tooldir=$(tooldir)" \ +++ "gxx_include_dir=$(gxx_include_dir)" \ +++ "AR=$(AR)" \ +++ "AS=$(AS)" \ +++ "LD=$(LD)" \ +++ "RANLIB=$(RANLIB)" \ +++ "NM=$(NM)" \ +++ "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ +++ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ +++ "DESTDIR=$(DESTDIR)" \ +++ "WERROR=$(WERROR)" \ +++ "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ +++ "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ +++ "LIBTOOL=$(A68_BUILDDIR)/libtool" \ +++ "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" +++ +++# Subdir rules rely on $(FLAGS_TO_PASS) +++FLAGS_TO_PASS = $(AM_MAKEFLAGS) +++ +++gcc_objdir = $(MULTIBUILDTOP)../../$(host_subdir)/gcc +++ +++toolexeclib_DATA = libga68.spec +++toolexeclib_LTLIBRARIES = libga68.la +++ +++libga68_la_SOURCES = libga68.c \ +++ ga68-unistr.c \ +++ ga68-posix.c \ +++ ga68-alloc.c \ +++ ga68-error.c \ +++ ga68-standenv.c \ +++ ga68.h +++libga68_la_LIBTOOLFLAGS = +++libga68_la_CFLAGS = $(LIBGA68_GCFLAGS) $(LIBGA68_BOEHM_GC_INCLUDES) +++libga68_la_LDFLAGS = -version-info $(libga68_VERSION) \ +++ $(extra_darwin_ldflags_libga68) +++libga68_la_DEPENDENCIES = libga68.spec +++libga68_la_LIBADD = $(LIBGA68_BOEHM_GC_LIBS) +++ +++# target overrides +++-include $(tmake_file) +++ +++include $(top_srcdir)/../multilib.am ++--- /dev/null +++++ b/src/libga68/Makefile.in ++@@ -0,0 +1,901 @@ +++# Makefile.in generated by automake 1.15.1 from Makefile.am. +++# @configure_input@ +++ +++# Copyright (C) 1994-2017 Free Software Foundation, Inc. +++ +++# This Makefile.in is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +++# PARTICULAR PURPOSE. +++ +++@SET_MAKE@ +++ +++# Makefile for libga68. +++# Copyright (C) 2025 Jose E. Marchesi. +++# +++# This file is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with this program; see the file COPYING3. If not see +++# . +++# +++# +++# if this file is changed then you need to run +++# +++# autoreconf2.69 +++ +++ +++VPATH = @srcdir@ +++am__is_gnu_make = { \ +++ if test -z '$(MAKELEVEL)'; then \ +++ false; \ +++ elif test -n '$(MAKE_HOST)'; then \ +++ true; \ +++ elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ +++ true; \ +++ else \ +++ false; \ +++ fi; \ +++} +++am__make_running_with_option = \ +++ case $${target_option-} in \ +++ ?) ;; \ +++ *) echo "am__make_running_with_option: internal error: invalid" \ +++ "target option '$${target_option-}' specified" >&2; \ +++ exit 1;; \ +++ esac; \ +++ has_opt=no; \ +++ sane_makeflags=$$MAKEFLAGS; \ +++ if $(am__is_gnu_make); then \ +++ sane_makeflags=$$MFLAGS; \ +++ else \ +++ case $$MAKEFLAGS in \ +++ *\\[\ \ ]*) \ +++ bs=\\; \ +++ sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ +++ | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ +++ esac; \ +++ fi; \ +++ skip_next=no; \ +++ strip_trailopt () \ +++ { \ +++ flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ +++ }; \ +++ for flg in $$sane_makeflags; do \ +++ test $$skip_next = yes && { skip_next=no; continue; }; \ +++ case $$flg in \ +++ *=*|--*) continue;; \ +++ -*I) strip_trailopt 'I'; skip_next=yes;; \ +++ -*I?*) strip_trailopt 'I';; \ +++ -*O) strip_trailopt 'O'; skip_next=yes;; \ +++ -*O?*) strip_trailopt 'O';; \ +++ -*l) strip_trailopt 'l'; skip_next=yes;; \ +++ -*l?*) strip_trailopt 'l';; \ +++ -[dEDm]) skip_next=yes;; \ +++ -[JT]) skip_next=yes;; \ +++ esac; \ +++ case $$flg in \ +++ *$$target_option*) has_opt=yes; break;; \ +++ esac; \ +++ done; \ +++ test $$has_opt = yes +++am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +++am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +++pkgdatadir = $(datadir)/@PACKAGE@ +++pkgincludedir = $(includedir)/@PACKAGE@ +++pkglibdir = $(libdir)/@PACKAGE@ +++pkglibexecdir = $(libexecdir)/@PACKAGE@ +++am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +++install_sh_DATA = $(install_sh) -c -m 644 +++install_sh_PROGRAM = $(install_sh) -c +++install_sh_SCRIPT = $(install_sh) -c +++INSTALL_HEADER = $(INSTALL_DATA) +++transform = $(program_transform_name) +++NORMAL_INSTALL = : +++PRE_INSTALL = : +++POST_INSTALL = : +++NORMAL_UNINSTALL = : +++PRE_UNINSTALL = : +++POST_UNINSTALL = : +++build_triplet = @build@ +++host_triplet = @host@ +++target_triplet = @target@ +++@ENABLE_DARWIN_AT_RPATH_TRUE@am__append_1 = -Wc,-nodefaultrpaths \ +++@ENABLE_DARWIN_AT_RPATH_TRUE@ -Wl,-rpath,@loader_path +++subdir = . +++ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +++am__aclocal_m4_deps = $(top_srcdir)/../config/acx.m4 \ +++ $(top_srcdir)/../config/depstand.m4 \ +++ $(top_srcdir)/../config/lead-dot.m4 \ +++ $(top_srcdir)/../config/multi.m4 \ +++ $(top_srcdir)/../config/no-executables.m4 \ +++ $(top_srcdir)/../config/override.m4 \ +++ $(top_srcdir)/../libtool.m4 $(top_srcdir)/../ltoptions.m4 \ +++ $(top_srcdir)/../ltsugar.m4 $(top_srcdir)/../ltversion.m4 \ +++ $(top_srcdir)/../lt~obsolete.m4 $(top_srcdir)/configure.ac +++am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ +++ $(ACLOCAL_M4) +++DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ +++ $(am__configure_deps) +++am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ +++ configure.lineno config.status.lineno +++mkinstalldirs = $(SHELL) $(top_srcdir)/../mkinstalldirs +++CONFIG_HEADER = config.h +++CONFIG_CLEAN_FILES = libga68.spec +++CONFIG_CLEAN_VPATH_FILES = +++am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; +++am__vpath_adj = case $$p in \ +++ $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \ +++ *) f=$$p;; \ +++ esac; +++am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`; +++am__install_max = 40 +++am__nobase_strip_setup = \ +++ srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'` +++am__nobase_strip = \ +++ for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||" +++am__nobase_list = $(am__nobase_strip_setup); \ +++ for p in $$list; do echo "$$p $$p"; done | \ +++ sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \ +++ $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \ +++ if (++n[$$2] == $(am__install_max)) \ +++ { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \ +++ END { for (dir in files) print dir, files[dir] }' +++am__base_list = \ +++ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ +++ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +++am__uninstall_files_from_dir = { \ +++ test -z "$$files" \ +++ || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ +++ || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ +++ $(am__cd) "$$dir" && rm -f $$files; }; \ +++ } +++am__installdirs = "$(DESTDIR)$(toolexeclibdir)" \ +++ "$(DESTDIR)$(toolexeclibdir)" +++LTLIBRARIES = $(toolexeclib_LTLIBRARIES) +++am__DEPENDENCIES_1 = +++am_libga68_la_OBJECTS = libga68_la-libga68.lo \ +++ libga68_la-ga68-unistr.lo libga68_la-ga68-posix.lo \ +++ libga68_la-ga68-alloc.lo libga68_la-ga68-error.lo \ +++ libga68_la-ga68-standenv.lo +++libga68_la_OBJECTS = $(am_libga68_la_OBJECTS) +++AM_V_lt = $(am__v_lt_@AM_V@) +++am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +++am__v_lt_0 = --silent +++am__v_lt_1 = +++libga68_la_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC \ +++ $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=link $(CCLD) \ +++ $(libga68_la_CFLAGS) $(CFLAGS) $(libga68_la_LDFLAGS) \ +++ $(LDFLAGS) -o $@ +++AM_V_P = $(am__v_P_@AM_V@) +++am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +++am__v_P_0 = false +++am__v_P_1 = : +++AM_V_GEN = $(am__v_GEN_@AM_V@) +++am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +++am__v_GEN_0 = @echo " GEN " $@; +++am__v_GEN_1 = +++AM_V_at = $(am__v_at_@AM_V@) +++am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +++am__v_at_0 = @ +++am__v_at_1 = +++DEFAULT_INCLUDES = -I.@am__isrc@ +++depcomp = $(SHELL) $(top_srcdir)/../depcomp +++am__depfiles_maybe = depfiles +++am__mv = mv -f +++COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ +++ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +++LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ +++ $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) \ +++ $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \ +++ $(AM_CFLAGS) $(CFLAGS) +++AM_V_CC = $(am__v_CC_@AM_V@) +++am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +++am__v_CC_0 = @echo " CC " $@; +++am__v_CC_1 = +++CCLD = $(CC) +++LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \ +++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \ +++ $(AM_LDFLAGS) $(LDFLAGS) -o $@ +++AM_V_CCLD = $(am__v_CCLD_@AM_V@) +++am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +++am__v_CCLD_0 = @echo " CCLD " $@; +++am__v_CCLD_1 = +++SOURCES = $(libga68_la_SOURCES) +++am__can_run_installinfo = \ +++ case $$AM_UPDATE_INFO_DIR in \ +++ n|no|NO) false;; \ +++ *) (install-info --version) >/dev/null 2>&1;; \ +++ esac +++DATA = $(toolexeclib_DATA) +++am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \ +++ $(LISP)config.h.in +++# Read a list of newline-separated strings from the standard input, +++# and print each of them once, without duplicates. Input order is +++# *not* preserved. +++am__uniquify_input = $(AWK) '\ +++ BEGIN { nonempty = 0; } \ +++ { items[$$0] = 1; nonempty = 1; } \ +++ END { if (nonempty) { for (i in items) print i; }; } \ +++' +++# Make sure the list of sources is unique. This is necessary because, +++# e.g., the same source file might be shared among _SOURCES variables +++# for different programs/libraries. +++am__define_uniq_tagged_files = \ +++ list='$(am__tagged_files)'; \ +++ unique=`for i in $$list; do \ +++ if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ +++ done | $(am__uniquify_input)` +++ETAGS = etags +++CTAGS = ctags +++CSCOPE = cscope +++AM_RECURSIVE_TARGETS = cscope +++ACLOCAL = @ACLOCAL@ +++AMTAR = @AMTAR@ +++AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +++AR = @AR@ +++AUTOCONF = @AUTOCONF@ +++AUTOHEADER = @AUTOHEADER@ +++AUTOMAKE = @AUTOMAKE@ +++AWK = @AWK@ +++CC = @CC@ +++CCAS = @CCAS@ +++CCASDEPMODE = @CCASDEPMODE@ +++CCASFLAGS = @CCASFLAGS@ +++CCDEPMODE = @CCDEPMODE@ +++CC_FOR_BUILD = @CC_FOR_BUILD@ +++CFLAGS = @CFLAGS@ +++CPP = @CPP@ +++CPPFLAGS = @CPPFLAGS@ +++CYGPATH_W = @CYGPATH_W@ +++DEFS = @DEFS@ +++DEPDIR = @DEPDIR@ +++DSYMUTIL = @DSYMUTIL@ +++DUMPBIN = @DUMPBIN@ +++ECHO_C = @ECHO_C@ +++ECHO_N = @ECHO_N@ +++ECHO_T = @ECHO_T@ +++EGREP = @EGREP@ +++EXEEXT = @EXEEXT@ +++FGREP = @FGREP@ +++GREP = @GREP@ +++INSTALL = @INSTALL@ +++INSTALL_DATA = @INSTALL_DATA@ +++INSTALL_PROGRAM = @INSTALL_PROGRAM@ +++INSTALL_SCRIPT = @INSTALL_SCRIPT@ +++INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +++LD = @LD@ +++LDFLAGS = @LDFLAGS@ +++LIBGA68_BOEHM_GC_INCLUDES = @LIBGA68_BOEHM_GC_INCLUDES@ +++LIBGA68_BOEHM_GC_LIBS = @LIBGA68_BOEHM_GC_LIBS@ +++LIBGA68_GCFLAGS = @LIBGA68_GCFLAGS@ +++LIBOBJS = @LIBOBJS@ +++LIBS = @LIBS@ +++LIBTOOL = @LIBTOOL@ +++LIPO = @LIPO@ +++LN_S = @LN_S@ +++LTLIBOBJS = @LTLIBOBJS@ +++MAINT = @MAINT@ +++MAKEINFO = @MAKEINFO@ +++MKDIR_P = @MKDIR_P@ +++NM = @NM@ +++NMEDIT = @NMEDIT@ +++OBJDUMP = @OBJDUMP@ +++OBJEXT = @OBJEXT@ +++OTOOL = @OTOOL@ +++OTOOL64 = @OTOOL64@ +++PACKAGE = @PACKAGE@ +++PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +++PACKAGE_NAME = @PACKAGE_NAME@ +++PACKAGE_STRING = @PACKAGE_STRING@ +++PACKAGE_TARNAME = @PACKAGE_TARNAME@ +++PACKAGE_URL = @PACKAGE_URL@ +++PACKAGE_VERSION = @PACKAGE_VERSION@ +++PATH_SEPARATOR = @PATH_SEPARATOR@ +++RANLIB = @RANLIB@ +++SED = @SED@ +++SET_MAKE = @SET_MAKE@ +++SHELL = @SHELL@ +++SPEC_LIBGA68_DEPS = @SPEC_LIBGA68_DEPS@ +++STRIP = @STRIP@ +++VERSION = @VERSION@ +++abs_builddir = @abs_builddir@ +++abs_srcdir = @abs_srcdir@ +++abs_top_builddir = @abs_top_builddir@ +++abs_top_srcdir = @abs_top_srcdir@ +++ac_ct_CC = @ac_ct_CC@ +++ac_ct_DUMPBIN = @ac_ct_DUMPBIN@ +++am__include = @am__include@ +++am__leading_dot = @am__leading_dot@ +++am__quote = @am__quote@ +++am__tar = @am__tar@ +++am__untar = @am__untar@ +++bindir = @bindir@ +++build = @build@ +++build_alias = @build_alias@ +++build_cpu = @build_cpu@ +++build_libsubdir = @build_libsubdir@ +++build_os = @build_os@ +++build_subdir = @build_subdir@ +++build_vendor = @build_vendor@ +++builddir = @builddir@ +++datadir = @datadir@ +++datarootdir = @datarootdir@ +++docdir = @docdir@ +++dvidir = @dvidir@ +++enable_shared = @enable_shared@ +++enable_static = @enable_static@ +++exec_prefix = @exec_prefix@ +++extra_darwin_ldflags_libga68 = @extra_darwin_ldflags_libga68@ \ +++ $(am__append_1) +++get_gcc_base_ver = @get_gcc_base_ver@ +++host = @host@ +++host_alias = @host_alias@ +++host_cpu = @host_cpu@ +++host_noncanonical = @host_noncanonical@ +++host_os = @host_os@ +++host_subdir = @host_subdir@ +++host_vendor = @host_vendor@ +++htmldir = @htmldir@ +++includedir = @includedir@ +++infodir = @infodir@ +++install_sh = @install_sh@ +++libdir = @libdir@ +++libexecdir = @libexecdir@ +++libga68_VERSION = @libga68_VERSION@ +++localedir = @localedir@ +++localstatedir = @localstatedir@ +++mandir = @mandir@ +++mkdir_p = @mkdir_p@ +++multi_basedir = @multi_basedir@ +++oldincludedir = @oldincludedir@ +++pdfdir = @pdfdir@ +++prefix = @prefix@ +++program_transform_name = @program_transform_name@ +++psdir = @psdir@ +++sbindir = @sbindir@ +++sharedstatedir = @sharedstatedir@ +++slibdir = @slibdir@ +++srcdir = @srcdir@ +++sysconfdir = @sysconfdir@ +++target = @target@ +++target_alias = @target_alias@ +++target_cpu = @target_cpu@ +++target_noncanonical = @target_noncanonical@ +++target_os = @target_os@ +++target_subdir = @target_subdir@ +++target_vendor = @target_vendor@ +++toolexecdir = @toolexecdir@ +++toolexeclibdir = @toolexeclibdir@ +++top_build_prefix = @top_build_prefix@ +++top_builddir = @top_builddir@ +++top_srcdir = @top_srcdir@ +++AUTOMAKE_OPTIONS = 1.8 foreign +++ACLOCAL_AMFLAGS = -I .. -I ../config +++# Multilib support. +++MAKEOVERRIDES = +++gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) +++TOP_GCCDIR := $(shell cd $(top_srcdir) && cd .. && pwd) +++GCC_DIR = $(TOP_GCCDIR)/gcc +++A68_SRC = $(GCC_DIR)/algol68 +++A68_FOR_TARGET = @A68_FOR_TARGET@ +++A68_BUILDDIR := $(shell pwd) +++ +++# Work around what appears to be a GNU make bug handling MAKEFLAGS +++# values defined in terms of make variables, as is the case for CC and +++# friends when we are called from the top level Makefile. +++AM_MAKEFLAGS = \ +++ "GCC_DIR=$(GCC_DIR)" \ +++ "A68_SRC=$(A68_SRC)" \ +++ "AR_FLAGS=$(AR_FLAGS)" \ +++ "CC_FOR_BUILD=$(CC_FOR_BUILD)" \ +++ "CC_FOR_TARGET=$(CC_FOR_TARGET)" \ +++ "A68_FOR_TARGET=$(A68_FOR_TARGET)" \ +++ "CFLAGS=$(CFLAGS)" \ +++ "CXXFLAGS=$(CXXFLAGS)" \ +++ "CFLAGS_FOR_BUILD=$(CFLAGS_FOR_BUILD)" \ +++ "CFLAGS_FOR_TARGET=$(CFLAGS_FOR_TARGET)" \ +++ "CFLAGS_LONGDOUBLE=$(CFLAGS_LONGDOUBLE)" \ +++ "EXPECT=$(EXPECT)" \ +++ "INSTALL=$(INSTALL)" \ +++ "INSTALL_DATA=$(INSTALL_DATA)" \ +++ "INSTALL_PROGRAM=$(INSTALL_PROGRAM)" \ +++ "INSTALL_SCRIPT=$(INSTALL_SCRIPT)" \ +++ "LDFLAGS=$(LDFLAGS)" \ +++ "LIBCFLAGS=$(LIBCFLAGS)" \ +++ "LIBCFLAGS_FOR_TARGET=$(LIBCFLAGS_FOR_TARGET)" \ +++ "MAKE=$(MAKE)" \ +++ "MAKEINFO=$(MAKEINFO) $(MAKEINFOFLAGS)" \ +++ "PICFLAG=$(PICFLAG)" \ +++ "PICFLAG_FOR_TARGET=$(PICFLAG_FOR_TARGET)" \ +++ "SHELL=$(SHELL)" \ +++ "RUNTESTFLAGS=$(RUNTESTFLAGS)" \ +++ "exec_prefix=$(exec_prefix)" \ +++ "infodir=$(infodir)" \ +++ "libdir=$(libdir)" \ +++ "includedir=$(includedir)" \ +++ "prefix=$(prefix)" \ +++ "tooldir=$(tooldir)" \ +++ "gxx_include_dir=$(gxx_include_dir)" \ +++ "AR=$(AR)" \ +++ "AS=$(AS)" \ +++ "LD=$(LD)" \ +++ "RANLIB=$(RANLIB)" \ +++ "NM=$(NM)" \ +++ "NM_FOR_BUILD=$(NM_FOR_BUILD)" \ +++ "NM_FOR_TARGET=$(NM_FOR_TARGET)" \ +++ "DESTDIR=$(DESTDIR)" \ +++ "WERROR=$(WERROR)" \ +++ "TARGET_LIB_PATH=$(TARGET_LIB_PATH)" \ +++ "TARGET_LIB_PATH_libgm2=$(TARGET_LIB_PATH_libgm2)" \ +++ "LIBTOOL=$(A68_BUILDDIR)/libtool" \ +++ "DARWIN_AT_RPATH=$(DARWIN_AT_RPATH)" +++ +++ +++# Subdir rules rely on $(FLAGS_TO_PASS) +++FLAGS_TO_PASS = $(AM_MAKEFLAGS) +++gcc_objdir = $(MULTIBUILDTOP)../../$(host_subdir)/gcc +++toolexeclib_DATA = libga68.spec +++toolexeclib_LTLIBRARIES = libga68.la +++libga68_la_SOURCES = libga68.c \ +++ ga68-unistr.c \ +++ ga68-posix.c \ +++ ga68-alloc.c \ +++ ga68-error.c \ +++ ga68-standenv.c \ +++ ga68.h +++ +++libga68_la_LIBTOOLFLAGS = +++libga68_la_CFLAGS = $(LIBGA68_GCFLAGS) $(LIBGA68_BOEHM_GC_INCLUDES) +++libga68_la_LDFLAGS = -version-info $(libga68_VERSION) \ +++ $(extra_darwin_ldflags_libga68) +++ +++libga68_la_DEPENDENCIES = libga68.spec +++libga68_la_LIBADD = $(LIBGA68_BOEHM_GC_LIBS) +++MULTISRCTOP = +++MULTIBUILDTOP = +++MULTIDIRS = +++MULTISUBDIR = +++MULTIDO = true +++MULTICLEAN = true +++all: config.h +++ $(MAKE) $(AM_MAKEFLAGS) all-am +++ +++.SUFFIXES: +++.SUFFIXES: .c .lo .o .obj +++am--refresh: Makefile +++ @: +++$(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(top_srcdir)/../multilib.am $(am__configure_deps) +++ @for dep in $?; do \ +++ case '$(am__configure_deps)' in \ +++ *$$dep*) \ +++ echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ +++ $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ +++ && exit 0; \ +++ exit 1;; \ +++ esac; \ +++ done; \ +++ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ +++ $(am__cd) $(top_srcdir) && \ +++ $(AUTOMAKE) --foreign Makefile +++Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status +++ @case '$?' in \ +++ *config.status*) \ +++ echo ' $(SHELL) ./config.status'; \ +++ $(SHELL) ./config.status;; \ +++ *) \ +++ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ +++ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ +++ esac; +++$(top_srcdir)/../multilib.am $(am__empty): +++ +++$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) +++ $(SHELL) ./config.status --recheck +++ +++$(top_srcdir)/configure: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +++ $(am__cd) $(srcdir) && $(AUTOCONF) +++$(ACLOCAL_M4): @MAINTAINER_MODE_TRUE@ $(am__aclocal_m4_deps) +++ $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +++$(am__aclocal_m4_deps): +++ +++config.h: stamp-h1 +++ @test -f $@ || rm -f stamp-h1 +++ @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) stamp-h1 +++ +++stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status +++ @rm -f stamp-h1 +++ cd $(top_builddir) && $(SHELL) ./config.status config.h +++$(srcdir)/config.h.in: @MAINTAINER_MODE_TRUE@ $(am__configure_deps) +++ ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) +++ rm -f stamp-h1 +++ touch $@ +++ +++distclean-hdr: +++ -rm -f config.h stamp-h1 +++libga68.spec: $(top_builddir)/config.status $(srcdir)/libga68.spec.in +++ cd $(top_builddir) && $(SHELL) ./config.status $@ +++ +++install-toolexeclibLTLIBRARIES: $(toolexeclib_LTLIBRARIES) +++ @$(NORMAL_INSTALL) +++ @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ +++ list2=; for p in $$list; do \ +++ if test -f $$p; then \ +++ list2="$$list2 $$p"; \ +++ else :; fi; \ +++ done; \ +++ test -z "$$list2" || { \ +++ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ +++ $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ +++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 '$(DESTDIR)$(toolexeclibdir)'"; \ +++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=install $(INSTALL) $(INSTALL_STRIP_FLAG) $$list2 "$(DESTDIR)$(toolexeclibdir)"; \ +++ } +++ +++uninstall-toolexeclibLTLIBRARIES: +++ @$(NORMAL_UNINSTALL) +++ @list='$(toolexeclib_LTLIBRARIES)'; test -n "$(toolexeclibdir)" || list=; \ +++ for p in $$list; do \ +++ $(am__strip_dir) \ +++ echo " $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f '$(DESTDIR)$(toolexeclibdir)/$$f'"; \ +++ $(LIBTOOL) $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=uninstall rm -f "$(DESTDIR)$(toolexeclibdir)/$$f"; \ +++ done +++ +++clean-toolexeclibLTLIBRARIES: +++ -test -z "$(toolexeclib_LTLIBRARIES)" || rm -f $(toolexeclib_LTLIBRARIES) +++ @list='$(toolexeclib_LTLIBRARIES)'; \ +++ locs=`for p in $$list; do echo $$p; done | \ +++ sed 's|^[^/]*$$|.|; s|/[^/]*$$||; s|$$|/so_locations|' | \ +++ sort -u`; \ +++ test -z "$$locs" || { \ +++ echo rm -f $${locs}; \ +++ rm -f $${locs}; \ +++ } +++ +++libga68.la: $(libga68_la_OBJECTS) $(libga68_la_DEPENDENCIES) $(EXTRA_libga68_la_DEPENDENCIES) +++ $(AM_V_CCLD)$(libga68_la_LINK) -rpath $(toolexeclibdir) $(libga68_la_OBJECTS) $(libga68_la_LIBADD) $(LIBS) +++ +++mostlyclean-compile: +++ -rm -f *.$(OBJEXT) +++ +++distclean-compile: +++ -rm -f *.tab.c +++ +++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-alloc.Plo@am__quote@ +++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-error.Plo@am__quote@ +++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-posix.Plo@am__quote@ +++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-standenv.Plo@am__quote@ +++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-ga68-unistr.Plo@am__quote@ +++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/libga68_la-libga68.Plo@am__quote@ +++ +++.c.o: +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< +++ +++.c.obj: +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +++ +++.c.lo: +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LTCOMPILE) -c -o $@ $< +++ +++libga68_la-libga68.lo: libga68.c +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-libga68.lo -MD -MP -MF $(DEPDIR)/libga68_la-libga68.Tpo -c -o libga68_la-libga68.lo `test -f 'libga68.c' || echo '$(srcdir)/'`libga68.c +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-libga68.Tpo $(DEPDIR)/libga68_la-libga68.Plo +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='libga68.c' object='libga68_la-libga68.lo' libtool=yes @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-libga68.lo `test -f 'libga68.c' || echo '$(srcdir)/'`libga68.c +++ +++libga68_la-ga68-unistr.lo: ga68-unistr.c +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-unistr.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-unistr.Tpo -c -o libga68_la-ga68-unistr.lo `test -f 'ga68-unistr.c' || echo '$(srcdir)/'`ga68-unistr.c +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-unistr.Tpo $(DEPDIR)/libga68_la-ga68-unistr.Plo +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-unistr.c' object='libga68_la-ga68-unistr.lo' libtool=yes @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-unistr.lo `test -f 'ga68-unistr.c' || echo '$(srcdir)/'`ga68-unistr.c +++ +++libga68_la-ga68-posix.lo: ga68-posix.c +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-posix.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-posix.Tpo -c -o libga68_la-ga68-posix.lo `test -f 'ga68-posix.c' || echo '$(srcdir)/'`ga68-posix.c +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-posix.Tpo $(DEPDIR)/libga68_la-ga68-posix.Plo +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-posix.c' object='libga68_la-ga68-posix.lo' libtool=yes @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-posix.lo `test -f 'ga68-posix.c' || echo '$(srcdir)/'`ga68-posix.c +++ +++libga68_la-ga68-alloc.lo: ga68-alloc.c +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-alloc.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-alloc.Tpo -c -o libga68_la-ga68-alloc.lo `test -f 'ga68-alloc.c' || echo '$(srcdir)/'`ga68-alloc.c +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-alloc.Tpo $(DEPDIR)/libga68_la-ga68-alloc.Plo +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-alloc.c' object='libga68_la-ga68-alloc.lo' libtool=yes @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-alloc.lo `test -f 'ga68-alloc.c' || echo '$(srcdir)/'`ga68-alloc.c +++ +++libga68_la-ga68-error.lo: ga68-error.c +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-error.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-error.Tpo -c -o libga68_la-ga68-error.lo `test -f 'ga68-error.c' || echo '$(srcdir)/'`ga68-error.c +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-error.Tpo $(DEPDIR)/libga68_la-ga68-error.Plo +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-error.c' object='libga68_la-ga68-error.lo' libtool=yes @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-error.lo `test -f 'ga68-error.c' || echo '$(srcdir)/'`ga68-error.c +++ +++libga68_la-ga68-standenv.lo: ga68-standenv.c +++@am__fastdepCC_TRUE@ $(AM_V_CC)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -MT libga68_la-ga68-standenv.lo -MD -MP -MF $(DEPDIR)/libga68_la-ga68-standenv.Tpo -c -o libga68_la-ga68-standenv.lo `test -f 'ga68-standenv.c' || echo '$(srcdir)/'`ga68-standenv.c +++@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/libga68_la-ga68-standenv.Tpo $(DEPDIR)/libga68_la-ga68-standenv.Plo +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ga68-standenv.c' object='libga68_la-ga68-standenv.lo' libtool=yes @AMDEPBACKSLASH@ +++@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +++@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(LIBTOOL) $(AM_V_lt) --tag=CC $(libga68_la_LIBTOOLFLAGS) $(LIBTOOLFLAGS) --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(libga68_la_CFLAGS) $(CFLAGS) -c -o libga68_la-ga68-standenv.lo `test -f 'ga68-standenv.c' || echo '$(srcdir)/'`ga68-standenv.c +++ +++mostlyclean-libtool: +++ -rm -f *.lo +++ +++clean-libtool: +++ -rm -rf .libs _libs +++ +++distclean-libtool: +++ -rm -f libtool config.lt +++install-toolexeclibDATA: $(toolexeclib_DATA) +++ @$(NORMAL_INSTALL) +++ @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \ +++ if test -n "$$list"; then \ +++ echo " $(MKDIR_P) '$(DESTDIR)$(toolexeclibdir)'"; \ +++ $(MKDIR_P) "$(DESTDIR)$(toolexeclibdir)" || exit 1; \ +++ fi; \ +++ for p in $$list; do \ +++ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ +++ echo "$$d$$p"; \ +++ done | $(am__base_list) | \ +++ while read files; do \ +++ echo " $(INSTALL_DATA) $$files '$(DESTDIR)$(toolexeclibdir)'"; \ +++ $(INSTALL_DATA) $$files "$(DESTDIR)$(toolexeclibdir)" || exit $$?; \ +++ done +++ +++uninstall-toolexeclibDATA: +++ @$(NORMAL_UNINSTALL) +++ @list='$(toolexeclib_DATA)'; test -n "$(toolexeclibdir)" || list=; \ +++ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ +++ dir='$(DESTDIR)$(toolexeclibdir)'; $(am__uninstall_files_from_dir) +++ +++ID: $(am__tagged_files) +++ $(am__define_uniq_tagged_files); mkid -fID $$unique +++tags: tags-am +++TAGS: tags +++ +++tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) +++ set x; \ +++ here=`pwd`; \ +++ $(am__define_uniq_tagged_files); \ +++ shift; \ +++ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ +++ test -n "$$unique" || unique=$$empty_fix; \ +++ if test $$# -gt 0; then \ +++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +++ "$$@" $$unique; \ +++ else \ +++ $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ +++ $$unique; \ +++ fi; \ +++ fi +++ctags: ctags-am +++ +++CTAGS: ctags +++ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) +++ $(am__define_uniq_tagged_files); \ +++ test -z "$(CTAGS_ARGS)$$unique" \ +++ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ +++ $$unique +++ +++GTAGS: +++ here=`$(am__cd) $(top_builddir) && pwd` \ +++ && $(am__cd) $(top_srcdir) \ +++ && gtags -i $(GTAGS_ARGS) "$$here" +++cscope: cscope.files +++ test ! -s cscope.files \ +++ || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +++clean-cscope: +++ -rm -f cscope.files +++cscope.files: clean-cscope cscopelist +++cscopelist: cscopelist-am +++ +++cscopelist-am: $(am__tagged_files) +++ list='$(am__tagged_files)'; \ +++ case "$(srcdir)" in \ +++ [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ +++ *) sdir=$(subdir)/$(srcdir) ;; \ +++ esac; \ +++ for i in $$list; do \ +++ if test -f "$$i"; then \ +++ echo "$(subdir)/$$i"; \ +++ else \ +++ echo "$$sdir/$$i"; \ +++ fi; \ +++ done >> $(top_builddir)/cscope.files +++ +++distclean-tags: +++ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags +++ -rm -f cscope.out cscope.in.out cscope.po.out cscope.files +++check-am: all-am +++check: check-am +++all-am: Makefile $(LTLIBRARIES) $(DATA) config.h all-local +++installdirs: +++ for dir in "$(DESTDIR)$(toolexeclibdir)" "$(DESTDIR)$(toolexeclibdir)"; do \ +++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ +++ done +++install: install-am +++install-exec: install-exec-am +++install-data: install-data-am +++uninstall: uninstall-am +++ +++install-am: all-am +++ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am +++ +++installcheck: installcheck-am +++install-strip: +++ if test -z '$(STRIP)'; then \ +++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +++ install; \ +++ else \ +++ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ +++ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ +++ "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ +++ fi +++mostlyclean-generic: +++ +++clean-generic: +++ +++distclean-generic: +++ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) +++ -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) +++ +++maintainer-clean-generic: +++ @echo "This command is intended for maintainers to use" +++ @echo "it deletes files that may require special tools to rebuild." +++clean: clean-am +++ +++clean-am: clean-generic clean-libtool clean-local \ +++ clean-toolexeclibLTLIBRARIES mostlyclean-am +++ +++distclean: distclean-am +++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) +++ -rm -rf ./$(DEPDIR) +++ -rm -f Makefile +++distclean-am: clean-am distclean-compile distclean-generic \ +++ distclean-hdr distclean-libtool distclean-local distclean-tags +++ +++dvi: dvi-am +++ +++dvi-am: +++ +++html: html-am +++ +++html-am: +++ +++info: info-am +++ +++info-am: +++ +++install-data-am: +++ +++install-dvi: install-dvi-am +++ +++install-dvi-am: +++ +++install-exec-am: install-exec-local install-toolexeclibDATA \ +++ install-toolexeclibLTLIBRARIES +++ +++install-html: install-html-am +++ +++install-html-am: +++ +++install-info: install-info-am +++ +++install-info-am: +++ +++install-man: +++ +++install-pdf: install-pdf-am +++ +++install-pdf-am: +++ +++install-ps: install-ps-am +++ +++install-ps-am: +++ +++installcheck-am: +++ +++maintainer-clean: maintainer-clean-am +++ -rm -f $(am__CONFIG_DISTCLEAN_FILES) +++ -rm -rf $(top_srcdir)/autom4te.cache +++ -rm -rf ./$(DEPDIR) +++ -rm -f Makefile +++maintainer-clean-am: distclean-am maintainer-clean-generic \ +++ maintainer-clean-local +++ +++mostlyclean: mostlyclean-am +++ +++mostlyclean-am: mostlyclean-compile mostlyclean-generic \ +++ mostlyclean-libtool mostlyclean-local +++ +++pdf: pdf-am +++ +++pdf-am: +++ +++ps: ps-am +++ +++ps-am: +++ +++uninstall-am: uninstall-toolexeclibDATA \ +++ uninstall-toolexeclibLTLIBRARIES +++ +++.MAKE: all install-am install-strip +++ +++.PHONY: CTAGS GTAGS TAGS all all-am all-local am--refresh check \ +++ check-am clean clean-cscope clean-generic clean-libtool \ +++ clean-local clean-toolexeclibLTLIBRARIES cscope cscopelist-am \ +++ ctags ctags-am distclean distclean-compile distclean-generic \ +++ distclean-hdr distclean-libtool distclean-local distclean-tags \ +++ dvi dvi-am html html-am info info-am install install-am \ +++ install-data install-data-am install-dvi install-dvi-am \ +++ install-exec install-exec-am install-exec-local install-html \ +++ install-html-am install-info install-info-am install-man \ +++ install-pdf install-pdf-am install-ps install-ps-am \ +++ install-strip install-toolexeclibDATA \ +++ install-toolexeclibLTLIBRARIES installcheck installcheck-am \ +++ installdirs maintainer-clean maintainer-clean-generic \ +++ maintainer-clean-local mostlyclean mostlyclean-compile \ +++ mostlyclean-generic mostlyclean-libtool mostlyclean-local pdf \ +++ pdf-am ps ps-am tags tags-am uninstall uninstall-am \ +++ uninstall-toolexeclibDATA uninstall-toolexeclibLTLIBRARIES +++ +++.PRECIOUS: Makefile +++ +++ +++# target overrides +++-include $(tmake_file) +++ +++# GNU Make needs to see an explicit $(MAKE) variable in the command it +++# runs to enable its job server during parallel builds. Hence the +++# comments below. +++all-multi: +++ $(MULTIDO) $(AM_MAKEFLAGS) DO=all multi-do # $(MAKE) +++install-multi: +++ $(MULTIDO) $(AM_MAKEFLAGS) DO=install multi-do # $(MAKE) +++mostlyclean-multi: +++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=mostlyclean multi-clean # $(MAKE) +++clean-multi: +++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=clean multi-clean # $(MAKE) +++distclean-multi: +++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=distclean multi-clean # $(MAKE) +++maintainer-clean-multi: +++ $(MULTICLEAN) $(AM_MAKEFLAGS) DO=maintainer-clean multi-clean # $(MAKE) +++ +++.MAKE .PHONY: all-multi clean-multi distclean-multi install-am \ +++ install-multi maintainer-clean-multi mostlyclean-multi +++ +++install-exec-local: install-multi +++ +++all-local: all-multi +++mostlyclean-local: mostlyclean-multi +++clean-local: clean-multi +++distclean-local: distclean-multi +++maintainer-clean-local: maintainer-clean-multi +++ +++# Tell versions [3.59,3.63) of GNU make to not export all variables. +++# Otherwise a system limit (for SysV at least) may be exceeded. +++.NOEXPORT: ++--- /dev/null +++++ b/src/libga68/README ++@@ -0,0 +1,2 @@ +++This is the GNU Algol 68 run-time library. It provides the run-time +++components needed by programs compiled by the ga68 compiler. ++--- /dev/null +++++ b/src/libga68/aclocal.m4 ++@@ -0,0 +1,1200 @@ +++# generated automatically by aclocal 1.15.1 -*- Autoconf -*- +++ +++# Copyright (C) 1996-2017 Free Software Foundation, Inc. +++ +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +++# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +++# PARTICULAR PURPOSE. +++ +++m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +++m4_ifndef([AC_AUTOCONF_VERSION], +++ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +++m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +++[m4_warning([this file was generated for autoconf 2.69. +++You have another version of autoconf. It may work, but is not guaranteed to. +++If you have problems, you may need to regenerate the build system entirely. +++To do so, use the procedure documented by the package, typically 'autoreconf'.])]) +++ +++# Copyright (C) 2002-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_AUTOMAKE_VERSION(VERSION) +++# ---------------------------- +++# Automake X.Y traces this macro to ensure aclocal.m4 has been +++# generated from the m4 files accompanying Automake X.Y. +++# (This private macro should not be called outside this file.) +++AC_DEFUN([AM_AUTOMAKE_VERSION], +++[am__api_version='1.15' +++dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +++dnl require some minimum version. Point them to the right macro. +++m4_if([$1], [1.15.1], [], +++ [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +++]) +++ +++# _AM_AUTOCONF_VERSION(VERSION) +++# ----------------------------- +++# aclocal traces this macro to find the Autoconf version. +++# This is a private macro too. Using m4_define simplifies +++# the logic in aclocal, which can simply ignore this definition. +++m4_define([_AM_AUTOCONF_VERSION], []) +++ +++# AM_SET_CURRENT_AUTOMAKE_VERSION +++# ------------------------------- +++# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +++# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +++AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +++[AM_AUTOMAKE_VERSION([1.15.1])dnl +++m4_ifndef([AC_AUTOCONF_VERSION], +++ [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +++_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) +++ +++# Figure out how to run the assembler. -*- Autoconf -*- +++ +++# Copyright (C) 2001-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_PROG_AS +++# ---------- +++AC_DEFUN([AM_PROG_AS], +++[# By default we simply use the C compiler to build assembly code. +++AC_REQUIRE([AC_PROG_CC]) +++test "${CCAS+set}" = set || CCAS=$CC +++test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +++AC_ARG_VAR([CCAS], [assembler compiler command (defaults to CC)]) +++AC_ARG_VAR([CCASFLAGS], [assembler compiler flags (defaults to CFLAGS)]) +++_AM_IF_OPTION([no-dependencies],, [_AM_DEPENDENCIES([CCAS])])dnl +++]) +++ +++# AM_AUX_DIR_EXPAND -*- Autoconf -*- +++ +++# Copyright (C) 2001-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +++# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +++# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +++# +++# Of course, Automake must honor this variable whenever it calls a +++# tool from the auxiliary directory. The problem is that $srcdir (and +++# therefore $ac_aux_dir as well) can be either absolute or relative, +++# depending on how configure is run. This is pretty annoying, since +++# it makes $ac_aux_dir quite unusable in subdirectories: in the top +++# source directory, any form will work fine, but in subdirectories a +++# relative path needs to be adjusted first. +++# +++# $ac_aux_dir/missing +++# fails when called from a subdirectory if $ac_aux_dir is relative +++# $top_srcdir/$ac_aux_dir/missing +++# fails if $ac_aux_dir is absolute, +++# fails when called from a subdirectory in a VPATH build with +++# a relative $ac_aux_dir +++# +++# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +++# are both prefixed by $srcdir. In an in-source build this is usually +++# harmless because $srcdir is '.', but things will broke when you +++# start a VPATH build or use an absolute $srcdir. +++# +++# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +++# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +++# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +++# and then we would define $MISSING as +++# MISSING="\${SHELL} $am_aux_dir/missing" +++# This will work as long as MISSING is not called from configure, because +++# unfortunately $(top_srcdir) has no meaning in configure. +++# However there are other variables, like CC, which are often used in +++# configure, and could therefore not use this "fixed" $ac_aux_dir. +++# +++# Another solution, used here, is to always expand $ac_aux_dir to an +++# absolute PATH. The drawback is that using absolute paths prevent a +++# configured tree to be moved without reconfiguration. +++ +++AC_DEFUN([AM_AUX_DIR_EXPAND], +++[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +++# Expand $ac_aux_dir to an absolute path. +++am_aux_dir=`cd "$ac_aux_dir" && pwd` +++]) +++ +++# AM_CONDITIONAL -*- Autoconf -*- +++ +++# Copyright (C) 1997-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_CONDITIONAL(NAME, SHELL-CONDITION) +++# ------------------------------------- +++# Define a conditional. +++AC_DEFUN([AM_CONDITIONAL], +++[AC_PREREQ([2.52])dnl +++ m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], +++ [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +++AC_SUBST([$1_TRUE])dnl +++AC_SUBST([$1_FALSE])dnl +++_AM_SUBST_NOTMAKE([$1_TRUE])dnl +++_AM_SUBST_NOTMAKE([$1_FALSE])dnl +++m4_define([_AM_COND_VALUE_$1], [$2])dnl +++if $2; then +++ $1_TRUE= +++ $1_FALSE='#' +++else +++ $1_TRUE='#' +++ $1_FALSE= +++fi +++AC_CONFIG_COMMANDS_PRE( +++[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then +++ AC_MSG_ERROR([[conditional "$1" was never defined. +++Usually this means the macro was only invoked conditionally.]]) +++fi])]) +++ +++# Copyright (C) 1999-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++ +++# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +++# written in clear, in which case automake, when reading aclocal.m4, +++# will think it sees a *use*, and therefore will trigger all it's +++# C support machinery. Also note that it means that autoscan, seeing +++# CC etc. in the Makefile, will ask for an AC_PROG_CC use... +++ +++ +++# _AM_DEPENDENCIES(NAME) +++# ---------------------- +++# See how the compiler implements dependency checking. +++# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +++# We try a few techniques and use that to set a single cache variable. +++# +++# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +++# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +++# dependency, and given that the user is not expected to run this macro, +++# just rely on AC_PROG_CC. +++AC_DEFUN([_AM_DEPENDENCIES], +++[AC_REQUIRE([AM_SET_DEPDIR])dnl +++AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +++AC_REQUIRE([AM_MAKE_INCLUDE])dnl +++AC_REQUIRE([AM_DEP_TRACK])dnl +++ +++m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], +++ [$1], [CXX], [depcc="$CXX" am_compiler_list=], +++ [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], +++ [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], +++ [$1], [UPC], [depcc="$UPC" am_compiler_list=], +++ [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], +++ [depcc="$$1" am_compiler_list=]) +++ +++AC_CACHE_CHECK([dependency style of $depcc], +++ [am_cv_$1_dependencies_compiler_type], +++[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +++ # We make a subdir and do the tests there. Otherwise we can end up +++ # making bogus files that we don't know about and never remove. For +++ # instance it was reported that on HP-UX the gcc test will end up +++ # making a dummy file named 'D' -- because '-MD' means "put the output +++ # in D". +++ rm -rf conftest.dir +++ mkdir conftest.dir +++ # Copy depcomp to subdir because otherwise we won't find it if we're +++ # using a relative directory. +++ cp "$am_depcomp" conftest.dir +++ cd conftest.dir +++ # We will build objects and dependencies in a subdirectory because +++ # it helps to detect inapplicable dependency modes. For instance +++ # both Tru64's cc and ICC support -MD to output dependencies as a +++ # side effect of compilation, but ICC will put the dependencies in +++ # the current directory while Tru64 will put them in the object +++ # directory. +++ mkdir sub +++ +++ am_cv_$1_dependencies_compiler_type=none +++ if test "$am_compiler_list" = ""; then +++ am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` +++ fi +++ am__universal=false +++ m4_case([$1], [CC], +++ [case " $depcc " in #( +++ *\ -arch\ *\ -arch\ *) am__universal=true ;; +++ esac], +++ [CXX], +++ [case " $depcc " in #( +++ *\ -arch\ *\ -arch\ *) am__universal=true ;; +++ esac]) +++ +++ for depmode in $am_compiler_list; do +++ # Setup a source with many dependencies, because some compilers +++ # like to wrap large dependency lists on column 80 (with \), and +++ # we should not choose a depcomp mode which is confused by this. +++ # +++ # We need to recreate these files for each test, as the compiler may +++ # overwrite some of them when testing with obscure command lines. +++ # This happens at least with the AIX C compiler. +++ : > sub/conftest.c +++ for i in 1 2 3 4 5 6; do +++ echo '#include "conftst'$i'.h"' >> sub/conftest.c +++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with +++ # Solaris 10 /bin/sh. +++ echo '/* dummy */' > sub/conftst$i.h +++ done +++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +++ +++ # We check with '-c' and '-o' for the sake of the "dashmstdout" +++ # mode. It turns out that the SunPro C++ compiler does not properly +++ # handle '-M -o', and we need to detect this. Also, some Intel +++ # versions had trouble with output in subdirs. +++ am__obj=sub/conftest.${OBJEXT-o} +++ am__minus_obj="-o $am__obj" +++ case $depmode in +++ gcc) +++ # This depmode causes a compiler race in universal mode. +++ test "$am__universal" = false || continue +++ ;; +++ nosideeffect) +++ # After this tag, mechanisms are not by side-effect, so they'll +++ # only be used when explicitly requested. +++ if test "x$enable_dependency_tracking" = xyes; then +++ continue +++ else +++ break +++ fi +++ ;; +++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) +++ # This compiler won't grok '-c -o', but also, the minuso test has +++ # not run yet. These depmodes are late enough in the game, and +++ # so weak that their functioning should not be impacted. +++ am__obj=conftest.${OBJEXT-o} +++ am__minus_obj= +++ ;; +++ none) break ;; +++ esac +++ if depmode=$depmode \ +++ source=sub/conftest.c object=$am__obj \ +++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ +++ >/dev/null 2>conftest.err && +++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && +++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && +++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +++ # icc doesn't choke on unknown options, it will just issue warnings +++ # or remarks (even with -Werror). So we grep stderr for any message +++ # that says an option was ignored or not supported. +++ # When given -MP, icc 7.0 and 7.1 complain thusly: +++ # icc: Command line warning: ignoring option '-M'; no argument required +++ # The diagnosis changed in icc 8.0: +++ # icc: Command line remark: option '-MP' not supported +++ if (grep 'ignoring option' conftest.err || +++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +++ am_cv_$1_dependencies_compiler_type=$depmode +++ break +++ fi +++ fi +++ done +++ +++ cd .. +++ rm -rf conftest.dir +++else +++ am_cv_$1_dependencies_compiler_type=none +++fi +++]) +++AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +++AM_CONDITIONAL([am__fastdep$1], [ +++ test "x$enable_dependency_tracking" != xno \ +++ && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +++]) +++ +++ +++# AM_SET_DEPDIR +++# ------------- +++# Choose a directory name for dependency files. +++# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +++AC_DEFUN([AM_SET_DEPDIR], +++[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +++AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +++]) +++ +++ +++# AM_DEP_TRACK +++# ------------ +++AC_DEFUN([AM_DEP_TRACK], +++[AC_ARG_ENABLE([dependency-tracking], [dnl +++AS_HELP_STRING( +++ [--enable-dependency-tracking], +++ [do not reject slow dependency extractors]) +++AS_HELP_STRING( +++ [--disable-dependency-tracking], +++ [speeds up one-time build])]) +++if test "x$enable_dependency_tracking" != xno; then +++ am_depcomp="$ac_aux_dir/depcomp" +++ AMDEPBACKSLASH='\' +++ am__nodep='_no' +++fi +++AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +++AC_SUBST([AMDEPBACKSLASH])dnl +++_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +++AC_SUBST([am__nodep])dnl +++_AM_SUBST_NOTMAKE([am__nodep])dnl +++]) +++ +++# Generate code to set up dependency tracking. -*- Autoconf -*- +++ +++# Copyright (C) 1999-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++ +++# _AM_OUTPUT_DEPENDENCY_COMMANDS +++# ------------------------------ +++AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +++[{ +++ # Older Autoconf quotes --file arguments for eval, but not when files +++ # are listed without --file. Let's play safe and only enable the eval +++ # if we detect the quoting. +++ case $CONFIG_FILES in +++ *\'*) eval set x "$CONFIG_FILES" ;; +++ *) set x $CONFIG_FILES ;; +++ esac +++ shift +++ for mf +++ do +++ # Strip MF so we end up with the name of the file. +++ mf=`echo "$mf" | sed -e 's/:.*$//'` +++ # Check whether this is an Automake generated Makefile or not. +++ # We used to match only the files named 'Makefile.in', but +++ # some people rename them; so instead we look at the file content. +++ # Grep'ing the first line is not enough: some people post-process +++ # each Makefile.in and add a new line on top of each file to say so. +++ # Grep'ing the whole file is not good either: AIX grep has a line +++ # limit of 2048, but all sed's we know have understand at least 4000. +++ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then +++ dirpart=`AS_DIRNAME("$mf")` +++ else +++ continue +++ fi +++ # Extract the definition of DEPDIR, am__include, and am__quote +++ # from the Makefile without running 'make'. +++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` +++ test -z "$DEPDIR" && continue +++ am__include=`sed -n 's/^am__include = //p' < "$mf"` +++ test -z "$am__include" && continue +++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` +++ # Find all dependency output files, they are included files with +++ # $(DEPDIR) in their names. We invoke sed twice because it is the +++ # simplest approach to changing $(DEPDIR) to its actual value in the +++ # expansion. +++ for file in `sed -n " +++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ +++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do +++ # Make sure the directory exists. +++ test -f "$dirpart/$file" && continue +++ fdir=`AS_DIRNAME(["$file"])` +++ AS_MKDIR_P([$dirpart/$fdir]) +++ # echo "creating $dirpart/$file" +++ echo '# dummy' > "$dirpart/$file" +++ done +++ done +++} +++])# _AM_OUTPUT_DEPENDENCY_COMMANDS +++ +++ +++# AM_OUTPUT_DEPENDENCY_COMMANDS +++# ----------------------------- +++# This macro should only be invoked once -- use via AC_REQUIRE. +++# +++# This code is only required when automatic dependency tracking +++# is enabled. FIXME. This creates each '.P' file that we will +++# need in order to bootstrap the dependency handling code. +++AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +++[AC_CONFIG_COMMANDS([depfiles], +++ [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], +++ [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +++]) +++ +++# Do all the work for Automake. -*- Autoconf -*- +++ +++# Copyright (C) 1996-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# This macro actually does too much. Some checks are only needed if +++# your package does certain things. But this isn't really a big deal. +++ +++dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +++m4_define([AC_PROG_CC], +++m4_defn([AC_PROG_CC]) +++[_AM_PROG_CC_C_O +++]) +++ +++# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +++# AM_INIT_AUTOMAKE([OPTIONS]) +++# ----------------------------------------------- +++# The call with PACKAGE and VERSION arguments is the old style +++# call (pre autoconf-2.50), which is being phased out. PACKAGE +++# and VERSION should now be passed to AC_INIT and removed from +++# the call to AM_INIT_AUTOMAKE. +++# We support both call styles for the transition. After +++# the next Automake release, Autoconf can make the AC_INIT +++# arguments mandatory, and then we can depend on a new Autoconf +++# release and drop the old call support. +++AC_DEFUN([AM_INIT_AUTOMAKE], +++[AC_PREREQ([2.65])dnl +++dnl Autoconf wants to disallow AM_ names. We explicitly allow +++dnl the ones we care about. +++m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +++AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +++AC_REQUIRE([AC_PROG_INSTALL])dnl +++if test "`cd $srcdir && pwd`" != "`pwd`"; then +++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output +++ # is not polluted with repeated "-I." +++ AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl +++ # test to see if srcdir already configured +++ if test -f $srcdir/config.status; then +++ AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) +++ fi +++fi +++ +++# test whether we have cygpath +++if test -z "$CYGPATH_W"; then +++ if (cygpath --version) >/dev/null 2>/dev/null; then +++ CYGPATH_W='cygpath -w' +++ else +++ CYGPATH_W=echo +++ fi +++fi +++AC_SUBST([CYGPATH_W]) +++ +++# Define the identity of the package. +++dnl Distinguish between old-style and new-style calls. +++m4_ifval([$2], +++[AC_DIAGNOSE([obsolete], +++ [$0: two- and three-arguments forms are deprecated.]) +++m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +++ AC_SUBST([PACKAGE], [$1])dnl +++ AC_SUBST([VERSION], [$2])], +++[_AM_SET_OPTIONS([$1])dnl +++dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +++m4_if( +++ m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), +++ [ok:ok],, +++ [m4_fatal([AC_INIT should be called with package and version arguments])])dnl +++ AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl +++ AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl +++ +++_AM_IF_OPTION([no-define],, +++[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) +++ AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl +++ +++# Some tools Automake needs. +++AC_REQUIRE([AM_SANITY_CHECK])dnl +++AC_REQUIRE([AC_ARG_PROGRAM])dnl +++AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +++AM_MISSING_PROG([AUTOCONF], [autoconf]) +++AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +++AM_MISSING_PROG([AUTOHEADER], [autoheader]) +++AM_MISSING_PROG([MAKEINFO], [makeinfo]) +++AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +++AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +++AC_REQUIRE([AC_PROG_MKDIR_P])dnl +++# For better backward compatibility. To be removed once Automake 1.9.x +++# dies out for good. For more background, see: +++# +++# +++AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +++# We need awk for the "check" target (and possibly the TAP driver). The +++# system "awk" is bad on some platforms. +++AC_REQUIRE([AC_PROG_AWK])dnl +++AC_REQUIRE([AC_PROG_MAKE_SET])dnl +++AC_REQUIRE([AM_SET_LEADING_DOT])dnl +++_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], +++ [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], +++ [_AM_PROG_TAR([v7])])]) +++_AM_IF_OPTION([no-dependencies],, +++[AC_PROVIDE_IFELSE([AC_PROG_CC], +++ [_AM_DEPENDENCIES([CC])], +++ [m4_define([AC_PROG_CC], +++ m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +++AC_PROVIDE_IFELSE([AC_PROG_CXX], +++ [_AM_DEPENDENCIES([CXX])], +++ [m4_define([AC_PROG_CXX], +++ m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +++AC_PROVIDE_IFELSE([AC_PROG_OBJC], +++ [_AM_DEPENDENCIES([OBJC])], +++ [m4_define([AC_PROG_OBJC], +++ m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +++AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], +++ [_AM_DEPENDENCIES([OBJCXX])], +++ [m4_define([AC_PROG_OBJCXX], +++ m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +++]) +++AC_REQUIRE([AM_SILENT_RULES])dnl +++dnl The testsuite driver may need to know about EXEEXT, so add the +++dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +++dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +++AC_CONFIG_COMMANDS_PRE(dnl +++[m4_provide_if([_AM_COMPILER_EXEEXT], +++ [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl +++ +++# POSIX will say in a future version that running "rm -f" with no argument +++# is OK; and we want to be able to make that assumption in our Makefile +++# recipes. So use an aggressive probe to check that the usage we want is +++# actually supported "in the wild" to an acceptable degree. +++# See automake bug#10828. +++# To make any issue more visible, cause the running configure to be aborted +++# by default if the 'rm' program in use doesn't match our expectations; the +++# user can still override this though. +++if rm -f && rm -fr && rm -rf; then : OK; else +++ cat >&2 <<'END' +++Oops! +++ +++Your 'rm' program seems unable to run without file operands specified +++on the command line, even when the '-f' option is present. This is contrary +++to the behaviour of most rm programs out there, and not conforming with +++the upcoming POSIX standard: +++ +++Please tell bug-automake@gnu.org about your system, including the value +++of your $PATH and any error possibly output before this message. This +++can help us improve future automake versions. +++ +++END +++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then +++ echo 'Configuration will proceed anyway, since you have set the' >&2 +++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 +++ echo >&2 +++ else +++ cat >&2 <<'END' +++Aborting the configuration process, to ensure you take notice of the issue. +++ +++You can download and install GNU coreutils to get an 'rm' implementation +++that behaves properly: . +++ +++If you want to complete the configuration process using your problematic +++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +++to "yes", and re-run configure. +++ +++END +++ AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) +++ fi +++fi +++dnl The trailing newline in this macro's definition is deliberate, for +++dnl backward compatibility and to allow trailing 'dnl'-style comments +++dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +++]) +++ +++dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +++dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +++dnl mangled by Autoconf and run in a shell conditional statement. +++m4_define([_AC_COMPILER_EXEEXT], +++m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) +++ +++# When config.status generates a header, we must update the stamp-h file. +++# This file resides in the same directory as the config header +++# that is generated. The stamp files are numbered to have different names. +++ +++# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +++# loop where config.status creates the headers, so we can generate +++# our stamp files there. +++AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +++[# Compute $1's index in $config_headers. +++_am_arg=$1 +++_am_stamp_count=1 +++for _am_header in $config_headers :; do +++ case $_am_header in +++ $_am_arg | $_am_arg:* ) +++ break ;; +++ * ) +++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; +++ esac +++done +++echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) +++ +++# Copyright (C) 2001-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_PROG_INSTALL_SH +++# ------------------ +++# Define $install_sh. +++AC_DEFUN([AM_PROG_INSTALL_SH], +++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +++if test x"${install_sh+set}" != xset; then +++ case $am_aux_dir in +++ *\ * | *\ *) +++ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; +++ *) +++ install_sh="\${SHELL} $am_aux_dir/install-sh" +++ esac +++fi +++AC_SUBST([install_sh])]) +++ +++# Add --enable-maintainer-mode option to configure. -*- Autoconf -*- +++# From Jim Meyering +++ +++# Copyright (C) 1996-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_MAINTAINER_MODE([DEFAULT-MODE]) +++# ---------------------------------- +++# Control maintainer-specific portions of Makefiles. +++# Default is to disable them, unless 'enable' is passed literally. +++# For symmetry, 'disable' may be passed as well. Anyway, the user +++# can override the default with the --enable/--disable switch. +++AC_DEFUN([AM_MAINTAINER_MODE], +++[m4_case(m4_default([$1], [disable]), +++ [enable], [m4_define([am_maintainer_other], [disable])], +++ [disable], [m4_define([am_maintainer_other], [enable])], +++ [m4_define([am_maintainer_other], [enable]) +++ m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) +++AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) +++ dnl maintainer-mode's default is 'disable' unless 'enable' is passed +++ AC_ARG_ENABLE([maintainer-mode], +++ [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], +++ am_maintainer_other[ make rules and dependencies not useful +++ (and sometimes confusing) to the casual installer])], +++ [USE_MAINTAINER_MODE=$enableval], +++ [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) +++ AC_MSG_RESULT([$USE_MAINTAINER_MODE]) +++ AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) +++ MAINT=$MAINTAINER_MODE_TRUE +++ AC_SUBST([MAINT])dnl +++] +++) +++ +++# Check to see how 'make' treats includes. -*- Autoconf -*- +++ +++# Copyright (C) 2001-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_MAKE_INCLUDE() +++# ----------------- +++# Check to see how make treats includes. +++AC_DEFUN([AM_MAKE_INCLUDE], +++[am_make=${MAKE-make} +++cat > confinc << 'END' +++am__doit: +++ @echo this is the am__doit target +++.PHONY: am__doit +++END +++# If we don't find an include directive, just comment out the code. +++AC_MSG_CHECKING([for style of include used by $am_make]) +++am__include="#" +++am__quote= +++_am_result=none +++# First try GNU make style include. +++echo "include confinc" > confmf +++# Ignore all kinds of additional output from 'make'. +++case `$am_make -s -f confmf 2> /dev/null` in #( +++*the\ am__doit\ target*) +++ am__include=include +++ am__quote= +++ _am_result=GNU +++ ;; +++esac +++# Now try BSD make style include. +++if test "$am__include" = "#"; then +++ echo '.include "confinc"' > confmf +++ case `$am_make -s -f confmf 2> /dev/null` in #( +++ *the\ am__doit\ target*) +++ am__include=.include +++ am__quote="\"" +++ _am_result=BSD +++ ;; +++ esac +++fi +++AC_SUBST([am__include]) +++AC_SUBST([am__quote]) +++AC_MSG_RESULT([$_am_result]) +++rm -f confinc confmf +++]) +++ +++# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- +++ +++# Copyright (C) 1997-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_MISSING_PROG(NAME, PROGRAM) +++# ------------------------------ +++AC_DEFUN([AM_MISSING_PROG], +++[AC_REQUIRE([AM_MISSING_HAS_RUN]) +++$1=${$1-"${am_missing_run}$2"} +++AC_SUBST($1)]) +++ +++# AM_MISSING_HAS_RUN +++# ------------------ +++# Define MISSING if not defined so far and test if it is modern enough. +++# If it is, set am_missing_run to use it, otherwise, to nothing. +++AC_DEFUN([AM_MISSING_HAS_RUN], +++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +++AC_REQUIRE_AUX_FILE([missing])dnl +++if test x"${MISSING+set}" != xset; then +++ case $am_aux_dir in +++ *\ * | *\ *) +++ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; +++ *) +++ MISSING="\${SHELL} $am_aux_dir/missing" ;; +++ esac +++fi +++# Use eval to expand $SHELL +++if eval "$MISSING --is-lightweight"; then +++ am_missing_run="$MISSING " +++else +++ am_missing_run= +++ AC_MSG_WARN(['missing' script is too old or missing]) +++fi +++]) +++ +++# Helper functions for option handling. -*- Autoconf -*- +++ +++# Copyright (C) 2001-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# _AM_MANGLE_OPTION(NAME) +++# ----------------------- +++AC_DEFUN([_AM_MANGLE_OPTION], +++[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) +++ +++# _AM_SET_OPTION(NAME) +++# -------------------- +++# Set option NAME. Presently that only means defining a flag for this option. +++AC_DEFUN([_AM_SET_OPTION], +++[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) +++ +++# _AM_SET_OPTIONS(OPTIONS) +++# ------------------------ +++# OPTIONS is a space-separated list of Automake options. +++AC_DEFUN([_AM_SET_OPTIONS], +++[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) +++ +++# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +++# ------------------------------------------- +++# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +++AC_DEFUN([_AM_IF_OPTION], +++[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) +++ +++# Copyright (C) 1999-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# _AM_PROG_CC_C_O +++# --------------- +++# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +++# to automatically call this. +++AC_DEFUN([_AM_PROG_CC_C_O], +++[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +++AC_REQUIRE_AUX_FILE([compile])dnl +++AC_LANG_PUSH([C])dnl +++AC_CACHE_CHECK( +++ [whether $CC understands -c and -o together], +++ [am_cv_prog_cc_c_o], +++ [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) +++ # Make sure it works both with $CC and with simple cc. +++ # Following AC_PROG_CC_C_O, we do the test twice because some +++ # compilers refuse to overwrite an existing .o file with -o, +++ # though they will create one. +++ am_cv_prog_cc_c_o=yes +++ for am_i in 1 2; do +++ if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ +++ && test -f conftest2.$ac_objext; then +++ : OK +++ else +++ am_cv_prog_cc_c_o=no +++ break +++ fi +++ done +++ rm -f core conftest* +++ unset am_i]) +++if test "$am_cv_prog_cc_c_o" != yes; then +++ # Losing compiler, so override with the script. +++ # FIXME: It is wrong to rewrite CC. +++ # But if we don't then we get into trouble of one sort or another. +++ # A longer-term fix would be to have automake use am__CC in this case, +++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" +++ CC="$am_aux_dir/compile $CC" +++fi +++AC_LANG_POP([C])]) +++ +++# For backward compatibility. +++AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) +++ +++# Copyright (C) 2001-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_RUN_LOG(COMMAND) +++# ------------------- +++# Run COMMAND, save the exit status in ac_status, and log it. +++# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +++AC_DEFUN([AM_RUN_LOG], +++[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD +++ ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD +++ ac_status=$? +++ echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD +++ (exit $ac_status); }]) +++ +++# Check to make sure that the build environment is sane. -*- Autoconf -*- +++ +++# Copyright (C) 1996-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_SANITY_CHECK +++# --------------- +++AC_DEFUN([AM_SANITY_CHECK], +++[AC_MSG_CHECKING([whether build environment is sane]) +++# Reject unsafe characters in $srcdir or the absolute working directory +++# name. Accept space and tab only in the latter. +++am_lf=' +++' +++case `pwd` in +++ *[[\\\"\#\$\&\'\`$am_lf]]*) +++ AC_MSG_ERROR([unsafe absolute working directory name]);; +++esac +++case $srcdir in +++ *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) +++ AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +++esac +++ +++# Do 'set' in a subshell so we don't clobber the current shell's +++# arguments. Must try -L first in case configure is actually a +++# symlink; some systems play weird games with the mod time of symlinks +++# (eg FreeBSD returns the mod time of the symlink's containing +++# directory). +++if ( +++ am_has_slept=no +++ for am_try in 1 2; do +++ echo "timestamp, slept: $am_has_slept" > conftest.file +++ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` +++ if test "$[*]" = "X"; then +++ # -L didn't work. +++ set X `ls -t "$srcdir/configure" conftest.file` +++ fi +++ if test "$[*]" != "X $srcdir/configure conftest.file" \ +++ && test "$[*]" != "X conftest.file $srcdir/configure"; then +++ +++ # If neither matched, then we have a broken ls. This can happen +++ # if, for instance, CONFIG_SHELL is bash and it inherits a +++ # broken ls alias from the environment. This has actually +++ # happened. Such a system could not be considered "sane". +++ AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken +++ alias in your environment]) +++ fi +++ if test "$[2]" = conftest.file || test $am_try -eq 2; then +++ break +++ fi +++ # Just in case. +++ sleep 1 +++ am_has_slept=yes +++ done +++ test "$[2]" = conftest.file +++ ) +++then +++ # Ok. +++ : +++else +++ AC_MSG_ERROR([newly created file is older than distributed files! +++Check your system clock]) +++fi +++AC_MSG_RESULT([yes]) +++# If we didn't sleep, we still need to ensure time stamps of config.status and +++# generated files are strictly newer. +++am_sleep_pid= +++if grep 'slept: no' conftest.file >/dev/null 2>&1; then +++ ( sleep 1 ) & +++ am_sleep_pid=$! +++fi +++AC_CONFIG_COMMANDS_PRE( +++ [AC_MSG_CHECKING([that generated files are newer than configure]) +++ if test -n "$am_sleep_pid"; then +++ # Hide warnings about reused PIDs. +++ wait $am_sleep_pid 2>/dev/null +++ fi +++ AC_MSG_RESULT([done])]) +++rm -f conftest.file +++]) +++ +++# Copyright (C) 2009-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_SILENT_RULES([DEFAULT]) +++# -------------------------- +++# Enable less verbose build rules; with the default set to DEFAULT +++# ("yes" being less verbose, "no" or empty being verbose). +++AC_DEFUN([AM_SILENT_RULES], +++[AC_ARG_ENABLE([silent-rules], [dnl +++AS_HELP_STRING( +++ [--enable-silent-rules], +++ [less verbose build output (undo: "make V=1")]) +++AS_HELP_STRING( +++ [--disable-silent-rules], +++ [verbose build output (undo: "make V=0")])dnl +++]) +++case $enable_silent_rules in @%:@ ((( +++ yes) AM_DEFAULT_VERBOSITY=0;; +++ no) AM_DEFAULT_VERBOSITY=1;; +++ *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +++esac +++dnl +++dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +++dnl do not support nested variable expansions. +++dnl See automake bug#9928 and bug#10237. +++am_make=${MAKE-make} +++AC_CACHE_CHECK([whether $am_make supports nested variables], +++ [am_cv_make_support_nested_variables], +++ [if AS_ECHO([['TRUE=$(BAR$(V)) +++BAR0=false +++BAR1=true +++V=1 +++am__doit: +++ @$(TRUE) +++.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then +++ am_cv_make_support_nested_variables=yes +++else +++ am_cv_make_support_nested_variables=no +++fi]) +++if test $am_cv_make_support_nested_variables = yes; then +++ dnl Using '$V' instead of '$(V)' breaks IRIX make. +++ AM_V='$(V)' +++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +++else +++ AM_V=$AM_DEFAULT_VERBOSITY +++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +++fi +++AC_SUBST([AM_V])dnl +++AM_SUBST_NOTMAKE([AM_V])dnl +++AC_SUBST([AM_DEFAULT_V])dnl +++AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +++AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +++AM_BACKSLASH='\' +++AC_SUBST([AM_BACKSLASH])dnl +++_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +++]) +++ +++# Copyright (C) 2001-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# AM_PROG_INSTALL_STRIP +++# --------------------- +++# One issue with vendor 'install' (even GNU) is that you can't +++# specify the program used to strip binaries. This is especially +++# annoying in cross-compiling environments, where the build's strip +++# is unlikely to handle the host's binaries. +++# Fortunately install-sh will honor a STRIPPROG variable, so we +++# always use install-sh in "make install-strip", and initialize +++# STRIPPROG with the value of the STRIP variable (set by the user). +++AC_DEFUN([AM_PROG_INSTALL_STRIP], +++[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +++# Installed binaries are usually stripped using 'strip' when the user +++# run "make install-strip". However 'strip' might not be the right +++# tool to use in cross-compilation environments, therefore Automake +++# will honor the 'STRIP' environment variable to overrule this program. +++dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +++if test "$cross_compiling" != no; then +++ AC_CHECK_TOOL([STRIP], [strip], :) +++fi +++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +++AC_SUBST([INSTALL_STRIP_PROGRAM])]) +++ +++# Copyright (C) 2006-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# _AM_SUBST_NOTMAKE(VARIABLE) +++# --------------------------- +++# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +++# This macro is traced by Automake. +++AC_DEFUN([_AM_SUBST_NOTMAKE]) +++ +++# AM_SUBST_NOTMAKE(VARIABLE) +++# -------------------------- +++# Public sister of _AM_SUBST_NOTMAKE. +++AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) +++ +++# Check how to create a tarball. -*- Autoconf -*- +++ +++# Copyright (C) 2004-2017 Free Software Foundation, Inc. +++# +++# This file is free software; the Free Software Foundation +++# gives unlimited permission to copy and/or distribute it, +++# with or without modifications, as long as this notice is preserved. +++ +++# _AM_PROG_TAR(FORMAT) +++# -------------------- +++# Check how to create a tarball in format FORMAT. +++# FORMAT should be one of 'v7', 'ustar', or 'pax'. +++# +++# Substitute a variable $(am__tar) that is a command +++# writing to stdout a FORMAT-tarball containing the directory +++# $tardir. +++# tardir=directory && $(am__tar) > result.tar +++# +++# Substitute a variable $(am__untar) that extract such +++# a tarball read from stdin. +++# $(am__untar) < result.tar +++# +++AC_DEFUN([_AM_PROG_TAR], +++[# Always define AMTAR for backward compatibility. Yes, it's still used +++# in the wild :-( We should find a proper way to deprecate it ... +++AC_SUBST([AMTAR], ['$${TAR-tar}']) +++ +++# We'll loop over all known methods to create a tar archive until one works. +++_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' +++ +++m4_if([$1], [v7], +++ [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], +++ +++ [m4_case([$1], +++ [ustar], +++ [# The POSIX 1988 'ustar' format is defined with fixed-size fields. +++ # There is notably a 21 bits limit for the UID and the GID. In fact, +++ # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 +++ # and bug#13588). +++ am_max_uid=2097151 # 2^21 - 1 +++ am_max_gid=$am_max_uid +++ # The $UID and $GID variables are not portable, so we need to resort +++ # to the POSIX-mandated id(1) utility. Errors in the 'id' calls +++ # below are definitely unexpected, so allow the users to see them +++ # (that is, avoid stderr redirection). +++ am_uid=`id -u || echo unknown` +++ am_gid=`id -g || echo unknown` +++ AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) +++ if test $am_uid -le $am_max_uid; then +++ AC_MSG_RESULT([yes]) +++ else +++ AC_MSG_RESULT([no]) +++ _am_tools=none +++ fi +++ AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) +++ if test $am_gid -le $am_max_gid; then +++ AC_MSG_RESULT([yes]) +++ else +++ AC_MSG_RESULT([no]) +++ _am_tools=none +++ fi], +++ +++ [pax], +++ [], +++ +++ [m4_fatal([Unknown tar format])]) +++ +++ AC_MSG_CHECKING([how to create a $1 tar archive]) +++ +++ # Go ahead even if we have the value already cached. We do so because we +++ # need to set the values for the 'am__tar' and 'am__untar' variables. +++ _am_tools=${am_cv_prog_tar_$1-$_am_tools} +++ +++ for _am_tool in $_am_tools; do +++ case $_am_tool in +++ gnutar) +++ for _am_tar in tar gnutar gtar; do +++ AM_RUN_LOG([$_am_tar --version]) && break +++ done +++ am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' +++ am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' +++ am__untar="$_am_tar -xf -" +++ ;; +++ plaintar) +++ # Must skip GNU tar: if it does not support --format= it doesn't create +++ # ustar tarball either. +++ (tar --version) >/dev/null 2>&1 && continue +++ am__tar='tar chf - "$$tardir"' +++ am__tar_='tar chf - "$tardir"' +++ am__untar='tar xf -' +++ ;; +++ pax) +++ am__tar='pax -L -x $1 -w "$$tardir"' +++ am__tar_='pax -L -x $1 -w "$tardir"' +++ am__untar='pax -r' +++ ;; +++ cpio) +++ am__tar='find "$$tardir" -print | cpio -o -H $1 -L' +++ am__tar_='find "$tardir" -print | cpio -o -H $1 -L' +++ am__untar='cpio -i -H $1 -d' +++ ;; +++ none) +++ am__tar=false +++ am__tar_=false +++ am__untar=false +++ ;; +++ esac +++ +++ # If the value was cached, stop now. We just wanted to have am__tar +++ # and am__untar set. +++ test -n "${am_cv_prog_tar_$1}" && break +++ +++ # tar/untar a dummy directory, and stop if the command works. +++ rm -rf conftest.dir +++ mkdir conftest.dir +++ echo GrepMe > conftest.dir/file +++ AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) +++ rm -rf conftest.dir +++ if test -s conftest.tar; then +++ AM_RUN_LOG([$am__untar /dev/null 2>&1 && break +++ fi +++ done +++ rm -rf conftest.dir +++ +++ AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) +++ AC_MSG_RESULT([$am_cv_prog_tar_$1])]) +++ +++AC_SUBST([am__tar]) +++AC_SUBST([am__untar]) +++]) # _AM_PROG_TAR +++ +++m4_include([../config/acx.m4]) +++m4_include([../config/depstand.m4]) +++m4_include([../config/lead-dot.m4]) +++m4_include([../config/multi.m4]) +++m4_include([../config/no-executables.m4]) +++m4_include([../config/override.m4]) +++m4_include([../libtool.m4]) +++m4_include([../ltoptions.m4]) +++m4_include([../ltsugar.m4]) +++m4_include([../ltversion.m4]) +++m4_include([../lt~obsolete.m4]) ++--- /dev/null +++++ b/src/libga68/config.h.in ++@@ -0,0 +1,105 @@ +++/* config.h.in. Generated from configure.ac by autoheader. */ +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_DLFCN_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_INTTYPES_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_MEMORY_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_STDINT_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_STDLIB_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_STRINGS_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_STRING_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_SYS_STAT_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_SYS_TYPES_H +++ +++/* Define to 1 if you have the header file. */ +++#undef HAVE_UNISTD_H +++ +++/* Define to the sub-directory in which libtool stores uninstalled libraries. +++ */ +++#undef LT_OBJDIR +++ +++/* Name of package */ +++#undef PACKAGE +++ +++/* Define to the address where bug reports for this package should be sent. */ +++#undef PACKAGE_BUGREPORT +++ +++/* Define to the full name of this package. */ +++#undef PACKAGE_NAME +++ +++/* Define to the full name and version of this package. */ +++#undef PACKAGE_STRING +++ +++/* Define to the one symbol short name of this package. */ +++#undef PACKAGE_TARNAME +++ +++/* Define to the home page for this package. */ +++#undef PACKAGE_URL +++ +++/* Define to the version of this package. */ +++#undef PACKAGE_VERSION +++ +++/* Define to 1 if you have the ANSI C header files. */ +++#undef STDC_HEADERS +++ +++/* Enable extensions on AIX 3, Interix. */ +++#ifndef _ALL_SOURCE +++# undef _ALL_SOURCE +++#endif +++/* Enable GNU extensions on systems that have them. */ +++#ifndef _GNU_SOURCE +++# undef _GNU_SOURCE +++#endif +++/* Enable threading extensions on Solaris. */ +++#ifndef _POSIX_PTHREAD_SEMANTICS +++# undef _POSIX_PTHREAD_SEMANTICS +++#endif +++/* Enable extensions on HP NonStop. */ +++#ifndef _TANDEM_SOURCE +++# undef _TANDEM_SOURCE +++#endif +++/* Enable general extensions on Solaris. */ +++#ifndef __EXTENSIONS__ +++# undef __EXTENSIONS__ +++#endif +++ +++ +++/* Version number of package */ +++#undef VERSION +++ +++/* Enable large inode numbers on Mac OS X 10.5. */ +++#ifndef _DARWIN_USE_64_BIT_INODE +++# define _DARWIN_USE_64_BIT_INODE 1 +++#endif +++ +++/* Number of bits in a file offset, on hosts where this is settable. */ +++#undef _FILE_OFFSET_BITS +++ +++/* Define for large files, on AIX-style hosts. */ +++#undef _LARGE_FILES +++ +++/* Define to 1 if on MINIX. */ +++#undef _MINIX +++ +++/* Define to 2 if the system does not provide POSIX.1 features except with +++ this defined. */ +++#undef _POSIX_1_SOURCE +++ +++/* Define to 1 if you need to in order for `stat' and other things to work. */ +++#undef _POSIX_SOURCE ++--- /dev/null +++++ b/src/libga68/configure ++@@ -0,0 +1,15335 @@ +++#! /bin/sh +++# Guess values for system-dependent variables and create Makefiles. +++# Generated by GNU Autoconf 2.69 for package-unused version-unused. +++# +++# +++# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +++# +++# +++# This configure script is free software; the Free Software Foundation +++# gives unlimited permission to copy, distribute and modify it. +++## -------------------- ## +++## M4sh Initialization. ## +++## -------------------- ## +++ +++# Be more Bourne compatible +++DUALCASE=1; export DUALCASE # for MKS sh +++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +++ emulate sh +++ NULLCMD=: +++ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +++ # is contrary to our usage. Disable this feature. +++ alias -g '${1+"$@"}'='"$@"' +++ setopt NO_GLOB_SUBST +++else +++ case `(set -o) 2>/dev/null` in #( +++ *posix*) : +++ set -o posix ;; #( +++ *) : +++ ;; +++esac +++fi +++ +++ +++as_nl=' +++' +++export as_nl +++# Printing a long string crashes Solaris 7 /usr/bin/printf. +++as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +++# Prefer a ksh shell builtin over an external printf program on Solaris, +++# but without wasting forks for bash or zsh. +++if test -z "$BASH_VERSION$ZSH_VERSION" \ +++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then +++ as_echo='print -r --' +++ as_echo_n='print -rn --' +++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +++ as_echo='printf %s\n' +++ as_echo_n='printf %s' +++else +++ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then +++ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' +++ as_echo_n='/usr/ucb/echo -n' +++ else +++ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' +++ as_echo_n_body='eval +++ arg=$1; +++ case $arg in #( +++ *"$as_nl"*) +++ expr "X$arg" : "X\\(.*\\)$as_nl"; +++ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +++ esac; +++ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" +++ ' +++ export as_echo_n_body +++ as_echo_n='sh -c $as_echo_n_body as_echo' +++ fi +++ export as_echo_body +++ as_echo='sh -c $as_echo_body as_echo' +++fi +++ +++# The user is always right. +++if test "${PATH_SEPARATOR+set}" != set; then +++ PATH_SEPARATOR=: +++ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { +++ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || +++ PATH_SEPARATOR=';' +++ } +++fi +++ +++ +++# IFS +++# We need space, tab and new line, in precisely that order. Quoting is +++# there to prevent editors from complaining about space-tab. +++# (If _AS_PATH_WALK were called with IFS unset, it would disable word +++# splitting by setting IFS to empty value.) +++IFS=" "" $as_nl" +++ +++# Find who we are. Look in the path if we contain no directory separator. +++as_myself= +++case $0 in #(( +++ *[\\/]* ) as_myself=$0 ;; +++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +++ done +++IFS=$as_save_IFS +++ +++ ;; +++esac +++# We did not find ourselves, most probably we were run as `sh COMMAND' +++# in which case we are not to be found in the path. +++if test "x$as_myself" = x; then +++ as_myself=$0 +++fi +++if test ! -f "$as_myself"; then +++ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 +++ exit 1 +++fi +++ +++# Unset variables that we do not need and which cause bugs (e.g. in +++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +++# suppresses any "Segmentation fault" message there. '((' could +++# trigger a bug in pdksh 5.2.14. +++for as_var in BASH_ENV ENV MAIL MAILPATH +++do eval test x\${$as_var+set} = xset \ +++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +++done +++PS1='$ ' +++PS2='> ' +++PS4='+ ' +++ +++# NLS nuisances. +++LC_ALL=C +++export LC_ALL +++LANGUAGE=C +++export LANGUAGE +++ +++# CDPATH. +++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +++ +++# Use a proper internal environment variable to ensure we don't fall +++ # into an infinite loop, continuously re-executing ourselves. +++ if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then +++ _as_can_reexec=no; export _as_can_reexec; +++ # We cannot yet assume a decent shell, so we have to provide a +++# neutralization value for shells without unset; and this also +++# works around shells that cannot unset nonexistent variables. +++# Preserve -v and -x to the replacement shell. +++BASH_ENV=/dev/null +++ENV=/dev/null +++(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +++case $- in # (((( +++ *v*x* | *x*v* ) as_opts=-vx ;; +++ *v* ) as_opts=-v ;; +++ *x* ) as_opts=-x ;; +++ * ) as_opts= ;; +++esac +++exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +++# Admittedly, this is quite paranoid, since all the known shells bail +++# out after a failed `exec'. +++$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +++as_fn_exit 255 +++ fi +++ # We don't want this to propagate to other subprocesses. +++ { _as_can_reexec=; unset _as_can_reexec;} +++if test "x$CONFIG_SHELL" = x; then +++ as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : +++ emulate sh +++ NULLCMD=: +++ # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which +++ # is contrary to our usage. Disable this feature. +++ alias -g '\${1+\"\$@\"}'='\"\$@\"' +++ setopt NO_GLOB_SUBST +++else +++ case \`(set -o) 2>/dev/null\` in #( +++ *posix*) : +++ set -o posix ;; #( +++ *) : +++ ;; +++esac +++fi +++" +++ as_required="as_fn_return () { (exit \$1); } +++as_fn_success () { as_fn_return 0; } +++as_fn_failure () { as_fn_return 1; } +++as_fn_ret_success () { return 0; } +++as_fn_ret_failure () { return 1; } +++ +++exitcode=0 +++as_fn_success || { exitcode=1; echo as_fn_success failed.; } +++as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +++as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +++as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +++if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : +++ +++else +++ exitcode=1; echo positional parameters were not saved. +++fi +++test x\$exitcode = x0 || exit 1 +++test -x / || exit 1" +++ as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO +++ as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO +++ eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && +++ test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +++test \$(( 1 + 1 )) = 2 || exit 1 +++ +++ test -n \"\${ZSH_VERSION+set}\${BASH_VERSION+set}\" || ( +++ ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +++ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO +++ ECHO=\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO\$ECHO +++ PATH=/empty FPATH=/empty; export PATH FPATH +++ test \"X\`printf %s \$ECHO\`\" = \"X\$ECHO\" \\ +++ || test \"X\`print -r -- \$ECHO\`\" = \"X\$ECHO\" ) || exit 1" +++ if (eval "$as_required") 2>/dev/null; then : +++ as_have_required=yes +++else +++ as_have_required=no +++fi +++ if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : +++ +++else +++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++as_found=false +++for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ as_found=: +++ case $as_dir in #( +++ /*) +++ for as_base in sh bash ksh sh5; do +++ # Try only shells that exist, to save several forks. +++ as_shell=$as_dir/$as_base +++ if { test -f "$as_shell" || test -f "$as_shell.exe"; } && +++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : +++ CONFIG_SHELL=$as_shell as_have_required=yes +++ if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : +++ break 2 +++fi +++fi +++ done;; +++ esac +++ as_found=false +++done +++$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && +++ { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : +++ CONFIG_SHELL=$SHELL as_have_required=yes +++fi; } +++IFS=$as_save_IFS +++ +++ +++ if test "x$CONFIG_SHELL" != x; then : +++ export CONFIG_SHELL +++ # We cannot yet assume a decent shell, so we have to provide a +++# neutralization value for shells without unset; and this also +++# works around shells that cannot unset nonexistent variables. +++# Preserve -v and -x to the replacement shell. +++BASH_ENV=/dev/null +++ENV=/dev/null +++(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +++case $- in # (((( +++ *v*x* | *x*v* ) as_opts=-vx ;; +++ *v* ) as_opts=-v ;; +++ *x* ) as_opts=-x ;; +++ * ) as_opts= ;; +++esac +++exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +++# Admittedly, this is quite paranoid, since all the known shells bail +++# out after a failed `exec'. +++$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +++exit 255 +++fi +++ +++ if test x$as_have_required = xno; then : +++ $as_echo "$0: This script requires a shell more modern than all" +++ $as_echo "$0: the shells that I found on your system." +++ if test x${ZSH_VERSION+set} = xset ; then +++ $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" +++ $as_echo "$0: be upgraded to zsh 4.3.4 or later." +++ else +++ $as_echo "$0: Please tell bug-autoconf@gnu.org about your system, +++$0: including any error possibly output before this +++$0: message. Then install a modern shell, or manually run +++$0: the script under such a shell if you do have one." +++ fi +++ exit 1 +++fi +++fi +++fi +++SHELL=${CONFIG_SHELL-/bin/sh} +++export SHELL +++# Unset more variables known to interfere with behavior of common tools. +++CLICOLOR_FORCE= GREP_OPTIONS= +++unset CLICOLOR_FORCE GREP_OPTIONS +++ +++## --------------------- ## +++## M4sh Shell Functions. ## +++## --------------------- ## +++# as_fn_unset VAR +++# --------------- +++# Portably unset VAR. +++as_fn_unset () +++{ +++ { eval $1=; unset $1;} +++} +++as_unset=as_fn_unset +++ +++# as_fn_set_status STATUS +++# ----------------------- +++# Set $? to STATUS, without forking. +++as_fn_set_status () +++{ +++ return $1 +++} # as_fn_set_status +++ +++# as_fn_exit STATUS +++# ----------------- +++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +++as_fn_exit () +++{ +++ set +e +++ as_fn_set_status $1 +++ exit $1 +++} # as_fn_exit +++ +++# as_fn_mkdir_p +++# ------------- +++# Create "$as_dir" as a directory, including parents if necessary. +++as_fn_mkdir_p () +++{ +++ +++ case $as_dir in #( +++ -*) as_dir=./$as_dir;; +++ esac +++ test -d "$as_dir" || eval $as_mkdir_p || { +++ as_dirs= +++ while :; do +++ case $as_dir in #( +++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( +++ *) as_qdir=$as_dir;; +++ esac +++ as_dirs="'$as_qdir' $as_dirs" +++ as_dir=`$as_dirname -- "$as_dir" || +++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +++ X"$as_dir" : 'X\(//\)[^/]' \| \ +++ X"$as_dir" : 'X\(//\)$' \| \ +++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X"$as_dir" | +++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)[^/].*/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'` +++ test -d "$as_dir" && break +++ done +++ test -z "$as_dirs" || eval "mkdir $as_dirs" +++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" +++ +++ +++} # as_fn_mkdir_p +++ +++# as_fn_executable_p FILE +++# ----------------------- +++# Test if FILE is an executable regular file. +++as_fn_executable_p () +++{ +++ test -f "$1" && test -x "$1" +++} # as_fn_executable_p +++# as_fn_append VAR VALUE +++# ---------------------- +++# Append the text in VALUE to the end of the definition contained in VAR. Take +++# advantage of any shell optimizations that allow amortized linear growth over +++# repeated appends, instead of the typical quadratic growth present in naive +++# implementations. +++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +++ eval 'as_fn_append () +++ { +++ eval $1+=\$2 +++ }' +++else +++ as_fn_append () +++ { +++ eval $1=\$$1\$2 +++ } +++fi # as_fn_append +++ +++# as_fn_arith ARG... +++# ------------------ +++# Perform arithmetic evaluation on the ARGs, and store the result in the +++# global $as_val. Take advantage of shells that can avoid forks. The arguments +++# must be portable across $(()) and expr. +++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +++ eval 'as_fn_arith () +++ { +++ as_val=$(( $* )) +++ }' +++else +++ as_fn_arith () +++ { +++ as_val=`expr "$@" || test $? -eq 1` +++ } +++fi # as_fn_arith +++ +++ +++# as_fn_error STATUS ERROR [LINENO LOG_FD] +++# ---------------------------------------- +++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +++# script with STATUS, using 1 if that was 0. +++as_fn_error () +++{ +++ as_status=$1; test $as_status -eq 0 && as_status=1 +++ if test "$4"; then +++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 +++ fi +++ $as_echo "$as_me: error: $2" >&2 +++ as_fn_exit $as_status +++} # as_fn_error +++ +++if expr a : '\(a\)' >/dev/null 2>&1 && +++ test "X`expr 00001 : '.*\(...\)'`" = X001; then +++ as_expr=expr +++else +++ as_expr=false +++fi +++ +++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +++ as_basename=basename +++else +++ as_basename=false +++fi +++ +++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then +++ as_dirname=dirname +++else +++ as_dirname=false +++fi +++ +++as_me=`$as_basename -- "$0" || +++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +++ X"$0" : 'X\(//\)$' \| \ +++ X"$0" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X/"$0" | +++ sed '/^.*\/\([^/][^/]*\)\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\/\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\/\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'` +++ +++# Avoid depending upon Character Ranges. +++as_cr_letters='abcdefghijklmnopqrstuvwxyz' +++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +++as_cr_Letters=$as_cr_letters$as_cr_LETTERS +++as_cr_digits='0123456789' +++as_cr_alnum=$as_cr_Letters$as_cr_digits +++ +++ +++ as_lineno_1=$LINENO as_lineno_1a=$LINENO +++ as_lineno_2=$LINENO as_lineno_2a=$LINENO +++ eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && +++ test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { +++ # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) +++ sed -n ' +++ p +++ /[$]LINENO/= +++ ' <$as_myself | +++ sed ' +++ s/[$]LINENO.*/&-/ +++ t lineno +++ b +++ :lineno +++ N +++ :loop +++ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ +++ t loop +++ s/-\n.*// +++ ' >$as_me.lineno && +++ chmod +x "$as_me.lineno" || +++ { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } +++ +++ # If we had to re-execute with $CONFIG_SHELL, we're ensured to have +++ # already done that, so ensure we don't try to do so again and fall +++ # in an infinite loop. This has already happened in practice. +++ _as_can_reexec=no; export _as_can_reexec +++ # Don't try to exec as it changes $[0], causing all sort of problems +++ # (the dirname of $[0] is not the place where we might find the +++ # original and so on. Autoconf is especially sensitive to this). +++ . "./$as_me.lineno" +++ # Exit status is that of the last command. +++ exit +++} +++ +++ECHO_C= ECHO_N= ECHO_T= +++case `echo -n x` in #((((( +++-n*) +++ case `echo 'xy\c'` in +++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. +++ xy) ECHO_C='\c';; +++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null +++ ECHO_T=' ';; +++ esac;; +++*) +++ ECHO_N='-n';; +++esac +++ +++rm -f conf$$ conf$$.exe conf$$.file +++if test -d conf$$.dir; then +++ rm -f conf$$.dir/conf$$.file +++else +++ rm -f conf$$.dir +++ mkdir conf$$.dir 2>/dev/null +++fi +++if (echo >conf$$.file) 2>/dev/null; then +++ if ln -s conf$$.file conf$$ 2>/dev/null; then +++ as_ln_s='ln -s' +++ # ... but there are two gotchas: +++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. +++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. +++ # In both cases, we have to default to `cp -pR'. +++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +++ as_ln_s='cp -pR' +++ elif ln conf$$.file conf$$ 2>/dev/null; then +++ as_ln_s=ln +++ else +++ as_ln_s='cp -pR' +++ fi +++else +++ as_ln_s='cp -pR' +++fi +++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +++rmdir conf$$.dir 2>/dev/null +++ +++if mkdir -p . 2>/dev/null; then +++ as_mkdir_p='mkdir -p "$as_dir"' +++else +++ test -d ./-p && rmdir ./-p +++ as_mkdir_p=false +++fi +++ +++as_test_x='test -x' +++as_executable_p=as_fn_executable_p +++ +++# Sed expression to map a string onto a valid CPP name. +++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +++ +++# Sed expression to map a string onto a valid variable name. +++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +++ +++SHELL=${CONFIG_SHELL-/bin/sh} +++ +++ +++test -n "$DJDIR" || exec 7<&0 &1 +++ +++# Name of the host. +++# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +++# so uname gets run too. +++ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` +++ +++# +++# Initializations. +++# +++ac_default_prefix=/usr/local +++ac_clean_files= +++ac_config_libobj_dir=. +++LIBOBJS= +++cross_compiling=no +++subdirs= +++MFLAGS= +++MAKEFLAGS= +++ +++# Identity of this package. +++PACKAGE_NAME='package-unused' +++PACKAGE_TARNAME='libga68' +++PACKAGE_VERSION='version-unused' +++PACKAGE_STRING='package-unused version-unused' +++PACKAGE_BUGREPORT='' +++PACKAGE_URL='' +++ +++ac_unique_file="Makefile.am" +++# Factoring default headers for most tests. +++ac_includes_default="\ +++#include +++#ifdef HAVE_SYS_TYPES_H +++# include +++#endif +++#ifdef HAVE_SYS_STAT_H +++# include +++#endif +++#ifdef STDC_HEADERS +++# include +++# include +++#else +++# ifdef HAVE_STDLIB_H +++# include +++# endif +++#endif +++#ifdef HAVE_STRING_H +++# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +++# include +++# endif +++# include +++#endif +++#ifdef HAVE_STRINGS_H +++# include +++#endif +++#ifdef HAVE_INTTYPES_H +++# include +++#endif +++#ifdef HAVE_STDINT_H +++# include +++#endif +++#ifdef HAVE_UNISTD_H +++# include +++#endif" +++ +++ac_unique_file="Makefile.am" +++ac_subst_vars='am__EXEEXT_FALSE +++am__EXEEXT_TRUE +++LTLIBOBJS +++LIBOBJS +++LIBGA68_BOEHM_GC_LIBS +++LIBGA68_BOEHM_GC_INCLUDES +++LIBGA68_GCFLAGS +++extra_darwin_ldflags_libga68 +++libga68_VERSION +++SPEC_LIBGA68_DEPS +++get_gcc_base_ver +++CC_FOR_BUILD +++enable_static +++enable_shared +++ENABLE_DARWIN_AT_RPATH_FALSE +++ENABLE_DARWIN_AT_RPATH_TRUE +++OTOOL64 +++OTOOL +++LIPO +++NMEDIT +++DSYMUTIL +++OBJDUMP +++LN_S +++ac_ct_DUMPBIN +++DUMPBIN +++LD +++FGREP +++SED +++LIBTOOL +++RANLIB +++NM +++AR +++am__fastdepCCAS_FALSE +++am__fastdepCCAS_TRUE +++CCASDEPMODE +++CCASFLAGS +++CCAS +++MAINT +++MAINTAINER_MODE_FALSE +++MAINTAINER_MODE_TRUE +++toolexeclibdir +++toolexecdir +++slibdir +++AM_BACKSLASH +++AM_DEFAULT_VERBOSITY +++AM_DEFAULT_V +++AM_V +++am__fastdepCC_FALSE +++am__fastdepCC_TRUE +++CCDEPMODE +++am__nodep +++AMDEPBACKSLASH +++AMDEP_FALSE +++AMDEP_TRUE +++am__quote +++am__include +++DEPDIR +++am__untar +++am__tar +++AMTAR +++am__leading_dot +++SET_MAKE +++AWK +++mkdir_p +++MKDIR_P +++INSTALL_STRIP_PROGRAM +++STRIP +++install_sh +++MAKEINFO +++AUTOHEADER +++AUTOMAKE +++AUTOCONF +++ACLOCAL +++VERSION +++PACKAGE +++CYGPATH_W +++am__isrc +++INSTALL_DATA +++INSTALL_SCRIPT +++INSTALL_PROGRAM +++target_subdir +++host_subdir +++build_subdir +++build_libsubdir +++target_noncanonical +++host_noncanonical +++target_os +++target_vendor +++target_cpu +++target +++host_os +++host_vendor +++host_cpu +++host +++build_os +++build_vendor +++build_cpu +++build +++EGREP +++GREP +++CPP +++OBJEXT +++EXEEXT +++ac_ct_CC +++CPPFLAGS +++LDFLAGS +++CFLAGS +++CC +++multi_basedir +++target_alias +++host_alias +++build_alias +++LIBS +++ECHO_T +++ECHO_N +++ECHO_C +++DEFS +++mandir +++localedir +++libdir +++psdir +++pdfdir +++dvidir +++htmldir +++infodir +++docdir +++oldincludedir +++includedir +++localstatedir +++sharedstatedir +++sysconfdir +++datadir +++datarootdir +++libexecdir +++sbindir +++bindir +++program_transform_name +++prefix +++exec_prefix +++PACKAGE_URL +++PACKAGE_BUGREPORT +++PACKAGE_STRING +++PACKAGE_VERSION +++PACKAGE_TARNAME +++PACKAGE_NAME +++PATH_SEPARATOR +++SHELL' +++ac_subst_files='' +++ac_user_opts=' +++enable_option_checking +++enable_multilib +++with_build_libsubdir +++enable_dependency_tracking +++enable_silent_rules +++enable_largefile +++with_cross_host +++enable_version_specific_runtime_libs +++with_slibdir +++enable_maintainer_mode +++enable_shared +++enable_static +++with_pic +++enable_fast_install +++with_gnu_ld +++enable_libtool_lock +++enable_darwin_at_rpath +++with_gcc_major_version_only +++enable_algol68_gc +++with_target_bdw_gc +++with_target_bdw_gc_include +++with_target_bdw_gc_lib +++' +++ ac_precious_vars='build_alias +++host_alias +++target_alias +++CC +++CFLAGS +++LDFLAGS +++LIBS +++CPPFLAGS +++CPP' +++ +++ +++# Initialize some variables set by options. +++ac_init_help= +++ac_init_version=false +++ac_unrecognized_opts= +++ac_unrecognized_sep= +++# The variables have the same names as the options, with +++# dashes changed to underlines. +++cache_file=/dev/null +++exec_prefix=NONE +++no_create= +++no_recursion= +++prefix=NONE +++program_prefix=NONE +++program_suffix=NONE +++program_transform_name=s,x,x, +++silent= +++site= +++srcdir= +++verbose= +++x_includes=NONE +++x_libraries=NONE +++ +++# Installation directory options. +++# These are left unexpanded so users can "make install exec_prefix=/foo" +++# and all the variables that are supposed to be based on exec_prefix +++# by default will actually change. +++# Use braces instead of parens because sh, perl, etc. also accept them. +++# (The list follows the same order as the GNU Coding Standards.) +++bindir='${exec_prefix}/bin' +++sbindir='${exec_prefix}/sbin' +++libexecdir='${exec_prefix}/libexec' +++datarootdir='${prefix}/share' +++datadir='${datarootdir}' +++sysconfdir='${prefix}/etc' +++sharedstatedir='${prefix}/com' +++localstatedir='${prefix}/var' +++includedir='${prefix}/include' +++oldincludedir='/usr/include' +++docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +++infodir='${datarootdir}/info' +++htmldir='${docdir}' +++dvidir='${docdir}' +++pdfdir='${docdir}' +++psdir='${docdir}' +++libdir='${exec_prefix}/lib' +++localedir='${datarootdir}/locale' +++mandir='${datarootdir}/man' +++ +++ac_prev= +++ac_dashdash= +++for ac_option +++do +++ # If the previous option needs an argument, assign it. +++ if test -n "$ac_prev"; then +++ eval $ac_prev=\$ac_option +++ ac_prev= +++ continue +++ fi +++ +++ case $ac_option in +++ *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; +++ *=) ac_optarg= ;; +++ *) ac_optarg=yes ;; +++ esac +++ +++ # Accept the important Cygnus configure options, so we can diagnose typos. +++ +++ case $ac_dashdash$ac_option in +++ --) +++ ac_dashdash=yes ;; +++ +++ -bindir | --bindir | --bindi | --bind | --bin | --bi) +++ ac_prev=bindir ;; +++ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) +++ bindir=$ac_optarg ;; +++ +++ -build | --build | --buil | --bui | --bu) +++ ac_prev=build_alias ;; +++ -build=* | --build=* | --buil=* | --bui=* | --bu=*) +++ build_alias=$ac_optarg ;; +++ +++ -cache-file | --cache-file | --cache-fil | --cache-fi \ +++ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) +++ ac_prev=cache_file ;; +++ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ +++ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) +++ cache_file=$ac_optarg ;; +++ +++ --config-cache | -C) +++ cache_file=config.cache ;; +++ +++ -datadir | --datadir | --datadi | --datad) +++ ac_prev=datadir ;; +++ -datadir=* | --datadir=* | --datadi=* | --datad=*) +++ datadir=$ac_optarg ;; +++ +++ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ +++ | --dataroo | --dataro | --datar) +++ ac_prev=datarootdir ;; +++ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ +++ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) +++ datarootdir=$ac_optarg ;; +++ +++ -disable-* | --disable-*) +++ ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` +++ # Reject names that are not valid shell variable names. +++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +++ as_fn_error $? "invalid feature name: $ac_useropt" +++ ac_useropt_orig=$ac_useropt +++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` +++ case $ac_user_opts in +++ *" +++"enable_$ac_useropt" +++"*) ;; +++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" +++ ac_unrecognized_sep=', ';; +++ esac +++ eval enable_$ac_useropt=no ;; +++ +++ -docdir | --docdir | --docdi | --doc | --do) +++ ac_prev=docdir ;; +++ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) +++ docdir=$ac_optarg ;; +++ +++ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) +++ ac_prev=dvidir ;; +++ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) +++ dvidir=$ac_optarg ;; +++ +++ -enable-* | --enable-*) +++ ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` +++ # Reject names that are not valid shell variable names. +++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +++ as_fn_error $? "invalid feature name: $ac_useropt" +++ ac_useropt_orig=$ac_useropt +++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` +++ case $ac_user_opts in +++ *" +++"enable_$ac_useropt" +++"*) ;; +++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" +++ ac_unrecognized_sep=', ';; +++ esac +++ eval enable_$ac_useropt=\$ac_optarg ;; +++ +++ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ +++ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ +++ | --exec | --exe | --ex) +++ ac_prev=exec_prefix ;; +++ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ +++ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ +++ | --exec=* | --exe=* | --ex=*) +++ exec_prefix=$ac_optarg ;; +++ +++ -gas | --gas | --ga | --g) +++ # Obsolete; use --with-gas. +++ with_gas=yes ;; +++ +++ -help | --help | --hel | --he | -h) +++ ac_init_help=long ;; +++ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) +++ ac_init_help=recursive ;; +++ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) +++ ac_init_help=short ;; +++ +++ -host | --host | --hos | --ho) +++ ac_prev=host_alias ;; +++ -host=* | --host=* | --hos=* | --ho=*) +++ host_alias=$ac_optarg ;; +++ +++ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) +++ ac_prev=htmldir ;; +++ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ +++ | --ht=*) +++ htmldir=$ac_optarg ;; +++ +++ -includedir | --includedir | --includedi | --included | --include \ +++ | --includ | --inclu | --incl | --inc) +++ ac_prev=includedir ;; +++ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ +++ | --includ=* | --inclu=* | --incl=* | --inc=*) +++ includedir=$ac_optarg ;; +++ +++ -infodir | --infodir | --infodi | --infod | --info | --inf) +++ ac_prev=infodir ;; +++ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) +++ infodir=$ac_optarg ;; +++ +++ -libdir | --libdir | --libdi | --libd) +++ ac_prev=libdir ;; +++ -libdir=* | --libdir=* | --libdi=* | --libd=*) +++ libdir=$ac_optarg ;; +++ +++ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ +++ | --libexe | --libex | --libe) +++ ac_prev=libexecdir ;; +++ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ +++ | --libexe=* | --libex=* | --libe=*) +++ libexecdir=$ac_optarg ;; +++ +++ -localedir | --localedir | --localedi | --localed | --locale) +++ ac_prev=localedir ;; +++ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) +++ localedir=$ac_optarg ;; +++ +++ -localstatedir | --localstatedir | --localstatedi | --localstated \ +++ | --localstate | --localstat | --localsta | --localst | --locals) +++ ac_prev=localstatedir ;; +++ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ +++ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) +++ localstatedir=$ac_optarg ;; +++ +++ -mandir | --mandir | --mandi | --mand | --man | --ma | --m) +++ ac_prev=mandir ;; +++ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) +++ mandir=$ac_optarg ;; +++ +++ -nfp | --nfp | --nf) +++ # Obsolete; use --without-fp. +++ with_fp=no ;; +++ +++ -no-create | --no-create | --no-creat | --no-crea | --no-cre \ +++ | --no-cr | --no-c | -n) +++ no_create=yes ;; +++ +++ -no-recursion | --no-recursion | --no-recursio | --no-recursi \ +++ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) +++ no_recursion=yes ;; +++ +++ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ +++ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ +++ | --oldin | --oldi | --old | --ol | --o) +++ ac_prev=oldincludedir ;; +++ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ +++ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ +++ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) +++ oldincludedir=$ac_optarg ;; +++ +++ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) +++ ac_prev=prefix ;; +++ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) +++ prefix=$ac_optarg ;; +++ +++ -program-prefix | --program-prefix | --program-prefi | --program-pref \ +++ | --program-pre | --program-pr | --program-p) +++ ac_prev=program_prefix ;; +++ -program-prefix=* | --program-prefix=* | --program-prefi=* \ +++ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) +++ program_prefix=$ac_optarg ;; +++ +++ -program-suffix | --program-suffix | --program-suffi | --program-suff \ +++ | --program-suf | --program-su | --program-s) +++ ac_prev=program_suffix ;; +++ -program-suffix=* | --program-suffix=* | --program-suffi=* \ +++ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) +++ program_suffix=$ac_optarg ;; +++ +++ -program-transform-name | --program-transform-name \ +++ | --program-transform-nam | --program-transform-na \ +++ | --program-transform-n | --program-transform- \ +++ | --program-transform | --program-transfor \ +++ | --program-transfo | --program-transf \ +++ | --program-trans | --program-tran \ +++ | --progr-tra | --program-tr | --program-t) +++ ac_prev=program_transform_name ;; +++ -program-transform-name=* | --program-transform-name=* \ +++ | --program-transform-nam=* | --program-transform-na=* \ +++ | --program-transform-n=* | --program-transform-=* \ +++ | --program-transform=* | --program-transfor=* \ +++ | --program-transfo=* | --program-transf=* \ +++ | --program-trans=* | --program-tran=* \ +++ | --progr-tra=* | --program-tr=* | --program-t=*) +++ program_transform_name=$ac_optarg ;; +++ +++ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) +++ ac_prev=pdfdir ;; +++ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) +++ pdfdir=$ac_optarg ;; +++ +++ -psdir | --psdir | --psdi | --psd | --ps) +++ ac_prev=psdir ;; +++ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) +++ psdir=$ac_optarg ;; +++ +++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +++ | -silent | --silent | --silen | --sile | --sil) +++ silent=yes ;; +++ +++ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) +++ ac_prev=sbindir ;; +++ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ +++ | --sbi=* | --sb=*) +++ sbindir=$ac_optarg ;; +++ +++ -sharedstatedir | --sharedstatedir | --sharedstatedi \ +++ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ +++ | --sharedst | --shareds | --shared | --share | --shar \ +++ | --sha | --sh) +++ ac_prev=sharedstatedir ;; +++ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ +++ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ +++ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ +++ | --sha=* | --sh=*) +++ sharedstatedir=$ac_optarg ;; +++ +++ -site | --site | --sit) +++ ac_prev=site ;; +++ -site=* | --site=* | --sit=*) +++ site=$ac_optarg ;; +++ +++ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) +++ ac_prev=srcdir ;; +++ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) +++ srcdir=$ac_optarg ;; +++ +++ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ +++ | --syscon | --sysco | --sysc | --sys | --sy) +++ ac_prev=sysconfdir ;; +++ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ +++ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) +++ sysconfdir=$ac_optarg ;; +++ +++ -target | --target | --targe | --targ | --tar | --ta | --t) +++ ac_prev=target_alias ;; +++ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) +++ target_alias=$ac_optarg ;; +++ +++ -v | -verbose | --verbose | --verbos | --verbo | --verb) +++ verbose=yes ;; +++ +++ -version | --version | --versio | --versi | --vers | -V) +++ ac_init_version=: ;; +++ +++ -with-* | --with-*) +++ ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` +++ # Reject names that are not valid shell variable names. +++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +++ as_fn_error $? "invalid package name: $ac_useropt" +++ ac_useropt_orig=$ac_useropt +++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` +++ case $ac_user_opts in +++ *" +++"with_$ac_useropt" +++"*) ;; +++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" +++ ac_unrecognized_sep=', ';; +++ esac +++ eval with_$ac_useropt=\$ac_optarg ;; +++ +++ -without-* | --without-*) +++ ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` +++ # Reject names that are not valid shell variable names. +++ expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && +++ as_fn_error $? "invalid package name: $ac_useropt" +++ ac_useropt_orig=$ac_useropt +++ ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` +++ case $ac_user_opts in +++ *" +++"with_$ac_useropt" +++"*) ;; +++ *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" +++ ac_unrecognized_sep=', ';; +++ esac +++ eval with_$ac_useropt=no ;; +++ +++ --x) +++ # Obsolete; use --with-x. +++ with_x=yes ;; +++ +++ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ +++ | --x-incl | --x-inc | --x-in | --x-i) +++ ac_prev=x_includes ;; +++ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ +++ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) +++ x_includes=$ac_optarg ;; +++ +++ -x-libraries | --x-libraries | --x-librarie | --x-librari \ +++ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) +++ ac_prev=x_libraries ;; +++ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ +++ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) +++ x_libraries=$ac_optarg ;; +++ +++ -*) as_fn_error $? "unrecognized option: \`$ac_option' +++Try \`$0 --help' for more information" +++ ;; +++ +++ *=*) +++ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` +++ # Reject names that are not valid shell variable names. +++ case $ac_envvar in #( +++ '' | [0-9]* | *[!_$as_cr_alnum]* ) +++ as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; +++ esac +++ eval $ac_envvar=\$ac_optarg +++ export $ac_envvar ;; +++ +++ *) +++ # FIXME: should be removed in autoconf 3.0. +++ $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 +++ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && +++ $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 +++ : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" +++ ;; +++ +++ esac +++done +++ +++if test -n "$ac_prev"; then +++ ac_option=--`echo $ac_prev | sed 's/_/-/g'` +++ as_fn_error $? "missing argument to $ac_option" +++fi +++ +++if test -n "$ac_unrecognized_opts"; then +++ case $enable_option_checking in +++ no) ;; +++ fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; +++ *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; +++ esac +++fi +++ +++# Check all directory arguments for consistency. +++for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ +++ datadir sysconfdir sharedstatedir localstatedir includedir \ +++ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ +++ libdir localedir mandir +++do +++ eval ac_val=\$$ac_var +++ # Remove trailing slashes. +++ case $ac_val in +++ */ ) +++ ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` +++ eval $ac_var=\$ac_val;; +++ esac +++ # Be sure to have absolute directory names. +++ case $ac_val in +++ [\\/$]* | ?:[\\/]* ) continue;; +++ NONE | '' ) case $ac_var in *prefix ) continue;; esac;; +++ esac +++ as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +++done +++ +++# There might be people who depend on the old broken behavior: `$host' +++# used to hold the argument of --host etc. +++# FIXME: To remove some day. +++build=$build_alias +++host=$host_alias +++target=$target_alias +++ +++# FIXME: To remove some day. +++if test "x$host_alias" != x; then +++ if test "x$build_alias" = x; then +++ cross_compiling=maybe +++ elif test "x$build_alias" != "x$host_alias"; then +++ cross_compiling=yes +++ fi +++fi +++ +++ac_tool_prefix= +++test -n "$host_alias" && ac_tool_prefix=$host_alias- +++ +++test "$silent" = yes && exec 6>/dev/null +++ +++ +++ac_pwd=`pwd` && test -n "$ac_pwd" && +++ac_ls_di=`ls -di .` && +++ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || +++ as_fn_error $? "working directory cannot be determined" +++test "X$ac_ls_di" = "X$ac_pwd_ls_di" || +++ as_fn_error $? "pwd does not report name of working directory" +++ +++ +++# Find the source files, if location was not specified. +++if test -z "$srcdir"; then +++ ac_srcdir_defaulted=yes +++ # Try the directory containing this script, then the parent directory. +++ ac_confdir=`$as_dirname -- "$as_myself" || +++$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +++ X"$as_myself" : 'X\(//\)[^/]' \| \ +++ X"$as_myself" : 'X\(//\)$' \| \ +++ X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X"$as_myself" | +++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)[^/].*/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'` +++ srcdir=$ac_confdir +++ if test ! -r "$srcdir/$ac_unique_file"; then +++ srcdir=.. +++ fi +++else +++ ac_srcdir_defaulted=no +++fi +++if test ! -r "$srcdir/$ac_unique_file"; then +++ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." +++ as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +++fi +++ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +++ac_abs_confdir=`( +++ cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" +++ pwd)` +++# When building in place, set srcdir=. +++if test "$ac_abs_confdir" = "$ac_pwd"; then +++ srcdir=. +++fi +++# Remove unnecessary trailing slashes from srcdir. +++# Double slashes in file names in object file debugging info +++# mess up M-x gdb in Emacs. +++case $srcdir in +++*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +++esac +++for ac_var in $ac_precious_vars; do +++ eval ac_env_${ac_var}_set=\${${ac_var}+set} +++ eval ac_env_${ac_var}_value=\$${ac_var} +++ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} +++ eval ac_cv_env_${ac_var}_value=\$${ac_var} +++done +++ +++# +++# Report the --help message. +++# +++if test "$ac_init_help" = "long"; then +++ # Omit some internal or obsolete options to make the list less imposing. +++ # This message is too long to be a string in the A/UX 3.1 sh. +++ cat <<_ACEOF +++\`configure' configures package-unused version-unused to adapt to many kinds of systems. +++ +++Usage: $0 [OPTION]... [VAR=VALUE]... +++ +++To assign environment variables (e.g., CC, CFLAGS...), specify them as +++VAR=VALUE. See below for descriptions of some of the useful variables. +++ +++Defaults for the options are specified in brackets. +++ +++Configuration: +++ -h, --help display this help and exit +++ --help=short display options specific to this package +++ --help=recursive display the short help of all the included packages +++ -V, --version display version information and exit +++ -q, --quiet, --silent do not print \`checking ...' messages +++ --cache-file=FILE cache test results in FILE [disabled] +++ -C, --config-cache alias for \`--cache-file=config.cache' +++ -n, --no-create do not create output files +++ --srcdir=DIR find the sources in DIR [configure dir or \`..'] +++ +++Installation directories: +++ --prefix=PREFIX install architecture-independent files in PREFIX +++ [$ac_default_prefix] +++ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX +++ [PREFIX] +++ +++By default, \`make install' will install all the files in +++\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +++an installation prefix other than \`$ac_default_prefix' using \`--prefix', +++for instance \`--prefix=\$HOME'. +++ +++For better control, use the options below. +++ +++Fine tuning of the installation directories: +++ --bindir=DIR user executables [EPREFIX/bin] +++ --sbindir=DIR system admin executables [EPREFIX/sbin] +++ --libexecdir=DIR program executables [EPREFIX/libexec] +++ --sysconfdir=DIR read-only single-machine data [PREFIX/etc] +++ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] +++ --localstatedir=DIR modifiable single-machine data [PREFIX/var] +++ --libdir=DIR object code libraries [EPREFIX/lib] +++ --includedir=DIR C header files [PREFIX/include] +++ --oldincludedir=DIR C header files for non-gcc [/usr/include] +++ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] +++ --datadir=DIR read-only architecture-independent data [DATAROOTDIR] +++ --infodir=DIR info documentation [DATAROOTDIR/info] +++ --localedir=DIR locale-dependent data [DATAROOTDIR/locale] +++ --mandir=DIR man documentation [DATAROOTDIR/man] +++ --docdir=DIR documentation root [DATAROOTDIR/doc/libga68] +++ --htmldir=DIR html documentation [DOCDIR] +++ --dvidir=DIR dvi documentation [DOCDIR] +++ --pdfdir=DIR pdf documentation [DOCDIR] +++ --psdir=DIR ps documentation [DOCDIR] +++_ACEOF +++ +++ cat <<\_ACEOF +++ +++Program names: +++ --program-prefix=PREFIX prepend PREFIX to installed program names +++ --program-suffix=SUFFIX append SUFFIX to installed program names +++ --program-transform-name=PROGRAM run sed PROGRAM on installed program names +++ +++System types: +++ --build=BUILD configure for building on BUILD [guessed] +++ --host=HOST cross-compile to build programs to run on HOST [BUILD] +++ --target=TARGET configure for building compilers for TARGET [HOST] +++_ACEOF +++fi +++ +++if test -n "$ac_init_help"; then +++ case $ac_init_help in +++ short | recursive ) echo "Configuration of package-unused version-unused:";; +++ esac +++ cat <<\_ACEOF +++ +++Optional Features: +++ --disable-option-checking ignore unrecognized --enable/--with options +++ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) +++ --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +++ --enable-multilib build many library versions (default) +++ --enable-dependency-tracking +++ do not reject slow dependency extractors +++ --disable-dependency-tracking +++ speeds up one-time build +++ --enable-silent-rules less verbose build output (undo: "make V=1") +++ --disable-silent-rules verbose build output (undo: "make V=0") +++ --disable-largefile omit support for large files +++ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory +++ --enable-maintainer-mode +++ enable make rules and dependencies not useful (and +++ sometimes confusing) to the casual installer +++ --enable-shared[=PKGS] build shared libraries [default=yes] +++ --enable-static[=PKGS] build static libraries [default=yes] +++ --enable-fast-install[=PKGS] +++ optimize for fast installation [default=yes] +++ --disable-libtool-lock avoid locking (might break parallel builds) +++ --enable-darwin-at-rpath +++ install libraries with @rpath/library-name, requires +++ rpaths to be added to executables +++ --enable-algol68-gc enable use of Boehm's garbage collector with the GNU +++ Algol runtime +++ +++Optional Packages: +++ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] +++ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) +++ --with-build-libsubdir=DIR Directory where to find libraries for build system +++ --with-cross-host=HOST Configuring with a cross compiler +++ --with-slibdir=DIR shared libraries in DIR LIBDIR +++ --with-pic try to use only PIC/non-PIC objects [default=use +++ both] +++ --with-gnu-ld assume the C compiler uses GNU ld [default=no] +++ --with-gcc-major-version-only +++ use only GCC major number in filesystem paths +++ --with-target-bdw-gc=PATHLIST +++ specify prefix directory for installed bdw-gc +++ package. Equivalent to +++ --with-target-bdw-gc-include=PATH/include plus +++ --with-target-bdw-gc-lib=PATH/lib +++ --with-target-bdw-gc-include=PATHLIST +++ specify directories for installed bdw-gc include +++ files +++ --with-target-bdw-gc-lib=PATHLIST +++ specify directories for installed bdw-gc library +++ +++Some influential environment variables: +++ CC C compiler command +++ CFLAGS C compiler flags +++ LDFLAGS linker flags, e.g. -L if you have libraries in a +++ nonstandard directory +++ LIBS libraries to pass to the linker, e.g. -l +++ CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if +++ you have headers in a nonstandard directory +++ CPP C preprocessor +++ CCAS assembler compiler command (defaults to CC) +++ CCASFLAGS assembler compiler flags (defaults to CFLAGS) +++ +++Use these variables to override the choices made by `configure' or to help +++it to find libraries and programs with nonstandard names/locations. +++ +++Report bugs to the package provider. +++_ACEOF +++ac_status=$? +++fi +++ +++if test "$ac_init_help" = "recursive"; then +++ # If there are subdirs, report their specific --help. +++ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue +++ test -d "$ac_dir" || +++ { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || +++ continue +++ ac_builddir=. +++ +++case "$ac_dir" in +++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +++*) +++ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` +++ # A ".." for each directory in $ac_dir_suffix. +++ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` +++ case $ac_top_builddir_sub in +++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; +++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; +++ esac ;; +++esac +++ac_abs_top_builddir=$ac_pwd +++ac_abs_builddir=$ac_pwd$ac_dir_suffix +++# for backward compatibility: +++ac_top_builddir=$ac_top_build_prefix +++ +++case $srcdir in +++ .) # We are building in place. +++ ac_srcdir=. +++ ac_top_srcdir=$ac_top_builddir_sub +++ ac_abs_top_srcdir=$ac_pwd ;; +++ [\\/]* | ?:[\\/]* ) # Absolute name. +++ ac_srcdir=$srcdir$ac_dir_suffix; +++ ac_top_srcdir=$srcdir +++ ac_abs_top_srcdir=$srcdir ;; +++ *) # Relative name. +++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix +++ ac_top_srcdir=$ac_top_build_prefix$srcdir +++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +++esac +++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix +++ +++ cd "$ac_dir" || { ac_status=$?; continue; } +++ # Check for guested configure. +++ if test -f "$ac_srcdir/configure.gnu"; then +++ echo && +++ $SHELL "$ac_srcdir/configure.gnu" --help=recursive +++ elif test -f "$ac_srcdir/configure"; then +++ echo && +++ $SHELL "$ac_srcdir/configure" --help=recursive +++ else +++ $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 +++ fi || ac_status=$? +++ cd "$ac_pwd" || { ac_status=$?; break; } +++ done +++fi +++ +++test -n "$ac_init_help" && exit $ac_status +++if $ac_init_version; then +++ cat <<\_ACEOF +++package-unused configure version-unused +++generated by GNU Autoconf 2.69 +++ +++Copyright (C) 2012 Free Software Foundation, Inc. +++This configure script is free software; the Free Software Foundation +++gives unlimited permission to copy, distribute and modify it. +++_ACEOF +++ exit +++fi +++ +++## ------------------------ ## +++## Autoconf initialization. ## +++## ------------------------ ## +++ +++# ac_fn_c_try_compile LINENO +++# -------------------------- +++# Try to compile conftest.$ac_ext, and return whether this succeeded. +++ac_fn_c_try_compile () +++{ +++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ rm -f conftest.$ac_objext +++ if { { ac_try="$ac_compile" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_compile") 2>conftest.err +++ ac_status=$? +++ if test -s conftest.err; then +++ grep -v '^ *+' conftest.err >conftest.er1 +++ cat conftest.er1 >&5 +++ mv -f conftest.er1 conftest.err +++ fi +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } && { +++ test -z "$ac_c_werror_flag" || +++ test ! -s conftest.err +++ } && test -s conftest.$ac_objext; then : +++ ac_retval=0 +++else +++ $as_echo "$as_me: failed program was:" >&5 +++sed 's/^/| /' conftest.$ac_ext >&5 +++ +++ ac_retval=1 +++fi +++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +++ as_fn_set_status $ac_retval +++ +++} # ac_fn_c_try_compile +++ +++# ac_fn_c_try_cpp LINENO +++# ---------------------- +++# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +++ac_fn_c_try_cpp () +++{ +++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ if { { ac_try="$ac_cpp conftest.$ac_ext" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err +++ ac_status=$? +++ if test -s conftest.err; then +++ grep -v '^ *+' conftest.err >conftest.er1 +++ cat conftest.er1 >&5 +++ mv -f conftest.er1 conftest.err +++ fi +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } > conftest.i && { +++ test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || +++ test ! -s conftest.err +++ }; then : +++ ac_retval=0 +++else +++ $as_echo "$as_me: failed program was:" >&5 +++sed 's/^/| /' conftest.$ac_ext >&5 +++ +++ ac_retval=1 +++fi +++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +++ as_fn_set_status $ac_retval +++ +++} # ac_fn_c_try_cpp +++ +++# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +++# ------------------------------------------------------- +++# Tests whether HEADER exists, giving a warning if it cannot be compiled using +++# the include files in INCLUDES and setting the cache variable VAR +++# accordingly. +++ac_fn_c_check_header_mongrel () +++{ +++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ if eval \${$3+:} false; then : +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +++$as_echo_n "checking for $2... " >&6; } +++if eval \${$3+:} false; then : +++ $as_echo_n "(cached) " >&6 +++fi +++eval ac_res=\$$3 +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +++$as_echo "$ac_res" >&6; } +++else +++ # Is the header compilable? +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +++$as_echo_n "checking $2 usability... " >&6; } +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++$4 +++#include <$2> +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_header_compiler=yes +++else +++ ac_header_compiler=no +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +++$as_echo "$ac_header_compiler" >&6; } +++ +++# Is the header present? +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +++$as_echo_n "checking $2 presence... " >&6; } +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include <$2> +++_ACEOF +++if ac_fn_c_try_cpp "$LINENO"; then : +++ ac_header_preproc=yes +++else +++ ac_header_preproc=no +++fi +++rm -f conftest.err conftest.i conftest.$ac_ext +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +++$as_echo "$ac_header_preproc" >&6; } +++ +++# So? What about this header? +++case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( +++ yes:no: ) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +++$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +++ ;; +++ no:yes:* ) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +++$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +++$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +++$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +++$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +++$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +++ ;; +++esac +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +++$as_echo_n "checking for $2... " >&6; } +++if eval \${$3+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ eval "$3=\$ac_header_compiler" +++fi +++eval ac_res=\$$3 +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +++$as_echo "$ac_res" >&6; } +++fi +++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +++ +++} # ac_fn_c_check_header_mongrel +++ +++# ac_fn_c_try_run LINENO +++# ---------------------- +++# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +++# that executables *can* be run. +++ac_fn_c_try_run () +++{ +++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ if { { ac_try="$ac_link" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_link") 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' +++ { { case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_try") 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; }; then : +++ ac_retval=0 +++else +++ $as_echo "$as_me: program exited with status $ac_status" >&5 +++ $as_echo "$as_me: failed program was:" >&5 +++sed 's/^/| /' conftest.$ac_ext >&5 +++ +++ ac_retval=$ac_status +++fi +++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo +++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +++ as_fn_set_status $ac_retval +++ +++} # ac_fn_c_try_run +++ +++# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +++# ------------------------------------------------------- +++# Tests whether HEADER exists and can be compiled using the include files in +++# INCLUDES, setting the cache variable VAR accordingly. +++ac_fn_c_check_header_compile () +++{ +++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +++$as_echo_n "checking for $2... " >&6; } +++if eval \${$3+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++$4 +++#include <$2> +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ eval "$3=yes" +++else +++ eval "$3=no" +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++fi +++eval ac_res=\$$3 +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +++$as_echo "$ac_res" >&6; } +++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +++ +++} # ac_fn_c_check_header_compile +++ +++# ac_fn_c_try_link LINENO +++# ----------------------- +++# Try to link conftest.$ac_ext, and return whether this succeeded. +++ac_fn_c_try_link () +++{ +++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ rm -f conftest.$ac_objext conftest$ac_exeext +++ if { { ac_try="$ac_link" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_link") 2>conftest.err +++ ac_status=$? +++ if test -s conftest.err; then +++ grep -v '^ *+' conftest.err >conftest.er1 +++ cat conftest.er1 >&5 +++ mv -f conftest.er1 conftest.err +++ fi +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } && { +++ test -z "$ac_c_werror_flag" || +++ test ! -s conftest.err +++ } && test -s conftest$ac_exeext && { +++ test "$cross_compiling" = yes || +++ test -x conftest$ac_exeext +++ }; then : +++ ac_retval=0 +++else +++ $as_echo "$as_me: failed program was:" >&5 +++sed 's/^/| /' conftest.$ac_ext >&5 +++ +++ ac_retval=1 +++fi +++ # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information +++ # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would +++ # interfere with the next link command; also delete a directory that is +++ # left behind by Apple's compiler. We do this before executing the actions. +++ rm -rf conftest.dSYM conftest_ipa8_conftest.oo +++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +++ as_fn_set_status $ac_retval +++ +++} # ac_fn_c_try_link +++ +++# ac_fn_c_check_func LINENO FUNC VAR +++# ---------------------------------- +++# Tests whether FUNC exists, setting the cache variable VAR accordingly +++ac_fn_c_check_func () +++{ +++ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +++$as_echo_n "checking for $2... " >&6; } +++if eval \${$3+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++/* Define $2 to an innocuous variant, in case declares $2. +++ For example, HP-UX 11i declares gettimeofday. */ +++#define $2 innocuous_$2 +++ +++/* System header to define __stub macros and hopefully few prototypes, +++ which can conflict with char $2 (); below. +++ Prefer to if __STDC__ is defined, since +++ exists even on freestanding compilers. */ +++ +++#ifdef __STDC__ +++# include +++#else +++# include +++#endif +++ +++#undef $2 +++ +++/* Override any GCC internal prototype to avoid an error. +++ Use char because int might match the return type of a GCC +++ builtin and then its argument prototype would still apply. */ +++#ifdef __cplusplus +++extern "C" +++#endif +++char $2 (); +++/* The GNU C library defines this for functions which it implements +++ to always fail with ENOSYS. Some functions are actually named +++ something starting with __ and the normal name is an alias. */ +++#if defined __stub_$2 || defined __stub___$2 +++choke me +++#endif +++ +++int +++main () +++{ +++return $2 (); +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ eval "$3=yes" +++else +++ eval "$3=no" +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++fi +++eval ac_res=\$$3 +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +++$as_echo "$ac_res" >&6; } +++ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno +++ +++} # ac_fn_c_check_func +++cat >config.log <<_ACEOF +++This file contains any messages produced by compilers while +++running configure, to aid debugging if configure makes a mistake. +++ +++It was created by package-unused $as_me version-unused, which was +++generated by GNU Autoconf 2.69. Invocation command line was +++ +++ $ $0 $@ +++ +++_ACEOF +++exec 5>>config.log +++{ +++cat <<_ASUNAME +++## --------- ## +++## Platform. ## +++## --------- ## +++ +++hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +++uname -m = `(uname -m) 2>/dev/null || echo unknown` +++uname -r = `(uname -r) 2>/dev/null || echo unknown` +++uname -s = `(uname -s) 2>/dev/null || echo unknown` +++uname -v = `(uname -v) 2>/dev/null || echo unknown` +++ +++/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +++/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` +++ +++/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +++/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +++/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +++/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +++/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +++/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +++/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` +++ +++_ASUNAME +++ +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ $as_echo "PATH: $as_dir" +++ done +++IFS=$as_save_IFS +++ +++} >&5 +++ +++cat >&5 <<_ACEOF +++ +++ +++## ----------- ## +++## Core tests. ## +++## ----------- ## +++ +++_ACEOF +++ +++ +++# Keep a trace of the command line. +++# Strip out --no-create and --no-recursion so they do not pile up. +++# Strip out --silent because we don't want to record it for future runs. +++# Also quote any args containing shell meta-characters. +++# Make two passes to allow for proper duplicate-argument suppression. +++ac_configure_args= +++ac_configure_args0= +++ac_configure_args1= +++ac_must_keep_next=false +++for ac_pass in 1 2 +++do +++ for ac_arg +++ do +++ case $ac_arg in +++ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; +++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +++ | -silent | --silent | --silen | --sile | --sil) +++ continue ;; +++ *\'*) +++ ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; +++ esac +++ case $ac_pass in +++ 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; +++ 2) +++ as_fn_append ac_configure_args1 " '$ac_arg'" +++ if test $ac_must_keep_next = true; then +++ ac_must_keep_next=false # Got value, back to normal. +++ else +++ case $ac_arg in +++ *=* | --config-cache | -C | -disable-* | --disable-* \ +++ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ +++ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ +++ | -with-* | --with-* | -without-* | --without-* | --x) +++ case "$ac_configure_args0 " in +++ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; +++ esac +++ ;; +++ -* ) ac_must_keep_next=true ;; +++ esac +++ fi +++ as_fn_append ac_configure_args " '$ac_arg'" +++ ;; +++ esac +++ done +++done +++{ ac_configure_args0=; unset ac_configure_args0;} +++{ ac_configure_args1=; unset ac_configure_args1;} +++ +++# When interrupted or exit'd, cleanup temporary files, and complete +++# config.log. We remove comments because anyway the quotes in there +++# would cause problems or look ugly. +++# WARNING: Use '\'' to represent an apostrophe within the trap. +++# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +++trap 'exit_status=$? +++ # Save into config.log some information that might help in debugging. +++ { +++ echo +++ +++ $as_echo "## ---------------- ## +++## Cache variables. ## +++## ---------------- ##" +++ echo +++ # The following way of writing the cache mishandles newlines in values, +++( +++ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do +++ eval ac_val=\$$ac_var +++ case $ac_val in #( +++ *${as_nl}*) +++ case $ac_var in #( +++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +++$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; +++ esac +++ case $ac_var in #( +++ _ | IFS | as_nl) ;; #( +++ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( +++ *) { eval $ac_var=; unset $ac_var;} ;; +++ esac ;; +++ esac +++ done +++ (set) 2>&1 | +++ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( +++ *${as_nl}ac_space=\ *) +++ sed -n \ +++ "s/'\''/'\''\\\\'\'''\''/g; +++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" +++ ;; #( +++ *) +++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" +++ ;; +++ esac | +++ sort +++) +++ echo +++ +++ $as_echo "## ----------------- ## +++## Output variables. ## +++## ----------------- ##" +++ echo +++ for ac_var in $ac_subst_vars +++ do +++ eval ac_val=\$$ac_var +++ case $ac_val in +++ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; +++ esac +++ $as_echo "$ac_var='\''$ac_val'\''" +++ done | sort +++ echo +++ +++ if test -n "$ac_subst_files"; then +++ $as_echo "## ------------------- ## +++## File substitutions. ## +++## ------------------- ##" +++ echo +++ for ac_var in $ac_subst_files +++ do +++ eval ac_val=\$$ac_var +++ case $ac_val in +++ *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; +++ esac +++ $as_echo "$ac_var='\''$ac_val'\''" +++ done | sort +++ echo +++ fi +++ +++ if test -s confdefs.h; then +++ $as_echo "## ----------- ## +++## confdefs.h. ## +++## ----------- ##" +++ echo +++ cat confdefs.h +++ echo +++ fi +++ test "$ac_signal" != 0 && +++ $as_echo "$as_me: caught signal $ac_signal" +++ $as_echo "$as_me: exit $exit_status" +++ } >&5 +++ rm -f core *.core core.conftest.* && +++ rm -f -r conftest* confdefs* conf$$* $ac_clean_files && +++ exit $exit_status +++' 0 +++for ac_signal in 1 2 13 15; do +++ trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +++done +++ac_signal=0 +++ +++# confdefs.h avoids OS command line length limits that DEFS can exceed. +++rm -f -r conftest* confdefs.h +++ +++$as_echo "/* confdefs.h */" > confdefs.h +++ +++# Predefined preprocessor variables. +++ +++cat >>confdefs.h <<_ACEOF +++#define PACKAGE_NAME "$PACKAGE_NAME" +++_ACEOF +++ +++cat >>confdefs.h <<_ACEOF +++#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +++_ACEOF +++ +++cat >>confdefs.h <<_ACEOF +++#define PACKAGE_VERSION "$PACKAGE_VERSION" +++_ACEOF +++ +++cat >>confdefs.h <<_ACEOF +++#define PACKAGE_STRING "$PACKAGE_STRING" +++_ACEOF +++ +++cat >>confdefs.h <<_ACEOF +++#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +++_ACEOF +++ +++cat >>confdefs.h <<_ACEOF +++#define PACKAGE_URL "$PACKAGE_URL" +++_ACEOF +++ +++ +++# Let the site file select an alternate cache file if it wants to. +++# Prefer an explicitly selected file to automatically selected ones. +++ac_site_file1=NONE +++ac_site_file2=NONE +++if test -n "$CONFIG_SITE"; then +++ # We do not want a PATH search for config.site. +++ case $CONFIG_SITE in #(( +++ -*) ac_site_file1=./$CONFIG_SITE;; +++ */*) ac_site_file1=$CONFIG_SITE;; +++ *) ac_site_file1=./$CONFIG_SITE;; +++ esac +++elif test "x$prefix" != xNONE; then +++ ac_site_file1=$prefix/share/config.site +++ ac_site_file2=$prefix/etc/config.site +++else +++ ac_site_file1=$ac_default_prefix/share/config.site +++ ac_site_file2=$ac_default_prefix/etc/config.site +++fi +++for ac_site_file in "$ac_site_file1" "$ac_site_file2" +++do +++ test "x$ac_site_file" = xNONE && continue +++ if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +++$as_echo "$as_me: loading site script $ac_site_file" >&6;} +++ sed 's/^/| /' "$ac_site_file" >&5 +++ . "$ac_site_file" \ +++ || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++as_fn_error $? "failed to load site script $ac_site_file +++See \`config.log' for more details" "$LINENO" 5; } +++ fi +++done +++ +++if test -r "$cache_file"; then +++ # Some versions of bash will fail to source /dev/null (special files +++ # actually), so we avoid doing that. DJGPP emulates it as a regular file. +++ if test /dev/null != "$cache_file" && test -f "$cache_file"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +++$as_echo "$as_me: loading cache $cache_file" >&6;} +++ case $cache_file in +++ [\\/]* | ?:[\\/]* ) . "$cache_file";; +++ *) . "./$cache_file";; +++ esac +++ fi +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +++$as_echo "$as_me: creating cache $cache_file" >&6;} +++ >$cache_file +++fi +++ +++# Check that the precious variables saved in the cache have kept the same +++# value. +++ac_cache_corrupted=false +++for ac_var in $ac_precious_vars; do +++ eval ac_old_set=\$ac_cv_env_${ac_var}_set +++ eval ac_new_set=\$ac_env_${ac_var}_set +++ eval ac_old_val=\$ac_cv_env_${ac_var}_value +++ eval ac_new_val=\$ac_env_${ac_var}_value +++ case $ac_old_set,$ac_new_set in +++ set,) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +++$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} +++ ac_cache_corrupted=: ;; +++ ,set) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +++$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} +++ ac_cache_corrupted=: ;; +++ ,);; +++ *) +++ if test "x$ac_old_val" != "x$ac_new_val"; then +++ # differences in whitespace do not lead to failure. +++ ac_old_val_w=`echo x $ac_old_val` +++ ac_new_val_w=`echo x $ac_new_val` +++ if test "$ac_old_val_w" != "$ac_new_val_w"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +++$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} +++ ac_cache_corrupted=: +++ else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +++$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} +++ eval $ac_var=\$ac_old_val +++ fi +++ { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +++$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} +++ { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +++$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} +++ fi;; +++ esac +++ # Pass precious variables to config.status. +++ if test "$ac_new_set" = set; then +++ case $ac_new_val in +++ *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; +++ *) ac_arg=$ac_var=$ac_new_val ;; +++ esac +++ case " $ac_configure_args " in +++ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. +++ *) as_fn_append ac_configure_args " '$ac_arg'" ;; +++ esac +++ fi +++done +++if $ac_cache_corrupted; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++ { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +++$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} +++ as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +++fi +++## -------------------- ## +++## Main body of script. ## +++## -------------------- ## +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ +++ +++ +++ +++ +++ac_config_headers="$ac_config_headers config.h" +++ +++ +++# Add --enable-multilib to configure, which defaults to enable. +++# Default to --enable-multilib +++# Check whether --enable-multilib was given. +++if test "${enable_multilib+set}" = set; then : +++ enableval=$enable_multilib; case "$enableval" in +++ yes) multilib=yes ;; +++ no) multilib=no ;; +++ *) as_fn_error $? "bad value $enableval for multilib option" "$LINENO" 5 ;; +++ esac +++else +++ multilib=yes +++fi +++ +++ +++# We may get other options which we leave undocumented: +++# --with-target-subdir, --with-multisrctop, --with-multisubdir +++# See config-ml.in if you want the gory details. +++ +++if test "$srcdir" = "."; then +++ if test "$with_target_subdir" != "."; then +++ multi_basedir="$srcdir/$with_multisrctop../.." +++ else +++ multi_basedir="$srcdir/$with_multisrctop.." +++ fi +++else +++ multi_basedir="$srcdir/.." +++fi +++ +++ +++# Even if the default multilib is not a cross compilation, +++# it may be that some of the other multilibs are. +++if test $cross_compiling = no && test $multilib = yes \ +++ && test "x${with_multisubdir}" != x ; then +++ cross_compiling=maybe +++fi +++ +++ac_config_commands="$ac_config_commands default-1" +++ +++ +++if test "${multilib}" = "yes"; then +++ multilib_arg="--enable-multilib" +++else +++ multilib_arg= +++fi +++ +++# Cope with compilers, in subsequent tests, that at this stage may not +++# be able to build executables. +++ +++ +++# Enable extensions to C or POSIX on hosts that normally disable the +++# extensions. This should be called before any macros that run the C +++# compiler. +++ac_aux_dir= +++for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do +++ if test -f "$ac_dir/install-sh"; then +++ ac_aux_dir=$ac_dir +++ ac_install_sh="$ac_aux_dir/install-sh -c" +++ break +++ elif test -f "$ac_dir/install.sh"; then +++ ac_aux_dir=$ac_dir +++ ac_install_sh="$ac_aux_dir/install.sh -c" +++ break +++ elif test -f "$ac_dir/shtool"; then +++ ac_aux_dir=$ac_dir +++ ac_install_sh="$ac_aux_dir/shtool install -c" +++ break +++ fi +++done +++if test -z "$ac_aux_dir"; then +++ as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +++fi +++ +++# These three variables are undocumented and unsupported, +++# and are intended to be withdrawn in a future Autoconf release. +++# They can cause serious problems if a builder's source tree is in a directory +++# whose full name contains unusual characters. +++ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +++ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +++ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. +++ +++ +++# Expand $ac_aux_dir to an absolute path. +++am_aux_dir=`cd "$ac_aux_dir" && pwd` +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +++set dummy ${ac_tool_prefix}gcc; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$CC"; then +++ ac_cv_prog_CC="$CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_CC="${ac_tool_prefix}gcc" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++CC=$ac_cv_prog_CC +++if test -n "$CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +++$as_echo "$CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_CC"; then +++ ac_ct_CC=$CC +++ # Extract the first word of "gcc", so it can be a program name with args. +++set dummy gcc; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_CC"; then +++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_CC="gcc" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_CC=$ac_cv_prog_ac_ct_CC +++if test -n "$ac_ct_CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +++$as_echo "$ac_ct_CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_CC" = x; then +++ CC="" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ CC=$ac_ct_CC +++ fi +++else +++ CC="$ac_cv_prog_CC" +++fi +++ +++if test -z "$CC"; then +++ if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +++set dummy ${ac_tool_prefix}cc; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$CC"; then +++ ac_cv_prog_CC="$CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_CC="${ac_tool_prefix}cc" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++CC=$ac_cv_prog_CC +++if test -n "$CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +++$as_echo "$CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ fi +++fi +++if test -z "$CC"; then +++ # Extract the first word of "cc", so it can be a program name with args. +++set dummy cc; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$CC"; then +++ ac_cv_prog_CC="$CC" # Let the user override the test. +++else +++ ac_prog_rejected=no +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then +++ ac_prog_rejected=yes +++ continue +++ fi +++ ac_cv_prog_CC="cc" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++if test $ac_prog_rejected = yes; then +++ # We found a bogon in the path, so make sure we never use it. +++ set dummy $ac_cv_prog_CC +++ shift +++ if test $# != 0; then +++ # We chose a different compiler from the bogus one. +++ # However, it has the same basename, so the bogon will be chosen +++ # first if we set CC to just the basename; use the full file name. +++ shift +++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" +++ fi +++fi +++fi +++fi +++CC=$ac_cv_prog_CC +++if test -n "$CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +++$as_echo "$CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$CC"; then +++ if test -n "$ac_tool_prefix"; then +++ for ac_prog in cl.exe +++ do +++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$CC"; then +++ ac_cv_prog_CC="$CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++CC=$ac_cv_prog_CC +++if test -n "$CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +++$as_echo "$CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ test -n "$CC" && break +++ done +++fi +++if test -z "$CC"; then +++ ac_ct_CC=$CC +++ for ac_prog in cl.exe +++do +++ # Extract the first word of "$ac_prog", so it can be a program name with args. +++set dummy $ac_prog; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_CC"; then +++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_CC="$ac_prog" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_CC=$ac_cv_prog_ac_ct_CC +++if test -n "$ac_ct_CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +++$as_echo "$ac_ct_CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ test -n "$ac_ct_CC" && break +++done +++ +++ if test "x$ac_ct_CC" = x; then +++ CC="" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ CC=$ac_ct_CC +++ fi +++fi +++ +++fi +++ +++ +++test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++as_fn_error $? "no acceptable C compiler found in \$PATH +++See \`config.log' for more details" "$LINENO" 5; } +++ +++# Provide some information about the compiler. +++$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +++set X $ac_compile +++ac_compiler=$2 +++for ac_option in --version -v -V -qversion; do +++ { { ac_try="$ac_compiler $ac_option >&5" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_compiler $ac_option >&5") 2>conftest.err +++ ac_status=$? +++ if test -s conftest.err; then +++ sed '10a\ +++... rest of stderr output deleted ... +++ 10q' conftest.err >conftest.er1 +++ cat conftest.er1 >&5 +++ fi +++ rm -f conftest.er1 conftest.err +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } +++done +++ +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++int +++main () +++{ +++printf ("hello world\n"); +++ ; +++ return 0; +++} +++_ACEOF +++# FIXME: Cleanup? +++if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 +++ (eval $ac_link) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then : +++ gcc_no_link=no +++else +++ gcc_no_link=yes +++fi +++if test x$gcc_no_link = xyes; then +++ # Setting cross_compile will disable run tests; it will +++ # also disable AC_CHECK_FILE but that's generally +++ # correct if we can't link. +++ cross_compiling=yes +++ EXEEXT= +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++ac_clean_files_save=$ac_clean_files +++ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +++# Try to create an executable without -o first, disregard a.out. +++# It will help us diagnose broken compilers, and finding out an intuition +++# of exeext. +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +++$as_echo_n "checking whether the C compiler works... " >&6; } +++ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +++ +++# The possible output files: +++ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" +++ +++ac_rmfiles= +++for ac_file in $ac_files +++do +++ case $ac_file in +++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; +++ * ) ac_rmfiles="$ac_rmfiles $ac_file";; +++ esac +++done +++rm -f $ac_rmfiles +++ +++if { { ac_try="$ac_link_default" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_link_default") 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then : +++ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +++# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +++# in a Makefile. We should not override ac_cv_exeext if it was cached, +++# so that the user can short-circuit this test for compilers unknown to +++# Autoconf. +++for ac_file in $ac_files '' +++do +++ test -f "$ac_file" || continue +++ case $ac_file in +++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) +++ ;; +++ [ab].out ) +++ # We found the default executable, but exeext='' is most +++ # certainly right. +++ break;; +++ *.* ) +++ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; +++ then :; else +++ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +++ fi +++ # We set ac_cv_exeext here because the later test for it is not +++ # safe: cross compilers may not add the suffix if given an `-o' +++ # argument, so we may need to know it at that point already. +++ # Even if this section looks crufty: it has the advantage of +++ # actually working. +++ break;; +++ * ) +++ break;; +++ esac +++done +++test "$ac_cv_exeext" = no && ac_cv_exeext= +++ +++else +++ ac_file='' +++fi +++if test -z "$ac_file"; then : +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++$as_echo "$as_me: failed program was:" >&5 +++sed 's/^/| /' conftest.$ac_ext >&5 +++ +++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++as_fn_error 77 "C compiler cannot create executables +++See \`config.log' for more details" "$LINENO" 5; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +++$as_echo "yes" >&6; } +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +++$as_echo_n "checking for C compiler default output file name... " >&6; } +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +++$as_echo "$ac_file" >&6; } +++ac_exeext=$ac_cv_exeext +++ +++rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +++ac_clean_files=$ac_clean_files_save +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +++$as_echo_n "checking for suffix of executables... " >&6; } +++if { { ac_try="$ac_link" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_link") 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then : +++ # If both `conftest.exe' and `conftest' are `present' (well, observable) +++# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +++# work properly (i.e., refer to `conftest.exe'), while it won't with +++# `rm'. +++for ac_file in conftest.exe conftest conftest.*; do +++ test -f "$ac_file" || continue +++ case $ac_file in +++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; +++ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` +++ break;; +++ * ) break;; +++ esac +++done +++else +++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++as_fn_error $? "cannot compute suffix of executables: cannot compile and link +++See \`config.log' for more details" "$LINENO" 5; } +++fi +++rm -f conftest conftest$ac_cv_exeext +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +++$as_echo "$ac_cv_exeext" >&6; } +++ +++rm -f conftest.$ac_ext +++EXEEXT=$ac_cv_exeext +++ac_exeext=$EXEEXT +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++int +++main () +++{ +++FILE *f = fopen ("conftest.out", "w"); +++ return ferror (f) || fclose (f) != 0; +++ +++ ; +++ return 0; +++} +++_ACEOF +++ac_clean_files="$ac_clean_files conftest.out" +++# Check that the compiler produces executables we can run. If not, either +++# the compiler is broken, or we cross compile. +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +++$as_echo_n "checking whether we are cross compiling... " >&6; } +++if test "$cross_compiling" != yes; then +++ { { ac_try="$ac_link" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_link") 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } +++ if { ac_try='./conftest$ac_cv_exeext' +++ { { case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_try") 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; }; then +++ cross_compiling=no +++ else +++ if test "$cross_compiling" = maybe; then +++ cross_compiling=yes +++ else +++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++as_fn_error $? "cannot run C compiled programs. +++If you meant to cross compile, use \`--host'. +++See \`config.log' for more details" "$LINENO" 5; } +++ fi +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +++$as_echo "$cross_compiling" >&6; } +++ +++rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +++ac_clean_files=$ac_clean_files_save +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +++$as_echo_n "checking for suffix of object files... " >&6; } +++if ${ac_cv_objext+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++rm -f conftest.o conftest.obj +++if { { ac_try="$ac_compile" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_compile") 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then : +++ for ac_file in conftest.o conftest.obj conftest.*; do +++ test -f "$ac_file" || continue; +++ case $ac_file in +++ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; +++ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` +++ break;; +++ esac +++done +++else +++ $as_echo "$as_me: failed program was:" >&5 +++sed 's/^/| /' conftest.$ac_ext >&5 +++ +++{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++as_fn_error $? "cannot compute suffix of object files: cannot compile +++See \`config.log' for more details" "$LINENO" 5; } +++fi +++rm -f conftest.$ac_cv_objext conftest.$ac_ext +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +++$as_echo "$ac_cv_objext" >&6; } +++OBJEXT=$ac_cv_objext +++ac_objext=$OBJEXT +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +++$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +++if ${ac_cv_c_compiler_gnu+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++#ifndef __GNUC__ +++ choke me +++#endif +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_compiler_gnu=yes +++else +++ ac_compiler_gnu=no +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ac_cv_c_compiler_gnu=$ac_compiler_gnu +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +++$as_echo "$ac_cv_c_compiler_gnu" >&6; } +++if test $ac_compiler_gnu = yes; then +++ GCC=yes +++else +++ GCC= +++fi +++ac_test_CFLAGS=${CFLAGS+set} +++ac_save_CFLAGS=$CFLAGS +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +++$as_echo_n "checking whether $CC accepts -g... " >&6; } +++if ${ac_cv_prog_cc_g+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_save_c_werror_flag=$ac_c_werror_flag +++ ac_c_werror_flag=yes +++ ac_cv_prog_cc_g=no +++ CFLAGS="-g" +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_prog_cc_g=yes +++else +++ CFLAGS="" +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ +++else +++ ac_c_werror_flag=$ac_save_c_werror_flag +++ CFLAGS="-g" +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_prog_cc_g=yes +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ ac_c_werror_flag=$ac_save_c_werror_flag +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +++$as_echo "$ac_cv_prog_cc_g" >&6; } +++if test "$ac_test_CFLAGS" = set; then +++ CFLAGS=$ac_save_CFLAGS +++elif test $ac_cv_prog_cc_g = yes; then +++ if test "$GCC" = yes; then +++ CFLAGS="-g -O2" +++ else +++ CFLAGS="-g" +++ fi +++else +++ if test "$GCC" = yes; then +++ CFLAGS="-O2" +++ else +++ CFLAGS= +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +++$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +++if ${ac_cv_prog_cc_c89+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_cv_prog_cc_c89=no +++ac_save_CC=$CC +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++#include +++struct stat; +++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +++struct buf { int x; }; +++FILE * (*rcsopen) (struct buf *, struct stat *, int); +++static char *e (p, i) +++ char **p; +++ int i; +++{ +++ return p[i]; +++} +++static char *f (char * (*g) (char **, int), char **p, ...) +++{ +++ char *s; +++ va_list v; +++ va_start (v,p); +++ s = g (p, va_arg (v,int)); +++ va_end (v); +++ return s; +++} +++ +++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has +++ function prototypes and stuff, but not '\xHH' hex character constants. +++ These don't provoke an error unfortunately, instead are silently treated +++ as 'x'. The following induces an error, until -std is added to get +++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an +++ array size at least. It's necessary to write '\x00'==0 to get something +++ that's true only with -std. */ +++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +++ +++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters +++ inside strings and character constants. */ +++#define FOO(x) 'x' +++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +++ +++int test (int i, double x); +++struct s1 {int (*f) (int a);}; +++struct s2 {int (*f) (double a);}; +++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +++int argc; +++char **argv; +++int +++main () +++{ +++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +++ ; +++ return 0; +++} +++_ACEOF +++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ +++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +++do +++ CC="$ac_save_CC $ac_arg" +++ if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_prog_cc_c89=$ac_arg +++fi +++rm -f core conftest.err conftest.$ac_objext +++ test "x$ac_cv_prog_cc_c89" != "xno" && break +++done +++rm -f conftest.$ac_ext +++CC=$ac_save_CC +++ +++fi +++# AC_CACHE_VAL +++case "x$ac_cv_prog_cc_c89" in +++ x) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +++$as_echo "none needed" >&6; } ;; +++ xno) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +++$as_echo "unsupported" >&6; } ;; +++ *) +++ CC="$CC $ac_cv_prog_cc_c89" +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +++$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +++esac +++if test "x$ac_cv_prog_cc_c89" != xno; then : +++ +++fi +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +++$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +++if ${am_cv_prog_cc_c_o+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++ # Make sure it works both with $CC and with simple cc. +++ # Following AC_PROG_CC_C_O, we do the test twice because some +++ # compilers refuse to overwrite an existing .o file with -o, +++ # though they will create one. +++ am_cv_prog_cc_c_o=yes +++ for am_i in 1 2; do +++ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 +++ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 +++ ac_status=$? +++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 +++ (exit $ac_status); } \ +++ && test -f conftest2.$ac_objext; then +++ : OK +++ else +++ am_cv_prog_cc_c_o=no +++ break +++ fi +++ done +++ rm -f core conftest* +++ unset am_i +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +++$as_echo "$am_cv_prog_cc_c_o" >&6; } +++if test "$am_cv_prog_cc_c_o" != yes; then +++ # Losing compiler, so override with the script. +++ # FIXME: It is wrong to rewrite CC. +++ # But if we don't then we get into trouble of one sort or another. +++ # A longer-term fix would be to have automake use am__CC in this case, +++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" +++ CC="$am_aux_dir/compile $CC" +++fi +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +++$as_echo_n "checking how to run the C preprocessor... " >&6; } +++# On Suns, sometimes $CPP names a directory. +++if test -n "$CPP" && test -d "$CPP"; then +++ CPP= +++fi +++if test -z "$CPP"; then +++ if ${ac_cv_prog_CPP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ # Double quotes because CPP needs to be expanded +++ for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" +++ do +++ ac_preproc_ok=false +++for ac_c_preproc_warn_flag in '' yes +++do +++ # Use a header file that comes with gcc, so configuring glibc +++ # with a fresh cross-compiler works. +++ # Prefer to if __STDC__ is defined, since +++ # exists even on freestanding compilers. +++ # On the NeXT, cc -E runs the code through the compiler's parser, +++ # not just through cpp. "Syntax error" is here to catch this case. +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#ifdef __STDC__ +++# include +++#else +++# include +++#endif +++ Syntax error +++_ACEOF +++if ac_fn_c_try_cpp "$LINENO"; then : +++ +++else +++ # Broken: fails on valid input. +++continue +++fi +++rm -f conftest.err conftest.i conftest.$ac_ext +++ +++ # OK, works on sane cases. Now check whether nonexistent headers +++ # can be detected and how. +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++_ACEOF +++if ac_fn_c_try_cpp "$LINENO"; then : +++ # Broken: success on invalid input. +++continue +++else +++ # Passes both tests. +++ac_preproc_ok=: +++break +++fi +++rm -f conftest.err conftest.i conftest.$ac_ext +++ +++done +++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +++rm -f conftest.i conftest.err conftest.$ac_ext +++if $ac_preproc_ok; then : +++ break +++fi +++ +++ done +++ ac_cv_prog_CPP=$CPP +++ +++fi +++ CPP=$ac_cv_prog_CPP +++else +++ ac_cv_prog_CPP=$CPP +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +++$as_echo "$CPP" >&6; } +++ac_preproc_ok=false +++for ac_c_preproc_warn_flag in '' yes +++do +++ # Use a header file that comes with gcc, so configuring glibc +++ # with a fresh cross-compiler works. +++ # Prefer to if __STDC__ is defined, since +++ # exists even on freestanding compilers. +++ # On the NeXT, cc -E runs the code through the compiler's parser, +++ # not just through cpp. "Syntax error" is here to catch this case. +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#ifdef __STDC__ +++# include +++#else +++# include +++#endif +++ Syntax error +++_ACEOF +++if ac_fn_c_try_cpp "$LINENO"; then : +++ +++else +++ # Broken: fails on valid input. +++continue +++fi +++rm -f conftest.err conftest.i conftest.$ac_ext +++ +++ # OK, works on sane cases. Now check whether nonexistent headers +++ # can be detected and how. +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++_ACEOF +++if ac_fn_c_try_cpp "$LINENO"; then : +++ # Broken: success on invalid input. +++continue +++else +++ # Passes both tests. +++ac_preproc_ok=: +++break +++fi +++rm -f conftest.err conftest.i conftest.$ac_ext +++ +++done +++# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +++rm -f conftest.i conftest.err conftest.$ac_ext +++if $ac_preproc_ok; then : +++ +++else +++ { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +++See \`config.log' for more details" "$LINENO" 5; } +++fi +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +++$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +++if ${ac_cv_path_GREP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -z "$GREP"; then +++ ac_path_GREP_found=false +++ # Loop through the user's path and test for each of PROGNAME-LIST +++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_prog in grep ggrep; do +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" +++ as_fn_executable_p "$ac_path_GREP" || continue +++# Check for GNU ac_path_GREP and select it if it is found. +++ # Check for GNU $ac_path_GREP +++case `"$ac_path_GREP" --version 2>&1` in +++*GNU*) +++ ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +++*) +++ ac_count=0 +++ $as_echo_n 0123456789 >"conftest.in" +++ while : +++ do +++ cat "conftest.in" "conftest.in" >"conftest.tmp" +++ mv "conftest.tmp" "conftest.in" +++ cp "conftest.in" "conftest.nl" +++ $as_echo 'GREP' >> "conftest.nl" +++ "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break +++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +++ as_fn_arith $ac_count + 1 && ac_count=$as_val +++ if test $ac_count -gt ${ac_path_GREP_max-0}; then +++ # Best one so far, save it but keep looking for a better one +++ ac_cv_path_GREP="$ac_path_GREP" +++ ac_path_GREP_max=$ac_count +++ fi +++ # 10*(2^10) chars as input seems more than enough +++ test $ac_count -gt 10 && break +++ done +++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +++esac +++ +++ $ac_path_GREP_found && break 3 +++ done +++ done +++ done +++IFS=$as_save_IFS +++ if test -z "$ac_cv_path_GREP"; then +++ as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 +++ fi +++else +++ ac_cv_path_GREP=$GREP +++fi +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +++$as_echo "$ac_cv_path_GREP" >&6; } +++ GREP="$ac_cv_path_GREP" +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +++$as_echo_n "checking for egrep... " >&6; } +++if ${ac_cv_path_EGREP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 +++ then ac_cv_path_EGREP="$GREP -E" +++ else +++ if test -z "$EGREP"; then +++ ac_path_EGREP_found=false +++ # Loop through the user's path and test for each of PROGNAME-LIST +++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_prog in egrep; do +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" +++ as_fn_executable_p "$ac_path_EGREP" || continue +++# Check for GNU ac_path_EGREP and select it if it is found. +++ # Check for GNU $ac_path_EGREP +++case `"$ac_path_EGREP" --version 2>&1` in +++*GNU*) +++ ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +++*) +++ ac_count=0 +++ $as_echo_n 0123456789 >"conftest.in" +++ while : +++ do +++ cat "conftest.in" "conftest.in" >"conftest.tmp" +++ mv "conftest.tmp" "conftest.in" +++ cp "conftest.in" "conftest.nl" +++ $as_echo 'EGREP' >> "conftest.nl" +++ "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break +++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +++ as_fn_arith $ac_count + 1 && ac_count=$as_val +++ if test $ac_count -gt ${ac_path_EGREP_max-0}; then +++ # Best one so far, save it but keep looking for a better one +++ ac_cv_path_EGREP="$ac_path_EGREP" +++ ac_path_EGREP_max=$ac_count +++ fi +++ # 10*(2^10) chars as input seems more than enough +++ test $ac_count -gt 10 && break +++ done +++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +++esac +++ +++ $ac_path_EGREP_found && break 3 +++ done +++ done +++ done +++IFS=$as_save_IFS +++ if test -z "$ac_cv_path_EGREP"; then +++ as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 +++ fi +++else +++ ac_cv_path_EGREP=$EGREP +++fi +++ +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +++$as_echo "$ac_cv_path_EGREP" >&6; } +++ EGREP="$ac_cv_path_EGREP" +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +++$as_echo_n "checking for ANSI C header files... " >&6; } +++if ${ac_cv_header_stdc+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++#include +++#include +++#include +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_header_stdc=yes +++else +++ ac_cv_header_stdc=no +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ +++if test $ac_cv_header_stdc = yes; then +++ # SunOS 4.x string.h does not declare mem*, contrary to ANSI. +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++ +++_ACEOF +++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +++ $EGREP "memchr" >/dev/null 2>&1; then : +++ +++else +++ ac_cv_header_stdc=no +++fi +++rm -f conftest* +++ +++fi +++ +++if test $ac_cv_header_stdc = yes; then +++ # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++ +++_ACEOF +++if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | +++ $EGREP "free" >/dev/null 2>&1; then : +++ +++else +++ ac_cv_header_stdc=no +++fi +++rm -f conftest* +++ +++fi +++ +++if test $ac_cv_header_stdc = yes; then +++ # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. +++ if test "$cross_compiling" = yes; then : +++ : +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++#include +++#if ((' ' & 0x0FF) == 0x020) +++# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +++# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +++#else +++# define ISLOWER(c) \ +++ (('a' <= (c) && (c) <= 'i') \ +++ || ('j' <= (c) && (c) <= 'r') \ +++ || ('s' <= (c) && (c) <= 'z')) +++# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +++#endif +++ +++#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +++int +++main () +++{ +++ int i; +++ for (i = 0; i < 256; i++) +++ if (XOR (islower (i), ISLOWER (i)) +++ || toupper (i) != TOUPPER (i)) +++ return 2; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_run "$LINENO"; then : +++ +++else +++ ac_cv_header_stdc=no +++fi +++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +++ conftest.$ac_objext conftest.beam conftest.$ac_ext +++fi +++ +++fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +++$as_echo "$ac_cv_header_stdc" >&6; } +++if test $ac_cv_header_stdc = yes; then +++ +++$as_echo "#define STDC_HEADERS 1" >>confdefs.h +++ +++fi +++ +++# On IRIX 5.3, sys/types and inttypes.h are conflicting. +++for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ +++ inttypes.h stdint.h unistd.h +++do : +++ as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +++ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +++" +++if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : +++ cat >>confdefs.h <<_ACEOF +++#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +++_ACEOF +++ +++fi +++ +++done +++ +++ +++ +++ ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default" +++if test "x$ac_cv_header_minix_config_h" = xyes; then : +++ MINIX=yes +++else +++ MINIX= +++fi +++ +++ +++ if test "$MINIX" = yes; then +++ +++$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h +++ +++ +++$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h +++ +++ +++$as_echo "#define _MINIX 1" >>confdefs.h +++ +++ fi +++ +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5 +++$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; } +++if ${ac_cv_safe_to_define___extensions__+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++# define __EXTENSIONS__ 1 +++ $ac_includes_default +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_safe_to_define___extensions__=yes +++else +++ ac_cv_safe_to_define___extensions__=no +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5 +++$as_echo "$ac_cv_safe_to_define___extensions__" >&6; } +++ test $ac_cv_safe_to_define___extensions__ = yes && +++ $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h +++ +++ $as_echo "#define _ALL_SOURCE 1" >>confdefs.h +++ +++ $as_echo "#define _GNU_SOURCE 1" >>confdefs.h +++ +++ $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h +++ +++ $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h +++ +++ +++ +++# Determine the system type and set output variabls to the names of +++# the canonical system types. +++# +++# Do not delete or change the following two lines. For why, and for +++# why we are using the obsolete AC_CANONICAL_SYSTEM as ell as the +++# recommended AC_CANONICAL_HOST, see +++# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html +++# Make sure we can run config.sub. +++$SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 || +++ as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5 +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking build system type" >&5 +++$as_echo_n "checking build system type... " >&6; } +++if ${ac_cv_build+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_build_alias=$build_alias +++test "x$ac_build_alias" = x && +++ ac_build_alias=`$SHELL "$ac_aux_dir/config.guess"` +++test "x$ac_build_alias" = x && +++ as_fn_error $? "cannot guess build type; you must specify one" "$LINENO" 5 +++ac_cv_build=`$SHELL "$ac_aux_dir/config.sub" $ac_build_alias` || +++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $ac_build_alias failed" "$LINENO" 5 +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_build" >&5 +++$as_echo "$ac_cv_build" >&6; } +++case $ac_cv_build in +++*-*-*) ;; +++*) as_fn_error $? "invalid value of canonical build" "$LINENO" 5;; +++esac +++build=$ac_cv_build +++ac_save_IFS=$IFS; IFS='-' +++set x $ac_cv_build +++shift +++build_cpu=$1 +++build_vendor=$2 +++shift; shift +++# Remember, the first character of IFS is used to create $*, +++# except with old shells: +++build_os=$* +++IFS=$ac_save_IFS +++case $build_os in *\ *) build_os=`echo "$build_os" | sed 's/ /-/g'`;; esac +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking host system type" >&5 +++$as_echo_n "checking host system type... " >&6; } +++if ${ac_cv_host+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test "x$host_alias" = x; then +++ ac_cv_host=$ac_cv_build +++else +++ ac_cv_host=`$SHELL "$ac_aux_dir/config.sub" $host_alias` || +++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $host_alias failed" "$LINENO" 5 +++fi +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_host" >&5 +++$as_echo "$ac_cv_host" >&6; } +++case $ac_cv_host in +++*-*-*) ;; +++*) as_fn_error $? "invalid value of canonical host" "$LINENO" 5;; +++esac +++host=$ac_cv_host +++ac_save_IFS=$IFS; IFS='-' +++set x $ac_cv_host +++shift +++host_cpu=$1 +++host_vendor=$2 +++shift; shift +++# Remember, the first character of IFS is used to create $*, +++# except with old shells: +++host_os=$* +++IFS=$ac_save_IFS +++case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking target system type" >&5 +++$as_echo_n "checking target system type... " >&6; } +++if ${ac_cv_target+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test "x$target_alias" = x; then +++ ac_cv_target=$ac_cv_host +++else +++ ac_cv_target=`$SHELL "$ac_aux_dir/config.sub" $target_alias` || +++ as_fn_error $? "$SHELL $ac_aux_dir/config.sub $target_alias failed" "$LINENO" 5 +++fi +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_target" >&5 +++$as_echo "$ac_cv_target" >&6; } +++case $ac_cv_target in +++*-*-*) ;; +++*) as_fn_error $? "invalid value of canonical target" "$LINENO" 5;; +++esac +++target=$ac_cv_target +++ac_save_IFS=$IFS; IFS='-' +++set x $ac_cv_target +++shift +++target_cpu=$1 +++target_vendor=$2 +++shift; shift +++# Remember, the first character of IFS is used to create $*, +++# except with old shells: +++target_os=$* +++IFS=$ac_save_IFS +++case $target_os in *\ *) target_os=`echo "$target_os" | sed 's/ /-/g'`;; esac +++ +++ +++# The aliases save the names the user supplied, while $host etc. +++# will get canonicalized. +++test -n "$target_alias" && +++ test "$program_prefix$program_suffix$program_transform_name" = \ +++ NONENONEs,x,x, && +++ program_prefix=${target_alias}- +++ +++target_alias=${target_alias-$host_alias} +++ +++ +++ +++# These macro are for supporting canadian crosses, in which build /= +++# host /= target. +++ case ${build_alias} in +++ "") build_noncanonical=${build} ;; +++ *) build_noncanonical=${build_alias} ;; +++esac +++ +++ case ${host_alias} in +++ "") host_noncanonical=${build_noncanonical} ;; +++ *) host_noncanonical=${host_alias} ;; +++esac +++ +++ +++ +++ case ${target_alias} in +++ "") target_noncanonical=${host_noncanonical} ;; +++ *) target_noncanonical=${target_alias} ;; +++esac +++ +++ +++ +++ +++# post-stage1 host modules use a different CC_FOR_BUILD so, in order to +++# have matching libraries, they should use host libraries: Makefile.tpl +++# arranges to pass --with-build-libsubdir=$(HOST_SUBDIR). +++# However, they still use the build modules, because the corresponding +++# host modules (e.g. bison) are only built for the host when bootstrap +++# finishes. So: +++# - build_subdir is where we find build modules, and never changes. +++# - build_libsubdir is where we find build libraries, and can be overridden. +++ +++# Prefix 'build-' so this never conflicts with target_subdir. +++build_subdir="build-${build_noncanonical}" +++ +++# Check whether --with-build-libsubdir was given. +++if test "${with_build_libsubdir+set}" = set; then : +++ withval=$with_build_libsubdir; build_libsubdir="$withval" +++else +++ build_libsubdir="$build_subdir" +++fi +++ +++# --srcdir=. covers the toplevel, while "test -d" covers the subdirectories +++if ( test $srcdir = . && test -d gcc ) \ +++ || test -d $srcdir/../host-${host_noncanonical}; then +++ host_subdir="host-${host_noncanonical}" +++else +++ host_subdir=. +++fi +++# No prefix. +++target_subdir=${target_noncanonical} +++ +++ +++# Initialize Automake with proper options. +++am__api_version='1.15' +++ +++# Find a good install program. We prefer a C program (faster), +++# so one script is as good as another. But avoid the broken or +++# incompatible versions: +++# SysV /etc/install, /usr/sbin/install +++# SunOS /usr/etc/install +++# IRIX /sbin/install +++# AIX /bin/install +++# AmigaOS /C/install, which installs bootblocks on floppy discs +++# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +++# AFS /usr/afsws/bin/install, which mishandles nonexistent args +++# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +++# OS/2's system install, which has a completely different semantic +++# ./install, which can be erroneously created by make from ./install.sh. +++# Reject install programs that cannot install multiple files. +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +++$as_echo_n "checking for a BSD-compatible install... " >&6; } +++if test -z "$INSTALL"; then +++if ${ac_cv_path_install+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ # Account for people who put trailing slashes in PATH elements. +++case $as_dir/ in #(( +++ ./ | .// | /[cC]/* | \ +++ /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ +++ ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ +++ /usr/ucb/* ) ;; +++ *) +++ # OSF1 and SCO ODT 3.0 have their own names for install. +++ # Don't use installbsd from OSF since it installs stuff as root +++ # by default. +++ for ac_prog in ginstall scoinst install; do +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then +++ if test $ac_prog = install && +++ grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +++ # AIX install. It has an incompatible calling convention. +++ : +++ elif test $ac_prog = install && +++ grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then +++ # program-specific install script used by HP pwplus--don't use. +++ : +++ else +++ rm -rf conftest.one conftest.two conftest.dir +++ echo one > conftest.one +++ echo two > conftest.two +++ mkdir conftest.dir +++ if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && +++ test -s conftest.one && test -s conftest.two && +++ test -s conftest.dir/conftest.one && +++ test -s conftest.dir/conftest.two +++ then +++ ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" +++ break 3 +++ fi +++ fi +++ fi +++ done +++ done +++ ;; +++esac +++ +++ done +++IFS=$as_save_IFS +++ +++rm -rf conftest.one conftest.two conftest.dir +++ +++fi +++ if test "${ac_cv_path_install+set}" = set; then +++ INSTALL=$ac_cv_path_install +++ else +++ # As a last resort, use the slow shell script. Don't cache a +++ # value for INSTALL within a source directory, because that will +++ # break other packages using the cache if that directory is +++ # removed, or if the value is a relative name. +++ INSTALL=$ac_install_sh +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +++$as_echo "$INSTALL" >&6; } +++ +++# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +++# It thinks the first close brace ends the variable substitution. +++test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' +++ +++test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' +++ +++test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +++$as_echo_n "checking whether build environment is sane... " >&6; } +++# Reject unsafe characters in $srcdir or the absolute working directory +++# name. Accept space and tab only in the latter. +++am_lf=' +++' +++case `pwd` in +++ *[\\\"\#\$\&\'\`$am_lf]*) +++ as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +++esac +++case $srcdir in +++ *[\\\"\#\$\&\'\`$am_lf\ \ ]*) +++ as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +++esac +++ +++# Do 'set' in a subshell so we don't clobber the current shell's +++# arguments. Must try -L first in case configure is actually a +++# symlink; some systems play weird games with the mod time of symlinks +++# (eg FreeBSD returns the mod time of the symlink's containing +++# directory). +++if ( +++ am_has_slept=no +++ for am_try in 1 2; do +++ echo "timestamp, slept: $am_has_slept" > conftest.file +++ set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` +++ if test "$*" = "X"; then +++ # -L didn't work. +++ set X `ls -t "$srcdir/configure" conftest.file` +++ fi +++ if test "$*" != "X $srcdir/configure conftest.file" \ +++ && test "$*" != "X conftest.file $srcdir/configure"; then +++ +++ # If neither matched, then we have a broken ls. This can happen +++ # if, for instance, CONFIG_SHELL is bash and it inherits a +++ # broken ls alias from the environment. This has actually +++ # happened. Such a system could not be considered "sane". +++ as_fn_error $? "ls -t appears to fail. Make sure there is not a broken +++ alias in your environment" "$LINENO" 5 +++ fi +++ if test "$2" = conftest.file || test $am_try -eq 2; then +++ break +++ fi +++ # Just in case. +++ sleep 1 +++ am_has_slept=yes +++ done +++ test "$2" = conftest.file +++ ) +++then +++ # Ok. +++ : +++else +++ as_fn_error $? "newly created file is older than distributed files! +++Check your system clock" "$LINENO" 5 +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +++$as_echo "yes" >&6; } +++# If we didn't sleep, we still need to ensure time stamps of config.status and +++# generated files are strictly newer. +++am_sleep_pid= +++if grep 'slept: no' conftest.file >/dev/null 2>&1; then +++ ( sleep 1 ) & +++ am_sleep_pid=$! +++fi +++ +++rm -f conftest.file +++ +++test "$program_prefix" != NONE && +++ program_transform_name="s&^&$program_prefix&;$program_transform_name" +++# Use a double $ so make ignores it. +++test "$program_suffix" != NONE && +++ program_transform_name="s&\$&$program_suffix&;$program_transform_name" +++# Double any \ or $. +++# By default was `s,x,x', remove it if useless. +++ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +++program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` +++ +++if test x"${MISSING+set}" != xset; then +++ case $am_aux_dir in +++ *\ * | *\ *) +++ MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; +++ *) +++ MISSING="\${SHELL} $am_aux_dir/missing" ;; +++ esac +++fi +++# Use eval to expand $SHELL +++if eval "$MISSING --is-lightweight"; then +++ am_missing_run="$MISSING " +++else +++ am_missing_run= +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +++$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +++fi +++ +++if test x"${install_sh+set}" != xset; then +++ case $am_aux_dir in +++ *\ * | *\ *) +++ install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; +++ *) +++ install_sh="\${SHELL} $am_aux_dir/install-sh" +++ esac +++fi +++ +++# Installed binaries are usually stripped using 'strip' when the user +++# run "make install-strip". However 'strip' might not be the right +++# tool to use in cross-compilation environments, therefore Automake +++# will honor the 'STRIP' environment variable to overrule this program. +++if test "$cross_compiling" != no; then +++ if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +++set dummy ${ac_tool_prefix}strip; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_STRIP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$STRIP"; then +++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++STRIP=$ac_cv_prog_STRIP +++if test -n "$STRIP"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +++$as_echo "$STRIP" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_STRIP"; then +++ ac_ct_STRIP=$STRIP +++ # Extract the first word of "strip", so it can be a program name with args. +++set dummy strip; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_STRIP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_STRIP"; then +++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_STRIP="strip" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +++if test -n "$ac_ct_STRIP"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +++$as_echo "$ac_ct_STRIP" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_STRIP" = x; then +++ STRIP=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ STRIP=$ac_ct_STRIP +++ fi +++else +++ STRIP="$ac_cv_prog_STRIP" +++fi +++ +++fi +++INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +++$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +++if test -z "$MKDIR_P"; then +++ if ${ac_cv_path_mkdir+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_prog in mkdir gmkdir; do +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue +++ case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( +++ 'mkdir (GNU coreutils) '* | \ +++ 'mkdir (coreutils) '* | \ +++ 'mkdir (fileutils) '4.1*) +++ ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext +++ break 3;; +++ esac +++ done +++ done +++ done +++IFS=$as_save_IFS +++ +++fi +++ +++ test -d ./--version && rmdir ./--version +++ if test "${ac_cv_path_mkdir+set}" = set; then +++ MKDIR_P="$ac_cv_path_mkdir -p" +++ else +++ # As a last resort, use the slow shell script. Don't cache a +++ # value for MKDIR_P within a source directory, because that will +++ # break other packages using the cache if that directory is +++ # removed, or if the value is a relative name. +++ MKDIR_P="$ac_install_sh -d" +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +++$as_echo "$MKDIR_P" >&6; } +++ +++for ac_prog in gawk mawk nawk awk +++do +++ # Extract the first word of "$ac_prog", so it can be a program name with args. +++set dummy $ac_prog; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_AWK+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$AWK"; then +++ ac_cv_prog_AWK="$AWK" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_AWK="$ac_prog" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++AWK=$ac_cv_prog_AWK +++if test -n "$AWK"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +++$as_echo "$AWK" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ test -n "$AWK" && break +++done +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +++$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +++set x ${MAKE-make} +++ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +++if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat >conftest.make <<\_ACEOF +++SHELL = /bin/sh +++all: +++ @echo '@@@%%%=$(MAKE)=@@@%%%' +++_ACEOF +++# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +++case `${MAKE-make} -f conftest.make 2>/dev/null` in +++ *@@@%%%=?*=@@@%%%*) +++ eval ac_cv_prog_make_${ac_make}_set=yes;; +++ *) +++ eval ac_cv_prog_make_${ac_make}_set=no;; +++esac +++rm -f conftest.make +++fi +++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +++$as_echo "yes" >&6; } +++ SET_MAKE= +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++ SET_MAKE="MAKE=${MAKE-make}" +++fi +++ +++rm -rf .tst 2>/dev/null +++mkdir .tst 2>/dev/null +++if test -d .tst; then +++ am__leading_dot=. +++else +++ am__leading_dot=_ +++fi +++rmdir .tst 2>/dev/null +++ +++DEPDIR="${am__leading_dot}deps" +++ +++ac_config_commands="$ac_config_commands depfiles" +++ +++ +++am_make=${MAKE-make} +++cat > confinc << 'END' +++am__doit: +++ @echo this is the am__doit target +++.PHONY: am__doit +++END +++# If we don't find an include directive, just comment out the code. +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +++$as_echo_n "checking for style of include used by $am_make... " >&6; } +++am__include="#" +++am__quote= +++_am_result=none +++# First try GNU make style include. +++echo "include confinc" > confmf +++# Ignore all kinds of additional output from 'make'. +++case `$am_make -s -f confmf 2> /dev/null` in #( +++*the\ am__doit\ target*) +++ am__include=include +++ am__quote= +++ _am_result=GNU +++ ;; +++esac +++# Now try BSD make style include. +++if test "$am__include" = "#"; then +++ echo '.include "confinc"' > confmf +++ case `$am_make -s -f confmf 2> /dev/null` in #( +++ *the\ am__doit\ target*) +++ am__include=.include +++ am__quote="\"" +++ _am_result=BSD +++ ;; +++ esac +++fi +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +++$as_echo "$_am_result" >&6; } +++rm -f confinc confmf +++ +++# Check whether --enable-dependency-tracking was given. +++if test "${enable_dependency_tracking+set}" = set; then : +++ enableval=$enable_dependency_tracking; +++fi +++ +++if test "x$enable_dependency_tracking" != xno; then +++ am_depcomp="$ac_aux_dir/depcomp" +++ AMDEPBACKSLASH='\' +++ am__nodep='_no' +++fi +++ if test "x$enable_dependency_tracking" != xno; then +++ AMDEP_TRUE= +++ AMDEP_FALSE='#' +++else +++ AMDEP_TRUE='#' +++ AMDEP_FALSE= +++fi +++ +++ +++# Check whether --enable-silent-rules was given. +++if test "${enable_silent_rules+set}" = set; then : +++ enableval=$enable_silent_rules; +++fi +++ +++case $enable_silent_rules in # ((( +++ yes) AM_DEFAULT_VERBOSITY=0;; +++ no) AM_DEFAULT_VERBOSITY=1;; +++ *) AM_DEFAULT_VERBOSITY=1;; +++esac +++am_make=${MAKE-make} +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +++$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +++if ${am_cv_make_support_nested_variables+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if $as_echo 'TRUE=$(BAR$(V)) +++BAR0=false +++BAR1=true +++V=1 +++am__doit: +++ @$(TRUE) +++.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then +++ am_cv_make_support_nested_variables=yes +++else +++ am_cv_make_support_nested_variables=no +++fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +++$as_echo "$am_cv_make_support_nested_variables" >&6; } +++if test $am_cv_make_support_nested_variables = yes; then +++ AM_V='$(V)' +++ AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +++else +++ AM_V=$AM_DEFAULT_VERBOSITY +++ AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +++fi +++AM_BACKSLASH='\' +++ +++if test "`cd $srcdir && pwd`" != "`pwd`"; then +++ # Use -I$(srcdir) only when $(srcdir) != ., so that make's output +++ # is not polluted with repeated "-I." +++ am__isrc=' -I$(srcdir)' +++ # test to see if srcdir already configured +++ if test -f $srcdir/config.status; then +++ as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 +++ fi +++fi +++ +++# test whether we have cygpath +++if test -z "$CYGPATH_W"; then +++ if (cygpath --version) >/dev/null 2>/dev/null; then +++ CYGPATH_W='cygpath -w' +++ else +++ CYGPATH_W=echo +++ fi +++fi +++ +++ +++# Define the identity of the package. +++ PACKAGE='libga68' +++ VERSION='version-unused' +++ +++ +++# Some tools Automake needs. +++ +++ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} +++ +++ +++AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} +++ +++ +++AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} +++ +++ +++AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} +++ +++ +++MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} +++ +++# For better backward compatibility. To be removed once Automake 1.9.x +++# dies out for good. For more background, see: +++# +++# +++mkdir_p='$(MKDIR_P)' +++ +++# We need awk for the "check" target (and possibly the TAP driver). The +++# system "awk" is bad on some platforms. +++# Always define AMTAR for backward compatibility. Yes, it's still used +++# in the wild :-( We should find a proper way to deprecate it ... +++AMTAR='$${TAR-tar}' +++ +++ +++# We'll loop over all known methods to create a tar archive until one works. +++_am_tools='gnutar pax cpio none' +++ +++am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' +++ +++ +++ +++ +++ +++depcc="$CC" am_compiler_list= +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +++$as_echo_n "checking dependency style of $depcc... " >&6; } +++if ${am_cv_CC_dependencies_compiler_type+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +++ # We make a subdir and do the tests there. Otherwise we can end up +++ # making bogus files that we don't know about and never remove. For +++ # instance it was reported that on HP-UX the gcc test will end up +++ # making a dummy file named 'D' -- because '-MD' means "put the output +++ # in D". +++ rm -rf conftest.dir +++ mkdir conftest.dir +++ # Copy depcomp to subdir because otherwise we won't find it if we're +++ # using a relative directory. +++ cp "$am_depcomp" conftest.dir +++ cd conftest.dir +++ # We will build objects and dependencies in a subdirectory because +++ # it helps to detect inapplicable dependency modes. For instance +++ # both Tru64's cc and ICC support -MD to output dependencies as a +++ # side effect of compilation, but ICC will put the dependencies in +++ # the current directory while Tru64 will put them in the object +++ # directory. +++ mkdir sub +++ +++ am_cv_CC_dependencies_compiler_type=none +++ if test "$am_compiler_list" = ""; then +++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` +++ fi +++ am__universal=false +++ case " $depcc " in #( +++ *\ -arch\ *\ -arch\ *) am__universal=true ;; +++ esac +++ +++ for depmode in $am_compiler_list; do +++ # Setup a source with many dependencies, because some compilers +++ # like to wrap large dependency lists on column 80 (with \), and +++ # we should not choose a depcomp mode which is confused by this. +++ # +++ # We need to recreate these files for each test, as the compiler may +++ # overwrite some of them when testing with obscure command lines. +++ # This happens at least with the AIX C compiler. +++ : > sub/conftest.c +++ for i in 1 2 3 4 5 6; do +++ echo '#include "conftst'$i'.h"' >> sub/conftest.c +++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with +++ # Solaris 10 /bin/sh. +++ echo '/* dummy */' > sub/conftst$i.h +++ done +++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +++ +++ # We check with '-c' and '-o' for the sake of the "dashmstdout" +++ # mode. It turns out that the SunPro C++ compiler does not properly +++ # handle '-M -o', and we need to detect this. Also, some Intel +++ # versions had trouble with output in subdirs. +++ am__obj=sub/conftest.${OBJEXT-o} +++ am__minus_obj="-o $am__obj" +++ case $depmode in +++ gcc) +++ # This depmode causes a compiler race in universal mode. +++ test "$am__universal" = false || continue +++ ;; +++ nosideeffect) +++ # After this tag, mechanisms are not by side-effect, so they'll +++ # only be used when explicitly requested. +++ if test "x$enable_dependency_tracking" = xyes; then +++ continue +++ else +++ break +++ fi +++ ;; +++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) +++ # This compiler won't grok '-c -o', but also, the minuso test has +++ # not run yet. These depmodes are late enough in the game, and +++ # so weak that their functioning should not be impacted. +++ am__obj=conftest.${OBJEXT-o} +++ am__minus_obj= +++ ;; +++ none) break ;; +++ esac +++ if depmode=$depmode \ +++ source=sub/conftest.c object=$am__obj \ +++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ +++ >/dev/null 2>conftest.err && +++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && +++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && +++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +++ # icc doesn't choke on unknown options, it will just issue warnings +++ # or remarks (even with -Werror). So we grep stderr for any message +++ # that says an option was ignored or not supported. +++ # When given -MP, icc 7.0 and 7.1 complain thusly: +++ # icc: Command line warning: ignoring option '-M'; no argument required +++ # The diagnosis changed in icc 8.0: +++ # icc: Command line remark: option '-MP' not supported +++ if (grep 'ignoring option' conftest.err || +++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +++ am_cv_CC_dependencies_compiler_type=$depmode +++ break +++ fi +++ fi +++ done +++ +++ cd .. +++ rm -rf conftest.dir +++else +++ am_cv_CC_dependencies_compiler_type=none +++fi +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +++$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +++CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type +++ +++ if +++ test "x$enable_dependency_tracking" != xno \ +++ && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then +++ am__fastdepCC_TRUE= +++ am__fastdepCC_FALSE='#' +++else +++ am__fastdepCC_TRUE='#' +++ am__fastdepCC_FALSE= +++fi +++ +++ +++ +++# POSIX will say in a future version that running "rm -f" with no argument +++# is OK; and we want to be able to make that assumption in our Makefile +++# recipes. So use an aggressive probe to check that the usage we want is +++# actually supported "in the wild" to an acceptable degree. +++# See automake bug#10828. +++# To make any issue more visible, cause the running configure to be aborted +++# by default if the 'rm' program in use doesn't match our expectations; the +++# user can still override this though. +++if rm -f && rm -fr && rm -rf; then : OK; else +++ cat >&2 <<'END' +++Oops! +++ +++Your 'rm' program seems unable to run without file operands specified +++on the command line, even when the '-f' option is present. This is contrary +++to the behaviour of most rm programs out there, and not conforming with +++the upcoming POSIX standard: +++ +++Please tell bug-automake@gnu.org about your system, including the value +++of your $PATH and any error possibly output before this message. This +++can help us improve future automake versions. +++ +++END +++ if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then +++ echo 'Configuration will proceed anyway, since you have set the' >&2 +++ echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 +++ echo >&2 +++ else +++ cat >&2 <<'END' +++Aborting the configuration process, to ensure you take notice of the issue. +++ +++You can download and install GNU coreutils to get an 'rm' implementation +++that behaves properly: . +++ +++If you want to complete the configuration process using your problematic +++'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +++to "yes", and re-run configure. +++ +++END +++ as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 +++ fi +++fi +++ +++ +++# Tell Autoheader to include templates for PACKAGE and VERSION in +++# config.h.in. +++ +++ +++ +++# Command-line options. +++ +++# Enable large-file support. +++# Check whether --enable-largefile was given. +++if test "${enable_largefile+set}" = set; then : +++ enableval=$enable_largefile; +++fi +++ +++if test "$enable_largefile" != no; then +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for special C compiler options needed for large files" >&5 +++$as_echo_n "checking for special C compiler options needed for large files... " >&6; } +++if ${ac_cv_sys_largefile_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_cv_sys_largefile_CC=no +++ if test "$GCC" != yes; then +++ ac_save_CC=$CC +++ while :; do +++ # IRIX 6.2 and later do not support large files by default, +++ # so use the C compiler's -n32 option if that helps. +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++ /* Check that off_t can represent 2**63 - 1 correctly. +++ We can't simply define LARGE_OFF_T to be 9223372036854775807, +++ since some C++ compilers masquerading as C compilers +++ incorrectly reject 9223372036854775807. */ +++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 +++ && LARGE_OFF_T % 2147483647 == 1) +++ ? 1 : -1]; +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++ if ac_fn_c_try_compile "$LINENO"; then : +++ break +++fi +++rm -f core conftest.err conftest.$ac_objext +++ CC="$CC -n32" +++ if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_sys_largefile_CC=' -n32'; break +++fi +++rm -f core conftest.err conftest.$ac_objext +++ break +++ done +++ CC=$ac_save_CC +++ rm -f conftest.$ac_ext +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_largefile_CC" >&5 +++$as_echo "$ac_cv_sys_largefile_CC" >&6; } +++ if test "$ac_cv_sys_largefile_CC" != no; then +++ CC=$CC$ac_cv_sys_largefile_CC +++ fi +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _FILE_OFFSET_BITS value needed for large files" >&5 +++$as_echo_n "checking for _FILE_OFFSET_BITS value needed for large files... " >&6; } +++if ${ac_cv_sys_file_offset_bits+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ while :; do +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++ /* Check that off_t can represent 2**63 - 1 correctly. +++ We can't simply define LARGE_OFF_T to be 9223372036854775807, +++ since some C++ compilers masquerading as C compilers +++ incorrectly reject 9223372036854775807. */ +++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 +++ && LARGE_OFF_T % 2147483647 == 1) +++ ? 1 : -1]; +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_sys_file_offset_bits=no; break +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#define _FILE_OFFSET_BITS 64 +++#include +++ /* Check that off_t can represent 2**63 - 1 correctly. +++ We can't simply define LARGE_OFF_T to be 9223372036854775807, +++ since some C++ compilers masquerading as C compilers +++ incorrectly reject 9223372036854775807. */ +++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 +++ && LARGE_OFF_T % 2147483647 == 1) +++ ? 1 : -1]; +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_sys_file_offset_bits=64; break +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ ac_cv_sys_file_offset_bits=unknown +++ break +++done +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_file_offset_bits" >&5 +++$as_echo "$ac_cv_sys_file_offset_bits" >&6; } +++case $ac_cv_sys_file_offset_bits in #( +++ no | unknown) ;; +++ *) +++cat >>confdefs.h <<_ACEOF +++#define _FILE_OFFSET_BITS $ac_cv_sys_file_offset_bits +++_ACEOF +++;; +++esac +++rm -rf conftest* +++ if test $ac_cv_sys_file_offset_bits = unknown; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for _LARGE_FILES value needed for large files" >&5 +++$as_echo_n "checking for _LARGE_FILES value needed for large files... " >&6; } +++if ${ac_cv_sys_large_files+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ while :; do +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++ /* Check that off_t can represent 2**63 - 1 correctly. +++ We can't simply define LARGE_OFF_T to be 9223372036854775807, +++ since some C++ compilers masquerading as C compilers +++ incorrectly reject 9223372036854775807. */ +++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 +++ && LARGE_OFF_T % 2147483647 == 1) +++ ? 1 : -1]; +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_sys_large_files=no; break +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#define _LARGE_FILES 1 +++#include +++ /* Check that off_t can represent 2**63 - 1 correctly. +++ We can't simply define LARGE_OFF_T to be 9223372036854775807, +++ since some C++ compilers masquerading as C compilers +++ incorrectly reject 9223372036854775807. */ +++#define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62)) +++ int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721 +++ && LARGE_OFF_T % 2147483647 == 1) +++ ? 1 : -1]; +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_sys_large_files=1; break +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ ac_cv_sys_large_files=unknown +++ break +++done +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_sys_large_files" >&5 +++$as_echo "$ac_cv_sys_large_files" >&6; } +++case $ac_cv_sys_large_files in #( +++ no | unknown) ;; +++ *) +++cat >>confdefs.h <<_ACEOF +++#define _LARGE_FILES $ac_cv_sys_large_files +++_ACEOF +++;; +++esac +++rm -rf conftest* +++ fi +++ +++ +++fi +++ +++ +++ +++# Check whether --with-cross-host was given. +++if test "${with_cross_host+set}" = set; then : +++ withval=$with_cross_host; +++fi +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for --enable-version-specific-runtime-libs" >&5 +++$as_echo_n "checking for --enable-version-specific-runtime-libs... " >&6; } +++# Check whether --enable-version-specific-runtime-libs was given. +++if test "${enable_version_specific_runtime_libs+set}" = set; then : +++ enableval=$enable_version_specific_runtime_libs; case "$enableval" in +++ yes) version_specific_libs=yes ;; +++ no) version_specific_libs=no ;; +++ *) as_fn_error $? "Unknown argument to enable/disable version-specific libs" "$LINENO" 5;; +++ esac +++else +++ version_specific_libs=no +++fi +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $version_specific_libs" >&5 +++$as_echo "$version_specific_libs" >&6; } +++ +++ +++# Check whether --with-slibdir was given. +++if test "${with_slibdir+set}" = set; then : +++ withval=$with_slibdir; slibdir="$with_slibdir" +++else +++ if test "${version_specific_libs}" = yes; then +++ slibdir='$(libsubdir)' +++elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then +++ slibdir='$(exec_prefix)/$(host_noncanonical)/lib' +++else +++ slibdir='$(libdir)' +++fi +++fi +++ +++ +++ +++# Calculate toolexeclibdir +++# Also toolexecdir, though it's only used in toolexeclibdir +++toolexecdir=no +++toolexeclibdir=no +++case ${version_specific_libs} in +++ yes) +++ # Need the gcc compiler version to know where to install libraries +++ # and header files if --enable-version-specific-runtime-libs option +++ # is selected. +++ toolexecdir='$(libdir)/gcc/$(target_noncanonical)' +++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' +++ ;; +++ no) +++ if test -n "$with_cross_host" && +++ test x"$with_cross_host" != x"no"; then +++ # Install a library built with a cross compiler in tooldir, not libdir. +++ toolexecdir='$(exec_prefix)/$(target_noncanonical)' +++ toolexeclibdir='$(toolexecdir)/lib' +++ else +++ toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' +++ toolexeclibdir='$(libdir)' +++ fi +++ multi_os_directory=`$CC -print-multi-os-directory` +++ case $multi_os_directory in +++ .) ;; # Avoid trailing /. +++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; +++ esac +++ ;; +++esac +++ +++ +++ +++# Add support for --enable-maintainer-mode={yes,no} to configure. +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to enable maintainer-specific portions of Makefiles" >&5 +++$as_echo_n "checking whether to enable maintainer-specific portions of Makefiles... " >&6; } +++ # Check whether --enable-maintainer-mode was given. +++if test "${enable_maintainer_mode+set}" = set; then : +++ enableval=$enable_maintainer_mode; USE_MAINTAINER_MODE=$enableval +++else +++ USE_MAINTAINER_MODE=no +++fi +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $USE_MAINTAINER_MODE" >&5 +++$as_echo "$USE_MAINTAINER_MODE" >&6; } +++ if test $USE_MAINTAINER_MODE = yes; then +++ MAINTAINER_MODE_TRUE= +++ MAINTAINER_MODE_FALSE='#' +++else +++ MAINTAINER_MODE_TRUE='#' +++ MAINTAINER_MODE_FALSE= +++fi +++ +++ MAINT=$MAINTAINER_MODE_TRUE +++ +++ +++ +++# We must force CC to /not/ be precious variables; otherwise +++# the wrong, non-multilib-adjusted value will be used in multilibs. +++# As a side effect, we have to subst CFLAGS ourselves. +++ +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}gcc", so it can be a program name with args. +++set dummy ${ac_tool_prefix}gcc; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$CC"; then +++ ac_cv_prog_CC="$CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_CC="${ac_tool_prefix}gcc" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++CC=$ac_cv_prog_CC +++if test -n "$CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +++$as_echo "$CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_CC"; then +++ ac_ct_CC=$CC +++ # Extract the first word of "gcc", so it can be a program name with args. +++set dummy gcc; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_CC"; then +++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_CC="gcc" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_CC=$ac_cv_prog_ac_ct_CC +++if test -n "$ac_ct_CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +++$as_echo "$ac_ct_CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_CC" = x; then +++ CC="" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ CC=$ac_ct_CC +++ fi +++else +++ CC="$ac_cv_prog_CC" +++fi +++ +++if test -z "$CC"; then +++ if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}cc", so it can be a program name with args. +++set dummy ${ac_tool_prefix}cc; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$CC"; then +++ ac_cv_prog_CC="$CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_CC="${ac_tool_prefix}cc" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++CC=$ac_cv_prog_CC +++if test -n "$CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +++$as_echo "$CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ fi +++fi +++if test -z "$CC"; then +++ # Extract the first word of "cc", so it can be a program name with args. +++set dummy cc; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$CC"; then +++ ac_cv_prog_CC="$CC" # Let the user override the test. +++else +++ ac_prog_rejected=no +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then +++ ac_prog_rejected=yes +++ continue +++ fi +++ ac_cv_prog_CC="cc" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++if test $ac_prog_rejected = yes; then +++ # We found a bogon in the path, so make sure we never use it. +++ set dummy $ac_cv_prog_CC +++ shift +++ if test $# != 0; then +++ # We chose a different compiler from the bogus one. +++ # However, it has the same basename, so the bogon will be chosen +++ # first if we set CC to just the basename; use the full file name. +++ shift +++ ac_cv_prog_CC="$as_dir/$ac_word${1+' '}$@" +++ fi +++fi +++fi +++fi +++CC=$ac_cv_prog_CC +++if test -n "$CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +++$as_echo "$CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$CC"; then +++ if test -n "$ac_tool_prefix"; then +++ for ac_prog in cl.exe +++ do +++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$CC"; then +++ ac_cv_prog_CC="$CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_CC="$ac_tool_prefix$ac_prog" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++CC=$ac_cv_prog_CC +++if test -n "$CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +++$as_echo "$CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ test -n "$CC" && break +++ done +++fi +++if test -z "$CC"; then +++ ac_ct_CC=$CC +++ for ac_prog in cl.exe +++do +++ # Extract the first word of "$ac_prog", so it can be a program name with args. +++set dummy $ac_prog; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_CC+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_CC"; then +++ ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_CC="$ac_prog" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_CC=$ac_cv_prog_ac_ct_CC +++if test -n "$ac_ct_CC"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +++$as_echo "$ac_ct_CC" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ test -n "$ac_ct_CC" && break +++done +++ +++ if test "x$ac_ct_CC" = x; then +++ CC="" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ CC=$ac_ct_CC +++ fi +++fi +++ +++fi +++ +++ +++test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +++$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +++as_fn_error $? "no acceptable C compiler found in \$PATH +++See \`config.log' for more details" "$LINENO" 5; } +++ +++# Provide some information about the compiler. +++$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +++set X $ac_compile +++ac_compiler=$2 +++for ac_option in --version -v -V -qversion; do +++ { { ac_try="$ac_compiler $ac_option >&5" +++case "(($ac_try" in +++ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; +++ *) ac_try_echo=$ac_try;; +++esac +++eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +++$as_echo "$ac_try_echo"; } >&5 +++ (eval "$ac_compiler $ac_option >&5") 2>conftest.err +++ ac_status=$? +++ if test -s conftest.err; then +++ sed '10a\ +++... rest of stderr output deleted ... +++ 10q' conftest.err >conftest.er1 +++ cat conftest.er1 >&5 +++ fi +++ rm -f conftest.er1 conftest.err +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } +++done +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +++$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +++if ${ac_cv_c_compiler_gnu+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++#ifndef __GNUC__ +++ choke me +++#endif +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_compiler_gnu=yes +++else +++ ac_compiler_gnu=no +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ac_cv_c_compiler_gnu=$ac_compiler_gnu +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +++$as_echo "$ac_cv_c_compiler_gnu" >&6; } +++if test $ac_compiler_gnu = yes; then +++ GCC=yes +++else +++ GCC= +++fi +++ac_test_CFLAGS=${CFLAGS+set} +++ac_save_CFLAGS=$CFLAGS +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +++$as_echo_n "checking whether $CC accepts -g... " >&6; } +++if ${ac_cv_prog_cc_g+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_save_c_werror_flag=$ac_c_werror_flag +++ ac_c_werror_flag=yes +++ ac_cv_prog_cc_g=no +++ CFLAGS="-g" +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_prog_cc_g=yes +++else +++ CFLAGS="" +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ +++else +++ ac_c_werror_flag=$ac_save_c_werror_flag +++ CFLAGS="-g" +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_prog_cc_g=yes +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++fi +++rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +++ ac_c_werror_flag=$ac_save_c_werror_flag +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +++$as_echo "$ac_cv_prog_cc_g" >&6; } +++if test "$ac_test_CFLAGS" = set; then +++ CFLAGS=$ac_save_CFLAGS +++elif test $ac_cv_prog_cc_g = yes; then +++ if test "$GCC" = yes; then +++ CFLAGS="-g -O2" +++ else +++ CFLAGS="-g" +++ fi +++else +++ if test "$GCC" = yes; then +++ CFLAGS="-O2" +++ else +++ CFLAGS= +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +++$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +++if ${ac_cv_prog_cc_c89+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_cv_prog_cc_c89=no +++ac_save_CC=$CC +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++#include +++struct stat; +++/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +++struct buf { int x; }; +++FILE * (*rcsopen) (struct buf *, struct stat *, int); +++static char *e (p, i) +++ char **p; +++ int i; +++{ +++ return p[i]; +++} +++static char *f (char * (*g) (char **, int), char **p, ...) +++{ +++ char *s; +++ va_list v; +++ va_start (v,p); +++ s = g (p, va_arg (v,int)); +++ va_end (v); +++ return s; +++} +++ +++/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has +++ function prototypes and stuff, but not '\xHH' hex character constants. +++ These don't provoke an error unfortunately, instead are silently treated +++ as 'x'. The following induces an error, until -std is added to get +++ proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an +++ array size at least. It's necessary to write '\x00'==0 to get something +++ that's true only with -std. */ +++int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +++ +++/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters +++ inside strings and character constants. */ +++#define FOO(x) 'x' +++int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; +++ +++int test (int i, double x); +++struct s1 {int (*f) (int a);}; +++struct s2 {int (*f) (double a);}; +++int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +++int argc; +++char **argv; +++int +++main () +++{ +++return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; +++ ; +++ return 0; +++} +++_ACEOF +++for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ +++ -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +++do +++ CC="$ac_save_CC $ac_arg" +++ if ac_fn_c_try_compile "$LINENO"; then : +++ ac_cv_prog_cc_c89=$ac_arg +++fi +++rm -f core conftest.err conftest.$ac_objext +++ test "x$ac_cv_prog_cc_c89" != "xno" && break +++done +++rm -f conftest.$ac_ext +++CC=$ac_save_CC +++ +++fi +++# AC_CACHE_VAL +++case "x$ac_cv_prog_cc_c89" in +++ x) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +++$as_echo "none needed" >&6; } ;; +++ xno) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +++$as_echo "unsupported" >&6; } ;; +++ *) +++ CC="$CC $ac_cv_prog_cc_c89" +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +++$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +++esac +++if test "x$ac_cv_prog_cc_c89" != xno; then : +++ +++fi +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +++$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +++if ${am_cv_prog_cc_c_o+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++ # Make sure it works both with $CC and with simple cc. +++ # Following AC_PROG_CC_C_O, we do the test twice because some +++ # compilers refuse to overwrite an existing .o file with -o, +++ # though they will create one. +++ am_cv_prog_cc_c_o=yes +++ for am_i in 1 2; do +++ if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 +++ ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 +++ ac_status=$? +++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 +++ (exit $ac_status); } \ +++ && test -f conftest2.$ac_objext; then +++ : OK +++ else +++ am_cv_prog_cc_c_o=no +++ break +++ fi +++ done +++ rm -f core conftest* +++ unset am_i +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +++$as_echo "$am_cv_prog_cc_c_o" >&6; } +++if test "$am_cv_prog_cc_c_o" != yes; then +++ # Losing compiler, so override with the script. +++ # FIXME: It is wrong to rewrite CC. +++ # But if we don't then we get into trouble of one sort or another. +++ # A longer-term fix would be to have automake use am__CC in this case, +++ # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" +++ CC="$am_aux_dir/compile $CC" +++fi +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ +++# By default we simply use the C compiler to build assembly code. +++ +++test "${CCAS+set}" = set || CCAS=$CC +++test "${CCASFLAGS+set}" = set || CCASFLAGS=$CFLAGS +++ +++ +++ +++depcc="$CCAS" am_compiler_list= +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +++$as_echo_n "checking dependency style of $depcc... " >&6; } +++if ${am_cv_CCAS_dependencies_compiler_type+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then +++ # We make a subdir and do the tests there. Otherwise we can end up +++ # making bogus files that we don't know about and never remove. For +++ # instance it was reported that on HP-UX the gcc test will end up +++ # making a dummy file named 'D' -- because '-MD' means "put the output +++ # in D". +++ rm -rf conftest.dir +++ mkdir conftest.dir +++ # Copy depcomp to subdir because otherwise we won't find it if we're +++ # using a relative directory. +++ cp "$am_depcomp" conftest.dir +++ cd conftest.dir +++ # We will build objects and dependencies in a subdirectory because +++ # it helps to detect inapplicable dependency modes. For instance +++ # both Tru64's cc and ICC support -MD to output dependencies as a +++ # side effect of compilation, but ICC will put the dependencies in +++ # the current directory while Tru64 will put them in the object +++ # directory. +++ mkdir sub +++ +++ am_cv_CCAS_dependencies_compiler_type=none +++ if test "$am_compiler_list" = ""; then +++ am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` +++ fi +++ am__universal=false +++ +++ +++ for depmode in $am_compiler_list; do +++ # Setup a source with many dependencies, because some compilers +++ # like to wrap large dependency lists on column 80 (with \), and +++ # we should not choose a depcomp mode which is confused by this. +++ # +++ # We need to recreate these files for each test, as the compiler may +++ # overwrite some of them when testing with obscure command lines. +++ # This happens at least with the AIX C compiler. +++ : > sub/conftest.c +++ for i in 1 2 3 4 5 6; do +++ echo '#include "conftst'$i'.h"' >> sub/conftest.c +++ # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with +++ # Solaris 10 /bin/sh. +++ echo '/* dummy */' > sub/conftst$i.h +++ done +++ echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf +++ +++ # We check with '-c' and '-o' for the sake of the "dashmstdout" +++ # mode. It turns out that the SunPro C++ compiler does not properly +++ # handle '-M -o', and we need to detect this. Also, some Intel +++ # versions had trouble with output in subdirs. +++ am__obj=sub/conftest.${OBJEXT-o} +++ am__minus_obj="-o $am__obj" +++ case $depmode in +++ gcc) +++ # This depmode causes a compiler race in universal mode. +++ test "$am__universal" = false || continue +++ ;; +++ nosideeffect) +++ # After this tag, mechanisms are not by side-effect, so they'll +++ # only be used when explicitly requested. +++ if test "x$enable_dependency_tracking" = xyes; then +++ continue +++ else +++ break +++ fi +++ ;; +++ msvc7 | msvc7msys | msvisualcpp | msvcmsys) +++ # This compiler won't grok '-c -o', but also, the minuso test has +++ # not run yet. These depmodes are late enough in the game, and +++ # so weak that their functioning should not be impacted. +++ am__obj=conftest.${OBJEXT-o} +++ am__minus_obj= +++ ;; +++ none) break ;; +++ esac +++ if depmode=$depmode \ +++ source=sub/conftest.c object=$am__obj \ +++ depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ +++ $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ +++ >/dev/null 2>conftest.err && +++ grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && +++ grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && +++ grep $am__obj sub/conftest.Po > /dev/null 2>&1 && +++ ${MAKE-make} -s -f confmf > /dev/null 2>&1; then +++ # icc doesn't choke on unknown options, it will just issue warnings +++ # or remarks (even with -Werror). So we grep stderr for any message +++ # that says an option was ignored or not supported. +++ # When given -MP, icc 7.0 and 7.1 complain thusly: +++ # icc: Command line warning: ignoring option '-M'; no argument required +++ # The diagnosis changed in icc 8.0: +++ # icc: Command line remark: option '-MP' not supported +++ if (grep 'ignoring option' conftest.err || +++ grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else +++ am_cv_CCAS_dependencies_compiler_type=$depmode +++ break +++ fi +++ fi +++ done +++ +++ cd .. +++ rm -rf conftest.dir +++else +++ am_cv_CCAS_dependencies_compiler_type=none +++fi +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CCAS_dependencies_compiler_type" >&5 +++$as_echo "$am_cv_CCAS_dependencies_compiler_type" >&6; } +++CCASDEPMODE=depmode=$am_cv_CCAS_dependencies_compiler_type +++ +++ if +++ test "x$enable_dependency_tracking" != xno \ +++ && test "$am_cv_CCAS_dependencies_compiler_type" = gcc3; then +++ am__fastdepCCAS_TRUE= +++ am__fastdepCCAS_FALSE='#' +++else +++ am__fastdepCCAS_TRUE='#' +++ am__fastdepCCAS_FALSE= +++fi +++ +++ +++ +++ +++ +++# In order to override CFLAGS_FOR_TARGET, all of our special flags go +++# in XCFLAGS. But we need them in CFLAGS during configury. So put them +++# in both places for now and restore CFLAGS at the end of config. +++save_CFLAGS="$CFLAGS" +++ +++# Find other programs we need. +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +++set dummy ${ac_tool_prefix}ar; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_AR+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$AR"; then +++ ac_cv_prog_AR="$AR" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_AR="${ac_tool_prefix}ar" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++AR=$ac_cv_prog_AR +++if test -n "$AR"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +++$as_echo "$AR" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_AR"; then +++ ac_ct_AR=$AR +++ # Extract the first word of "ar", so it can be a program name with args. +++set dummy ar; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_AR+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_AR"; then +++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_AR="ar" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_AR=$ac_cv_prog_ac_ct_AR +++if test -n "$ac_ct_AR"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +++$as_echo "$ac_ct_AR" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_AR" = x; then +++ AR="" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ AR=$ac_ct_AR +++ fi +++else +++ AR="$ac_cv_prog_AR" +++fi +++ +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}nm", so it can be a program name with args. +++set dummy ${ac_tool_prefix}nm; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_NM+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$NM"; then +++ ac_cv_prog_NM="$NM" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_NM="${ac_tool_prefix}nm" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++NM=$ac_cv_prog_NM +++if test -n "$NM"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NM" >&5 +++$as_echo "$NM" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_NM"; then +++ ac_ct_NM=$NM +++ # Extract the first word of "nm", so it can be a program name with args. +++set dummy nm; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_NM+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_NM"; then +++ ac_cv_prog_ac_ct_NM="$ac_ct_NM" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_NM="nm" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_NM=$ac_cv_prog_ac_ct_NM +++if test -n "$ac_ct_NM"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NM" >&5 +++$as_echo "$ac_ct_NM" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_NM" = x; then +++ NM="" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ NM=$ac_ct_NM +++ fi +++else +++ NM="$ac_cv_prog_NM" +++fi +++ +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_RANLIB+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$RANLIB"; then +++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++RANLIB=$ac_cv_prog_RANLIB +++if test -n "$RANLIB"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +++$as_echo "$RANLIB" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_RANLIB"; then +++ ac_ct_RANLIB=$RANLIB +++ # Extract the first word of "ranlib", so it can be a program name with args. +++set dummy ranlib; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_RANLIB"; then +++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_RANLIB="ranlib" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +++if test -n "$ac_ct_RANLIB"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +++$as_echo "$ac_ct_RANLIB" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_RANLIB" = x; then +++ RANLIB="ranlib-not-found-in-path-error" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ RANLIB=$ac_ct_RANLIB +++ fi +++else +++ RANLIB="$ac_cv_prog_RANLIB" +++fi +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +++$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +++set x ${MAKE-make} +++ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +++if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ cat >conftest.make <<\_ACEOF +++SHELL = /bin/sh +++all: +++ @echo '@@@%%%=$(MAKE)=@@@%%%' +++_ACEOF +++# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +++case `${MAKE-make} -f conftest.make 2>/dev/null` in +++ *@@@%%%=?*=@@@%%%*) +++ eval ac_cv_prog_make_${ac_make}_set=yes;; +++ *) +++ eval ac_cv_prog_make_${ac_make}_set=no;; +++esac +++rm -f conftest.make +++fi +++if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +++$as_echo "yes" >&6; } +++ SET_MAKE= +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++ SET_MAKE="MAKE=${MAKE-make}" +++fi +++ +++ +++ +++# Initialize libtool. +++case `pwd` in +++ *\ * | *\ *) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&5 +++$as_echo "$as_me: WARNING: Libtool does not cope well with whitespace in \`pwd\`" >&2;} ;; +++esac +++ +++ +++ +++macro_version='2.2.7a' +++macro_revision='1.3134' +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ltmain="$ac_aux_dir/ltmain.sh" +++ +++# Backslashify metacharacters that are still active within +++# double-quoted strings. +++sed_quote_subst='s/\(["`$\\]\)/\\\1/g' +++ +++# Same as above, but do not quote variable references. +++double_quote_subst='s/\(["`\\]\)/\\\1/g' +++ +++# Sed substitution to delay expansion of an escaped shell variable in a +++# double_quote_subst'ed string. +++delay_variable_subst='s/\\\\\\\\\\\$/\\\\\\$/g' +++ +++# Sed substitution to delay expansion of an escaped single quote. +++delay_single_quote_subst='s/'\''/'\'\\\\\\\'\''/g' +++ +++# Sed substitution to avoid accidental globbing in evaled expressions +++no_glob_subst='s/\*/\\\*/g' +++ +++ECHO='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO +++ECHO=$ECHO$ECHO$ECHO$ECHO$ECHO$ECHO +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to print strings" >&5 +++$as_echo_n "checking how to print strings... " >&6; } +++# Test print first, because it will be a builtin if present. +++if test "X`print -r -- -n 2>/dev/null`" = X-n && \ +++ test "X`print -r -- $ECHO 2>/dev/null`" = "X$ECHO"; then +++ ECHO='print -r --' +++elif test "X`printf %s $ECHO 2>/dev/null`" = "X$ECHO"; then +++ ECHO='printf %s\n' +++else +++ # Use this function as a fallback that always works. +++ func_fallback_echo () +++ { +++ eval 'cat <<_LTECHO_EOF +++$1 +++_LTECHO_EOF' +++ } +++ ECHO='func_fallback_echo' +++fi +++ +++# func_echo_all arg... +++# Invoke $ECHO with all args, space-separated. +++func_echo_all () +++{ +++ $ECHO "" +++} +++ +++case "$ECHO" in +++ printf*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: printf" >&5 +++$as_echo "printf" >&6; } ;; +++ print*) { $as_echo "$as_me:${as_lineno-$LINENO}: result: print -r" >&5 +++$as_echo "print -r" >&6; } ;; +++ *) { $as_echo "$as_me:${as_lineno-$LINENO}: result: cat" >&5 +++$as_echo "cat" >&6; } ;; +++esac +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a sed that does not truncate output" >&5 +++$as_echo_n "checking for a sed that does not truncate output... " >&6; } +++if ${ac_cv_path_SED+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_script=s/aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb/ +++ for ac_i in 1 2 3 4 5 6 7; do +++ ac_script="$ac_script$as_nl$ac_script" +++ done +++ echo "$ac_script" 2>/dev/null | sed 99q >conftest.sed +++ { ac_script=; unset ac_script;} +++ if test -z "$SED"; then +++ ac_path_SED_found=false +++ # Loop through the user's path and test for each of PROGNAME-LIST +++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_prog in sed gsed; do +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ ac_path_SED="$as_dir/$ac_prog$ac_exec_ext" +++ as_fn_executable_p "$ac_path_SED" || continue +++# Check for GNU ac_path_SED and select it if it is found. +++ # Check for GNU $ac_path_SED +++case `"$ac_path_SED" --version 2>&1` in +++*GNU*) +++ ac_cv_path_SED="$ac_path_SED" ac_path_SED_found=:;; +++*) +++ ac_count=0 +++ $as_echo_n 0123456789 >"conftest.in" +++ while : +++ do +++ cat "conftest.in" "conftest.in" >"conftest.tmp" +++ mv "conftest.tmp" "conftest.in" +++ cp "conftest.in" "conftest.nl" +++ $as_echo '' >> "conftest.nl" +++ "$ac_path_SED" -f conftest.sed < "conftest.nl" >"conftest.out" 2>/dev/null || break +++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +++ as_fn_arith $ac_count + 1 && ac_count=$as_val +++ if test $ac_count -gt ${ac_path_SED_max-0}; then +++ # Best one so far, save it but keep looking for a better one +++ ac_cv_path_SED="$ac_path_SED" +++ ac_path_SED_max=$ac_count +++ fi +++ # 10*(2^10) chars as input seems more than enough +++ test $ac_count -gt 10 && break +++ done +++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +++esac +++ +++ $ac_path_SED_found && break 3 +++ done +++ done +++ done +++IFS=$as_save_IFS +++ if test -z "$ac_cv_path_SED"; then +++ as_fn_error $? "no acceptable sed could be found in \$PATH" "$LINENO" 5 +++ fi +++else +++ ac_cv_path_SED=$SED +++fi +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_SED" >&5 +++$as_echo "$ac_cv_path_SED" >&6; } +++ SED="$ac_cv_path_SED" +++ rm -f conftest.sed +++ +++test -z "$SED" && SED=sed +++Xsed="$SED -e 1s/^X//" +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for fgrep" >&5 +++$as_echo_n "checking for fgrep... " >&6; } +++if ${ac_cv_path_FGREP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if echo 'ab*c' | $GREP -F 'ab*c' >/dev/null 2>&1 +++ then ac_cv_path_FGREP="$GREP -F" +++ else +++ if test -z "$FGREP"; then +++ ac_path_FGREP_found=false +++ # Loop through the user's path and test for each of PROGNAME-LIST +++ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_prog in fgrep; do +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ ac_path_FGREP="$as_dir/$ac_prog$ac_exec_ext" +++ as_fn_executable_p "$ac_path_FGREP" || continue +++# Check for GNU ac_path_FGREP and select it if it is found. +++ # Check for GNU $ac_path_FGREP +++case `"$ac_path_FGREP" --version 2>&1` in +++*GNU*) +++ ac_cv_path_FGREP="$ac_path_FGREP" ac_path_FGREP_found=:;; +++*) +++ ac_count=0 +++ $as_echo_n 0123456789 >"conftest.in" +++ while : +++ do +++ cat "conftest.in" "conftest.in" >"conftest.tmp" +++ mv "conftest.tmp" "conftest.in" +++ cp "conftest.in" "conftest.nl" +++ $as_echo 'FGREP' >> "conftest.nl" +++ "$ac_path_FGREP" FGREP < "conftest.nl" >"conftest.out" 2>/dev/null || break +++ diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break +++ as_fn_arith $ac_count + 1 && ac_count=$as_val +++ if test $ac_count -gt ${ac_path_FGREP_max-0}; then +++ # Best one so far, save it but keep looking for a better one +++ ac_cv_path_FGREP="$ac_path_FGREP" +++ ac_path_FGREP_max=$ac_count +++ fi +++ # 10*(2^10) chars as input seems more than enough +++ test $ac_count -gt 10 && break +++ done +++ rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +++esac +++ +++ $ac_path_FGREP_found && break 3 +++ done +++ done +++ done +++IFS=$as_save_IFS +++ if test -z "$ac_cv_path_FGREP"; then +++ as_fn_error $? "no acceptable fgrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 +++ fi +++else +++ ac_cv_path_FGREP=$FGREP +++fi +++ +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_FGREP" >&5 +++$as_echo "$ac_cv_path_FGREP" >&6; } +++ FGREP="$ac_cv_path_FGREP" +++ +++ +++test -z "$GREP" && GREP=grep +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++# Check whether --with-gnu-ld was given. +++if test "${with_gnu_ld+set}" = set; then : +++ withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes +++else +++ with_gnu_ld=no +++fi +++ +++ac_prog=ld +++if test "$GCC" = yes; then +++ # Check if gcc -print-prog-name=ld gives a path. +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5 +++$as_echo_n "checking for ld used by $CC... " >&6; } +++ case $host in +++ *-*-mingw*) +++ # gcc leaves a trailing carriage return which upsets mingw +++ ac_prog=`($CC -print-prog-name=ld) 2>&5 | tr -d '\015'` ;; +++ *) +++ ac_prog=`($CC -print-prog-name=ld) 2>&5` ;; +++ esac +++ case $ac_prog in +++ # Accept absolute paths. +++ [\\/]* | ?:[\\/]*) +++ re_direlt='/[^/][^/]*/\.\./' +++ # Canonicalize the pathname of ld +++ ac_prog=`$ECHO "$ac_prog"| $SED 's%\\\\%/%g'` +++ while $ECHO "$ac_prog" | $GREP "$re_direlt" > /dev/null 2>&1; do +++ ac_prog=`$ECHO $ac_prog| $SED "s%$re_direlt%/%"` +++ done +++ test -z "$LD" && LD="$ac_prog" +++ ;; +++ "") +++ # If it fails, then pretend we aren't using GCC. +++ ac_prog=ld +++ ;; +++ *) +++ # If it is relative, then search for the first ld in PATH. +++ with_gnu_ld=unknown +++ ;; +++ esac +++elif test "$with_gnu_ld" = yes; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for GNU ld" >&5 +++$as_echo_n "checking for GNU ld... " >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for non-GNU ld" >&5 +++$as_echo_n "checking for non-GNU ld... " >&6; } +++fi +++if ${lt_cv_path_LD+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -z "$LD"; then +++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +++ for ac_dir in $PATH; do +++ IFS="$lt_save_ifs" +++ test -z "$ac_dir" && ac_dir=. +++ if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then +++ lt_cv_path_LD="$ac_dir/$ac_prog" +++ # Check to see if the program is GNU ld. I'd rather use --version, +++ # but apparently some variants of GNU ld only accept -v. +++ # Break only if it was the GNU/non-GNU ld that we prefer. +++ case `"$lt_cv_path_LD" -v 2>&1 &5 +++$as_echo "$LD" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++test -z "$LD" && as_fn_error $? "no acceptable ld found in \$PATH" "$LINENO" 5 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if the linker ($LD) is GNU ld" >&5 +++$as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; } +++if ${lt_cv_prog_gnu_ld+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ # I'd rather use --version here, but apparently some GNU lds only accept -v. +++case `$LD -v 2>&1 &5 +++$as_echo "$lt_cv_prog_gnu_ld" >&6; } +++with_gnu_ld=$lt_cv_prog_gnu_ld +++ +++ +++ +++ +++ +++ +++ +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for BSD- or MS-compatible name lister (nm)" >&5 +++$as_echo_n "checking for BSD- or MS-compatible name lister (nm)... " >&6; } +++if ${lt_cv_path_NM+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$NM"; then +++ # Let the user override the nm to test. +++ lt_nm_to_check="$NM" +++ else +++ lt_nm_to_check="${ac_tool_prefix}nm" +++ if test -n "$ac_tool_prefix" && test "$build" = "$host"; then +++ lt_nm_to_check="$lt_nm_to_check nm" +++ fi +++ fi +++ for lt_tmp_nm in "$lt_nm_to_check"; do +++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +++ for ac_dir in $PATH /usr/ccs/bin/elf /usr/ccs/bin /usr/ucb /bin; do +++ IFS="$lt_save_ifs" +++ test -z "$ac_dir" && ac_dir=. +++ # Strip out any user-provided options from the nm to test twice, +++ # the first time to test to see if nm (rather than its options) has +++ # an explicit path, the second time to yield a file which can be +++ # nm'ed itself. +++ tmp_nm_path="`$ECHO "$lt_tmp_nm" | sed 's, -.*$,,'`" +++ case "$tmp_nm_path" in +++ */*|*\\*) tmp_nm="$lt_tmp_nm";; +++ *) tmp_nm="$ac_dir/$lt_tmp_nm";; +++ esac +++ tmp_nm_to_nm="`$ECHO "$tmp_nm" | sed 's, -.*$,,'`" +++ if test -f "$tmp_nm_to_nm" || test -f "$tmp_nm_to_nm$ac_exeext" ; then +++ # Check to see if the nm accepts a BSD-compat flag. +++ # Adding the `sed 1q' prevents false positives on HP-UX, which says: +++ # nm: unknown option "B" ignored +++ case `"$tmp_nm" -B "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in +++ *$tmp_nm*) lt_cv_path_NM="$tmp_nm -B" +++ break +++ ;; +++ *) +++ case `"$tmp_nm" -p "$tmp_nm_to_nm" 2>&1 | grep -v '^ *$' | sed '1q'` in +++ *$tmp_nm*) +++ lt_cv_path_NM="$tmp_nm -p" +++ break +++ ;; +++ *) +++ lt_cv_path_NM=${lt_cv_path_NM="$tmp_nm"} # keep the first match, but +++ continue # so that we can try to find one that supports BSD flags +++ ;; +++ esac +++ ;; +++ esac +++ fi +++ done +++ IFS="$lt_save_ifs" +++ done +++ : ${lt_cv_path_NM=no} +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_path_NM" >&5 +++$as_echo "$lt_cv_path_NM" >&6; } +++if test "$lt_cv_path_NM" != "no"; then +++ NM="$lt_cv_path_NM" +++else +++ # Didn't find any BSD compatible name lister, look for dumpbin. +++ if test -n "$DUMPBIN"; then : +++ # Let the user override the test. +++ else +++ if test -n "$ac_tool_prefix"; then +++ for ac_prog in dumpbin "link -dump" +++ do +++ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +++set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_DUMPBIN+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$DUMPBIN"; then +++ ac_cv_prog_DUMPBIN="$DUMPBIN" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_DUMPBIN="$ac_tool_prefix$ac_prog" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++DUMPBIN=$ac_cv_prog_DUMPBIN +++if test -n "$DUMPBIN"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DUMPBIN" >&5 +++$as_echo "$DUMPBIN" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ test -n "$DUMPBIN" && break +++ done +++fi +++if test -z "$DUMPBIN"; then +++ ac_ct_DUMPBIN=$DUMPBIN +++ for ac_prog in dumpbin "link -dump" +++do +++ # Extract the first word of "$ac_prog", so it can be a program name with args. +++set dummy $ac_prog; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_DUMPBIN+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_DUMPBIN"; then +++ ac_cv_prog_ac_ct_DUMPBIN="$ac_ct_DUMPBIN" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_DUMPBIN="$ac_prog" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_DUMPBIN=$ac_cv_prog_ac_ct_DUMPBIN +++if test -n "$ac_ct_DUMPBIN"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DUMPBIN" >&5 +++$as_echo "$ac_ct_DUMPBIN" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ test -n "$ac_ct_DUMPBIN" && break +++done +++ +++ if test "x$ac_ct_DUMPBIN" = x; then +++ DUMPBIN=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ DUMPBIN=$ac_ct_DUMPBIN +++ fi +++fi +++ +++ case `$DUMPBIN -symbols /dev/null 2>&1 | sed '1q'` in +++ *COFF*) +++ DUMPBIN="$DUMPBIN -symbols" +++ ;; +++ *) +++ DUMPBIN=: +++ ;; +++ esac +++ fi +++ +++ if test "$DUMPBIN" != ":"; then +++ NM="$DUMPBIN" +++ fi +++fi +++test -z "$NM" && NM=nm +++ +++ +++ +++ +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the name lister ($NM) interface" >&5 +++$as_echo_n "checking the name lister ($NM) interface... " >&6; } +++if ${lt_cv_nm_interface+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_nm_interface="BSD nm" +++ echo "int some_variable = 0;" > conftest.$ac_ext +++ (eval echo "\"\$as_me:$LINENO: $ac_compile\"" >&5) +++ (eval "$ac_compile" 2>conftest.err) +++ cat conftest.err >&5 +++ (eval echo "\"\$as_me:$LINENO: $NM \\\"conftest.$ac_objext\\\"\"" >&5) +++ (eval "$NM \"conftest.$ac_objext\"" 2>conftest.err > conftest.out) +++ cat conftest.err >&5 +++ (eval echo "\"\$as_me:$LINENO: output\"" >&5) +++ cat conftest.out >&5 +++ if $GREP 'External.*some_variable' conftest.out > /dev/null; then +++ lt_cv_nm_interface="MS dumpbin" +++ fi +++ rm -f conftest* +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_nm_interface" >&5 +++$as_echo "$lt_cv_nm_interface" >&6; } +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ln -s works" >&5 +++$as_echo_n "checking whether ln -s works... " >&6; } +++LN_S=$as_ln_s +++if test "$LN_S" = "ln -s"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +++$as_echo "yes" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no, using $LN_S" >&5 +++$as_echo "no, using $LN_S" >&6; } +++fi +++ +++# find the maximum length of command line arguments +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking the maximum length of command line arguments" >&5 +++$as_echo_n "checking the maximum length of command line arguments... " >&6; } +++if ${lt_cv_sys_max_cmd_len+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ i=0 +++ teststring="ABCD" +++ +++ case $build_os in +++ msdosdjgpp*) +++ # On DJGPP, this test can blow up pretty badly due to problems in libc +++ # (any single argument exceeding 2000 bytes causes a buffer overrun +++ # during glob expansion). Even if it were fixed, the result of this +++ # check would be larger than it should be. +++ lt_cv_sys_max_cmd_len=12288; # 12K is about right +++ ;; +++ +++ gnu*) +++ # Under GNU Hurd, this test is not required because there is +++ # no limit to the length of command line arguments. +++ # Libtool will interpret -1 as no limit whatsoever +++ lt_cv_sys_max_cmd_len=-1; +++ ;; +++ +++ cygwin* | mingw* | cegcc*) +++ # On Win9x/ME, this test blows up -- it succeeds, but takes +++ # about 5 minutes as the teststring grows exponentially. +++ # Worse, since 9x/ME are not pre-emptively multitasking, +++ # you end up with a "frozen" computer, even though with patience +++ # the test eventually succeeds (with a max line length of 256k). +++ # Instead, let's just punt: use the minimum linelength reported by +++ # all of the supported platforms: 8192 (on NT/2K/XP). +++ lt_cv_sys_max_cmd_len=8192; +++ ;; +++ +++ mint*) +++ # On MiNT this can take a long time and run out of memory. +++ lt_cv_sys_max_cmd_len=8192; +++ ;; +++ +++ amigaos*) +++ # On AmigaOS with pdksh, this test takes hours, literally. +++ # So we just punt and use a minimum line length of 8192. +++ lt_cv_sys_max_cmd_len=8192; +++ ;; +++ +++ netbsd* | freebsd* | openbsd* | darwin* | dragonfly*) +++ # This has been around since 386BSD, at least. Likely further. +++ if test -x /sbin/sysctl; then +++ lt_cv_sys_max_cmd_len=`/sbin/sysctl -n kern.argmax` +++ elif test -x /usr/sbin/sysctl; then +++ lt_cv_sys_max_cmd_len=`/usr/sbin/sysctl -n kern.argmax` +++ else +++ lt_cv_sys_max_cmd_len=65536 # usable default for all BSDs +++ fi +++ # And add a safety zone +++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +++ ;; +++ +++ interix*) +++ # We know the value 262144 and hardcode it with a safety zone (like BSD) +++ lt_cv_sys_max_cmd_len=196608 +++ ;; +++ +++ osf*) +++ # Dr. Hans Ekkehard Plesser reports seeing a kernel panic running configure +++ # due to this test when exec_disable_arg_limit is 1 on Tru64. It is not +++ # nice to cause kernel panics so lets avoid the loop below. +++ # First set a reasonable default. +++ lt_cv_sys_max_cmd_len=16384 +++ # +++ if test -x /sbin/sysconfig; then +++ case `/sbin/sysconfig -q proc exec_disable_arg_limit` in +++ *1*) lt_cv_sys_max_cmd_len=-1 ;; +++ esac +++ fi +++ ;; +++ sco3.2v5*) +++ lt_cv_sys_max_cmd_len=102400 +++ ;; +++ sysv5* | sco5v6* | sysv4.2uw2*) +++ kargmax=`grep ARG_MAX /etc/conf/cf.d/stune 2>/dev/null` +++ if test -n "$kargmax"; then +++ lt_cv_sys_max_cmd_len=`echo $kargmax | sed 's/.*[ ]//'` +++ else +++ lt_cv_sys_max_cmd_len=32768 +++ fi +++ ;; +++ *) +++ lt_cv_sys_max_cmd_len=`(getconf ARG_MAX) 2> /dev/null` +++ if test -n "$lt_cv_sys_max_cmd_len"; then +++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 4` +++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \* 3` +++ else +++ # Make teststring a little bigger before we do anything with it. +++ # a 1K string should be a reasonable start. +++ for i in 1 2 3 4 5 6 7 8 ; do +++ teststring=$teststring$teststring +++ done +++ SHELL=${SHELL-${CONFIG_SHELL-/bin/sh}} +++ # If test is not a shell built-in, we'll probably end up computing a +++ # maximum length that is only half of the actual maximum length, but +++ # we can't tell. +++ while { test "X"`func_fallback_echo "$teststring$teststring" 2>/dev/null` \ +++ = "X$teststring$teststring"; } >/dev/null 2>&1 && +++ test $i != 17 # 1/2 MB should be enough +++ do +++ i=`expr $i + 1` +++ teststring=$teststring$teststring +++ done +++ # Only check the string length outside the loop. +++ lt_cv_sys_max_cmd_len=`expr "X$teststring" : ".*" 2>&1` +++ teststring= +++ # Add a significant safety factor because C++ compilers can tack on +++ # massive amounts of additional arguments before passing them to the +++ # linker. It appears as though 1/2 is a usable value. +++ lt_cv_sys_max_cmd_len=`expr $lt_cv_sys_max_cmd_len \/ 2` +++ fi +++ ;; +++ esac +++ +++fi +++ +++if test -n $lt_cv_sys_max_cmd_len ; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_sys_max_cmd_len" >&5 +++$as_echo "$lt_cv_sys_max_cmd_len" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: none" >&5 +++$as_echo "none" >&6; } +++fi +++max_cmd_len=$lt_cv_sys_max_cmd_len +++ +++ +++ +++ +++ +++ +++: ${CP="cp -f"} +++: ${MV="mv -f"} +++: ${RM="rm -f"} +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands some XSI constructs" >&5 +++$as_echo_n "checking whether the shell understands some XSI constructs... " >&6; } +++# Try some XSI features +++xsi_shell=no +++( _lt_dummy="a/b/c" +++ test "${_lt_dummy##*/},${_lt_dummy%/*},"${_lt_dummy%"$_lt_dummy"}, \ +++ = c,a/b,, \ +++ && eval 'test $(( 1 + 1 )) -eq 2 \ +++ && test "${#_lt_dummy}" -eq 5' ) >/dev/null 2>&1 \ +++ && xsi_shell=yes +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $xsi_shell" >&5 +++$as_echo "$xsi_shell" >&6; } +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the shell understands \"+=\"" >&5 +++$as_echo_n "checking whether the shell understands \"+=\"... " >&6; } +++lt_shell_append=no +++( foo=bar; set foo baz; eval "$1+=\$2" && test "$foo" = barbaz ) \ +++ >/dev/null 2>&1 \ +++ && lt_shell_append=yes +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_shell_append" >&5 +++$as_echo "$lt_shell_append" >&6; } +++ +++ +++if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then +++ lt_unset=unset +++else +++ lt_unset=false +++fi +++ +++ +++ +++ +++ +++# test EBCDIC or ASCII +++case `echo X|tr X '\101'` in +++ A) # ASCII based system +++ # \n is not interpreted correctly by Solaris 8 /usr/ucb/tr +++ lt_SP2NL='tr \040 \012' +++ lt_NL2SP='tr \015\012 \040\040' +++ ;; +++ *) # EBCDIC based system +++ lt_SP2NL='tr \100 \n' +++ lt_NL2SP='tr \r\n \100\100' +++ ;; +++esac +++ +++ +++ +++ +++ +++ +++ +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $LD option to reload object files" >&5 +++$as_echo_n "checking for $LD option to reload object files... " >&6; } +++if ${lt_cv_ld_reload_flag+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_ld_reload_flag='-r' +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_reload_flag" >&5 +++$as_echo "$lt_cv_ld_reload_flag" >&6; } +++reload_flag=$lt_cv_ld_reload_flag +++case $reload_flag in +++"" | " "*) ;; +++*) reload_flag=" $reload_flag" ;; +++esac +++reload_cmds='$LD$reload_flag -o $output$reload_objs' +++case $host_os in +++ darwin*) +++ if test "$GCC" = yes; then +++ reload_cmds='$LTCC $LTCFLAGS -nostdlib ${wl}-r -o $output$reload_objs' +++ else +++ reload_cmds='$LD$reload_flag -o $output$reload_objs' +++ fi +++ ;; +++esac +++ +++ +++ +++ +++ +++ +++ +++ +++ +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}objdump", so it can be a program name with args. +++set dummy ${ac_tool_prefix}objdump; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_OBJDUMP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$OBJDUMP"; then +++ ac_cv_prog_OBJDUMP="$OBJDUMP" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_OBJDUMP="${ac_tool_prefix}objdump" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++OBJDUMP=$ac_cv_prog_OBJDUMP +++if test -n "$OBJDUMP"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OBJDUMP" >&5 +++$as_echo "$OBJDUMP" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_OBJDUMP"; then +++ ac_ct_OBJDUMP=$OBJDUMP +++ # Extract the first word of "objdump", so it can be a program name with args. +++set dummy objdump; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_OBJDUMP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_OBJDUMP"; then +++ ac_cv_prog_ac_ct_OBJDUMP="$ac_ct_OBJDUMP" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_OBJDUMP="objdump" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_OBJDUMP=$ac_cv_prog_ac_ct_OBJDUMP +++if test -n "$ac_ct_OBJDUMP"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OBJDUMP" >&5 +++$as_echo "$ac_ct_OBJDUMP" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_OBJDUMP" = x; then +++ OBJDUMP="false" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ OBJDUMP=$ac_ct_OBJDUMP +++ fi +++else +++ OBJDUMP="$ac_cv_prog_OBJDUMP" +++fi +++ +++test -z "$OBJDUMP" && OBJDUMP=objdump +++ +++ +++ +++ +++ +++ +++ +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to recognize dependent libraries" >&5 +++$as_echo_n "checking how to recognize dependent libraries... " >&6; } +++if ${lt_cv_deplibs_check_method+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_file_magic_cmd='$MAGIC_CMD' +++lt_cv_file_magic_test_file= +++lt_cv_deplibs_check_method='unknown' +++# Need to set the preceding variable on all platforms that support +++# interlibrary dependencies. +++# 'none' -- dependencies not supported. +++# `unknown' -- same as none, but documents that we really don't know. +++# 'pass_all' -- all dependencies passed with no checks. +++# 'test_compile' -- check by making test program. +++# 'file_magic [[regex]]' -- check by looking for files in library path +++# which responds to the $file_magic_cmd with a given extended regex. +++# If you have `file' or equivalent on your system and you're not sure +++# whether `pass_all' will *always* work, you probably want this one. +++ +++case $host_os in +++aix[4-9]*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++beos*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++bsdi[45]*) +++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib)' +++ lt_cv_file_magic_cmd='/usr/bin/file -L' +++ lt_cv_file_magic_test_file=/shlib/libc.so +++ ;; +++ +++cygwin*) +++ # func_win32_libid is a shell function defined in ltmain.sh +++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' +++ lt_cv_file_magic_cmd='func_win32_libid' +++ ;; +++ +++mingw* | pw32*) +++ # Base MSYS/MinGW do not provide the 'file' command needed by +++ # func_win32_libid shell function, so use a weaker test based on 'objdump', +++ # unless we find 'file', for example because we are cross-compiling. +++ # func_win32_libid assumes BSD nm, so disallow it if using MS dumpbin. +++ if ( test "$lt_cv_nm_interface" = "BSD nm" && file / ) >/dev/null 2>&1; then +++ lt_cv_deplibs_check_method='file_magic ^x86 archive import|^x86 DLL' +++ lt_cv_file_magic_cmd='func_win32_libid' +++ else +++ lt_cv_deplibs_check_method='file_magic file format pei*-i386(.*architecture: i386)?' +++ lt_cv_file_magic_cmd='$OBJDUMP -f' +++ fi +++ ;; +++ +++cegcc*) +++ # use the weaker test based on 'objdump'. See mingw*. +++ lt_cv_deplibs_check_method='file_magic file format pe-arm-.*little(.*architecture: arm)?' +++ lt_cv_file_magic_cmd='$OBJDUMP -f' +++ ;; +++ +++darwin* | rhapsody*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++freebsd* | dragonfly*) +++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then +++ case $host_cpu in +++ i*86 ) +++ # Not sure whether the presence of OpenBSD here was a mistake. +++ # Let's accept both of them until this is cleared up. +++ lt_cv_deplibs_check_method='file_magic (FreeBSD|OpenBSD|DragonFly)/i[3-9]86 (compact )?demand paged shared library' +++ lt_cv_file_magic_cmd=/usr/bin/file +++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so.*` +++ ;; +++ esac +++ else +++ lt_cv_deplibs_check_method=pass_all +++ fi +++ ;; +++ +++gnu*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++haiku*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++hpux10.20* | hpux11*) +++ lt_cv_file_magic_cmd=/usr/bin/file +++ case $host_cpu in +++ ia64*) +++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF-[0-9][0-9]) shared object file - IA64' +++ lt_cv_file_magic_test_file=/usr/lib/hpux32/libc.so +++ ;; +++ hppa*64*) +++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|ELF[ -][0-9][0-9])(-bit)?( [LM]SB)? shared object( file)?[, -]* PA-RISC [0-9]\.[0-9]' +++ lt_cv_file_magic_test_file=/usr/lib/pa20_64/libc.sl +++ ;; +++ *) +++ lt_cv_deplibs_check_method='file_magic (s[0-9][0-9][0-9]|PA-RISC[0-9]\.[0-9]) shared library' +++ lt_cv_file_magic_test_file=/usr/lib/libc.sl +++ ;; +++ esac +++ ;; +++ +++interix[3-9]*) +++ # PIC code is broken on Interix 3.x, that's why |\.a not |_pic\.a here +++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|\.a)$' +++ ;; +++ +++irix5* | irix6* | nonstopux*) +++ case $LD in +++ *-32|*"-32 ") libmagic=32-bit;; +++ *-n32|*"-n32 ") libmagic=N32;; +++ *-64|*"-64 ") libmagic=64-bit;; +++ *) libmagic=never-match;; +++ esac +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++# This must be Linux ELF. +++linux* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++netbsd*) +++ if echo __ELF__ | $CC -E - | $GREP __ELF__ > /dev/null; then +++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' +++ else +++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so|_pic\.a)$' +++ fi +++ ;; +++ +++newos6*) +++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (executable|dynamic lib)' +++ lt_cv_file_magic_cmd=/usr/bin/file +++ lt_cv_file_magic_test_file=/usr/lib/libnls.so +++ ;; +++ +++*nto* | *qnx*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++openbsd*) +++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|\.so|_pic\.a)$' +++ else +++ lt_cv_deplibs_check_method='match_pattern /lib[^/]+(\.so\.[0-9]+\.[0-9]+|_pic\.a)$' +++ fi +++ ;; +++ +++osf3* | osf4* | osf5*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++rdos*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++solaris*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ +++sysv4 | sysv4.3*) +++ case $host_vendor in +++ motorola) +++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [ML]SB (shared object|dynamic lib) M[0-9][0-9]* Version [0-9]' +++ lt_cv_file_magic_test_file=`echo /usr/lib/libc.so*` +++ ;; +++ ncr) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ sequent) +++ lt_cv_file_magic_cmd='/bin/file' +++ lt_cv_deplibs_check_method='file_magic ELF [0-9][0-9]*-bit [LM]SB (shared object|dynamic lib )' +++ ;; +++ sni) +++ lt_cv_file_magic_cmd='/bin/file' +++ lt_cv_deplibs_check_method="file_magic ELF [0-9][0-9]*-bit [LM]SB dynamic lib" +++ lt_cv_file_magic_test_file=/lib/libc.so +++ ;; +++ siemens) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ pc) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++ esac +++ ;; +++ +++tpf*) +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++vxworks*) +++ # Assume VxWorks cross toolchains are built on Linux, possibly +++ # as canadian for Windows hosts. +++ lt_cv_deplibs_check_method=pass_all +++ ;; +++esac +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_deplibs_check_method" >&5 +++$as_echo "$lt_cv_deplibs_check_method" >&6; } +++file_magic_cmd=$lt_cv_file_magic_cmd +++deplibs_check_method=$lt_cv_deplibs_check_method +++test -z "$deplibs_check_method" && deplibs_check_method=unknown +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++plugin_option= +++plugin_names="liblto_plugin.so liblto_plugin-0.dll cyglto_plugin-0.dll" +++for plugin in $plugin_names; do +++ plugin_so=`${CC} ${CFLAGS} --print-prog-name $plugin` +++ if test x$plugin_so = x$plugin; then +++ plugin_so=`${CC} ${CFLAGS} --print-file-name $plugin` +++ fi +++ if test x$plugin_so != x$plugin; then +++ plugin_option="--plugin $plugin_so" +++ break +++ fi +++done +++ +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}ar", so it can be a program name with args. +++set dummy ${ac_tool_prefix}ar; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_AR+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$AR"; then +++ ac_cv_prog_AR="$AR" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_AR="${ac_tool_prefix}ar" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++AR=$ac_cv_prog_AR +++if test -n "$AR"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AR" >&5 +++$as_echo "$AR" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_AR"; then +++ ac_ct_AR=$AR +++ # Extract the first word of "ar", so it can be a program name with args. +++set dummy ar; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_AR+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_AR"; then +++ ac_cv_prog_ac_ct_AR="$ac_ct_AR" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_AR="ar" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_AR=$ac_cv_prog_ac_ct_AR +++if test -n "$ac_ct_AR"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_AR" >&5 +++$as_echo "$ac_ct_AR" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_AR" = x; then +++ AR="false" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ AR=$ac_ct_AR +++ fi +++else +++ AR="$ac_cv_prog_AR" +++fi +++ +++test -z "$AR" && AR=ar +++if test -n "$plugin_option"; then +++ if $AR --help 2>&1 | grep -q "\--plugin"; then +++ touch conftest.c +++ $AR $plugin_option rc conftest.a conftest.c +++ if test "$?" != 0; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Failed: $AR $plugin_option rc" >&5 +++$as_echo "$as_me: WARNING: Failed: $AR $plugin_option rc" >&2;} +++ else +++ AR="$AR $plugin_option" +++ fi +++ rm -f conftest.* +++ fi +++fi +++test -z "$AR_FLAGS" && AR_FLAGS=cru +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +++set dummy ${ac_tool_prefix}strip; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_STRIP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$STRIP"; then +++ ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_STRIP="${ac_tool_prefix}strip" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++STRIP=$ac_cv_prog_STRIP +++if test -n "$STRIP"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +++$as_echo "$STRIP" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_STRIP"; then +++ ac_ct_STRIP=$STRIP +++ # Extract the first word of "strip", so it can be a program name with args. +++set dummy strip; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_STRIP+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_STRIP"; then +++ ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_STRIP="strip" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +++if test -n "$ac_ct_STRIP"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +++$as_echo "$ac_ct_STRIP" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_STRIP" = x; then +++ STRIP=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ STRIP=$ac_ct_STRIP +++ fi +++else +++ STRIP="$ac_cv_prog_STRIP" +++fi +++ +++test -z "$STRIP" && STRIP=: +++ +++ +++ +++ +++ +++ +++if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}ranlib", so it can be a program name with args. +++set dummy ${ac_tool_prefix}ranlib; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_RANLIB+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$RANLIB"; then +++ ac_cv_prog_RANLIB="$RANLIB" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++RANLIB=$ac_cv_prog_RANLIB +++if test -n "$RANLIB"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $RANLIB" >&5 +++$as_echo "$RANLIB" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_RANLIB"; then +++ ac_ct_RANLIB=$RANLIB +++ # Extract the first word of "ranlib", so it can be a program name with args. +++set dummy ranlib; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_RANLIB+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_RANLIB"; then +++ ac_cv_prog_ac_ct_RANLIB="$ac_ct_RANLIB" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_RANLIB="ranlib" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_RANLIB=$ac_cv_prog_ac_ct_RANLIB +++if test -n "$ac_ct_RANLIB"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_RANLIB" >&5 +++$as_echo "$ac_ct_RANLIB" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_RANLIB" = x; then +++ RANLIB=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ RANLIB=$ac_ct_RANLIB +++ fi +++else +++ RANLIB="$ac_cv_prog_RANLIB" +++fi +++ +++test -z "$RANLIB" && RANLIB=: +++if test -n "$plugin_option" && test "$RANLIB" != ":"; then +++ if $RANLIB --help 2>&1 | grep -q "\--plugin"; then +++ RANLIB="$RANLIB $plugin_option" +++ fi +++fi +++ +++ +++ +++ +++ +++ +++# Determine commands to create old-style static archives. +++old_archive_cmds='$AR $AR_FLAGS $oldlib$oldobjs' +++old_postinstall_cmds='chmod 644 $oldlib' +++old_postuninstall_cmds= +++ +++if test -n "$RANLIB"; then +++ case $host_os in +++ openbsd*) +++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB -t \$oldlib" +++ ;; +++ *) +++ old_postinstall_cmds="$old_postinstall_cmds~\$RANLIB \$oldlib" +++ ;; +++ esac +++ old_archive_cmds="$old_archive_cmds~\$RANLIB \$oldlib" +++fi +++ +++case $host_os in +++ darwin*) +++ lock_old_archive_extraction=yes ;; +++ *) +++ lock_old_archive_extraction=no ;; +++esac +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++# If no C compiler was specified, use CC. +++LTCC=${LTCC-"$CC"} +++ +++# If no C compiler flags were specified, use CFLAGS. +++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +++ +++# Allow CC to be a program name with arguments. +++compiler=$CC +++ +++ +++# Check for command to grab the raw symbol name followed by C symbol from nm. +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking command to parse $NM output from $compiler object" >&5 +++$as_echo_n "checking command to parse $NM output from $compiler object... " >&6; } +++if ${lt_cv_sys_global_symbol_pipe+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ +++# These are sane defaults that work on at least a few old systems. +++# [They come from Ultrix. What could be older than Ultrix?!! ;)] +++ +++# Character class describing NM global symbol codes. +++symcode='[BCDEGRST]' +++ +++# Regexp to match symbols that can be accessed directly from C. +++sympat='\([_A-Za-z][_A-Za-z0-9]*\)' +++ +++# Define system-specific variables. +++case $host_os in +++aix*) +++ symcode='[BCDT]' +++ ;; +++cygwin* | mingw* | pw32* | cegcc*) +++ symcode='[ABCDGISTW]' +++ ;; +++hpux*) +++ if test "$host_cpu" = ia64; then +++ symcode='[ABCDEGRST]' +++ fi +++ ;; +++irix* | nonstopux*) +++ symcode='[BCDEGRST]' +++ ;; +++osf*) +++ symcode='[BCDEGQRST]' +++ ;; +++solaris*) +++ symcode='[BCDRT]' +++ ;; +++sco3.2v5*) +++ symcode='[DT]' +++ ;; +++sysv4.2uw2*) +++ symcode='[DT]' +++ ;; +++sysv5* | sco5v6* | unixware* | OpenUNIX*) +++ symcode='[ABDT]' +++ ;; +++sysv4) +++ symcode='[DFNSTU]' +++ ;; +++esac +++ +++# If we're using GNU nm, then use its standard symbol codes. +++case `$NM -V 2>&1` in +++*GNU* | *'with BFD'*) +++ symcode='[ABCDGIRSTW]' ;; +++esac +++ +++# Transform an extracted symbol line into a proper C declaration. +++# Some systems (esp. on ia64) link data and code symbols differently, +++# so use this general approach. +++lt_cv_sys_global_symbol_to_cdecl="sed -n -e 's/^T .* \(.*\)$/extern int \1();/p' -e 's/^$symcode* .* \(.*\)$/extern char \1;/p'" +++ +++# Transform an extracted symbol line into symbol name and symbol address +++lt_cv_sys_global_symbol_to_c_name_address="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"\2\", (void *) \&\2},/p'" +++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix="sed -n -e 's/^: \([^ ]*\) $/ {\\\"\1\\\", (void *) 0},/p' -e 's/^$symcode* \([^ ]*\) \(lib[^ ]*\)$/ {\"\2\", (void *) \&\2},/p' -e 's/^$symcode* \([^ ]*\) \([^ ]*\)$/ {\"lib\2\", (void *) \&\2},/p'" +++ +++# Handle CRLF in mingw tool chain +++opt_cr= +++case $build_os in +++mingw*) +++ opt_cr=`$ECHO 'x\{0,1\}' | tr x '\015'` # option cr in regexp +++ ;; +++esac +++ +++# Try without a prefix underscore, then with it. +++for ac_symprfx in "" "_"; do +++ +++ # Transform symcode, sympat, and symprfx into a raw symbol and a C symbol. +++ symxfrm="\\1 $ac_symprfx\\2 \\2" +++ +++ # Write the raw and C identifiers. +++ if test "$lt_cv_nm_interface" = "MS dumpbin"; then +++ # Fake it for dumpbin and say T for any non-static function +++ # and D for any global variable. +++ # Also find C++ and __fastcall symbols from MSVC++, +++ # which start with @ or ?. +++ lt_cv_sys_global_symbol_pipe="$AWK '"\ +++" {last_section=section; section=\$ 3};"\ +++" /Section length .*#relocs.*(pick any)/{hide[last_section]=1};"\ +++" \$ 0!~/External *\|/{next};"\ +++" / 0+ UNDEF /{next}; / UNDEF \([^|]\)*()/{next};"\ +++" {if(hide[section]) next};"\ +++" {f=0}; \$ 0~/\(\).*\|/{f=1}; {printf f ? \"T \" : \"D \"};"\ +++" {split(\$ 0, a, /\||\r/); split(a[2], s)};"\ +++" s[1]~/^[@?]/{print s[1], s[1]; next};"\ +++" s[1]~prfx {split(s[1],t,\"@\"); print t[1], substr(t[1],length(prfx))}"\ +++" ' prfx=^$ac_symprfx" +++ else +++ lt_cv_sys_global_symbol_pipe="sed -n -e 's/^.*[ ]\($symcode$symcode*\)[ ][ ]*$ac_symprfx$sympat$opt_cr$/$symxfrm/p'" +++ fi +++ +++ # Check to see that the pipe works correctly. +++ pipe_works=no +++ +++ rm -f conftest* +++ cat > conftest.$ac_ext <<_LT_EOF +++#ifdef __cplusplus +++extern "C" { +++#endif +++char nm_test_var; +++void nm_test_func(void); +++void nm_test_func(void){} +++#ifdef __cplusplus +++} +++#endif +++int main(){nm_test_var='a';nm_test_func();return(0);} +++_LT_EOF +++ +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 +++ (eval $ac_compile) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then +++ # Now try to grab the symbols. +++ nlist=conftest.nm +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist\""; } >&5 +++ (eval $NM conftest.$ac_objext \| "$lt_cv_sys_global_symbol_pipe" \> $nlist) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } && test -s "$nlist"; then +++ # Try sorting and uniquifying the output. +++ if sort "$nlist" | uniq > "$nlist"T; then +++ mv -f "$nlist"T "$nlist" +++ else +++ rm -f "$nlist"T +++ fi +++ +++ # Make sure that we snagged all the symbols we need. +++ if $GREP ' nm_test_var$' "$nlist" >/dev/null; then +++ if $GREP ' nm_test_func$' "$nlist" >/dev/null; then +++ cat <<_LT_EOF > conftest.$ac_ext +++#ifdef __cplusplus +++extern "C" { +++#endif +++ +++_LT_EOF +++ # Now generate the symbol file. +++ eval "$lt_cv_sys_global_symbol_to_cdecl"' < "$nlist" | $GREP -v main >> conftest.$ac_ext' +++ +++ cat <<_LT_EOF >> conftest.$ac_ext +++ +++/* The mapping between symbol names and symbols. */ +++const struct { +++ const char *name; +++ void *address; +++} +++lt__PROGRAM__LTX_preloaded_symbols[] = +++{ +++ { "@PROGRAM@", (void *) 0 }, +++_LT_EOF +++ $SED "s/^$symcode$symcode* \(.*\) \(.*\)$/ {\"\2\", (void *) \&\2},/" < "$nlist" | $GREP -v main >> conftest.$ac_ext +++ cat <<\_LT_EOF >> conftest.$ac_ext +++ {0, (void *) 0} +++}; +++ +++/* This works around a problem in FreeBSD linker */ +++#ifdef FREEBSD_WORKAROUND +++static const void *lt_preloaded_setup() { +++ return lt__PROGRAM__LTX_preloaded_symbols; +++} +++#endif +++ +++#ifdef __cplusplus +++} +++#endif +++_LT_EOF +++ # Now try linking the two files. +++ mv conftest.$ac_objext conftstm.$ac_objext +++ lt_save_LIBS="$LIBS" +++ lt_save_CFLAGS="$CFLAGS" +++ LIBS="conftstm.$ac_objext" +++ CFLAGS="$CFLAGS$lt_prog_compiler_no_builtin_flag" +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 +++ (eval $ac_link) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } && test -s conftest${ac_exeext}; then +++ pipe_works=yes +++ fi +++ LIBS="$lt_save_LIBS" +++ CFLAGS="$lt_save_CFLAGS" +++ else +++ echo "cannot find nm_test_func in $nlist" >&5 +++ fi +++ else +++ echo "cannot find nm_test_var in $nlist" >&5 +++ fi +++ else +++ echo "cannot run $lt_cv_sys_global_symbol_pipe" >&5 +++ fi +++ else +++ echo "$progname: failed program was:" >&5 +++ cat conftest.$ac_ext >&5 +++ fi +++ rm -rf conftest* conftst* +++ +++ # Do not use the global_symbol_pipe unless it works. +++ if test "$pipe_works" = yes; then +++ break +++ else +++ lt_cv_sys_global_symbol_pipe= +++ fi +++done +++ +++fi +++ +++if test -z "$lt_cv_sys_global_symbol_pipe"; then +++ lt_cv_sys_global_symbol_to_cdecl= +++fi +++if test -z "$lt_cv_sys_global_symbol_pipe$lt_cv_sys_global_symbol_to_cdecl"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: failed" >&5 +++$as_echo "failed" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: ok" >&5 +++$as_echo "ok" >&6; } +++fi +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++# Check whether --enable-libtool-lock was given. +++if test "${enable_libtool_lock+set}" = set; then : +++ enableval=$enable_libtool_lock; +++fi +++ +++test "x$enable_libtool_lock" != xno && enable_libtool_lock=yes +++ +++# Some flags need to be propagated to the compiler or linker for good +++# libtool support. +++case $host in +++ia64-*-hpux*) +++ # Find out which ABI we are using. +++ echo 'int i;' > conftest.$ac_ext +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 +++ (eval $ac_compile) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then +++ case `/usr/bin/file conftest.$ac_objext` in +++ *ELF-32*) +++ HPUX_IA64_MODE="32" +++ ;; +++ *ELF-64*) +++ HPUX_IA64_MODE="64" +++ ;; +++ esac +++ fi +++ rm -rf conftest* +++ ;; +++*-*-irix6*) +++ # Find out which ABI we are using. +++ echo '#line '$LINENO' "configure"' > conftest.$ac_ext +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 +++ (eval $ac_compile) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then +++ if test "$lt_cv_prog_gnu_ld" = yes; then +++ case `/usr/bin/file conftest.$ac_objext` in +++ *32-bit*) +++ LD="${LD-ld} -melf32bsmip" +++ ;; +++ *N32*) +++ LD="${LD-ld} -melf32bmipn32" +++ ;; +++ *64-bit*) +++ LD="${LD-ld} -melf64bmip" +++ ;; +++ esac +++ else +++ case `/usr/bin/file conftest.$ac_objext` in +++ *32-bit*) +++ LD="${LD-ld} -32" +++ ;; +++ *N32*) +++ LD="${LD-ld} -n32" +++ ;; +++ *64-bit*) +++ LD="${LD-ld} -64" +++ ;; +++ esac +++ fi +++ fi +++ rm -rf conftest* +++ ;; +++ +++x86_64-*kfreebsd*-gnu|x86_64-*linux*|powerpc*-*linux*| \ +++s390*-*linux*|s390*-*tpf*|sparc*-*linux*) +++ # Find out which ABI we are using. +++ echo 'int i;' > conftest.$ac_ext +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 +++ (eval $ac_compile) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then +++ case `/usr/bin/file conftest.o` in +++ *32-bit*) +++ case $host in +++ x86_64-*kfreebsd*-gnu) +++ LD="${LD-ld} -m elf_i386_fbsd" +++ ;; +++ x86_64-*linux*) +++ case `/usr/bin/file conftest.o` in +++ *x86-64*) +++ LD="${LD-ld} -m elf32_x86_64" +++ ;; +++ *) +++ LD="${LD-ld} -m elf_i386" +++ ;; +++ esac +++ ;; +++ powerpc64le-*linux*) +++ LD="${LD-ld} -m elf32lppclinux" +++ ;; +++ powerpc64-*linux*) +++ LD="${LD-ld} -m elf32ppclinux" +++ ;; +++ s390x-*linux*) +++ LD="${LD-ld} -m elf_s390" +++ ;; +++ sparc64-*linux*) +++ LD="${LD-ld} -m elf32_sparc" +++ ;; +++ esac +++ ;; +++ *64-bit*) +++ case $host in +++ x86_64-*kfreebsd*-gnu) +++ LD="${LD-ld} -m elf_x86_64_fbsd" +++ ;; +++ x86_64-*linux*) +++ LD="${LD-ld} -m elf_x86_64" +++ ;; +++ powerpcle-*linux*) +++ LD="${LD-ld} -m elf64lppc" +++ ;; +++ powerpc-*linux*) +++ LD="${LD-ld} -m elf64ppc" +++ ;; +++ s390*-*linux*|s390*-*tpf*) +++ LD="${LD-ld} -m elf64_s390" +++ ;; +++ sparc*-*linux*) +++ LD="${LD-ld} -m elf64_sparc" +++ ;; +++ esac +++ ;; +++ esac +++ fi +++ rm -rf conftest* +++ ;; +++ +++*-*-sco3.2v5*) +++ # On SCO OpenServer 5, we need -belf to get full-featured binaries. +++ SAVE_CFLAGS="$CFLAGS" +++ CFLAGS="$CFLAGS -belf" +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler needs -belf" >&5 +++$as_echo_n "checking whether the C compiler needs -belf... " >&6; } +++if ${lt_cv_cc_needs_belf+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ lt_cv_cc_needs_belf=yes +++else +++ lt_cv_cc_needs_belf=no +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++ ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_cc_needs_belf" >&5 +++$as_echo "$lt_cv_cc_needs_belf" >&6; } +++ if test x"$lt_cv_cc_needs_belf" != x"yes"; then +++ # this is probably gcc 2.8.0, egcs 1.0 or newer; no need for -belf +++ CFLAGS="$SAVE_CFLAGS" +++ fi +++ ;; +++sparc*-*solaris*) +++ # Find out which ABI we are using. +++ echo 'int i;' > conftest.$ac_ext +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 +++ (eval $ac_compile) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; }; then +++ case `/usr/bin/file conftest.o` in +++ *64-bit*) +++ case $lt_cv_prog_gnu_ld in +++ yes*) LD="${LD-ld} -m elf64_sparc" ;; +++ *) +++ if ${LD-ld} -64 -r -o conftest2.o conftest.o >/dev/null 2>&1; then +++ LD="${LD-ld} -64" +++ fi +++ ;; +++ esac +++ ;; +++ esac +++ fi +++ rm -rf conftest* +++ ;; +++esac +++ +++need_locks="$enable_libtool_lock" +++ +++ +++ case $host_os in +++ rhapsody* | darwin*) +++ if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}dsymutil", so it can be a program name with args. +++set dummy ${ac_tool_prefix}dsymutil; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_DSYMUTIL+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$DSYMUTIL"; then +++ ac_cv_prog_DSYMUTIL="$DSYMUTIL" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_DSYMUTIL="${ac_tool_prefix}dsymutil" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++DSYMUTIL=$ac_cv_prog_DSYMUTIL +++if test -n "$DSYMUTIL"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $DSYMUTIL" >&5 +++$as_echo "$DSYMUTIL" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_DSYMUTIL"; then +++ ac_ct_DSYMUTIL=$DSYMUTIL +++ # Extract the first word of "dsymutil", so it can be a program name with args. +++set dummy dsymutil; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_DSYMUTIL+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_DSYMUTIL"; then +++ ac_cv_prog_ac_ct_DSYMUTIL="$ac_ct_DSYMUTIL" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_DSYMUTIL="dsymutil" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_DSYMUTIL=$ac_cv_prog_ac_ct_DSYMUTIL +++if test -n "$ac_ct_DSYMUTIL"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_DSYMUTIL" >&5 +++$as_echo "$ac_ct_DSYMUTIL" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_DSYMUTIL" = x; then +++ DSYMUTIL=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ DSYMUTIL=$ac_ct_DSYMUTIL +++ fi +++else +++ DSYMUTIL="$ac_cv_prog_DSYMUTIL" +++fi +++ +++ if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}nmedit", so it can be a program name with args. +++set dummy ${ac_tool_prefix}nmedit; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_NMEDIT+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$NMEDIT"; then +++ ac_cv_prog_NMEDIT="$NMEDIT" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_NMEDIT="${ac_tool_prefix}nmedit" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++NMEDIT=$ac_cv_prog_NMEDIT +++if test -n "$NMEDIT"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $NMEDIT" >&5 +++$as_echo "$NMEDIT" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_NMEDIT"; then +++ ac_ct_NMEDIT=$NMEDIT +++ # Extract the first word of "nmedit", so it can be a program name with args. +++set dummy nmedit; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_NMEDIT+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_NMEDIT"; then +++ ac_cv_prog_ac_ct_NMEDIT="$ac_ct_NMEDIT" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_NMEDIT="nmedit" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_NMEDIT=$ac_cv_prog_ac_ct_NMEDIT +++if test -n "$ac_ct_NMEDIT"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_NMEDIT" >&5 +++$as_echo "$ac_ct_NMEDIT" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_NMEDIT" = x; then +++ NMEDIT=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ NMEDIT=$ac_ct_NMEDIT +++ fi +++else +++ NMEDIT="$ac_cv_prog_NMEDIT" +++fi +++ +++ if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}lipo", so it can be a program name with args. +++set dummy ${ac_tool_prefix}lipo; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_LIPO+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$LIPO"; then +++ ac_cv_prog_LIPO="$LIPO" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_LIPO="${ac_tool_prefix}lipo" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++LIPO=$ac_cv_prog_LIPO +++if test -n "$LIPO"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $LIPO" >&5 +++$as_echo "$LIPO" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_LIPO"; then +++ ac_ct_LIPO=$LIPO +++ # Extract the first word of "lipo", so it can be a program name with args. +++set dummy lipo; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_LIPO+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_LIPO"; then +++ ac_cv_prog_ac_ct_LIPO="$ac_ct_LIPO" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_LIPO="lipo" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_LIPO=$ac_cv_prog_ac_ct_LIPO +++if test -n "$ac_ct_LIPO"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_LIPO" >&5 +++$as_echo "$ac_ct_LIPO" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_LIPO" = x; then +++ LIPO=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ LIPO=$ac_ct_LIPO +++ fi +++else +++ LIPO="$ac_cv_prog_LIPO" +++fi +++ +++ if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}otool", so it can be a program name with args. +++set dummy ${ac_tool_prefix}otool; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_OTOOL+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$OTOOL"; then +++ ac_cv_prog_OTOOL="$OTOOL" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_OTOOL="${ac_tool_prefix}otool" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++OTOOL=$ac_cv_prog_OTOOL +++if test -n "$OTOOL"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL" >&5 +++$as_echo "$OTOOL" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_OTOOL"; then +++ ac_ct_OTOOL=$OTOOL +++ # Extract the first word of "otool", so it can be a program name with args. +++set dummy otool; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_OTOOL+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_OTOOL"; then +++ ac_cv_prog_ac_ct_OTOOL="$ac_ct_OTOOL" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_OTOOL="otool" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_OTOOL=$ac_cv_prog_ac_ct_OTOOL +++if test -n "$ac_ct_OTOOL"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL" >&5 +++$as_echo "$ac_ct_OTOOL" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_OTOOL" = x; then +++ OTOOL=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ OTOOL=$ac_ct_OTOOL +++ fi +++else +++ OTOOL="$ac_cv_prog_OTOOL" +++fi +++ +++ if test -n "$ac_tool_prefix"; then +++ # Extract the first word of "${ac_tool_prefix}otool64", so it can be a program name with args. +++set dummy ${ac_tool_prefix}otool64; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_OTOOL64+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$OTOOL64"; then +++ ac_cv_prog_OTOOL64="$OTOOL64" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_OTOOL64="${ac_tool_prefix}otool64" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++OTOOL64=$ac_cv_prog_OTOOL64 +++if test -n "$OTOOL64"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $OTOOL64" >&5 +++$as_echo "$OTOOL64" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++fi +++if test -z "$ac_cv_prog_OTOOL64"; then +++ ac_ct_OTOOL64=$OTOOL64 +++ # Extract the first word of "otool64", so it can be a program name with args. +++set dummy otool64; ac_word=$2 +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +++$as_echo_n "checking for $ac_word... " >&6; } +++if ${ac_cv_prog_ac_ct_OTOOL64+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test -n "$ac_ct_OTOOL64"; then +++ ac_cv_prog_ac_ct_OTOOL64="$ac_ct_OTOOL64" # Let the user override the test. +++else +++as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ for ac_exec_ext in '' $ac_executable_extensions; do +++ if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then +++ ac_cv_prog_ac_ct_OTOOL64="otool64" +++ $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 +++ break 2 +++ fi +++done +++ done +++IFS=$as_save_IFS +++ +++fi +++fi +++ac_ct_OTOOL64=$ac_cv_prog_ac_ct_OTOOL64 +++if test -n "$ac_ct_OTOOL64"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_OTOOL64" >&5 +++$as_echo "$ac_ct_OTOOL64" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ if test "x$ac_ct_OTOOL64" = x; then +++ OTOOL64=":" +++ else +++ case $cross_compiling:$ac_tool_warned in +++yes:) +++{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +++$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +++ac_tool_warned=yes ;; +++esac +++ OTOOL64=$ac_ct_OTOOL64 +++ fi +++else +++ OTOOL64="$ac_cv_prog_OTOOL64" +++fi +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -single_module linker flag" >&5 +++$as_echo_n "checking for -single_module linker flag... " >&6; } +++if ${lt_cv_apple_cc_single_mod+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_apple_cc_single_mod=no +++ if test -z "${LT_MULTI_MODULE}"; then +++ # By default we will add the -single_module flag. You can override +++ # by either setting the environment variable LT_MULTI_MODULE +++ # non-empty at configure time, or by adding -multi_module to the +++ # link flags. +++ rm -rf libconftest.dylib* +++ echo "int foo(void){return 1;}" > conftest.c +++ echo "$LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +++-dynamiclib -Wl,-single_module conftest.c" >&5 +++ $LTCC $LTCFLAGS $LDFLAGS -o libconftest.dylib \ +++ -dynamiclib -Wl,-single_module conftest.c 2>conftest.err +++ _lt_result=$? +++ if test -f libconftest.dylib && test ! -s conftest.err && test $_lt_result = 0; then +++ lt_cv_apple_cc_single_mod=yes +++ else +++ cat conftest.err >&5 +++ fi +++ rm -rf libconftest.dylib* +++ rm -f conftest.* +++ fi +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_apple_cc_single_mod" >&5 +++$as_echo "$lt_cv_apple_cc_single_mod" >&6; } +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -exported_symbols_list linker flag" >&5 +++$as_echo_n "checking for -exported_symbols_list linker flag... " >&6; } +++if ${lt_cv_ld_exported_symbols_list+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_ld_exported_symbols_list=no +++ save_LDFLAGS=$LDFLAGS +++ echo "_main" > conftest.sym +++ LDFLAGS="$LDFLAGS -Wl,-exported_symbols_list,conftest.sym" +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ lt_cv_ld_exported_symbols_list=yes +++else +++ lt_cv_ld_exported_symbols_list=no +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++ LDFLAGS="$save_LDFLAGS" +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_exported_symbols_list" >&5 +++$as_echo "$lt_cv_ld_exported_symbols_list" >&6; } +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -force_load linker flag" >&5 +++$as_echo_n "checking for -force_load linker flag... " >&6; } +++if ${lt_cv_ld_force_load+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_ld_force_load=no +++ cat > conftest.c << _LT_EOF +++int forced_loaded() { return 2;} +++_LT_EOF +++ echo "$LTCC $LTCFLAGS -c -o conftest.o conftest.c" >&5 +++ $LTCC $LTCFLAGS -c -o conftest.o conftest.c 2>&5 +++ echo "$AR cru libconftest.a conftest.o" >&5 +++ $AR cru libconftest.a conftest.o 2>&5 +++ cat > conftest.c << _LT_EOF +++int main() { return 0;} +++_LT_EOF +++ echo "$LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a" >&5 +++ $LTCC $LTCFLAGS $LDFLAGS -o conftest conftest.c -Wl,-force_load,./libconftest.a 2>conftest.err +++ _lt_result=$? +++ if test -f conftest && test ! -s conftest.err && test $_lt_result = 0 && $GREP forced_load conftest 2>&1 >/dev/null; then +++ lt_cv_ld_force_load=yes +++ else +++ cat conftest.err >&5 +++ fi +++ rm -f conftest.err libconftest.a conftest conftest.c +++ rm -rf conftest.dSYM +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_ld_force_load" >&5 +++$as_echo "$lt_cv_ld_force_load" >&6; } +++ # Allow for Darwin 4-7 (macOS 10.0-10.3) although these are not expect to +++ # build without first building modern cctools / linker. +++ case $host_cpu-$host_os in +++ *-rhapsody* | *-darwin1.[012]) +++ _lt_dar_allow_undefined='${wl}-undefined ${wl}suppress' ;; +++ *-darwin1.*) +++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' ;; +++ *-darwin*) +++ # darwin 5.x (macOS 10.1) onwards we only need to adjust when the +++ # deployment target is forced to an earlier version. +++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host in +++ UNSET,*-darwin[89]*|UNSET,*-darwin[12][0-9]*) +++ ;; +++ 10.[012][,.]*) +++ _lt_dar_allow_undefined='${wl}-flat_namespace ${wl}-undefined ${wl}suppress' +++ ;; +++ *) +++ ;; +++ esac +++ ;; +++ esac +++ if test "$lt_cv_apple_cc_single_mod" = "yes"; then +++ _lt_dar_single_mod='$single_module' +++ fi +++ if test "$lt_cv_ld_exported_symbols_list" = "yes"; then +++ _lt_dar_export_syms=' ${wl}-exported_symbols_list,$output_objdir/${libname}-symbols.expsym' +++ else +++ _lt_dar_export_syms='~$NMEDIT -s $output_objdir/${libname}-symbols.expsym ${lib}' +++ fi +++ if test "$DSYMUTIL" != ":" && test "$lt_cv_ld_force_load" = "no"; then +++ _lt_dsymutil='~$DSYMUTIL $lib || :' +++ else +++ _lt_dsymutil= +++ fi +++ ;; +++ esac +++ +++for ac_header in dlfcn.h +++do : +++ ac_fn_c_check_header_compile "$LINENO" "dlfcn.h" "ac_cv_header_dlfcn_h" "$ac_includes_default +++" +++if test "x$ac_cv_header_dlfcn_h" = xyes; then : +++ cat >>confdefs.h <<_ACEOF +++#define HAVE_DLFCN_H 1 +++_ACEOF +++ +++fi +++ +++done +++ +++ +++ +++ +++ +++# Set options +++ +++ +++ +++ enable_dlopen=no +++ +++ +++ enable_win32_dll=no +++ +++ +++ # Check whether --enable-shared was given. +++if test "${enable_shared+set}" = set; then : +++ enableval=$enable_shared; p=${PACKAGE-default} +++ case $enableval in +++ yes) enable_shared=yes ;; +++ no) enable_shared=no ;; +++ *) +++ enable_shared=no +++ # Look at the argument we got. We use all the common list separators. +++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +++ for pkg in $enableval; do +++ IFS="$lt_save_ifs" +++ if test "X$pkg" = "X$p"; then +++ enable_shared=yes +++ fi +++ done +++ IFS="$lt_save_ifs" +++ ;; +++ esac +++else +++ enable_shared=yes +++fi +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ # Check whether --enable-static was given. +++if test "${enable_static+set}" = set; then : +++ enableval=$enable_static; p=${PACKAGE-default} +++ case $enableval in +++ yes) enable_static=yes ;; +++ no) enable_static=no ;; +++ *) +++ enable_static=no +++ # Look at the argument we got. We use all the common list separators. +++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +++ for pkg in $enableval; do +++ IFS="$lt_save_ifs" +++ if test "X$pkg" = "X$p"; then +++ enable_static=yes +++ fi +++ done +++ IFS="$lt_save_ifs" +++ ;; +++ esac +++else +++ enable_static=yes +++fi +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++# Check whether --with-pic was given. +++if test "${with_pic+set}" = set; then : +++ withval=$with_pic; pic_mode="$withval" +++else +++ pic_mode=default +++fi +++ +++ +++test -z "$pic_mode" && pic_mode=default +++ +++ +++ +++ +++ +++ +++ +++ # Check whether --enable-fast-install was given. +++if test "${enable_fast_install+set}" = set; then : +++ enableval=$enable_fast_install; p=${PACKAGE-default} +++ case $enableval in +++ yes) enable_fast_install=yes ;; +++ no) enable_fast_install=no ;; +++ *) +++ enable_fast_install=no +++ # Look at the argument we got. We use all the common list separators. +++ lt_save_ifs="$IFS"; IFS="${IFS}$PATH_SEPARATOR," +++ for pkg in $enableval; do +++ IFS="$lt_save_ifs" +++ if test "X$pkg" = "X$p"; then +++ enable_fast_install=yes +++ fi +++ done +++ IFS="$lt_save_ifs" +++ ;; +++ esac +++else +++ enable_fast_install=yes +++fi +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++# This can be used to rebuild libtool when needed +++LIBTOOL_DEPS="$ltmain" +++ +++# Always use our own libtool. +++LIBTOOL='$(SHELL) $(top_builddir)/libtool' +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++test -z "$LN_S" && LN_S="ln -s" +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++if test -n "${ZSH_VERSION+set}" ; then +++ setopt NO_GLOB_SUBST +++fi +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for objdir" >&5 +++$as_echo_n "checking for objdir... " >&6; } +++if ${lt_cv_objdir+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ rm -f .libs 2>/dev/null +++mkdir .libs 2>/dev/null +++if test -d .libs; then +++ lt_cv_objdir=.libs +++else +++ # MS-DOS does not allow filenames that begin with a dot. +++ lt_cv_objdir=_libs +++fi +++rmdir .libs 2>/dev/null +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_objdir" >&5 +++$as_echo "$lt_cv_objdir" >&6; } +++objdir=$lt_cv_objdir +++ +++ +++ +++ +++ +++cat >>confdefs.h <<_ACEOF +++#define LT_OBJDIR "$lt_cv_objdir/" +++_ACEOF +++ +++ +++ +++ +++case $host_os in +++aix3*) +++ # AIX sometimes has problems with the GCC collect2 program. For some +++ # reason, if we set the COLLECT_NAMES environment variable, the problems +++ # vanish in a puff of smoke. +++ if test "X${COLLECT_NAMES+set}" != Xset; then +++ COLLECT_NAMES= +++ export COLLECT_NAMES +++ fi +++ ;; +++esac +++ +++# Global variables: +++ofile=libtool +++can_build_shared=yes +++ +++# All known linkers require a `.a' archive for static linking (except MSVC, +++# which needs '.lib'). +++libext=a +++ +++with_gnu_ld="$lt_cv_prog_gnu_ld" +++ +++old_CC="$CC" +++old_CFLAGS="$CFLAGS" +++ +++# Set sane defaults for various variables +++test -z "$CC" && CC=cc +++test -z "$LTCC" && LTCC=$CC +++test -z "$LTCFLAGS" && LTCFLAGS=$CFLAGS +++test -z "$LD" && LD=ld +++test -z "$ac_objext" && ac_objext=o +++ +++for cc_temp in $compiler""; do +++ case $cc_temp in +++ compile | *[\\/]compile | ccache | *[\\/]ccache ) ;; +++ distcc | *[\\/]distcc | purify | *[\\/]purify ) ;; +++ \-*) ;; +++ *) break;; +++ esac +++done +++cc_basename=`$ECHO "$cc_temp" | $SED "s%.*/%%; s%^$host_alias-%%"` +++ +++ +++# Only perform the check for file, if the check method requires it +++test -z "$MAGIC_CMD" && MAGIC_CMD=file +++case $deplibs_check_method in +++file_magic*) +++ if test "$file_magic_cmd" = '$MAGIC_CMD'; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ${ac_tool_prefix}file" >&5 +++$as_echo_n "checking for ${ac_tool_prefix}file... " >&6; } +++if ${lt_cv_path_MAGIC_CMD+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ case $MAGIC_CMD in +++[\\/*] | ?:[\\/]*) +++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +++ ;; +++*) +++ lt_save_MAGIC_CMD="$MAGIC_CMD" +++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" +++ for ac_dir in $ac_dummy; do +++ IFS="$lt_save_ifs" +++ test -z "$ac_dir" && ac_dir=. +++ if test -f $ac_dir/${ac_tool_prefix}file; then +++ lt_cv_path_MAGIC_CMD="$ac_dir/${ac_tool_prefix}file" +++ if test -n "$file_magic_test_file"; then +++ case $deplibs_check_method in +++ "file_magic "*) +++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` +++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +++ $EGREP "$file_magic_regex" > /dev/null; then +++ : +++ else +++ cat <<_LT_EOF 1>&2 +++ +++*** Warning: the command libtool uses to detect shared libraries, +++*** $file_magic_cmd, produces output that libtool cannot recognize. +++*** The result is that libtool may fail to recognize shared libraries +++*** as such. This will affect the creation of libtool libraries that +++*** depend on shared libraries, but programs linked with such libtool +++*** libraries will work regardless of this problem. Nevertheless, you +++*** may want to report the problem to your system manager and/or to +++*** bug-libtool@gnu.org +++ +++_LT_EOF +++ fi ;; +++ esac +++ fi +++ break +++ fi +++ done +++ IFS="$lt_save_ifs" +++ MAGIC_CMD="$lt_save_MAGIC_CMD" +++ ;; +++esac +++fi +++ +++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +++if test -n "$MAGIC_CMD"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +++$as_echo "$MAGIC_CMD" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ +++ +++ +++if test -z "$lt_cv_path_MAGIC_CMD"; then +++ if test -n "$ac_tool_prefix"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for file" >&5 +++$as_echo_n "checking for file... " >&6; } +++if ${lt_cv_path_MAGIC_CMD+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ case $MAGIC_CMD in +++[\\/*] | ?:[\\/]*) +++ lt_cv_path_MAGIC_CMD="$MAGIC_CMD" # Let the user override the test with a path. +++ ;; +++*) +++ lt_save_MAGIC_CMD="$MAGIC_CMD" +++ lt_save_ifs="$IFS"; IFS=$PATH_SEPARATOR +++ ac_dummy="/usr/bin$PATH_SEPARATOR$PATH" +++ for ac_dir in $ac_dummy; do +++ IFS="$lt_save_ifs" +++ test -z "$ac_dir" && ac_dir=. +++ if test -f $ac_dir/file; then +++ lt_cv_path_MAGIC_CMD="$ac_dir/file" +++ if test -n "$file_magic_test_file"; then +++ case $deplibs_check_method in +++ "file_magic "*) +++ file_magic_regex=`expr "$deplibs_check_method" : "file_magic \(.*\)"` +++ MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +++ if eval $file_magic_cmd \$file_magic_test_file 2> /dev/null | +++ $EGREP "$file_magic_regex" > /dev/null; then +++ : +++ else +++ cat <<_LT_EOF 1>&2 +++ +++*** Warning: the command libtool uses to detect shared libraries, +++*** $file_magic_cmd, produces output that libtool cannot recognize. +++*** The result is that libtool may fail to recognize shared libraries +++*** as such. This will affect the creation of libtool libraries that +++*** depend on shared libraries, but programs linked with such libtool +++*** libraries will work regardless of this problem. Nevertheless, you +++*** may want to report the problem to your system manager and/or to +++*** bug-libtool@gnu.org +++ +++_LT_EOF +++ fi ;; +++ esac +++ fi +++ break +++ fi +++ done +++ IFS="$lt_save_ifs" +++ MAGIC_CMD="$lt_save_MAGIC_CMD" +++ ;; +++esac +++fi +++ +++MAGIC_CMD="$lt_cv_path_MAGIC_CMD" +++if test -n "$MAGIC_CMD"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MAGIC_CMD" >&5 +++$as_echo "$MAGIC_CMD" >&6; } +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++fi +++ +++ +++ else +++ MAGIC_CMD=: +++ fi +++fi +++ +++ fi +++ ;; +++esac +++ +++# Use C for the default configuration in the libtool script +++ +++lt_save_CC="$CC" +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ +++# Source file extension for C test sources. +++ac_ext=c +++ +++# Object file extension for compiled C test sources. +++objext=o +++objext=$objext +++ +++# Code to be used in simple compile tests +++lt_simple_compile_test_code="int some_variable = 0;" +++ +++# Code to be used in simple link tests +++lt_simple_link_test_code='int main(){return(0);}' +++ +++ +++ +++ +++ +++ +++ +++# If no C compiler was specified, use CC. +++LTCC=${LTCC-"$CC"} +++ +++# If no C compiler flags were specified, use CFLAGS. +++LTCFLAGS=${LTCFLAGS-"$CFLAGS"} +++ +++# Allow CC to be a program name with arguments. +++compiler=$CC +++ +++# Save the default compiler, since it gets overwritten when the other +++# tags are being tested, and _LT_TAGVAR(compiler, []) is a NOP. +++compiler_DEFAULT=$CC +++ +++# save warnings/boilerplate of simple test code +++ac_outfile=conftest.$ac_objext +++echo "$lt_simple_compile_test_code" >conftest.$ac_ext +++eval "$ac_compile" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +++_lt_compiler_boilerplate=`cat conftest.err` +++$RM conftest* +++ +++ac_outfile=conftest.$ac_objext +++echo "$lt_simple_link_test_code" >conftest.$ac_ext +++eval "$ac_link" 2>&1 >/dev/null | $SED '/^$/d; /^ *+/d' >conftest.err +++_lt_linker_boilerplate=`cat conftest.err` +++$RM -r conftest* +++ +++ +++## CAVEAT EMPTOR: +++## There is no encapsulation within the following macros, do not change +++## the running order or otherwise move them around unless you know exactly +++## what you are doing... +++if test -n "$compiler"; then +++ +++lt_prog_compiler_no_builtin_flag= +++ +++if test "$GCC" = yes; then +++ case $cc_basename in +++ nvcc*) +++ lt_prog_compiler_no_builtin_flag=' -Xcompiler -fno-builtin' ;; +++ *) +++ lt_prog_compiler_no_builtin_flag=' -fno-builtin' ;; +++ esac +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -fno-rtti -fno-exceptions" >&5 +++$as_echo_n "checking if $compiler supports -fno-rtti -fno-exceptions... " >&6; } +++if ${lt_cv_prog_compiler_rtti_exceptions+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_prog_compiler_rtti_exceptions=no +++ ac_outfile=conftest.$ac_objext +++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext +++ lt_compiler_flag="-fno-rtti -fno-exceptions" +++ # Insert the option either (1) after the last *FLAGS variable, or +++ # (2) before a word containing "conftest.", or (3) at the end. +++ # Note that $ac_compile itself does not contain backslashes and begins +++ # with a dollar sign (not a hyphen), so the echo should work correctly. +++ # The option is referenced via a variable to avoid confusing sed. +++ lt_compile=`echo "$ac_compile" | $SED \ +++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +++ -e 's:$: $lt_compiler_flag:'` +++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) +++ (eval "$lt_compile" 2>conftest.err) +++ ac_status=$? +++ cat conftest.err >&5 +++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 +++ if (exit $ac_status) && test -s "$ac_outfile"; then +++ # The compiler can only warn and ignore the option if not recognized +++ # So say no if there are warnings other than the usual output. +++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp +++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +++ lt_cv_prog_compiler_rtti_exceptions=yes +++ fi +++ fi +++ $RM conftest* +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_rtti_exceptions" >&5 +++$as_echo "$lt_cv_prog_compiler_rtti_exceptions" >&6; } +++ +++if test x"$lt_cv_prog_compiler_rtti_exceptions" = xyes; then +++ lt_prog_compiler_no_builtin_flag="$lt_prog_compiler_no_builtin_flag -fno-rtti -fno-exceptions" +++else +++ : +++fi +++ +++fi +++ +++ +++ +++ +++ +++ +++ lt_prog_compiler_wl= +++lt_prog_compiler_pic= +++lt_prog_compiler_static= +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $compiler option to produce PIC" >&5 +++$as_echo_n "checking for $compiler option to produce PIC... " >&6; } +++ +++ if test "$GCC" = yes; then +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_static='-static' +++ +++ case $host_os in +++ aix*) +++ # All AIX code is PIC. +++ if test "$host_cpu" = ia64; then +++ # AIX 5 now supports IA64 processor +++ lt_prog_compiler_static='-Bstatic' +++ fi +++ lt_prog_compiler_pic='-fPIC' +++ ;; +++ +++ amigaos*) +++ case $host_cpu in +++ powerpc) +++ # see comment about AmigaOS4 .so support +++ lt_prog_compiler_pic='-fPIC' +++ ;; +++ m68k) +++ # FIXME: we need at least 68020 code to build shared libraries, but +++ # adding the `-m68020' flag to GCC prevents building anything better, +++ # like `-m68040'. +++ lt_prog_compiler_pic='-m68020 -resident32 -malways-restore-a4' +++ ;; +++ esac +++ ;; +++ +++ beos* | irix5* | irix6* | nonstopux* | osf3* | osf4* | osf5*) +++ # PIC is the default for these OSes. +++ ;; +++ +++ mingw* | cygwin* | pw32* | os2* | cegcc*) +++ # This hack is so that the source file can tell whether it is being +++ # built for inclusion in a dll (and should export symbols for example). +++ # Although the cygwin gcc ignores -fPIC, still need this for old-style +++ # (--disable-auto-import) libraries +++ lt_prog_compiler_pic='-DDLL_EXPORT' +++ ;; +++ +++ darwin* | rhapsody*) +++ # PIC is the default on this platform +++ # Common symbols not allowed in MH_DYLIB files +++ lt_prog_compiler_pic='-fno-common' +++ ;; +++ +++ haiku*) +++ # PIC is the default for Haiku. +++ # The "-static" flag exists, but is broken. +++ lt_prog_compiler_static= +++ ;; +++ +++ hpux*) +++ # PIC is the default for 64-bit PA HP-UX, but not for 32-bit +++ # PA HP-UX. On IA64 HP-UX, PIC is the default but the pic flag +++ # sets the default TLS model and affects inlining. +++ case $host_cpu in +++ hppa*64*) +++ # +Z the default +++ ;; +++ *) +++ lt_prog_compiler_pic='-fPIC' +++ ;; +++ esac +++ ;; +++ +++ interix[3-9]*) +++ # Interix 3.x gcc -fpic/-fPIC options generate broken code. +++ # Instead, we relocate shared libraries at runtime. +++ ;; +++ +++ msdosdjgpp*) +++ # Just because we use GCC doesn't mean we suddenly get shared libraries +++ # on systems that don't support them. +++ lt_prog_compiler_can_build_shared=no +++ enable_shared=no +++ ;; +++ +++ *nto* | *qnx*) +++ # QNX uses GNU C++, but need to define -shared option too, otherwise +++ # it will coredump. +++ lt_prog_compiler_pic='-fPIC -shared' +++ ;; +++ +++ sysv4*MP*) +++ if test -d /usr/nec; then +++ lt_prog_compiler_pic=-Kconform_pic +++ fi +++ ;; +++ +++ *) +++ lt_prog_compiler_pic='-fPIC' +++ ;; +++ esac +++ +++ case $cc_basename in +++ nvcc*) # Cuda Compiler Driver 2.2 +++ lt_prog_compiler_wl='-Xlinker ' +++ lt_prog_compiler_pic='-Xcompiler -fPIC' +++ ;; +++ esac +++ else +++ # PORTME Check for flag to pass linker flags through the system compiler. +++ case $host_os in +++ aix*) +++ lt_prog_compiler_wl='-Wl,' +++ if test "$host_cpu" = ia64; then +++ # AIX 5 now supports IA64 processor +++ lt_prog_compiler_static='-Bstatic' +++ else +++ lt_prog_compiler_static='-bnso -bI:/lib/syscalls.exp' +++ fi +++ ;; +++ +++ mingw* | cygwin* | pw32* | os2* | cegcc*) +++ # This hack is so that the source file can tell whether it is being +++ # built for inclusion in a dll (and should export symbols for example). +++ lt_prog_compiler_pic='-DDLL_EXPORT' +++ ;; +++ +++ hpux9* | hpux10* | hpux11*) +++ lt_prog_compiler_wl='-Wl,' +++ # PIC is the default for IA64 HP-UX and 64-bit HP-UX, but +++ # not for PA HP-UX. +++ case $host_cpu in +++ hppa*64*|ia64*) +++ # +Z the default +++ ;; +++ *) +++ lt_prog_compiler_pic='+Z' +++ ;; +++ esac +++ # Is there a better lt_prog_compiler_static that works with the bundled CC? +++ lt_prog_compiler_static='${wl}-a ${wl}archive' +++ ;; +++ +++ irix5* | irix6* | nonstopux*) +++ lt_prog_compiler_wl='-Wl,' +++ # PIC (with -KPIC) is the default. +++ lt_prog_compiler_static='-non_shared' +++ ;; +++ +++ linux* | k*bsd*-gnu | kopensolaris*-gnu) +++ case $cc_basename in +++ # old Intel for x86_64 which still supported -KPIC. +++ ecc*) +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_pic='-KPIC' +++ lt_prog_compiler_static='-static' +++ ;; +++ # icc used to be incompatible with GCC. +++ # ICC 10 doesn't accept -KPIC any more. +++ icc* | ifort*) +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_pic='-fPIC' +++ lt_prog_compiler_static='-static' +++ ;; +++ # Lahey Fortran 8.1. +++ lf95*) +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_pic='--shared' +++ lt_prog_compiler_static='--static' +++ ;; +++ pgcc* | pgf77* | pgf90* | pgf95* | pgfortran*) +++ # Portland Group compilers (*not* the Pentium gcc compiler, +++ # which looks to be a dead project) +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_pic='-fpic' +++ lt_prog_compiler_static='-Bstatic' +++ ;; +++ ccc*) +++ lt_prog_compiler_wl='-Wl,' +++ # All Alpha code is PIC. +++ lt_prog_compiler_static='-non_shared' +++ ;; +++ xl* | bgxl* | bgf* | mpixl*) +++ # IBM XL C 8.0/Fortran 10.1, 11.1 on PPC and BlueGene +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_pic='-qpic' +++ lt_prog_compiler_static='-qstaticlink' +++ ;; +++ *) +++ case `$CC -V 2>&1 | sed 5q` in +++ *Sun\ F* | *Sun*Fortran*) +++ # Sun Fortran 8.3 passes all unrecognized flags to the linker +++ lt_prog_compiler_pic='-KPIC' +++ lt_prog_compiler_static='-Bstatic' +++ lt_prog_compiler_wl='' +++ ;; +++ *Sun\ C*) +++ # Sun C 5.9 +++ lt_prog_compiler_pic='-KPIC' +++ lt_prog_compiler_static='-Bstatic' +++ lt_prog_compiler_wl='-Wl,' +++ ;; +++ esac +++ ;; +++ esac +++ ;; +++ +++ newsos6) +++ lt_prog_compiler_pic='-KPIC' +++ lt_prog_compiler_static='-Bstatic' +++ ;; +++ +++ *nto* | *qnx*) +++ # QNX uses GNU C++, but need to define -shared option too, otherwise +++ # it will coredump. +++ lt_prog_compiler_pic='-fPIC -shared' +++ ;; +++ +++ osf3* | osf4* | osf5*) +++ lt_prog_compiler_wl='-Wl,' +++ # All OSF/1 code is PIC. +++ lt_prog_compiler_static='-non_shared' +++ ;; +++ +++ rdos*) +++ lt_prog_compiler_static='-non_shared' +++ ;; +++ +++ solaris*) +++ lt_prog_compiler_pic='-KPIC' +++ lt_prog_compiler_static='-Bstatic' +++ case $cc_basename in +++ f77* | f90* | f95*) +++ lt_prog_compiler_wl='-Qoption ld ';; +++ *) +++ lt_prog_compiler_wl='-Wl,';; +++ esac +++ ;; +++ +++ sunos4*) +++ lt_prog_compiler_wl='-Qoption ld ' +++ lt_prog_compiler_pic='-PIC' +++ lt_prog_compiler_static='-Bstatic' +++ ;; +++ +++ sysv4 | sysv4.2uw2* | sysv4.3*) +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_pic='-KPIC' +++ lt_prog_compiler_static='-Bstatic' +++ ;; +++ +++ sysv4*MP*) +++ if test -d /usr/nec ;then +++ lt_prog_compiler_pic='-Kconform_pic' +++ lt_prog_compiler_static='-Bstatic' +++ fi +++ ;; +++ +++ sysv5* | unixware* | sco3.2v5* | sco5v6* | OpenUNIX*) +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_pic='-KPIC' +++ lt_prog_compiler_static='-Bstatic' +++ ;; +++ +++ unicos*) +++ lt_prog_compiler_wl='-Wl,' +++ lt_prog_compiler_can_build_shared=no +++ ;; +++ +++ uts4*) +++ lt_prog_compiler_pic='-pic' +++ lt_prog_compiler_static='-Bstatic' +++ ;; +++ +++ *) +++ lt_prog_compiler_can_build_shared=no +++ ;; +++ esac +++ fi +++ +++case $host_os in +++ # For platforms which do not support PIC, -DPIC is meaningless: +++ *djgpp*) +++ lt_prog_compiler_pic= +++ ;; +++ *) +++ lt_prog_compiler_pic="$lt_prog_compiler_pic -DPIC" +++ ;; +++esac +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_prog_compiler_pic" >&5 +++$as_echo "$lt_prog_compiler_pic" >&6; } +++ +++ +++ +++ +++ +++ +++# +++# Check to make sure the PIC flag actually works. +++# +++if test -n "$lt_prog_compiler_pic"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler PIC flag $lt_prog_compiler_pic works" >&5 +++$as_echo_n "checking if $compiler PIC flag $lt_prog_compiler_pic works... " >&6; } +++if ${lt_cv_prog_compiler_pic_works+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_prog_compiler_pic_works=no +++ ac_outfile=conftest.$ac_objext +++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext +++ lt_compiler_flag="$lt_prog_compiler_pic -DPIC" +++ # Insert the option either (1) after the last *FLAGS variable, or +++ # (2) before a word containing "conftest.", or (3) at the end. +++ # Note that $ac_compile itself does not contain backslashes and begins +++ # with a dollar sign (not a hyphen), so the echo should work correctly. +++ # The option is referenced via a variable to avoid confusing sed. +++ lt_compile=`echo "$ac_compile" | $SED \ +++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +++ -e 's:$: $lt_compiler_flag:'` +++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) +++ (eval "$lt_compile" 2>conftest.err) +++ ac_status=$? +++ cat conftest.err >&5 +++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 +++ if (exit $ac_status) && test -s "$ac_outfile"; then +++ # The compiler can only warn and ignore the option if not recognized +++ # So say no if there are warnings other than the usual output. +++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' >conftest.exp +++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +++ if test ! -s conftest.er2 || diff conftest.exp conftest.er2 >/dev/null; then +++ lt_cv_prog_compiler_pic_works=yes +++ fi +++ fi +++ $RM conftest* +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_pic_works" >&5 +++$as_echo "$lt_cv_prog_compiler_pic_works" >&6; } +++ +++if test x"$lt_cv_prog_compiler_pic_works" = xyes; then +++ case $lt_prog_compiler_pic in +++ "" | " "*) ;; +++ *) lt_prog_compiler_pic=" $lt_prog_compiler_pic" ;; +++ esac +++else +++ lt_prog_compiler_pic= +++ lt_prog_compiler_can_build_shared=no +++fi +++ +++fi +++ +++ +++ +++ +++ +++ +++# +++# Check to make sure the static flag actually works. +++# +++wl=$lt_prog_compiler_wl eval lt_tmp_static_flag=\"$lt_prog_compiler_static\" +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler static flag $lt_tmp_static_flag works" >&5 +++$as_echo_n "checking if $compiler static flag $lt_tmp_static_flag works... " >&6; } +++if ${lt_cv_prog_compiler_static_works+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_prog_compiler_static_works=no +++ save_LDFLAGS="$LDFLAGS" +++ LDFLAGS="$LDFLAGS $lt_tmp_static_flag" +++ echo "$lt_simple_link_test_code" > conftest.$ac_ext +++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +++ # The linker can only warn and ignore the option if not recognized +++ # So say no if there are warnings +++ if test -s conftest.err; then +++ # Append any errors to the config.log. +++ cat conftest.err 1>&5 +++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp +++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +++ if diff conftest.exp conftest.er2 >/dev/null; then +++ lt_cv_prog_compiler_static_works=yes +++ fi +++ else +++ lt_cv_prog_compiler_static_works=yes +++ fi +++ fi +++ $RM -r conftest* +++ LDFLAGS="$save_LDFLAGS" +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_static_works" >&5 +++$as_echo "$lt_cv_prog_compiler_static_works" >&6; } +++ +++if test x"$lt_cv_prog_compiler_static_works" = xyes; then +++ : +++else +++ lt_prog_compiler_static= +++fi +++ +++ +++ +++ +++ +++ +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +++$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +++if ${lt_cv_prog_compiler_c_o+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_prog_compiler_c_o=no +++ $RM -r conftest 2>/dev/null +++ mkdir conftest +++ cd conftest +++ mkdir out +++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext +++ +++ lt_compiler_flag="-o out/conftest2.$ac_objext" +++ # Insert the option either (1) after the last *FLAGS variable, or +++ # (2) before a word containing "conftest.", or (3) at the end. +++ # Note that $ac_compile itself does not contain backslashes and begins +++ # with a dollar sign (not a hyphen), so the echo should work correctly. +++ lt_compile=`echo "$ac_compile" | $SED \ +++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +++ -e 's:$: $lt_compiler_flag:'` +++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) +++ (eval "$lt_compile" 2>out/conftest.err) +++ ac_status=$? +++ cat out/conftest.err >&5 +++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 +++ if (exit $ac_status) && test -s out/conftest2.$ac_objext +++ then +++ # The compiler can only warn and ignore the option if not recognized +++ # So say no if there are warnings +++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp +++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +++ lt_cv_prog_compiler_c_o=yes +++ fi +++ fi +++ chmod u+w . 2>&5 +++ $RM conftest* +++ # SGI C++ compiler will create directory out/ii_files/ for +++ # template instantiation +++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files +++ $RM out/* && rmdir out +++ cd .. +++ $RM -r conftest +++ $RM conftest* +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +++$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +++ +++ +++ +++ +++ +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $compiler supports -c -o file.$ac_objext" >&5 +++$as_echo_n "checking if $compiler supports -c -o file.$ac_objext... " >&6; } +++if ${lt_cv_prog_compiler_c_o+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_prog_compiler_c_o=no +++ $RM -r conftest 2>/dev/null +++ mkdir conftest +++ cd conftest +++ mkdir out +++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext +++ +++ lt_compiler_flag="-o out/conftest2.$ac_objext" +++ # Insert the option either (1) after the last *FLAGS variable, or +++ # (2) before a word containing "conftest.", or (3) at the end. +++ # Note that $ac_compile itself does not contain backslashes and begins +++ # with a dollar sign (not a hyphen), so the echo should work correctly. +++ lt_compile=`echo "$ac_compile" | $SED \ +++ -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \ +++ -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \ +++ -e 's:$: $lt_compiler_flag:'` +++ (eval echo "\"\$as_me:$LINENO: $lt_compile\"" >&5) +++ (eval "$lt_compile" 2>out/conftest.err) +++ ac_status=$? +++ cat out/conftest.err >&5 +++ echo "$as_me:$LINENO: \$? = $ac_status" >&5 +++ if (exit $ac_status) && test -s out/conftest2.$ac_objext +++ then +++ # The compiler can only warn and ignore the option if not recognized +++ # So say no if there are warnings +++ $ECHO "$_lt_compiler_boilerplate" | $SED '/^$/d' > out/conftest.exp +++ $SED '/^$/d; /^ *+/d' out/conftest.err >out/conftest.er2 +++ if test ! -s out/conftest.er2 || diff out/conftest.exp out/conftest.er2 >/dev/null; then +++ lt_cv_prog_compiler_c_o=yes +++ fi +++ fi +++ chmod u+w . 2>&5 +++ $RM conftest* +++ # SGI C++ compiler will create directory out/ii_files/ for +++ # template instantiation +++ test -d out/ii_files && $RM out/ii_files/* && rmdir out/ii_files +++ $RM out/* && rmdir out +++ cd .. +++ $RM -r conftest +++ $RM conftest* +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler_c_o" >&5 +++$as_echo "$lt_cv_prog_compiler_c_o" >&6; } +++ +++ +++ +++ +++hard_links="nottested" +++if test "$lt_cv_prog_compiler_c_o" = no && test "$need_locks" != no; then +++ # do not overwrite the value of need_locks provided by the user +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if we can lock with hard links" >&5 +++$as_echo_n "checking if we can lock with hard links... " >&6; } +++ hard_links=yes +++ $RM conftest* +++ ln conftest.a conftest.b 2>/dev/null && hard_links=no +++ touch conftest.a +++ ln conftest.a conftest.b 2>&5 || hard_links=no +++ ln conftest.a conftest.b 2>/dev/null && hard_links=no +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $hard_links" >&5 +++$as_echo "$hard_links" >&6; } +++ if test "$hard_links" = no; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&5 +++$as_echo "$as_me: WARNING: \`$CC' does not support \`-c -o', so \`make -j' may be unsafe" >&2;} +++ need_locks=warn +++ fi +++else +++ need_locks=no +++fi +++ +++ +++ +++ +++ +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the $compiler linker ($LD) supports shared libraries" >&5 +++$as_echo_n "checking whether the $compiler linker ($LD) supports shared libraries... " >&6; } +++ +++ runpath_var= +++ allow_undefined_flag= +++ always_export_symbols=no +++ archive_cmds= +++ archive_expsym_cmds= +++ compiler_needs_object=no +++ enable_shared_with_static_runtimes=no +++ export_dynamic_flag_spec= +++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED '\''s/.* //'\'' | sort | uniq > $export_symbols' +++ hardcode_automatic=no +++ hardcode_direct=no +++ hardcode_direct_absolute=no +++ hardcode_libdir_flag_spec= +++ hardcode_libdir_flag_spec_ld= +++ hardcode_libdir_separator= +++ hardcode_minus_L=no +++ hardcode_shlibpath_var=unsupported +++ inherit_rpath=no +++ link_all_deplibs=unknown +++ module_cmds= +++ module_expsym_cmds= +++ old_archive_from_new_cmds= +++ old_archive_from_expsyms_cmds= +++ thread_safe_flag_spec= +++ whole_archive_flag_spec= +++ # include_expsyms should be a list of space-separated symbols to be *always* +++ # included in the symbol list +++ include_expsyms= +++ # exclude_expsyms can be an extended regexp of symbols to exclude +++ # it will be wrapped by ` (' and `)$', so one must not match beginning or +++ # end of line. Example: `a|bc|.*d.*' will exclude the symbols `a' and `bc', +++ # as well as any symbol that contains `d'. +++ exclude_expsyms='_GLOBAL_OFFSET_TABLE_|_GLOBAL__F[ID]_.*' +++ # Although _GLOBAL_OFFSET_TABLE_ is a valid symbol C name, most a.out +++ # platforms (ab)use it in PIC code, but their linkers get confused if +++ # the symbol is explicitly referenced. Since portable code cannot +++ # rely on this symbol name, it's probably fine to never include it in +++ # preloaded symbol tables. +++ # Exclude shared library initialization/finalization symbols. +++ extract_expsyms_cmds= +++ +++ case $host_os in +++ cygwin* | mingw* | pw32* | cegcc*) +++ # FIXME: the MSVC++ port hasn't been tested in a loooong time +++ # When not using gcc, we currently assume that we are using +++ # Microsoft Visual C++. +++ if test "$GCC" != yes; then +++ with_gnu_ld=no +++ fi +++ ;; +++ interix*) +++ # we just hope/assume this is gcc and not c89 (= MSVC++) +++ with_gnu_ld=yes +++ ;; +++ openbsd*) +++ with_gnu_ld=no +++ ;; +++ esac +++ +++ ld_shlibs=yes +++ +++ # On some targets, GNU ld is compatible enough with the native linker +++ # that we're better off using the native interface for both. +++ lt_use_gnu_ld_interface=no +++ if test "$with_gnu_ld" = yes; then +++ case $host_os in +++ aix*) +++ # The AIX port of GNU ld has always aspired to compatibility +++ # with the native linker. However, as the warning in the GNU ld +++ # block says, versions before 2.19.5* couldn't really create working +++ # shared libraries, regardless of the interface used. +++ case `$LD -v 2>&1` in +++ *\ \(GNU\ Binutils\)\ 2.19.5*) ;; +++ *\ \(GNU\ Binutils\)\ 2.[2-9]*) ;; +++ *\ \(GNU\ Binutils\)\ [3-9]*) ;; +++ *) +++ lt_use_gnu_ld_interface=yes +++ ;; +++ esac +++ ;; +++ *) +++ lt_use_gnu_ld_interface=yes +++ ;; +++ esac +++ fi +++ +++ if test "$lt_use_gnu_ld_interface" = yes; then +++ # If archive_cmds runs LD, not CC, wlarc should be empty +++ wlarc='${wl}' +++ +++ # Set some defaults for GNU ld with shared library support. These +++ # are reset later if shared libraries are not supported. Putting them +++ # here allows them to be overridden if necessary. +++ runpath_var=LD_RUN_PATH +++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +++ export_dynamic_flag_spec='${wl}--export-dynamic' +++ # ancient GNU ld didn't support --whole-archive et. al. +++ if $LD --help 2>&1 | $GREP 'no-whole-archive' > /dev/null; then +++ whole_archive_flag_spec="$wlarc"'--whole-archive$convenience '"$wlarc"'--no-whole-archive' +++ else +++ whole_archive_flag_spec= +++ fi +++ supports_anon_versioning=no +++ case `$LD -v 2>&1` in +++ *GNU\ gold*) supports_anon_versioning=yes ;; +++ *\ [01].* | *\ 2.[0-9].* | *\ 2.10.*) ;; # catch versions < 2.11 +++ *\ 2.11.93.0.2\ *) supports_anon_versioning=yes ;; # RH7.3 ... +++ *\ 2.11.92.0.12\ *) supports_anon_versioning=yes ;; # Mandrake 8.2 ... +++ *\ 2.11.*) ;; # other 2.11 versions +++ *) supports_anon_versioning=yes ;; +++ esac +++ +++ # See if GNU ld supports shared libraries. +++ case $host_os in +++ aix[3-9]*) +++ # On AIX/PPC, the GNU linker is very broken +++ if test "$host_cpu" != ia64; then +++ ld_shlibs=no +++ cat <<_LT_EOF 1>&2 +++ +++*** Warning: the GNU linker, at least up to release 2.19, is reported +++*** to be unable to reliably create shared libraries on AIX. +++*** Therefore, libtool is disabling shared libraries support. If you +++*** really care for shared libraries, you may want to install binutils +++*** 2.20 or above, or modify your PATH so that a non-GNU linker is found. +++*** You will then need to restart the configuration process. +++ +++_LT_EOF +++ fi +++ ;; +++ +++ amigaos*) +++ case $host_cpu in +++ powerpc) +++ # see comment about AmigaOS4 .so support +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ archive_expsym_cmds='' +++ ;; +++ m68k) +++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +++ hardcode_libdir_flag_spec='-L$libdir' +++ hardcode_minus_L=yes +++ ;; +++ esac +++ ;; +++ +++ beos*) +++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +++ allow_undefined_flag=unsupported +++ # Joseph Beckenbach says some releases of gcc +++ # support --undefined. This deserves some investigation. FIXME +++ archive_cmds='$CC -nostart $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ else +++ ld_shlibs=no +++ fi +++ ;; +++ +++ cygwin* | mingw* | pw32* | cegcc*) +++ # _LT_TAGVAR(hardcode_libdir_flag_spec, ) is actually meaningless, +++ # as there is no search path for DLLs. +++ hardcode_libdir_flag_spec='-L$libdir' +++ export_dynamic_flag_spec='${wl}--export-all-symbols' +++ allow_undefined_flag=unsupported +++ always_export_symbols=no +++ enable_shared_with_static_runtimes=yes +++ export_symbols_cmds='$NM $libobjs $convenience | $global_symbol_pipe | $SED -e '\''/^[BCDGRS][ ]/s/.*[ ]\([^ ]*\)/\1 DATA/'\'' | $SED -e '\''/^[AITW][ ]/s/.*[ ]//'\'' | sort | uniq > $export_symbols' +++ +++ if $LD --help 2>&1 | $GREP 'auto-import' > /dev/null; then +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +++ # If the export-symbols file already is a .def file (1st line +++ # is EXPORTS), use it as is; otherwise, prepend... +++ archive_expsym_cmds='if test "x`$SED 1q $export_symbols`" = xEXPORTS; then +++ cp $export_symbols $output_objdir/$soname.def; +++ else +++ echo EXPORTS > $output_objdir/$soname.def; +++ cat $export_symbols >> $output_objdir/$soname.def; +++ fi~ +++ $CC -shared $output_objdir/$soname.def $libobjs $deplibs $compiler_flags -o $output_objdir/$soname ${wl}--enable-auto-image-base -Xlinker --out-implib -Xlinker $lib' +++ else +++ ld_shlibs=no +++ fi +++ ;; +++ +++ haiku*) +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ link_all_deplibs=yes +++ ;; +++ +++ interix[3-9]*) +++ hardcode_direct=no +++ hardcode_shlibpath_var=no +++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +++ export_dynamic_flag_spec='${wl}-E' +++ # Hack: On Interix 3.x, we cannot compile PIC because of a broken gcc. +++ # Instead, shared libraries are loaded at an image base (0x10000000 by +++ # default) and relocated if they conflict, which is a slow very memory +++ # consuming and fragmenting process. To avoid this, we pick a random, +++ # 256 KiB-aligned image base between 0x50000000 and 0x6FFC0000 at link +++ # time. Moving up from 0x10000000 also allows more sbrk(2) space. +++ archive_cmds='$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +++ archive_expsym_cmds='sed "s,^,_," $export_symbols >$output_objdir/$soname.expsym~$CC -shared $pic_flag $libobjs $deplibs $compiler_flags ${wl}-h,$soname ${wl}--retain-symbols-file,$output_objdir/$soname.expsym ${wl}--image-base,`expr ${RANDOM-$$} % 4096 / 2 \* 262144 + 1342177280` -o $lib' +++ ;; +++ +++ gnu* | linux* | tpf* | k*bsd*-gnu | kopensolaris*-gnu | uclinuxfdpiceabi) +++ tmp_diet=no +++ if test "$host_os" = linux-dietlibc; then +++ case $cc_basename in +++ diet\ *) tmp_diet=yes;; # linux-dietlibc with static linking (!diet-dyn) +++ esac +++ fi +++ if $LD --help 2>&1 | $EGREP ': supported targets:.* elf' > /dev/null \ +++ && test "$tmp_diet" = no +++ then +++ tmp_addflag=' $pic_flag' +++ tmp_sharedflag='-shared' +++ case $cc_basename,$host_cpu in +++ pgcc*) # Portland Group C compiler +++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +++ tmp_addflag=' $pic_flag' +++ ;; +++ pgf77* | pgf90* | pgf95* | pgfortran*) +++ # Portland Group f77 and f90 compilers +++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +++ tmp_addflag=' $pic_flag -Mnomain' ;; +++ ecc*,ia64* | icc*,ia64*) # Intel C compiler on ia64 +++ tmp_addflag=' -i_dynamic' ;; +++ efc*,ia64* | ifort*,ia64*) # Intel Fortran compiler on ia64 +++ tmp_addflag=' -i_dynamic -nofor_main' ;; +++ ifc* | ifort*) # Intel Fortran compiler +++ tmp_addflag=' -nofor_main' ;; +++ lf95*) # Lahey Fortran 8.1 +++ whole_archive_flag_spec= +++ tmp_sharedflag='--shared' ;; +++ xl[cC]* | bgxl[cC]* | mpixl[cC]*) # IBM XL C 8.0 on PPC (deal with xlf below) +++ tmp_sharedflag='-qmkshrobj' +++ tmp_addflag= ;; +++ nvcc*) # Cuda Compiler Driver 2.2 +++ whole_archive_flag_spec='${wl}--whole-archive`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +++ compiler_needs_object=yes +++ ;; +++ esac +++ case `$CC -V 2>&1 | sed 5q` in +++ *Sun\ C*) # Sun C 5.9 +++ whole_archive_flag_spec='${wl}--whole-archive`new_convenience=; for conv in $convenience\"\"; do test -z \"$conv\" || new_convenience=\"$new_convenience,$conv\"; done; func_echo_all \"$new_convenience\"` ${wl}--no-whole-archive' +++ compiler_needs_object=yes +++ tmp_sharedflag='-G' ;; +++ *Sun\ F*) # Sun Fortran 8.3 +++ tmp_sharedflag='-G' ;; +++ esac +++ archive_cmds='$CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ +++ if test "x$supports_anon_versioning" = xyes; then +++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ +++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +++ echo "local: *; };" >> $output_objdir/$libname.ver~ +++ $CC '"$tmp_sharedflag""$tmp_addflag"' $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-version-script ${wl}$output_objdir/$libname.ver -o $lib' +++ fi +++ +++ case $cc_basename in +++ xlf* | bgf* | bgxlf* | mpixlf*) +++ # IBM XL Fortran 10.1 on PPC cannot create shared libs itself +++ whole_archive_flag_spec='--whole-archive$convenience --no-whole-archive' +++ hardcode_libdir_flag_spec= +++ hardcode_libdir_flag_spec_ld='-rpath $libdir' +++ archive_cmds='$LD -shared $libobjs $deplibs $compiler_flags -soname $soname -o $lib' +++ if test "x$supports_anon_versioning" = xyes; then +++ archive_expsym_cmds='echo "{ global:" > $output_objdir/$libname.ver~ +++ cat $export_symbols | sed -e "s/\(.*\)/\1;/" >> $output_objdir/$libname.ver~ +++ echo "local: *; };" >> $output_objdir/$libname.ver~ +++ $LD -shared $libobjs $deplibs $compiler_flags -soname $soname -version-script $output_objdir/$libname.ver -o $lib' +++ fi +++ ;; +++ esac +++ else +++ ld_shlibs=no +++ fi +++ ;; +++ +++ netbsd*) +++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +++ archive_cmds='$LD -Bshareable $libobjs $deplibs $linker_flags -o $lib' +++ wlarc= +++ else +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +++ fi +++ ;; +++ +++ solaris*) +++ if $LD -v 2>&1 | $GREP 'BFD 2\.8' > /dev/null; then +++ ld_shlibs=no +++ cat <<_LT_EOF 1>&2 +++ +++*** Warning: The releases 2.8.* of the GNU linker cannot reliably +++*** create shared libraries on Solaris systems. Therefore, libtool +++*** is disabling shared libraries support. We urge you to upgrade GNU +++*** binutils to release 2.9.1 or newer. Another option is to modify +++*** your PATH or compiler configuration so that the native linker is +++*** used, and then restart. +++ +++_LT_EOF +++ elif $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +++ else +++ ld_shlibs=no +++ fi +++ ;; +++ +++ sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX*) +++ case `$LD -v 2>&1` in +++ *\ [01].* | *\ 2.[0-9].* | *\ 2.1[0-5].*) +++ ld_shlibs=no +++ cat <<_LT_EOF 1>&2 +++ +++*** Warning: Releases of the GNU linker prior to 2.16.91.0.3 can not +++*** reliably create shared libraries on SCO systems. Therefore, libtool +++*** is disabling shared libraries support. We urge you to upgrade GNU +++*** binutils to release 2.16.91.0.3 or newer. Another option is to modify +++*** your PATH or compiler configuration so that the native linker is +++*** used, and then restart. +++ +++_LT_EOF +++ ;; +++ *) +++ # For security reasons, it is highly recommended that you always +++ # use absolute paths for naming shared libraries, and exclude the +++ # DT_RUNPATH tag from executables and libraries. But doing so +++ # requires that you compile everything twice, which is a pain. +++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +++ else +++ ld_shlibs=no +++ fi +++ ;; +++ esac +++ ;; +++ +++ sunos4*) +++ archive_cmds='$LD -assert pure-text -Bshareable -o $lib $libobjs $deplibs $linker_flags' +++ wlarc= +++ hardcode_direct=yes +++ hardcode_shlibpath_var=no +++ ;; +++ +++ *) +++ if $LD --help 2>&1 | $GREP ': supported targets:.* elf' > /dev/null; then +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname ${wl}-retain-symbols-file $wl$export_symbols -o $lib' +++ else +++ ld_shlibs=no +++ fi +++ ;; +++ esac +++ +++ if test "$ld_shlibs" = no; then +++ runpath_var= +++ hardcode_libdir_flag_spec= +++ export_dynamic_flag_spec= +++ whole_archive_flag_spec= +++ fi +++ else +++ # PORTME fill in a description of your system's linker (not GNU ld) +++ case $host_os in +++ aix3*) +++ allow_undefined_flag=unsupported +++ always_export_symbols=yes +++ archive_expsym_cmds='$LD -o $output_objdir/$soname $libobjs $deplibs $linker_flags -bE:$export_symbols -T512 -H512 -bM:SRE~$AR $AR_FLAGS $lib $output_objdir/$soname' +++ # Note: this linker hardcodes the directories in LIBPATH if there +++ # are no directories specified by -L. +++ hardcode_minus_L=yes +++ if test "$GCC" = yes && test -z "$lt_prog_compiler_static"; then +++ # Neither direct hardcoding nor static linking is supported with a +++ # broken collect2. +++ hardcode_direct=unsupported +++ fi +++ ;; +++ +++ aix[4-9]*) +++ if test "$host_cpu" = ia64; then +++ # On IA64, the linker does run time linking by default, so we don't +++ # have to do anything special. +++ aix_use_runtimelinking=no +++ exp_sym_flag='-Bexport' +++ no_entry_flag="" +++ else +++ # If we're using GNU nm, then we don't want the "-C" option. +++ # -C means demangle to AIX nm, but means don't demangle with GNU nm +++ # Also, AIX nm treats weak defined symbols like other global +++ # defined symbols, whereas GNU nm marks them as "W". +++ if $NM -V 2>&1 | $GREP 'GNU' > /dev/null; then +++ export_symbols_cmds='$NM -Bpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "W")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +++ else +++ export_symbols_cmds='$NM -BCpg $libobjs $convenience | awk '\''{ if (((\$ 2 == "T") || (\$ 2 == "D") || (\$ 2 == "B") || (\$ 2 == "L")) && (substr(\$ 3,1,1) != ".")) { print \$ 3 } }'\'' | sort -u > $export_symbols' +++ fi +++ aix_use_runtimelinking=no +++ +++ # Test if we are trying to use run time linking or normal +++ # AIX style linking. If -brtl is somewhere in LDFLAGS, we +++ # need to do runtime linking. +++ case $host_os in aix4.[23]|aix4.[23].*|aix[5-9]*) +++ for ld_flag in $LDFLAGS; do +++ if (test $ld_flag = "-brtl" || test $ld_flag = "-Wl,-brtl"); then +++ aix_use_runtimelinking=yes +++ break +++ fi +++ done +++ ;; +++ esac +++ +++ exp_sym_flag='-bexport' +++ no_entry_flag='-bnoentry' +++ fi +++ +++ # When large executables or shared objects are built, AIX ld can +++ # have problems creating the table of contents. If linking a library +++ # or program results in "error TOC overflow" add -mminimal-toc to +++ # CXXFLAGS/CFLAGS for g++/gcc. In the cases where that is not +++ # enough to fix the problem, add -Wl,-bbigtoc to LDFLAGS. +++ +++ archive_cmds='' +++ hardcode_direct=yes +++ hardcode_direct_absolute=yes +++ hardcode_libdir_separator=':' +++ link_all_deplibs=yes +++ file_list_spec='${wl}-f,' +++ +++ if test "$GCC" = yes; then +++ case $host_os in aix4.[012]|aix4.[012].*) +++ # We only want to do this on AIX 4.2 and lower, the check +++ # below for broken collect2 doesn't work under 4.3+ +++ collect2name=`${CC} -print-prog-name=collect2` +++ if test -f "$collect2name" && +++ strings "$collect2name" | $GREP resolve_lib_name >/dev/null +++ then +++ # We have reworked collect2 +++ : +++ else +++ # We have old collect2 +++ hardcode_direct=unsupported +++ # It fails to find uninstalled libraries when the uninstalled +++ # path is not listed in the libpath. Setting hardcode_minus_L +++ # to unsupported forces relinking +++ hardcode_minus_L=yes +++ hardcode_libdir_flag_spec='-L$libdir' +++ hardcode_libdir_separator= +++ fi +++ ;; +++ esac +++ shared_flag='-shared' +++ if test "$aix_use_runtimelinking" = yes; then +++ shared_flag="$shared_flag "'${wl}-G' +++ fi +++ else +++ # not using gcc +++ if test "$host_cpu" = ia64; then +++ # VisualAge C++, Version 5.5 for AIX 5L for IA-64, Beta 3 Release +++ # chokes on -Wl,-G. The following line is correct: +++ shared_flag='-G' +++ else +++ if test "$aix_use_runtimelinking" = yes; then +++ shared_flag='${wl}-G' +++ else +++ shared_flag='${wl}-bM:SRE' +++ fi +++ fi +++ fi +++ +++ export_dynamic_flag_spec='${wl}-bexpall' +++ # It seems that -bexpall does not export symbols beginning with +++ # underscore (_), so it is better to generate a list of symbols to export. +++ always_export_symbols=yes +++ if test "$aix_use_runtimelinking" = yes; then +++ # Warning - without using the other runtime loading flags (-brtl), +++ # -berok will link without error, but may produce a broken library. +++ allow_undefined_flag='-berok' +++ # Determine the default libpath from the value encoded in an +++ # empty executable. +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ +++lt_aix_libpath_sed=' +++ /Import File Strings/,/^$/ { +++ /^0/ { +++ s/^0 *\(.*\)$/\1/ +++ p +++ } +++ }' +++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +++# Check for a 64-bit object if we didn't find anything. +++if test -z "$aix_libpath"; then +++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +++fi +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +++ +++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" +++ archive_expsym_cmds='$CC -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags `if test "x${allow_undefined_flag}" != "x"; then func_echo_all "${wl}${allow_undefined_flag}"; else :; fi` '"\${wl}$exp_sym_flag:\$export_symbols $shared_flag" +++ else +++ if test "$host_cpu" = ia64; then +++ hardcode_libdir_flag_spec='${wl}-R $libdir:/usr/lib:/lib' +++ allow_undefined_flag="-z nodefs" +++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs '"\${wl}$no_entry_flag"' $compiler_flags ${wl}${allow_undefined_flag} '"\${wl}$exp_sym_flag:\$export_symbols" +++ else +++ # Determine the default libpath from the value encoded in an +++ # empty executable. +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ +++lt_aix_libpath_sed=' +++ /Import File Strings/,/^$/ { +++ /^0/ { +++ s/^0 *\(.*\)$/\1/ +++ p +++ } +++ }' +++aix_libpath=`dump -H conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +++# Check for a 64-bit object if we didn't find anything. +++if test -z "$aix_libpath"; then +++ aix_libpath=`dump -HX64 conftest$ac_exeext 2>/dev/null | $SED -n -e "$lt_aix_libpath_sed"` +++fi +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++if test -z "$aix_libpath"; then aix_libpath="/usr/lib:/lib"; fi +++ +++ hardcode_libdir_flag_spec='${wl}-blibpath:$libdir:'"$aix_libpath" +++ # Warning - without using the other run time loading flags, +++ # -berok will link without error, but may produce a broken library. +++ no_undefined_flag=' ${wl}-bernotok' +++ allow_undefined_flag=' ${wl}-berok' +++ if test "$with_gnu_ld" = yes; then +++ # We only use this code for GNU lds that support --whole-archive. +++ whole_archive_flag_spec='${wl}--whole-archive$convenience ${wl}--no-whole-archive' +++ else +++ # Exported symbols can be pulled into shared objects from archives +++ whole_archive_flag_spec='$convenience' +++ fi +++ archive_cmds_need_lc=yes +++ # This is similar to how AIX traditionally builds its shared libraries. +++ archive_expsym_cmds="\$CC $shared_flag"' -o $output_objdir/$soname $libobjs $deplibs ${wl}-bnoentry $compiler_flags ${wl}-bE:$export_symbols${allow_undefined_flag}~$AR $AR_FLAGS $output_objdir/$libname$release.a $output_objdir/$soname' +++ fi +++ fi +++ ;; +++ +++ amigaos*) +++ case $host_cpu in +++ powerpc) +++ # see comment about AmigaOS4 .so support +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname $wl$soname -o $lib' +++ archive_expsym_cmds='' +++ ;; +++ m68k) +++ archive_cmds='$RM $output_objdir/a2ixlibrary.data~$ECHO "#define NAME $libname" > $output_objdir/a2ixlibrary.data~$ECHO "#define LIBRARY_ID 1" >> $output_objdir/a2ixlibrary.data~$ECHO "#define VERSION $major" >> $output_objdir/a2ixlibrary.data~$ECHO "#define REVISION $revision" >> $output_objdir/a2ixlibrary.data~$AR $AR_FLAGS $lib $libobjs~$RANLIB $lib~(cd $output_objdir && a2ixlibrary -32)' +++ hardcode_libdir_flag_spec='-L$libdir' +++ hardcode_minus_L=yes +++ ;; +++ esac +++ ;; +++ +++ bsdi[45]*) +++ export_dynamic_flag_spec=-rdynamic +++ ;; +++ +++ cygwin* | mingw* | pw32* | cegcc*) +++ # When not using gcc, we currently assume that we are using +++ # Microsoft Visual C++. +++ # hardcode_libdir_flag_spec is actually meaningless, as there is +++ # no search path for DLLs. +++ hardcode_libdir_flag_spec=' ' +++ allow_undefined_flag=unsupported +++ # Tell ltmain to make .lib files, not .a files. +++ libext=lib +++ # Tell ltmain to make .dll files, not .so files. +++ shrext_cmds=".dll" +++ # FIXME: Setting linknames here is a bad hack. +++ archive_cmds='$CC -o $lib $libobjs $compiler_flags `func_echo_all "$deplibs" | $SED '\''s/ -lc$//'\''` -link -dll~linknames=' +++ # The linker will automatically build a .lib file if we build a DLL. +++ old_archive_from_new_cmds='true' +++ # FIXME: Should let the user specify the lib program. +++ old_archive_cmds='lib -OUT:$oldlib$oldobjs$old_deplibs' +++ fix_srcfile_path='`cygpath -w "$srcfile"`' +++ enable_shared_with_static_runtimes=yes +++ ;; +++ +++ darwin* | rhapsody*) +++ +++ +++ +++ # Publish an arg to allow the user to select that Darwin host (and target) +++ # libraries should be given install-names like @rpath/libfoo.dylib. This +++ # requires that the user of the library then adds an 'rpath' to the DSO that +++ # needs access. +++ # NOTE: there are defaults below, for systems that support rpaths. The person +++ # configuring can override the defaults for any system version that supports +++ # them - they are, however, forced off for system versions without support. +++ # Check whether --enable-darwin-at-rpath was given. +++if test "${enable_darwin_at_rpath+set}" = set; then : +++ enableval=$enable_darwin_at_rpath; if test "x$enable_darwin_at_rpath" = "xyes"; then +++ # This is not supported before macOS 10.5 / Darwin9. +++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in +++ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&5 +++$as_echo "$as_me: WARNING: Darwin @rpath library names are incompatible with OSX versions earlier than 10.5 (rpaths disabled)" >&2;} +++ enable_darwin_at_rpath=no +++ ;; +++ esac +++ fi +++else +++ case ${MACOSX_DEPLOYMENT_TARGET-UNSET},$host_os in +++ # As above, before 10.5 / Darwin9 this does not work. +++ UNSET,darwin[4-8]*|UNSET,rhapsody*|10.[0-4][,.]*) +++ enable_darwin_at_rpath=no +++ ;; +++ +++ # We cannot build and test reliably on macOS 10.11+ (Darwin15+) without use +++ # of rpaths, since runpaths set via DYLD_LIBRARY_PATH are elided by key +++ # system executables (e.g. /bin/sh). Force rpaths on for these systems. +++ UNSET,darwin1[5-9]*|UNSET,darwin2*|10.1[1-9][,.]*|1[1-9].*[,.]* ) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&5 +++$as_echo "$as_me: @rpath library names are needed on macOS versions later than 10.11 (rpaths have been enabled)" >&6;} +++ enable_darwin_at_rpath=yes +++ ;; +++ # NOTE: we are not (yet) doing anything for 10.5 .. 10.10, since they can +++ # work with either DYLD_LIBRARY_PATH or embedded rpaths. +++ +++ esac +++ +++fi +++ +++ +++ archive_cmds_need_lc=no +++ hardcode_direct=no +++ hardcode_automatic=yes +++ hardcode_shlibpath_var=unsupported +++ if test "$lt_cv_ld_force_load" = "yes"; then +++ whole_archive_flag_spec='`for conv in $convenience\"\"; do test -n \"$conv\" && new_convenience=\"$new_convenience ${wl}-force_load,$conv\"; done; func_echo_all \"$new_convenience\"`' +++ else +++ whole_archive_flag_spec='' +++ fi +++ link_all_deplibs=yes +++ allow_undefined_flag="$_lt_dar_allow_undefined" +++ case $cc_basename in +++ ifort*) _lt_dar_can_shared=yes ;; +++ *) _lt_dar_can_shared=$GCC ;; +++ esac +++ if test "$_lt_dar_can_shared" = "yes"; then +++ output_verbose_link_cmd=func_echo_all +++ _lt_install_name='\$rpath/\$soname' +++ if test "x$enable_darwin_at_rpath" = "xyes"; then +++ _lt_install_name='@rpath/\$soname' +++ fi +++ archive_cmds="\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dsymutil}" +++ module_cmds="\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dsymutil}" +++ archive_expsym_cmds="sed 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC -dynamiclib \$allow_undefined_flag -o \$lib \$libobjs \$deplibs \$compiler_flags -install_name ${_lt_install_name} \$verstring ${_lt_dar_export_syms}${_lt_dsymutil}" +++ module_expsym_cmds="sed -e 's,^,_,' < \$export_symbols > \$output_objdir/\${libname}-symbols.expsym~\$CC \$allow_undefined_flag -o \$lib -bundle \$libobjs \$deplibs \$compiler_flags${_lt_dar_export_syms}${_lt_dsymutil}" +++ +++ else +++ ld_shlibs=no +++ fi +++ +++ ;; +++ +++ dgux*) +++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_libdir_flag_spec='-L$libdir' +++ hardcode_shlibpath_var=no +++ ;; +++ +++ # FreeBSD 2.2.[012] allows us to include c++rt0.o to get C++ constructor +++ # support. Future versions do this automatically, but an explicit c++rt0.o +++ # does not break anything, and helps significantly (at the cost of a little +++ # extra space). +++ freebsd2.2*) +++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags /usr/lib/c++rt0.o' +++ hardcode_libdir_flag_spec='-R$libdir' +++ hardcode_direct=yes +++ hardcode_shlibpath_var=no +++ ;; +++ +++ # Unfortunately, older versions of FreeBSD 2 do not have this feature. +++ freebsd2.*) +++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_direct=yes +++ hardcode_minus_L=yes +++ hardcode_shlibpath_var=no +++ ;; +++ +++ # FreeBSD 3 and greater uses gcc -shared to do shared libraries. +++ freebsd* | dragonfly*) +++ archive_cmds='$CC -shared -o $lib $libobjs $deplibs $compiler_flags' +++ hardcode_libdir_flag_spec='-R$libdir' +++ hardcode_direct=yes +++ hardcode_shlibpath_var=no +++ ;; +++ +++ hpux9*) +++ if test "$GCC" = yes; then +++ archive_cmds='$RM $output_objdir/$soname~$CC -shared -fPIC ${wl}+b ${wl}$install_libdir -o $output_objdir/$soname $libobjs $deplibs $compiler_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +++ else +++ archive_cmds='$RM $output_objdir/$soname~$LD -b +b $install_libdir -o $output_objdir/$soname $libobjs $deplibs $linker_flags~test $output_objdir/$soname = $lib || mv $output_objdir/$soname $lib' +++ fi +++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +++ hardcode_libdir_separator=: +++ hardcode_direct=yes +++ +++ # hardcode_minus_L: Not really in the search PATH, +++ # but as the default location of the library. +++ hardcode_minus_L=yes +++ export_dynamic_flag_spec='${wl}-E' +++ ;; +++ +++ hpux10*) +++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then +++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +++ else +++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +++ fi +++ if test "$with_gnu_ld" = no; then +++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +++ hardcode_libdir_flag_spec_ld='+b $libdir' +++ hardcode_libdir_separator=: +++ hardcode_direct=yes +++ hardcode_direct_absolute=yes +++ export_dynamic_flag_spec='${wl}-E' +++ # hardcode_minus_L: Not really in the search PATH, +++ # but as the default location of the library. +++ hardcode_minus_L=yes +++ fi +++ ;; +++ +++ hpux11*) +++ if test "$GCC" = yes && test "$with_gnu_ld" = no; then +++ case $host_cpu in +++ hppa*64*) +++ archive_cmds='$CC -shared ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +++ ;; +++ ia64*) +++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +++ ;; +++ *) +++ archive_cmds='$CC -shared -fPIC ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +++ ;; +++ esac +++ else +++ case $host_cpu in +++ hppa*64*) +++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +++ ;; +++ ia64*) +++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+nodefaultrpath -o $lib $libobjs $deplibs $compiler_flags' +++ ;; +++ *) +++ +++ # Older versions of the 11.00 compiler do not understand -b yet +++ # (HP92453-01 A.11.01.20 doesn't, HP92453-01 B.11.X.35175-35176.GP does) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if $CC understands -b" >&5 +++$as_echo_n "checking if $CC understands -b... " >&6; } +++if ${lt_cv_prog_compiler__b+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_prog_compiler__b=no +++ save_LDFLAGS="$LDFLAGS" +++ LDFLAGS="$LDFLAGS -b" +++ echo "$lt_simple_link_test_code" > conftest.$ac_ext +++ if (eval $ac_link 2>conftest.err) && test -s conftest$ac_exeext; then +++ # The linker can only warn and ignore the option if not recognized +++ # So say no if there are warnings +++ if test -s conftest.err; then +++ # Append any errors to the config.log. +++ cat conftest.err 1>&5 +++ $ECHO "$_lt_linker_boilerplate" | $SED '/^$/d' > conftest.exp +++ $SED '/^$/d; /^ *+/d' conftest.err >conftest.er2 +++ if diff conftest.exp conftest.er2 >/dev/null; then +++ lt_cv_prog_compiler__b=yes +++ fi +++ else +++ lt_cv_prog_compiler__b=yes +++ fi +++ fi +++ $RM -r conftest* +++ LDFLAGS="$save_LDFLAGS" +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_prog_compiler__b" >&5 +++$as_echo "$lt_cv_prog_compiler__b" >&6; } +++ +++if test x"$lt_cv_prog_compiler__b" = xyes; then +++ archive_cmds='$CC -b ${wl}+h ${wl}$soname ${wl}+b ${wl}$install_libdir -o $lib $libobjs $deplibs $compiler_flags' +++else +++ archive_cmds='$LD -b +h $soname +b $install_libdir -o $lib $libobjs $deplibs $linker_flags' +++fi +++ +++ ;; +++ esac +++ fi +++ if test "$with_gnu_ld" = no; then +++ hardcode_libdir_flag_spec='${wl}+b ${wl}$libdir' +++ hardcode_libdir_separator=: +++ +++ case $host_cpu in +++ hppa*64*|ia64*) +++ hardcode_direct=no +++ hardcode_shlibpath_var=no +++ ;; +++ *) +++ hardcode_direct=yes +++ hardcode_direct_absolute=yes +++ export_dynamic_flag_spec='${wl}-E' +++ +++ # hardcode_minus_L: Not really in the search PATH, +++ # but as the default location of the library. +++ hardcode_minus_L=yes +++ ;; +++ esac +++ fi +++ ;; +++ +++ irix5* | irix6* | nonstopux*) +++ if test "$GCC" = yes; then +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +++ # Try to use the -exported_symbol ld option, if it does not +++ # work, assume that -exports_file does not work either and +++ # implicitly export all symbols. +++ save_LDFLAGS="$LDFLAGS" +++ LDFLAGS="$LDFLAGS -shared ${wl}-exported_symbol ${wl}foo ${wl}-update_registry ${wl}/dev/null" +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++int foo(void) {} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations ${wl}-exports_file ${wl}$export_symbols -o $lib' +++ +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++ LDFLAGS="$save_LDFLAGS" +++ else +++ archive_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +++ archive_expsym_cmds='$CC -shared $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -exports_file $export_symbols -o $lib' +++ fi +++ archive_cmds_need_lc='no' +++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +++ hardcode_libdir_separator=: +++ inherit_rpath=yes +++ link_all_deplibs=yes +++ ;; +++ +++ netbsd*) +++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' # a.out +++ else +++ archive_cmds='$LD -shared -o $lib $libobjs $deplibs $linker_flags' # ELF +++ fi +++ hardcode_libdir_flag_spec='-R$libdir' +++ hardcode_direct=yes +++ hardcode_shlibpath_var=no +++ ;; +++ +++ newsos6) +++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_direct=yes +++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +++ hardcode_libdir_separator=: +++ hardcode_shlibpath_var=no +++ ;; +++ +++ *nto* | *qnx*) +++ ;; +++ +++ openbsd*) +++ if test -f /usr/libexec/ld.so; then +++ hardcode_direct=yes +++ hardcode_shlibpath_var=no +++ hardcode_direct_absolute=yes +++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +++ archive_expsym_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags ${wl}-retain-symbols-file,$export_symbols' +++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +++ export_dynamic_flag_spec='${wl}-E' +++ else +++ case $host_os in +++ openbsd[01].* | openbsd2.[0-7] | openbsd2.[0-7].*) +++ archive_cmds='$LD -Bshareable -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_libdir_flag_spec='-R$libdir' +++ ;; +++ *) +++ archive_cmds='$CC -shared $pic_flag -o $lib $libobjs $deplibs $compiler_flags' +++ hardcode_libdir_flag_spec='${wl}-rpath,$libdir' +++ ;; +++ esac +++ fi +++ else +++ ld_shlibs=no +++ fi +++ ;; +++ +++ os2*) +++ hardcode_libdir_flag_spec='-L$libdir' +++ hardcode_minus_L=yes +++ allow_undefined_flag=unsupported +++ archive_cmds='$ECHO "LIBRARY $libname INITINSTANCE" > $output_objdir/$libname.def~$ECHO "DESCRIPTION \"$libname\"" >> $output_objdir/$libname.def~echo DATA >> $output_objdir/$libname.def~echo " SINGLE NONSHARED" >> $output_objdir/$libname.def~echo EXPORTS >> $output_objdir/$libname.def~emxexp $libobjs >> $output_objdir/$libname.def~$CC -Zdll -Zcrtdll -o $lib $libobjs $deplibs $compiler_flags $output_objdir/$libname.def' +++ old_archive_from_new_cmds='emximp -o $output_objdir/$libname.a $output_objdir/$libname.def' +++ ;; +++ +++ osf3*) +++ if test "$GCC" = yes; then +++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +++ else +++ allow_undefined_flag=' -expect_unresolved \*' +++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +++ fi +++ archive_cmds_need_lc='no' +++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +++ hardcode_libdir_separator=: +++ ;; +++ +++ osf4* | osf5*) # as osf3* with the addition of -msym flag +++ if test "$GCC" = yes; then +++ allow_undefined_flag=' ${wl}-expect_unresolved ${wl}\*' +++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags ${wl}-msym ${wl}-soname ${wl}$soname `test -n "$verstring" && func_echo_all "${wl}-set_version ${wl}$verstring"` ${wl}-update_registry ${wl}${output_objdir}/so_locations -o $lib' +++ hardcode_libdir_flag_spec='${wl}-rpath ${wl}$libdir' +++ else +++ allow_undefined_flag=' -expect_unresolved \*' +++ archive_cmds='$CC -shared${allow_undefined_flag} $libobjs $deplibs $compiler_flags -msym -soname $soname `test -n "$verstring" && func_echo_all "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib' +++ archive_expsym_cmds='for i in `cat $export_symbols`; do printf "%s %s\\n" -exported_symbol "\$i" >> $lib.exp; done; printf "%s\\n" "-hidden">> $lib.exp~ +++ $CC -shared${allow_undefined_flag} ${wl}-input ${wl}$lib.exp $compiler_flags $libobjs $deplibs -soname $soname `test -n "$verstring" && $ECHO "-set_version $verstring"` -update_registry ${output_objdir}/so_locations -o $lib~$RM $lib.exp' +++ +++ # Both c and cxx compiler support -rpath directly +++ hardcode_libdir_flag_spec='-rpath $libdir' +++ fi +++ archive_cmds_need_lc='no' +++ hardcode_libdir_separator=: +++ ;; +++ +++ solaris*) +++ no_undefined_flag=' -z defs' +++ if test "$GCC" = yes; then +++ wlarc='${wl}' +++ archive_cmds='$CC -shared ${wl}-z ${wl}text ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags' +++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +++ $CC -shared ${wl}-z ${wl}text ${wl}-M ${wl}$lib.exp ${wl}-h ${wl}$soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' +++ else +++ case `$CC -V 2>&1` in +++ *"Compilers 5.0"*) +++ wlarc='' +++ archive_cmds='$LD -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $linker_flags' +++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +++ $LD -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $linker_flags~$RM $lib.exp' +++ ;; +++ *) +++ wlarc='${wl}' +++ archive_cmds='$CC -G${allow_undefined_flag} -h $soname -o $lib $libobjs $deplibs $compiler_flags' +++ archive_expsym_cmds='echo "{ global:" > $lib.exp~cat $export_symbols | $SED -e "s/\(.*\)/\1;/" >> $lib.exp~echo "local: *; };" >> $lib.exp~ +++ $CC -G${allow_undefined_flag} -M $lib.exp -h $soname -o $lib $libobjs $deplibs $compiler_flags~$RM $lib.exp' +++ ;; +++ esac +++ fi +++ hardcode_libdir_flag_spec='-R$libdir' +++ hardcode_shlibpath_var=no +++ case $host_os in +++ solaris2.[0-5] | solaris2.[0-5].*) ;; +++ *) +++ # The compiler driver will combine and reorder linker options, +++ # but understands `-z linker_flag'. GCC discards it without `$wl', +++ # but is careful enough not to reorder. +++ # Supported since Solaris 2.6 (maybe 2.5.1?) +++ if test "$GCC" = yes; then +++ whole_archive_flag_spec='${wl}-z ${wl}allextract$convenience ${wl}-z ${wl}defaultextract' +++ else +++ whole_archive_flag_spec='-z allextract$convenience -z defaultextract' +++ fi +++ ;; +++ esac +++ link_all_deplibs=yes +++ ;; +++ +++ sunos4*) +++ if test "x$host_vendor" = xsequent; then +++ # Use $CC to link under sequent, because it throws in some extra .o +++ # files that make .init and .fini sections work. +++ archive_cmds='$CC -G ${wl}-h $soname -o $lib $libobjs $deplibs $compiler_flags' +++ else +++ archive_cmds='$LD -assert pure-text -Bstatic -o $lib $libobjs $deplibs $linker_flags' +++ fi +++ hardcode_libdir_flag_spec='-L$libdir' +++ hardcode_direct=yes +++ hardcode_minus_L=yes +++ hardcode_shlibpath_var=no +++ ;; +++ +++ sysv4) +++ case $host_vendor in +++ sni) +++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_direct=yes # is this really true??? +++ ;; +++ siemens) +++ ## LD is ld it makes a PLAMLIB +++ ## CC just makes a GrossModule. +++ archive_cmds='$LD -G -o $lib $libobjs $deplibs $linker_flags' +++ reload_cmds='$CC -r -o $output$reload_objs' +++ hardcode_direct=no +++ ;; +++ motorola) +++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_direct=no #Motorola manual says yes, but my tests say they lie +++ ;; +++ esac +++ runpath_var='LD_RUN_PATH' +++ hardcode_shlibpath_var=no +++ ;; +++ +++ sysv4.3*) +++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_shlibpath_var=no +++ export_dynamic_flag_spec='-Bexport' +++ ;; +++ +++ sysv4*MP*) +++ if test -d /usr/nec; then +++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_shlibpath_var=no +++ runpath_var=LD_RUN_PATH +++ hardcode_runpath_var=yes +++ ld_shlibs=yes +++ fi +++ ;; +++ +++ sysv4*uw2* | sysv5OpenUNIX* | sysv5UnixWare7.[01].[10]* | unixware7* | sco3.2v5.0.[024]*) +++ no_undefined_flag='${wl}-z,text' +++ archive_cmds_need_lc=no +++ hardcode_shlibpath_var=no +++ runpath_var='LD_RUN_PATH' +++ +++ if test "$GCC" = yes; then +++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +++ else +++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +++ fi +++ ;; +++ +++ sysv5* | sco3.2v5* | sco5v6*) +++ # Note: We can NOT use -z defs as we might desire, because we do not +++ # link with -lc, and that would cause any symbols used from libc to +++ # always be unresolved, which means just about no library would +++ # ever link correctly. If we're not using GNU ld we use -z text +++ # though, which does catch some bad symbols but isn't as heavy-handed +++ # as -z defs. +++ no_undefined_flag='${wl}-z,text' +++ allow_undefined_flag='${wl}-z,nodefs' +++ archive_cmds_need_lc=no +++ hardcode_shlibpath_var=no +++ hardcode_libdir_flag_spec='${wl}-R,$libdir' +++ hardcode_libdir_separator=':' +++ link_all_deplibs=yes +++ export_dynamic_flag_spec='${wl}-Bexport' +++ runpath_var='LD_RUN_PATH' +++ +++ if test "$GCC" = yes; then +++ archive_cmds='$CC -shared ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +++ archive_expsym_cmds='$CC -shared ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +++ else +++ archive_cmds='$CC -G ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +++ archive_expsym_cmds='$CC -G ${wl}-Bexport:$export_symbols ${wl}-h,$soname -o $lib $libobjs $deplibs $compiler_flags' +++ fi +++ ;; +++ +++ uts4*) +++ archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linker_flags' +++ hardcode_libdir_flag_spec='-L$libdir' +++ hardcode_shlibpath_var=no +++ ;; +++ +++ *) +++ ld_shlibs=no +++ ;; +++ esac +++ +++ if test x$host_vendor = xsni; then +++ case $host in +++ sysv4 | sysv4.2uw2* | sysv4.3* | sysv5*) +++ export_dynamic_flag_spec='${wl}-Blargedynsym' +++ ;; +++ esac +++ fi +++ fi +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ld_shlibs" >&5 +++$as_echo "$ld_shlibs" >&6; } +++test "$ld_shlibs" = no && can_build_shared=no +++ +++with_gnu_ld=$with_gnu_ld +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++# +++# Do we need to explicitly link libc? +++# +++case "x$archive_cmds_need_lc" in +++x|xyes) +++ # Assume -lc should be added +++ archive_cmds_need_lc=yes +++ +++ if test "$enable_shared" = yes && test "$GCC" = yes; then +++ case $archive_cmds in +++ *'~'*) +++ # FIXME: we may have to deal with multi-command sequences. +++ ;; +++ '$CC '*) +++ # Test whether the compiler implicitly links with -lc since on some +++ # systems, -lgcc has to come before -lc. If gcc already passes -lc +++ # to ld, don't add -lc before -lgcc. +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether -lc should be explicitly linked in" >&5 +++$as_echo_n "checking whether -lc should be explicitly linked in... " >&6; } +++if ${lt_cv_archive_cmds_need_lc+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ $RM conftest* +++ echo "$lt_simple_compile_test_code" > conftest.$ac_ext +++ +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_compile\""; } >&5 +++ (eval $ac_compile) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } 2>conftest.err; then +++ soname=conftest +++ lib=conftest +++ libobjs=conftest.$ac_objext +++ deplibs= +++ wl=$lt_prog_compiler_wl +++ pic_flag=$lt_prog_compiler_pic +++ compiler_flags=-v +++ linker_flags=-v +++ verstring= +++ output_objdir=. +++ libname=conftest +++ lt_save_allow_undefined_flag=$allow_undefined_flag +++ allow_undefined_flag= +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1\""; } >&5 +++ (eval $archive_cmds 2\>\&1 \| $GREP \" -lc \" \>/dev/null 2\>\&1) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } +++ then +++ lt_cv_archive_cmds_need_lc=no +++ else +++ lt_cv_archive_cmds_need_lc=yes +++ fi +++ allow_undefined_flag=$lt_save_allow_undefined_flag +++ else +++ cat conftest.err 1>&5 +++ fi +++ $RM conftest* +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_archive_cmds_need_lc" >&5 +++$as_echo "$lt_cv_archive_cmds_need_lc" >&6; } +++ archive_cmds_need_lc=$lt_cv_archive_cmds_need_lc +++ ;; +++ esac +++ fi +++ ;; +++esac +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking dynamic linker characteristics" >&5 +++$as_echo_n "checking dynamic linker characteristics... " >&6; } +++ +++if test "$GCC" = yes; then +++ case $host_os in +++ darwin*) lt_awk_arg="/^libraries:/,/LR/" ;; +++ *) lt_awk_arg="/^libraries:/" ;; +++ esac +++ case $host_os in +++ mingw* | cegcc*) lt_sed_strip_eq="s,=\([A-Za-z]:\),\1,g" ;; +++ *) lt_sed_strip_eq="s,=/,/,g" ;; +++ esac +++ lt_search_path_spec=`$CC -print-search-dirs | awk $lt_awk_arg | $SED -e "s/^libraries://" -e $lt_sed_strip_eq` +++ case $lt_search_path_spec in +++ *\;*) +++ # if the path contains ";" then we assume it to be the separator +++ # otherwise default to the standard path separator (i.e. ":") - it is +++ # assumed that no part of a normal pathname contains ";" but that should +++ # okay in the real world where ";" in dirpaths is itself problematic. +++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED 's/;/ /g'` +++ ;; +++ *) +++ lt_search_path_spec=`$ECHO "$lt_search_path_spec" | $SED "s/$PATH_SEPARATOR/ /g"` +++ ;; +++ esac +++ # Ok, now we have the path, separated by spaces, we can step through it +++ # and add multilib dir if necessary. +++ lt_tmp_lt_search_path_spec= +++ lt_multi_os_dir=`$CC $CPPFLAGS $CFLAGS $LDFLAGS -print-multi-os-directory 2>/dev/null` +++ for lt_sys_path in $lt_search_path_spec; do +++ if test -d "$lt_sys_path/$lt_multi_os_dir"; then +++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path/$lt_multi_os_dir" +++ else +++ test -d "$lt_sys_path" && \ +++ lt_tmp_lt_search_path_spec="$lt_tmp_lt_search_path_spec $lt_sys_path" +++ fi +++ done +++ lt_search_path_spec=`$ECHO "$lt_tmp_lt_search_path_spec" | awk ' +++BEGIN {RS=" "; FS="/|\n";} { +++ lt_foo=""; +++ lt_count=0; +++ for (lt_i = NF; lt_i > 0; lt_i--) { +++ if ($lt_i != "" && $lt_i != ".") { +++ if ($lt_i == "..") { +++ lt_count++; +++ } else { +++ if (lt_count == 0) { +++ lt_foo="/" $lt_i lt_foo; +++ } else { +++ lt_count--; +++ } +++ } +++ } +++ } +++ if (lt_foo != "") { lt_freq[lt_foo]++; } +++ if (lt_freq[lt_foo] == 1) { print lt_foo; } +++}'` +++ # AWK program above erroneously prepends '/' to C:/dos/paths +++ # for these hosts. +++ case $host_os in +++ mingw* | cegcc*) lt_search_path_spec=`$ECHO "$lt_search_path_spec" |\ +++ $SED 's,/\([A-Za-z]:\),\1,g'` ;; +++ esac +++ sys_lib_search_path_spec=`$ECHO "$lt_search_path_spec" | $lt_NL2SP` +++else +++ sys_lib_search_path_spec="/lib /usr/lib /usr/local/lib" +++fi +++library_names_spec= +++libname_spec='lib$name' +++soname_spec= +++shrext_cmds=".so" +++postinstall_cmds= +++postuninstall_cmds= +++finish_cmds= +++finish_eval= +++shlibpath_var= +++shlibpath_overrides_runpath=unknown +++version_type=none +++dynamic_linker="$host_os ld.so" +++sys_lib_dlsearch_path_spec="/lib /usr/lib" +++need_lib_prefix=unknown +++hardcode_into_libs=no +++ +++# when you set need_version to no, make sure it does not cause -set_version +++# flags to be left without arguments +++need_version=unknown +++ +++case $host_os in +++aix3*) +++ version_type=linux +++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname.a' +++ shlibpath_var=LIBPATH +++ +++ # AIX 3 has no versioning support, so we append a major version to the name. +++ soname_spec='${libname}${release}${shared_ext}$major' +++ ;; +++ +++aix[4-9]*) +++ version_type=linux +++ need_lib_prefix=no +++ need_version=no +++ hardcode_into_libs=yes +++ if test "$host_cpu" = ia64; then +++ # AIX 5 supports IA64 +++ library_names_spec='${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext}$versuffix $libname${shared_ext}' +++ shlibpath_var=LD_LIBRARY_PATH +++ else +++ # With GCC up to 2.95.x, collect2 would create an import file +++ # for dependence libraries. The import file would start with +++ # the line `#! .'. This would cause the generated library to +++ # depend on `.', always an invalid library. This was fixed in +++ # development snapshots of GCC prior to 3.0. +++ case $host_os in +++ aix4 | aix4.[01] | aix4.[01].*) +++ if { echo '#if __GNUC__ > 2 || (__GNUC__ == 2 && __GNUC_MINOR__ >= 97)' +++ echo ' yes ' +++ echo '#endif'; } | ${CC} -E - | $GREP yes > /dev/null; then +++ : +++ else +++ can_build_shared=no +++ fi +++ ;; +++ esac +++ # AIX (on Power*) has no versioning support, so currently we can not hardcode correct +++ # soname into executable. Probably we can add versioning support to +++ # collect2, so additional links can be useful in future. +++ if test "$aix_use_runtimelinking" = yes; then +++ # If using run time linking (on AIX 4.2 or later) use lib.so +++ # instead of lib.a to let people know that these are not +++ # typical AIX shared libraries. +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ else +++ # We preserve .a as extension for shared libraries through AIX4.2 +++ # and later when we are not doing run time linking. +++ library_names_spec='${libname}${release}.a $libname.a' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ fi +++ shlibpath_var=LIBPATH +++ fi +++ ;; +++ +++amigaos*) +++ case $host_cpu in +++ powerpc) +++ # Since July 2007 AmigaOS4 officially supports .so libraries. +++ # When compiling the executable, add -use-dynld -Lsobjs: to the compileline. +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ ;; +++ m68k) +++ library_names_spec='$libname.ixlibrary $libname.a' +++ # Create ${libname}_ixlibrary.a entries in /sys/libs. +++ finish_eval='for lib in `ls $libdir/*.ixlibrary 2>/dev/null`; do libname=`func_echo_all "$lib" | $SED '\''s%^.*/\([^/]*\)\.ixlibrary$%\1%'\''`; test $RM /sys/libs/${libname}_ixlibrary.a; $show "cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a"; cd /sys/libs && $LN_S $lib ${libname}_ixlibrary.a || exit 1; done' +++ ;; +++ esac +++ ;; +++ +++beos*) +++ library_names_spec='${libname}${shared_ext}' +++ dynamic_linker="$host_os ld.so" +++ shlibpath_var=LIBRARY_PATH +++ ;; +++ +++bsdi[45]*) +++ version_type=linux +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ finish_cmds='PATH="\$PATH:/sbin" ldconfig $libdir' +++ shlibpath_var=LD_LIBRARY_PATH +++ sys_lib_search_path_spec="/shlib /usr/lib /usr/X11/lib /usr/contrib/lib /lib /usr/local/lib" +++ sys_lib_dlsearch_path_spec="/shlib /usr/lib /usr/local/lib" +++ # the default ld.so.conf also contains /usr/contrib/lib and +++ # /usr/X11R6/lib (/usr/X11 is a link to /usr/X11R6), but let us allow +++ # libtool to hard-code these into programs +++ ;; +++ +++cygwin* | mingw* | pw32* | cegcc*) +++ version_type=windows +++ shrext_cmds=".dll" +++ need_version=no +++ need_lib_prefix=no +++ +++ case $GCC,$host_os in +++ yes,cygwin* | yes,mingw* | yes,pw32* | yes,cegcc*) +++ library_names_spec='$libname.dll.a' +++ # DLL is installed to $(libdir)/../bin by postinstall_cmds +++ postinstall_cmds='base_file=`basename \${file}`~ +++ dlpath=`$SHELL 2>&1 -c '\''. $dir/'\''\${base_file}'\''i; echo \$dlname'\''`~ +++ dldir=$destdir/`dirname \$dlpath`~ +++ test -d \$dldir || mkdir -p \$dldir~ +++ $install_prog $dir/$dlname \$dldir/$dlname~ +++ chmod a+x \$dldir/$dlname~ +++ if test -n '\''$stripme'\'' && test -n '\''$striplib'\''; then +++ eval '\''$striplib \$dldir/$dlname'\'' || exit \$?; +++ fi' +++ postuninstall_cmds='dldll=`$SHELL 2>&1 -c '\''. $file; echo \$dlname'\''`~ +++ dlpath=$dir/\$dldll~ +++ $RM \$dlpath' +++ shlibpath_overrides_runpath=yes +++ +++ case $host_os in +++ cygwin*) +++ # Cygwin DLLs use 'cyg' prefix rather than 'lib' +++ soname_spec='`echo ${libname} | sed -e 's/^lib/cyg/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +++ +++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/lib/w32api" +++ ;; +++ mingw* | cegcc*) +++ # MinGW DLLs use traditional 'lib' prefix +++ soname_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +++ ;; +++ pw32*) +++ # pw32 DLLs use 'pw' prefix rather than 'lib' +++ library_names_spec='`echo ${libname} | sed -e 's/^lib/pw/'``echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext}' +++ ;; +++ esac +++ ;; +++ +++ *) +++ library_names_spec='${libname}`echo ${release} | $SED -e 's/[.]/-/g'`${versuffix}${shared_ext} $libname.lib' +++ ;; +++ esac +++ dynamic_linker='Win32 ld.exe' +++ # FIXME: first we should search . and the directory the executable is in +++ shlibpath_var=PATH +++ ;; +++ +++darwin* | rhapsody*) +++ dynamic_linker="$host_os dyld" +++ version_type=darwin +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${major}$shared_ext ${libname}$shared_ext' +++ soname_spec='${libname}${release}${major}$shared_ext' +++ shlibpath_overrides_runpath=yes +++ shlibpath_var=DYLD_LIBRARY_PATH +++ shrext_cmds='`test .$module = .yes && echo .so || echo .dylib`' +++ +++ sys_lib_search_path_spec="$sys_lib_search_path_spec /usr/local/lib" +++ sys_lib_dlsearch_path_spec='/usr/local/lib /lib /usr/lib' +++ ;; +++ +++dgux*) +++ version_type=linux +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname$shared_ext' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ shlibpath_var=LD_LIBRARY_PATH +++ ;; +++ +++freebsd* | dragonfly*) +++ # DragonFly does not have aout. When/if they implement a new +++ # versioning mechanism, adjust this. +++ if test -x /usr/bin/objformat; then +++ objformat=`/usr/bin/objformat` +++ else +++ case $host_os in +++ freebsd[23].*) objformat=aout ;; +++ *) objformat=elf ;; +++ esac +++ fi +++ version_type=freebsd-$objformat +++ case $version_type in +++ freebsd-elf*) +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +++ need_version=no +++ need_lib_prefix=no +++ ;; +++ freebsd-*) +++ library_names_spec='${libname}${release}${shared_ext}$versuffix $libname${shared_ext}$versuffix' +++ need_version=yes +++ ;; +++ esac +++ shlibpath_var=LD_LIBRARY_PATH +++ case $host_os in +++ freebsd2.*) +++ shlibpath_overrides_runpath=yes +++ ;; +++ freebsd3.[01]* | freebsdelf3.[01]*) +++ shlibpath_overrides_runpath=yes +++ hardcode_into_libs=yes +++ ;; +++ freebsd3.[2-9]* | freebsdelf3.[2-9]* | \ +++ freebsd4.[0-5] | freebsdelf4.[0-5] | freebsd4.1.1 | freebsdelf4.1.1) +++ shlibpath_overrides_runpath=no +++ hardcode_into_libs=yes +++ ;; +++ *) # from 4.6 on, and DragonFly +++ shlibpath_overrides_runpath=yes +++ hardcode_into_libs=yes +++ ;; +++ esac +++ ;; +++ +++haiku*) +++ version_type=linux +++ need_lib_prefix=no +++ need_version=no +++ dynamic_linker="$host_os runtime_loader" +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}${major} ${libname}${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ shlibpath_var=LIBRARY_PATH +++ shlibpath_overrides_runpath=yes +++ sys_lib_dlsearch_path_spec='/boot/home/config/lib /boot/common/lib /boot/system/lib' +++ hardcode_into_libs=yes +++ ;; +++ +++hpux9* | hpux10* | hpux11*) +++ # Give a soname corresponding to the major version so that dld.sl refuses to +++ # link against other versions. +++ version_type=sunos +++ need_lib_prefix=no +++ need_version=no +++ case $host_cpu in +++ ia64*) +++ shrext_cmds='.so' +++ hardcode_into_libs=yes +++ dynamic_linker="$host_os dld.so" +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ if test "X$HPUX_IA64_MODE" = X32; then +++ sys_lib_search_path_spec="/usr/lib/hpux32 /usr/local/lib/hpux32 /usr/local/lib" +++ else +++ sys_lib_search_path_spec="/usr/lib/hpux64 /usr/local/lib/hpux64" +++ fi +++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +++ ;; +++ hppa*64*) +++ shrext_cmds='.sl' +++ hardcode_into_libs=yes +++ dynamic_linker="$host_os dld.sl" +++ shlibpath_var=LD_LIBRARY_PATH # How should we handle SHLIB_PATH +++ shlibpath_overrides_runpath=yes # Unless +noenvvar is specified. +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ sys_lib_search_path_spec="/usr/lib/pa20_64 /usr/ccs/lib/pa20_64" +++ sys_lib_dlsearch_path_spec=$sys_lib_search_path_spec +++ ;; +++ *) +++ shrext_cmds='.sl' +++ dynamic_linker="$host_os dld.sl" +++ shlibpath_var=SHLIB_PATH +++ shlibpath_overrides_runpath=no # +s is required to enable SHLIB_PATH +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ ;; +++ esac +++ # HP-UX runs *really* slowly unless shared libraries are mode 555, ... +++ postinstall_cmds='chmod 555 $lib' +++ # or fails outright, so override atomically: +++ install_override_mode=555 +++ ;; +++ +++interix[3-9]*) +++ version_type=linux +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ dynamic_linker='Interix 3.x ld.so.1 (PE, like ELF)' +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=no +++ hardcode_into_libs=yes +++ ;; +++ +++irix5* | irix6* | nonstopux*) +++ case $host_os in +++ nonstopux*) version_type=nonstopux ;; +++ *) +++ if test "$lt_cv_prog_gnu_ld" = yes; then +++ version_type=linux +++ else +++ version_type=irix +++ fi ;; +++ esac +++ need_lib_prefix=no +++ need_version=no +++ soname_spec='${libname}${release}${shared_ext}$major' +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${release}${shared_ext} $libname${shared_ext}' +++ case $host_os in +++ irix5* | nonstopux*) +++ libsuff= shlibsuff= +++ ;; +++ *) +++ case $LD in # libtool.m4 will add one of these switches to LD +++ *-32|*"-32 "|*-melf32bsmip|*"-melf32bsmip ") +++ libsuff= shlibsuff= libmagic=32-bit;; +++ *-n32|*"-n32 "|*-melf32bmipn32|*"-melf32bmipn32 ") +++ libsuff=32 shlibsuff=N32 libmagic=N32;; +++ *-64|*"-64 "|*-melf64bmip|*"-melf64bmip ") +++ libsuff=64 shlibsuff=64 libmagic=64-bit;; +++ *) libsuff= shlibsuff= libmagic=never-match;; +++ esac +++ ;; +++ esac +++ shlibpath_var=LD_LIBRARY${shlibsuff}_PATH +++ shlibpath_overrides_runpath=no +++ sys_lib_search_path_spec="/usr/lib${libsuff} /lib${libsuff} /usr/local/lib${libsuff}" +++ sys_lib_dlsearch_path_spec="/usr/lib${libsuff} /lib${libsuff}" +++ hardcode_into_libs=yes +++ ;; +++ +++# No shared lib support for Linux oldld, aout, or coff. +++linux*oldld* | linux*aout* | linux*coff*) +++ dynamic_linker=no +++ ;; +++ +++# This must be Linux ELF. +++ +++# uclinux* changes (here and below) have been submitted to the libtool +++# project, but have not yet been accepted: they are GCC-local changes +++# for the time being. (See +++# https://lists.gnu.org/archive/html/libtool-patches/2018-05/msg00000.html) +++linux* | k*bsd*-gnu | kopensolaris*-gnu | gnu* | uclinuxfdpiceabi) +++ version_type=linux +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -n $libdir' +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=no +++ +++ # Some binutils ld are patched to set DT_RUNPATH +++ if ${lt_cv_shlibpath_overrides_runpath+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ lt_cv_shlibpath_overrides_runpath=no +++ save_LDFLAGS=$LDFLAGS +++ save_libdir=$libdir +++ eval "libdir=/foo; wl=\"$lt_prog_compiler_wl\"; \ +++ LDFLAGS=\"\$LDFLAGS $hardcode_libdir_flag_spec\"" +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++int +++main () +++{ +++ +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ if ($OBJDUMP -p conftest$ac_exeext) 2>/dev/null | grep "RUNPATH.*$libdir" >/dev/null; then : +++ lt_cv_shlibpath_overrides_runpath=yes +++fi +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++ LDFLAGS=$save_LDFLAGS +++ libdir=$save_libdir +++ +++fi +++ +++ shlibpath_overrides_runpath=$lt_cv_shlibpath_overrides_runpath +++ +++ # This implies no fast_install, which is unacceptable. +++ # Some rework will be needed to allow for fast_install +++ # before this can be enabled. +++ hardcode_into_libs=yes +++ +++ # Append ld.so.conf contents to the search path +++ if test -f /etc/ld.so.conf; then +++ lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;/^[ ]*hwcap[ ]/d;s/[:, ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;s/"//g;/^$/d' | tr '\n' ' '` +++ sys_lib_dlsearch_path_spec="/lib /usr/lib $lt_ld_extra" +++ fi +++ +++ # We used to test for /lib/ld.so.1 and disable shared libraries on +++ # powerpc, because MkLinux only supported shared libraries with the +++ # GNU dynamic linker. Since this was broken with cross compilers, +++ # most powerpc-linux boxes support dynamic linking these days and +++ # people can always --disable-shared, the test was removed, and we +++ # assume the GNU/Linux dynamic linker is in use. +++ dynamic_linker='GNU/Linux ld.so' +++ ;; +++ +++netbsd*) +++ version_type=sunos +++ need_lib_prefix=no +++ need_version=no +++ if echo __ELF__ | $CC -E - | $GREP __ELF__ >/dev/null; then +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +++ dynamic_linker='NetBSD (a.out) ld.so' +++ else +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major ${libname}${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ dynamic_linker='NetBSD ld.elf_so' +++ fi +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=yes +++ hardcode_into_libs=yes +++ ;; +++ +++newsos6) +++ version_type=linux +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=yes +++ ;; +++ +++*nto* | *qnx*) +++ version_type=qnx +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=no +++ hardcode_into_libs=yes +++ dynamic_linker='ldqnx.so' +++ ;; +++ +++openbsd*) +++ version_type=sunos +++ sys_lib_dlsearch_path_spec="/usr/lib" +++ need_lib_prefix=no +++ # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs. +++ case $host_os in +++ openbsd3.3 | openbsd3.3.*) need_version=yes ;; +++ *) need_version=no ;; +++ esac +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +++ finish_cmds='PATH="\$PATH:/sbin" ldconfig -m $libdir' +++ shlibpath_var=LD_LIBRARY_PATH +++ if test -z "`echo __ELF__ | $CC -E - | $GREP __ELF__`" || test "$host_os-$host_cpu" = "openbsd2.8-powerpc"; then +++ case $host_os in +++ openbsd2.[89] | openbsd2.[89].*) +++ shlibpath_overrides_runpath=no +++ ;; +++ *) +++ shlibpath_overrides_runpath=yes +++ ;; +++ esac +++ else +++ shlibpath_overrides_runpath=yes +++ fi +++ ;; +++ +++os2*) +++ libname_spec='$name' +++ shrext_cmds=".dll" +++ need_lib_prefix=no +++ library_names_spec='$libname${shared_ext} $libname.a' +++ dynamic_linker='OS/2 ld.exe' +++ shlibpath_var=LIBPATH +++ ;; +++ +++osf3* | osf4* | osf5*) +++ version_type=osf +++ need_lib_prefix=no +++ need_version=no +++ soname_spec='${libname}${release}${shared_ext}$major' +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ shlibpath_var=LD_LIBRARY_PATH +++ sys_lib_search_path_spec="/usr/shlib /usr/ccs/lib /usr/lib/cmplrs/cc /usr/lib /usr/local/lib /var/shlib" +++ sys_lib_dlsearch_path_spec="$sys_lib_search_path_spec" +++ ;; +++ +++rdos*) +++ dynamic_linker=no +++ ;; +++ +++solaris*) +++ version_type=linux +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=yes +++ hardcode_into_libs=yes +++ # ldd complains unless libraries are executable +++ postinstall_cmds='chmod +x $lib' +++ ;; +++ +++sunos4*) +++ version_type=sunos +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${shared_ext}$versuffix' +++ finish_cmds='PATH="\$PATH:/usr/etc" ldconfig $libdir' +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=yes +++ if test "$with_gnu_ld" = yes; then +++ need_lib_prefix=no +++ fi +++ need_version=yes +++ ;; +++ +++sysv4 | sysv4.3*) +++ version_type=linux +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ shlibpath_var=LD_LIBRARY_PATH +++ case $host_vendor in +++ sni) +++ shlibpath_overrides_runpath=no +++ need_lib_prefix=no +++ runpath_var=LD_RUN_PATH +++ ;; +++ siemens) +++ need_lib_prefix=no +++ ;; +++ motorola) +++ need_lib_prefix=no +++ need_version=no +++ shlibpath_overrides_runpath=no +++ sys_lib_search_path_spec='/lib /usr/lib /usr/ccs/lib' +++ ;; +++ esac +++ ;; +++ +++sysv4*MP*) +++ if test -d /usr/nec ;then +++ version_type=linux +++ library_names_spec='$libname${shared_ext}.$versuffix $libname${shared_ext}.$major $libname${shared_ext}' +++ soname_spec='$libname${shared_ext}.$major' +++ shlibpath_var=LD_LIBRARY_PATH +++ fi +++ ;; +++ +++sysv5* | sco3.2v5* | sco5v6* | unixware* | OpenUNIX* | sysv4*uw2*) +++ version_type=freebsd-elf +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext} $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=yes +++ hardcode_into_libs=yes +++ if test "$with_gnu_ld" = yes; then +++ sys_lib_search_path_spec='/usr/local/lib /usr/gnu/lib /usr/ccs/lib /usr/lib /lib' +++ else +++ sys_lib_search_path_spec='/usr/ccs/lib /usr/lib' +++ case $host_os in +++ sco3.2v5*) +++ sys_lib_search_path_spec="$sys_lib_search_path_spec /lib" +++ ;; +++ esac +++ fi +++ sys_lib_dlsearch_path_spec='/usr/lib' +++ ;; +++ +++tpf*) +++ # TPF is a cross-target only. Preferred cross-host = GNU/Linux. +++ version_type=linux +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ shlibpath_var=LD_LIBRARY_PATH +++ shlibpath_overrides_runpath=no +++ hardcode_into_libs=yes +++ ;; +++ +++uts4*) +++ version_type=linux +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ shlibpath_var=LD_LIBRARY_PATH +++ ;; +++ +++# Shared libraries for VwWorks, >= 7 only at this stage +++# and (fpic) still incompatible with "large" code models +++# in a few configurations. Only for RTP mode in any case, +++# and upon explicit request at configure time. +++vxworks7*) +++ dynamic_linker=no +++ case ${with_multisubdir}-${enable_shared} in +++ *large*) +++ ;; +++ *mrtp*-yes) +++ version_type=linux +++ need_lib_prefix=no +++ need_version=no +++ library_names_spec='${libname}${release}${shared_ext}$versuffix ${libname}${release}${shared_ext}$major $libname${shared_ext}' +++ soname_spec='${libname}${release}${shared_ext}$major' +++ dynamic_linker="$host_os module_loader" +++ ;; +++ esac +++ ;; +++*) +++ dynamic_linker=no +++ ;; +++esac +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $dynamic_linker" >&5 +++$as_echo "$dynamic_linker" >&6; } +++test "$dynamic_linker" = no && can_build_shared=no +++ +++variables_saved_for_relink="PATH $shlibpath_var $runpath_var" +++if test "$GCC" = yes; then +++ variables_saved_for_relink="$variables_saved_for_relink GCC_EXEC_PREFIX COMPILER_PATH LIBRARY_PATH" +++fi +++ +++if test "${lt_cv_sys_lib_search_path_spec+set}" = set; then +++ sys_lib_search_path_spec="$lt_cv_sys_lib_search_path_spec" +++fi +++if test "${lt_cv_sys_lib_dlsearch_path_spec+set}" = set; then +++ sys_lib_dlsearch_path_spec="$lt_cv_sys_lib_dlsearch_path_spec" +++fi +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking how to hardcode library paths into programs" >&5 +++$as_echo_n "checking how to hardcode library paths into programs... " >&6; } +++hardcode_action= +++if test -n "$hardcode_libdir_flag_spec" || +++ test -n "$runpath_var" || +++ test "X$hardcode_automatic" = "Xyes" ; then +++ +++ # We can hardcode non-existent directories. +++ if test "$hardcode_direct" != no && +++ # If the only mechanism to avoid hardcoding is shlibpath_var, we +++ # have to relink, otherwise we might link with an installed library +++ # when we should be linking with a yet-to-be-installed one +++ ## test "$_LT_TAGVAR(hardcode_shlibpath_var, )" != no && +++ test "$hardcode_minus_L" != no; then +++ # Linking always hardcodes the temporary library directory. +++ hardcode_action=relink +++ else +++ # We can link without hardcoding, and we can hardcode nonexisting dirs. +++ hardcode_action=immediate +++ fi +++else +++ # We cannot hardcode anything, or else we can only hardcode existing +++ # directories. +++ hardcode_action=unsupported +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $hardcode_action" >&5 +++$as_echo "$hardcode_action" >&6; } +++ +++if test "$hardcode_action" = relink || +++ test "$inherit_rpath" = yes; then +++ # Fast installation is not supported +++ enable_fast_install=no +++elif test "$shlibpath_overrides_runpath" = yes || +++ test "$enable_shared" = no; then +++ # Fast installation is not necessary +++ enable_fast_install=needless +++fi +++ +++ +++ +++ +++ +++ +++ if test "x$enable_dlopen" != xyes; then +++ enable_dlopen=unknown +++ enable_dlopen_self=unknown +++ enable_dlopen_self_static=unknown +++else +++ lt_cv_dlopen=no +++ lt_cv_dlopen_libs= +++ +++ case $host_os in +++ beos*) +++ lt_cv_dlopen="load_add_on" +++ lt_cv_dlopen_libs= +++ lt_cv_dlopen_self=yes +++ ;; +++ +++ mingw* | pw32* | cegcc*) +++ lt_cv_dlopen="LoadLibrary" +++ lt_cv_dlopen_libs= +++ ;; +++ +++ cygwin*) +++ lt_cv_dlopen="dlopen" +++ lt_cv_dlopen_libs= +++ ;; +++ +++ darwin*) +++ # if libdl is installed we need to link against it +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +++$as_echo_n "checking for dlopen in -ldl... " >&6; } +++if ${ac_cv_lib_dl_dlopen+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_check_lib_save_LIBS=$LIBS +++LIBS="-ldl $LIBS" +++if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++/* Override any GCC internal prototype to avoid an error. +++ Use char because int might match the return type of a GCC +++ builtin and then its argument prototype would still apply. */ +++#ifdef __cplusplus +++extern "C" +++#endif +++char dlopen (); +++int +++main () +++{ +++return dlopen (); +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ ac_cv_lib_dl_dlopen=yes +++else +++ ac_cv_lib_dl_dlopen=no +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++LIBS=$ac_check_lib_save_LIBS +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +++$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +++if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +++else +++ +++ lt_cv_dlopen="dyld" +++ lt_cv_dlopen_libs= +++ lt_cv_dlopen_self=yes +++ +++fi +++ +++ ;; +++ +++ *) +++ ac_fn_c_check_func "$LINENO" "shl_load" "ac_cv_func_shl_load" +++if test "x$ac_cv_func_shl_load" = xyes; then : +++ lt_cv_dlopen="shl_load" +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for shl_load in -ldld" >&5 +++$as_echo_n "checking for shl_load in -ldld... " >&6; } +++if ${ac_cv_lib_dld_shl_load+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_check_lib_save_LIBS=$LIBS +++LIBS="-ldld $LIBS" +++if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++/* Override any GCC internal prototype to avoid an error. +++ Use char because int might match the return type of a GCC +++ builtin and then its argument prototype would still apply. */ +++#ifdef __cplusplus +++extern "C" +++#endif +++char shl_load (); +++int +++main () +++{ +++return shl_load (); +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ ac_cv_lib_dld_shl_load=yes +++else +++ ac_cv_lib_dld_shl_load=no +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++LIBS=$ac_check_lib_save_LIBS +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_shl_load" >&5 +++$as_echo "$ac_cv_lib_dld_shl_load" >&6; } +++if test "x$ac_cv_lib_dld_shl_load" = xyes; then : +++ lt_cv_dlopen="shl_load" lt_cv_dlopen_libs="-ldld" +++else +++ ac_fn_c_check_func "$LINENO" "dlopen" "ac_cv_func_dlopen" +++if test "x$ac_cv_func_dlopen" = xyes; then : +++ lt_cv_dlopen="dlopen" +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -ldl" >&5 +++$as_echo_n "checking for dlopen in -ldl... " >&6; } +++if ${ac_cv_lib_dl_dlopen+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_check_lib_save_LIBS=$LIBS +++LIBS="-ldl $LIBS" +++if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++/* Override any GCC internal prototype to avoid an error. +++ Use char because int might match the return type of a GCC +++ builtin and then its argument prototype would still apply. */ +++#ifdef __cplusplus +++extern "C" +++#endif +++char dlopen (); +++int +++main () +++{ +++return dlopen (); +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ ac_cv_lib_dl_dlopen=yes +++else +++ ac_cv_lib_dl_dlopen=no +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++LIBS=$ac_check_lib_save_LIBS +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dl_dlopen" >&5 +++$as_echo "$ac_cv_lib_dl_dlopen" >&6; } +++if test "x$ac_cv_lib_dl_dlopen" = xyes; then : +++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-ldl" +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dlopen in -lsvld" >&5 +++$as_echo_n "checking for dlopen in -lsvld... " >&6; } +++if ${ac_cv_lib_svld_dlopen+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_check_lib_save_LIBS=$LIBS +++LIBS="-lsvld $LIBS" +++if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++/* Override any GCC internal prototype to avoid an error. +++ Use char because int might match the return type of a GCC +++ builtin and then its argument prototype would still apply. */ +++#ifdef __cplusplus +++extern "C" +++#endif +++char dlopen (); +++int +++main () +++{ +++return dlopen (); +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ ac_cv_lib_svld_dlopen=yes +++else +++ ac_cv_lib_svld_dlopen=no +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++LIBS=$ac_check_lib_save_LIBS +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_svld_dlopen" >&5 +++$as_echo "$ac_cv_lib_svld_dlopen" >&6; } +++if test "x$ac_cv_lib_svld_dlopen" = xyes; then : +++ lt_cv_dlopen="dlopen" lt_cv_dlopen_libs="-lsvld" +++else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for dld_link in -ldld" >&5 +++$as_echo_n "checking for dld_link in -ldld... " >&6; } +++if ${ac_cv_lib_dld_dld_link+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_check_lib_save_LIBS=$LIBS +++LIBS="-ldld $LIBS" +++if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++/* Override any GCC internal prototype to avoid an error. +++ Use char because int might match the return type of a GCC +++ builtin and then its argument prototype would still apply. */ +++#ifdef __cplusplus +++extern "C" +++#endif +++char dld_link (); +++int +++main () +++{ +++return dld_link (); +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ ac_cv_lib_dld_dld_link=yes +++else +++ ac_cv_lib_dld_dld_link=no +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++LIBS=$ac_check_lib_save_LIBS +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_dld_dld_link" >&5 +++$as_echo "$ac_cv_lib_dld_dld_link" >&6; } +++if test "x$ac_cv_lib_dld_dld_link" = xyes; then : +++ lt_cv_dlopen="dld_link" lt_cv_dlopen_libs="-ldld" +++fi +++ +++ +++fi +++ +++ +++fi +++ +++ +++fi +++ +++ +++fi +++ +++ +++fi +++ +++ ;; +++ esac +++ +++ if test "x$lt_cv_dlopen" != xno; then +++ enable_dlopen=yes +++ else +++ enable_dlopen=no +++ fi +++ +++ case $lt_cv_dlopen in +++ dlopen) +++ save_CPPFLAGS="$CPPFLAGS" +++ test "x$ac_cv_header_dlfcn_h" = xyes && CPPFLAGS="$CPPFLAGS -DHAVE_DLFCN_H" +++ +++ save_LDFLAGS="$LDFLAGS" +++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $export_dynamic_flag_spec\" +++ +++ save_LIBS="$LIBS" +++ LIBS="$lt_cv_dlopen_libs $LIBS" +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a program can dlopen itself" >&5 +++$as_echo_n "checking whether a program can dlopen itself... " >&6; } +++if ${lt_cv_dlopen_self+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test "$cross_compiling" = yes; then : +++ lt_cv_dlopen_self=cross +++else +++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +++ lt_status=$lt_dlunknown +++ cat > conftest.$ac_ext <<_LT_EOF +++#line 12207 "configure" +++#include "confdefs.h" +++ +++#if HAVE_DLFCN_H +++#include +++#endif +++ +++#include +++ +++#ifdef RTLD_GLOBAL +++# define LT_DLGLOBAL RTLD_GLOBAL +++#else +++# ifdef DL_GLOBAL +++# define LT_DLGLOBAL DL_GLOBAL +++# else +++# define LT_DLGLOBAL 0 +++# endif +++#endif +++ +++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +++ find out it does not work in some platform. */ +++#ifndef LT_DLLAZY_OR_NOW +++# ifdef RTLD_LAZY +++# define LT_DLLAZY_OR_NOW RTLD_LAZY +++# else +++# ifdef DL_LAZY +++# define LT_DLLAZY_OR_NOW DL_LAZY +++# else +++# ifdef RTLD_NOW +++# define LT_DLLAZY_OR_NOW RTLD_NOW +++# else +++# ifdef DL_NOW +++# define LT_DLLAZY_OR_NOW DL_NOW +++# else +++# define LT_DLLAZY_OR_NOW 0 +++# endif +++# endif +++# endif +++# endif +++#endif +++ +++/* When -fvisbility=hidden is used, assume the code has been annotated +++ correspondingly for the symbols needed. */ +++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +++void fnord () __attribute__((visibility("default"))); +++#endif +++ +++void fnord () { int i=42; } +++int main () +++{ +++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +++ int status = $lt_dlunknown; +++ +++ if (self) +++ { +++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +++ else +++ { +++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +++ else puts (dlerror ()); +++ } +++ /* dlclose (self); */ +++ } +++ else +++ puts (dlerror ()); +++ +++ return status; +++} +++_LT_EOF +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 +++ (eval $ac_link) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then +++ (./conftest; exit; ) >&5 2>/dev/null +++ lt_status=$? +++ case x$lt_status in +++ x$lt_dlno_uscore) lt_cv_dlopen_self=yes ;; +++ x$lt_dlneed_uscore) lt_cv_dlopen_self=yes ;; +++ x$lt_dlunknown|x*) lt_cv_dlopen_self=no ;; +++ esac +++ else : +++ # compilation failed +++ lt_cv_dlopen_self=no +++ fi +++fi +++rm -fr conftest* +++ +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self" >&5 +++$as_echo "$lt_cv_dlopen_self" >&6; } +++ +++ if test "x$lt_cv_dlopen_self" = xyes; then +++ wl=$lt_prog_compiler_wl eval LDFLAGS=\"\$LDFLAGS $lt_prog_compiler_static\" +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether a statically linked program can dlopen itself" >&5 +++$as_echo_n "checking whether a statically linked program can dlopen itself... " >&6; } +++if ${lt_cv_dlopen_self_static+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ if test "$cross_compiling" = yes; then : +++ lt_cv_dlopen_self_static=cross +++else +++ lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 +++ lt_status=$lt_dlunknown +++ cat > conftest.$ac_ext <<_LT_EOF +++#line 12313 "configure" +++#include "confdefs.h" +++ +++#if HAVE_DLFCN_H +++#include +++#endif +++ +++#include +++ +++#ifdef RTLD_GLOBAL +++# define LT_DLGLOBAL RTLD_GLOBAL +++#else +++# ifdef DL_GLOBAL +++# define LT_DLGLOBAL DL_GLOBAL +++# else +++# define LT_DLGLOBAL 0 +++# endif +++#endif +++ +++/* We may have to define LT_DLLAZY_OR_NOW in the command line if we +++ find out it does not work in some platform. */ +++#ifndef LT_DLLAZY_OR_NOW +++# ifdef RTLD_LAZY +++# define LT_DLLAZY_OR_NOW RTLD_LAZY +++# else +++# ifdef DL_LAZY +++# define LT_DLLAZY_OR_NOW DL_LAZY +++# else +++# ifdef RTLD_NOW +++# define LT_DLLAZY_OR_NOW RTLD_NOW +++# else +++# ifdef DL_NOW +++# define LT_DLLAZY_OR_NOW DL_NOW +++# else +++# define LT_DLLAZY_OR_NOW 0 +++# endif +++# endif +++# endif +++# endif +++#endif +++ +++/* When -fvisbility=hidden is used, assume the code has been annotated +++ correspondingly for the symbols needed. */ +++#if defined(__GNUC__) && (((__GNUC__ == 3) && (__GNUC_MINOR__ >= 3)) || (__GNUC__ > 3)) +++void fnord () __attribute__((visibility("default"))); +++#endif +++ +++void fnord () { int i=42; } +++int main () +++{ +++ void *self = dlopen (0, LT_DLGLOBAL|LT_DLLAZY_OR_NOW); +++ int status = $lt_dlunknown; +++ +++ if (self) +++ { +++ if (dlsym (self,"fnord")) status = $lt_dlno_uscore; +++ else +++ { +++ if (dlsym( self,"_fnord")) status = $lt_dlneed_uscore; +++ else puts (dlerror ()); +++ } +++ /* dlclose (self); */ +++ } +++ else +++ puts (dlerror ()); +++ +++ return status; +++} +++_LT_EOF +++ if { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_link\""; } >&5 +++ (eval $ac_link) 2>&5 +++ ac_status=$? +++ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 +++ test $ac_status = 0; } && test -s conftest${ac_exeext} 2>/dev/null; then +++ (./conftest; exit; ) >&5 2>/dev/null +++ lt_status=$? +++ case x$lt_status in +++ x$lt_dlno_uscore) lt_cv_dlopen_self_static=yes ;; +++ x$lt_dlneed_uscore) lt_cv_dlopen_self_static=yes ;; +++ x$lt_dlunknown|x*) lt_cv_dlopen_self_static=no ;; +++ esac +++ else : +++ # compilation failed +++ lt_cv_dlopen_self_static=no +++ fi +++fi +++rm -fr conftest* +++ +++ +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lt_cv_dlopen_self_static" >&5 +++$as_echo "$lt_cv_dlopen_self_static" >&6; } +++ fi +++ +++ CPPFLAGS="$save_CPPFLAGS" +++ LDFLAGS="$save_LDFLAGS" +++ LIBS="$save_LIBS" +++ ;; +++ esac +++ +++ case $lt_cv_dlopen_self in +++ yes|no) enable_dlopen_self=$lt_cv_dlopen_self ;; +++ *) enable_dlopen_self=unknown ;; +++ esac +++ +++ case $lt_cv_dlopen_self_static in +++ yes|no) enable_dlopen_self_static=$lt_cv_dlopen_self_static ;; +++ *) enable_dlopen_self_static=unknown ;; +++ esac +++fi +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++striplib= +++old_striplib= +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether stripping libraries is possible" >&5 +++$as_echo_n "checking whether stripping libraries is possible... " >&6; } +++if test -n "$STRIP" && $STRIP -V 2>&1 | $GREP "GNU strip" >/dev/null; then +++ test -z "$old_striplib" && old_striplib="$STRIP --strip-debug" +++ test -z "$striplib" && striplib="$STRIP --strip-unneeded" +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +++$as_echo "yes" >&6; } +++else +++# FIXME - insert some real tests, host_os isn't really good enough +++ case $host_os in +++ darwin*) +++ if test -n "$STRIP" ; then +++ striplib="$STRIP -x" +++ old_striplib="$STRIP -S" +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +++$as_echo "yes" >&6; } +++ else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++ fi +++ ;; +++ *) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +++$as_echo "no" >&6; } +++ ;; +++ esac +++fi +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ # Report which library types will actually be built +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if libtool supports shared libraries" >&5 +++$as_echo_n "checking if libtool supports shared libraries... " >&6; } +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $can_build_shared" >&5 +++$as_echo "$can_build_shared" >&6; } +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build shared libraries" >&5 +++$as_echo_n "checking whether to build shared libraries... " >&6; } +++ test "$can_build_shared" = "no" && enable_shared=no +++ +++ # On AIX, shared libraries and static libraries use the same namespace, and +++ # are all built from PIC. +++ case $host_os in +++ aix3*) +++ test "$enable_shared" = yes && enable_static=no +++ if test -n "$RANLIB"; then +++ archive_cmds="$archive_cmds~\$RANLIB \$lib" +++ postinstall_cmds='$RANLIB $lib' +++ fi +++ ;; +++ +++ aix[4-9]*) +++ if test "$host_cpu" != ia64 && test "$aix_use_runtimelinking" = no ; then +++ test "$enable_shared" = yes && enable_static=no +++ fi +++ ;; +++ esac +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_shared" >&5 +++$as_echo "$enable_shared" >&6; } +++ +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build static libraries" >&5 +++$as_echo_n "checking whether to build static libraries... " >&6; } +++ # Make sure either enable_shared or enable_static is yes. +++ test "$enable_shared" = yes || enable_static=yes +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_static" >&5 +++$as_echo "$enable_static" >&6; } +++ +++ +++ +++ +++fi +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++CC="$lt_save_CC" +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ +++ ac_config_commands="$ac_config_commands libtool" +++ +++ +++ +++ +++# Only expand once: +++ +++ +++ +++ if test x$enable_darwin_at_rpath = xyes; then +++ ENABLE_DARWIN_AT_RPATH_TRUE= +++ ENABLE_DARWIN_AT_RPATH_FALSE='#' +++else +++ ENABLE_DARWIN_AT_RPATH_TRUE='#' +++ ENABLE_DARWIN_AT_RPATH_FALSE= +++fi +++ +++ +++ +++ +++ +++# Do compilation tests using the C compiler and preprocessor. +++ac_ext=c +++ac_cpp='$CPP $CPPFLAGS' +++ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +++ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +++ac_compiler_gnu=$ac_cv_c_compiler_gnu +++ +++ +++# Allow the user to set CC_FOR_BUILD in the environment. +++CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} +++ +++ +++# Search for needed functions in host libraries. +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing malloc" >&5 +++$as_echo_n "checking for library containing malloc... " >&6; } +++if ${ac_cv_search_malloc+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_func_search_save_LIBS=$LIBS +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++/* Override any GCC internal prototype to avoid an error. +++ Use char because int might match the return type of a GCC +++ builtin and then its argument prototype would still apply. */ +++#ifdef __cplusplus +++extern "C" +++#endif +++char malloc (); +++int +++main () +++{ +++return malloc (); +++ ; +++ return 0; +++} +++_ACEOF +++for ac_lib in '' c; do +++ if test -z "$ac_lib"; then +++ ac_res="none required" +++ else +++ ac_res=-l$ac_lib +++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" +++ fi +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++if ac_fn_c_try_link "$LINENO"; then : +++ ac_cv_search_malloc=$ac_res +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext +++ if ${ac_cv_search_malloc+:} false; then : +++ break +++fi +++done +++if ${ac_cv_search_malloc+:} false; then : +++ +++else +++ ac_cv_search_malloc=no +++fi +++rm conftest.$ac_ext +++LIBS=$ac_func_search_save_LIBS +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_malloc" >&5 +++$as_echo "$ac_cv_search_malloc" >&6; } +++ac_res=$ac_cv_search_malloc +++if test "$ac_res" != no; then : +++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +++ +++fi +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing cosf" >&5 +++$as_echo_n "checking for library containing cosf... " >&6; } +++if ${ac_cv_search_cosf+:} false; then : +++ $as_echo_n "(cached) " >&6 +++else +++ ac_func_search_save_LIBS=$LIBS +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++/* Override any GCC internal prototype to avoid an error. +++ Use char because int might match the return type of a GCC +++ builtin and then its argument prototype would still apply. */ +++#ifdef __cplusplus +++extern "C" +++#endif +++char cosf (); +++int +++main () +++{ +++return cosf (); +++ ; +++ return 0; +++} +++_ACEOF +++for ac_lib in '' m; do +++ if test -z "$ac_lib"; then +++ ac_res="none required" +++ else +++ ac_res=-l$ac_lib +++ LIBS="-l$ac_lib $ac_func_search_save_LIBS" +++ fi +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++if ac_fn_c_try_link "$LINENO"; then : +++ ac_cv_search_cosf=$ac_res +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext +++ if ${ac_cv_search_cosf+:} false; then : +++ break +++fi +++done +++if ${ac_cv_search_cosf+:} false; then : +++ +++else +++ ac_cv_search_cosf=no +++fi +++rm conftest.$ac_ext +++LIBS=$ac_func_search_save_LIBS +++fi +++{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_search_cosf" >&5 +++$as_echo "$ac_cv_search_cosf" >&6; } +++ac_res=$ac_cv_search_cosf +++if test "$ac_res" != no; then : +++ test "$ac_res" = "none required" || LIBS="$ac_res $LIBS" +++ +++fi +++ +++ +++# Determine what GCC version number to use in filesystem paths. +++ +++ get_gcc_base_ver="cat" +++ +++# Check whether --with-gcc-major-version-only was given. +++if test "${with_gcc_major_version_only+set}" = set; then : +++ withval=$with_gcc_major_version_only; if test x$with_gcc_major_version_only = xyes ; then +++ get_gcc_base_ver="sed -e 's/^\([0-9]*\).*/\1/'" +++ fi +++ +++fi +++ +++ +++ +++ +++# Add dependencies for libga68.spec file +++SPEC_LIBGA68_DEPS="$LIBS" +++ +++ +++# libga68 soname version +++libga68_VERSION=1:0:0 +++ +++ +++# The Boehm GC +++ +++# Check whether --enable-algol68-gc was given. +++if test "${enable_algol68_gc+set}" = set; then : +++ enableval=$enable_algol68_gc; +++else +++ enable_algol68_gc=no +++fi +++ +++ +++# Check whether --with-target-bdw-gc was given. +++if test "${with_target_bdw_gc+set}" = set; then : +++ withval=$with_target_bdw_gc; +++fi +++ +++ +++# Check whether --with-target-bdw-gc-include was given. +++if test "${with_target_bdw_gc_include+set}" = set; then : +++ withval=$with_target_bdw_gc_include; +++fi +++ +++ +++# Check whether --with-target-bdw-gc-lib was given. +++if test "${with_target_bdw_gc_lib+set}" = set; then : +++ withval=$with_target_bdw_gc_lib; +++fi +++ +++ +++bdw_lib_dir= +++case "$enable_algol68_gc" in +++no) +++ use_bdw_gc=no +++ ;; +++*) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for bdw garbage collector" >&5 +++$as_echo_n "checking for bdw garbage collector... " >&6; } +++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +++ BDW_GC_CFLAGS= +++ BDW_GC_LIBS="-lgc" +++ else +++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then +++ as_fn_error $? "found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing" "$LINENO" 5 +++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then +++ as_fn_error $? "found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing" "$LINENO" 5 +++ else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: using paths configured with --with-target-bdw-gc options" >&5 +++$as_echo "using paths configured with --with-target-bdw-gc options" >&6; } +++ fi +++ mldir=`${CC-gcc} --print-multi-directory 2>/dev/null` +++ bdw_val= +++ if test "x$with_target_bdw_gc" != x; then +++ for i in `echo $with_target_bdw_gc | tr ',' ' '`; do +++ case "$i" in +++ *=*) sd=${i%%=*}; d=${i#*=} ;; +++ *) sd=.; d=$i ;; +++ esac +++ if test "$mldir" = "$sd"; then +++ bdw_val=$d +++ fi +++ done +++ if test "x$bdw_val" = x; then +++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc" "$LINENO" 5 +++ fi +++ bdw_inc_dir="$bdw_val/include" +++ bdw_lib_dir="$bdw_val/lib" +++ fi +++ bdw_val= +++ if test "x$with_target_bdw_gc_include" != x; then +++ for i in `echo $with_target_bdw_gc_include | tr ',' ' '`; do +++ case "$i" in +++ *=*) sd=${i%%=*}; d=${i#*=} ;; +++ *) sd=.; d=$i; fallback=$i ;; +++ esac +++ if test "$mldir" = "$sd"; then +++ bdw_val=$d +++ fi +++ done +++ if test "x$bdw_val" = x && test "x$bdw_inc_dir" = x && test "x$fallback" != x; then +++ bdw_inc_dir="$fallback" +++ elif test "x$bdw_val" = x; then +++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-include" "$LINENO" 5 +++ else +++ bdw_inc_dir="$bdw_val" +++ fi +++ fi +++ bdw_val= +++ if test "x$with_target_bdw_gc_lib" != x; then +++ for i in `echo $with_target_bdw_gc_lib | tr ',' ' '`; do +++ case "$i" in +++ *=*) sd=${i%%=*}; d=${i#*=} ;; +++ *) sd=.; d=$i ;; +++ esac +++ if test "$mldir" = "$sd"; then +++ bdw_val=$d +++ fi +++ done +++ if test "x$bdw_val" = x; then +++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-lib" "$LINENO" 5 +++ fi +++ bdw_lib_dir="$bdw_val" +++ fi +++ if test "x$bdw_inc_dir" = x; then +++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-include" "$LINENO" 5 +++ fi +++ if test "x$bdw_lib_dir" = x; then +++ as_fn_error $? "no multilib path ($mldir) found in --with-target-bdw-gc-lib" "$LINENO" 5 +++ fi +++ BDW_GC_CFLAGS="-I$bdw_inc_dir" +++ if test -f $bdw_lib_dir/libgc.la; then +++ BDW_GC_LIBS="$bdw_lib_dir/libgc.la" +++ else +++ BDW_GC_LIBS="-L$bdw_lib_dir -lgc" +++ fi +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 +++$as_echo "found" >&6; } +++ fi +++ +++ case "$BDW_GC_LIBS" in +++ *libgc.la) +++ use_bdw_gc=yes +++ ;; +++ *) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for system boehm-gc" >&5 +++$as_echo_n "checking for system boehm-gc... " >&6; } +++ save_CFLAGS=$CFLAGS +++ save_LIBS=$LIBS +++ CFLAGS="$CFLAGS $BDW_GC_CFLAGS" +++ LIBS="$LIBS $BDW_GC_LIBS" +++ if test x$gcc_no_link = xyes; then +++ as_fn_error $? "Link tests are not allowed after GCC_NO_EXECUTABLES." "$LINENO" 5 +++fi +++cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++#include +++int +++main () +++{ +++GC_init() +++ ; +++ return 0; +++} +++_ACEOF +++if ac_fn_c_try_link "$LINENO"; then : +++ +++ if test "$cross_compiling" = yes; then : +++ system_bdw_gc_found=no +++ +++else +++ cat confdefs.h - <<_ACEOF >conftest.$ac_ext +++/* end confdefs.h. */ +++ +++ #include +++ int main() { +++ GC_init(); +++ return 0; +++ } +++ +++_ACEOF +++if ac_fn_c_try_run "$LINENO"; then : +++ system_bdw_gc_found=yes +++else +++ system_bdw_gc_found=no +++fi +++rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ +++ conftest.$ac_objext conftest.beam conftest.$ac_ext +++fi +++ +++ +++else +++ system_bdw_gc_found=no +++fi +++rm -f core conftest.err conftest.$ac_objext \ +++ conftest$ac_exeext conftest.$ac_ext +++ CFLAGS=$save_CFLAGS +++ LIBS=$save_LIBS +++ if test x$enable_algol68_gc = xauto && test x$system_bdw_gc_found = xno; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: system bdw-gc not found, building libga68 with no GC support" >&5 +++$as_echo "$as_me: WARNING: system bdw-gc not found, building libga68 with no GC support" >&2;} +++ use_bdw_gc=no +++ elif test x$enable_algol68_gc = xyes && test x$system_bdw_gc_found = xno; then +++ as_fn_error $? "system bdw-gc required but not found" "$LINENO" 5 +++ else +++ use_bdw_gc=yes +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: found" >&5 +++$as_echo "found" >&6; } +++ fi +++ esac +++esac +++ +++if test "$use_bdw_gc" = no; then +++ LIBGA68_GCFLAGS='' +++ LIBGA68_BOEHM_GC_INCLUDES='' +++ LIBGA68_BOEHM_GC_LIBS='' +++else +++ LIBGA68_GCFLAGS='-DLIBGA68_WITH_GC=1' +++ LIBGA68_BOEHM_GC_INCLUDES=$BDW_GC_CFLAGS +++ LIBGA68_BOEHM_GC_LIBS=$BDW_GC_LIBS +++ SPEC_LIBGA68_DEPS="$SPEC_LIBGA68_DEPS $BDW_GC_LIBS" +++fi +++ +++extra_darwin_ldflags_libga68= +++case $host in +++ *-*-darwin*) +++ extra_darwin_ldflags_libga68=-Wl,-U,___algol68_main +++ if test -f $bdw_lib_dir/libgc.a; then +++ # Darwin wants to link this statically into the library +++ LIBGA68_BOEHM_GC_LIBS="$bdw_lib_dir/libgc.a" +++ # No spec entry. +++ BDW_GC_LIBS= +++ fi +++ ;; +++ *) ;; +++esac +++ +++ +++# Subst some variables used in Makefile.am +++ +++ +++ +++ +++# Output files and be done. +++ +++ac_config_files="$ac_config_files Makefile" +++ +++ac_config_files="$ac_config_files libga68.spec" +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: libga68 has been configured." >&5 +++$as_echo "$as_me: libga68 has been configured." >&6;} +++cat >confcache <<\_ACEOF +++# This file is a shell script that caches the results of configure +++# tests run on this system so they can be shared between configure +++# scripts and configure runs, see configure's option --config-cache. +++# It is not useful on other systems. If it contains results you don't +++# want to keep, you may remove or edit it. +++# +++# config.status only pays attention to the cache file if you give it +++# the --recheck option to rerun configure. +++# +++# `ac_cv_env_foo' variables (set or unset) will be overridden when +++# loading this file, other *unset* `ac_cv_foo' will be assigned the +++# following values. +++ +++_ACEOF +++ +++# The following way of writing the cache mishandles newlines in values, +++# but we know of no workaround that is simple, portable, and efficient. +++# So, we kill variables containing newlines. +++# Ultrix sh set writes to stderr and can't be redirected directly, +++# and sets the high bit in the cache file unless we assign to the vars. +++( +++ for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do +++ eval ac_val=\$$ac_var +++ case $ac_val in #( +++ *${as_nl}*) +++ case $ac_var in #( +++ *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +++$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; +++ esac +++ case $ac_var in #( +++ _ | IFS | as_nl) ;; #( +++ BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( +++ *) { eval $ac_var=; unset $ac_var;} ;; +++ esac ;; +++ esac +++ done +++ +++ (set) 2>&1 | +++ case $as_nl`(ac_space=' '; set) 2>&1` in #( +++ *${as_nl}ac_space=\ *) +++ # `set' does not quote correctly, so add quotes: double-quote +++ # substitution turns \\\\ into \\, and sed turns \\ into \. +++ sed -n \ +++ "s/'/'\\\\''/g; +++ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" +++ ;; #( +++ *) +++ # `set' quotes correctly as required by POSIX, so do not add quotes. +++ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" +++ ;; +++ esac | +++ sort +++) | +++ sed ' +++ /^ac_cv_env_/b end +++ t clear +++ :clear +++ s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ +++ t end +++ s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ +++ :end' >>confcache +++if diff "$cache_file" confcache >/dev/null 2>&1; then :; else +++ if test -w "$cache_file"; then +++ if test "x$cache_file" != "x/dev/null"; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +++$as_echo "$as_me: updating cache $cache_file" >&6;} +++ if test ! -f "$cache_file" || test -h "$cache_file"; then +++ cat confcache >"$cache_file" +++ else +++ case $cache_file in #( +++ */* | ?:*) +++ mv -f confcache "$cache_file"$$ && +++ mv -f "$cache_file"$$ "$cache_file" ;; #( +++ *) +++ mv -f confcache "$cache_file" ;; +++ esac +++ fi +++ fi +++ else +++ { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +++$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} +++ fi +++fi +++rm -f confcache +++ +++test "x$prefix" = xNONE && prefix=$ac_default_prefix +++# Let make expand exec_prefix. +++test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +++ +++DEFS=-DHAVE_CONFIG_H +++ +++ac_libobjs= +++ac_ltlibobjs= +++U= +++for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue +++ # 1. Remove the extension, and $U if already installed. +++ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' +++ ac_i=`$as_echo "$ac_i" | sed "$ac_script"` +++ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR +++ # will be set to the directory where LIBOBJS objects are built. +++ as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" +++ as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +++done +++LIBOBJS=$ac_libobjs +++ +++LTLIBOBJS=$ac_ltlibobjs +++ +++ +++{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +++$as_echo_n "checking that generated files are newer than configure... " >&6; } +++ if test -n "$am_sleep_pid"; then +++ # Hide warnings about reused PIDs. +++ wait $am_sleep_pid 2>/dev/null +++ fi +++ { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +++$as_echo "done" >&6; } +++if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then +++ as_fn_error $? "conditional \"AMDEP\" was never defined. +++Usually this means the macro was only invoked conditionally." "$LINENO" 5 +++fi +++if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then +++ as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +++Usually this means the macro was only invoked conditionally." "$LINENO" 5 +++fi +++ if test -n "$EXEEXT"; then +++ am__EXEEXT_TRUE= +++ am__EXEEXT_FALSE='#' +++else +++ am__EXEEXT_TRUE='#' +++ am__EXEEXT_FALSE= +++fi +++ +++if test -z "${MAINTAINER_MODE_TRUE}" && test -z "${MAINTAINER_MODE_FALSE}"; then +++ as_fn_error $? "conditional \"MAINTAINER_MODE\" was never defined. +++Usually this means the macro was only invoked conditionally." "$LINENO" 5 +++fi +++if test -z "${am__fastdepCCAS_TRUE}" && test -z "${am__fastdepCCAS_FALSE}"; then +++ as_fn_error $? "conditional \"am__fastdepCCAS\" was never defined. +++Usually this means the macro was only invoked conditionally." "$LINENO" 5 +++fi +++if test -z "${ENABLE_DARWIN_AT_RPATH_TRUE}" && test -z "${ENABLE_DARWIN_AT_RPATH_FALSE}"; then +++ as_fn_error $? "conditional \"ENABLE_DARWIN_AT_RPATH\" was never defined. +++Usually this means the macro was only invoked conditionally." "$LINENO" 5 +++fi +++ +++: "${CONFIG_STATUS=./config.status}" +++ac_write_fail=0 +++ac_clean_files_save=$ac_clean_files +++ac_clean_files="$ac_clean_files $CONFIG_STATUS" +++{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +++$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +++as_write_fail=0 +++cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +++#! $SHELL +++# Generated by $as_me. +++# Run this file to recreate the current configuration. +++# Compiler output produced by configure, useful for debugging +++# configure, is in config.log if it exists. +++ +++debug=false +++ac_cs_recheck=false +++ac_cs_silent=false +++ +++SHELL=\${CONFIG_SHELL-$SHELL} +++export SHELL +++_ASEOF +++cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +++## -------------------- ## +++## M4sh Initialization. ## +++## -------------------- ## +++ +++# Be more Bourne compatible +++DUALCASE=1; export DUALCASE # for MKS sh +++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : +++ emulate sh +++ NULLCMD=: +++ # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which +++ # is contrary to our usage. Disable this feature. +++ alias -g '${1+"$@"}'='"$@"' +++ setopt NO_GLOB_SUBST +++else +++ case `(set -o) 2>/dev/null` in #( +++ *posix*) : +++ set -o posix ;; #( +++ *) : +++ ;; +++esac +++fi +++ +++ +++as_nl=' +++' +++export as_nl +++# Printing a long string crashes Solaris 7 /usr/bin/printf. +++as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +++as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +++# Prefer a ksh shell builtin over an external printf program on Solaris, +++# but without wasting forks for bash or zsh. +++if test -z "$BASH_VERSION$ZSH_VERSION" \ +++ && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then +++ as_echo='print -r --' +++ as_echo_n='print -rn --' +++elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then +++ as_echo='printf %s\n' +++ as_echo_n='printf %s' +++else +++ if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then +++ as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' +++ as_echo_n='/usr/ucb/echo -n' +++ else +++ as_echo_body='eval expr "X$1" : "X\\(.*\\)"' +++ as_echo_n_body='eval +++ arg=$1; +++ case $arg in #( +++ *"$as_nl"*) +++ expr "X$arg" : "X\\(.*\\)$as_nl"; +++ arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; +++ esac; +++ expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" +++ ' +++ export as_echo_n_body +++ as_echo_n='sh -c $as_echo_n_body as_echo' +++ fi +++ export as_echo_body +++ as_echo='sh -c $as_echo_body as_echo' +++fi +++ +++# The user is always right. +++if test "${PATH_SEPARATOR+set}" != set; then +++ PATH_SEPARATOR=: +++ (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { +++ (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || +++ PATH_SEPARATOR=';' +++ } +++fi +++ +++ +++# IFS +++# We need space, tab and new line, in precisely that order. Quoting is +++# there to prevent editors from complaining about space-tab. +++# (If _AS_PATH_WALK were called with IFS unset, it would disable word +++# splitting by setting IFS to empty value.) +++IFS=" "" $as_nl" +++ +++# Find who we are. Look in the path if we contain no directory separator. +++as_myself= +++case $0 in #(( +++ *[\\/]* ) as_myself=$0 ;; +++ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +++for as_dir in $PATH +++do +++ IFS=$as_save_IFS +++ test -z "$as_dir" && as_dir=. +++ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break +++ done +++IFS=$as_save_IFS +++ +++ ;; +++esac +++# We did not find ourselves, most probably we were run as `sh COMMAND' +++# in which case we are not to be found in the path. +++if test "x$as_myself" = x; then +++ as_myself=$0 +++fi +++if test ! -f "$as_myself"; then +++ $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 +++ exit 1 +++fi +++ +++# Unset variables that we do not need and which cause bugs (e.g. in +++# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +++# suppresses any "Segmentation fault" message there. '((' could +++# trigger a bug in pdksh 5.2.14. +++for as_var in BASH_ENV ENV MAIL MAILPATH +++do eval test x\${$as_var+set} = xset \ +++ && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +++done +++PS1='$ ' +++PS2='> ' +++PS4='+ ' +++ +++# NLS nuisances. +++LC_ALL=C +++export LC_ALL +++LANGUAGE=C +++export LANGUAGE +++ +++# CDPATH. +++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +++ +++ +++# as_fn_error STATUS ERROR [LINENO LOG_FD] +++# ---------------------------------------- +++# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +++# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +++# script with STATUS, using 1 if that was 0. +++as_fn_error () +++{ +++ as_status=$1; test $as_status -eq 0 && as_status=1 +++ if test "$4"; then +++ as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack +++ $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 +++ fi +++ $as_echo "$as_me: error: $2" >&2 +++ as_fn_exit $as_status +++} # as_fn_error +++ +++ +++# as_fn_set_status STATUS +++# ----------------------- +++# Set $? to STATUS, without forking. +++as_fn_set_status () +++{ +++ return $1 +++} # as_fn_set_status +++ +++# as_fn_exit STATUS +++# ----------------- +++# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +++as_fn_exit () +++{ +++ set +e +++ as_fn_set_status $1 +++ exit $1 +++} # as_fn_exit +++ +++# as_fn_unset VAR +++# --------------- +++# Portably unset VAR. +++as_fn_unset () +++{ +++ { eval $1=; unset $1;} +++} +++as_unset=as_fn_unset +++# as_fn_append VAR VALUE +++# ---------------------- +++# Append the text in VALUE to the end of the definition contained in VAR. Take +++# advantage of any shell optimizations that allow amortized linear growth over +++# repeated appends, instead of the typical quadratic growth present in naive +++# implementations. +++if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : +++ eval 'as_fn_append () +++ { +++ eval $1+=\$2 +++ }' +++else +++ as_fn_append () +++ { +++ eval $1=\$$1\$2 +++ } +++fi # as_fn_append +++ +++# as_fn_arith ARG... +++# ------------------ +++# Perform arithmetic evaluation on the ARGs, and store the result in the +++# global $as_val. Take advantage of shells that can avoid forks. The arguments +++# must be portable across $(()) and expr. +++if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : +++ eval 'as_fn_arith () +++ { +++ as_val=$(( $* )) +++ }' +++else +++ as_fn_arith () +++ { +++ as_val=`expr "$@" || test $? -eq 1` +++ } +++fi # as_fn_arith +++ +++ +++if expr a : '\(a\)' >/dev/null 2>&1 && +++ test "X`expr 00001 : '.*\(...\)'`" = X001; then +++ as_expr=expr +++else +++ as_expr=false +++fi +++ +++if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then +++ as_basename=basename +++else +++ as_basename=false +++fi +++ +++if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then +++ as_dirname=dirname +++else +++ as_dirname=false +++fi +++ +++as_me=`$as_basename -- "$0" || +++$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ +++ X"$0" : 'X\(//\)$' \| \ +++ X"$0" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X/"$0" | +++ sed '/^.*\/\([^/][^/]*\)\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\/\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\/\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'` +++ +++# Avoid depending upon Character Ranges. +++as_cr_letters='abcdefghijklmnopqrstuvwxyz' +++as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +++as_cr_Letters=$as_cr_letters$as_cr_LETTERS +++as_cr_digits='0123456789' +++as_cr_alnum=$as_cr_Letters$as_cr_digits +++ +++ECHO_C= ECHO_N= ECHO_T= +++case `echo -n x` in #((((( +++-n*) +++ case `echo 'xy\c'` in +++ *c*) ECHO_T=' ';; # ECHO_T is single tab character. +++ xy) ECHO_C='\c';; +++ *) echo `echo ksh88 bug on AIX 6.1` > /dev/null +++ ECHO_T=' ';; +++ esac;; +++*) +++ ECHO_N='-n';; +++esac +++ +++rm -f conf$$ conf$$.exe conf$$.file +++if test -d conf$$.dir; then +++ rm -f conf$$.dir/conf$$.file +++else +++ rm -f conf$$.dir +++ mkdir conf$$.dir 2>/dev/null +++fi +++if (echo >conf$$.file) 2>/dev/null; then +++ if ln -s conf$$.file conf$$ 2>/dev/null; then +++ as_ln_s='ln -s' +++ # ... but there are two gotchas: +++ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. +++ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. +++ # In both cases, we have to default to `cp -pR'. +++ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || +++ as_ln_s='cp -pR' +++ elif ln conf$$.file conf$$ 2>/dev/null; then +++ as_ln_s=ln +++ else +++ as_ln_s='cp -pR' +++ fi +++else +++ as_ln_s='cp -pR' +++fi +++rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +++rmdir conf$$.dir 2>/dev/null +++ +++ +++# as_fn_mkdir_p +++# ------------- +++# Create "$as_dir" as a directory, including parents if necessary. +++as_fn_mkdir_p () +++{ +++ +++ case $as_dir in #( +++ -*) as_dir=./$as_dir;; +++ esac +++ test -d "$as_dir" || eval $as_mkdir_p || { +++ as_dirs= +++ while :; do +++ case $as_dir in #( +++ *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( +++ *) as_qdir=$as_dir;; +++ esac +++ as_dirs="'$as_qdir' $as_dirs" +++ as_dir=`$as_dirname -- "$as_dir" || +++$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +++ X"$as_dir" : 'X\(//\)[^/]' \| \ +++ X"$as_dir" : 'X\(//\)$' \| \ +++ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X"$as_dir" | +++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)[^/].*/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'` +++ test -d "$as_dir" && break +++ done +++ test -z "$as_dirs" || eval "mkdir $as_dirs" +++ } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" +++ +++ +++} # as_fn_mkdir_p +++if mkdir -p . 2>/dev/null; then +++ as_mkdir_p='mkdir -p "$as_dir"' +++else +++ test -d ./-p && rmdir ./-p +++ as_mkdir_p=false +++fi +++ +++ +++# as_fn_executable_p FILE +++# ----------------------- +++# Test if FILE is an executable regular file. +++as_fn_executable_p () +++{ +++ test -f "$1" && test -x "$1" +++} # as_fn_executable_p +++as_test_x='test -x' +++as_executable_p=as_fn_executable_p +++ +++# Sed expression to map a string onto a valid CPP name. +++as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" +++ +++# Sed expression to map a string onto a valid variable name. +++as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" +++ +++ +++exec 6>&1 +++## ----------------------------------- ## +++## Main body of $CONFIG_STATUS script. ## +++## ----------------------------------- ## +++_ASEOF +++test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 +++ +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++# Save the log message, to keep $0 and so on meaningful, and to +++# report actual input values of CONFIG_FILES etc. instead of their +++# values after options handling. +++ac_log=" +++This file was extended by package-unused $as_me version-unused, which was +++generated by GNU Autoconf 2.69. Invocation command line was +++ +++ CONFIG_FILES = $CONFIG_FILES +++ CONFIG_HEADERS = $CONFIG_HEADERS +++ CONFIG_LINKS = $CONFIG_LINKS +++ CONFIG_COMMANDS = $CONFIG_COMMANDS +++ $ $0 $@ +++ +++on `(hostname || uname -n) 2>/dev/null | sed 1q` +++" +++ +++_ACEOF +++ +++case $ac_config_files in *" +++"*) set x $ac_config_files; shift; ac_config_files=$*;; +++esac +++ +++case $ac_config_headers in *" +++"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +++esac +++ +++ +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++# Files that config.status was made for. +++config_files="$ac_config_files" +++config_headers="$ac_config_headers" +++config_commands="$ac_config_commands" +++ +++_ACEOF +++ +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++ac_cs_usage="\ +++\`$as_me' instantiates files and other configuration actions +++from templates according to the current configuration. Unless the files +++and actions are specified as TAGs, all are instantiated by default. +++ +++Usage: $0 [OPTION]... [TAG]... +++ +++ -h, --help print this help, then exit +++ -V, --version print version number and configuration settings, then exit +++ --config print configuration, then exit +++ -q, --quiet, --silent +++ do not print progress messages +++ -d, --debug don't remove temporary files +++ --recheck update $as_me by reconfiguring in the same conditions +++ --file=FILE[:TEMPLATE] +++ instantiate the configuration file FILE +++ --header=FILE[:TEMPLATE] +++ instantiate the configuration header FILE +++ +++Configuration files: +++$config_files +++ +++Configuration headers: +++$config_headers +++ +++Configuration commands: +++$config_commands +++ +++Report bugs to the package provider." +++ +++_ACEOF +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +++ac_cs_version="\\ +++package-unused config.status version-unused +++configured by $0, generated by GNU Autoconf 2.69, +++ with options \\"\$ac_cs_config\\" +++ +++Copyright (C) 2012 Free Software Foundation, Inc. +++This config.status script is free software; the Free Software Foundation +++gives unlimited permission to copy, distribute and modify it." +++ +++ac_pwd='$ac_pwd' +++srcdir='$srcdir' +++INSTALL='$INSTALL' +++MKDIR_P='$MKDIR_P' +++AWK='$AWK' +++test -n "\$AWK" || AWK=awk +++_ACEOF +++ +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++# The default lists apply if the user does not specify any file. +++ac_need_defaults=: +++while test $# != 0 +++do +++ case $1 in +++ --*=?*) +++ ac_option=`expr "X$1" : 'X\([^=]*\)='` +++ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` +++ ac_shift=: +++ ;; +++ --*=) +++ ac_option=`expr "X$1" : 'X\([^=]*\)='` +++ ac_optarg= +++ ac_shift=: +++ ;; +++ *) +++ ac_option=$1 +++ ac_optarg=$2 +++ ac_shift=shift +++ ;; +++ esac +++ +++ case $ac_option in +++ # Handling of the options. +++ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) +++ ac_cs_recheck=: ;; +++ --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) +++ $as_echo "$ac_cs_version"; exit ;; +++ --config | --confi | --conf | --con | --co | --c ) +++ $as_echo "$ac_cs_config"; exit ;; +++ --debug | --debu | --deb | --de | --d | -d ) +++ debug=: ;; +++ --file | --fil | --fi | --f ) +++ $ac_shift +++ case $ac_optarg in +++ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; +++ '') as_fn_error $? "missing file argument" ;; +++ esac +++ as_fn_append CONFIG_FILES " '$ac_optarg'" +++ ac_need_defaults=false;; +++ --header | --heade | --head | --hea ) +++ $ac_shift +++ case $ac_optarg in +++ *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; +++ esac +++ as_fn_append CONFIG_HEADERS " '$ac_optarg'" +++ ac_need_defaults=false;; +++ --he | --h) +++ # Conflict between --help and --header +++ as_fn_error $? "ambiguous option: \`$1' +++Try \`$0 --help' for more information.";; +++ --help | --hel | -h ) +++ $as_echo "$ac_cs_usage"; exit ;; +++ -q | -quiet | --quiet | --quie | --qui | --qu | --q \ +++ | -silent | --silent | --silen | --sile | --sil | --si | --s) +++ ac_cs_silent=: ;; +++ +++ # This is an error. +++ -*) as_fn_error $? "unrecognized option: \`$1' +++Try \`$0 --help' for more information." ;; +++ +++ *) as_fn_append ac_config_targets " $1" +++ ac_need_defaults=false ;; +++ +++ esac +++ shift +++done +++ +++ac_configure_extra_args= +++ +++if $ac_cs_silent; then +++ exec 6>/dev/null +++ ac_configure_extra_args="$ac_configure_extra_args --silent" +++fi +++ +++_ACEOF +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++if \$ac_cs_recheck; then +++ set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion +++ shift +++ \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 +++ CONFIG_SHELL='$SHELL' +++ export CONFIG_SHELL +++ exec "\$@" +++fi +++ +++_ACEOF +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++exec 5>>config.log +++{ +++ echo +++ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +++## Running $as_me. ## +++_ASBOX +++ $as_echo "$ac_log" +++} >&5 +++ +++_ACEOF +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++# +++# INIT-COMMANDS +++# +++ +++srcdir="$srcdir" +++host="$host" +++target="$target" +++with_multisubdir="$with_multisubdir" +++with_multisrctop="$with_multisrctop" +++with_target_subdir="$with_target_subdir" +++ac_configure_args="${multilib_arg} ${ac_configure_args}" +++multi_basedir="$multi_basedir" +++CONFIG_SHELL=${CONFIG_SHELL-/bin/sh} +++CC="$CC" +++CXX="$CXX" +++GFORTRAN="$GFORTRAN" +++GDC="$GDC" +++AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" +++ +++ +++# The HP-UX ksh and POSIX shell print the target directory to stdout +++# if CDPATH is set. +++(unset CDPATH) >/dev/null 2>&1 && unset CDPATH +++ +++sed_quote_subst='$sed_quote_subst' +++double_quote_subst='$double_quote_subst' +++delay_variable_subst='$delay_variable_subst' +++macro_version='`$ECHO "$macro_version" | $SED "$delay_single_quote_subst"`' +++macro_revision='`$ECHO "$macro_revision" | $SED "$delay_single_quote_subst"`' +++enable_shared='`$ECHO "$enable_shared" | $SED "$delay_single_quote_subst"`' +++enable_static='`$ECHO "$enable_static" | $SED "$delay_single_quote_subst"`' +++pic_mode='`$ECHO "$pic_mode" | $SED "$delay_single_quote_subst"`' +++enable_fast_install='`$ECHO "$enable_fast_install" | $SED "$delay_single_quote_subst"`' +++SHELL='`$ECHO "$SHELL" | $SED "$delay_single_quote_subst"`' +++ECHO='`$ECHO "$ECHO" | $SED "$delay_single_quote_subst"`' +++host_alias='`$ECHO "$host_alias" | $SED "$delay_single_quote_subst"`' +++host='`$ECHO "$host" | $SED "$delay_single_quote_subst"`' +++host_os='`$ECHO "$host_os" | $SED "$delay_single_quote_subst"`' +++build_alias='`$ECHO "$build_alias" | $SED "$delay_single_quote_subst"`' +++build='`$ECHO "$build" | $SED "$delay_single_quote_subst"`' +++build_os='`$ECHO "$build_os" | $SED "$delay_single_quote_subst"`' +++SED='`$ECHO "$SED" | $SED "$delay_single_quote_subst"`' +++Xsed='`$ECHO "$Xsed" | $SED "$delay_single_quote_subst"`' +++GREP='`$ECHO "$GREP" | $SED "$delay_single_quote_subst"`' +++EGREP='`$ECHO "$EGREP" | $SED "$delay_single_quote_subst"`' +++FGREP='`$ECHO "$FGREP" | $SED "$delay_single_quote_subst"`' +++LD='`$ECHO "$LD" | $SED "$delay_single_quote_subst"`' +++NM='`$ECHO "$NM" | $SED "$delay_single_quote_subst"`' +++LN_S='`$ECHO "$LN_S" | $SED "$delay_single_quote_subst"`' +++max_cmd_len='`$ECHO "$max_cmd_len" | $SED "$delay_single_quote_subst"`' +++ac_objext='`$ECHO "$ac_objext" | $SED "$delay_single_quote_subst"`' +++exeext='`$ECHO "$exeext" | $SED "$delay_single_quote_subst"`' +++lt_unset='`$ECHO "$lt_unset" | $SED "$delay_single_quote_subst"`' +++lt_SP2NL='`$ECHO "$lt_SP2NL" | $SED "$delay_single_quote_subst"`' +++lt_NL2SP='`$ECHO "$lt_NL2SP" | $SED "$delay_single_quote_subst"`' +++reload_flag='`$ECHO "$reload_flag" | $SED "$delay_single_quote_subst"`' +++reload_cmds='`$ECHO "$reload_cmds" | $SED "$delay_single_quote_subst"`' +++OBJDUMP='`$ECHO "$OBJDUMP" | $SED "$delay_single_quote_subst"`' +++deplibs_check_method='`$ECHO "$deplibs_check_method" | $SED "$delay_single_quote_subst"`' +++file_magic_cmd='`$ECHO "$file_magic_cmd" | $SED "$delay_single_quote_subst"`' +++AR='`$ECHO "$AR" | $SED "$delay_single_quote_subst"`' +++AR_FLAGS='`$ECHO "$AR_FLAGS" | $SED "$delay_single_quote_subst"`' +++STRIP='`$ECHO "$STRIP" | $SED "$delay_single_quote_subst"`' +++RANLIB='`$ECHO "$RANLIB" | $SED "$delay_single_quote_subst"`' +++old_postinstall_cmds='`$ECHO "$old_postinstall_cmds" | $SED "$delay_single_quote_subst"`' +++old_postuninstall_cmds='`$ECHO "$old_postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +++old_archive_cmds='`$ECHO "$old_archive_cmds" | $SED "$delay_single_quote_subst"`' +++lock_old_archive_extraction='`$ECHO "$lock_old_archive_extraction" | $SED "$delay_single_quote_subst"`' +++CC='`$ECHO "$CC" | $SED "$delay_single_quote_subst"`' +++CFLAGS='`$ECHO "$CFLAGS" | $SED "$delay_single_quote_subst"`' +++compiler='`$ECHO "$compiler" | $SED "$delay_single_quote_subst"`' +++GCC='`$ECHO "$GCC" | $SED "$delay_single_quote_subst"`' +++lt_cv_sys_global_symbol_pipe='`$ECHO "$lt_cv_sys_global_symbol_pipe" | $SED "$delay_single_quote_subst"`' +++lt_cv_sys_global_symbol_to_cdecl='`$ECHO "$lt_cv_sys_global_symbol_to_cdecl" | $SED "$delay_single_quote_subst"`' +++lt_cv_sys_global_symbol_to_c_name_address='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address" | $SED "$delay_single_quote_subst"`' +++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix='`$ECHO "$lt_cv_sys_global_symbol_to_c_name_address_lib_prefix" | $SED "$delay_single_quote_subst"`' +++objdir='`$ECHO "$objdir" | $SED "$delay_single_quote_subst"`' +++MAGIC_CMD='`$ECHO "$MAGIC_CMD" | $SED "$delay_single_quote_subst"`' +++lt_prog_compiler_no_builtin_flag='`$ECHO "$lt_prog_compiler_no_builtin_flag" | $SED "$delay_single_quote_subst"`' +++lt_prog_compiler_wl='`$ECHO "$lt_prog_compiler_wl" | $SED "$delay_single_quote_subst"`' +++lt_prog_compiler_pic='`$ECHO "$lt_prog_compiler_pic" | $SED "$delay_single_quote_subst"`' +++lt_prog_compiler_static='`$ECHO "$lt_prog_compiler_static" | $SED "$delay_single_quote_subst"`' +++lt_cv_prog_compiler_c_o='`$ECHO "$lt_cv_prog_compiler_c_o" | $SED "$delay_single_quote_subst"`' +++need_locks='`$ECHO "$need_locks" | $SED "$delay_single_quote_subst"`' +++DSYMUTIL='`$ECHO "$DSYMUTIL" | $SED "$delay_single_quote_subst"`' +++NMEDIT='`$ECHO "$NMEDIT" | $SED "$delay_single_quote_subst"`' +++LIPO='`$ECHO "$LIPO" | $SED "$delay_single_quote_subst"`' +++OTOOL='`$ECHO "$OTOOL" | $SED "$delay_single_quote_subst"`' +++OTOOL64='`$ECHO "$OTOOL64" | $SED "$delay_single_quote_subst"`' +++libext='`$ECHO "$libext" | $SED "$delay_single_quote_subst"`' +++shrext_cmds='`$ECHO "$shrext_cmds" | $SED "$delay_single_quote_subst"`' +++extract_expsyms_cmds='`$ECHO "$extract_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +++archive_cmds_need_lc='`$ECHO "$archive_cmds_need_lc" | $SED "$delay_single_quote_subst"`' +++enable_shared_with_static_runtimes='`$ECHO "$enable_shared_with_static_runtimes" | $SED "$delay_single_quote_subst"`' +++export_dynamic_flag_spec='`$ECHO "$export_dynamic_flag_spec" | $SED "$delay_single_quote_subst"`' +++whole_archive_flag_spec='`$ECHO "$whole_archive_flag_spec" | $SED "$delay_single_quote_subst"`' +++compiler_needs_object='`$ECHO "$compiler_needs_object" | $SED "$delay_single_quote_subst"`' +++old_archive_from_new_cmds='`$ECHO "$old_archive_from_new_cmds" | $SED "$delay_single_quote_subst"`' +++old_archive_from_expsyms_cmds='`$ECHO "$old_archive_from_expsyms_cmds" | $SED "$delay_single_quote_subst"`' +++archive_cmds='`$ECHO "$archive_cmds" | $SED "$delay_single_quote_subst"`' +++archive_expsym_cmds='`$ECHO "$archive_expsym_cmds" | $SED "$delay_single_quote_subst"`' +++module_cmds='`$ECHO "$module_cmds" | $SED "$delay_single_quote_subst"`' +++module_expsym_cmds='`$ECHO "$module_expsym_cmds" | $SED "$delay_single_quote_subst"`' +++with_gnu_ld='`$ECHO "$with_gnu_ld" | $SED "$delay_single_quote_subst"`' +++allow_undefined_flag='`$ECHO "$allow_undefined_flag" | $SED "$delay_single_quote_subst"`' +++no_undefined_flag='`$ECHO "$no_undefined_flag" | $SED "$delay_single_quote_subst"`' +++hardcode_libdir_flag_spec='`$ECHO "$hardcode_libdir_flag_spec" | $SED "$delay_single_quote_subst"`' +++hardcode_libdir_flag_spec_ld='`$ECHO "$hardcode_libdir_flag_spec_ld" | $SED "$delay_single_quote_subst"`' +++hardcode_libdir_separator='`$ECHO "$hardcode_libdir_separator" | $SED "$delay_single_quote_subst"`' +++hardcode_direct='`$ECHO "$hardcode_direct" | $SED "$delay_single_quote_subst"`' +++hardcode_direct_absolute='`$ECHO "$hardcode_direct_absolute" | $SED "$delay_single_quote_subst"`' +++hardcode_minus_L='`$ECHO "$hardcode_minus_L" | $SED "$delay_single_quote_subst"`' +++hardcode_shlibpath_var='`$ECHO "$hardcode_shlibpath_var" | $SED "$delay_single_quote_subst"`' +++hardcode_automatic='`$ECHO "$hardcode_automatic" | $SED "$delay_single_quote_subst"`' +++inherit_rpath='`$ECHO "$inherit_rpath" | $SED "$delay_single_quote_subst"`' +++link_all_deplibs='`$ECHO "$link_all_deplibs" | $SED "$delay_single_quote_subst"`' +++fix_srcfile_path='`$ECHO "$fix_srcfile_path" | $SED "$delay_single_quote_subst"`' +++always_export_symbols='`$ECHO "$always_export_symbols" | $SED "$delay_single_quote_subst"`' +++export_symbols_cmds='`$ECHO "$export_symbols_cmds" | $SED "$delay_single_quote_subst"`' +++exclude_expsyms='`$ECHO "$exclude_expsyms" | $SED "$delay_single_quote_subst"`' +++include_expsyms='`$ECHO "$include_expsyms" | $SED "$delay_single_quote_subst"`' +++prelink_cmds='`$ECHO "$prelink_cmds" | $SED "$delay_single_quote_subst"`' +++file_list_spec='`$ECHO "$file_list_spec" | $SED "$delay_single_quote_subst"`' +++variables_saved_for_relink='`$ECHO "$variables_saved_for_relink" | $SED "$delay_single_quote_subst"`' +++need_lib_prefix='`$ECHO "$need_lib_prefix" | $SED "$delay_single_quote_subst"`' +++need_version='`$ECHO "$need_version" | $SED "$delay_single_quote_subst"`' +++version_type='`$ECHO "$version_type" | $SED "$delay_single_quote_subst"`' +++runpath_var='`$ECHO "$runpath_var" | $SED "$delay_single_quote_subst"`' +++shlibpath_var='`$ECHO "$shlibpath_var" | $SED "$delay_single_quote_subst"`' +++shlibpath_overrides_runpath='`$ECHO "$shlibpath_overrides_runpath" | $SED "$delay_single_quote_subst"`' +++libname_spec='`$ECHO "$libname_spec" | $SED "$delay_single_quote_subst"`' +++library_names_spec='`$ECHO "$library_names_spec" | $SED "$delay_single_quote_subst"`' +++soname_spec='`$ECHO "$soname_spec" | $SED "$delay_single_quote_subst"`' +++install_override_mode='`$ECHO "$install_override_mode" | $SED "$delay_single_quote_subst"`' +++postinstall_cmds='`$ECHO "$postinstall_cmds" | $SED "$delay_single_quote_subst"`' +++postuninstall_cmds='`$ECHO "$postuninstall_cmds" | $SED "$delay_single_quote_subst"`' +++finish_cmds='`$ECHO "$finish_cmds" | $SED "$delay_single_quote_subst"`' +++finish_eval='`$ECHO "$finish_eval" | $SED "$delay_single_quote_subst"`' +++hardcode_into_libs='`$ECHO "$hardcode_into_libs" | $SED "$delay_single_quote_subst"`' +++sys_lib_search_path_spec='`$ECHO "$sys_lib_search_path_spec" | $SED "$delay_single_quote_subst"`' +++sys_lib_dlsearch_path_spec='`$ECHO "$sys_lib_dlsearch_path_spec" | $SED "$delay_single_quote_subst"`' +++hardcode_action='`$ECHO "$hardcode_action" | $SED "$delay_single_quote_subst"`' +++enable_dlopen='`$ECHO "$enable_dlopen" | $SED "$delay_single_quote_subst"`' +++enable_dlopen_self='`$ECHO "$enable_dlopen_self" | $SED "$delay_single_quote_subst"`' +++enable_dlopen_self_static='`$ECHO "$enable_dlopen_self_static" | $SED "$delay_single_quote_subst"`' +++old_striplib='`$ECHO "$old_striplib" | $SED "$delay_single_quote_subst"`' +++striplib='`$ECHO "$striplib" | $SED "$delay_single_quote_subst"`' +++ +++LTCC='$LTCC' +++LTCFLAGS='$LTCFLAGS' +++compiler='$compiler_DEFAULT' +++ +++# A function that is used when there is no print builtin or printf. +++func_fallback_echo () +++{ +++ eval 'cat <<_LTECHO_EOF +++\$1 +++_LTECHO_EOF' +++} +++ +++# Quote evaled strings. +++for var in SHELL \ +++ECHO \ +++SED \ +++GREP \ +++EGREP \ +++FGREP \ +++LD \ +++NM \ +++LN_S \ +++lt_SP2NL \ +++lt_NL2SP \ +++reload_flag \ +++OBJDUMP \ +++deplibs_check_method \ +++file_magic_cmd \ +++AR \ +++AR_FLAGS \ +++STRIP \ +++RANLIB \ +++CC \ +++CFLAGS \ +++compiler \ +++lt_cv_sys_global_symbol_pipe \ +++lt_cv_sys_global_symbol_to_cdecl \ +++lt_cv_sys_global_symbol_to_c_name_address \ +++lt_cv_sys_global_symbol_to_c_name_address_lib_prefix \ +++lt_prog_compiler_no_builtin_flag \ +++lt_prog_compiler_wl \ +++lt_prog_compiler_pic \ +++lt_prog_compiler_static \ +++lt_cv_prog_compiler_c_o \ +++need_locks \ +++DSYMUTIL \ +++NMEDIT \ +++LIPO \ +++OTOOL \ +++OTOOL64 \ +++shrext_cmds \ +++export_dynamic_flag_spec \ +++whole_archive_flag_spec \ +++compiler_needs_object \ +++with_gnu_ld \ +++allow_undefined_flag \ +++no_undefined_flag \ +++hardcode_libdir_flag_spec \ +++hardcode_libdir_flag_spec_ld \ +++hardcode_libdir_separator \ +++fix_srcfile_path \ +++exclude_expsyms \ +++include_expsyms \ +++file_list_spec \ +++variables_saved_for_relink \ +++libname_spec \ +++library_names_spec \ +++soname_spec \ +++install_override_mode \ +++finish_eval \ +++old_striplib \ +++striplib; do +++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in +++ *[\\\\\\\`\\"\\\$]*) +++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED \\"\\\$sed_quote_subst\\"\\\`\\\\\\"" +++ ;; +++ *) +++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +++ ;; +++ esac +++done +++ +++# Double-quote double-evaled strings. +++for var in reload_cmds \ +++old_postinstall_cmds \ +++old_postuninstall_cmds \ +++old_archive_cmds \ +++extract_expsyms_cmds \ +++old_archive_from_new_cmds \ +++old_archive_from_expsyms_cmds \ +++archive_cmds \ +++archive_expsym_cmds \ +++module_cmds \ +++module_expsym_cmds \ +++export_symbols_cmds \ +++prelink_cmds \ +++postinstall_cmds \ +++postuninstall_cmds \ +++finish_cmds \ +++sys_lib_search_path_spec \ +++sys_lib_dlsearch_path_spec; do +++ case \`eval \\\\\$ECHO \\\\""\\\\\$\$var"\\\\"\` in +++ *[\\\\\\\`\\"\\\$]*) +++ eval "lt_\$var=\\\\\\"\\\`\\\$ECHO \\"\\\$\$var\\" | \\\$SED -e \\"\\\$double_quote_subst\\" -e \\"\\\$sed_quote_subst\\" -e \\"\\\$delay_variable_subst\\"\\\`\\\\\\"" +++ ;; +++ *) +++ eval "lt_\$var=\\\\\\"\\\$\$var\\\\\\"" +++ ;; +++ esac +++done +++ +++ac_aux_dir='$ac_aux_dir' +++xsi_shell='$xsi_shell' +++lt_shell_append='$lt_shell_append' +++ +++# See if we are running on zsh, and set the options which allow our +++# commands through without removal of \ escapes INIT. +++if test -n "\${ZSH_VERSION+set}" ; then +++ setopt NO_GLOB_SUBST +++fi +++ +++ +++ PACKAGE='$PACKAGE' +++ VERSION='$VERSION' +++ TIMESTAMP='$TIMESTAMP' +++ RM='$RM' +++ ofile='$ofile' +++ +++ +++ +++ +++_ACEOF +++ +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++ +++# Handling of arguments. +++for ac_config_target in $ac_config_targets +++do +++ case $ac_config_target in +++ "config.h") CONFIG_HEADERS="$CONFIG_HEADERS config.h" ;; +++ "default-1") CONFIG_COMMANDS="$CONFIG_COMMANDS default-1" ;; +++ "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; +++ "libtool") CONFIG_COMMANDS="$CONFIG_COMMANDS libtool" ;; +++ "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; +++ "libga68.spec") CONFIG_FILES="$CONFIG_FILES libga68.spec" ;; +++ +++ *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; +++ esac +++done +++ +++ +++# If the user did not use the arguments to specify the items to instantiate, +++# then the envvar interface is used. Set only those that are not. +++# We use the long form for the default assignment because of an extremely +++# bizarre bug on SunOS 4.1.3. +++if $ac_need_defaults; then +++ test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files +++ test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers +++ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +++fi +++ +++# Have a temporary directory for convenience. Make it in the build tree +++# simply because there is no reason against having it here, and in addition, +++# creating and moving files from /tmp can sometimes cause problems. +++# Hook for its removal unless debugging. +++# Note that there is a small window in which the directory will not be cleaned: +++# after its creation but before its name has been assigned to `$tmp'. +++$debug || +++{ +++ tmp= ac_tmp= +++ trap 'exit_status=$? +++ : "${ac_tmp:=$tmp}" +++ { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +++' 0 +++ trap 'as_fn_exit 1' 1 2 13 15 +++} +++# Create a (secure) tmp directory for tmp files. +++ +++{ +++ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && +++ test -d "$tmp" +++} || +++{ +++ tmp=./conf$$-$RANDOM +++ (umask 077 && mkdir "$tmp") +++} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +++ac_tmp=$tmp +++ +++# Set up the scripts for CONFIG_FILES section. +++# No need to generate them if there are no CONFIG_FILES. +++# This happens for instance with `./config.status config.h'. +++if test -n "$CONFIG_FILES"; then +++ +++ +++ac_cr=`echo X | tr X '\015'` +++# On cygwin, bash can eat \r inside `` if the user requested igncr. +++# But we know of no other shell where ac_cr would be empty at this +++# point, so we can use a bashism as a fallback. +++if test "x$ac_cr" = x; then +++ eval ac_cr=\$\'\\r\' +++fi +++ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +++if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then +++ ac_cs_awk_cr='\\r' +++else +++ ac_cs_awk_cr=$ac_cr +++fi +++ +++echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +++_ACEOF +++ +++ +++{ +++ echo "cat >conf$$subs.awk <<_ACEOF" && +++ echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && +++ echo "_ACEOF" +++} >conf$$subs.sh || +++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +++ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +++ac_delim='%!_!# ' +++for ac_last_try in false false false false false :; do +++ . ./conf$$subs.sh || +++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +++ +++ ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` +++ if test $ac_delim_n = $ac_delim_num; then +++ break +++ elif $ac_last_try; then +++ as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +++ else +++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " +++ fi +++done +++rm -f conf$$subs.sh +++ +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +++_ACEOF +++sed -n ' +++h +++s/^/S["/; s/!.*/"]=/ +++p +++g +++s/^[^!]*!// +++:repl +++t repl +++s/'"$ac_delim"'$// +++t delim +++:nl +++h +++s/\(.\{148\}\)..*/\1/ +++t more1 +++s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +++p +++n +++b repl +++:more1 +++s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +++p +++g +++s/.\{148\}// +++t nl +++:delim +++h +++s/\(.\{148\}\)..*/\1/ +++t more2 +++s/["\\]/\\&/g; s/^/"/; s/$/"/ +++p +++b +++:more2 +++s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +++p +++g +++s/.\{148\}// +++t delim +++' >$CONFIG_STATUS || ac_write_fail=1 +++rm -f conf$$subs.awk +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++_ACAWK +++cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && +++ for (key in S) S_is_set[key] = 1 +++ FS = "" +++ +++} +++{ +++ line = $ 0 +++ nfields = split(line, field, "@") +++ substed = 0 +++ len = length(field[1]) +++ for (i = 2; i < nfields; i++) { +++ key = field[i] +++ keylen = length(key) +++ if (S_is_set[key]) { +++ value = S[key] +++ line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) +++ len += length(value) + length(field[++i]) +++ substed = 1 +++ } else +++ len += 1 + keylen +++ } +++ +++ print line +++} +++ +++_ACAWK +++_ACEOF +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then +++ sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +++else +++ cat +++fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ +++ || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +++_ACEOF +++ +++# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +++# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +++# trailing colons and then remove the whole line if VPATH becomes empty +++# (actually we leave an empty line to preserve line numbers). +++if test "x$srcdir" = x.; then +++ ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +++h +++s/// +++s/^/:/ +++s/[ ]*$/:/ +++s/:\$(srcdir):/:/g +++s/:\${srcdir}:/:/g +++s/:@srcdir@:/:/g +++s/^:*// +++s/:*$// +++x +++s/\(=[ ]*\).*/\1/ +++G +++s/\n// +++s/^[^=]*=[ ]*$// +++}' +++fi +++ +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++fi # test -n "$CONFIG_FILES" +++ +++# Set up the scripts for CONFIG_HEADERS section. +++# No need to generate them if there are no CONFIG_HEADERS. +++# This happens for instance with `./config.status Makefile'. +++if test -n "$CONFIG_HEADERS"; then +++cat >"$ac_tmp/defines.awk" <<\_ACAWK || +++BEGIN { +++_ACEOF +++ +++# Transform confdefs.h into an awk script `defines.awk', embedded as +++# here-document in config.status, that substitutes the proper values into +++# config.h.in to produce config.h. +++ +++# Create a delimiter string that does not exist in confdefs.h, to ease +++# handling of long lines. +++ac_delim='%!_!# ' +++for ac_last_try in false false :; do +++ ac_tt=`sed -n "/$ac_delim/p" confdefs.h` +++ if test -z "$ac_tt"; then +++ break +++ elif $ac_last_try; then +++ as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 +++ else +++ ac_delim="$ac_delim!$ac_delim _$ac_delim!! " +++ fi +++done +++ +++# For the awk script, D is an array of macro values keyed by name, +++# likewise P contains macro parameters if any. Preserve backslash +++# newline sequences. +++ +++ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +++sed -n ' +++s/.\{148\}/&'"$ac_delim"'/g +++t rset +++:rset +++s/^[ ]*#[ ]*define[ ][ ]*/ / +++t def +++d +++:def +++s/\\$// +++t bsnl +++s/["\\]/\\&/g +++s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +++D["\1"]=" \3"/p +++s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +++d +++:bsnl +++s/["\\]/\\&/g +++s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +++D["\1"]=" \3\\\\\\n"\\/p +++t cont +++s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +++t cont +++d +++:cont +++n +++s/.\{148\}/&'"$ac_delim"'/g +++t clear +++:clear +++s/\\$// +++t bsnlc +++s/["\\]/\\&/g; s/^/"/; s/$/"/p +++d +++:bsnlc +++s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +++b cont +++' >$CONFIG_STATUS || ac_write_fail=1 +++ +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++ for (key in D) D_is_set[key] = 1 +++ FS = "" +++} +++/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { +++ line = \$ 0 +++ split(line, arg, " ") +++ if (arg[1] == "#") { +++ defundef = arg[2] +++ mac1 = arg[3] +++ } else { +++ defundef = substr(arg[1], 2) +++ mac1 = arg[2] +++ } +++ split(mac1, mac2, "(") #) +++ macro = mac2[1] +++ prefix = substr(line, 1, index(line, defundef) - 1) +++ if (D_is_set[macro]) { +++ # Preserve the white space surrounding the "#". +++ print prefix "define", macro P[macro] D[macro] +++ next +++ } else { +++ # Replace #undef with comments. This is necessary, for example, +++ # in the case of _POSIX_SOURCE, which is predefined and required +++ # on some systems where configure will not decide to define it. +++ if (defundef == "undef") { +++ print "/*", prefix defundef, macro, "*/" +++ next +++ } +++ } +++} +++{ print } +++_ACAWK +++_ACEOF +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++ as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +++fi # test -n "$CONFIG_HEADERS" +++ +++ +++eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +++shift +++for ac_tag +++do +++ case $ac_tag in +++ :[FHLC]) ac_mode=$ac_tag; continue;; +++ esac +++ case $ac_mode$ac_tag in +++ :[FHL]*:*);; +++ :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; +++ :[FH]-) ac_tag=-:-;; +++ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; +++ esac +++ ac_save_IFS=$IFS +++ IFS=: +++ set x $ac_tag +++ IFS=$ac_save_IFS +++ shift +++ ac_file=$1 +++ shift +++ +++ case $ac_mode in +++ :L) ac_source=$1;; +++ :[FH]) +++ ac_file_inputs= +++ for ac_f +++ do +++ case $ac_f in +++ -) ac_f="$ac_tmp/stdin";; +++ *) # Look for the file first in the build tree, then in the source tree +++ # (if the path is not absolute). The absolute path cannot be DOS-style, +++ # because $ac_f cannot contain `:'. +++ test -f "$ac_f" || +++ case $ac_f in +++ [\\/$]*) false;; +++ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; +++ esac || +++ as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; +++ esac +++ case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac +++ as_fn_append ac_file_inputs " '$ac_f'" +++ done +++ +++ # Let's still pretend it is `configure' which instantiates (i.e., don't +++ # use $as_me), people would be surprised to read: +++ # /* config.h. Generated by config.status. */ +++ configure_input='Generated from '` +++ $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' +++ `' by configure.' +++ if test x"$ac_file" != x-; then +++ configure_input="$ac_file. $configure_input" +++ { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +++$as_echo "$as_me: creating $ac_file" >&6;} +++ fi +++ # Neutralize special characters interpreted by sed in replacement strings. +++ case $configure_input in #( +++ *\&* | *\|* | *\\* ) +++ ac_sed_conf_input=`$as_echo "$configure_input" | +++ sed 's/[\\\\&|]/\\\\&/g'`;; #( +++ *) ac_sed_conf_input=$configure_input;; +++ esac +++ +++ case $ac_tag in +++ *:-:* | *:-) cat >"$ac_tmp/stdin" \ +++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; +++ esac +++ ;; +++ esac +++ +++ ac_dir=`$as_dirname -- "$ac_file" || +++$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +++ X"$ac_file" : 'X\(//\)[^/]' \| \ +++ X"$ac_file" : 'X\(//\)$' \| \ +++ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X"$ac_file" | +++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)[^/].*/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'` +++ as_dir="$ac_dir"; as_fn_mkdir_p +++ ac_builddir=. +++ +++case "$ac_dir" in +++.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +++*) +++ ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` +++ # A ".." for each directory in $ac_dir_suffix. +++ ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` +++ case $ac_top_builddir_sub in +++ "") ac_top_builddir_sub=. ac_top_build_prefix= ;; +++ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; +++ esac ;; +++esac +++ac_abs_top_builddir=$ac_pwd +++ac_abs_builddir=$ac_pwd$ac_dir_suffix +++# for backward compatibility: +++ac_top_builddir=$ac_top_build_prefix +++ +++case $srcdir in +++ .) # We are building in place. +++ ac_srcdir=. +++ ac_top_srcdir=$ac_top_builddir_sub +++ ac_abs_top_srcdir=$ac_pwd ;; +++ [\\/]* | ?:[\\/]* ) # Absolute name. +++ ac_srcdir=$srcdir$ac_dir_suffix; +++ ac_top_srcdir=$srcdir +++ ac_abs_top_srcdir=$srcdir ;; +++ *) # Relative name. +++ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix +++ ac_top_srcdir=$ac_top_build_prefix$srcdir +++ ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +++esac +++ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix +++ +++ +++ case $ac_mode in +++ :F) +++ # +++ # CONFIG_FILE +++ # +++ +++ case $INSTALL in +++ [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; +++ *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; +++ esac +++ ac_MKDIR_P=$MKDIR_P +++ case $MKDIR_P in +++ [\\/$]* | ?:[\\/]* ) ;; +++ */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; +++ esac +++_ACEOF +++ +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++# If the template does not know about datarootdir, expand it. +++# FIXME: This hack should be removed a few years after 2.60. +++ac_datarootdir_hack=; ac_datarootdir_seen= +++ac_sed_dataroot=' +++/datarootdir/ { +++ p +++ q +++} +++/@datadir@/p +++/@docdir@/p +++/@infodir@/p +++/@localedir@/p +++/@mandir@/p' +++case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +++*datarootdir*) ac_datarootdir_seen=yes;; +++*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +++$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +++_ACEOF +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++ ac_datarootdir_hack=' +++ s&@datadir@&$datadir&g +++ s&@docdir@&$docdir&g +++ s&@infodir@&$infodir&g +++ s&@localedir@&$localedir&g +++ s&@mandir@&$mandir&g +++ s&\\\${datarootdir}&$datarootdir&g' ;; +++esac +++_ACEOF +++ +++# Neutralize VPATH when `$srcdir' = `.'. +++# Shell code in configure.ac might set extrasub. +++# FIXME: do we really want to maintain this feature? +++cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +++ac_sed_extra="$ac_vpsub +++$extrasub +++_ACEOF +++cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +++:t +++/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +++s|@configure_input@|$ac_sed_conf_input|;t t +++s&@top_builddir@&$ac_top_builddir_sub&;t t +++s&@top_build_prefix@&$ac_top_build_prefix&;t t +++s&@srcdir@&$ac_srcdir&;t t +++s&@abs_srcdir@&$ac_abs_srcdir&;t t +++s&@top_srcdir@&$ac_top_srcdir&;t t +++s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +++s&@builddir@&$ac_builddir&;t t +++s&@abs_builddir@&$ac_abs_builddir&;t t +++s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +++s&@INSTALL@&$ac_INSTALL&;t t +++s&@MKDIR_P@&$ac_MKDIR_P&;t t +++$ac_datarootdir_hack +++" +++eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ +++ >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 +++ +++test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && +++ { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && +++ { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ +++ "$ac_tmp/out"`; test -z "$ac_out"; } && +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +++which seems to be undefined. Please make sure it is defined" >&5 +++$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +++which seems to be undefined. Please make sure it is defined" >&2;} +++ +++ rm -f "$ac_tmp/stdin" +++ case $ac_file in +++ -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; +++ *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; +++ esac \ +++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 +++ ;; +++ :H) +++ # +++ # CONFIG_HEADER +++ # +++ if test x"$ac_file" != x-; then +++ { +++ $as_echo "/* $configure_input */" \ +++ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" +++ } >"$ac_tmp/config.h" \ +++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 +++ if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +++$as_echo "$as_me: $ac_file is unchanged" >&6;} +++ else +++ rm -f "$ac_file" +++ mv "$ac_tmp/config.h" "$ac_file" \ +++ || as_fn_error $? "could not create $ac_file" "$LINENO" 5 +++ fi +++ else +++ $as_echo "/* $configure_input */" \ +++ && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ +++ || as_fn_error $? "could not create -" "$LINENO" 5 +++ fi +++# Compute "$ac_file"'s index in $config_headers. +++_am_arg="$ac_file" +++_am_stamp_count=1 +++for _am_header in $config_headers :; do +++ case $_am_header in +++ $_am_arg | $_am_arg:* ) +++ break ;; +++ * ) +++ _am_stamp_count=`expr $_am_stamp_count + 1` ;; +++ esac +++done +++echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +++$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +++ X"$_am_arg" : 'X\(//\)[^/]' \| \ +++ X"$_am_arg" : 'X\(//\)$' \| \ +++ X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X"$_am_arg" | +++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)[^/].*/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'`/stamp-h$_am_stamp_count +++ ;; +++ +++ :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +++$as_echo "$as_me: executing $ac_file commands" >&6;} +++ ;; +++ esac +++ +++ +++ case $ac_file$ac_mode in +++ "default-1":C) +++# Only add multilib support code if we just rebuilt the top-level +++# Makefile. +++case " $CONFIG_FILES " in +++ *" Makefile "*) +++ ac_file=Makefile . ${multi_basedir}/config-ml.in +++ ;; +++esac ;; +++ "depfiles":C) test x"$AMDEP_TRUE" != x"" || { +++ # Older Autoconf quotes --file arguments for eval, but not when files +++ # are listed without --file. Let's play safe and only enable the eval +++ # if we detect the quoting. +++ case $CONFIG_FILES in +++ *\'*) eval set x "$CONFIG_FILES" ;; +++ *) set x $CONFIG_FILES ;; +++ esac +++ shift +++ for mf +++ do +++ # Strip MF so we end up with the name of the file. +++ mf=`echo "$mf" | sed -e 's/:.*$//'` +++ # Check whether this is an Automake generated Makefile or not. +++ # We used to match only the files named 'Makefile.in', but +++ # some people rename them; so instead we look at the file content. +++ # Grep'ing the first line is not enough: some people post-process +++ # each Makefile.in and add a new line on top of each file to say so. +++ # Grep'ing the whole file is not good either: AIX grep has a line +++ # limit of 2048, but all sed's we know have understand at least 4000. +++ if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then +++ dirpart=`$as_dirname -- "$mf" || +++$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +++ X"$mf" : 'X\(//\)[^/]' \| \ +++ X"$mf" : 'X\(//\)$' \| \ +++ X"$mf" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X"$mf" | +++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)[^/].*/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'` +++ else +++ continue +++ fi +++ # Extract the definition of DEPDIR, am__include, and am__quote +++ # from the Makefile without running 'make'. +++ DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` +++ test -z "$DEPDIR" && continue +++ am__include=`sed -n 's/^am__include = //p' < "$mf"` +++ test -z "$am__include" && continue +++ am__quote=`sed -n 's/^am__quote = //p' < "$mf"` +++ # Find all dependency output files, they are included files with +++ # $(DEPDIR) in their names. We invoke sed twice because it is the +++ # simplest approach to changing $(DEPDIR) to its actual value in the +++ # expansion. +++ for file in `sed -n " +++ s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ +++ sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do +++ # Make sure the directory exists. +++ test -f "$dirpart/$file" && continue +++ fdir=`$as_dirname -- "$file" || +++$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ +++ X"$file" : 'X\(//\)[^/]' \| \ +++ X"$file" : 'X\(//\)$' \| \ +++ X"$file" : 'X\(/\)' \| . 2>/dev/null || +++$as_echo X"$file" | +++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)[^/].*/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\/\)$/{ +++ s//\1/ +++ q +++ } +++ /^X\(\/\).*/{ +++ s//\1/ +++ q +++ } +++ s/.*/./; q'` +++ as_dir=$dirpart/$fdir; as_fn_mkdir_p +++ # echo "creating $dirpart/$file" +++ echo '# dummy' > "$dirpart/$file" +++ done +++ done +++} +++ ;; +++ "libtool":C) +++ +++ # See if we are running on zsh, and set the options which allow our +++ # commands through without removal of \ escapes. +++ if test -n "${ZSH_VERSION+set}" ; then +++ setopt NO_GLOB_SUBST +++ fi +++ +++ cfgfile="${ofile}T" +++ trap "$RM \"$cfgfile\"; exit 1" 1 2 15 +++ $RM "$cfgfile" +++ +++ cat <<_LT_EOF >> "$cfgfile" +++#! $SHELL +++ +++# `$ECHO "$ofile" | sed 's%^.*/%%'` - Provide generalized library-building support services. +++# Generated automatically by $as_me ($PACKAGE$TIMESTAMP) $VERSION +++# Libtool was configured on host `(hostname || uname -n) 2>/dev/null | sed 1q`: +++# NOTE: Changes made to this file will be lost: look at ltmain.sh. +++# +++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, +++# 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +++# Written by Gordon Matzigkeit, 1996 +++# +++# This file is part of GNU Libtool. +++# +++# GNU Libtool is free software; you can redistribute it and/or +++# modify it under the terms of the GNU General Public License as +++# published by the Free Software Foundation; either version 2 of +++# the License, or (at your option) any later version. +++# +++# As a special exception to the GNU General Public License, +++# if you distribute this file as part of a program or library that +++# is built using GNU Libtool, you may include this file under the +++# same distribution terms that you use for the rest of that program. +++# +++# GNU Libtool is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GNU Libtool; see the file COPYING. If not, a copy +++# can be downloaded from http://www.gnu.org/licenses/gpl.html, or +++# obtained by writing to the Free Software Foundation, Inc., +++# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. +++ +++ +++# The names of the tagged configurations supported by this script. +++available_tags="" +++ +++# ### BEGIN LIBTOOL CONFIG +++ +++# Which release of libtool.m4 was used? +++macro_version=$macro_version +++macro_revision=$macro_revision +++ +++# Whether or not to build shared libraries. +++build_libtool_libs=$enable_shared +++ +++# Whether or not to build static libraries. +++build_old_libs=$enable_static +++ +++# What type of objects to build. +++pic_mode=$pic_mode +++ +++# Whether or not to optimize for fast installation. +++fast_install=$enable_fast_install +++ +++# Shell to use when invoking shell scripts. +++SHELL=$lt_SHELL +++ +++# An echo program that protects backslashes. +++ECHO=$lt_ECHO +++ +++# The host system. +++host_alias=$host_alias +++host=$host +++host_os=$host_os +++ +++# The build system. +++build_alias=$build_alias +++build=$build +++build_os=$build_os +++ +++# A sed program that does not truncate output. +++SED=$lt_SED +++ +++# Sed that helps us avoid accidentally triggering echo(1) options like -n. +++Xsed="\$SED -e 1s/^X//" +++ +++# A grep program that handles long lines. +++GREP=$lt_GREP +++ +++# An ERE matcher. +++EGREP=$lt_EGREP +++ +++# A literal string matcher. +++FGREP=$lt_FGREP +++ +++# A BSD- or MS-compatible name lister. +++NM=$lt_NM +++ +++# Whether we need soft or hard links. +++LN_S=$lt_LN_S +++ +++# What is the maximum length of a command? +++max_cmd_len=$max_cmd_len +++ +++# Object file suffix (normally "o"). +++objext=$ac_objext +++ +++# Executable file suffix (normally ""). +++exeext=$exeext +++ +++# whether the shell understands "unset". +++lt_unset=$lt_unset +++ +++# turn spaces into newlines. +++SP2NL=$lt_lt_SP2NL +++ +++# turn newlines into spaces. +++NL2SP=$lt_lt_NL2SP +++ +++# An object symbol dumper. +++OBJDUMP=$lt_OBJDUMP +++ +++# Method to check whether dependent libraries are shared objects. +++deplibs_check_method=$lt_deplibs_check_method +++ +++# Command to use when deplibs_check_method == "file_magic". +++file_magic_cmd=$lt_file_magic_cmd +++ +++# The archiver. +++AR=$lt_AR +++AR_FLAGS=$lt_AR_FLAGS +++ +++# A symbol stripping program. +++STRIP=$lt_STRIP +++ +++# Commands used to install an old-style archive. +++RANLIB=$lt_RANLIB +++old_postinstall_cmds=$lt_old_postinstall_cmds +++old_postuninstall_cmds=$lt_old_postuninstall_cmds +++ +++# Whether to use a lock for old archive extraction. +++lock_old_archive_extraction=$lock_old_archive_extraction +++ +++# A C compiler. +++LTCC=$lt_CC +++ +++# LTCC compiler flags. +++LTCFLAGS=$lt_CFLAGS +++ +++# Take the output of nm and produce a listing of raw symbols and C names. +++global_symbol_pipe=$lt_lt_cv_sys_global_symbol_pipe +++ +++# Transform the output of nm in a proper C declaration. +++global_symbol_to_cdecl=$lt_lt_cv_sys_global_symbol_to_cdecl +++ +++# Transform the output of nm in a C name address pair. +++global_symbol_to_c_name_address=$lt_lt_cv_sys_global_symbol_to_c_name_address +++ +++# Transform the output of nm in a C name address pair when lib prefix is needed. +++global_symbol_to_c_name_address_lib_prefix=$lt_lt_cv_sys_global_symbol_to_c_name_address_lib_prefix +++ +++# The name of the directory that contains temporary libtool files. +++objdir=$objdir +++ +++# Used to examine libraries when file_magic_cmd begins with "file". +++MAGIC_CMD=$MAGIC_CMD +++ +++# Must we lock files when doing compilation? +++need_locks=$lt_need_locks +++ +++# Tool to manipulate archived DWARF debug symbol files on Mac OS X. +++DSYMUTIL=$lt_DSYMUTIL +++ +++# Tool to change global to local symbols on Mac OS X. +++NMEDIT=$lt_NMEDIT +++ +++# Tool to manipulate fat objects and archives on Mac OS X. +++LIPO=$lt_LIPO +++ +++# ldd/readelf like tool for Mach-O binaries on Mac OS X. +++OTOOL=$lt_OTOOL +++ +++# ldd/readelf like tool for 64 bit Mach-O binaries on Mac OS X 10.4. +++OTOOL64=$lt_OTOOL64 +++ +++# Old archive suffix (normally "a"). +++libext=$libext +++ +++# Shared library suffix (normally ".so"). +++shrext_cmds=$lt_shrext_cmds +++ +++# The commands to extract the exported symbol list from a shared archive. +++extract_expsyms_cmds=$lt_extract_expsyms_cmds +++ +++# Variables whose values should be saved in libtool wrapper scripts and +++# restored at link time. +++variables_saved_for_relink=$lt_variables_saved_for_relink +++ +++# Do we need the "lib" prefix for modules? +++need_lib_prefix=$need_lib_prefix +++ +++# Do we need a version for libraries? +++need_version=$need_version +++ +++# Library versioning type. +++version_type=$version_type +++ +++# Shared library runtime path variable. +++runpath_var=$runpath_var +++ +++# Shared library path variable. +++shlibpath_var=$shlibpath_var +++ +++# Is shlibpath searched before the hard-coded library search path? +++shlibpath_overrides_runpath=$shlibpath_overrides_runpath +++ +++# Format of library name prefix. +++libname_spec=$lt_libname_spec +++ +++# List of archive names. First name is the real one, the rest are links. +++# The last name is the one that the linker finds with -lNAME +++library_names_spec=$lt_library_names_spec +++ +++# The coded name of the library, if different from the real name. +++soname_spec=$lt_soname_spec +++ +++# Permission mode override for installation of shared libraries. +++install_override_mode=$lt_install_override_mode +++ +++# Command to use after installation of a shared archive. +++postinstall_cmds=$lt_postinstall_cmds +++ +++# Command to use after uninstallation of a shared archive. +++postuninstall_cmds=$lt_postuninstall_cmds +++ +++# Commands used to finish a libtool library installation in a directory. +++finish_cmds=$lt_finish_cmds +++ +++# As "finish_cmds", except a single script fragment to be evaled but +++# not shown. +++finish_eval=$lt_finish_eval +++ +++# Whether we should hardcode library paths into libraries. +++hardcode_into_libs=$hardcode_into_libs +++ +++# Compile-time system search path for libraries. +++sys_lib_search_path_spec=$lt_sys_lib_search_path_spec +++ +++# Run-time system search path for libraries. +++sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec +++ +++# Whether dlopen is supported. +++dlopen_support=$enable_dlopen +++ +++# Whether dlopen of programs is supported. +++dlopen_self=$enable_dlopen_self +++ +++# Whether dlopen of statically linked programs is supported. +++dlopen_self_static=$enable_dlopen_self_static +++ +++# Commands to strip libraries. +++old_striplib=$lt_old_striplib +++striplib=$lt_striplib +++ +++ +++# The linker used to build libraries. +++LD=$lt_LD +++ +++# How to create reloadable object files. +++reload_flag=$lt_reload_flag +++reload_cmds=$lt_reload_cmds +++ +++# Commands used to build an old-style archive. +++old_archive_cmds=$lt_old_archive_cmds +++ +++# A language specific compiler. +++CC=$lt_compiler +++ +++# Is the compiler the GNU compiler? +++with_gcc=$GCC +++ +++# Compiler flag to turn off builtin functions. +++no_builtin_flag=$lt_lt_prog_compiler_no_builtin_flag +++ +++# How to pass a linker flag through the compiler. +++wl=$lt_lt_prog_compiler_wl +++ +++# Additional compiler flags for building library objects. +++pic_flag=$lt_lt_prog_compiler_pic +++ +++# Compiler flag to prevent dynamic linking. +++link_static_flag=$lt_lt_prog_compiler_static +++ +++# Does compiler simultaneously support -c and -o options? +++compiler_c_o=$lt_lt_cv_prog_compiler_c_o +++ +++# Whether or not to add -lc for building shared libraries. +++build_libtool_need_lc=$archive_cmds_need_lc +++ +++# Whether or not to disallow shared libs when runtime libs are static. +++allow_libtool_libs_with_static_runtimes=$enable_shared_with_static_runtimes +++ +++# Compiler flag to allow reflexive dlopens. +++export_dynamic_flag_spec=$lt_export_dynamic_flag_spec +++ +++# Compiler flag to generate shared objects directly from archives. +++whole_archive_flag_spec=$lt_whole_archive_flag_spec +++ +++# Whether the compiler copes with passing no objects directly. +++compiler_needs_object=$lt_compiler_needs_object +++ +++# Create an old-style archive from a shared archive. +++old_archive_from_new_cmds=$lt_old_archive_from_new_cmds +++ +++# Create a temporary old-style archive to link instead of a shared archive. +++old_archive_from_expsyms_cmds=$lt_old_archive_from_expsyms_cmds +++ +++# Commands used to build a shared archive. +++archive_cmds=$lt_archive_cmds +++archive_expsym_cmds=$lt_archive_expsym_cmds +++ +++# Commands used to build a loadable module if different from building +++# a shared archive. +++module_cmds=$lt_module_cmds +++module_expsym_cmds=$lt_module_expsym_cmds +++ +++# Whether we are building with GNU ld or not. +++with_gnu_ld=$lt_with_gnu_ld +++ +++# Flag that allows shared libraries with undefined symbols to be built. +++allow_undefined_flag=$lt_allow_undefined_flag +++ +++# Flag that enforces no undefined symbols. +++no_undefined_flag=$lt_no_undefined_flag +++ +++# Flag to hardcode \$libdir into a binary during linking. +++# This must work even if \$libdir does not exist +++hardcode_libdir_flag_spec=$lt_hardcode_libdir_flag_spec +++ +++# If ld is used when linking, flag to hardcode \$libdir into a binary +++# during linking. This must work even if \$libdir does not exist. +++hardcode_libdir_flag_spec_ld=$lt_hardcode_libdir_flag_spec_ld +++ +++# Whether we need a single "-rpath" flag with a separated argument. +++hardcode_libdir_separator=$lt_hardcode_libdir_separator +++ +++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +++# DIR into the resulting binary. +++hardcode_direct=$hardcode_direct +++ +++# Set to "yes" if using DIR/libNAME\${shared_ext} during linking hardcodes +++# DIR into the resulting binary and the resulting library dependency is +++# "absolute",i.e impossible to change by setting \${shlibpath_var} if the +++# library is relocated. +++hardcode_direct_absolute=$hardcode_direct_absolute +++ +++# Set to "yes" if using the -LDIR flag during linking hardcodes DIR +++# into the resulting binary. +++hardcode_minus_L=$hardcode_minus_L +++ +++# Set to "yes" if using SHLIBPATH_VAR=DIR during linking hardcodes DIR +++# into the resulting binary. +++hardcode_shlibpath_var=$hardcode_shlibpath_var +++ +++# Set to "yes" if building a shared library automatically hardcodes DIR +++# into the library and all subsequent libraries and executables linked +++# against it. +++hardcode_automatic=$hardcode_automatic +++ +++# Set to yes if linker adds runtime paths of dependent libraries +++# to runtime path list. +++inherit_rpath=$inherit_rpath +++ +++# Whether libtool must link a program against all its dependency libraries. +++link_all_deplibs=$link_all_deplibs +++ +++# Fix the shell variable \$srcfile for the compiler. +++fix_srcfile_path=$lt_fix_srcfile_path +++ +++# Set to "yes" if exported symbols are required. +++always_export_symbols=$always_export_symbols +++ +++# The commands to list exported symbols. +++export_symbols_cmds=$lt_export_symbols_cmds +++ +++# Symbols that should not be listed in the preloaded symbols. +++exclude_expsyms=$lt_exclude_expsyms +++ +++# Symbols that must always be exported. +++include_expsyms=$lt_include_expsyms +++ +++# Commands necessary for linking programs (against libraries) with templates. +++prelink_cmds=$lt_prelink_cmds +++ +++# Specify filename containing input files. +++file_list_spec=$lt_file_list_spec +++ +++# How to hardcode a shared library path into an executable. +++hardcode_action=$hardcode_action +++ +++# ### END LIBTOOL CONFIG +++ +++_LT_EOF +++ +++ case $host_os in +++ aix3*) +++ cat <<\_LT_EOF >> "$cfgfile" +++# AIX sometimes has problems with the GCC collect2 program. For some +++# reason, if we set the COLLECT_NAMES environment variable, the problems +++# vanish in a puff of smoke. +++if test "X${COLLECT_NAMES+set}" != Xset; then +++ COLLECT_NAMES= +++ export COLLECT_NAMES +++fi +++_LT_EOF +++ ;; +++ esac +++ +++ +++ltmain="$ac_aux_dir/ltmain.sh" +++ +++ +++ # We use sed instead of cat because bash on DJGPP gets confused if +++ # if finds mixed CR/LF and LF-only lines. Since sed operates in +++ # text mode, it properly converts lines to CR/LF. This bash problem +++ # is reportedly fixed, but why not run on old versions too? +++ sed '/^# Generated shell functions inserted here/q' "$ltmain" >> "$cfgfile" \ +++ || (rm -f "$cfgfile"; exit 1) +++ +++ case $xsi_shell in +++ yes) +++ cat << \_LT_EOF >> "$cfgfile" +++ +++# func_dirname file append nondir_replacement +++# Compute the dirname of FILE. If nonempty, add APPEND to the result, +++# otherwise set result to NONDIR_REPLACEMENT. +++func_dirname () +++{ +++ case ${1} in +++ */*) func_dirname_result="${1%/*}${2}" ;; +++ * ) func_dirname_result="${3}" ;; +++ esac +++} +++ +++# func_basename file +++func_basename () +++{ +++ func_basename_result="${1##*/}" +++} +++ +++# func_dirname_and_basename file append nondir_replacement +++# perform func_basename and func_dirname in a single function +++# call: +++# dirname: Compute the dirname of FILE. If nonempty, +++# add APPEND to the result, otherwise set result +++# to NONDIR_REPLACEMENT. +++# value returned in "$func_dirname_result" +++# basename: Compute filename of FILE. +++# value retuned in "$func_basename_result" +++# Implementation must be kept synchronized with func_dirname +++# and func_basename. For efficiency, we do not delegate to +++# those functions but instead duplicate the functionality here. +++func_dirname_and_basename () +++{ +++ case ${1} in +++ */*) func_dirname_result="${1%/*}${2}" ;; +++ * ) func_dirname_result="${3}" ;; +++ esac +++ func_basename_result="${1##*/}" +++} +++ +++# func_stripname prefix suffix name +++# strip PREFIX and SUFFIX off of NAME. +++# PREFIX and SUFFIX must not contain globbing or regex special +++# characters, hashes, percent signs, but SUFFIX may contain a leading +++# dot (in which case that matches only a dot). +++func_stripname () +++{ +++ # pdksh 5.2.14 does not do ${X%$Y} correctly if both X and Y are +++ # positional parameters, so assign one to ordinary parameter first. +++ func_stripname_result=${3} +++ func_stripname_result=${func_stripname_result#"${1}"} +++ func_stripname_result=${func_stripname_result%"${2}"} +++} +++ +++# func_opt_split +++func_opt_split () +++{ +++ func_opt_split_opt=${1%%=*} +++ func_opt_split_arg=${1#*=} +++} +++ +++# func_lo2o object +++func_lo2o () +++{ +++ case ${1} in +++ *.lo) func_lo2o_result=${1%.lo}.${objext} ;; +++ *) func_lo2o_result=${1} ;; +++ esac +++} +++ +++# func_xform libobj-or-source +++func_xform () +++{ +++ func_xform_result=${1%.*}.lo +++} +++ +++# func_arith arithmetic-term... +++func_arith () +++{ +++ func_arith_result=$(( $* )) +++} +++ +++# func_len string +++# STRING may not start with a hyphen. +++func_len () +++{ +++ func_len_result=${#1} +++} +++ +++_LT_EOF +++ ;; +++ *) # Bourne compatible functions. +++ cat << \_LT_EOF >> "$cfgfile" +++ +++# func_dirname file append nondir_replacement +++# Compute the dirname of FILE. If nonempty, add APPEND to the result, +++# otherwise set result to NONDIR_REPLACEMENT. +++func_dirname () +++{ +++ # Extract subdirectory from the argument. +++ func_dirname_result=`$ECHO "${1}" | $SED "$dirname"` +++ if test "X$func_dirname_result" = "X${1}"; then +++ func_dirname_result="${3}" +++ else +++ func_dirname_result="$func_dirname_result${2}" +++ fi +++} +++ +++# func_basename file +++func_basename () +++{ +++ func_basename_result=`$ECHO "${1}" | $SED "$basename"` +++} +++ +++ +++# func_stripname prefix suffix name +++# strip PREFIX and SUFFIX off of NAME. +++# PREFIX and SUFFIX must not contain globbing or regex special +++# characters, hashes, percent signs, but SUFFIX may contain a leading +++# dot (in which case that matches only a dot). +++# func_strip_suffix prefix name +++func_stripname () +++{ +++ case ${2} in +++ .*) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%\\\\${2}\$%%"`;; +++ *) func_stripname_result=`$ECHO "${3}" | $SED "s%^${1}%%; s%${2}\$%%"`;; +++ esac +++} +++ +++# sed scripts: +++my_sed_long_opt='1s/^\(-[^=]*\)=.*/\1/;q' +++my_sed_long_arg='1s/^-[^=]*=//' +++ +++# func_opt_split +++func_opt_split () +++{ +++ func_opt_split_opt=`$ECHO "${1}" | $SED "$my_sed_long_opt"` +++ func_opt_split_arg=`$ECHO "${1}" | $SED "$my_sed_long_arg"` +++} +++ +++# func_lo2o object +++func_lo2o () +++{ +++ func_lo2o_result=`$ECHO "${1}" | $SED "$lo2o"` +++} +++ +++# func_xform libobj-or-source +++func_xform () +++{ +++ func_xform_result=`$ECHO "${1}" | $SED 's/\.[^.]*$/.lo/'` +++} +++ +++# func_arith arithmetic-term... +++func_arith () +++{ +++ func_arith_result=`expr "$@"` +++} +++ +++# func_len string +++# STRING may not start with a hyphen. +++func_len () +++{ +++ func_len_result=`expr "$1" : ".*" 2>/dev/null || echo $max_cmd_len` +++} +++ +++_LT_EOF +++esac +++ +++case $lt_shell_append in +++ yes) +++ cat << \_LT_EOF >> "$cfgfile" +++ +++# func_append var value +++# Append VALUE to the end of shell variable VAR. +++func_append () +++{ +++ eval "$1+=\$2" +++} +++_LT_EOF +++ ;; +++ *) +++ cat << \_LT_EOF >> "$cfgfile" +++ +++# func_append var value +++# Append VALUE to the end of shell variable VAR. +++func_append () +++{ +++ eval "$1=\$$1\$2" +++} +++ +++_LT_EOF +++ ;; +++ esac +++ +++ +++ sed -n '/^# Generated shell functions inserted here/,$p' "$ltmain" >> "$cfgfile" \ +++ || (rm -f "$cfgfile"; exit 1) +++ +++ mv -f "$cfgfile" "$ofile" || +++ (rm -f "$ofile" && cp "$cfgfile" "$ofile" && rm -f "$cfgfile") +++ chmod +x "$ofile" +++ +++ ;; +++ +++ esac +++done # for ac_tag +++ +++ +++as_fn_exit 0 +++_ACEOF +++ac_clean_files=$ac_clean_files_save +++ +++test $ac_write_fail = 0 || +++ as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 +++ +++ +++# configure is writing to config.log, and then calls config.status. +++# config.status does its own redirection, appending to config.log. +++# Unfortunately, on DOS this fails, as config.log is still kept open +++# by configure, so config.status won't be able to write to it; its +++# output is simply discarded. So we exec the FD to /dev/null, +++# effectively closing config.log, so it can be properly (re)opened and +++# appended to by config.status. When coming back to configure, we +++# need to make the FD available again. +++if test "$no_create" != yes; then +++ ac_cs_success=: +++ ac_config_status_args= +++ test "$silent" = yes && +++ ac_config_status_args="$ac_config_status_args --quiet" +++ exec 5>/dev/null +++ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false +++ exec 5>>config.log +++ # Use ||, not &&, to avoid exiting from the if with $? = 1, which +++ # would make configure fail if this is the last instruction. +++ $ac_cs_success || as_fn_exit 1 +++fi +++if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then +++ { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +++$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +++fi +++ ++--- /dev/null +++++ b/src/libga68/configure.ac ++@@ -0,0 +1,371 @@ +++# Configure script for libga68. +++# Copyright (C) 2025 Jose E. Marchesi. +++ +++# GCC is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3, or (at your option) +++# any later version. +++ +++# GCC is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++ +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# Process this file with autoreconf to produce a configure script. +++ +++AC_INIT(package-unused, version-unused,,libga68) +++AC_CONFIG_SRCDIR(Makefile.am) +++AC_CONFIG_HEADER(config.h) +++ +++# Add --enable-multilib to configure, which defaults to enable. +++AM_ENABLE_MULTILIB(, ..) +++ +++if test "${multilib}" = "yes"; then +++ multilib_arg="--enable-multilib" +++else +++ multilib_arg= +++fi +++ +++# Cope with compilers, in subsequent tests, that at this stage may not +++# be able to build executables. +++GCC_NO_EXECUTABLES +++ +++# Enable extensions to C or POSIX on hosts that normally disable the +++# extensions. This should be called before any macros that run the C +++# compiler. +++AC_USE_SYSTEM_EXTENSIONS +++ +++# Determine the system type and set output variabls to the names of +++# the canonical system types. +++# +++# Do not delete or change the following two lines. For why, and for +++# why we are using the obsolete AC_CANONICAL_SYSTEM as ell as the +++# recommended AC_CANONICAL_HOST, see +++# http://gcc.gnu.org/ml/libstdc++/2003-07/msg00451.html +++AC_CANONICAL_SYSTEM +++target_alias=${target_alias-$host_alias} +++AC_SUBST(target_alias) +++AC_CANONICAL_HOST +++ +++# These macro are for supporting canadian crosses, in which build /= +++# host /= target. +++ACX_NONCANONICAL_HOST +++ACX_NONCANONICAL_TARGET +++GCC_TOPLEV_SUBDIRS +++ +++# Initialize Automake with proper options. +++AM_INIT_AUTOMAKE([1.15.1 no-define foreign no-dist -Wall -Wno-portability]) +++ +++# Tell Autoheader to include templates for PACKAGE and VERSION in +++# config.h.in. +++AH_TEMPLATE(PACKAGE, [Name of package]) +++AH_TEMPLATE(VERSION, [Version number of package]) +++ +++# Command-line options. +++ +++# Enable large-file support. +++AC_SYS_LARGEFILE +++ +++AC_ARG_WITH(cross-host, +++[ --with-cross-host=HOST Configuring with a cross compiler]) +++ +++AC_MSG_CHECKING([for --enable-version-specific-runtime-libs]) +++AC_ARG_ENABLE(version-specific-runtime-libs, +++[ --enable-version-specific-runtime-libs Specify that runtime libraries should be installed in a compiler-specific directory ], +++[case "$enableval" in +++ yes) version_specific_libs=yes ;; +++ no) version_specific_libs=no ;; +++ *) AC_MSG_ERROR([Unknown argument to enable/disable version-specific libs]);; +++ esac], +++[version_specific_libs=no]) +++AC_MSG_RESULT($version_specific_libs) +++ +++AC_ARG_WITH(slibdir, +++[ --with-slibdir=DIR shared libraries in DIR [LIBDIR]], +++slibdir="$with_slibdir", +++if test "${version_specific_libs}" = yes; then +++ slibdir='$(libsubdir)' +++elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then +++ slibdir='$(exec_prefix)/$(host_noncanonical)/lib' +++else +++ slibdir='$(libdir)' +++fi) +++AC_SUBST(slibdir) +++ +++# Calculate toolexeclibdir +++# Also toolexecdir, though it's only used in toolexeclibdir +++toolexecdir=no +++toolexeclibdir=no +++case ${version_specific_libs} in +++ yes) +++ # Need the gcc compiler version to know where to install libraries +++ # and header files if --enable-version-specific-runtime-libs option +++ # is selected. +++ toolexecdir='$(libdir)/gcc/$(target_noncanonical)' +++ toolexeclibdir='$(toolexecdir)/$(gcc_version)$(MULTISUBDIR)' +++ ;; +++ no) +++ if test -n "$with_cross_host" && +++ test x"$with_cross_host" != x"no"; then +++ # Install a library built with a cross compiler in tooldir, not libdir. +++ toolexecdir='$(exec_prefix)/$(target_noncanonical)' +++ toolexeclibdir='$(toolexecdir)/lib' +++ else +++ toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' +++ toolexeclibdir='$(libdir)' +++ fi +++ multi_os_directory=`$CC -print-multi-os-directory` +++ case $multi_os_directory in +++ .) ;; # Avoid trailing /. +++ *) toolexeclibdir=$toolexeclibdir/$multi_os_directory ;; +++ esac +++ ;; +++esac +++AC_SUBST(toolexecdir) +++AC_SUBST(toolexeclibdir) +++ +++# Add support for --enable-maintainer-mode={yes,no} to configure. +++AM_MAINTAINER_MODE +++ +++# We must force CC to /not/ be precious variables; otherwise +++# the wrong, non-multilib-adjusted value will be used in multilibs. +++# As a side effect, we have to subst CFLAGS ourselves. +++m4_rename([_AC_ARG_VAR_PRECIOUS],[real_PRECIOUS]) +++m4_define([_AC_ARG_VAR_PRECIOUS],[]) +++AC_PROG_CC +++AM_PROG_AS +++m4_rename_force([real_PRECIOUS],[_AC_ARG_VAR_PRECIOUS]) +++AC_SUBST(CFLAGS) +++ +++# In order to override CFLAGS_FOR_TARGET, all of our special flags go +++# in XCFLAGS. But we need them in CFLAGS during configury. So put them +++# in both places for now and restore CFLAGS at the end of config. +++save_CFLAGS="$CFLAGS" +++ +++# Find other programs we need. +++AC_CHECK_TOOL(AR, ar) +++AC_CHECK_TOOL(NM, nm) +++AC_CHECK_TOOL(RANLIB, ranlib, ranlib-not-found-in-path-error) +++AC_PROG_MAKE_SET +++AC_PROG_INSTALL +++ +++# Initialize libtool. +++LT_INIT +++ +++AM_CONDITIONAL([ENABLE_DARWIN_AT_RPATH], [test x$enable_darwin_at_rpath = xyes]) +++ +++AC_SUBST(enable_shared) +++AC_SUBST(enable_static) +++ +++# Do compilation tests using the C compiler and preprocessor. +++AC_LANG_C([C]) +++ +++# Allow the user to set CC_FOR_BUILD in the environment. +++CC_FOR_BUILD=${CC_FOR_BUILD:-gcc} +++AC_SUBST(CC_FOR_BUILD) +++ +++# Search for needed functions in host libraries. +++AC_SEARCH_LIBS([malloc], [c]) +++AC_SEARCH_LIBS([cosf], [m]) +++ +++# Determine what GCC version number to use in filesystem paths. +++GCC_BASE_VER +++ +++# Add dependencies for libga68.spec file +++SPEC_LIBGA68_DEPS="$LIBS" +++AC_SUBST(SPEC_LIBGA68_DEPS) +++ +++# libga68 soname version +++libga68_VERSION=1:0:0 +++AC_SUBST(libga68_VERSION) +++ +++# The Boehm GC +++ +++AC_ARG_ENABLE(algol68-gc, +++[AS_HELP_STRING([--enable-algol68-gc], +++ [enable use of Boehm's garbage collector with the +++ GNU Algol runtime])],,enable_algol68_gc=no) +++AC_ARG_WITH([target-bdw-gc], +++[AS_HELP_STRING([--with-target-bdw-gc=PATHLIST], +++ [specify prefix directory for installed bdw-gc package. +++ Equivalent to --with-target-bdw-gc-include=PATH/include +++ plus --with-target-bdw-gc-lib=PATH/lib])]) +++AC_ARG_WITH([target-bdw-gc-include], +++[AS_HELP_STRING([--with-target-bdw-gc-include=PATHLIST], +++ [specify directories for installed bdw-gc include files])]) +++AC_ARG_WITH([target-bdw-gc-lib], +++[AS_HELP_STRING([--with-target-bdw-gc-lib=PATHLIST], +++ [specify directories for installed bdw-gc library])]) +++ +++bdw_lib_dir= +++case "$enable_algol68_gc" in +++no) +++ use_bdw_gc=no +++ ;; +++*) +++ AC_MSG_CHECKING([for bdw garbage collector]) +++ if test "x$with_target_bdw_gc$with_target_bdw_gc_include$with_target_bdw_gc_lib" = x; then +++ dnl no bdw-gw options, assuming bdw-gc in default locations +++ BDW_GC_CFLAGS= +++ BDW_GC_LIBS="-lgc" +++ else +++ dnl bdw-gw options passed by configure flags +++ if test "x$with_target_bdw_gc_include" = x && test "x$with_target_bdw_gc_lib" != x; then +++ AC_MSG_ERROR([found --with-target-bdw-gc-lib but --with-target-bdw-gc-include missing]) +++ elif test "x$with_target_bdw_gc_include" != x && test "x$with_target_bdw_gc_lib" = x; then +++ AC_MSG_ERROR([found --with-target-bdw-gc-include but --with-target-bdw-gc-lib missing]) +++ else +++ AC_MSG_RESULT([using paths configured with --with-target-bdw-gc options]) +++ fi +++ mldir=`${CC-gcc} --print-multi-directory 2>/dev/null` +++ bdw_val= +++ if test "x$with_target_bdw_gc" != x; then +++ for i in `echo $with_target_bdw_gc | tr ',' ' '`; do +++ case "$i" in +++ *=*) sd=${i%%=*}; d=${i#*=} ;; +++ *) sd=.; d=$i ;; +++ esac +++ if test "$mldir" = "$sd"; then +++ bdw_val=$d +++ fi +++ done +++ if test "x$bdw_val" = x; then +++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc]) +++ fi +++ bdw_inc_dir="$bdw_val/include" +++ bdw_lib_dir="$bdw_val/lib" +++ fi +++ bdw_val= +++ if test "x$with_target_bdw_gc_include" != x; then +++ for i in `echo $with_target_bdw_gc_include | tr ',' ' '`; do +++ case "$i" in +++ *=*) sd=${i%%=*}; d=${i#*=} ;; +++ *) sd=.; d=$i; fallback=$i ;; +++ esac +++ if test "$mldir" = "$sd"; then +++ bdw_val=$d +++ fi +++ done +++ if test "x$bdw_val" = x && test "x$bdw_inc_dir" = x && test "x$fallback" != x; then +++ bdw_inc_dir="$fallback" +++ elif test "x$bdw_val" = x; then +++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include]) +++ else +++ bdw_inc_dir="$bdw_val" +++ fi +++ fi +++ bdw_val= +++ if test "x$with_target_bdw_gc_lib" != x; then +++ for i in `echo $with_target_bdw_gc_lib | tr ',' ' '`; do +++ case "$i" in +++ *=*) sd=${i%%=*}; d=${i#*=} ;; +++ *) sd=.; d=$i ;; +++ esac +++ if test "$mldir" = "$sd"; then +++ bdw_val=$d +++ fi +++ done +++ if test "x$bdw_val" = x; then +++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib]) +++ fi +++ bdw_lib_dir="$bdw_val" +++ fi +++ if test "x$bdw_inc_dir" = x; then +++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-include]) +++ fi +++ if test "x$bdw_lib_dir" = x; then +++ AC_MSG_ERROR([no multilib path ($mldir) found in --with-target-bdw-gc-lib]) +++ fi +++ BDW_GC_CFLAGS="-I$bdw_inc_dir" +++ if test -f $bdw_lib_dir/libgc.la; then +++ BDW_GC_LIBS="$bdw_lib_dir/libgc.la" +++ else +++ BDW_GC_LIBS="-L$bdw_lib_dir -lgc" +++ fi +++ AC_MSG_RESULT([found]) +++ fi +++ +++ case "$BDW_GC_LIBS" in +++ *libgc.la) +++ use_bdw_gc=yes +++ ;; +++ *) +++ AC_MSG_CHECKING([for system boehm-gc]) +++ save_CFLAGS=$CFLAGS +++ save_LIBS=$LIBS +++ CFLAGS="$CFLAGS $BDW_GC_CFLAGS" +++ LIBS="$LIBS $BDW_GC_LIBS" +++ dnl the link test is not good enough for ARM32 multilib detection, +++ dnl first check to link, then to run +++ AC_LINK_IFELSE( +++ [AC_LANG_PROGRAM([#include ],[GC_init()])], +++ [ +++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ +++ #include +++ int main() { +++ GC_init(); +++ return 0; +++ } +++ ]])], +++ [system_bdw_gc_found=yes], +++ [system_bdw_gc_found=no], +++ dnl assume no system boehm-gc for cross builds ... +++ [system_bdw_gc_found=no] +++ ) +++ ], +++ [system_bdw_gc_found=no]) +++ CFLAGS=$save_CFLAGS +++ LIBS=$save_LIBS +++ if test x$enable_algol68_gc = xauto && test x$system_bdw_gc_found = xno; then +++ AC_MSG_WARN([system bdw-gc not found, building libga68 with no GC support]) +++ use_bdw_gc=no +++ elif test x$enable_algol68_gc = xyes && test x$system_bdw_gc_found = xno; then +++ AC_MSG_ERROR([system bdw-gc required but not found]) +++ else +++ use_bdw_gc=yes +++ AC_MSG_RESULT([found]) +++ fi +++ esac +++esac +++ +++if test "$use_bdw_gc" = no; then +++ LIBGA68_GCFLAGS='' +++ LIBGA68_BOEHM_GC_INCLUDES='' +++ LIBGA68_BOEHM_GC_LIBS='' +++else +++ LIBGA68_GCFLAGS='-DLIBGA68_WITH_GC=1' +++ LIBGA68_BOEHM_GC_INCLUDES=$BDW_GC_CFLAGS +++ LIBGA68_BOEHM_GC_LIBS=$BDW_GC_LIBS +++ SPEC_LIBGA68_DEPS="$SPEC_LIBGA68_DEPS $BDW_GC_LIBS" +++fi +++ +++extra_darwin_ldflags_libga68= +++case $host in +++ *-*-darwin*) +++ extra_darwin_ldflags_libga68=-Wl,-U,___algol68_main +++ if test -f $bdw_lib_dir/libgc.a; then +++ # Darwin wants to link this statically into the library +++ LIBGA68_BOEHM_GC_LIBS="$bdw_lib_dir/libgc.a" +++ # No spec entry. +++ BDW_GC_LIBS= +++ fi +++ ;; +++ *) ;; +++esac +++AC_SUBST(extra_darwin_ldflags_libga68) +++ +++# Subst some variables used in Makefile.am +++AC_SUBST(LIBGA68_GCFLAGS) +++AC_SUBST(LIBGA68_BOEHM_GC_INCLUDES) +++AC_SUBST(LIBGA68_BOEHM_GC_LIBS) +++ +++# Output files and be done. +++AC_CONFIG_SRCDIR([Makefile.am]) +++AC_CONFIG_FILES([Makefile]) +++AC_CONFIG_FILES(libga68.spec) +++AC_MSG_NOTICE([libga68 has been configured.]) +++AC_OUTPUT ++--- /dev/null +++++ b/src/libga68/ga68-alloc.c ++@@ -0,0 +1,114 @@ +++/* Run-time routines for memory allocation. +++ +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ Under Section 7 of GPL version 3, you are granted additional permissions +++ described in the GCC Runtime Library Exception, version 3.1, as published by +++ the Free Software Foundation. +++ +++ You should have received a copy of the GNU General Public License and a copy +++ of the GCC Runtime Library Exception along with this program; see the files +++ COPYING3 and COPYING.RUNTIME respectively. If not, see +++ . */ +++ +++#include +++ +++#include "ga68.h" +++ +++/* Heap allocation routines. */ +++ +++void +++_libga68_free_internal (void *pt) +++{ +++ free (pt); +++} +++ +++void * +++_libga68_malloc_internal (size_t size) +++{ +++ void *res = (void *) malloc (size); +++ if (!res) +++ _libga68_abort ("Virtual memory exhausted\n"); +++ return res; +++} +++ +++#if LIBGA68_WITH_GC +++#include +++ +++void +++_libga68_init_heap (void) +++{ +++ if (!GC_is_init_called ()) +++ { +++ GC_INIT (); +++ /* GC_allow_register_threads (); */ +++ } +++} +++ +++void * +++_libga68_realloc (void *ptr, size_t size) +++{ +++ void *res = (void *) GC_realloc (ptr, size); +++ if (!res) +++ _libga68_abort ("Virtual memory exhausted\n"); +++ return res; +++} +++ +++void * +++_libga68_realloc_unchecked (void *ptr, size_t size) +++{ +++ void *res = (void *) GC_realloc (ptr, size); +++ return res; +++} +++ +++void * +++_libga68_malloc (size_t size) +++{ +++ void *res = (void *) GC_malloc (size); +++ if (!res) +++ _libga68_abort ("Virtual memory exhausted\n"); +++ return res; +++} +++ +++#else +++ +++void +++_libga68_init_heap (void) +++{ +++} +++ +++void * +++_libga68_realloc (void *ptr, size_t size) +++{ +++ void *res = (void *) realloc (ptr, size); +++ if (!res) +++ _libga68_abort ("Virtual memory exhausted\n"); +++ return res; +++} +++ +++void * +++_libga68_realloc_unchecked (void *ptr, size_t size) +++{ +++ void *res = (void *) realloc (ptr, size); +++ return res; +++} +++ +++void * +++_libga68_malloc (size_t size) +++{ +++ void *res = (void *) malloc (size); +++ if (!res) +++ _libga68_abort ("Virtual memory exhausted\n"); +++ return res; +++} +++ +++#endif /* !LIBGA68_WITH_GC */ ++--- /dev/null +++++ b/src/libga68/ga68-error.c ++@@ -0,0 +1,151 @@ +++/* Support run-time routines for error handling. +++ +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ Under Section 7 of GPL version 3, you are granted additional permissions +++ described in the GCC Runtime Library Exception, version 3.1, as published by +++ the Free Software Foundation. +++ +++ You should have received a copy of the GNU General Public License and a copy +++ of the GCC Runtime Library Exception along with this program; see the files +++ COPYING3 and COPYING.RUNTIME respectively. If not, see +++ . */ +++ +++#include +++#include /* For abort. */ +++ +++#include "ga68.h" +++ +++/* Run-time error handling. +++ +++ Please use the following format when outputing runtime error messages: +++ +++ FILE:LINE:[COLUMN:] TEXT +++ +++ This keeps the output aligned with other runtime libraries such as the +++ sanitizers. */ +++ +++/* Emit a formatted error message to the standard output and then terminate the +++ process with an error code. */ +++ +++void +++_libga68_abort (const char *fmt, ...) +++{ +++ va_list ap; +++ +++ va_start (ap, fmt); +++ vfprintf (stderr, fmt, ap); +++ abort (); +++ va_end (ap); +++} +++ +++/* Assertion failure. */ +++ +++void +++_libga68_assert (const char *filename, unsigned int lineno) +++{ +++ _libga68_abort ("%s:%u: runtime error: ASSERT failure\n", +++ filename, lineno); +++} +++ +++/* Attempt to dereference NIL failure. */ +++ +++void +++_libga68_derefnil (const char *filename, unsigned int lineno) +++{ +++ _libga68_abort ("%s:%u: runtime error: attempt to dereference NIL\n", +++ filename, lineno); +++} +++ +++/* Invalid character expression. */ +++ +++void +++_libga68_invalidcharerror (const char *filename, unsigned int lineno, +++ int c) +++{ +++ if (c < 0) +++ _libga68_abort ("%s:%u: runtime error: %d is not a valid character point\n", +++ filename, lineno, c); +++ _libga68_abort ("%s:%u: runtime error: U+%x is not a valid character point\n", +++ filename, lineno, c); +++} +++ +++/* Out of bounds error in bits ELEM operator. */ +++ +++void +++_libga68_bitsboundserror (const char *filename, unsigned int lineno, +++ ssize_t pos) +++{ +++ _libga68_abort ("%s:%u: runtime error: bound %zd out of range in ELEM\n", +++ filename, lineno, pos); +++} +++ +++/* Unreachable error. */ +++ +++void +++_libga68_unreachable (const char *filename, unsigned int lineno) +++{ +++ _libga68_abort ("%s:%u: runtime error: unreachable reached\n", +++ filename, lineno); +++} +++ +++/* Lower bound failure. */ +++ +++void +++_libga68_lower_bound (const char *filename, unsigned int lineno, +++ ssize_t index, ssize_t lower_bound) +++{ +++ _libga68_abort ("%s:%u: runtime error: lower bound %zd must be >= %zd\n", +++ filename, lineno, index, lower_bound); +++} +++ +++/* Upper bound failure. */ +++ +++void +++_libga68_upper_bound (const char *filename, unsigned int lineno, +++ ssize_t index, ssize_t upper_bound) +++{ +++ _libga68_abort ("%s:%u: runtime error: upper bound %zd must be <= %zd\n", +++ filename, lineno, index, upper_bound); +++} +++ +++/* Bounds failure. */ +++ +++void +++_libga68_bounds (const char *filename, unsigned int lineno, +++ ssize_t index, ssize_t lower_bound, ssize_t upper_bound) +++{ +++ _libga68_abort ("%s:%u: runtime error: bound %zd out of range [%zd:%zd]\n", +++ filename, lineno, index, lower_bound, upper_bound); +++} +++ +++/* Dimension failure. */ +++ +++void +++_libga68_dim (const char *filename, unsigned int lineno, +++ size_t dim, size_t index) +++{ +++ _libga68_abort ("%s:%u: runtime error: invalid dimension %zd; shall be > 0 and <= %zu\n", +++ filename, lineno, index, dim); +++} +++ +++/* Multiples have different bounds in assignations. */ +++ +++void +++_libga68_bounds_mismatch (const char *filename, unsigned int lineno, +++ size_t dim, ssize_t lb1, ssize_t ub1, +++ ssize_t lb2, ssize_t ub2) +++{ +++ _libga68_abort ("%s:%u: runtime error: multiple bounds mismatch in \ +++assignation: dim %zu: [%zd:%zd] /= [%zd:%zd]\n", +++ filename, lineno, dim, lb1, ub1, lb2, ub2); +++} ++--- /dev/null +++++ b/src/libga68/ga68-posix.c ++@@ -0,0 +1,463 @@ +++/* Support run-time routines for the POSIX prelude. +++ +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ Under Section 7 of GPL version 3, you are granted additional permissions +++ described in the GCC Runtime Library Exception, version 3.1, as published by +++ the Free Software Foundation. +++ +++ You should have received a copy of the GNU General Public License and a copy +++ of the GCC Runtime Library Exception along with this program; see the files +++ COPYING3 and COPYING.RUNTIME respectively. If not, see +++ . */ +++ +++#include "ga68.h" +++ +++#include +++#include +++#include +++#include /* For open. */ +++#include /* For close and write. */ +++#include /* For errno. */ +++#include +++#include /* For struct stat */ +++#include +++#include /* For gethostbyname. */ +++#include /* For LLONG_MAX */ +++ +++#define EOF_PSEUDO_CHARACTER -1 +++ +++/* Some Unicode code points used in this file. */ +++ +++#define REPLACEMENT_CHARACTER 0xFFFD +++#define NEWLINE 0x000A +++ +++/* Errno. */ +++ +++static int _libga68_errno; +++ +++/* Simple I/O based on POSIX file descriptors. */ +++ +++int +++_libga68_posixerrno (void) +++{ +++ return _libga68_errno; +++} +++ +++void +++_libga68_posixperror (uint32_t *s, size_t len, size_t stride) +++{ +++ size_t u8len; +++ uint8_t *u8str = _libga68_u32_to_u8 (s, len, stride, NULL, &u8len); +++ +++ const char *errstr = strerror (_libga68_errno); +++ (void) write (2, u8str, u8len); +++ (void) write (2, ": ", 2); +++ (void) write (2, errstr, strlen (errstr)); +++ (void) write (2, "\n", 1); +++} +++ +++uint32_t * +++_libga68_posixstrerror (int errnum, size_t *len) +++{ +++ const char *str = strerror (errnum); +++ return _libga68_u8_to_u32 ((const uint8_t *)str, strlen (str), NULL, len); +++} +++ +++/* Helper for _libga68_posixfopen. */ +++static int +++_libga68_open (const char *path, unsigned int flags) +++{ +++ int fd = open (path, flags); +++ _libga68_errno = errno; +++ return fd; +++} +++ +++#define FILE_O_DEFAULT 0x99999999 +++#define FILE_O_RDONLY 0x0 +++#define FILE_O_WRONLY 0x1 +++#define FILE_O_RDWR 0x2 +++#define FILE_O_TRUNC 0x8 +++ +++int +++_libga68_posixfopen (const uint32_t *pathname, size_t len, size_t stride, +++ unsigned int flags) +++{ +++ int fd; +++ int openflags = 0; +++ size_t u8len; +++ const uint8_t *u8pathname = _libga68_u32_to_u8 (pathname, len, stride, NULL, +++ &u8len); +++ char *filepath = (char *) _libga68_malloc_internal (u8len + 1); +++ memcpy (filepath, u8pathname, u8len); +++ filepath[u8len] = '\0'; +++ +++ /* Default mode: try read-write initially. +++ If that fails, then try read-only. +++ If that fails, then try write-only. */ +++ if (flags == FILE_O_DEFAULT) +++ { +++ openflags = O_RDWR; +++ if ((fd = _libga68_open (filepath, openflags)) < 0) +++ { +++ openflags = O_RDONLY; +++ if ((fd = _libga68_open (filepath, openflags)) < 0) +++ { +++ openflags = O_WRONLY; +++ fd = _libga68_open (filepath, openflags); +++ _libga68_free_internal (filepath); +++ return fd; +++ } +++ } +++ _libga68_free_internal (filepath); +++ return fd; +++ } +++ +++ if (flags & FILE_O_RDONLY) +++ openflags |= O_RDONLY; +++ if (flags & FILE_O_WRONLY) +++ openflags |= O_WRONLY; +++ if (flags & FILE_O_RDWR) +++ openflags |= O_RDWR; +++ if (flags & FILE_O_TRUNC) +++ openflags |= O_TRUNC; +++ +++ fd = _libga68_open (filepath, openflags); +++ _libga68_free_internal (filepath); +++ return fd; +++} +++ +++int +++_libga68_posixcreat (uint32_t *pathname, size_t len, size_t stride, +++ uint32_t mode) +++{ +++ size_t u8len; +++ uint8_t *u8pathname = _libga68_u32_to_u8 (pathname, len, stride, NULL, &u8len); +++ u8pathname[u8len] = '\0'; +++ +++ int res = creat (u8pathname, mode); +++ _libga68_errno = errno; +++ return res; +++} +++ +++int +++_libga68_posixclose (int fd) +++{ +++ int res = close (fd); +++ _libga68_errno = errno; +++ return res; +++} +++ +++/* Implementation of the posix prelude `posix argc'. */ +++ +++int +++_libga68_posixargc (void) +++{ +++ return _libga68_argc; +++} +++ +++/* Implementation of the posix prelude `posix argv'. */ +++ +++uint32_t * +++_libga68_posixargv (int n, size_t *len) +++{ +++ if (n < 0 || n > _libga68_argc) +++ { +++ /* Return an empty string. */ +++ *len = 0; +++ return NULL; +++ } +++ else +++ { +++ char *arg = _libga68_argv[n - 1]; +++ return _libga68_u8_to_u32 (arg, strlen (arg), NULL, len); +++ } +++} +++ +++/* Implementation of the posix prelude `posix getenv'. */ +++ +++void +++_libga68_posixgetenv (uint32_t *s, size_t len, size_t stride, +++ uint32_t **r, size_t *rlen) +++{ +++ size_t varlen; +++ char *varname = _libga68_u32_to_u8 (s, len, stride, NULL, &varlen); +++ +++ char *var = _libga68_malloc_internal (varlen + 1); +++ memcpy (var, varname, varlen); +++ var[varlen] = '\0'; +++ char *val = getenv (var); +++ _libga68_free_internal (var); +++ +++ if (val == NULL) +++ { +++ /* Return an empty string. */ +++ *r = NULL; +++ *rlen = 0; +++ } +++ else +++ *r = _libga68_u8_to_u32 (val, strlen (val), NULL, rlen); +++} +++ +++/* Implementation of the posix prelude `posix puts'. */ +++ +++void +++_libga68_posixputs (uint32_t *s, size_t len, size_t stride) +++{ +++ (void) _libga68_posixfputs (1, s, len, stride); +++} +++ +++/* Implementation of the posix prelude `posix fputs'. */ +++ +++int +++_libga68_posixfputs (int fd, uint32_t *s, size_t len, size_t stride) +++{ +++ size_t u8len; +++ uint8_t *u8str = _libga68_u32_to_u8 (s, len, stride, NULL, &u8len); +++ +++ ssize_t ret = write (fd, u8str, u8len); +++ _libga68_errno = errno; +++ if (ret == -1) +++ return 0; +++ else +++ return u8len; +++} +++ +++/* Implementation of the posix prelude `posix putc'. */ +++ +++uint32_t +++_libga68_posixfputc (int fd, uint32_t c) +++{ +++ uint8_t u8[6]; +++ +++ int u8len = _libga68_u8_uctomb (u8, c, 6); +++ if (u8len < 0) +++ return EOF_PSEUDO_CHARACTER; +++ +++ ssize_t ret = write (fd, &u8, u8len); +++ if (ret == -1) +++ return EOF_PSEUDO_CHARACTER; +++ else +++ return c; +++} +++ +++/* Implementation of the posix prelude `posix putchar'. */ +++ +++uint32_t +++_libga68_posixputchar (uint32_t c) +++{ +++ return _libga68_posixfputc (1, c); +++} +++ +++/* Implementation of the posix prelude `posix fgetc'. */ +++ +++uint32_t +++_libga68_posixfgetc (int fd) +++{ +++ /* We need to read one char (byte) at a time from FD, until we complete a +++ full Unicode character. Then we convert to UCS-4. */ +++ +++ uint8_t c; +++ uint8_t u8c[6]; +++ size_t morechars = 0; +++ size_t i; +++ +++ /* Read first UTF-8 character. This gives us the total length of the +++ character. */ +++ if (read (fd, &c, 1) != 1) +++ return EOF_PSEUDO_CHARACTER; +++ +++ if (c < 128) +++ morechars = 0; +++ else if (c < 224) +++ morechars = 1; +++ else if (c < 240) +++ morechars = 2; +++ else +++ morechars = 3; +++ +++ u8c[0] = c; +++ for (i = 0; i < morechars; ++i) +++ { +++ if (read (fd, &c, 1) != 1) +++ return EOF_PSEUDO_CHARACTER; +++ u8c[i + 1] = c; +++ } +++ +++ uint32_t res; +++ int num_units = morechars + 1; +++ int length = _libga68_u8_mbtouc (&res, (const uint8_t *) &u8c, num_units); +++ if (res == REPLACEMENT_CHARACTER || length != num_units) +++ return REPLACEMENT_CHARACTER; +++ else +++ return res; +++} +++ +++/* Implementation of the posix prelude `posix getchar'. */ +++ +++uint32_t +++_libga68_posixgetchar (void) +++{ +++ return _libga68_posixfgetc (0); +++} +++ +++/* Implementation of the posix prelude `posix fgets'. */ +++ +++uint32_t * +++_libga68_posixfgets (int fd, int nchars, size_t *len) +++{ +++ uint32_t *res = NULL; +++ int n = 0; +++ uint32_t uc; +++ +++ if (nchars > 0) +++ { +++ /* Read exactly nchar or until EOF. */ +++ res = _libga68_malloc (nchars * sizeof (uint32_t)); +++ do +++ { +++ uc = _libga68_posixfgetc (fd); +++ if (uc == EOF_PSEUDO_CHARACTER) +++ break; +++ res[n++] = uc; +++ } +++ while (n < nchars); +++ } +++ else +++ { +++ /* Read until newline or EOF. */ +++ size_t allocated = 80 * sizeof (uint32_t); +++ res = _libga68_malloc (allocated); +++ do +++ { +++ uc = _libga68_posixfgetc (fd); +++ if (uc != EOF_PSEUDO_CHARACTER) +++ { +++ if (n % 80 == 0) +++ res = _libga68_realloc (res, n * 80 * sizeof (uint32_t) + 80 * sizeof (uint32_t)); +++ res[n++] = uc; +++ } +++ } +++ while (uc != NEWLINE && uc != EOF_PSEUDO_CHARACTER); +++ if (n > 0) +++ res = _libga68_realloc (res, n * 80 * sizeof (uint32_t)); +++ } +++ +++ *len = n; +++ return res; +++} +++ +++/* Implementation of the posix prelude `posix gets'. */ +++ +++uint32_t * +++_libga68_posixgets (int nchars, size_t *len) +++{ +++ return _libga68_posixfgets (0, nchars, len); +++} +++ +++/* Implementation of the posix prelude `fconnect'. */ +++ +++int +++_libga68_posixfconnect (uint32_t *str, size_t len, size_t stride, +++ int port) +++{ +++ size_t u8len; +++ uint8_t *u8host = _libga68_u32_to_u8 (str, len, stride, NULL, &u8len); +++ +++ /* Create a stream socket. */ +++ int fd = socket (AF_INET, SOCK_STREAM, 0); +++ _libga68_errno = errno; +++ if (fd < 0) +++ goto error; +++ +++ /* Lookup the specified host. */ +++ char *host = _libga68_malloc_internal (u8len + 1); +++ memcpy (host, u8host, u8len); +++ host[u8len] = '\0'; +++ struct hostent *server = gethostbyname (host); +++ if (server == NULL) +++ { +++ _libga68_errno = h_errno; +++ goto close_fd_and_error; +++ } +++ +++ /* Connect the socket to the server. */ +++ struct sockaddr_in serv_addr; +++ memset (&serv_addr, 0, sizeof (serv_addr)); +++ serv_addr.sin_family = AF_INET; +++ serv_addr.sin_port = htons (port); +++ memcpy (&serv_addr.sin_addr.s_addr, +++ server->h_addr, +++ server->h_length); +++ int res = connect (fd, (struct sockaddr *) &serv_addr, +++ sizeof (serv_addr)); +++ _libga68_errno = errno; +++ if (res == -1) +++ goto close_fd_and_error; +++ +++ _libga68_free_internal (host); +++ return fd; +++ +++ close_fd_and_error: +++ close (fd); +++ error: +++ _libga68_free_internal (host); +++ return -1; +++} +++ +++/* Implementation of the posix prelude `fsize'. */ +++ +++long long int +++_libga68_posixfsize (int fd) +++{ +++ struct stat stat; +++ +++ if (fstat (fd, &stat) == -1) +++ { +++ _libga68_errno = errno; +++ return -1; +++ } +++ +++ if (stat.st_size > LLONG_MAX) +++ { +++ _libga68_errno = EOVERFLOW; +++ return -1; +++ } +++ +++ return (long int) stat.st_size; +++} +++ +++/* Implementation of the posix prelude `lseek'. */ +++#define A68_SEEK_CUR 0 +++#define A68_SEEK_END 1 +++#define A68_SEEK_SET 2 +++ +++long long int +++_libga68_posixlseek (int fd, long long int offset, int whence) +++{ +++ switch (whence) +++ { +++ case A68_SEEK_CUR: +++ whence = SEEK_CUR; +++ break; +++ case A68_SEEK_END: +++ whence = SEEK_END; +++ break; +++ case A68_SEEK_SET: +++ whence = SEEK_SET; +++ break; +++ } +++ +++ long long int ret = (long long int) lseek(fd, offset, whence); +++ _libga68_errno = errno; +++ return ret; +++} ++--- /dev/null +++++ b/src/libga68/ga68-standenv.c ++@@ -0,0 +1,48 @@ +++/* Support run-time routines for the standard prelude. +++ +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ Under Section 7 of GPL version 3, you are granted additional permissions +++ described in the GCC Runtime Library Exception, version 3.1, as published by +++ the Free Software Foundation. +++ +++ You should have received a copy of the GNU General Public License and a copy +++ of the GCC Runtime Library Exception along with this program; see the files +++ COPYING3 and COPYING.RUNTIME respectively. If not, see +++ . */ +++ +++#include /* For rand. */ +++ +++#include "ga68.h" +++ +++/* Implementation of the standard prelude `random' function. */ +++ +++float +++_libga68_random (void) +++{ +++ float res = (float) rand () / (float) (RAND_MAX); +++ return res; +++} +++ +++double +++_libga68_longrandom (void) +++{ +++ double res = (double) rand () / (float) (RAND_MAX); +++ return res; +++} +++ +++long double +++_libga68_longlongrandom (void) +++{ +++ long double res = (long double) rand () / (float) (RAND_MAX); +++ return res; +++} ++--- /dev/null +++++ b/src/libga68/ga68-unistr.c ++@@ -0,0 +1,615 @@ +++/* libga68 unicode support routines. +++ Copyright (C) 2009-2025 Free Software Foundation, Inc. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ Under Section 7 of GPL version 3, you are granted additional permissions +++ described in the GCC Runtime Library Exception, version 3.1, as published by +++ the Free Software Foundation. +++ +++ You should have received a copy of the GNU General Public License and a copy +++ of the GCC Runtime Library Exception along with this program; see the files +++ COPYING3 and COPYING.RUNTIME respectively. If not, see +++ . */ +++ +++/* The code in this file has been copied from the unistr gnulib module, written +++ by Bruno Haible, and adapted to support strides. */ +++ +++#include /* For ptrdiff_t */ +++#include +++#include +++#include +++#include +++ +++#include "ga68.h" +++ +++/* CMP (n1, n2) performs a three-valued comparison on n1 vs. n2, where +++ n1 and n2 are expressions without side effects, that evaluate to real +++ numbers (excluding NaN). +++ It returns +++ 1 if n1 > n2 +++ 0 if n1 == n2 +++ -1 if n1 < n2 +++ The naïve code (n1 > n2 ? 1 : n1 < n2 ? -1 : 0) produces a conditional +++ jump with nearly all GCC versions up to GCC 10. +++ This variant (n1 < n2 ? -1 : n1 > n2) produces a conditional with many +++ GCC versions up to GCC 9. +++ The better code (n1 > n2) - (n1 < n2) from Hacker's Delight § 2-9 +++ avoids conditional jumps in all GCC versions >= 3.4. */ +++ +++#define CMP(n1, n2) (((n1) > (n2)) - ((n1) < (n2))) +++ +++/* MIN(a,b) returns the minimum of A and B. */ +++ +++#ifndef MIN +++# define MIN(a,b) ((a) < (b) ? (a) : (b)) +++#endif +++ +++/* Compare two UCS-4 strings of same lenght, lexicographically. +++ Return -1, 0 or 1. */ +++ +++int +++_libga68_u32_cmp (const uint32_t *s1, size_t stride1, +++ const uint32_t *s2, size_t stride2, +++ size_t n) +++{ +++ stride1 = stride1 / sizeof (uint32_t); +++ stride2 = stride2 / sizeof (uint32_t); +++ +++ for (; n > 0;) +++ { +++ uint32_t uc1 = *s1; +++ s1 += stride1; +++ uint32_t uc2 = *s2; +++ s2 += stride2; +++ if (uc1 == uc2) +++ { +++ n--; +++ continue; +++ } +++ /* Note that uc1 and uc2 each have at most 31 bits. */ +++ return (int)uc1 - (int)uc2; +++ /* > 0 if uc1 > uc2, < 0 if uc1 < uc2. */ +++ } +++ return 0; +++} +++ +++/* Compare two UCS-4 strings of perhaps different lenghts, lexicographically. +++ Return -1, 0 or 1. */ +++ +++int +++_libga68_u32_cmp2 (const uint32_t *s1, size_t n1, size_t stride1, +++ const uint32_t *s2, size_t n2, size_t stride2) +++{ +++ int cmp = _libga68_u32_cmp (s1, stride1, s2, stride2, MIN (n1, n2)); +++ +++ if (cmp == 0) +++ cmp = CMP (n1, n2); +++ +++ return cmp; +++} +++ +++/* Get the UCS code for the first character of a given UTF-8 string. */ +++ +++int +++_libga68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n) +++{ +++ uint8_t c = *s; +++ +++ if (c < 0x80) +++ { +++ *puc = c; +++ return 1; +++ } +++ else if (c >= 0xc2) +++ { +++ if (c < 0xe0) +++ { +++ if (n >= 2) +++ { +++ if ((s[1] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x1f) << 6) +++ | (unsigned int) (s[1] ^ 0x80); +++ return 2; +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return 1; +++ } +++ } +++ else if (c < 0xf0) +++ { +++ if (n >= 3) +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xe1 || s[1] >= 0xa0) +++ && (c != 0xed || s[1] < 0xa0)) +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x0f) << 12) +++ | ((unsigned int) (s[1] ^ 0x80) << 6) +++ | (unsigned int) (s[2] ^ 0x80); +++ return 3; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 2; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 1; +++ } +++ else +++ { +++ *puc = 0xfffd; +++ if (n == 1) +++ { +++ /* incomplete multibyte character */ +++ return 1; +++ } +++ else +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xe1 || s[1] >= 0xa0) +++ && (c != 0xed || s[1] < 0xa0)) +++ { +++ /* incomplete multibyte character */ +++ return 2; +++ } +++ else +++ { +++ /* invalid multibyte character */ +++ return 1; +++ } +++ } +++ } +++ } +++ else if (c <= 0xf4) +++ { +++ if (n >= 4) +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xf1 || s[1] >= 0x90) +++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ if ((s[3] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x07) << 18) +++ | ((unsigned int) (s[1] ^ 0x80) << 12) +++ | ((unsigned int) (s[2] ^ 0x80) << 6) +++ | (unsigned int) (s[3] ^ 0x80); +++ return 4; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 3; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 2; +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 1; +++ } +++ else +++ { +++ *puc = 0xfffd; +++ if (n == 1) +++ { +++ /* incomplete multibyte character */ +++ return 1; +++ } +++ else +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xf1 || s[1] >= 0x90) +++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) +++ { +++ if (n == 2) +++ { +++ /* incomplete multibyte character */ +++ return 2; +++ } +++ else +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ /* incomplete multibyte character */ +++ return 3; +++ } +++ else +++ { +++ /* invalid multibyte character */ +++ return 2; +++ } +++ } +++ } +++ else +++ { +++ /* invalid multibyte character */ +++ return 1; +++ } +++ } +++ } +++ } +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return 1; +++} +++ +++/* Encode a given UCS code in UTF-8. */ +++ +++int +++_libga68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n) +++{ +++ if (uc < 0x80) +++ { +++ if (n > 0) +++ { +++ s[0] = uc; +++ return 1; +++ } +++ /* else return -2, below. */ +++ } +++ else +++ { +++ int count; +++ +++ if (uc < 0x800) +++ count = 2; +++ else if (uc < 0x10000) +++ { +++ if (uc < 0xd800 || uc >= 0xe000) +++ count = 3; +++ else +++ return -1; +++ } +++ else if (uc < 0x110000) +++ count = 4; +++ else +++ return -1; +++ +++ if (n >= count) +++ { +++ switch (count) /* note: code falls through cases! */ +++ { +++ case 4: s[3] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x10000; +++ /* Fallthrough. */ +++ case 3: s[2] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0x800; +++ /* Fallthrough. */ +++ case 2: s[1] = 0x80 | (uc & 0x3f); uc = uc >> 6; uc |= 0xc0; +++ /*case 1:*/ s[0] = uc; +++ } +++ return count; +++ } +++ } +++ return -2; +++} +++ +++/* Convert UCS-4 to UTF-8 */ +++ +++uint8_t * +++_libga68_u32_to_u8 (const uint32_t *s, size_t n, size_t stride, +++ uint8_t *resultbuf, size_t *lengthp) +++{ +++ const uint32_t *s_end; +++ /* Output string accumulator. */ +++ uint8_t *result; +++ size_t allocated; +++ size_t length; +++ +++ stride = stride / sizeof (uint32_t); +++ s_end = s + (n * stride); +++ +++ if (resultbuf != NULL) +++ { +++ result = resultbuf; +++ allocated = *lengthp; +++ } +++ else +++ { +++ result = NULL; +++ allocated = 0; +++ } +++ length = 0; +++ /* Invariants: +++ result is either == resultbuf or == NULL or malloc-allocated. +++ If length > 0, then result != NULL. */ +++ +++ while (s < s_end) +++ { +++ uint32_t uc; +++ int count; +++ +++ /* Fetch a Unicode character from the input string. */ +++ uc = *s; +++ s += stride; +++ /* No need to call the safe variant u32_mbtouc, because +++ u8_uctomb will verify uc anyway. */ +++ +++ /* Store it in the output string. */ +++ count = _libga68_u8_uctomb (result + length, uc, allocated - length); +++ if (count == -1) +++ { +++ if (!(result == resultbuf || result == NULL)) +++ free (result); +++ errno = EILSEQ; +++ return NULL; +++ } +++ if (count == -2) +++ { +++ uint8_t *memory; +++ +++ allocated = (allocated > 0 ? 2 * allocated : 12); +++ if (length + 6 > allocated) +++ allocated = length + 6; +++ if (result == resultbuf || result == NULL) +++ memory = (uint8_t *) _libga68_malloc (allocated * sizeof (uint8_t)); +++ else +++ memory = +++ (uint8_t *) _libga68_realloc (result, allocated * sizeof (uint8_t)); +++ +++ if (result == resultbuf && length > 0) +++ memcpy ((char *) memory, (char *) result, +++ length * sizeof (uint8_t)); +++ result = memory; +++ count = _libga68_u8_uctomb (result + length, uc, allocated - length); +++ if (count < 0) +++ abort (); +++ } +++ length += count; +++ } +++ +++ if (length == 0) +++ { +++ if (result == NULL) +++ { +++ /* Return a non-NULL value. NULL means error. */ +++ result = (uint8_t *) _libga68_malloc (1); +++ if (result == NULL) +++ { +++ errno = ENOMEM; +++ return NULL; +++ } +++ } +++ } +++ else if (result != resultbuf && length < allocated) +++ { +++ /* Shrink the allocated memory if possible. */ +++ uint8_t *memory; +++ +++ memory = (uint8_t *) _libga68_realloc_unchecked (result, length * sizeof (uint8_t)); +++ if (memory != NULL) +++ result = memory; +++ } +++ +++ *lengthp = length; +++ return result; +++} +++ +++/* Used by ga68_u8_to_u32 below. */ +++ +++static int +++_libga68_u8_mbtoucr (uint32_t *puc, const uint8_t *s, size_t n) +++{ +++ uint8_t c = *s; +++ +++ if (c < 0x80) +++ { +++ *puc = c; +++ return 1; +++ } +++ else if (c >= 0xc2) +++ { +++ if (c < 0xe0) +++ { +++ if (n >= 2) +++ { +++ if ((s[1] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x1f) << 6) +++ | (unsigned int) (s[1] ^ 0x80); +++ return 2; +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ else if (c < 0xf0) +++ { +++ if (n >= 2) +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xe1 || s[1] >= 0xa0) +++ && (c != 0xed || s[1] < 0xa0)) +++ { +++ if (n >= 3) +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x0f) << 12) +++ | ((unsigned int) (s[1] ^ 0x80) << 6) +++ | (unsigned int) (s[2] ^ 0x80); +++ return 3; +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ else if (c <= 0xf4) +++ { +++ if (n >= 2) +++ { +++ if ((s[1] ^ 0x80) < 0x40 +++ && (c >= 0xf1 || s[1] >= 0x90) +++ && (c < 0xf4 || (/* c == 0xf4 && */ s[1] < 0x90))) +++ { +++ if (n >= 3) +++ { +++ if ((s[2] ^ 0x80) < 0x40) +++ { +++ if (n >= 4) +++ { +++ if ((s[3] ^ 0x80) < 0x40) +++ { +++ *puc = ((unsigned int) (c & 0x07) << 18) +++ | ((unsigned int) (s[1] ^ 0x80) << 12) +++ | ((unsigned int) (s[2] ^ 0x80) << 6) +++ | (unsigned int) (s[3] ^ 0x80); +++ return 4; +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ /* invalid multibyte character */ +++ } +++ else +++ { +++ /* incomplete multibyte character */ +++ *puc = 0xfffd; +++ return -2; +++ } +++ } +++ } +++ /* invalid multibyte character */ +++ *puc = 0xfffd; +++ return -1; +++} +++ +++/* Convert UTF-8 to UTF-32/UCS-4 */ +++ +++uint32_t * +++_libga68_u8_to_u32 (const uint8_t *s, size_t n, uint32_t *resultbuf, size_t *lengthp) +++{ +++ const uint8_t *s_end = s + n; +++ /* Output string accumulator. */ +++ uint32_t *result; +++ size_t allocated; +++ size_t length; +++ +++ if (resultbuf != NULL) +++ { +++ result = resultbuf; +++ allocated = *lengthp; +++ } +++ else +++ { +++ result = NULL; +++ allocated = 0; +++ } +++ length = 0; +++ /* Invariants: +++ result is either == resultbuf or == NULL or malloc-allocated. +++ If length > 0, then result != NULL. */ +++ +++ while (s < s_end) +++ { +++ uint32_t uc; +++ int count; +++ +++ /* Fetch a Unicode character from the input string. */ +++ count = _libga68_u8_mbtoucr (&uc, s, s_end - s); +++ if (count < 0) +++ { +++ if (!(result == resultbuf || result == NULL)) +++ free (result); +++ errno = EILSEQ; +++ return NULL; +++ } +++ s += count; +++ +++ /* Store it in the output string. */ +++ if (length + 1 > allocated) +++ { +++ uint32_t *memory; +++ +++ allocated = (allocated > 0 ? 2 * allocated : 12); +++ if (length + 1 > allocated) +++ allocated = length + 1; +++ if (result == resultbuf || result == NULL) +++ memory = (uint32_t *) _libga68_malloc (allocated * sizeof (uint32_t)); +++ else +++ memory = +++ (uint32_t *) _libga68_realloc (result, allocated * sizeof (uint32_t)); +++ +++ if (result == resultbuf && length > 0) +++ memcpy ((char *) memory, (char *) result, +++ length * sizeof (uint32_t)); +++ result = memory; +++ } +++ result[length++] = uc; +++ } +++ +++ if (length == 0) +++ { +++ if (result == NULL) +++ { +++ /* Return a non-NULL value. NULL means error. */ +++ result = (uint32_t *) _libga68_malloc (1); +++ } +++ } +++ else if (result != resultbuf && length < allocated) +++ { +++ /* Shrink the allocated memory if possible. */ +++ uint32_t *memory; +++ +++ memory = (uint32_t *) _libga68_realloc_unchecked (result, length * sizeof (uint32_t)); +++ if (memory != NULL) +++ result = memory; +++ } +++ +++ *lengthp = length; +++ return result; +++} ++--- /dev/null +++++ b/src/libga68/ga68.h ++@@ -0,0 +1,126 @@ +++/* Definitions for libga68. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ Under Section 7 of GPL version 3, you are granted additional permissions +++ described in the GCC Runtime Library Exception, version 3.1, as published by +++ the Free Software Foundation. +++ +++ You should have received a copy of the GNU General Public License and a copy +++ of the GCC Runtime Library Exception along with this program; see the files +++ COPYING3 and COPYING.RUNTIME respectively. If not, see +++ . */ +++ +++#ifndef GA68_H +++#define GA68_H +++ +++#include "config.h" +++ +++#include /* For size_t. */ +++#include +++#include +++#ifdef __has_include +++# if __has_include () +++# include /* For ssize_t. */ +++# endif +++#endif +++ +++/* ga68-error.c */ +++ +++void _libga68_abort (const char *fmt, ...) +++ __attribute__ ((__format__ (__printf__, 1, 2), __nonnull__ (1), +++ __noreturn__)); +++ +++void _libga68_assert (const char *filename, unsigned int lineno); +++void _libga68_derefnil (const char *filename, unsigned int lineno); +++void _libga68_invalidcharerror (const char *filename, unsigned int lineno, +++ int c); +++ +++void _libga68_bitsboundserror (const char *filename, unsigned int lineno, +++ ssize_t pos); +++void _libga68_unreachable (const char *filename, unsigned int lineno); +++void _libga68_lower_bound (const char *filename, unsigned int lineno, +++ ssize_t index, ssize_t lower_bound); +++void _libga68_upper_bound (const char *filename, unsigned int lineno, +++ ssize_t index, ssize_t upper_bound); +++void _libga68_bounds (const char *filename, unsigned int lineno, +++ ssize_t index, ssize_t lower_bound, ssize_t upper_bound); +++void _libga68_dim (const char *filename, unsigned int lineno, +++ size_t dim, size_t index); +++void _libga68_bounds_mismatch (const char *filename, unsigned int lineno, +++ size_t dim, ssize_t lb1, ssize_t ub1, +++ ssize_t lb2, ssize_t ub2); +++ +++/* ga68-alloc.c */ +++ +++void _libga68_init_heap (void); +++void *_libga68_malloc (size_t size); +++void *_libga68_malloc_internal (size_t size); +++void *_libga68_realloc (void *ptr, size_t size); +++void *_libga68_realloc_unchecked (void *ptr, size_t size); +++void _libga68_free_internal (void *ptr); +++ +++/* ga68-standenv.c */ +++ +++float _libga68_random (void); +++double _libga68_longrandom (void); +++long double _libga68_longlongrandom (void); +++ +++/* ga68-posix.c */ +++ +++int _libga68_posixerrno (void); +++void _libga68_posixperror (uint32_t *s, size_t len, size_t stride); +++uint32_t *_libga68_posixstrerror (int errnum, size_t *len); +++long long int _libga68_posixfsize (int fd); +++int _libga68_posixfopen (const uint32_t *pathname, size_t len, size_t stride, +++ unsigned int flags); +++int _libga68_posixcreat (uint32_t *pathname, size_t len, size_t stride, uint32_t mode); +++int _libga68_posixclose (int fd); +++int _libga68_posixargc (void); +++uint32_t *_libga68_posixargv (int n, size_t *len); +++void _libga68_posixgetenv (uint32_t *s, size_t len, size_t stride, +++ uint32_t **r, size_t *rlen); +++void _libga68_posixputs (uint32_t *s, size_t len, size_t stride); +++uint32_t _libga68_posixputchar (uint32_t c); +++uint32_t _libga68_posixfputc (int fd, uint32_t c); +++int _libga68_posixfputs (int fd, uint32_t *s, size_t len, size_t stride); +++ +++uint32_t _libga68_posixgetchar (void); +++uint32_t _libga68_posixfgetc (int fd); +++uint32_t *_libga68_posixfgets (int fd, int nchars, size_t *len); +++uint32_t *_libga68_posixgets (int nchars, size_t *len); +++ +++int _libga68_posixfconnect (uint32_t *str, size_t len, size_t stride, +++ int port); +++long long int _libga68_posixlseek (int fd, long long int offset, int whence); +++ +++/* ga68-unistr.c */ +++ +++int _libga68_u32_cmp (const uint32_t *s1, size_t stride1, +++ const uint32_t *s2, size_t stride2, +++ size_t n); +++int _libga68_u32_cmp2 (const uint32_t *s1, size_t n1, size_t stride1, +++ const uint32_t *s2, size_t n2, size_t stride2); +++int _libga68_u8_uctomb (uint8_t *s, uint32_t uc, ptrdiff_t n); +++int _libga68_u8_mbtouc (uint32_t *puc, const uint8_t *s, size_t n); +++uint8_t *_libga68_u32_to_u8 (const uint32_t *s, size_t n, size_t stride, +++ uint8_t *resultbuf, size_t *lengthp); +++uint32_t *_libga68_u8_to_u32 (const uint8_t *s, size_t n, +++ uint32_t *resultbuf, size_t *lengthp); +++ +++/* libga68.c */ +++ +++extern int _libga68_argc; +++extern char **_libga68_argv; +++ +++void _libga68_set_exit_status (int status); +++ +++#endif /* ! GA68_H */ ++--- /dev/null +++++ b/src/libga68/libga68.c ++@@ -0,0 +1,52 @@ +++/* GNU Algol Compiler run-time. +++ Copyright (C) 2025 Jose E. Marchesi. +++ +++ GCC is free software; you can redistribute it and/or modify it under the +++ terms of the GNU General Public License as published by the Free Software +++ Foundation; either version 3, or (at your option) any later version. +++ +++ GCC is distributed in the hope that it will be useful, but WITHOUT ANY +++ WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS +++ FOR A PARTICULAR PURPOSE. See the GNU General Public License for more +++ details. +++ +++ Under Section 7 of GPL version 3, you are granted additional permissions +++ described in the GCC Runtime Library Exception, version 3.1, as published by +++ the Free Software Foundation. +++ +++ You should have received a copy of the GNU General Public License and a copy +++ of the GCC Runtime Library Exception along with this program; see the files +++ COPYING3 and COPYING.RUNTIME respectively. If not, see +++ . */ +++ +++#include "ga68.h" +++ +++/* argc and argv are preserved in the following objects. */ +++ +++int _libga68_argc; +++char **_libga68_argv; +++ +++/* Exit status of the program reported to the OS upon exit. */ +++ +++static int exit_status; +++ +++void +++_libga68_set_exit_status (int status) +++{ +++ exit_status = status; +++} +++ +++/* Entry point for Algol 68 programs. */ +++ +++void __algol68_main (void); +++ +++int +++main (int argc, char **argv) +++{ +++ _libga68_argc = argc; +++ _libga68_argv = argv; +++ +++ _libga68_init_heap (); +++ __algol68_main (); +++ return exit_status; +++} ++--- /dev/null +++++ b/src/libga68/libga68.spec.in ++@@ -0,0 +1,11 @@ +++# +++# This spec file is read by ga68 when linking. +++# It is used to specify the libraries we need to link in, in the right +++# order. +++# +++ +++%rename link linkorig_ga68_renamed +++*link: %(linkorig_ga68_renamed) +++ +++%rename lib liborig_ga68_renamed +++*lib: %{noga68lib: ; :@SPEC_LIBGA68_DEPS@} %(liborig_ga68_renamed) ++--- a/src/libiberty/simple-object-mach-o.c +++++ b/src/libiberty/simple-object-mach-o.c ++@@ -669,12 +669,15 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset, ++ } ++ } ++ +++ memset (namebuf, 0, sizeof (namebuf)); +++ /* Copy the section name so we can append a null to make it into a +++ c-string (Mach-o section names are not terminated). */ +++ memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN); +++ namebuf[MACH_O_NAME_LEN] = '\0'; +++ name = &namebuf[0]; +++ /* Maybe override this if we have long section name extension. */ ++ if ((gnu_sections_found & SOMO_LONGN_PRESENT) != 0) ++ { ++- memcpy (namebuf, sechdr + sectname_offset, MACH_O_NAME_LEN); ++- namebuf[MACH_O_NAME_LEN] = '\0'; ++- ++- name = &namebuf[0]; ++ if (strtab != NULL && name[0] == '_' && name[1] == '_') ++ { ++ unsigned long stringoffset; ++@@ -696,19 +699,6 @@ simple_object_mach_o_segment (simple_object_read *sobj, off_t offset, ++ } ++ } ++ } ++- else ++- { ++- /* Otherwise, make a name like __segment,__section as per the ++- convention in mach-o asm. */ ++- name = &namebuf[0]; ++- memcpy (namebuf, (char *) sechdr + segname_offset, MACH_O_NAME_LEN); ++- namebuf[MACH_O_NAME_LEN] = '\0'; ++- l = strlen (namebuf); ++- namebuf[l] = ','; ++- memcpy (namebuf + l + 1, (char *) sechdr + sectname_offset, ++- MACH_O_NAME_LEN); ++- namebuf[l + 1 + MACH_O_NAME_LEN] = '\0'; ++- } ++ ++ simple_object_mach_o_section_info (omr->is_big_endian, is_32, sechdr, ++ &secoffset, &secsize); diff --cc debian/patches/alpha-ieee-doc.diff index 0000000,0000000..173bbec new file mode 100644 --- /dev/null +++ b/debian/patches/alpha-ieee-doc.diff @@@ -1,0 -1,0 +1,24 @@@ ++# DP: #212912 ++# DP: on alpha-linux, make -mieee default and add -mieee-disable switch ++# DP: to turn default off (doc patch) ++ ++--- ++ gcc/doc/invoke.texi | 7 +++++++ ++ 1 files changed, 7 insertions(+), 0 deletions(-) ++ ++--- a/src/gcc/doc/invoke.texi +++++ b/src/gcc/doc/invoke.texi ++@@ -26304,6 +26304,13 @@ able to correctly support denormalized n ++ values such as not-a-number and plus/minus infinity. Other Alpha ++ compilers call this option @option{-ieee_with_no_inexact}. ++ +++DEBIAN SPECIFIC: This option is on by default for alpha-linux-gnu, unless +++@option{-ffinite-math-only} (which is part of the @option{-ffast-math} +++set) is specified, because the software functions in the GNU libc math +++libraries generate denormalized numbers, NaNs, and infs (all of which +++will cause a programs to SIGFPE when it attempts to use the results without +++@option{-mieee}). +++ ++ @opindex mieee-with-inexact ++ @item -mieee-with-inexact ++ This is like @option{-mieee} except the generated code also maintains diff --cc debian/patches/alpha-ieee.diff index 0000000,0000000..f80ffa3 new file mode 100644 --- /dev/null +++ b/debian/patches/alpha-ieee.diff @@@ -1,0 -1,0 +1,17 @@@ ++# DP: #212912 ++# DP: on alpha-linux, make -mieee default and add -mieee-disable switch ++# DP: to turn default off ++ ++--- a/src/gcc/config/alpha/alpha.cc +++++ b/src/gcc/config/alpha/alpha.cc ++@@ -384,6 +384,10 @@ alpha_option_override (void) ++ int line_size = 0, l1_size = 0, l2_size = 0; ++ int i; ++ +++ /* If not -ffinite-math-only, enable -mieee*/ +++ if (!flag_finite_math_only) +++ target_flags |= MASK_IEEE|MASK_IEEE_CONFORMANT; +++ ++ #ifdef SUBTARGET_OVERRIDE_OPTIONS ++ SUBTARGET_OVERRIDE_OPTIONS; ++ #endif diff --cc debian/patches/alpha-no-ev4-directive.diff index 0000000,0000000..deaa650 new file mode 100644 --- /dev/null +++ b/debian/patches/alpha-no-ev4-directive.diff @@@ -1,0 -1,0 +1,30 @@@ ++# DP: never emit .ev4 directive. ++ ++--- ++ gcc/config/alpha/alpha.c | 7 +++---- ++ 1 files changed, 3 insertions(+), 4 deletions(-) ++ ++--- a/src/gcc/config/alpha/alpha.cc +++++ b/src/gcc/config/alpha/alpha.cc ++@@ -10181,7 +10181,7 @@ alpha_file_start (void) ++ fputs ("\t.set nomacro\n", asm_out_file); ++ if (TARGET_SUPPORT_ARCH | TARGET_BWX | TARGET_MAX | TARGET_FIX | TARGET_CIX) ++ { ++- const char *arch; +++ const char *arch = NULL; ++ ++ if (alpha_cpu == PROCESSOR_EV6 || TARGET_FIX || TARGET_CIX) ++ arch = "ev6"; ++@@ -10191,10 +10191,9 @@ alpha_file_start (void) ++ arch = "ev56"; ++ else if (alpha_cpu == PROCESSOR_EV5) ++ arch = "ev5"; ++- else ++- arch = "ev4"; ++ ++- fprintf (asm_out_file, "\t.arch %s\n", arch); +++ if (arch) +++ fprintf (asm_out_file, "\t.arch %s\n", arch); ++ } ++ } ++ diff --cc debian/patches/arc-stddef.diff index 0000000,0000000..af330f4 new file mode 100644 --- /dev/null +++ b/debian/patches/arc-stddef.diff @@@ -1,0 -1,0 +1,29 @@@ ++--- a/src/gcc/config/arc/arc-arch.h +++++ b/src/gcc/config/arc/arc-arch.h ++@@ -22,6 +22,8 @@ along with GCC; see the file COPYING3. ++ #ifndef GCC_ARC_ARCH_H ++ #define GCC_ARC_ARCH_H ++ +++#include +++ ++ #ifndef IN_LIBGCC2 ++ /* Architecture selection types. */ ++ ++@@ -116,7 +118,7 @@ typedef struct ++ ++ } arc_cpu_t; ++ ++-const arc_arch_t arc_arch_types[] = +++static const arc_arch_t arc_arch_types[] = ++ { ++ {"none", BASE_ARCH_NONE, 0, 0}, ++ #define ARC_ARCH(NAME, ARCH, FLAGS, DFLAGS) \ ++@@ -126,7 +128,7 @@ const arc_arch_t arc_arch_types[] = ++ {NULL, BASE_ARCH_END, 0, 0} ++ }; ++ ++-const arc_cpu_t arc_cpu_types[] = +++static const arc_cpu_t arc_cpu_types[] = ++ { ++ {"none", NULL, PROCESSOR_NONE, 0, HAS_NONE, ARC_TUNE_NONE}, ++ #define ARC_CPU(NAME, ARCH, FLAGS, EXTRA, TUNE) \ diff --cc debian/patches/arm-multilib-defaults.diff index 0000000,0000000..88b0279 new file mode 100644 --- /dev/null +++ b/debian/patches/arm-multilib-defaults.diff @@@ -1,0 -1,0 +1,88 @@@ ++# DP: Set MULTILIB_DEFAULTS for ARM multilib builds ++ ++--- a/src/gcc/config.gcc +++++ b/src/gcc/config.gcc ++@@ -4342,10 +4342,18 @@ case "${target}" in ++ done ++ ++ case "$with_float" in ++- "" \ ++- | soft | hard | softfp) +++ "") ++ # OK ++ ;; +++ soft) +++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=0" +++ ;; +++ softfp) +++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=1" +++ ;; +++ hard) +++ tm_defines="${tm_defines} TARGET_CONFIGURED_FLOAT_ABI=2" +++ ;; ++ *) ++ echo "Unknown floating point type used in --with-float=$with_float" 1>&2 ++ exit 1 ++@@ -4380,6 +4388,9 @@ case "${target}" in ++ "" \ ++ | arm | thumb ) ++ #OK +++ if test "$with_mode" = thumb; then +++ tm_defines="${tm_defines} TARGET_CONFIGURED_THUMB_MODE=1" +++ fi ++ ;; ++ *) ++ echo "Unknown mode used in --with-mode=$with_mode" ++--- a/src/gcc/config/arm/linux-eabi.h +++++ b/src/gcc/config/arm/linux-eabi.h ++@@ -37,7 +37,21 @@ ++ target hardware. If you override this to use the hard-float ABI then ++ change the setting of GLIBC_DYNAMIC_LINKER_DEFAULT as well. */ ++ #undef TARGET_DEFAULT_FLOAT_ABI +++#ifdef TARGET_CONFIGURED_FLOAT_ABI +++#if TARGET_CONFIGURED_FLOAT_ABI == 2 +++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_HARD +++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=hard" +++#elif TARGET_CONFIGURED_FLOAT_ABI == 1 +++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFTFP +++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=softfp" +++#else +++#define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT +++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" +++#endif +++#else ++ #define TARGET_DEFAULT_FLOAT_ABI ARM_FLOAT_ABI_SOFT +++#define MULTILIB_DEFAULT_FLOAT_ABI "mfloat-abi=soft" +++#endif ++ ++ /* We default to the "aapcs-linux" ABI so that enums are int-sized by ++ default. */ ++@@ -91,6 +105,28 @@ ++ #define MUSL_DYNAMIC_LINKER \ ++ "/lib/ld-musl-arm" MUSL_DYNAMIC_LINKER_E "%{mfloat-abi=hard:hf}%{mfdpic:-fdpic}.so.1" ++ +++/* Set the multilib defaults according the configuration, needed to +++ let gcc -print-multi-dir do the right thing. */ +++ +++#if TARGET_BIG_ENDIAN_DEFAULT +++#define MULTILIB_DEFAULT_ENDIAN "mbig-endian" +++#else +++#define MULTILIB_DEFAULT_ENDIAN "mlittle-endian" +++#endif +++ +++#ifndef TARGET_CONFIGURED_THUMB_MODE +++#define MULTILIB_DEFAULT_MODE "marm" +++#elif TARGET_CONFIGURED_THUMB_MODE == 1 +++#define MULTILIB_DEFAULT_MODE "mthumb" +++#else +++#define MULTILIB_DEFAULT_MODE "marm" +++#endif +++ +++#undef MULTILIB_DEFAULTS +++#define MULTILIB_DEFAULTS \ +++ { MULTILIB_DEFAULT_MODE, MULTILIB_DEFAULT_ENDIAN, \ +++ MULTILIB_DEFAULT_FLOAT_ABI, "mno-thumb-interwork" } +++ ++ /* At this point, bpabi.h will have clobbered LINK_SPEC. We want to ++ use the GNU/Linux version, not the generic BPABI version. */ ++ #undef LINK_SPEC diff --cc debian/patches/arm-multilib-soft-float.diff index 0000000,0000000..18f51fb new file mode 100644 --- /dev/null +++ b/debian/patches/arm-multilib-soft-float.diff @@@ -1,0 -1,0 +1,26 @@@ ++--- a/src/gcc/config/arm/t-linux-eabi +++++ b/src/gcc/config/arm/t-linux-eabi ++@@ -24,6 +24,23 @@ ++ MULTILIB_OPTIONS = ++ MULTILIB_DIRNAMES = ++ +++ifneq (,$(findstring MULTIARCH_DEFAULTS,$(tm_defines))) +++ifneq (,$(findstring __arm_linux_gnueabi__,$(tm_defines))) +++ MULTILIB_OPTIONS = mfloat-abi=softfp/mfloat-abi=hard/mfloat-abi=soft +++ MULTILIB_DIRNAMES = . hf soft-float +++ MULTILIB_EXCEPTIONS = +++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float +++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabi ../../lib/arm-linux-gnueabihf soft-float +++endif +++ifneq (,$(findstring __arm_linux_gnueabihf__,$(tm_defines))) +++ MULTILIB_OPTIONS = mfloat-abi=hard/mfloat-abi=softfp/mfloat-abi=soft +++ MULTILIB_DIRNAMES = . sf soft-float +++ MULTILIB_EXCEPTIONS = +++ MULTILIB_MATCHES = mfloat-abi?hard=mhard-float mfloat-abi?soft=msoft-float +++ MULTILIB_OSDIRNAMES = ../../lib/arm-linux-gnueabihf ../../lib/arm-linux-gnueabi soft-float +++endif +++endif +++ ++ #MULTILIB_OPTIONS += mcpu=fa606te/mcpu=fa626te/mcpu=fmp626/mcpu=fa726te ++ #MULTILIB_DIRNAMES += fa606te fa626te fmp626 fa726te ++ #MULTILIB_EXCEPTIONS += *mthumb/*mcpu=fa606te *mthumb/*mcpu=fa626te *mthumb/*mcpu=fmp626 *mthumb/*mcpu=fa726te* diff --cc debian/patches/bootstrap-no-unneeded-libs.diff index 0000000,0000000..4939110 new file mode 100644 --- /dev/null +++ b/debian/patches/bootstrap-no-unneeded-libs.diff @@@ -1,0 -1,0 +1,30 @@@ ++# DP: For bootstrap builds, don't build unneeded libstdc++ things ++# DP: (debug library, PCH headers). ++ ++# Please read ada-changes-in-autogen-output.diff about src/Makefile.[def|tpl]. ++ ++--- a/src/Makefile.tpl +++++ b/src/Makefile.tpl ++@@ -1060,7 +1060,9 @@ ++ --target=[+target_alias+] $${srcdiroption} [+ IF prev +]\ ++ --with-build-libsubdir=$(HOST_SUBDIR) [+ ENDIF prev +]\ ++ $(STAGE[+id+]_CONFIGURE_FLAGS)[+ IF extra_configure_flags +] \ ++- [+extra_configure_flags+][+ ENDIF extra_configure_flags +] +++ [+extra_configure_flags+][+ ENDIF extra_configure_flags +] \ +++ [+ IF bootstrap_configure_flags +][+bootstrap_configure_flags+] \ +++ [+ ENDIF bootstrap_configure_flags +] ++ @endif [+prefix+][+module+]-bootstrap ++ [+ ENDFOR bootstrap_stage +] ++ [+ ENDIF bootstrap +] ++--- a/src/Makefile.def +++++ b/src/Makefile.def ++@@ -117,7 +117,8 @@ ++ target_modules = { module= libstdc++-v3; ++ bootstrap=true; ++ lib_path=src/.libs; ++- raw_cxx=true; }; +++ raw_cxx=true; +++ bootstrap_configure_flags='--disable-libstdcxx-debug --disable-libstdcxx-pch'; }; ++ target_modules = { module= libmudflap; lib_path=.libs; }; ++ target_modules = { module= libsanitizer; lib_path=.libs; }; ++ target_modules = { module= libssp; lib_path=.libs; }; diff --cc debian/patches/canonical-cpppath.diff index 0000000,0000000..39969b7 new file mode 100644 --- /dev/null +++ b/debian/patches/canonical-cpppath.diff @@@ -1,0 -1,0 +1,34 @@@ ++# DP: Don't use any relative path names for the standard include paths. ++ ++--- a/src/gcc/incpath.cc +++++ b/src/gcc/incpath.cc ++@@ -177,6 +177,14 @@ add_standard_paths (const char *sysroot, ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, NULL); ++ } +++ { +++ char *rp = lrealpath (str); +++ if (rp) +++ { +++ free (str); +++ str = rp; +++ } +++ } ++ add_path (str, INC_SYSTEM, p->cxx_aware, false); ++ } ++ } ++@@ -252,6 +260,14 @@ add_standard_paths (const char *sysroot, ++ else ++ str = reconcat (str, str, dir_separator_str, imultiarch, NULL); ++ } +++ { +++ char *rp = lrealpath (str); +++ if (rp) +++ { +++ free (str); +++ str = rp; +++ } +++ } ++ ++ add_path (str, INC_SYSTEM, p->cxx_aware, false); ++ } diff --cc debian/patches/config-ml.diff index 0000000,0000000..7fcc7e7 new file mode 100644 --- /dev/null +++ b/debian/patches/config-ml.diff @@@ -1,0 -1,0 +1,52 @@@ ++# DP: - Disable some biarch libraries for biarch builds. ++# DP: - Fix multilib builds on kernels which don't support all multilibs. ++ ++--- a/src/config-ml.in +++++ b/src/config-ml.in ++@@ -488,6 +488,25 @@ powerpc*-*-* | rs6000*-*-*) ++ ;; ++ esac ++ +++if [ -z "$biarch_multidir_names" ]; then +++ biarch_multidir_names="libiberty libstdc++-v3 libgfortran libmudflap libssp libffi libobjc libgomp" +++ echo "WARNING: biarch_multidir_names is unset. Use default value:" +++ echo " $biarch_multidir_names" +++fi +++ml_srcbase=`basename $ml_realsrcdir` +++old_multidirs="${multidirs}" +++multidirs="" +++for x in ${old_multidirs}; do +++ case " $x " in +++ " 32 "|" n32 "|" x32 "|" 64 "|" hf "|" sf "|" m4-nofpu ") +++ case "$biarch_multidir_names" in +++ *"$ml_srcbase"*) multidirs="${multidirs} ${x}" ;; +++ esac +++ ;; +++ *) multidirs="${multidirs} ${x}" ;; +++ esac +++done +++ ++ # Remove extraneous blanks from multidirs. ++ # Tests like `if [ -n "$multidirs" ]' require it. ++ multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` ++@@ -903,9 +922,19 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n ++ fi ++ fi ++ +++ ml_configure_args= +++ for arg in ${ac_configure_args} +++ do +++ case $arg in +++ *CC=*) ml_configure_args=${ml_config_env} ;; +++ *CXX=*) ml_configure_args=${ml_config_env} ;; +++ *) ;; +++ esac +++ done +++ ++ if eval ${ml_config_env} ${ml_config_shell} ${ml_recprog} \ ++ --with-multisubdir=${ml_dir} --with-multisrctop=${multisrctop} \ ++- "${ac_configure_args}" ${ml_config_env} ${ml_srcdiroption} ; then +++ "${ac_configure_args}" ${ml_configure_args} ${ml_config_env} ${ml_srcdiroption} ; then ++ true ++ else ++ exit 1 diff --cc debian/patches/cross-biarch.diff index 0000000,0000000..2453c5c new file mode 100644 --- /dev/null +++ b/debian/patches/cross-biarch.diff @@@ -1,0 -1,0 +1,74 @@@ ++# DP: Fix the location of target's libs in cross-build for biarch ++ ++--- a/src/config-ml.in +++++ b/src/config-ml.in ++@@ -799,6 +799,15 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n ++ GOC_=$GOC' ' ++ GDC_=$GDC' ' ++ else +++ if [ "${ml_dir}" = "." ]; then +++ FILTER_="s!X\\(.*\\)!\\1!p" +++ elif [ "${ml_dir}" = "n32" ]; then # mips n32 -> lib32 +++ FILTER_="s!X\\(.*\\)/!\\132/!p" +++ elif [ "${ml_dir}" = "32" ] && [ "$(echo ${host} |grep '^mips')" ]; then # mips o32 -> libo32 +++ FILTER_="s!X\\(.*\\)/!\\1o32/!p" +++ else +++ FILTER_="s!X\\(.*\\)/!\\1${ml_dir}/!p" +++ fi ++ # Create a regular expression that matches any string as long ++ # as ML_POPDIR. ++ popdir_rx=`echo "${ML_POPDIR}" | sed 's,.,.,g'` ++@@ -808,6 +817,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n ++ case $arg in ++ -[BIL]"${ML_POPDIR}"/*) ++ CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\1/p"`' ' ;; +++ -B*/lib/) +++ CC_="${CC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; ++ "${ML_POPDIR}"/*) ++ CC_="${CC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++@@ -822,6 +833,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n ++ case $arg in ++ -[BIL]"${ML_POPDIR}"/*) ++ CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; +++ -B*/lib/) +++ CXX_="${CXX_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; ++ "${ML_POPDIR}"/*) ++ CXX_="${CXX_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++@@ -836,6 +849,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n ++ case $arg in ++ -[BIL]"${ML_POPDIR}"/*) ++ F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; +++ -B*/lib/) +++ F77_="${F77_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; ++ "${ML_POPDIR}"/*) ++ F77_="${F77_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++@@ -850,6 +865,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n ++ case $arg in ++ -[BIL]"${ML_POPDIR}"/*) ++ GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; +++ -B*/lib/) +++ GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; ++ "${ML_POPDIR}"/*) ++ GFORTRAN_="${GFORTRAN_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++@@ -864,6 +881,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n ++ case $arg in ++ -[BIL]"${ML_POPDIR}"/*) ++ GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; +++ -B*/lib/) +++ GOC_="${GOC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; ++ "${ML_POPDIR}"/*) ++ GOC_="${GOC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) ++@@ -878,6 +897,8 @@ if [ -n "${multidirs}" ] && [ -z "${ml_n ++ case $arg in ++ -[BIL]"${ML_POPDIR}"/*) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(-[BIL]${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X-[BIL]${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; +++ -B*/lib/) +++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "$FILTER_"`' ' ;; ++ "${ML_POPDIR}"/*) ++ GDC_="${GDC_}"`echo "X${arg}" | sed -n "s/X\\(${popdir_rx}\\).*/\\1/p"`/${ml_dir}`echo "X${arg}" | sed -n "s/X${popdir_rx}\\(.*\\)/\\1/p"`' ' ;; ++ -B*/lib/) diff --cc debian/patches/cross-fixes.diff index 0000000,0000000..8844eaa new file mode 100644 --- /dev/null +++ b/debian/patches/cross-fixes.diff @@@ -1,0 -1,0 +1,57 @@@ ++# DP: Fix the linker error when creating an xcc for ia64 ++ ++--- ++ gcc/config/ia64/fde-glibc.c | 3 +++ ++ gcc/config/ia64/unwind-ia64.c | 3 ++- ++ gcc/unwind-compat.c | 2 ++ ++ gcc/unwind-generic.h | 2 ++ ++ 6 files changed, 14 insertions(+), 1 deletions(-) ++ ++--- a/src/libgcc/config/ia64/unwind-ia64.c +++++ b/src/libgcc/config/ia64/unwind-ia64.c ++@@ -26,6 +26,7 @@ ++ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ . */ ++ +++#ifndef inhibit_libc ++ #include "tconfig.h" ++ #include "tsystem.h" ++ #include "coretypes.h" ++@@ -2467,3 +2468,4 @@ alias (_Unwind_SetIP); ++ #endif ++ ++ #endif +++#endif ++--- a/src/libgcc/unwind-compat.c +++++ b/src/libgcc/unwind-compat.c ++@@ -23,6 +23,7 @@ ++ . */ ++ ++ #if defined (USE_GAS_SYMVER) && defined (USE_LIBUNWIND_EXCEPTIONS) +++#ifndef inhibit_libc ++ #include "tconfig.h" ++ #include "tsystem.h" ++ #include "unwind.h" ++@@ -207,3 +208,4 @@ _Unwind_SetIP (struct _Unwind_Context *c ++ } ++ symver (_Unwind_SetIP, GCC_3.0); ++ #endif +++#endif ++--- a/src/libgcc/unwind-generic.h +++++ b/src/libgcc/unwind-generic.h ++@@ -221,6 +221,7 @@ _Unwind_SjLj_Resume_or_Rethrow (struct _ ++ compatible with the standard ABI for IA-64, we inline these. */ ++ ++ #ifdef __ia64__ +++#ifndef inhibit_libc ++ static inline _Unwind_Ptr ++ _Unwind_GetDataRelBase (struct _Unwind_Context *_C) ++ { ++@@ -237,6 +238,7 @@ _Unwind_GetTextRelBase (struct _Unwind_C ++ ++ /* @@@ Retrieve the Backing Store Pointer of the given context. */ ++ extern _Unwind_Word _Unwind_GetBSP (struct _Unwind_Context *); +++#endif /* inhibit_libc */ ++ #else ++ extern _Unwind_Ptr _Unwind_GetDataRelBase (struct _Unwind_Context *); ++ extern _Unwind_Ptr _Unwind_GetTextRelBase (struct _Unwind_Context *); diff --cc debian/patches/cross-install-location.diff index 0000000,0000000..7de7572 new file mode 100644 --- /dev/null +++ b/debian/patches/cross-install-location.diff @@@ -1,0 -1,0 +1,497 @@@ ++--- a/src/fixincludes/Makefile.in +++++ b/src/fixincludes/Makefile.in ++@@ -52,9 +52,9 @@ target_noncanonical:=@target_noncanonica ++ gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) ++ # Directory in which the compiler finds executables ++-libexecsubdir = $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) +++libexecsubdir = $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) ++ # Where our executable files go ++ itoolsdir = $(libexecsubdir)/install-tools ++ # Where our data files go ++--- a/src/libgfortran/Makefile.in +++++ b/src/libgfortran/Makefile.in ++@@ -967,7 +967,7 @@ gcc_version := $(shell @get_gcc_base_ver ++ extra_darwin_ldflags_libgfortran = @extra_ldflags_libgfortran@ \ ++ $(am__append_1) ++ gfor_c_HEADERS = ISO_Fortran_binding.h ++-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++gfor_cdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ ++ $(lt_host_flags) ++ ++@@ -982,12 +982,12 @@ libgfortran_la_LDFLAGS = -version-info ` ++ ++ libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) ++ cafexeclib_LTLIBRARIES = libcaf_single.la ++-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) +++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++ libcaf_single_la_SOURCES = caf/single.c ++ libcaf_single_la_LDFLAGS = -static ++ libcaf_single_la_DEPENDENCIES = caf/libcaf.h ++ libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS) ++-@IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +++@IEEE_SUPPORT_TRUE@fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++ @IEEE_SUPPORT_TRUE@nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod ++ AM_CPPFLAGS = -iquote$(srcdir)/io -I$(srcdir)/$(MULTISRCTOP)../gcc \ ++ -I$(srcdir)/$(MULTISRCTOP)../gcc/config $(LIBQUADINCLUDE) \ ++--- a/src/libgfortran/Makefile.am +++++ b/src/libgfortran/Makefile.am ++@@ -43,7 +43,7 @@ extra_darwin_ldflags_libgfortran += -Wl, ++ endif ++ ++ gfor_c_HEADERS = ISO_Fortran_binding.h ++-gfor_cdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++gfor_cdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ ++ LTLDFLAGS = $(shell $(SHELL) $(top_srcdir)/../libtool-ldflags $(LDFLAGS)) \ ++ $(lt_host_flags) ++@@ -59,14 +59,14 @@ libgfortran_la_LDFLAGS = -version-info ` ++ libgfortran_la_DEPENDENCIES = $(version_dep) libgfortran.spec $(LIBQUADLIB_DEP) ++ ++ cafexeclib_LTLIBRARIES = libcaf_single.la ++-cafexeclibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) +++cafexeclibdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++ libcaf_single_la_SOURCES = caf/single.c ++ libcaf_single_la_LDFLAGS = -static ++ libcaf_single_la_DEPENDENCIES = caf/libcaf.h ++ libcaf_single_la_LINK = $(LINK) $(libcaf_single_la_LDFLAGS) ++ ++ if IEEE_SUPPORT ++-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++ nodist_finclude_HEADERS = ieee_arithmetic.mod ieee_exceptions.mod ieee_features.mod ++ endif ++ ++--- a/src/lto-plugin/Makefile.in +++++ b/src/lto-plugin/Makefile.in ++@@ -343,7 +343,7 @@ with_libiberty = @with_libiberty@ ++ ACLOCAL_AMFLAGS = -I .. -I ../config ++ AUTOMAKE_OPTIONS = no-dependencies ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) +++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) ++ AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) ++ AM_CFLAGS = @ac_lto_plugin_warn_cflags@ $(CET_HOST_FLAGS) -DBASE_VERSION='"$(gcc_version)"' ++ AM_LDFLAGS = @ac_lto_plugin_ldflags@ @ac_lto_plugin_extra_ldflags@ ++--- a/src/lto-plugin/Makefile.am +++++ b/src/lto-plugin/Makefile.am ++@@ -5,7 +5,7 @@ AUTOMAKE_OPTIONS = no-dependencies ++ ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ target_noncanonical := @target_noncanonical@ ++-libexecsubdir := $(libexecdir)/gcc/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) +++libexecsubdir := $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(gcc_version)$(accel_dir_suffix) ++ ++ AM_CPPFLAGS = -I$(top_srcdir)/../include $(DEFS) ++ AM_CFLAGS = @ac_lto_plugin_warn_cflags@ $(CET_HOST_FLAGS) -DBASE_VERSION='"$(gcc_version)"' ++--- a/src/libitm/Makefile.in +++++ b/src/libitm/Makefile.in ++@@ -458,7 +458,7 @@ SUBDIRS = testsuite ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ abi_version = -fabi-version=4 ++ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) ++-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ AM_CPPFLAGS = $(addprefix -I, $(search_path)) ++ AM_CFLAGS = $(XCFLAGS) ++ AM_CXXFLAGS = $(XCFLAGS) -std=gnu++0x -funwind-tables -fno-exceptions \ ++--- a/src/libitm/Makefile.am +++++ b/src/libitm/Makefile.am ++@@ -12,7 +12,7 @@ abi_version = -fabi-version=4 ++ config_path = @config_path@ ++ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) ++ ++-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ ++ vpath % $(strip $(search_path)) ++ ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -4970,7 +4970,7 @@ process_command (unsigned int decoded_op ++ GCC_EXEC_PREFIX is typically a directory name with a trailing ++ / (which is ignored by make_relative_prefix), so append a ++ program name. */ ++- char *tmp_prefix = concat (gcc_exec_prefix, "gcc", NULL); +++ char *tmp_prefix = concat (gcc_exec_prefix, "gcc-cross", NULL); ++ gcc_libexec_prefix = get_relative_prefix (tmp_prefix, ++ standard_exec_prefix, ++ standard_libexec_prefix); ++@@ -4996,15 +4996,15 @@ process_command (unsigned int decoded_op ++ { ++ int len = strlen (gcc_exec_prefix); ++ ++- if (len > (int) sizeof ("/lib/gcc/") - 1 +++ if (len > (int) sizeof ("/lib/gcc-cross/") - 1 ++ && (IS_DIR_SEPARATOR (gcc_exec_prefix[len-1]))) ++ { ++- temp = gcc_exec_prefix + len - sizeof ("/lib/gcc/") + 1; +++ temp = gcc_exec_prefix + len - sizeof ("/lib/gcc-cross/") + 1; ++ if (IS_DIR_SEPARATOR (*temp) ++ && filename_ncmp (temp + 1, "lib", 3) == 0 ++ && IS_DIR_SEPARATOR (temp[4]) ++- && filename_ncmp (temp + 5, "gcc", 3) == 0) ++- len -= sizeof ("/lib/gcc/") - 1; +++ && filename_ncmp (temp + 5, "gcc-cross", 3) == 0) +++ len -= sizeof ("/lib/gcc-cross/") - 1; ++ } ++ ++ set_std_prefix (gcc_exec_prefix, len); ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -679,9 +679,9 @@ libexecdir = @libexecdir@ ++ # -------- ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) +++libsubdir = $(libdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++ # Directory in which the compiler finds executables ++-libexecsubdir = $(libexecdir)/gcc/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) +++libexecsubdir = $(libexecdir)/gcc-cross/$(real_target_noncanonical)/$(version)$(accel_dir_suffix) ++ # Directory in which all plugin resources are installed ++ plugin_resourcesdir = $(libsubdir)/plugin ++ # Directory in which plugin headers are installed ++@@ -2588,8 +2588,8 @@ default-rust.o: config/default-rust.cc ++ ++ DRIVER_DEFINES = \ ++ -DSTANDARD_STARTFILE_PREFIX=\"$(unlibsubdir)/\" \ ++- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ ++- -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc/\" \ +++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ +++ -DSTANDARD_LIBEXEC_PREFIX=\"$(libexecdir)/gcc-cross/\" \ ++ -DDEFAULT_TARGET_VERSION=\"$(version)\" \ ++ -DDEFAULT_REAL_TARGET_MACHINE=\"$(real_target_noncanonical)\" \ ++ -DDEFAULT_TARGET_MACHINE=\"$(target_noncanonical)\" \ ++@@ -3372,7 +3372,7 @@ PREPROCESSOR_DEFINES = \ ++ -DTOOL_INCLUDE_DIR=\"$(gcc_tooldir)/include\" \ ++ -DNATIVE_SYSTEM_HEADER_DIR=\"$(NATIVE_SYSTEM_HEADER_DIR)\" \ ++ -DPREFIX=\"$(prefix)/\" \ ++- -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc/\" \ +++ -DSTANDARD_EXEC_PREFIX=\"$(libdir)/gcc-cross/\" \ ++ @TARGET_SYSTEM_ROOT_DEFINE@ ++ ++ CFLAGS-cppbuiltin.o += $(PREPROCESSOR_DEFINES) -DBASEVER=$(BASEVER_s) ++--- a/src/libssp/Makefile.in +++++ b/src/libssp/Makefile.in ++@@ -366,7 +366,7 @@ gcc_version := $(shell @get_gcc_base_ver ++ @LIBSSP_USE_SYMVER_SUN_TRUE@@LIBSSP_USE_SYMVER_TRUE@version_dep = ssp.map-sun ++ AM_CFLAGS = -Wall $(XCFLAGS) ++ toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la ++-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include +++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include ++ nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h ++ libssp_la_SOURCES = \ ++ ssp.c gets-chk.c memcpy-chk.c memmove-chk.c mempcpy-chk.c \ ++--- a/src/libssp/Makefile.am +++++ b/src/libssp/Makefile.am ++@@ -37,7 +37,7 @@ AM_CFLAGS += $(XCFLAGS) ++ toolexeclib_LTLIBRARIES = libssp.la libssp_nonshared.la ++ ++ target_noncanonical = @target_noncanonical@ ++-libsubincludedir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/include +++libsubincludedir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/include ++ nobase_libsubinclude_HEADERS = ssp/ssp.h ssp/string.h ssp/stdio.h ssp/unistd.h ++ ++ libssp_la_SOURCES = \ ++--- a/src/libquadmath/Makefile.in +++++ b/src/libquadmath/Makefile.in ++@@ -472,7 +472,7 @@ AUTOMAKE_OPTIONS = foreign info-in-build ++ ++ @BUILD_LIBQUADMATH_TRUE@libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) ++ @BUILD_LIBQUADMATH_TRUE@nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h ++-@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++@BUILD_LIBQUADMATH_TRUE@libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ @BUILD_LIBQUADMATH_TRUE@libquadmath_la_SOURCES = \ ++ @BUILD_LIBQUADMATH_TRUE@ math/x2y2m1q.c math/acoshq.c math/fmodq.c \ ++ @BUILD_LIBQUADMATH_TRUE@ math/acosq.c math/frexpq.c \ ++--- a/src/libquadmath/Makefile.am +++++ b/src/libquadmath/Makefile.am ++@@ -45,7 +45,7 @@ libquadmath_la_LDFLAGS = -version-info ` ++ libquadmath_la_DEPENDENCIES = $(version_dep) $(libquadmath_la_LIBADD) ++ ++ nodist_libsubinclude_HEADERS = quadmath.h quadmath_weak.h ++-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ ++ libquadmath_la_SOURCES = \ ++ math/x2y2m1q.c math/acoshq.c math/fmodq.c \ ++--- a/src/libobjc/Makefile.in +++++ b/src/libobjc/Makefile.in ++@@ -48,7 +48,7 @@ extra_ldflags_libobjc = @extra_ldflags_l ++ top_builddir = . ++ ++ libdir = $(exec_prefix)/lib ++-libsubdir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) ++ ++ # Multilib support variables. ++ MULTISRCTOP = ++--- a/src/libada/Makefile.in +++++ b/src/libada/Makefile.in ++@@ -70,7 +70,7 @@ GCC_DIR=$(MULTIBUILDTOP)../../$(host_sub ++ ++ target_noncanonical:=@target_noncanonical@ ++ version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++-libsubdir := $(libdir)/gcc/$(target_noncanonical)/$(version)$(MULTISUBDIR) +++libsubdir := $(libdir)/gcc-cross/$(target_noncanonical)/$(version)$(MULTISUBDIR) ++ ADA_RTS_DIR=$(GCC_DIR)/ada/rts$(subst /,_,$(MULTISUBDIR)) ++ ++ # exeext should not be used because it's the *host* exeext. We're building ++--- a/src/libgomp/Makefile.in +++++ b/src/libgomp/Makefile.in ++@@ -517,8 +517,8 @@ gcc_version := $(shell @get_gcc_base_ver ++ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \ ++ $(top_srcdir)/../include ++ ++-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ AM_CPPFLAGS = $(addprefix -I, $(search_path)) ++ AM_CFLAGS = $(XCFLAGS) ++ AM_LDFLAGS = $(XLDFLAGS) $(SECTION_LDFLAGS) $(OPT_LDFLAGS) ++--- a/src/libgomp/Makefile.am +++++ b/src/libgomp/Makefile.am ++@@ -11,8 +11,8 @@ config_path = @config_path@ ++ search_path = $(addprefix $(top_srcdir)/config/, $(config_path)) $(top_srcdir) \ ++ $(top_srcdir)/../include ++ ++-fincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude ++-libsubincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++fincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)$(MULTISUBDIR)/finclude +++libsubincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ ++ vpath % $(strip $(search_path)) ++ ++--- a/src/libgcc/Makefile.in +++++ b/src/libgcc/Makefile.in ++@@ -201,7 +201,7 @@ STRIP = @STRIP@ ++ STRIP_FOR_TARGET = $(STRIP) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(real_host_noncanonical)/$(version)@accel_dir_suffix@ +++libsubdir = $(libdir)/gcc-cross/$(real_host_noncanonical)/$(version)@accel_dir_suffix@ ++ # Used to install the shared libgcc. ++ slibdir = @slibdir@ ++ # Maybe used for DLLs on Windows targets. ++--- a/src/libffi/include/Makefile.am +++++ b/src/libffi/include/Makefile.am ++@@ -8,6 +8,6 @@ EXTRA_DIST=ffi.h.in ++ ++ # Where generated headers like ffitarget.h get installed. ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ ++ toollibffi_HEADERS = ffi.h ffitarget.h ++--- a/src/libffi/include/Makefile.in +++++ b/src/libffi/include/Makefile.in ++@@ -327,7 +327,7 @@ EXTRA_DIST = ffi.h.in ++ ++ # Where generated headers like ffitarget.h get installed. ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++-toollibffidir := $(libdir)/gcc/$(target_alias)/$(gcc_version)/include +++toollibffidir := $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include ++ toollibffi_HEADERS = ffi.h ffitarget.h ++ all: all-am ++ ++--- a/src/libcc1/Makefile.am +++++ b/src/libcc1/Makefile.am ++@@ -40,7 +40,7 @@ libiberty = $(if $(wildcard $(libiberty_ ++ $(Wc)$(libiberty_normal))) ++ libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) ++ ++-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin +++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin ++ cc1libdir = $(libdir)/$(libsuffix) ++ ++ if ENABLE_PLUGIN ++--- a/src/libcc1/Makefile.in +++++ b/src/libcc1/Makefile.in ++@@ -396,7 +396,7 @@ libiberty = $(if $(wildcard $(libiberty_ ++ $(Wc)$(libiberty_normal))) ++ ++ libiberty_dep = $(patsubst $(Wc)%,%,$(libiberty)) ++-plugindir = $(libdir)/gcc/$(target_noncanonical)/$(gcc_version)/plugin +++plugindir = $(libdir)/gcc-cross/$(target_noncanonical)/$(gcc_version)/plugin ++ cc1libdir = $(libdir)/$(libsuffix) ++ @ENABLE_PLUGIN_TRUE@plugin_LTLIBRARIES = libcc1plugin.la libcp1plugin.la ++ @ENABLE_PLUGIN_TRUE@cc1lib_LTLIBRARIES = libcc1.la ++--- a/src/libsanitizer/Makefile.am +++++ b/src/libsanitizer/Makefile.am ++@@ -1,6 +1,6 @@ ++ ACLOCAL_AMFLAGS = -I .. -I ../config ++ ++-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer +++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer ++ ++ nodist_saninclude_HEADERS = ++ ++--- a/src/libsanitizer/Makefile.in +++++ b/src/libsanitizer/Makefile.in ++@@ -362,7 +362,7 @@ top_build_prefix = @top_build_prefix@ ++ top_builddir = @top_builddir@ ++ top_srcdir = @top_srcdir@ ++ ACLOCAL_AMFLAGS = -I .. -I ../config ++-sanincludedir = $(libdir)/gcc/$(target_alias)/$(gcc_version)/include/sanitizer +++sanincludedir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version)/include/sanitizer ++ nodist_saninclude_HEADERS = $(am__append_1) ++ @SANITIZER_SUPPORTED_TRUE@SUBDIRS = sanitizer_common $(am__append_2) \ ++ @SANITIZER_SUPPORTED_TRUE@ $(am__append_3) lsan asan ubsan \ ++--- a/src/libphobos/configure.ac +++++ b/src/libphobos/configure.ac ++@@ -261,6 +261,8 @@ AC_SUBST(SPEC_PHOBOS_DEPS) ++ libtool_VERSION=6:0:0 ++ AC_SUBST(libtool_VERSION) ++ +++# trigger rebuild of the configure file +++ ++ # Set default flags (after DRUNTIME_WERROR!) ++ if test -z "$GDCFLAGS"; then ++ GDCFLAGS="-g -O2" ++--- a/src/libphobos/m4/druntime.m4 +++++ b/src/libphobos/m4/druntime.m4 ++@@ -114,6 +114,7 @@ AC_DEFUN([DRUNTIME_INSTALL_DIRECTORIES], ++ ++ # Default case for install directory for D sources files. ++ gdc_include_dir='$(libdir)/gcc/${target_alias}/${gcc_version}/include/d' +++ gdc_include_dir='${libdir}/gcc-cross/${target_alias}'/${gcc_version}/include/d ++ AC_SUBST(gdc_include_dir) ++ ]) ++ ++--- a/src/gcc/ada/gcc-interface/Makefile.in +++++ b/src/gcc/ada/gcc-interface/Makefile.in ++@@ -933,7 +933,7 @@ toolexeclibdir = $(ADA_RTL_OBJ_DIR) ++ ++ ADA_INCLUDE_DIR = $(libsubdir)/adainclude ++ ADA_RTL_OBJ_DIR = $(libsubdir)/adalib ++-ADA_RTL_DSO_DIR = $(toolexeclibdir) +++ADA_RTL_DSO_DIR = $(subst /gcc/,/gcc-cross/,$(toolexeclibdir)) ++ ++ # Special flags ++ ++--- a/src/c++tools/Makefile.in +++++ b/src/c++tools/Makefile.in ++@@ -21,7 +21,7 @@ bindir := @bindir@ ++ libexecdir := @libexecdir@ ++ target_noncanonical := @target_noncanonical@ ++ gcc_version := $(shell @get_gcc_base_ver@ $(srcdir)/../gcc/BASE-VER) ++-libexecsubdir := $(libexecdir)/gcc/$(target_noncanonical)/$(gcc_version) +++libexecsubdir := $(libexecdir)/gcc-cross/$(target_noncanonical)/$(gcc_version) ++ INSTALL := @INSTALL@ ++ INSTALL_PROGRAM := @INSTALL_PROGRAM@ ++ INSTALL_STRIP_PROGRAM := $(srcdir)/../install-sh -c -s ++--- a/src/libgm2/libm2cor/Makefile.am +++++ b/src/libgm2/libm2cor/Makefile.am ++@@ -27,7 +27,7 @@ MAKEOVERRIDES= ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ # Used to install the shared libgcc. ++ slibdir = @slibdir@ ++ ++--- a/src/libgm2/libm2cor/Makefile.in +++++ b/src/libgm2/libm2cor/Makefile.in ++@@ -400,7 +400,7 @@ MAKEOVERRIDES = ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) ++ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) ++ MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) ++--- a/src/libgm2/libm2iso/Makefile.am +++++ b/src/libgm2/libm2iso/Makefile.am ++@@ -27,7 +27,7 @@ MAKEOVERRIDES= ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ # Used to install the shared libgcc. ++ # was slibdir = @slibdir@ ++ slibdir = $(libdir)/gcc/$(target_alias)/$(gcc_version)$(MULTISUBDIR) ++--- a/src/libgm2/libm2iso/Makefile.in +++++ b/src/libgm2/libm2iso/Makefile.in ++@@ -426,7 +426,7 @@ MAKEOVERRIDES = ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) ++ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) ++ MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) ++--- a/src/libgm2/libm2log/Makefile.am +++++ b/src/libgm2/libm2log/Makefile.am ++@@ -27,7 +27,7 @@ MAKEOVERRIDES= ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ # Used to install the shared libgcc. ++ slibdir = @slibdir@ ++ ++--- a/src/libgm2/libm2log/Makefile.in +++++ b/src/libgm2/libm2log/Makefile.in ++@@ -389,7 +389,7 @@ MAKEOVERRIDES = ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) ++ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) ++ MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) ++--- a/src/libgm2/libm2min/Makefile.am +++++ b/src/libgm2/libm2min/Makefile.am ++@@ -27,7 +27,7 @@ MAKEOVERRIDES= ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ # Used to install the shared libgcc. ++ slibdir = @slibdir@ ++ ++--- a/src/libgm2/libm2min/Makefile.in +++++ b/src/libgm2/libm2min/Makefile.in ++@@ -379,7 +379,7 @@ MAKEOVERRIDES = ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) ++ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) ++ MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) ++--- a/src/libgm2/libm2pim/Makefile.am +++++ b/src/libgm2/libm2pim/Makefile.am ++@@ -27,7 +27,7 @@ MAKEOVERRIDES= ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ # Used to install the shared libgcc. ++ slibdir = @slibdir@ ++ ++--- a/src/libgm2/libm2pim/Makefile.in +++++ b/src/libgm2/libm2pim/Makefile.in ++@@ -414,7 +414,7 @@ MAKEOVERRIDES = ++ gcc_version := $(shell @get_gcc_base_ver@ $(top_srcdir)/../gcc/BASE-VER) ++ ++ # Directory in which the compiler finds libraries etc. ++-libsubdir = $(libdir)/gcc/$(target_alias)/$(gcc_version) +++libsubdir = $(libdir)/gcc-cross/$(target_alias)/$(gcc_version) ++ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory) ++ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory) ++ MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi) diff --cc debian/patches/cross-no-locale-include.diff index 0000000,0000000..c728316 new file mode 100644 --- /dev/null +++ b/debian/patches/cross-no-locale-include.diff @@@ -1,0 -1,0 +1,17 @@@ ++# DP: Don't add /usr/local/include for cross compilers. Assume that ++# DP: /usr/include is ready for multiarch, but not /usr/local/include. ++ ++--- a/src/gcc/cppdefault.cc +++++ b/src/gcc/cppdefault.cc ++@@ -66,8 +66,11 @@ ++ #ifdef LOCAL_INCLUDE_DIR ++ /* /usr/local/include comes before the fixincluded header files. */ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 2 }, +++#if 0 +++ /* Unsafe to assume that /usr/local/include is ready for multiarch. */ ++ { LOCAL_INCLUDE_DIR, 0, 0, 1, 1, 0 }, ++ #endif +++#endif ++ #ifdef PREFIX_INCLUDE_DIR ++ { PREFIX_INCLUDE_DIR, 0, 0, 1, 0, 0 }, ++ #endif diff --cc debian/patches/cuda-float128.diff index 0000000,0000000..655021f new file mode 100644 --- /dev/null +++ b/debian/patches/cuda-float128.diff @@@ -1,0 -1,0 +1,46 @@@ ++# Mask __float128 types from CUDA compilers (LP: #1717257) ++ ++--- a/src/libstdc++-v3/include/std/type_traits +++++ b/src/libstdc++-v3/include/std/type_traits ++@@ -514,7 +514,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ++ : public true_type { }; ++ #endif ++ ++-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) ++ template<> ++ struct __is_floating_point_helper<__float128> ++ : public true_type { }; ++--- a/src/libstdc++-v3/include/bits/std_abs.h +++++ b/src/libstdc++-v3/include/bits/std_abs.h ++@@ -137,7 +137,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION ++ { return __gnu_cxx::__bfloat16_t(__builtin_fabsf(__x)); } ++ #endif ++ ++-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) ++ __extension__ inline _GLIBCXX_CONSTEXPR ++ __float128 ++ abs(__float128 __x) ++--- a/src/libstdc++-v3/include/bits/stl_algobase.h +++++ b/src/libstdc++-v3/include/bits/stl_algobase.h ++@@ -1058,7 +1058,7 @@ _GLIBCXX_END_NAMESPACE_CONTAINER ++ __size_to_integer(double __n) { return (long long)__n; } ++ inline _GLIBCXX_CONSTEXPR long long ++ __size_to_integer(long double __n) { return (long long)__n; } ++-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) ++ __extension__ inline _GLIBCXX_CONSTEXPR long long ++ __size_to_integer(__float128 __n) { return (long long)__n; } ++ #endif ++--- a/src/libstdc++-v3/include/std/numbers +++++ b/src/libstdc++-v3/include/std/numbers ++@@ -226,7 +226,7 @@ __glibcxx_numbers (_Float128, F128); ++ __glibcxx_numbers (__gnu_cxx::__bfloat16_t, BF16); ++ #endif ++ ++-#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) +++#if !defined(__STRICT_ANSI__) && defined(_GLIBCXX_USE_FLOAT128) && !defined(__CUDACC__) ++ __glibcxx_numbers (__float128, Q); ++ #endif // USE_FLOAT128 ++ diff --cc debian/patches/disable-gdc-tests.diff index 0000000,0000000..99e7837 new file mode 100644 --- /dev/null +++ b/debian/patches/disable-gdc-tests.diff @@@ -1,0 -1,0 +1,17 @@@ ++# DP: Disable D tests, hang on many buildds ++ ++--- a/src/gcc/d/Make-lang.in +++++ b/src/gcc/d/Make-lang.in ++@@ -306,9 +306,9 @@ d.srcman: doc/gdc.1 ++ # check targets. However, our DejaGNU framework requires 'check-gdc' as its ++ # entry point. We feed the former to the latter here. ++ check-d: check-gdc ++-lang_checks += check-gdc ++-lang_checks_parallelized += check-gdc ++-check_gdc_parallelize = 128 +++#lang_checks += check-gdc +++#lang_checks_parallelized += check-gdc +++#check_gdc_parallelize = 128 ++ ++ # No D-specific selftests. ++ selftest-d: diff --cc debian/patches/dwarf5-revert-default-doc.diff index 0000000,0000000..c8a6e4b new file mode 100644 --- /dev/null +++ b/debian/patches/dwarf5-revert-default-doc.diff @@@ -1,0 -1,0 +1,14 @@@ ++# DP: Don't turn on DWARF 5 by default, where GCC 11 is not the default. ++ ++--- a/src/gcc/doc/invoke.texi +++++ b/src/gcc/doc/invoke.texi ++@@ -9630,6 +9630,9 @@ version for most targets is 5 (with the ++ Darwin/Mac OS X, which default to version 2, and AIX, which defaults ++ to version 4). ++ +++NOTE: On Ubuntu release, where GCC 11 is not used as the default (21.04 +++and earlier releases), it defaults to version 4. +++ ++ Note that with DWARF Version 2, some ports require and always ++ use some non-conflicting DWARF 3 extensions in the unwind tables. ++ diff --cc debian/patches/dwarf5-revert-default.diff index 0000000,0000000..5d596c2 new file mode 100644 --- /dev/null +++ b/debian/patches/dwarf5-revert-default.diff @@@ -1,0 -1,0 +1,24 @@@ ++# DP: Don't turn on DWARF 5 by default, where GCC 11 is not the default. ++ ++--- a/src/gcc/common.opt +++++ b/src/gcc/common.opt ++@@ -3353,7 +3353,7 @@ Common Driver JoinedOrMissing RejectNega ++ Generate debug information in default version of DWARF format. ++ ++ gdwarf- ++-Common Driver Joined UInteger Var(dwarf_version) Init(DWARF_VERSION_DEFAULT) RejectNegative +++Common Driver Joined UInteger Var(dwarf_version) Init(4) RejectNegative ++ Generate debug information in DWARF v2 (or later) format. ++ ++ gdwarf32 ++--- a/src/gcc/defaults.h +++++ b/src/gcc/defaults.h ++@@ -1444,7 +1444,7 @@ see the files COPYING3 and COPYING.RUNTI ++ /* When generating dwarf info, the default standard version we'll honor ++ and advertise in absence of -gdwarf- on the command line. */ ++ #ifndef DWARF_VERSION_DEFAULT ++-#define DWARF_VERSION_DEFAULT 5 +++#define DWARF_VERSION_DEFAULT 4 ++ #endif ++ ++ #ifndef USED_FOR_TARGET diff --cc debian/patches/g++-multiarch-incdir.diff index 0000000,0000000..2914213 new file mode 100644 --- /dev/null +++ b/debian/patches/g++-multiarch-incdir.diff @@@ -1,0 -1,0 +1,109 @@@ ++# DP: Use /usr/include//c++/4.x as the include directory ++# DP: for host dependent c++ header files. ++ ++--- a/src/libstdc++-v3/include/Makefile.am +++++ b/src/libstdc++-v3/include/Makefile.am ++@@ -1048,7 +1048,7 @@ endif ++ ++ host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) ++ host_builddir = ./${host_alias}/bits ++-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits +++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) ++ host_headers = \ ++ ${host_srcdir}/ctype_base.h \ ++ ${host_srcdir}/ctype_inline.h \ ++--- a/src/libstdc++-v3/include/Makefile.in +++++ b/src/libstdc++-v3/include/Makefile.in ++@@ -1379,7 +1379,7 @@ parallel_headers = \ ++ @GLIBCXX_C_HEADERS_COMPATIBILITY_TRUE@c_compatibility_headers_extra = ${c_compatibility_headers} ++ host_srcdir = ${glibcxx_srcdir}/$(OS_INC_SRCDIR) ++ host_builddir = ./${host_alias}/bits ++-host_installdir = ${gxx_include_dir}/${host_alias}$(MULTISUBDIR)/bits +++host_installdir = $(if $(shell $(CC) -print-multiarch),/usr/include/$(shell $(filter-out -m%,$(CC)) -print-multiarch)/c++/$(notdir ${gxx_include_dir})$(MULTISUBDIR)/bits,${gxx_include_dir}/${default_host_alias}$(MULTISUBDIR)/bits) ++ host_headers = \ ++ ${host_srcdir}/ctype_base.h \ ++ ${host_srcdir}/ctype_inline.h \ ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -1276,6 +1276,7 @@ FLAGS_TO_PASS = \ ++ "prefix=$(prefix)" \ ++ "local_prefix=$(local_prefix)" \ ++ "gxx_include_dir=$(gcc_gxx_include_dir)" \ +++ "gxx_tool_include_dir=$(gcc_gxx_tool_include_dir)" \ ++ "gxx_libcxx_include_dir=$(gcc_gxx_libcxx_include_dir)" \ ++ "build_tooldir=$(build_tooldir)" \ ++ "gcc_tooldir=$(gcc_tooldir)" \ ++@@ -2015,6 +2016,14 @@ gnat_install_lib = @gnat_install_lib@ ++ # host overrides ++ -include $(xmake_file) ++ +++# Directory in which the compiler finds target-dependent g++ includes. +++ifneq ($(call if_multiarch,non-empty),) +++ gcc_gxx_tool_include_dir = $(libsubdir)/$(libsubdir_to_prefix)include/$(MULTIARCH_DIRNAME)/c++/$(version) +++else +++ gcc_gxx_tool_include_dir = $(gcc_gxx_include_dir)/$(target_noncanonical) +++endif +++ +++ ++ # all-tree.def includes all the tree.def files. ++ all-tree.def: s-alltree; @true ++ s-alltree: Makefile ++@@ -3407,7 +3416,7 @@ PREPROCESSOR_DEFINES = \ ++ -DFIXED_INCLUDE_DIR=\"$(libsubdir)/include-fixed\" \ ++ -DGPLUSPLUS_INCLUDE_DIR=\"$(gcc_gxx_include_dir)\" \ ++ -DGPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_include_dir_add_sysroot) \ ++- -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/$(target_noncanonical)\" \ +++ -DGPLUSPLUS_TOOL_INCLUDE_DIR=\"$(gcc_gxx_tool_include_dir)\" \ ++ -DGPLUSPLUS_BACKWARD_INCLUDE_DIR=\"$(gcc_gxx_include_dir)/backward\" \ ++ -DGPLUSPLUS_LIBCXX_INCLUDE_DIR=\"$(gcc_gxx_libcxx_include_dir)\" \ ++ -DGPLUSPLUS_LIBCXX_INCLUDE_DIR_ADD_SYSROOT=$(gcc_gxx_libcxx_include_dir_add_sysroot) \ ++--- a/src/gcc/cppdefault.cc +++++ b/src/gcc/cppdefault.cc ++@@ -49,6 +49,8 @@ const struct default_include cpp_include ++ /* Pick up GNU C++ target-dependent include files. */ ++ { GPLUSPLUS_TOOL_INCLUDE_DIR, "G++", 1, 1, ++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 1 }, +++ { GPLUSPLUS_INCLUDE_DIR, "G++", 1, 1, +++ GPLUSPLUS_INCLUDE_DIR_ADD_SYSROOT, 2 }, ++ #endif ++ #ifdef GPLUSPLUS_BACKWARD_INCLUDE_DIR ++ /* Pick up GNU C++ backward and deprecated include files. */ ++--- a/src/gcc/incpath.cc +++++ b/src/gcc/incpath.cc ++@@ -164,6 +164,18 @@ add_standard_paths (const char *sysroot, ++ } ++ str = reconcat (str, str, dir_separator_str, ++ imultiarch, NULL); +++ if (p->cplusplus && strstr (str, "/c++/")) +++ { +++ char *suffix = strstr (str, "/c++/"); +++ *suffix++ = '\0'; +++ suffix = xstrdup (suffix); +++ str = reconcat (str, str, dir_separator_str, +++ imultiarch, +++ dir_separator_str, suffix, NULL); +++ } +++ else +++ str = reconcat (str, str, dir_separator_str, +++ imultiarch, NULL); ++ } ++ add_path (str, INC_SYSTEM, p->cxx_aware, false); ++ } ++@@ -229,7 +241,16 @@ add_standard_paths (const char *sysroot, ++ free (str); ++ continue; ++ } ++- str = reconcat (str, str, dir_separator_str, imultiarch, NULL); +++ if (p->cplusplus && strstr (str, "/c++/")) +++ { +++ char *suffix = strstr (str, "/c++/"); +++ *suffix++ = '\0'; +++ suffix = xstrdup (suffix); +++ str = reconcat (str, str, dir_separator_str, imultiarch, +++ dir_separator_str, suffix, NULL); +++ } +++ else +++ str = reconcat (str, str, dir_separator_str, imultiarch, NULL); ++ } ++ ++ add_path (str, INC_SYSTEM, p->cxx_aware, false); diff --cc debian/patches/ga68-texinfo.diff index 0000000,0000000..b02a3eb new file mode 100644 --- /dev/null +++ b/debian/patches/ga68-texinfo.diff @@@ -1,0 -1,0 +1,28 @@@ ++--- a/src/gcc/algol68/ga68.texi +++++ b/src/gcc/algol68/ga68.texi ++@@ -72,6 +72,25 @@ man page gfdl(7). ++ @versionsubtitle ++ @author Jose E. Marchesi ++ +++@macro gcctabopt{body} +++@code{\body\} +++@end macro +++@macro gccoptlist{body} +++@smallexample +++\body\ +++@end smallexample +++@end macro +++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; +++@c they get lost at some point in handling the macro. But if @macro is +++@c used here rather than @alias, it produces double line breaks. +++@iftex +++@alias gol = * +++@end iftex +++@ifnottex +++@macro gol +++@end macro +++@end ifnottex +++ ++ @page ++ @vskip 0pt plus 1filll ++ @sp 1 diff --cc debian/patches/gcc-arm-disable-guality-tests.diff index 0000000,0000000..b3c38be new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-arm-disable-guality-tests.diff @@@ -1,0 -1,0 +1,44 @@@ ++# DP: Don't run some tests from the guality test suite on armhf. These fail ++# DP: on every target, but seem to hang on the buildds occasionally on armhf. ++ ++--- a/src/gcc/testsuite/gcc.dg/guality/guality.exp +++++ b/src/gcc/testsuite/gcc.dg/guality/guality.exp ++@@ -99,7 +99,37 @@ if {[check_guality " ++ } ++ } ++ ++- gcc-dg-runtest [lsort [glob $srcdir/$subdir/*.c]] "" "" +++ # FIXME: these seem to hang on the buildds, and gdb always times out +++ # trying to run them. +++ if { [istarget arm-*-linux-gnueabi*] } { +++ set guality [list] +++ foreach file [lsort [glob $srcdir/$subdir/*.c]] { +++ switch -glob -- [file tail $file] { +++ pr36728-*.c - +++ pr41616-1.c - +++ pr43051-1.c - +++ pr54200.c - +++ pr54519-*.c - +++ pr54551.c - +++ pr54693-2.c - +++ pr54796.c - +++ pr56154-1.c - +++ pr58791-3.c - +++ pr58791-5.c - +++ pr68860-1.c - +++ pr68860-2.c - +++ pr78726.c - +++ pr89528.c - +++ pr90074.c - +++ pr90716.c { } +++ * { lappend guality $file } +++ } +++ } +++ } { +++ set guality [lsort [glob $srcdir/$subdir/*.c]] +++ } +++ +++ gcc-dg-runtest $guality "" "" ++ gcc-dg-runtest $general "" "-Wc++-compat" ++ set-torture-options \ ++ [list "-O0" "-Og"] \ diff --cc debian/patches/gcc-as-needed-gold.diff index 0000000,0000000..dcc2aab new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-as-needed-gold.diff @@@ -1,0 -1,0 +1,85 @@@ ++# DP: Use --push-state/--pop-state for gold as well when linking libtsan. ++ ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -780,10 +780,10 @@ proper position among the other output f ++ #define LIBASAN_SPEC STATIC_LIBASAN_LIBS ++ #elif defined(HAVE_LD_STATIC_DYNAMIC) ++ #define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \ ++- " %{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ +++ " %{!static-libasan:--push-state --no-as-needed}" \ ++ " -lasan " \ ++ " %{static-libasan:" LD_DYNAMIC_OPTION "}" \ ++- " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ +++ " %{!static-libasan:--pop-state}" \ ++ STATIC_LIBASAN_LIBS ++ #else ++ #define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS ++@@ -819,10 +819,10 @@ proper position among the other output f ++ #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS ++ #elif defined(HAVE_LD_STATIC_DYNAMIC) ++ #define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \ ++- " %{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ +++ " %{!static-libtsan:--push-state --no-as-needed}" \ ++ " -ltsan " \ ++ " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ ++- " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ +++ " %{!static-libtsan:--pop-state}" \ ++ STATIC_LIBTSAN_LIBS ++ #else ++ #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS ++@@ -840,10 +840,10 @@ proper position among the other output f ++ #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS ++ #elif defined(HAVE_LD_STATIC_DYNAMIC) ++ #define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \ ++- " %{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ +++ " %{!static-liblsan:--push-state --no-as-needed}" \ ++ " -llsan " \ ++ " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ ++- " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ +++ " %{!static-liblsan:--pop-state}" \ ++ STATIC_LIBLSAN_LIBS ++ #else ++ #define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS ++@@ -859,10 +859,10 @@ proper position among the other output f ++ " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" ++ #ifdef HAVE_LD_STATIC_DYNAMIC ++ #define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ ++- " %{!static-libubsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ +++ " %{!static-libubsan:--push-state --no-as-needed}" \ ++ " -lubsan " \ ++ " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ ++- " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ +++ " %{!static-libubsan:--pop-state}" \ ++ STATIC_LIBUBSAN_LIBS ++ #else ++ #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS ++--- a/src/gcc/config/gnu-user.h +++++ b/src/gcc/config/gnu-user.h ++@@ -136,22 +136,22 @@ see the files COPYING3 and COPYING.RUNTI ++ #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ ++ "%{static-libasan:%{!shared:" \ ++ LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ ++- LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}" +++ LD_DYNAMIC_OPTION "}}%{!static-libasan:--push-state --no-as-needed -lasan --pop-state}" ++ #undef LIBHWASAN_EARLY_SPEC ++ #define LIBHWASAN_EARLY_SPEC "%{!shared:libhwasan_preinit%O%s} " \ ++ "%{static-libhwasan:%{!shared:" \ ++ LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \ ++- LD_DYNAMIC_OPTION "}}%{!static-libhwasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lhwasan %{fuse-ld=gold:--as-needed;:--pop-state}}" +++ LD_DYNAMIC_OPTION "}}%{!static-libhwasan:--push-state --no-as-needed -lhwasan --pop-state}" ++ #undef LIBTSAN_EARLY_SPEC ++ #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \ ++ "%{static-libtsan:%{!shared:" \ ++ LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \ ++- LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}" +++ LD_DYNAMIC_OPTION "}}%{!static-libtsan:--push-state --no-as-needed -ltsan --pop-state}" ++ #undef LIBLSAN_EARLY_SPEC ++ #define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \ ++ "%{static-liblsan:%{!shared:" \ ++ LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \ ++- LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}" +++ LD_DYNAMIC_OPTION "}}%{!static-liblsan:--push-state --no-as-needed -llsan --pop-state}" ++ #endif ++ ++ #undef TARGET_F951_OPTIONS diff --cc debian/patches/gcc-as-needed.diff index 0000000,0000000..299b828 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-as-needed.diff @@@ -1,0 -1,0 +1,284 @@@ ++# DP: On linux targets pass --as-needed by default to the linker, but always ++# DP: link the sanitizer libraries with --no-as-needed. ++ ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -779,8 +779,11 @@ proper position among the other output f ++ #ifdef LIBASAN_EARLY_SPEC ++ #define LIBASAN_SPEC STATIC_LIBASAN_LIBS ++ #elif defined(HAVE_LD_STATIC_DYNAMIC) ++-#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION \ ++- "} -lasan %{static-libasan:" LD_DYNAMIC_OPTION "}" \ +++#define LIBASAN_SPEC "%{static-libasan:" LD_STATIC_OPTION "}" \ +++ " %{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ +++ " -lasan " \ +++ " %{static-libasan:" LD_DYNAMIC_OPTION "}" \ +++ " %{!static-libasan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ STATIC_LIBASAN_LIBS ++ #else ++ #define LIBASAN_SPEC "-lasan" STATIC_LIBASAN_LIBS ++@@ -815,8 +818,11 @@ proper position among the other output f ++ #ifdef LIBTSAN_EARLY_SPEC ++ #define LIBTSAN_SPEC STATIC_LIBTSAN_LIBS ++ #elif defined(HAVE_LD_STATIC_DYNAMIC) ++-#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION \ ++- "} -ltsan %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ +++#define LIBTSAN_SPEC "%{static-libtsan:" LD_STATIC_OPTION "}" \ +++ " %{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ +++ " -ltsan " \ +++ " %{static-libtsan:" LD_DYNAMIC_OPTION "}" \ +++ " %{!static-libtsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ STATIC_LIBTSAN_LIBS ++ #else ++ #define LIBTSAN_SPEC "-ltsan" STATIC_LIBTSAN_LIBS ++@@ -833,8 +839,11 @@ proper position among the other output f ++ #ifdef LIBLSAN_EARLY_SPEC ++ #define LIBLSAN_SPEC STATIC_LIBLSAN_LIBS ++ #elif defined(HAVE_LD_STATIC_DYNAMIC) ++-#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION \ ++- "} -llsan %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ +++#define LIBLSAN_SPEC "%{static-liblsan:" LD_STATIC_OPTION "}" \ +++ " %{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ +++ " -llsan " \ +++ " %{static-liblsan:" LD_DYNAMIC_OPTION "}" \ +++ " %{!static-liblsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ STATIC_LIBLSAN_LIBS ++ #else ++ #define LIBLSAN_SPEC "-llsan" STATIC_LIBLSAN_LIBS ++@@ -849,8 +858,11 @@ proper position among the other output f ++ #define STATIC_LIBUBSAN_LIBS \ ++ " %{static-libubsan|static:%:include(libsanitizer.spec)%(link_libubsan)}" ++ #ifdef HAVE_LD_STATIC_DYNAMIC ++-#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION \ ++- "} -lubsan %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ +++#define LIBUBSAN_SPEC "%{static-libubsan:" LD_STATIC_OPTION "}" \ +++ " %{!static-libubsan:%{!fuse-ld=gold:--push-state} --no-as-needed}" \ +++ " -lubsan " \ +++ " %{static-libubsan:" LD_DYNAMIC_OPTION "}" \ +++ " %{!static-libubsan:%{fuse-ld=gold:--as-needed;:--pop-state}}" \ ++ STATIC_LIBUBSAN_LIBS ++ #else ++ #define LIBUBSAN_SPEC "-lubsan" STATIC_LIBUBSAN_LIBS ++--- a/src/gcc/config/gnu-user.h +++++ b/src/gcc/config/gnu-user.h ++@@ -136,22 +136,22 @@ see the files COPYING3 and COPYING.RUNTI ++ #define LIBASAN_EARLY_SPEC "%{!shared:libasan_preinit%O%s} " \ ++ "%{static-libasan:%{!shared:" \ ++ LD_STATIC_OPTION " --whole-archive -lasan --no-whole-archive " \ ++- LD_DYNAMIC_OPTION "}}%{!static-libasan:-lasan}" +++ LD_DYNAMIC_OPTION "}}%{!static-libasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lasan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ #undef LIBHWASAN_EARLY_SPEC ++ #define LIBHWASAN_EARLY_SPEC "%{!shared:libhwasan_preinit%O%s} " \ ++ "%{static-libhwasan:%{!shared:" \ ++ LD_STATIC_OPTION " --whole-archive -lhwasan --no-whole-archive " \ ++- LD_DYNAMIC_OPTION "}}%{!static-libhwasan:-lhwasan}" +++ LD_DYNAMIC_OPTION "}}%{!static-libhwasan:%{!fuse-ld=gold:--push-state} --no-as-needed -lhwasan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ #undef LIBTSAN_EARLY_SPEC ++ #define LIBTSAN_EARLY_SPEC "%{!shared:libtsan_preinit%O%s} " \ ++ "%{static-libtsan:%{!shared:" \ ++ LD_STATIC_OPTION " --whole-archive -ltsan --no-whole-archive " \ ++- LD_DYNAMIC_OPTION "}}%{!static-libtsan:-ltsan}" +++ LD_DYNAMIC_OPTION "}}%{!static-libtsan:%{!fuse-ld=gold:--push-state} --no-as-needed -ltsan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ #undef LIBLSAN_EARLY_SPEC ++ #define LIBLSAN_EARLY_SPEC "%{!shared:liblsan_preinit%O%s} " \ ++ "%{static-liblsan:%{!shared:" \ ++ LD_STATIC_OPTION " --whole-archive -llsan --no-whole-archive " \ ++- LD_DYNAMIC_OPTION "}}%{!static-liblsan:-llsan}" +++ LD_DYNAMIC_OPTION "}}%{!static-liblsan:%{!fuse-ld=gold:--push-state} --no-as-needed -llsan %{fuse-ld=gold:--as-needed;:--pop-state}}" ++ #endif ++ ++ #undef TARGET_F951_OPTIONS ++--- a/src/gcc/config/aarch64/aarch64-linux.h +++++ b/src/gcc/config/aarch64/aarch64-linux.h ++@@ -40,6 +40,7 @@ ++ ++ #define LINUX_TARGET_LINK_SPEC "%{h*} \ ++ --hash-style=gnu \ +++ %{!fsanitize=*:--as-needed} \ ++ %{static:-Bstatic} \ ++ %{shared:-shared} \ ++ %{symbolic:-Bsymbolic} \ ++--- a/src/gcc/config/ia64/linux.h +++++ b/src/gcc/config/ia64/linux.h ++@@ -58,7 +58,7 @@ do { \ ++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" ++ ++ #undef LINK_SPEC ++-#define LINK_SPEC " --hash-style=gnu \ +++#define LINK_SPEC " --hash-style=gnu %{!fsanitize=*:--as-needed} \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ %{!static: \ ++--- a/src/gcc/config/sparc/linux.h +++++ b/src/gcc/config/sparc/linux.h ++@@ -81,7 +81,7 @@ extern const char *host_detect_local_cpu ++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" ++ ++ #undef LINK_SPEC ++-#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ +++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{!fsanitize=*:--as-needed} %{shared:-shared} \ ++ %{!mno-relax:%{!r:-relax}} \ ++ %{!shared: \ ++ %{!static: \ ++--- a/src/gcc/config/s390/linux.h +++++ b/src/gcc/config/s390/linux.h ++@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. ++ ++ #undef LINK_SPEC ++ #define LINK_SPEC \ ++- "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ +++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu %{!fsanitize=*:--as-needed} \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ %{static:-static} \ ++--- a/src/gcc/config/rs6000/linux64.h +++++ b/src/gcc/config/rs6000/linux64.h ++@@ -378,13 +378,13 @@ extern int dot_symbols; ++ " -m elf64ppc") ++ #endif ++ ++-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ +++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ ++ %{!static-pie: \ ++ %{rdynamic:-export-dynamic} \ ++ -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \ ++ %(link_os_extra_spec32)" ++ ++-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ +++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ ++ %{!static-pie: \ ++ %{rdynamic:-export-dynamic} \ ++ -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \ ++--- a/src/gcc/config/rs6000/sysv4.h +++++ b/src/gcc/config/rs6000/sysv4.h ++@@ -781,7 +781,7 @@ GNU_USER_TARGET_CC1_SPEC ++ #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER ++ #endif ++ ++-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ +++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!fsanitize=*:--as-needed} %{!shared: %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" ++ ++--- a/src/gcc/config/i386/gnu-user64.h +++++ b/src/gcc/config/i386/gnu-user64.h ++@@ -57,6 +57,7 @@ see the files COPYING3 and COPYING.RUNTI ++ %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ ++ %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ ++ --hash-style=gnu \ +++ %{!fsanitize=*:--as-needed} \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ %{!static: \ ++--- a/src/gcc/config/i386/gnu-user.h +++++ b/src/gcc/config/i386/gnu-user.h ++@@ -68,7 +68,7 @@ along with GCC; see the file COPYING3. ++ { "link_emulation", GNU_USER_LINK_EMULATION },\ ++ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } ++ ++-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ +++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{!fsanitize=*:--as-needed} %{shared:-shared} \ ++ %{!shared: \ ++ %{!static: \ ++ %{!static-pie: \ ++--- a/src/gcc/config/alpha/linux-elf.h +++++ b/src/gcc/config/alpha/linux-elf.h ++@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. ++ ++ #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER ++ ++-#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ +++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{!fsanitize=*:--as-needed} %{G*} %{relax:-relax} \ ++ %{O*:-O3} %{!O*:-O1} \ ++ %{shared:-shared} \ ++ %{!shared: \ ++--- a/src/gcc/config/arm/linux-elf.h +++++ b/src/gcc/config/arm/linux-elf.h ++@@ -71,6 +71,7 @@ ++ %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ ++ -X \ ++ --hash-style=gnu \ +++ %{!fsanitize=*:--as-needed} \ ++ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ ++ SUBTARGET_EXTRA_LINK_SPEC ++ ++--- a/src/gcc/config/mips/gnu-user.h +++++ b/src/gcc/config/mips/gnu-user.h ++@@ -55,6 +55,7 @@ along with GCC; see the file COPYING3. ++ #undef GNU_USER_TARGET_LINK_SPEC ++ #define GNU_USER_TARGET_LINK_SPEC "\ ++ %{G*} %{EB} %{EL} %{mips*} %{shared} \ +++ %{!fsanitize=*:--as-needed} \ ++ %{!shared: \ ++ %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++--- a/src/gcc/config/riscv/linux.h +++++ b/src/gcc/config/riscv/linux.h ++@@ -49,6 +49,7 @@ along with GCC; see the file COPYING3. ++ ++ #define LINK_SPEC "\ ++ -hash-style=gnu \ +++%{!fsanitize=*:--as-needed} \ ++ -melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv" LD_EMUL_SUFFIX " \ ++ %{mno-relax:--no-relax} \ ++ -X \ ++--- a/src/gcc/config/m68k/linux.h +++++ b/src/gcc/config/m68k/linux.h ++@@ -78,6 +78,7 @@ along with GCC; see the file COPYING3. ++ ++ #undef LINK_SPEC ++ #define LINK_SPEC "-m m68kelf %{shared} \ +++ %{!fsanitize=*:--as-needed} \ ++ %{!shared: \ ++ %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++--- a/src/gcc/config/sh/linux.h +++++ b/src/gcc/config/sh/linux.h ++@@ -72,6 +72,7 @@ along with GCC; see the file COPYING3. ++ #undef SUBTARGET_LINK_SPEC ++ #define SUBTARGET_LINK_SPEC \ ++ "%{shared:-shared} \ +++ %{!fsanitize=*:--as-needed} \ ++ %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "} \ ++--- a/src/gcc/config/pa/pa-linux.h +++++ b/src/gcc/config/pa/pa-linux.h ++@@ -41,6 +41,7 @@ along with GCC; see the file COPYING3. ++ ++ #undef LINK_SPEC ++ #define LINK_SPEC "\ +++ %{!fsanitize=*:--as-needed} \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ %{!static: \ ++--- a/src/gcc/config/loongarch/gnu-user.h +++++ b/src/gcc/config/loongarch/gnu-user.h ++@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. ++ #undef GNU_USER_TARGET_LINK_SPEC ++ #define GNU_USER_TARGET_LINK_SPEC \ ++ "%{G*} %{shared} -m " GNU_USER_LINK_EMULATION \ +++ " %{!fsanitize=*:--as-needed} " \ ++ "%{!shared: %{static} " \ ++ "%{!static: %{!static-pie: %{rdynamic:-export-dynamic} " \ ++ "-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} " \ ++--- a/src/gcc/config/sparc/linux64.h +++++ b/src/gcc/config/sparc/linux64.h ++@@ -90,7 +90,7 @@ along with GCC; see the file COPYING3. ++ { "link_arch_default", LINK_ARCH_DEFAULT_SPEC }, \ ++ { "link_arch", LINK_ARCH_SPEC }, ++ ++-#define LINK_ARCH32_SPEC "-m elf32_sparc %{shared:-shared} \ +++#define LINK_ARCH32_SPEC "-m elf32_sparc %{shared:-shared} %{!fsanitize=*:--as-needed} \ ++ %{!shared: \ ++ %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++@@ -98,7 +98,7 @@ along with GCC; see the file COPYING3. ++ %{static:-static}} \ ++ " ++ ++-#define LINK_ARCH64_SPEC "-m elf64_sparc %{shared:-shared} \ +++#define LINK_ARCH64_SPEC "-m elf64_sparc %{shared:-shared} %{!fsanitize=*:--as-needed} \ ++ %{!shared: \ ++ %{!static: \ ++ %{rdynamic:-export-dynamic} \ diff --cc debian/patches/gcc-auto-build.diff index 0000000,0000000..75c3d00 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-auto-build.diff @@@ -1,0 -1,0 +1,13 @@@ ++# DP: Fix cross building a native compiler. ++ ++--- a/src/gcc/configure.ac +++++ b/src/gcc/configure.ac ++@@ -2184,7 +2184,7 @@ else ++ # Clearing GMPINC is necessary to prevent host headers being ++ # used by the build compiler. Defining GENERATOR_FILE stops ++ # system.h from including gmp.h. ++- CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD}" \ +++ CC="${CC_FOR_BUILD}" CFLAGS="${CFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ ++ CXX="${CXX_FOR_BUILD}" CXXFLAGS="${CXXFLAGS_FOR_BUILD}" \ ++ LD="${LD_FOR_BUILD}" LDFLAGS="${LDFLAGS_FOR_BUILD}" \ ++ GMPINC="" CPPFLAGS="${CPPFLAGS_FOR_BUILD} -DGENERATOR_FILE" \ diff --cc debian/patches/gcc-distro-specs-ubuntu-doc.diff index 0000000,0000000..b9936fc new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-distro-specs-ubuntu-doc.diff @@@ -1,0 -1,0 +1,101 @@@ ++# DP: Document distro specific compiler flags turned on by default ++ ++--- a/src/gcc/doc/invoke.texi +++++ b/src/gcc/doc/invoke.texi ++@@ -8868,6 +8868,10 @@ to turn on such checking by using @optio ++ and is equivalent to @option{-Wbidi-chars=unpaired,ucn}, if no previous ++ @option{-Wbidi-chars=any} was specified. ++ +++NOTE: In Ubuntu 25.10 and later versions, @option{-Wbidi-chars} is +++enabled by default for C, C++, ObjC, ObjC++, unless +++@option{-Wno-bidi-chars} or @option{-Wbidi-chars=none} is found. +++ ++ @opindex Wno-bool-compare ++ @opindex Wbool-compare ++ @item -Wbool-compare ++@@ -12831,6 +12835,19 @@ also turns on the following optimization ++ Please note the warning under @option{-fgcse} about ++ invoking @option{-O2} on programs that use computed gotos. ++ +++NOTE: In Ubuntu 8.10 and later versions, @option{-D_FORTIFY_SOURCE=2}, +++in Ubuntu 24.04 and later versions, @option{-D_FORTIFY_SOURCE=3}, is +++set by default, and is activated when @option{-O} is set to 2 or higher. +++This enables additional compile-time and run-time checks for several libc +++functions. To disable, specify either @option{-U_FORTIFY_SOURCE} or +++@option{-D_FORTIFY_SOURCE=0}. +++ +++NOTE: In Debian 13 and Ubuntu 24.04 and later versions, +++@option{-D_TIME_BITS=64} together with @option{-D_FILE_OFFSET_BITS=64} is +++set by default on the 32bit architectures @samp{armel}, @samp{armhf}, +++@samp{hppa}, @samp{m68k}, @samp{mips}, @samp{mipsel}, @samp{powerpc} and +++@samp{sh4}. +++ ++ @opindex O3 ++ @item -O3 ++ Optimize yet more. @option{-O3} turns on all optimizations specified ++@@ -16581,6 +16598,9 @@ value of a shared integer constant. ++ The minimum size of buffers (i.e.@: arrays) that receive stack smashing ++ protection when @option{-fstack-protector} is used. ++ +++This default before Ubuntu 10.10 was "8". Currently it is "4", to increase +++the number of functions protected by the stack protector. +++ ++ @item min-size-for-stack-sharing ++ The minimum size of variables taking part in stack slot sharing when not ++ optimizing. ++@@ -18489,6 +18509,10 @@ Currently the x86 GNU/Linux target provi ++ on Intel Control-flow Enforcement Technology (CET) which works for ++ i686 processor or newer. ++ +++NOTE: In Ubuntu 19.10 and later versions, @option{-fcf-protection} +++is enabled by default for C, C++, ObjC, ObjC++, if none of +++@option{-fno-cf-protection} nor @option{-fcf-protection=*} are found. +++ ++ @opindex fharden-compares ++ @item -fharden-compares ++ For every logical test that survives gimple optimizations and is ++@@ -18644,6 +18668,11 @@ references to local frame addresses. On ++ allocated on the stack are considered, optimized away variables or variables ++ allocated in registers don't count. ++ +++NOTE: In Ubuntu 14.10 and later versions, +++@option{-fstack-protector-strong} is enabled by default for C, +++C++, ObjC, ObjC++, if none of @option{-fno-stack-protector}, +++@option{-nostdlib}, nor @option{-ffreestanding} are found. +++ ++ @opindex fstack-protector-explicit ++ @item -fstack-protector-explicit ++ Like @option{-fstack-protector} but only protects those functions which ++@@ -18707,6 +18736,10 @@ allocations. @option{-fstack-clash-prot ++ protection for static stack allocations if the target supports ++ @option{-fstack-check=specific}. ++ +++NOTE: In Ubuntu 19.10 and later versions, +++@option{-fstack-clash-protection} is enabled by default for C, +++C++, ObjC, ObjC++, unless @option{-fno-stack-clash-protection} is found. +++ ++ @opindex fstack-limit-register ++ @opindex fstack-limit-symbol ++ @opindex fno-stack-limit ++@@ -19470,6 +19503,9 @@ For example, @option{-Wl,-Map,output.map ++ linker. When using the GNU linker, you can also get the same effect with ++ @option{-Wl,-Map=output.map}. ++ +++NOTE: In Ubuntu 8.10 and later versions, for LDFLAGS, the option +++@option{-Wl,-z,relro} is used. To disable, use @option{-Wl,-z,norelro}. +++ ++ @opindex u ++ @item -u @var{symbol} ++ Pretend the symbol @var{symbol} is undefined, to force linking of ++@@ -20323,6 +20359,11 @@ zero initialization of padding bits of o ++ the padding in between @code{b.a} and @code{b.b} (if any) and ++ tail padding in the structure (if any). ++ +++NOTE: In Ubuntu 25.10 and later versions, +++@option{-fzero-init-padding-bits=all} is enabled by default for C, +++C++, ObjC, ObjC++, unless @option{-fzero-init-padding-bits=standard} +++is found. +++ ++ @end table ++ ++ @node Developer Options diff --cc debian/patches/gcc-distro-specs.diff index 0000000,0000000..447daef new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-distro-specs.diff @@@ -1,0 -1,0 +1,366 @@@ ++# DP: Add empty distro and hardening specs ++ ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -27,6 +27,11 @@ CC recognizes how to compile each input ++ Once it knows which kind of compilation to perform, the procedure for ++ compilation is specified by a string called a "spec". */ ++ +++/* Inject some default compilation flags which are used as the default. +++ Done by the packaging build system. Should that be done in the headers +++ gcc/config//*.h instead? */ +++#include "distro-defaults.h" +++ ++ #define INCLUDE_STRING ++ #include "config.h" ++ #include "system.h" ++@@ -991,6 +996,148 @@ proper position among the other output f ++ #define LINK_GCC_C_SEQUENCE_SPEC "%G %{!nolibc:%L %G}" ++ #endif ++ +++/* Generate full unwind information covering all program points. +++ Only needed for some architectures. */ +++#ifndef ASYNC_UNWIND_SPEC +++# ifdef DIST_DEFAULT_ASYNC_UNWIND +++# define ASYNC_UNWIND_SPEC "%{!fno-asynchronous-unwind-tables:-fasynchronous-unwind-tables}" +++# else +++# define ASYNC_UNWIND_SPEC "" +++# endif +++#endif +++ +++/* Turn on stack protector. +++ */ +++#ifndef SSP_DEFAULT_SPEC +++# ifdef DIST_DEFAULT_SSP +++# ifdef DIST_DEFAULT_SSP_STRONG +++# define SSP_DEFAULT_SPEC " %{!fno-stack-protector:%{!fstack-protector-explicit:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:%{!fstack-protector:-fstack-protector-strong}}}}}}" +++# else +++# define SSP_DEFAULT_SPEC " %{!fno-stack-protector:%{!fstack-protector-explicit:%{!fstack-protector-all:%{!ffreestanding:%{!nostdlib:-fstack-protector}}}}}" +++# endif +++# else +++# define SSP_DEFAULT_SPEC "" +++# endif +++#endif +++ +++/* Turn on -Wformat -Wformat-security by default for C, C++, +++ ObjC, ObjC++. */ +++#ifndef FORMAT_SECURITY_SPEC +++# ifdef DIST_DEFAULT_FORMAT_SECURITY +++# define FORMAT_SECURITY_SPEC " %{!Wformat:%{!Wformat=2:%{!Wformat=0:%{!Wall:-Wformat} %{!Wno-format-security:-Wformat-security}}}}" +++# else +++# define FORMAT_SECURITY_SPEC "" +++# endif +++#endif +++ +++/* Enable -fstack-clash-protection by default. Only available +++ on some targets. */ +++#ifndef STACK_CLASH_SPEC +++# ifdef DIST_DEFAULT_STACK_CLASH +++# define STACK_CLASH_SPEC " %{!fno-stack-clash-protection:-fstack-clash-protection}" +++# else +++# define STACK_CLASH_SPEC "" +++# endif +++#endif +++ +++/* Enable code instrumentation of control-flow transfers. +++ Available on x86 and x86_64. */ +++#ifndef CF_PROTECTION_SPEC +++# ifdef DIST_DEFAULT_CF_PROTECTION +++# define CF_PROTECTION_SPEC " %{!m16:%{!m32:%{!fcf-protection*:%{!fno-cf-protection:-fcf-protection}}}}" +++# else +++# define CF_PROTECTION_SPEC "" +++# endif +++#endif +++ +++/* Enable -D_TIME_BITS=64, only available on some 32bit targets. */ +++#ifndef TIMET64_SPEC +++# ifdef DIST_DEFAULT_TIMET64 +++# define TIMET64_SPEC " %{!m16:%{!m64:%{!D_DISTRO_EVADE_TIME_BITS:%{!D_TIME_BITS=*:%{!U_TIME_BITS:-D_TIME_BITS=64%{!D_FILE_OFFSET_BITS=*:%{!U_FILE_OFFSET_BITS: -D_FILE_OFFSET_BITS=64}}}}}}}" +++# else +++# define TIMET64_SPEC "" +++# endif +++#endif +++ +++/* Enable -D_FORTIFY_SOURCE= */ +++#ifndef FORTIFY_SOURCE_SPEC +++# ifdef DIST_DEFAULT_FORTIFY_SOURCE +++# define FORTIFY_SOURCE_SPEC " %{!O0:%{O*:%{!D_FORTIFY_SOURCE=*:%{!U_FORTIFY_SOURCE:-D_FORTIFY_SOURCE=" DIST_DEFAULT_FORTIFY_SOURCE_S "}}}}" +++# else +++# define FORTIFY_SOURCE_SPEC "" +++# endif +++#endif +++ +++#ifndef BIND_NOW_SPEC +++# if defined(DIST_DEFAULT_BIND_NOW) && !defined(ACCEL_COMPILER) +++# define BIND_NOW_SPEC " -z now" +++# else +++# define BIND_NOW_SPEC "" +++# endif +++#endif +++ +++#ifndef RELRO_SPEC +++# ifdef DIST_DEFAULT_RELRO +++# define RELRO_SPEC " -z relro " +++# else +++# define RELRO_SPEC "" +++# endif +++#endif +++ +++/* Guarantee zero initialization of padding bits in automatic variable +++ initializers. */ +++#ifndef INIT_ZERO_ALL_SPEC +++# ifdef DIST_DEFAULT_INIT_ZERO_ALL +++# define INIT_ZERO_ALL_SPEC " %{!fzero-init-padding-bits*:-fzero-init-padding-bits=all}" +++# else +++# define INIT_ZERO_ALL_SPEC "" +++# endif +++#endif +++ +++/* Emit a warning on unicode bidi characters which can be used to hide +++ malicious code from human reviewers. */ +++#ifndef BIDI_WARNING_SPEC +++# ifdef DIST_DEFAULT_BIDI_WARNING +++# define BIDI_WARNING_SPEC " %{!Wno-bidi-chars:%{!Wbidi-chars*:-Wbidi-chars=any}}" +++# else +++# define BIDI_WARNING_SPEC "" +++# endif +++#endif +++ +++/* Enable sframe support by default. */ +++#ifndef SFRAME_SPEC +++# ifdef DIST_DEFAULT_SFRAME +++# define SFRAME_SPEC " %{!m16:%{!m32:%{!mx32:%{!ffreestanding:--gsframe}}}}" +++# else +++# define SFRAME_SPEC "" +++# endif +++#endif +++ +++/* Don't enable any of those for the offload compilers, +++ unsupported. */ +++#if !defined(DISTRO_DEFAULT_ASM_SPEC) && !defined(ACCEL_COMPILER) +++# define DISTRO_DEFAULT_ASM_SPEC SFRAME_SPEC +++#else +++# define DISTRO_DEFAULT_ASM_SPEC "" +++#endif +++#if !defined(DISTRO_DEFAULT_CPP_SPEC) && !defined(ACCEL_COMPILER) +++# define DISTRO_DEFAULT_CPP_SPEC TIMET64_SPEC FORTIFY_SOURCE_SPEC +++#else +++# define DISTRO_DEFAULT_CPP_SPEC "" +++#endif +++#if !defined(DISTRO_DEFAULT_SPEC) && !defined(ACCEL_COMPILER) +++# define DISTRO_DEFAULT_SPEC ASYNC_UNWIND_SPEC SSP_DEFAULT_SPEC \ +++ FORMAT_SECURITY_SPEC STACK_CLASH_SPEC CF_PROTECTION_SPEC \ +++ INIT_ZERO_ALL_SPEC BIDI_WARNING_SPEC +++#else +++# define DISTRO_DEFAULT_SPEC "" +++#endif +++#if !defined(DISTRO_DEFAULT_LINK_SPEC) && !defined(ACCEL_COMPILER) +++# define DISTRO_DEFAULT_LINK_SPEC RELRO_SPEC +++#else +++# define DISTRO_DEFAULT_LINK_SPEC "" +++#endif +++ ++ #ifndef LINK_SSP_SPEC ++ #ifdef TARGET_LIBC_PROVIDES_SSP ++ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ ++@@ -1047,7 +1194,7 @@ proper position among the other output f ++ #ifndef LINK_PIE_SPEC ++ #ifdef HAVE_LD_PIE ++ #ifndef LD_PIE_SPEC ++-#define LD_PIE_SPEC "-pie" +++#define LD_PIE_SPEC "-pie" BIND_NOW_SPEC ++ #endif ++ #else ++ #define LD_PIE_SPEC "" ++@@ -1164,6 +1311,7 @@ proper position among the other output f ++ "%{flto|flto=*:% ++ ++ * gcc.c (offload_targets_default): New variable. ++ (process_command): Set it if -foffload is defaulted. ++ (driver::maybe_putenv_OFFLOAD_TARGETS): Add OFFLOAD_TARGET_DEFAULT=1 ++ into environment if -foffload has been defaulted. ++ * lto-wrapper.c (OFFLOAD_TARGET_DEFAULT_ENV): Define. ++ (compile_offload_image): If OFFLOAD_TARGET_DEFAULT ++ is in the environment, don't fail if corresponding mkoffload ++ can't be found. ++ (compile_images_for_offload_targets): Likewise. Free and clear ++ offload_names if no valid offload is found. ++libgomp/ ++ * target.c (gomp_load_plugin_for_device): If a plugin can't be ++ dlopened, assume it has no devices silently. ++ ++--- a/src/gcc/gcc.c +++++ b/src/gcc/gcc.c ++@@ -324,6 +324,10 @@ static const char *spec_host_machine = D ++ ++ static char *offload_targets = NULL; ++ +++/* Set to true if -foffload has not been used and offload_targets +++ is set to the configured in default. */ +++static bool offload_targets_default; +++ ++ /* Nonzero if cross-compiling. ++ When -b is used, the value comes from the `specs' file. */ ++ ++@@ -5058,7 +5062,10 @@ process_command (unsigned int decoded_op ++ /* If the user didn't specify any, default to all configured offload ++ targets. */ ++ if (ENABLE_OFFLOADING && offload_targets == NULL) ++- handle_foffload_option (OFFLOAD_TARGETS); +++ { +++ handle_foffload_option (OFFLOAD_TARGETS); +++ offload_targets_default = true; +++ } ++ ++ /* Handle -gtoggle as it would later in toplev.c:process_options to ++ make the debug-level-gt spec function work as expected. */ ++@@ -8758,6 +8765,8 @@ driver::maybe_putenv_OFFLOAD_TARGETS () ++ obstack_grow (&collect_obstack, offload_targets, ++ strlen (offload_targets) + 1); ++ xputenv (XOBFINISH (&collect_obstack, char *)); +++ if (offload_targets_default) +++ xputenv ("OFFLOAD_TARGET_DEFAULT=1"); ++ } ++ ++ free (offload_targets); ++--- a/src/gcc/lto-wrapper.c +++++ b/src/gcc/lto-wrapper.c ++@@ -52,6 +52,7 @@ along with GCC; see the file COPYING3. ++ /* Environment variable, used for passing the names of offload targets from GCC ++ driver to lto-wrapper. */ ++ #define OFFLOAD_TARGET_NAMES_ENV "OFFLOAD_TARGET_NAMES" +++#define OFFLOAD_TARGET_DEFAULT_ENV "OFFLOAD_TARGET_DEFAULT" ++ ++ /* By default there is no special suffix for target executables. */ ++ #ifdef TARGET_EXECUTABLE_SUFFIX ++@@ -907,6 +908,12 @@ compile_offload_image (const char *targe ++ break; ++ } ++ +++ if (!compiler && getenv (OFFLOAD_TARGET_DEFAULT_ENV)) +++ { +++ free_array_of_ptrs ((void **) paths, n_paths); +++ return NULL; +++ } +++ ++ if (!compiler) ++ fatal_error (input_location, ++ "could not find %s in %s (consider using %<-B%>)", ++@@ -976,6 +983,7 @@ compile_images_for_offload_targets (unsi ++ if (!target_names) ++ return; ++ unsigned num_targets = parse_env_var (target_names, &names, NULL); +++ int next_name_entry = 0; ++ ++ const char *compiler_path = getenv ("COMPILER_PATH"); ++ if (!compiler_path) ++@@ -986,13 +994,19 @@ compile_images_for_offload_targets (unsi ++ offload_names = XCNEWVEC (char *, num_targets + 1); ++ for (unsigned i = 0; i < num_targets; i++) ++ { ++- offload_names[i] +++ offload_names[next_name_entry] ++ = compile_offload_image (names[i], compiler_path, in_argc, in_argv, ++ compiler_opts, compiler_opt_count, ++ linker_opts, linker_opt_count); ++- if (!offload_names[i]) ++- fatal_error (input_location, ++- "problem with building target image for %s", names[i]); +++ if (!offload_names[next_name_entry]) +++ continue; +++ next_name_entry++; +++ } +++ +++ if (next_name_entry == 0) +++ { +++ free (offload_names); +++ offload_names = NULL; ++ } ++ ++ out: ++--- a/src/libgomp/target.c +++++ b/src/libgomp/target.c ++@@ -3173,7 +3173,7 @@ gomp_load_plugin_for_device (struct gomp ++ ++ void *plugin_handle = dlopen (plugin_name, RTLD_LAZY); ++ if (!plugin_handle) ++- goto dl_fail; +++ return 0; ++ ++ /* Check if all required functions are available in the plugin and store ++ their handlers. None of the symbols can legitimately be NULL, diff --cc debian/patches/gcc-force-cross-layout.diff index 0000000,0000000..34df429 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-force-cross-layout.diff @@@ -1,0 -1,0 +1,49 @@@ ++# DP: Add FORCE_CROSS_LAYOUT env var to force a cross directory layout. ++ ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -3687,7 +3687,7 @@ target_configargs="$target_configargs ${ ++ # native. However, it would be better to use other mechanisms to make the ++ # sorts of decisions they want to make on this basis. Please consider ++ # this option to be deprecated. FIXME. ++-if test x${is_cross_compiler} = xyes ; then +++if test x${is_cross_compiler} = xyes || test x${FORCE_CROSS_LAYOUT} = xyes; then ++ target_configargs="--with-cross-host=${host_noncanonical} ${target_configargs}" ++ fi ++ ++--- a/src/gcc/configure.ac +++++ b/src/gcc/configure.ac ++@@ -2537,14 +2537,14 @@ SYSTEM_HEADER_DIR='$(NATIVE_SYSTEM_HEADE ++ BUILD_SYSTEM_HEADER_DIR=$SYSTEM_HEADER_DIR AC_SUBST(BUILD_SYSTEM_HEADER_DIR) ++ ++ if test x$host != x$target || test "x$TARGET_SYSTEM_ROOT" != x || ++- test x$build != x$host || test "x$with_build_sysroot" != x; then +++ test x$build != x$host || test "x$with_build_sysroot" != x || test x$FORCE_CROSS_LAYOUT = xyes; then ++ if test "x$with_build_sysroot" != x; then ++ BUILD_SYSTEM_HEADER_DIR=$with_build_sysroot'$${sysroot_headers_suffix}$(NATIVE_SYSTEM_HEADER_DIR)' ++ else ++ BUILD_SYSTEM_HEADER_DIR='$(CROSS_SYSTEM_HEADER_DIR)' ++ fi ++ ++- if test x$host != x$target +++ if test x$host != x$target || test x$FORCE_CROSS_LAYOUT = xyes ++ then ++ CROSS="-DCROSS_DIRECTORY_STRUCTURE" ++ ALL=all.cross ++@@ -7577,14 +7577,14 @@ AC_SUBST_FILE(language_hooks) ++ ++ # Echo link setup. ++ if test x${build} = x${host} ; then ++- if test x${host} = x${target} ; then +++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then ++ echo "Links are now set up to build a native compiler for ${target}." 1>&2 ++ else ++ echo "Links are now set up to build a cross-compiler" 1>&2 ++ echo " from ${host} to ${target}." 1>&2 ++ fi ++ else ++- if test x${host} = x${target} ; then +++ if test x${host} = x${target} && test x$FORCE_CROSS_LAYOUT != xyes ; then ++ echo "Links are now set up to build (on ${build}) a native compiler" 1>&2 ++ echo " for ${target}." 1>&2 ++ else diff --cc debian/patches/gcc-gfdl-build.diff index 0000000,0000000..456f9a0 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-gfdl-build.diff @@@ -1,0 -1,0 +1,39 @@@ ++# DP: Build a dummy s-tm-texi without access to the texinfo sources ++ ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -2949,32 +2949,8 @@ s-tm-texi: $(srcdir)/doc/../doc/tm.texi ++ # \r is not portable to Solaris tr, therefore we have a special ++ # case for ASCII. We use \r for other encodings like EBCDIC. ++ s-tm-texi: build/genhooks$(build_exeext) $(srcdir)/doc/tm.texi.in ++- $(RUN_GEN) build/genhooks$(build_exeext) -d \ ++- $(srcdir)/doc/tm.texi.in > tmp-tm.texi ++- case `echo X|tr X '\101'` in \ ++- A) tr -d '\015' < tmp-tm.texi > tmp2-tm.texi ;; \ ++- *) tr -d '\r' < tmp-tm.texi > tmp2-tm.texi ;; \ ++- esac ++- mv tmp2-tm.texi tmp-tm.texi ++- $(SHELL) $(srcdir)/../move-if-change tmp-tm.texi tm.texi ++- @if cmp -s $(srcdir)/doc/tm.texi tm.texi; then \ ++- $(STAMP) $@; \ ++- elif test $(srcdir)/doc/tm.texi -nt $(srcdir)/doc/tm.texi.in \ ++- && ( test $(srcdir)/doc/tm.texi -nt $(srcdir)/target.def \ ++- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/c-family/c-target.def \ ++- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/common/common-target.def \ ++- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/d/d-target.def \ ++- || test $(srcdir)/doc/tm.texi -nt $(srcdir)/rust/rust-target.def \ ++- ); then \ ++- echo >&2 ; \ ++- echo You should edit $(srcdir)/doc/tm.texi.in rather than $(srcdir)/doc/tm.texi . >&2 ; \ ++- false; \ ++- else \ ++- echo >&2 ; \ ++- echo Verify that you have permission to grant a GFDL license for all >&2 ; \ ++- echo new text in $(objdir)/tm.texi, then copy it to $(srcdir)/doc/tm.texi. >&2 ; \ ++- false; \ ++- fi +++ cat $(srcdir)/doc/tm.texi.in > tmp-tm.texi +++ $(STAMP) $@ ++ ++ $(GIMPLE_MATCH_PD_SEQ_SRC): s-gimple-match gimple-match-head.cc; @true ++ gimple-match-auto.h: s-gimple-match; @true diff --cc debian/patches/gcc-hash-style-gnu.diff index 0000000,0000000..f3a03aa new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-hash-style-gnu.diff @@@ -1,0 -1,0 +1,164 @@@ ++# DP: Link using --hash-style=gnu (aarch64, alpha, amd64, armel, armhf, ia64, ++# DP: i386, powerpc, ppc64, riscv64, s390, sparc) ++ ++2006-07-11 Jakub Jelinek ++ ++ * config/i386/linux.h (LINK_SPEC): Add --hash-style=gnu. ++ * config/i386/linux64.h (LINK_SPEC): Likewise. ++ * config/rs6000/sysv4.h (LINK_OS_LINUX_SPEC): Likewise. ++ * config/rs6000/linux64.h (LINK_OS_LINUX_SPEC32, ++ LINK_OS_LINUX_SPEC64): Likewise. ++ * config/s390/linux.h (LINK_SPEC): Likewise. ++ * config/ia64/linux.h (LINK_SPEC): Likewise. ++ * config/sparc/linux.h (LINK_SPEC): Likewise. ++ * config/sparc/linux64.h (LINK_SPEC, LINK_ARCH32_SPEC, ++ LINK_ARCH64_SPEC): Likewise. ++ * config/alpha/linux-elf.h (LINK_SPEC): Likewise. ++ ++2009-12-21 Matthias Klose ++ ++ * config/arm/linux-elf.h (LINK_SPEC): Add --hash-style=gnu. ++ ++2012-11-17 Matthias Klose ++ ++ * config/aarch64/aarch64-linux.h (LINK_SPEC): Add --hash-style=gnu. ++ ++2018-03-02 Aurelien Jarno ++ ++ * config/riscv/linux.h (LINK_SPEC): Add --hash-style=gnu. ++ ++--- ++ gcc/config/alpha/linux-elf.h | 2 +- ++ gcc/config/i386/linux.h | 2 +- ++ gcc/config/i386/linux64.h | 2 +- ++ gcc/config/ia64/linux.h | 2 +- ++ gcc/config/rs6000/linux64.h | 4 ++-- ++ gcc/config/rs6000/sysv4.h | 2 +- ++ gcc/config/s390/linux.h | 2 +- ++ gcc/config/sparc/linux.h | 2 +- ++ 8 files changed, 9 insertions(+), 9 deletions(-) ++ ++--- a/src/gcc/config/alpha/linux-elf.h +++++ b/src/gcc/config/alpha/linux-elf.h ++@@ -37,7 +37,7 @@ along with GCC; see the file COPYING3. ++ ++ #define ELF_DYNAMIC_LINKER GNU_USER_DYNAMIC_LINKER ++ ++-#define LINK_SPEC "-m elf64alpha %{G*} %{relax:-relax} \ +++#define LINK_SPEC "-m elf64alpha --hash-style=gnu %{G*} %{relax:-relax} \ ++ %{O*:-O3} %{!O*:-O1} \ ++ %{shared:-shared} \ ++ %{!shared: \ ++--- a/src/gcc/config/ia64/linux.h +++++ b/src/gcc/config/ia64/linux.h ++@@ -58,7 +58,7 @@ do { \ ++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux-ia64.so.2" ++ ++ #undef LINK_SPEC ++-#define LINK_SPEC "\ +++#define LINK_SPEC " --hash-style=gnu \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ %{!static: \ ++--- a/src/gcc/config/rs6000/linux64.h +++++ b/src/gcc/config/rs6000/linux64.h ++@@ -378,13 +378,13 @@ extern int dot_symbols; ++ " -m elf64ppc") ++ #endif ++ ++-#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " %{!shared: %{!static: \ +++#define LINK_OS_LINUX_SPEC32 LINK_OS_LINUX_EMUL32 " --hash-style=gnu %{!shared: %{!static: \ ++ %{!static-pie: \ ++ %{rdynamic:-export-dynamic} \ ++ -dynamic-linker " GNU_USER_DYNAMIC_LINKER32 "}}} \ ++ %(link_os_extra_spec32)" ++ ++-#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " %{!shared: %{!static: \ +++#define LINK_OS_LINUX_SPEC64 LINK_OS_LINUX_EMUL64 " --hash-style=gnu %{!shared: %{!static: \ ++ %{!static-pie: \ ++ %{rdynamic:-export-dynamic} \ ++ -dynamic-linker " GNU_USER_DYNAMIC_LINKER64 "}}} \ ++--- a/src/gcc/config/rs6000/sysv4.h +++++ b/src/gcc/config/rs6000/sysv4.h ++@@ -781,7 +781,7 @@ GNU_USER_TARGET_CC1_SPEC ++ #define GNU_USER_DYNAMIC_LINKER GLIBC_DYNAMIC_LINKER ++ #endif ++ ++-#define LINK_OS_LINUX_SPEC "-m elf32ppclinux %{!shared: %{!static: \ +++#define LINK_OS_LINUX_SPEC "-m elf32ppclinux --hash-style=gnu %{!shared: %{!static: \ ++ %{rdynamic:-export-dynamic} \ ++ -dynamic-linker " GNU_USER_DYNAMIC_LINKER "}}" ++ ++--- a/src/gcc/config/s390/linux.h +++++ b/src/gcc/config/s390/linux.h ++@@ -82,7 +82,7 @@ along with GCC; see the file COPYING3. ++ ++ #undef LINK_SPEC ++ #define LINK_SPEC \ ++- "%{m31:-m elf_s390}%{m64:-m elf64_s390} \ +++ "%{m31:-m elf_s390}%{m64:-m elf64_s390} --hash-style=gnu \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ %{static:-static} \ ++--- a/src/gcc/config/sparc/linux.h +++++ b/src/gcc/config/sparc/linux.h ++@@ -81,7 +81,7 @@ extern const char *host_detect_local_cpu ++ #define GLIBC_DYNAMIC_LINKER "/lib/ld-linux.so.2" ++ ++ #undef LINK_SPEC ++-#define LINK_SPEC "-m elf32_sparc %{shared:-shared} \ +++#define LINK_SPEC "-m elf32_sparc --hash-style=gnu %{shared:-shared} \ ++ %{!mno-relax:%{!r:-relax}} \ ++ %{!shared: \ ++ %{!static: \ ++--- a/src/gcc/config/arm/linux-elf.h +++++ b/src/gcc/config/arm/linux-elf.h ++@@ -70,6 +70,7 @@ ++ %{rdynamic:-export-dynamic} \ ++ %{!shared:-dynamic-linker " GNU_USER_DYNAMIC_LINKER "}} \ ++ -X \ +++ --hash-style=gnu \ ++ %{mbig-endian:-EB} %{mlittle-endian:-EL}" \ ++ SUBTARGET_EXTRA_LINK_SPEC ++ ++--- a/src/gcc/config/i386/gnu-user.h +++++ b/src/gcc/config/i386/gnu-user.h ++@@ -68,7 +68,7 @@ along with GCC; see the file COPYING3. ++ { "link_emulation", GNU_USER_LINK_EMULATION },\ ++ { "dynamic_linker", GNU_USER_DYNAMIC_LINKER } ++ ++-#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) %{shared:-shared} \ +++#define GNU_USER_TARGET_LINK_SPEC "-m %(link_emulation) --hash-style=gnu %{shared:-shared} \ ++ %{!shared: \ ++ %{!static: \ ++ %{!static-pie: \ ++--- a/src/gcc/config/i386/gnu-user64.h +++++ b/src/gcc/config/i386/gnu-user64.h ++@@ -56,6 +56,7 @@ see the files COPYING3 and COPYING.RUNTI ++ "%{" SPEC_64 ":-m " GNU_USER_LINK_EMULATION64 "} \ ++ %{" SPEC_32 ":-m " GNU_USER_LINK_EMULATION32 "} \ ++ %{" SPEC_X32 ":-m " GNU_USER_LINK_EMULATIONX32 "} \ +++ --hash-style=gnu \ ++ %{shared:-shared} \ ++ %{!shared: \ ++ %{!static: \ ++--- a/src/gcc/config/aarch64/aarch64-linux.h +++++ b/src/gcc/config/aarch64/aarch64-linux.h ++@@ -39,6 +39,7 @@ ++ #define CPP_SPEC "%{pthread:-D_REENTRANT}" ++ ++ #define LINUX_TARGET_LINK_SPEC "%{h*} \ +++ --hash-style=gnu \ ++ %{static:-Bstatic} \ ++ %{shared:-shared} \ ++ %{symbolic:-Bsymbolic} \ ++--- a/src/gcc/config/riscv/linux.h +++++ b/src/gcc/config/riscv/linux.h ++@@ -48,6 +48,7 @@ along with GCC; see the file COPYING3. ++ "%{mabi=ilp32:_ilp32}" ++ ++ #define LINK_SPEC "\ +++-hash-style=gnu \ ++ -melf" XLEN_SPEC DEFAULT_ENDIAN_SPEC "riscv" LD_EMUL_SUFFIX " \ ++ %{mno-relax:--no-relax} \ ++ -X \ diff --cc debian/patches/gcc-ice-apport.diff index 0000000,0000000..aa6462c new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-ice-apport.diff @@@ -1,0 -1,0 +1,39 @@@ ++# DP: Report an ICE to apport (if apport is available ++# DP: and the environment variable GCC_NOAPPORT is not set) ++ ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -8171,13 +8171,16 @@ do_report_bug (const char **new_argv, co ++ if (status == ATTEMPT_STATUS_SUCCESS) ++ { ++ const bool gcc_dump = has_deb_build_options ("gcc-ice", "nodump"); +++ const bool gcc_apport +++ = !env.get ("GCC_NOAPPORT") +++ && !access ("/usr/share/apport/gcc_ice_hook", R_OK | X_OK); ++ ++ if (gcc_dump) ++ fnotice (stderr, ++ "Preprocessed source stored into %s file," ++ " please attach this to your bugreport.\n", ++ *out_file); ++- if (gcc_dump) +++ if (gcc_dump || gcc_apport) ++ { ++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); ++ ++@@ -8191,6 +8194,15 @@ do_report_bug (const char **new_argv, co ++ fflush (stderr); ++ free (cmd); ++ } +++ if (gcc_apport) +++ { +++ char *cmd +++ = XNEWVEC (char, 50 + strlen (*out_file) + strlen (new_argv[0])); +++ sprintf (cmd, "/usr/share/apport/gcc_ice_hook %s %s", new_argv[0], +++ *out_file); +++ system (cmd); +++ free (cmd); +++ } ++ /* Make sure it is not deleted. */ ++ free (*out_file); ++ *out_file = NULL; diff --cc debian/patches/gcc-ice-dump.diff index 0000000,0000000..2bc029e new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-ice-dump.diff @@@ -1,0 -1,0 +1,111 @@@ ++# DP: For ICEs, dump the preprocessed source file to stderr ++# DP: when in a distro build environment. ++ ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -3168,6 +3168,61 @@ access_check (const char *name, int mode ++ return access (name, mode); ++ } ++ +++/* Check whether options line contains the specified variable, and +++ optionally set to the supplied value */ +++ +++static bool +++check_options (const char *options, const char *var = nullptr, +++ const char *val = nullptr) +++{ +++ if (!var) +++ return false; +++ +++ const char *const var_found = strstr (options, var); +++ if (!var_found) +++ return false; +++ +++ if (val) +++ { +++ if (var_found[strlen (var)] != '=') +++ return false; +++ +++ const char *var_end = strchr (var_found, ' '); +++ if (!var_end) +++ var_end = strchr (var_found, '\0'); +++ +++ const char *const val_found = strstr (var_found, val); +++ if (!val_found || val_found > var_end) +++ return false; +++ +++ const char c0 = val_found[-1]; +++ const char c1 = val_found[strlen (val)]; +++ if ((c0 == '=' || c0 == ',') && (c1 == ',' || c1 == ' ' || c1 == '\0')) +++ return true; +++ } +++ else +++ { +++ const char c1 = var_found[strlen (var)]; +++ if (c1 == ' ' || c1 == '\0') +++ return true; +++ } +++ return false; +++} +++ +++/* Check whether DEB_BUILD_OPTIONS environment variable is set, and +++ that it does not contain the specified exclusion keyword. */ +++ +++static bool +++has_deb_build_options (const char *exclude_var = nullptr, +++ const char *exclude_val = nullptr) +++{ +++ const char *const deb_build_options = env.get ("DEB_BUILD_OPTIONS"); +++ if (!deb_build_options) +++ return false; +++ +++ return !check_options (deb_build_options, exclude_var, exclude_val); +++} +++ ++ /* Callback for find_a_file. Appends the file name to the directory ++ path. If the resulting file exists in the right mode, return the ++ full pathname to the file. */ ++@@ -3694,9 +3749,10 @@ execute (void) ++ /* For ICEs in cc1, cc1obj, cc1plus see if it is ++ reproducible or not. */ ++ const char *p; ++- if (flag_report_bug ++- && WEXITSTATUS (status) == ICE_EXIT_CODE ++- && i == 0 +++ const bool deb_build_options +++ = has_deb_build_options ("gcc-ice", "norepro"); +++ if ((flag_report_bug || deb_build_options) +++ && WEXITSTATUS (status) == ICE_EXIT_CODE && i == 0 ++ && (p = strrchr (commands[0].argv[0], DIR_SEPARATOR)) ++ && startswith (p + 1, "cc1")) ++ try_generate_repro (commands[0].argv); ++@@ -8114,8 +8170,27 @@ do_report_bug (const char **new_argv, co ++ ++ if (status == ATTEMPT_STATUS_SUCCESS) ++ { ++- fnotice (stderr, "Preprocessed source stored into %s file," ++- " please attach this to your bugreport.\n", *out_file); +++ const bool gcc_dump = has_deb_build_options ("gcc-ice", "nodump"); +++ +++ if (gcc_dump) +++ fnotice (stderr, +++ "Preprocessed source stored into %s file," +++ " please attach this to your bugreport.\n", +++ *out_file); +++ if (gcc_dump) +++ { +++ char *cmd = XNEWVEC (char, 50 + strlen (*out_file)); +++ +++ sprintf (cmd, "/usr/bin/awk '{print \"%d:\", $0}' %s >&2", getpid (), +++ *out_file); +++ fprintf (stderr, "=== BEGIN GCC DUMP ===\n"); +++ fflush (stderr); +++ system (cmd); +++ fflush (stderr); +++ fprintf (stderr, "=== END GCC DUMP ===\n"); +++ fflush (stderr); +++ free (cmd); +++ } ++ /* Make sure it is not deleted. */ ++ free (*out_file); ++ *out_file = NULL; diff --cc debian/patches/gcc-m68k-no-fold-mem-offsets-doc.diff index 0000000,0000000..b95bec2 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-m68k-no-fold-mem-offsets-doc.diff @@@ -1,0 -1,0 +1,16 @@@ ++From 6a616afb8dadcd33506001914f5ca6fa37749b6b Mon Sep 17 00:00:00 2001 ++From: John Paul Adrian Glaubitz ++Date: Sun, 8 Jun 2025 07:59:26 +0200 ++Subject: [PATCH] Disable fold-mem-offsets, only applied for m68k ++ ++--- a/src/gcc/doc/invoke.texi +++++ b/src/gcc/doc/invoke.texi ++@@ -15255,6 +15255,8 @@ Try to eliminate add instructions by fol ++ ++ Enabled at levels @option{-O2}, @option{-O3}. ++ +++NOTE: On Debian/Ubuntu this is disabled by default on m68k-linux-gnu. +++ ++ @opindex fcprop-registers ++ @item -fcprop-registers ++ After register allocation and post-register allocation instruction splitting, diff --cc debian/patches/gcc-m68k-no-fold-mem-offsets.diff index 0000000,0000000..56dffaf new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-m68k-no-fold-mem-offsets.diff @@@ -1,0 -1,0 +1,25 @@@ ++From 6a616afb8dadcd33506001914f5ca6fa37749b6b Mon Sep 17 00:00:00 2001 ++From: John Paul Adrian Glaubitz ++Date: Sun, 8 Jun 2025 07:59:26 +0200 ++Subject: [PATCH] Disable fold-mem-offsets, only applied for m68k ++ ++--- ++ gcc/common.opt | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++diff --git a/gcc/common.opt b/gcc/common.opt ++index 0e50305dde8..e57dff18af7 100644 ++--- a/src/gcc/common.opt +++++ b/src/gcc/common.opt ++@@ -1295,7 +1295,7 @@ Common Var(flag_cprop_registers) Optimization ++ Perform a register copy-propagation optimization pass. ++ ++ ffold-mem-offsets ++-Common Var(flag_fold_mem_offsets) Init(1) Optimization +++Common Var(flag_fold_mem_offsets) Init(0) Optimization ++ Fold instructions calculating memory offsets to the memory access instruction if possible. ++ ++ fcrossjumping ++-- ++2.49.0 ++ diff --cc debian/patches/gcc-multiarch.diff index 0000000,0000000..7a9cc84 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-multiarch.diff @@@ -1,0 -1,0 +1,189 @@@ ++# DP: - Remaining multiarch patches, not yet submitted upstream. ++# DP: - Add MULTIARCH_DIRNAME definitions for multilib configurations, ++# DP: which are used for the non-multilib builds. ++ ++2013-06-12 Matthias Klose ++ ++ * config/i386/t-linux64: Set MULTIARCH_DIRNAME. ++ * config.gcc (i[34567]86-*-linux* | x86_64-*-linux*): Prepend ++ i386/t-linux to $tmake_file; ++ set default ABI to N64 for mips64el. ++ * config/mips/t-linux64: Set MULTIARCH_DIRNAME. ++ * config/rs6000/t-linux64: Set MULTIARCH_DIRNAME. ++ * config/s390/t-linux64: Set MULTIARCH_DIRNAME. ++ * config/sparc/t-linux64: Set MULTIARCH_DIRNAME. ++ * src/gcc/config/mips/mips.h: (/usr)/lib as default path. ++ ++--- a/src/gcc/config/sh/t-linux +++++ b/src/gcc/config/sh/t-linux ++@@ -1,3 +1,11 @@ ++ MULTILIB_DIRNAMES= ++ MULTILIB_MATCHES= +++ +++ifneq (,$(findstring sh4,$(target))) +++MULTILIB_OSDIRNAMES = .:sh4-linux-gnu sh4_nofpu-linux-gnu:sh4-linux-gnu +++MULTIARCH_DIRNAME = $(call if_multiarch,sh4-linux-gnu) +++else +++MULTILIB_OSDIRNAMES = .:sh3-linux-gnu sh3_nofpu-linux-gnu:sh3-linux-gnu +++MULTIARCH_DIRNAME = $(call if_multiarch,sh3-linux-gnu) +++endif ++ MULTILIB_EXCEPTIONS=m1 mb/m1 m2a ++--- a/src/gcc/config/sparc/t-linux64 +++++ b/src/gcc/config/sparc/t-linux64 ++@@ -27,3 +27,5 @@ MULTILIB_OPTIONS = m64/m32 ++ MULTILIB_DIRNAMES = 64 32 ++ MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) ++ MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) +++ +++MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) ++--- a/src/gcc/config/s390/t-linux64 +++++ b/src/gcc/config/s390/t-linux64 ++@@ -9,3 +9,5 @@ MULTILIB_OPTIONS = m64/m31 ++ MULTILIB_DIRNAMES = 64 32 ++ MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) ++ MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) +++ +++MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) ++--- a/src/gcc/config/rs6000/t-linux64 +++++ b/src/gcc/config/rs6000/t-linux64 ++@@ -31,6 +31,8 @@ MULTILIB_EXTRA_OPTS := ++ MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) ++ MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) ++ +++MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) +++ ++ rs6000-linux.o: $(srcdir)/config/rs6000/rs6000-linux.cc ++ $(COMPILE) $< ++ $(POSTCOMPILE) ++--- a/src/gcc/config/i386/t-linux64 +++++ b/src/gcc/config/i386/t-linux64 ++@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, ++ MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) ++ MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) ++ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) +++ +++ifneq (,$(findstring x86_64,$(target))) +++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) +++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnux32) +++ else +++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-linux-gnu) +++ endif +++else +++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-linux-gnu) +++endif ++--- a/src/gcc/config/mips/t-linux64 +++++ b/src/gcc/config/mips/t-linux64 ++@@ -18,24 +18,28 @@ ++ ++ MULTILIB_OPTIONS = mabi=n32/mabi=32/mabi=64 ++ MULTILIB_DIRNAMES = n32 32 64 +++MIPS_R6 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),r6) +++MIPS_32 = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),32) +++MIPS_ISA = $(if $(findstring r6, $(firstword $(subst -, ,$(target)))),isa) ++ MIPS_EL = $(if $(filter %el, $(firstword $(subst -, ,$(target)))),el) ++ MIPS_SOFT = $(if $(strip $(filter MASK_SOFT_FLOAT_ABI, $(target_cpu_default)) $(filter soft, $(with_float))),soft) +++ ++ ifeq (yes,$(enable_multiarch)) ++ ifneq (,$(findstring gnuabi64,$(target))) ++ MULTILIB_OSDIRNAMES = \ ++- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++- ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++- ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) +++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ else ifneq (,$(findstring gnuabin32,$(target))) ++ MULTILIB_OSDIRNAMES = \ ++- ../lib$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++- ../libo32$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) +++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +++ ../libo32$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ else ++ MULTILIB_OSDIRNAMES = \ ++- ../lib32$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ ++- ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++- ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) +++ ../lib32$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) \ +++ ../lib$(call if_multiarch,:mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ +++ ../lib64$(call if_multiarch,:mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ endif ++ else ++ MULTILIB_OSDIRNAMES = \ ++@@ -43,3 +47,13 @@ else ++ ../lib$(call if_multiarch,:mips$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) \ ++ ../lib64$(call if_multiarch,:mips64$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) ++ endif +++ +++ifneq (,$(findstring abin32,$(target))) +++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabin32$(MIPS_SOFT)) +++else +++ifneq (,$(findstring abi64,$(target))) +++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)64$(MIPS_R6)$(MIPS_EL)-linux-gnuabi64$(MIPS_SOFT)) +++else +++MULTIARCH_DIRNAME = $(call if_multiarch,mips$(MIPS_ISA)$(MIPS_32)$(MIPS_R6)$(MIPS_EL)-linux-gnu$(MIPS_SOFT)) +++endif +++endif ++--- a/src/gcc/config.gcc +++++ b/src/gcc/config.gcc ++@@ -2683,7 +2683,8 @@ mips*-*-linux*) # Linux MIPS, either ++ extra_options="${extra_options} linux-android.opt" ++ case ${target} in ++ mipsisa32r6*) ++- default_mips_arch=mips32r6 +++ with_arch_32="mips32r6" +++ with_arch_64="mips64r6" ++ ;; ++ mipsisa32r2*) ++ default_mips_arch=mips32r2 ++@@ -2705,7 +2706,8 @@ mips*-*-linux*) # Linux MIPS, either ++ ;; ++ mipsisa64r6*-*-linux-gnuabi64) ++ default_mips_abi=64 ++- default_mips_arch=mips64r6 +++ with_arch_32="mips32r6" +++ with_arch_64="mips64r6" ++ enable_mips_multilibs="yes" ++ ;; ++ mipsisa64r6*-*-linux*) ++@@ -5971,7 +5973,7 @@ case ${target} in ++ ;; ++ i[34567]86-*-linux* | x86_64-*-linux*) ++ extra_objs="${extra_objs} gnu-property.o" ++- tmake_file="$tmake_file i386/t-linux i386/t-gnu-property" +++ tmake_file="i386/t-linux $tmake_file i386/t-gnu-property" ++ ;; ++ i[34567]86-*-kfreebsd*-gnu | x86_64-*-kfreebsd*-gnu) ++ tmake_file="$tmake_file i386/t-kfreebsd" ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -588,7 +588,7 @@ BUILD_SYSTEM_HEADER_DIR = `echo @BUILD_S ++ STMP_FIXINC = @STMP_FIXINC@ ++ ++ # Test to see whether exists in the system header files. ++-LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h ] +++LIMITS_H_TEST = [ -f $(BUILD_SYSTEM_HEADER_DIR)/limits.h -o -f $(BUILD_SYSTEM_HEADER_DIR)/$(MULTIARCH_DIRNAME)/limits.h ] ++ ++ # Directory for prefix to system directories, for ++ # each of $(system_prefix)/usr/include, $(system_prefix)/usr/lib, etc. ++--- a/src/gcc/config/aarch64/t-aarch64-linux +++++ b/src/gcc/config/aarch64/t-aarch64-linux ++@@ -22,7 +22,7 @@ LIB1ASMSRC = aarch64/lib1funcs.asm ++ LIB1ASMFUNCS = _aarch64_sync_cache_range ++ ++ AARCH_BE = $(if $(findstring TARGET_BIG_ENDIAN_DEFAULT=1, $(tm_defines)),_be) ++-MULTILIB_OSDIRNAMES = mabi.lp64=../lib64$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) +++MULTILIB_OSDIRNAMES = mabi.lp64=../lib$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu) ++ MULTIARCH_DIRNAME = $(call if_multiarch,aarch64$(AARCH_BE)-linux-gnu) ++ ++ MULTILIB_OSDIRNAMES += mabi.ilp32=../libilp32$(call if_multiarch,:aarch64$(AARCH_BE)-linux-gnu_ilp32) ++--- a/src/gcc/config/arc/t-multilib-linux +++++ b/src/gcc/config/arc/t-multilib-linux ++@@ -23,3 +23,6 @@ MULTILIB_DIRNAMES = hs archs hs38 hs38_l ++ # Aliases: ++ MULTILIB_MATCHES += mcpu?arc700=mA7 ++ MULTILIB_MATCHES += mcpu?arc700=mARC700 +++ +++MULTILIB_OSDIRNAMES = +++MULTIARCH_DIRNAME = $(call if_multiarch,arc-linux-gnu) diff --cc debian/patches/gcc-multilib-multiarch.diff index 0000000,0000000..b9e293b new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-multilib-multiarch.diff @@@ -1,0 -1,0 +1,100 @@@ ++# DP: Don't auto-detect multilib osdirnames. ++ ++--- a/src/gcc/config/sparc/t-linux64 +++++ b/src/gcc/config/sparc/t-linux64 ++@@ -25,7 +25,12 @@ ++ ++ MULTILIB_OPTIONS = m64/m32 ++ MULTILIB_DIRNAMES = 64 32 +++ifneq (,$(findstring sparc64,$(target))) +++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:sparc64-linux-gnu) +++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:sparc-linux-gnu) +++else ++ MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:sparc64-linux-gnu) ++-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:sparc-linux-gnu) +++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:sparc-linux-gnu) +++endif ++ ++ MULTIARCH_DIRNAME = $(call if_multiarch,sparc$(if $(findstring 64,$(target)),64)-linux-gnu) ++--- a/src/gcc/config/s390/t-linux64 +++++ b/src/gcc/config/s390/t-linux64 ++@@ -7,7 +7,12 @@ ++ ++ MULTILIB_OPTIONS = m64/m31 ++ MULTILIB_DIRNAMES = 64 32 +++ifneq (,$(findstring s390x,$(target))) +++MULTILIB_OSDIRNAMES = ../lib$(call if_multiarch,:s390x-linux-gnu) +++MULTILIB_OSDIRNAMES += ../lib32$(call if_multiarch,:s390-linux-gnu) +++else ++ MULTILIB_OSDIRNAMES = ../lib64$(call if_multiarch,:s390x-linux-gnu) ++-MULTILIB_OSDIRNAMES += $(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:s390-linux-gnu) +++MULTILIB_OSDIRNAMES += ../lib$(call if_multiarch,:s390-linux-gnu) +++endif ++ ++ MULTIARCH_DIRNAME = $(call if_multiarch,s390$(if $(findstring s390x,$(target)),x)-linux-gnu) ++--- a/src/gcc/config/rs6000/t-linux64 +++++ b/src/gcc/config/rs6000/t-linux64 ++@@ -28,8 +28,13 @@ ++ MULTILIB_OPTIONS := m64/m32 ++ MULTILIB_DIRNAMES := 64 32 ++ MULTILIB_EXTRA_OPTS := +++ifneq (,$(findstring powerpc64,$(target))) +++MULTILIB_OSDIRNAMES := m64=../lib$(call if_multiarch,:powerpc64-linux-gnu) +++MULTILIB_OSDIRNAMES += m32=../lib32$(call if_multiarch,:powerpc-linux-gnu) +++else ++ MULTILIB_OSDIRNAMES := m64=../lib64$(call if_multiarch,:powerpc64-linux-gnu) ++-MULTILIB_OSDIRNAMES += m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:powerpc-linux-gnu) +++MULTILIB_OSDIRNAMES += m32=../lib$(call if_multiarch,:powerpc-linux-gnu) +++endif ++ ++ MULTIARCH_DIRNAME = $(call if_multiarch,powerpc$(if $(findstring 64,$(target)),64)-linux-gnu) ++ ++--- a/src/gcc/config/i386/t-linux64 +++++ b/src/gcc/config/i386/t-linux64 ++@@ -33,9 +33,19 @@ ++ comma=, ++ MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) ++ MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) +++ifneq (,$(findstring gnux32,$(target))) ++ MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) ++-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-linux-gnu) +++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) +++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-linux-gnux32) +++else ifneq (,$(findstring x86_64,$(target))) +++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-linux-gnu) +++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-linux-gnu) ++ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) +++else +++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-linux-gnu) +++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-linux-gnu) +++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-linux-gnux32) +++endif ++ ++ ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) ++--- a/src/gcc/config/rs6000/t-linux +++++ b/src/gcc/config/rs6000/t-linux ++@@ -2,7 +2,7 @@ ++ # or soft-float. ++ ifeq (,$(filter $(with_cpu),$(SOFT_FLOAT_CPUS))$(findstring soft,$(with_float))) ++ ifneq (,$(findstring powerpc64,$(target))) ++-MULTILIB_OSDIRNAMES := .=../lib64$(call if_multiarch,:powerpc64-linux-gnu) +++MULTILIB_OSDIRNAMES := .=../lib$(call if_multiarch,:powerpc64-linux-gnu) ++ else ++ MULTIARCH_DIRNAME := $(call if_multiarch,powerpc-linux-gnu) ++ endif ++--- a/src/gcc/config/loongarch/t-linux +++++ b/src/gcc/config/loongarch/t-linux ++@@ -16,9 +16,9 @@ ++ # along with GCC; see the file COPYING3. If not see ++ # . ++ ++-MULTIOSDIR_lp64d := ../lib64$(call if_multiarch,:loongarch64-linux-gnu) ++-MULTIOSDIR_lp64f := ../lib64/f32$(call if_multiarch,:loongarch64-linux-gnuf32) ++-MULTIOSDIR_lp64s := ../lib64/sf$(call if_multiarch,:loongarch64-linux-gnusf) +++MULTIOSDIR_lp64d := ../lib$(call if_multiarch,:loongarch64-linux-gnu) +++MULTIOSDIR_lp64f := ../lib/f32$(call if_multiarch,:loongarch64-linux-gnuf32) +++MULTIOSDIR_lp64s := ../lib/sf$(call if_multiarch,:loongarch64-linux-gnusf) ++ ++ # Don't define MULTILIB_OSDIRNAMES if multilib is disabled. ++ ifeq ($(filter LA_DISABLE_MULTILIB,$(tm_defines)),) diff --cc debian/patches/gcc-no-multilib-dejagnu.diff index 0000000,0000000..7fd33e1 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-no-multilib-dejagnu.diff @@@ -1,0 -1,0 +1,61 @@@ ++# DP: Don't run the gnat and gm2 tests for multilibs, which are not built ++ ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -4598,7 +4598,12 @@ $(filter-out $(lang_checks_parallelized) ++ if [ -f $${rootme}/../expect/expect ] ; then \ ++ TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ ++ export TCL_LIBRARY ; fi ; \ ++- $(RUNTEST) --tool $* $(RUNTESTFLAGS)) +++ case "$*" in \ +++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ +++ (*) rtflags=$(RUNTESTFLAGS);; \ +++ esac; \ +++ echo "CHECK TARGET: $* -> $$rtflags"; \ +++ $(RUNTEST) --tool $* $$rtflags) ++ ++ $(patsubst %,%-subtargets,$(lang_checks)): check-%-subtargets: ++ @echo check-$* ++@@ -4632,12 +4637,17 @@ check_p_subdirs=$(wordlist 1,$(check_p_c ++ # testsuites like objc or go. ++ $(lang_checks_parallelized): check-% : site.exp ++ -rm -rf $(TESTSUITEDIR)/$*-parallel ++- @if [ -n "$(filter -j%, $(MFLAGS))" ]; then \ +++ @case "$*" in \ +++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ +++ (*) rtflags=$(RUNTESTFLAGS);; \ +++ esac; \ +++ echo "CHECK TARGET: $* -> $$rtflags"; \ +++ if [ -n "$(filter -j%, $(MFLAGS))" ]; then \ ++ test -d $(TESTSUITEDIR) || mkdir $(TESTSUITEDIR) || true; \ ++ test -d $(TESTSUITEDIR)/$*-parallel || mkdir $(TESTSUITEDIR)/$*-parallel || true; \ ++ GCC_RUNTEST_PARALLELIZE_DIR=`${PWD_COMMAND}`/$(TESTSUITEDIR)/$(check_p_tool)-parallel ; \ ++ export GCC_RUNTEST_PARALLELIZE_DIR ; \ ++- $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$(RUNTESTFLAGS)" \ +++ $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$$rtflags" \ ++ EXPECT=$(EXPECT) \ ++ check-parallel-$* \ ++ $(patsubst %,check-parallel-$*_%, $(check_p_subdirs)); \ ++@@ -4656,7 +4666,7 @@ $(lang_checks_parallelized): check-% : s ++ > $(TESTSUITEDIR)/$*/$*.log; \ ++ rm -rf $(TESTSUITEDIR)/$*-parallel || true; \ ++ else \ ++- $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$(RUNTESTFLAGS)" \ +++ $(MAKE) TESTSUITEDIR="$(TESTSUITEDIR)" RUNTESTFLAGS="$$rtflags" \ ++ EXPECT=$(EXPECT) \ ++ check_$*_parallelize= check-parallel-$*; \ ++ fi ++@@ -4682,7 +4692,12 @@ check-parallel-% : site.exp ++ TCL_LIBRARY=`cd .. ; cd $${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \ ++ export TCL_LIBRARY ; \ ++ fi ; \ ++- $(RUNTEST) --tool $(check_p_tool) $(RUNTESTFLAGS); \ +++ case "$*" in \ +++ (gnat*|gm2*) rtflags=$$(printf '%s' '$(RUNTESTFLAGS)' | sed -E 's/,-m[a-z2-6=]+//g');; \ +++ (*) rtflags=$(RUNTESTFLAGS);; \ +++ esac; \ +++ echo "CHECK TARGET: $* -> $$rtflags"; \ +++ $(RUNTEST) --tool $(check_p_tool) $$rtflags; \ ++ if [ -n "$$GCC_RUNTEST_PARALLELIZE_DIR" ] ; then \ ++ touch $${rootme}/$(TESTSUITEDIR)/$(check_p_tool)-parallel/finished; \ ++ fi ; \ diff --cc debian/patches/gcc-riscv-extensions.diff index 0000000,0000000..8408afc new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-riscv-extensions.diff @@@ -1,0 -1,0 +1,164 @@@ ++From fbde53989e4df052c68ddf83fe1a9ae4e093ba47 Mon Sep 17 00:00:00 2001 ++From: Dongyan Chen ++Date: Mon, 12 May 2025 17:19:24 +0800 ++Subject: [PATCH 1/1] RISC-V: Minimal support for ssnpm, smnpm and smmpm ++ extensions. ++ ++This patch support ssnpm, smnpm, smmpm, sspm and supm extensions[1]. ++To enable GCC to recognize and process ssnpm, smnpm, smmpm, sspm and ++supm extensions correctly at compile time. ++ ++[1]https://github.com/riscv/riscv-j-extension/blob/master/zjpm/instructions.adoc ++ ++Changes for v5: ++- Fix the testsuite error in arch-50.c. ++Changes for v4: ++- Fix the code based on the commit id 9b13bea07706a7cae0185f8a860d67209308c050. ++Changes for v3: ++- Fix the error messages in gcc/testsuite/gcc.target/riscv/arch-46.c ++Changes for v2: ++- Add the sspm and supm extensions. ++- Add the check_conflict_ext function to check the compatibility of ssnpm, smnpm, smmpm, sspm and supm extensions. ++- Add the test cases for ssnpm, smnpm, smmpm, sspm and supm extensions. ++ ++gcc/ChangeLog: ++ ++ * common/config/riscv/riscv-common.cc ++ (riscv_subset_list::check_conflict_ext): New extension. ++ * config/riscv/riscv.opt: Ditto. ++ ++gcc/testsuite/ChangeLog: ++ ++ * gcc.target/riscv/arch-ss-1.c: New test. ++ * gcc.target/riscv/arch-ss-2.c: New test. ++ ++Signed-off-by: Heinrich Schuchardt ++--- ++ gcc/common/config/riscv/riscv-common.cc | 36 ++++++++++++++++++++++ ++ gcc/config/riscv/riscv.opt | 19 ++++++++++++ ++ gcc/testsuite/gcc.target/riscv/arch-ss-1.c | 5 +++ ++ gcc/testsuite/gcc.target/riscv/arch-ss-2.c | 15 +++++++++ ++ 4 files changed, 75 insertions(+) ++ create mode 100644 gcc/testsuite/gcc.target/riscv/arch-ss-1.c ++ create mode 100644 gcc/testsuite/gcc.target/riscv/arch-ss-2.c ++ ++--- a/src/gcc/common/config/riscv/riscv-common.cc +++++ b/src/gcc/common/config/riscv/riscv-common.cc ++@@ -227,6 +227,10 @@ static const riscv_implied_info_t riscv_implied_info[] = ++ {"ssstateen", "zicsr"}, ++ {"sstc", "zicsr"}, ++ +++ {"ssnpm", "zicsr"}, +++ {"smnpm", "zicsr"}, +++ {"smmpm", "zicsr"}, +++ ++ {"xsfvcp", "zve32x"}, ++ ++ {NULL, NULL} ++@@ -409,6 +413,12 @@ static const struct riscv_ext_version riscv_ext_version_table[] = ++ {"ssstateen", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"sstc", ISA_SPEC_CLASS_NONE, 1, 0}, ++ +++ {"ssnpm", ISA_SPEC_CLASS_NONE, 1, 0}, +++ {"smnpm", ISA_SPEC_CLASS_NONE, 1, 0}, +++ {"smmpm", ISA_SPEC_CLASS_NONE, 1, 0}, +++ {"sspm", ISA_SPEC_CLASS_NONE, 1, 0}, +++ {"supm", ISA_SPEC_CLASS_NONE, 1, 0}, +++ ++ {"svinval", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"svnapot", ISA_SPEC_CLASS_NONE, 1, 0}, ++ {"svpbmt", ISA_SPEC_CLASS_NONE, 1, 0}, ++@@ -1309,6 +1319,26 @@ riscv_subset_list::check_conflict_ext () ++ error_at (m_loc, "%<-march=%s%>: zcf extension supports in rv32 only", ++ m_arch); ++ +++ if (lookup ("ssnpm") && m_xlen == 32) +++ error_at (m_loc, "%<-march=%s%>: ssnpm extension supports in rv64 only", +++ m_arch); +++ +++ if (lookup ("smnpm") && m_xlen == 32) +++ error_at (m_loc, "%<-march=%s%>: smnpm extension supports in rv64 only", +++ m_arch); +++ +++ if (lookup ("smmpm") && m_xlen == 32) +++ error_at (m_loc, "%<-march=%s%>: smmpm extension supports in rv64 only", +++ m_arch); +++ +++ if (lookup ("sspm") && m_xlen == 32) +++ error_at (m_loc, "%<-march=%s%>: sspm extension supports in rv64 only", +++ m_arch); +++ +++ if (lookup ("supm") && m_xlen == 32) +++ error_at (m_loc, "%<-march=%s%>: supm extension supports in rv64 only", +++ m_arch); +++ ++ if (lookup ("zfinx") && lookup ("f")) ++ error_at (m_loc, ++ "%<-march=%s%>: z*inx conflicts with floating-point " ++@@ -1736,6 +1766,12 @@ static const riscv_ext_flag_table_t riscv_ext_flag_table[] = ++ RISCV_EXT_FLAG_ENTRY ("svnapot", x_riscv_sv_subext, MASK_SVNAPOT), ++ RISCV_EXT_FLAG_ENTRY ("svvptc", x_riscv_sv_subext, MASK_SVVPTC), ++ +++ RISCV_EXT_FLAG_ENTRY ("ssnpm", x_riscv_ss_subext, MASK_SSNPM), +++ RISCV_EXT_FLAG_ENTRY ("smnpm", x_riscv_sm_subext, MASK_SMNPM), +++ RISCV_EXT_FLAG_ENTRY ("smmpm", x_riscv_sm_subext, MASK_SMMPM), +++ RISCV_EXT_FLAG_ENTRY ("sspm", x_riscv_ss_subext, MASK_SSPM), +++ RISCV_EXT_FLAG_ENTRY ("supm", x_riscv_su_subext, MASK_SUPM), +++ ++ RISCV_EXT_FLAG_ENTRY ("ztso", x_riscv_ztso_subext, MASK_ZTSO), ++ ++ RISCV_EXT_FLAG_ENTRY ("xcvmac", x_riscv_xcv_subext, MASK_XCVMAC), ++--- a/src/gcc/config/riscv/riscv.opt +++++ b/src/gcc/config/riscv/riscv.opt ++@@ -472,6 +472,25 @@ Mask(SVNAPOT) Var(riscv_sv_subext) ++ ++ Mask(SVVPTC) Var(riscv_sv_subext) ++ +++TargetVariable +++int riscv_ss_subext +++ +++Mask(SSNPM) Var(riscv_ss_subext) +++ +++Mask(SSPM) Var(riscv_ss_subext) +++ +++TargetVariable +++int riscv_sm_subext +++ +++Mask(SMNPM) Var(riscv_sm_subext) +++ +++Mask(SMMPM) Var(riscv_sm_subext) +++ +++TargetVariable +++int riscv_su_subext +++ +++Mask(SUPM) Var(riscv_su_subext) +++ ++ TargetVariable ++ int riscv_ztso_subext ++ ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.target/riscv/arch-ss-1.c ++@@ -0,0 +1,5 @@ +++/* { dg-do compile } */ +++/* { dg-options "-march=rv64gc_ssnpm_smnpm_smmpm_sspm_supm -mabi=lp64" } */ +++int foo() +++{ +++} ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.target/riscv/arch-ss-2.c ++@@ -0,0 +1,15 @@ +++/* { dg-do compile } */ +++/* { dg-options "-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm -mabi=ilp32d" } */ +++int foo() +++{ +++} +++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32gc_ssnpm_smnpm_smmpm_sspm_supm': supm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': ssnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': smnpm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': smmpm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': sspm extension supports in rv64 only" "" { target *-*-* } 0 } */ +++/* { dg-error "'-march=rv32imafdc_zicsr_zifencei_zmmul_zaamo_zalrsc_zca_zcd_zcf_smmpm_smnpm_ssnpm_sspm_supm': supm extension supports in rv64 only" "" { target *-*-* } 0 } */ diff --cc debian/patches/gcc-search-prefixed-as-ld.diff index 0000000,0000000..c2a7f0f new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-search-prefixed-as-ld.diff @@@ -1,0 -1,0 +1,128 @@@ ++# DP: Search for the -as / -ld before serching for as / ld. ++ ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -1734,6 +1734,9 @@ struct path_prefix ++ ++ static struct path_prefix exec_prefixes = { 0, 0, "exec" }; ++ +++/* Copied from collect2.cc, a prefix list from the PATH variable. */ +++static struct path_prefix path_prefixes; +++ ++ /* List of prefixes to try when looking for startup (crt0) files. */ ++ ++ static struct path_prefix startfile_prefixes = { 0, 0, "startfile" }; ++@@ -3252,6 +3255,8 @@ find_a_file (const struct path_prefix *p ++ static char* ++ find_a_program (const char *name) ++ { +++ char *progname; +++ ++ /* Do not search if default matches query. */ ++ ++ #ifdef DEFAULT_ASSEMBLER ++@@ -3269,7 +3274,37 @@ find_a_program (const char *name) ++ return xstrdup (DEFAULT_DSYMUTIL); ++ #endif ++ ++- return find_a_file (&exec_prefixes, name, X_OK, false); +++ progname = find_a_file (&exec_prefixes, name, X_OK, false); +++ if (progname) +++ { +++#if 0 +++ fprintf (stderr, "find_a_program: %s --> %s\n", name, progname); +++#endif +++ return progname; +++ } +++ +++#ifndef ACCEL_COMPILER +++#ifndef CROSS_DIRECTORY_STRUCTURE +++ /* Search for the -as / -ld instead of as / ld in PATH. +++ Doing that after the as / ld lookups, because these are used unversioned +++ during the build. */ +++ if (! strcmp (name, "as") || ! strcmp (name, "ld")) +++ { +++ char *prefixed_name = XNEWVEC (char, strlen("as") + 2 +++ + strlen (DEFAULT_REAL_TARGET_MACHINE)); +++ strcpy (prefixed_name, DEFAULT_REAL_TARGET_MACHINE); +++ strcat (prefixed_name, "-"); +++ strcat (prefixed_name, name); +++ /* Lookup in PATH, not exec_prefixes. */ +++ progname = find_a_file (&path_prefixes, prefixed_name, X_OK, false); +++#if 0 +++ fprintf (stderr, "find_a_program: %s --> %s --> %s\n", +++ name, prefixed_name, progname); +++#endif +++ } +++#endif +++#endif +++ return progname; ++ } ++ ++ /* Ranking of prefixes in the sort list. -B prefixes are put before ++@@ -3400,6 +3435,56 @@ add_sysrooted_hdrs_prefix (struct path_p ++ require_machine_suffix, os_multilib); ++ } ++ +++/* Next two functions copied from file-find.cc, which defines its own +++ find_a_file function. */ +++ +++/* Take the value of the environment variable ENV, break it into a path, and +++ add of the entries to PPREFIX. */ +++ +++static void +++prefix_from_string (const char *p, struct path_prefix *pprefix) +++{ +++ const char *startp, *endp; +++ char *nstore = XNEWVEC (char, strlen (p) + 3); +++ +++ startp = endp = p; +++ while (1) +++ { +++ if (*endp == PATH_SEPARATOR || *endp == 0) +++ { +++ strncpy (nstore, startp, endp-startp); +++ if (endp == startp) +++ { +++ strcpy (nstore, "./"); +++ } +++ else if (! IS_DIR_SEPARATOR (endp[-1])) +++ { +++ nstore[endp-startp] = DIR_SEPARATOR; +++ nstore[endp-startp+1] = 0; +++ } +++ else +++ nstore[endp-startp] = 0; +++ +++ add_prefix (pprefix, nstore, "path", PREFIX_PRIORITY_LAST, 0, 0); +++ if (*endp == 0) +++ break; +++ endp = startp = endp + 1; +++ } +++ else +++ endp++; +++ } +++ free (nstore); +++} +++ +++static void +++prefix_from_env (const char *e, struct path_prefix *pprefix) +++{ +++ const char *const p = env.get (e); +++ +++ if (p) +++ prefix_from_string (p, pprefix); +++} +++ ++ ++ /* Execute the command specified by the arguments on the current line of spec. ++ When using pipes, this includes several piped-together commands ++@@ -8436,6 +8521,8 @@ driver::main (int argc, char **argv) ++ bool early_exit; ++ ++ set_progname (argv[0]); +++ /* Extract PATH into our path_prefixes list. */ +++ prefix_from_env ("PATH", &path_prefixes); ++ expand_at_files (&argc, &argv); ++ decode_argv (argc, const_cast (argv)); ++ global_initializations (); diff --cc debian/patches/gcc-target-include-asm.diff index 0000000,0000000..b761e30 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-target-include-asm.diff @@@ -1,0 -1,0 +1,13 @@@ ++# DP: Search $(builddir)/sys-include for the asm header files ++ ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -3828,7 +3828,7 @@ fi ++ # being built; programs in there won't even run. ++ if test "${build}" = "${host}" && test -d ${srcdir}/gcc; then ++ # Search for pre-installed headers if nothing else fits. ++- FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include' +++ FLAGS_FOR_TARGET=$FLAGS_FOR_TARGET' -B$(build_tooldir)/bin/ -B$(build_tooldir)/lib/ -isystem $(build_tooldir)/include -isystem $(build_tooldir)/sys-include -isystem $(CURDIR)/sys-include' ++ fi ++ ++ if test "x${use_gnu_ld}" = x && diff --cc debian/patches/gcc-textdomain.diff index 0000000,0000000..79b4341 new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-textdomain.diff @@@ -1,0 -1,0 +1,86 @@@ ++# DP: Set gettext's domain and textdomain to the versioned package name. ++ ++--- a/src/gcc/intl.cc +++++ b/src/gcc/intl.cc ++@@ -55,8 +55,8 @@ gcc_init_libintl (void) ++ setlocale (LC_ALL, ""); ++ #endif ++ ++- (void) bindtextdomain ("gcc", LOCALEDIR); ++- (void) textdomain ("gcc"); +++ (void) bindtextdomain ("gcc-15", LOCALEDIR); +++ (void) textdomain ("gcc-15"); ++ ++ /* Opening quotation mark. */ ++ open_quote = _("`"); ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -4774,8 +4774,8 @@ install-po: ++ dir=$(localedir)/$$lang/LC_MESSAGES; \ ++ echo $(mkinstalldirs) $(DESTDIR)$$dir; \ ++ $(mkinstalldirs) $(DESTDIR)$$dir || exit 1; \ ++- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ ++- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc.mo; \ +++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-15.mo; \ +++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/gcc-15.mo; \ ++ done ++ ++ # Rule for regenerating the message template (gcc.pot). ++--- a/src/libcpp/init.cc +++++ b/src/libcpp/init.cc ++@@ -210,7 +210,7 @@ init_library (void) ++ init_trigraph_map (); ++ ++ #ifdef ENABLE_NLS ++- (void) bindtextdomain (PACKAGE, LOCALEDIR); +++ (void) bindtextdomain (PACKAGE PACKAGE_SUFFIX, LOCALEDIR); ++ #endif ++ } ++ } ++--- a/src/libcpp/system.h +++++ b/src/libcpp/system.h ++@@ -284,7 +284,7 @@ extern int errno; ++ #endif ++ ++ #ifndef _ ++-# define _(msgid) dgettext (PACKAGE, msgid) +++# define _(msgid) dgettext (PACKAGE PACKAGE_SUFFIX, msgid) ++ #endif ++ ++ #ifndef N_ ++--- a/src/libcpp/Makefile.in +++++ b/src/libcpp/Makefile.in ++@@ -49,6 +49,7 @@ LDFLAGS = @LDFLAGS@ ++ LIBICONV = @LIBICONV@ ++ LIBINTL = @LIBINTL@ ++ PACKAGE = @PACKAGE@ +++PACKAGE_SUFFIX = -15 ++ RANLIB = @RANLIB@ ++ SHELL = @SHELL@ ++ USED_CATALOGS = @USED_CATALOGS@ ++@@ -73,11 +74,12 @@ depcomp = $(SHELL) $(srcdir)/../depcomp ++ ++ INCLUDES = -I$(srcdir) -I. -I$(srcdir)/../include @INCINTL@ \ ++ -I$(srcdir)/include +++DEBCPPFLAGS += -DPACKAGE_SUFFIX=\"$(strip $(PACKAGE_SUFFIX))\" ++ ++ ALL_CFLAGS = $(CFLAGS) $(WARN_CFLAGS) $(INCLUDES) $(CPPFLAGS) $(PICFLAG) \ ++- $(CET_HOST_FLAGS) +++ $(CET_HOST_FLAGS) $(DEBCPPFLAGS) ++ ALL_CXXFLAGS = $(CXXFLAGS) $(WARN_CXXFLAGS) $(NOEXCEPTION_FLAGS) $(INCLUDES) \ ++- $(CPPFLAGS) $(PICFLAG) $(CET_HOST_FLAGS) +++ $(CPPFLAGS) $(PICFLAG) $(CET_HOST_FLAGS) $(DEBCPPFLAGS) ++ ++ # The name of the compiler to use. ++ COMPILER = $(CXX) ++@@ -166,8 +168,8 @@ install-strip install: all installdirs ++ else continue; \ ++ fi; \ ++ dir=$(localedir)/$$lang/LC_MESSAGES; \ ++- echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ ++- $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE).mo; \ +++ echo $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ +++ $(INSTALL_DATA) $$cat $(DESTDIR)$$dir/$(PACKAGE)$(PACKAGE_SUFFIX).mo; \ ++ done ++ ++ mostlyclean: diff --cc debian/patches/gcc-verbose-lto-link.diff index 0000000,0000000..eb8d14c new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-verbose-lto-link.diff @@@ -1,0 -1,0 +1,13 @@@ ++# DP: Prefix LLINKER with /usr/bin/time -v ++ ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -314,7 +314,7 @@ LINKER += $(LD_PICFLAG) ++ ifeq (@DO_LINK_MUTEX@,true) ++ LLINKER = $(SHELL) $(srcdir)/lock-and-run.sh linkfe.lck $(LINKER) ++ else ++-LLINKER = $(LINKER) +++LLINKER = /usr/bin/time -v $(LINKER) ++ endif ++ ++ THIN_ARCHIVE_SUPPORT = @thin_archive_support@ diff --cc debian/patches/gcc-vhdl.diff index 0000000,0000000..feac12b new file mode 100644 --- /dev/null +++ b/debian/patches/gcc-vhdl.diff @@@ -1,0 -1,0 +1,15 @@@ ++# DP: Make vhdl known to the PPC backend. See ++# DP: https://github.com/ghdl/ghdl/blob/master/doc/development/building/GCC.rst ++ ++--- a/src/gcc/config/rs6000/rs6000-logue.cc +++++ b/src/gcc/config/rs6000/rs6000-logue.cc ++@@ -5344,7 +5344,8 @@ rs6000_output_function_epilogue (FILE *f ++ || ! strcmp (language_string, "GNU D") ++ || ! strcmp (language_string, "GNU Rust") ++ || ! strcmp (language_string, "GNU Algol 68") ++- || ! strcmp (language_string, "libgccjit")) +++ || ! strcmp (language_string, "libgccjit") +++ || ! strcmp (language_string, "vhdl")) ++ i = 0; ++ else if (! strcmp (language_string, "GNU F77") ++ || lang_GNU_Fortran ()) diff --cc debian/patches/gccrs-bootstrap-mipsel.diff index 0000000,0000000..a26e861 new file mode 100644 --- /dev/null +++ b/debian/patches/gccrs-bootstrap-mipsel.diff @@@ -1,0 -1,0 +1,12 @@@ ++# DP: Ignore gccrs bootstrap comparison failures on mipsel. ++ ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -4219,6 +4219,7 @@ compare_exclusions="$compare_exclusions ++ compare_exclusions="$compare_exclusions | gcc/cobol/parse\$(objext)" ++ case "$target" in ++ hppa*64*-*-hpux*) ;; +++ mipsel-*linux-gnu) compare_exclusions="$compare_exclusions | gcc/rust/rust-macro-builtins.o | gcc/rust/rust-session-manager.o | gcc/rust/rust-cfg-parser.o | gcc/rust/rust-lex.o" ;; ++ powerpc*-ibm-aix*) compare_exclusions="$compare_exclusions | *libgomp*\$(objext)" ;; ++ esac ++ AC_SUBST(compare_exclusions) diff --cc debian/patches/gdc-dynamic-link-phobos.diff index 0000000,0000000..71e7c58 new file mode 100644 --- /dev/null +++ b/debian/patches/gdc-dynamic-link-phobos.diff @@@ -1,0 -1,0 +1,17 @@@ ++# DP: Dynamically link the phobos library. ++ ++--- a/src/gcc/d/d-spec.cc +++++ b/src/gcc/d/d-spec.cc ++@@ -430,9 +430,9 @@ lang_specific_driver (cl_decoded_option ++ /* Add `-lgphobos' if we haven't already done so. */ ++ if (phobos_library != PHOBOS_NOLINK) ++ { ++- /* Default to static linking. */ ++- if (phobos_library != PHOBOS_DYNAMIC) ++- phobos_library = PHOBOS_STATIC; +++ /* Default to dynamic linking. */ +++ if (phobos_library != PHOBOS_STATIC) +++ phobos_library = PHOBOS_DYNAMIC; ++ ++ #ifdef HAVE_LD_STATIC_DYNAMIC ++ if (phobos_library == PHOBOS_STATIC && !static_link) diff --cc debian/patches/gdc-multiarch.diff index 0000000,0000000..1925e1a new file mode 100644 --- /dev/null +++ b/debian/patches/gdc-multiarch.diff @@@ -1,0 -1,0 +1,17 @@@ ++# DP: Set the D target include directory to a multiarch location. ++ ++--- a/src/gcc/d/Make-lang.in +++++ b/src/gcc/d/Make-lang.in ++@@ -61,7 +61,11 @@ ++ $(D_DMD_H) ++ ++ ++-gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) +++ifneq (,$(MULTIARCH_DIRNAME)) +++ gcc_d_target_include_dir = /usr/include/$(MULTIARCH_DIRNAME)/d/$(version) +++else +++ gcc_d_target_include_dir=$(gcc_d_include_dir)/$(target_noncanonical) +++endif ++ ++ # Name of phobos library ++ D_LIBPHOBOS = -DLIBPHOBOS=\"gphobos2\" diff --cc debian/patches/gdc-texinfo.diff index 0000000,0000000..a024daf new file mode 100644 --- /dev/null +++ b/debian/patches/gdc-texinfo.diff @@@ -1,0 -1,0 +1,53 @@@ ++# DP: Add macros for the gdc texinfo documentation. ++ ++--- a/src/gcc/d/gdc.texi +++++ b/src/gcc/d/gdc.texi ++@@ -45,6 +45,22 @@ man page gfdl(7). ++ @insertcopying ++ @end ifinfo ++ +++@macro versionsubtitle +++@ifclear DEVELOPMENT +++@subtitle For @sc{gcc} version @value{version-GCC} +++@end ifclear +++@ifset DEVELOPMENT +++@subtitle For @sc{gcc} version @value{version-GCC} (pre-release) +++@end ifset +++@ifset VERSION_PACKAGE +++@sp 1 +++@subtitle @value{VERSION_PACKAGE} +++@end ifset +++@c Even if there are no authors, the second titlepage line should be +++@c forced to the bottom of the page. +++@vskip 0pt plus 1filll +++@end macro +++ ++ @titlepage ++ @title The GNU D Compiler ++ @versionsubtitle ++@@ -123,6 +139,25 @@ This manual only documents the options s ++ * Developer Options:: Options useful for developers of gdc ++ @end menu ++ +++@macro gcctabopt{body} +++@code{\body\} +++@end macro +++@macro gccoptlist{body} +++@smallexample +++\body\ +++@end smallexample +++@end macro +++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; +++@c they get lost at some point in handling the macro. But if @macro is +++@c used here rather than @alias, it produces double line breaks. +++@iftex +++@alias gol = * +++@end iftex +++@ifnottex +++@macro gol +++@end macro +++@end ifnottex +++ ++ @c man begin OPTIONS ++ ++ @node Input and Output files diff --cc debian/patches/git-doc-updates.diff index 0000000,0000000..9fc9d84 new file mode 100644 --- /dev/null +++ b/debian/patches/git-doc-updates.diff @@@ -1,0 -1,0 +1,7 @@@ ++# DP: updates from the 15 branch upto 20260613 (documentation). ++ ++LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ ++ 4db0e8df15bef836558857c291c323add11d035c 57cdb9b2ff52074f585c2537aff0e62e4ecadeb7 \ ++ | awk '/^diff .*\.texi/ {skip=0; print; next} /^diff / {skip=1; next} skip==0' \ ++ | grep -v -E '^(diff|index)' ++ diff --cc debian/patches/git-updates.diff index 0000000,0000000..2b10d50 new file mode 100644 --- /dev/null +++ b/debian/patches/git-updates.diff @@@ -1,0 -1,0 +1,672 @@@ ++# DP: updates from the 15 branch upto 20260613 (57cdb9b2ff5). ++ ++LANG=C git diff --no-renames --src-prefix=a/src/ --dst-prefix=b/src/ \ ++ 4db0e8df15bef836558857c291c323add11d035c 57cdb9b2ff52074f585c2537aff0e62e4ecadeb7 \ ++ | awk '/^diff .*\.texi/ {skip=1; next} /^diff / { skip=0 } skip==0' \ ++ | grep -v -E '^(diff|index)' ++ ++--- a/src/gcc/ChangeLog +++++ b/src/gcc/ChangeLog ++@@ -1,3 +1,17 @@ +++2026-06-12 Ramin Moussavi +++ +++ * config/microblaze/microblaze.h (DWARF_ALT_FRAME_RETURN_COLUMN): +++ Define. +++ +++2026-06-12 Georg-Johann Lay +++ +++ Backported from master: +++ 2026-06-11 Georg-Johann Lay +++ +++ PR target/125751 +++ * config/avr/avr.cc (avr_out_fract): Fix too small sequence +++ lengths in avr_asm_len calls. +++ ++ 2026-06-12 Release Manager ++ ++ * GCC 15.3.0 released. ++--- a/src/gcc/DATESTAMP +++++ b/src/gcc/DATESTAMP ++@@ -1 +1 @@ ++-20260612 +++20260613 ++--- a/src/gcc/config/avr/avr.cc +++++ b/src/gcc/config/avr/avr.cc ++@@ -10536,7 +10536,7 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) ++ { ++ avr_asm_len ("clr __tmp_reg__" CR_TAB ++ "sbrc %1,0" CR_TAB ++- "dec __tmp_reg__", xop, plen, 1); +++ "dec __tmp_reg__", xop, plen, 3); ++ sn = src.regno; ++ if (sn < s0) ++ { ++@@ -10551,7 +10551,7 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) ++ avr_asm_len ("clt" CR_TAB ++ "bld __tmp_reg__,7" CR_TAB ++ "adc %0,__tmp_reg__", ++- &all_regs_rtx[s0], plen, 1); +++ &all_regs_rtx[s0], plen, 3); ++ else ++ avr_asm_len ("lsr __tmp_reg" CR_TAB ++ "add %0,__tmp_reg__", ++@@ -10750,8 +10750,8 @@ avr_out_fract (rtx_insn *insn, rtx operands[], bool intsigned, int *plen) ++ xop[2] = all_regs_rtx[s0]; ++ if (!lsb_in_tmp_reg && !MAY_CLOBBER (s0)) ++ avr_asm_len ("mov __tmp_reg__,%2", xop, plen, 1); ++- avr_asm_len ("tst %0" CR_TAB "brpl 0f", ++- &all_regs_rtx[src.regno_msb], plen, 2); +++ avr_asm_len ("tst %0" CR_TAB +++ "brpl 0f", &all_regs_rtx[src.regno_msb], plen, 2); ++ if (!lsb_in_tmp_reg) ++ { ++ unsigned sn = src.regno; ++--- a/src/gcc/config/microblaze/microblaze.h +++++ b/src/gcc/config/microblaze/microblaze.h ++@@ -176,6 +176,14 @@ extern enum pipeline_type microblaze_pipe; ++ #define DWARF_FRAME_RETURN_COLUMN \ ++ (GP_REG_FIRST + MB_ABI_SUB_RETURN_ADDR_REGNUM) ++ +++/* Signal frames (config/microblaze/linux-unwind.h) record the +++ interrupted PC in DWARF column 36, one past the hard registers, +++ because column 15 must keep the interrupted r15. Declaring it as +++ the alternate return column makes init_dwarf_reg_size_table size +++ it; otherwise _Unwind_GetGR aborts when unwinding through a signal +++ frame, such as during pthread cancellation. */ +++#define DWARF_ALT_FRAME_RETURN_COLUMN 36 +++ ++ /* Initial state of return address on entry to func = R15. ++ Actually, the RA is at R15+8, but gcc doesn't know how ++ to generate this. ++--- a/src/gcc/fortran/ChangeLog +++++ b/src/gcc/fortran/ChangeLog ++@@ -1,3 +1,13 @@ +++2026-06-12 Harald Anlauf +++ +++ Backported from master: +++ 2026-06-06 Harald Anlauf +++ +++ PR fortran/125606 +++ * trans-intrinsic.cc (gfc_conv_intrinsic_loc): When the argument +++ of LOC() is not scalar or known to be simply contiguous, simply +++ take the address of the argument array's first element. +++ ++ 2026-06-12 Release Manager ++ ++ * GCC 15.3.0 released. ++--- a/src/gcc/fortran/trans-intrinsic.cc +++++ b/src/gcc/fortran/trans-intrinsic.cc ++@@ -9606,9 +9606,15 @@ gfc_conv_intrinsic_loc (gfc_se * se, gfc_expr * expr) ++ gfc_add_data_component (arg_expr); ++ gfc_conv_expr_reference (se, arg_expr); ++ } ++- else +++ else if (gfc_is_simply_contiguous (arg_expr, false, false)) ++ gfc_conv_array_parameter (se, arg_expr, true, NULL, NULL, NULL); +++ else +++ { +++ gfc_conv_expr_descriptor (se, arg_expr); +++ se->expr = gfc_conv_descriptor_data_get (se->expr); +++ } ++ se->expr = convert (gfc_get_int_type (gfc_index_integer_kind), se->expr); +++ se->expr = gfc_evaluate_now (se->expr, &se->pre); ++ ++ /* Create a temporary variable for loc return value. Without this, ++ we get an error an ICE in gcc/expr.cc(expand_expr_addr_expr_1). */ ++--- a/src/gcc/testsuite/ChangeLog +++++ b/src/gcc/testsuite/ChangeLog ++@@ -1,3 +1,19 @@ +++2026-06-12 Harald Anlauf +++ +++ Backported from master: +++ 2026-06-06 Harald Anlauf +++ +++ PR fortran/125606 +++ * gfortran.dg/loc_3.f90: New test. +++ +++2026-06-12 Georg-Johann Lay +++ +++ Backported from master: +++ 2026-06-11 Georg-Johann Lay +++ +++ PR target/125752 +++ * gcc.target/avr/torture/fx-to-double.c: New test. +++ ++ 2026-06-12 Release Manager ++ ++ * GCC 15.3.0 released. ++new file mode 100644 ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.target/avr/torture/fx-to-double.c ++@@ -0,0 +1,88 @@ +++/* { dg-do run { target { ! avr_tiny } } } */ +++/* { dg-additional-options "-std=gnu99 -Wno-pedantic" } */ +++ +++typedef long double DD; +++ +++typedef long long _Fract dq_t; +++typedef long long _Accum ta_t; +++typedef long _Accum da_t; +++typedef unsigned long long _Fract udq_t; +++typedef unsigned long long _Accum uta_t; +++typedef unsigned long _Accum uda_t; +++ +++#define NI __attribute__((noipa)) +++ +++#define MK_CONV(T) \ +++ NI DD T##2d (T##_t x) \ +++ { \ +++ __asm ("" : "+r" (x)); \ +++ return (DD) x; \ +++ } \ +++ \ +++ NI T##_t d2##T (DD x) \ +++ { \ +++ __asm ("" : "+r" (x)); \ +++ return (T##_t) x; \ +++ } +++ +++ +++MK_CONV (da) +++MK_CONV (ta) +++MK_CONV (dq) +++ +++MK_CONV (uda) +++MK_CONV (uta) +++MK_CONV (udq) +++ +++#define TEST(T) \ +++ do { \ +++ T##_t fx = d2##T (x); \ +++ DD y = T##2d (fx); \ +++ if (y != x) \ +++ __builtin_exit (__LINE__); \ +++ } while (0) +++ +++ +++NI void test_s (DD x) +++{ +++ TEST (da); +++ TEST (ta); +++ +++ if (x < 1.0L && x >= -1.0L) +++ TEST (dq); +++} +++ +++ +++NI void test_u (long double x) +++{ +++ TEST (uda); +++ TEST (uta); +++ +++ if (x < 1.0L) +++ TEST (udq); +++} +++ +++void test (DD x) +++{ +++ if (x >= 0) +++ test_u (x); +++ +++ test_s (x); +++} +++ +++int main (void) +++{ +++ test (+0.0L); +++ test (-0.0L); +++ +++ test (+1.0L); +++ test (-1.0L); +++ +++ test (-0x0.cafe123p0); +++ test (+0x0.cafe123p0); +++ +++ test (+0x1234.cafe123p0); +++ test (-0x1234.cafe123p0); +++ +++ return 0; +++} ++new file mode 100644 ++--- /dev/null +++++ b/src/gcc/testsuite/gfortran.dg/loc_3.f90 ++@@ -0,0 +1,36 @@ +++! { dg-do compile } +++! { dg-additional-options "-O1" } +++! +++! PR fortran/125606 +++! +++! Derived from Fujitsu testsuite +++! Reported by David Binderman +++ +++module m +++ implicit none +++ type ty +++ class(*), allocatable :: c1(:) +++ end type ty +++ type tt +++ class(*), allocatable :: node1(:) +++ end type tt +++ type,extends(tt)::tte +++ class(*), allocatable :: c2e(:) +++ end type tte +++contains +++ subroutine put_addr +++ class(*), allocatable :: t(:) +++ integer :: unit +++ select type (t) +++ class is (tt) +++ select type (p=>t(2)%node1) +++ class is (ty) +++ write (unit) loc(p(2)%c1) +++ end select +++ select type (t) +++ type is (tte) +++ write (7) loc(t(2)%c2e) +++ end select +++ end select +++ end subroutine put_addr +++end module m ++--- a/src/libgcc/ChangeLog +++++ b/src/libgcc/ChangeLog ++@@ -1,3 +1,8 @@ +++2026-06-12 Ramin Moussavi +++ +++ * config.host (microblaze*-linux*): Set md_unwind_header. +++ * config/microblaze/linux-unwind.h: New file. +++ ++ 2026-06-12 Release Manager ++ ++ * GCC 15.3.0 released. ++--- a/src/libgcc/config.host +++++ b/src/libgcc/config.host ++@@ -1052,6 +1052,7 @@ mcore-*-elf) ++ ;; ++ microblaze*-linux*) ++ tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit t-slibgcc-libgcc" +++ md_unwind_header=microblaze/linux-unwind.h ++ ;; ++ microblaze*-*-elf) ++ tmake_file="${tmake_file} microblaze/t-microblaze t-fdpbit" ++--- a/src/libgcc/config/avr/libf7/ChangeLog +++++ b/src/libgcc/config/avr/libf7/ChangeLog ++@@ -1,3 +1,22 @@ +++2026-06-12 Georg-Johann Lay +++ +++ Backported from master: +++ 2026-06-11 Georg-Johann Lay +++ +++ PR target/125752 +++ * libf7-asm.sx (ufx64_to_d, d_to_fx64): New DEFUNs. +++ (__fractdadf, __fractudadf, __fracttadf, __fractutadf) +++ (__fractdqdf, __fractudqdf): New _DEFUNs. +++ * libf7-common.mk (F7_ASM_PARTS) Add: fx2D, D2fx, +++ dq2D, udq2D, da2D, uda2D, ta2D uta2D. +++ (F7F): Add d_to_fx64, ufx64_to_d, sfx64_to_d. +++ * libf7.c (d_to_ufx, d_to_sfx): New protos. +++ (__fractdfda, __fractdfuda, __fractdfta, __fractdfuta) +++ (__fractdfdq, __fractdfudq): New modules. +++ * t-libf7 (LIBF7_DF_CONV): Add fractdfda, +++ fractdfta, fractdfdq, fractdfuda, fractdfuta, fractdfudq. +++ * f7-renames.h: Rebuild. +++ ++ 2026-06-12 Release Manager ++ ++ * GCC 15.3.0 released. ++--- a/src/libgcc/config/avr/libf7/f7-renames.h +++++ b/src/libgcc/config/avr/libf7/f7-renames.h ++@@ -222,6 +222,9 @@ ++ #define f7_sqrt16_floor_asm __f7_sqrt16_floor_asm ++ #define f7_lshrdi3_asm __f7_lshrdi3_asm ++ #define f7_ashldi3_asm __f7_ashldi3_asm +++#define f7_d_to_fx64_asm __f7_d_to_fx64_asm +++#define f7_ufx64_to_d_asm __f7_ufx64_to_d_asm +++#define f7_sfx64_to_d_asm __f7_sfx64_to_d_asm ++ #define f7_class_D_asm __f7_class_D_asm ++ #define f7_call_ddd_asm __f7_call_ddd_asm ++ #define f7_call_xdd_asm __f7_call_xdd_asm ++--- a/src/libgcc/config/avr/libf7/libf7-asm.sx +++++ b/src/libgcc/config/avr/libf7/libf7-asm.sx ++@@ -2308,8 +2308,85 @@ _ENDF __fractqqdf ++ #endif /* F7MOD_qq2D_ */ ++ ++ +++#ifdef F7MOD_fx2D_ +++;;; Convert an [un]signed 64-bit fixed point value R18[] to double. +++;;; double ufx64_to_d (ufx64_t R18, uint8_t fbit R30); +++;;; double sfx64_to_d (sfx64_t R18, uint8_t fbit R30); +++;;; FBIT accounts for the fractional bits of the fixed point type, +++;;; e.g. pass __DA_FBIT__ for long accum etc. +++DEFUN ufx64_to_d +++ push r30 +++ XCALL __floatundidf +++ rjmp 1f +++ +++LABEL sfx64_to_d +++ push r30 +++ XCALL __floatdidf +++1: pop r30 +++ +++ ;; The MSB indicates a value of 0. Notice that at this point, +++ ;; we have a normal floating point number with a biased exponent +++ ;; that won't underflow below. +++ tst r25 +++ breq 0f +++ +++ ;; Subtract fbit from the double exponent. R30[] = fbit << 4. +++ swap r30 +++ mov r31, r30 +++ andi r30, lo8 (0x0ff0) +++ andi r31, hi8 (0x0ff0) +++ sub r24, r30 +++ sbc r25, r31 +++ +++0: ret +++ENDF ufx64_to_d +++#endif /* F7MOD_fx2D_ */ +++ +++#ifdef F7MOD_da2D_ +++_DEFUN __fractdadf +++ ldi r30, __DA_FBIT__ +++ F7jmp sfx64_to_d +++_ENDF __fractdadf +++#endif /* F7MOD_da2D_ */ +++ +++#ifdef F7MOD_uda2D_ +++_DEFUN __fractudadf +++ ldi r30, __UDA_FBIT__ +++ F7jmp ufx64_to_d +++_ENDF __fractudadf +++#endif /* F7MOD_uda2D_ */ +++ +++#ifdef F7MOD_ta2D_ +++_DEFUN __fracttadf +++ ldi r30, __TA_FBIT__ +++ F7jmp sfx64_to_d +++_ENDF __fracttadf +++#endif /* F7MOD_ta2D_ */ +++ +++#ifdef F7MOD_uta2D_ +++_DEFUN __fractutadf +++ ldi r30, __UTA_FBIT__ +++ F7jmp ufx64_to_d +++_ENDF __fractutadf +++#endif /* F7MOD_uta2D_ */ +++ +++#ifdef F7MOD_dq2D_ +++_DEFUN __fractdqdf +++ ldi r30, __DQ_FBIT__ +++ F7jmp sfx64_to_d +++_ENDF __fractdqdf +++#endif /* F7MOD_dq2D_ */ +++ +++#ifdef F7MOD_udq2D_ +++_DEFUN __fractudqdf +++ ldi r30, __UDQ_FBIT__ +++ F7jmp ufx64_to_d +++_ENDF __fractudqdf +++#endif /* F7MOD_udq2D_ */ +++ +++ ++ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++-;;; Fixed-point -> double conversions. +++;;; Double -> fixed-point conversions. ++ ++ #ifdef F7MOD_D2qq_ ++ _DEFUN __fractdfqq ++@@ -2389,6 +2466,49 @@ _ENDF __fractdfusa ++ #endif /* F7MOD_D2usa_ */ ++ ++ +++#ifdef F7MOD_D2fx_ +++;;; Convert double R18 to a 64-bit fixed point value. +++;;; R18 d_to_fx64 (double R18, int8_t fbit R16); +++;;; |FBIT| accounts for the extra fbits compared to [u]int64_t. +++;;; FBIT < 0 indicates a signed conversion. +++;;; FBIT > 0 indicates an unsigned conversion. +++DEFUN d_to_fx64 +++ do_prologue_saves 4, F7_SIZEOF +++ +++ ;; Y = FramePointer + 1 +++ adiw Y, 1 +++ +++ ;; FP + 1 = (f7_t) arg +++ wmov r16, Y +++ +++ ;; Convert double R18 to f7_t *R16. +++ XCALL F7_NAME (set_double_impl) +++ +++ ;; Prepare for *R24 = ldexp (*R24, R22). ldexp() accounts for the +++ ;; fractional bits of the fixed point value, i.e. we have to <<= FBIT. +++ wmov r24, r16 +++ ;; Zero-extend FBIT. +++ clr r23 +++ ;; R16 has been clobbered. Fetch it from where prologue_saves put it. +++ ldd r22, Y + F7_SIZEOF + 3 ; Saved R16 +++ tst r22 +++ brmi 1f +++ +++ ;; Positive FBIT indicates an unsigned conversion. +++ XCALL F7_NAME (Ildexp) +++ XCALL F7_NAME (get_u64) +++ rjmp 9f +++ +++1: ;; Negative FBIT indicates a signed conversion. +++ neg r22 ; FBIT := |FBIT| +++ XCALL F7_NAME (Ildexp) +++ XCALL F7_NAME (get_s64) +++ +++9: do_epilogue_restores 4, F7_SIZEOF +++ENDF d_to_fx64 +++#endif /* F7MOD_D2fx_ */ +++ +++ ++ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ++ ;;; [u]int32_t -> double conversions. ++ ++--- a/src/libgcc/config/avr/libf7/libf7-common.mk +++++ b/src/libgcc/config/avr/libf7/libf7-common.mk ++@@ -29,12 +29,14 @@ F7_ASM_PARTS += D_cmp D_eq D_ne D_ge D_gt D_le D_lt D_unord D_fminfmax ++ F7_ASM_PARTS += call_dd call_ddd ++ ++ # Fixed-point -> double conversions ++-F7_ASM_PARTS += qq2D uqq2D sq2D usq2D ++-F7_ASM_PARTS += ha2D uha2D sa2D usa2D +++F7_ASM_PARTS += qq2D uqq2D sq2D usq2D dq2D udq2D +++F7_ASM_PARTS += ha2D uha2D sa2D usa2D da2D uda2D ta2D uta2D +++F7_ASM_PARTS += fx2D ++ ++ # Double -> fixed-point conversions ++ F7_ASM_PARTS += D2qq D2uqq D2hq D2uhq ++ F7_ASM_PARTS += D2ha D2uha D2sa D2usa +++F7_ASM_PARTS += D2fx ++ ++ # Integer -> double conversions ++ F7_ASM_PARTS += D_floatsidf D_floatunsidf ++@@ -107,7 +109,7 @@ F7F_asm += set_u64 set_s64 addsub_mant_scaled mul_mant ++ F7F_asm += to_integer to_unsigned clr_mant_lsbs ++ F7F_asm += div sqrt_approx sqrt16_round sqrt16_floor ++ F7F_asm += lshrdi3 ashldi3 ++- +++F7F_asm += d_to_fx64 ufx64_to_d sfx64_to_d ++ F7F_asm += class_D ++ ++ F7F_asm += call_ddd call_xdd call_ddx ++--- a/src/libgcc/config/avr/libf7/libf7.c +++++ b/src/libgcc/config/avr/libf7/libf7.c ++@@ -140,6 +140,58 @@ f7_double_t __floatdidf (int64_t x) ++ #endif // F7MOD_floatdidf_ ++ ++ +++extern uint64_t d_to_ufx (f7_double_t, int8_t) F7ASM(f7_d_to_fx64_asm); +++extern int64_t d_to_sfx (f7_double_t, int8_t) F7ASM(f7_d_to_fx64_asm); +++ +++#ifdef F7MOD_fractdfda_ +++F7_WEAK +++int64_t __fractdfda (f7_double_t d) +++{ +++ return d_to_sfx (d, -__DA_FBIT__); +++} +++#endif // F7MOD_fractdfda_ +++ +++#ifdef F7MOD_fractdfuda_ +++F7_WEAK +++uint64_t __fractdfuda (f7_double_t d) +++{ +++ return d_to_ufx (d, __UDA_FBIT__); +++} +++#endif // F7MOD_fractdfuda_ +++ +++#ifdef F7MOD_fractdfta_ +++F7_WEAK +++int64_t __fractdfta (f7_double_t d) +++{ +++ return d_to_sfx (d, -__TA_FBIT__); +++} +++#endif // F7MOD_fractdfta_ +++ +++#ifdef F7MOD_fractdfuta_ +++F7_WEAK +++uint64_t __fractdfuta (f7_double_t d) +++{ +++ return d_to_ufx (d, __UTA_FBIT__); +++} +++#endif // F7MOD_fractdfuta_ +++ +++#ifdef F7MOD_fractdfdq_ +++F7_WEAK +++int64_t __fractdfdq (f7_double_t d) +++{ +++ return d_to_sfx (d, -__DQ_FBIT__); +++} +++#endif // F7MOD_fractdfdq_ +++ +++#ifdef F7MOD_fractdfudq_ +++F7_WEAK +++uint64_t __fractdfudq (f7_double_t d) +++{ +++ return d_to_ufx (d, __UDQ_FBIT__); +++} +++#endif // F7MOD_fractdfudq_ +++ +++ ++ #ifdef F7MOD_init_ ++ f7_t* f7_init_impl (uint64_t mant, uint8_t flags, f7_t *cc, int16_t expo) ++ { ++--- a/src/libgcc/config/avr/libf7/t-libf7 +++++ b/src/libgcc/config/avr/libf7/t-libf7 ++@@ -9,6 +9,8 @@ F7_PREFIX = __f7_ ++ include $(libf7)/libf7-common.mk ++ ++ LIBF7_DF_CONV += floatundidf floatdidf # floatunsidf floatsidf +++LIBF7_DF_CONV += fractdfda fractdfta fractdfdq +++LIBF7_DF_CONV += fractdfuda fractdfuta fractdfudq ++ ++ # Wrappers like f7_lt_impl for f7_lt etc. because the latter is inline. ++ LIBF7_DF_CMP += lt le gt ge ne eq unord ++new file mode 100644 ++--- /dev/null +++++ b/src/libgcc/config/microblaze/linux-unwind.h ++@@ -0,0 +1,102 @@ +++/* DWARF2 EH unwinding support for MicroBlaze Linux. +++ Copyright (C) 2026 Free Software Foundation, Inc. +++ +++ This file is part of GCC. +++ +++ GCC is free software; you can redistribute it and/or modify +++ it under the terms of the GNU General Public License as published by +++ the Free Software Foundation; either version 3, or (at your option) +++ any later version. +++ +++ GCC is distributed in the hope that it will be useful, +++ but WITHOUT ANY WARRANTY; without even the implied warranty of +++ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++ GNU General Public License for more details. +++ +++ Under Section 7 of GPL version 3, you are granted additional +++ permissions described in the GCC Runtime Library Exception, version +++ 3.1, as published by the Free Software Foundation. +++ +++ You should have received a copy of the GNU General Public License and +++ a copy of the GCC Runtime Library Exception along with this program; +++ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +++ . */ +++ +++#ifndef inhibit_libc +++ +++/* Do code reading to identify a signal frame, and set the frame state +++ data appropriately. See unwind-dw2.c for the structs. */ +++ +++#include +++#include +++#include +++ +++#define MD_FALLBACK_FRAME_STATE_FOR microblaze_fallback_frame_state +++ +++static _Unwind_Reason_Code +++microblaze_fallback_frame_state (struct _Unwind_Context *context, +++ _Unwind_FrameState *fs) +++{ +++ const unsigned int *pc = (const unsigned int *) context->ra; +++ struct sigcontext *sc; +++ _Unwind_Ptr new_cfa; +++ int i; +++ +++ /* The outermost frame of a thread may leave a null or near-null +++ return address; do not dereference it looking for the +++ trampoline. */ +++ if ((unsigned long) pc < 4096) +++ return _URC_END_OF_STACK; +++ +++ /* The kernel writes the signal trampoline onto the stack +++ (struct rt_sigframe.tramp): +++ +++ addik r12, r0, __NR_rt_sigreturn +++ brki r14, 0x8 +++ +++ and sets the saved r15 to the trampoline address minus 8 (the +++ handler returns with "rtsd r15, 8"), so the unwound return +++ address points 8 bytes before the trampoline. */ +++ if (pc[0] == (0x31800000 | __NR_rt_sigreturn) && pc[1] == 0xb9cc0008) +++ ; +++ else if (pc[2] == (0x31800000 | __NR_rt_sigreturn) && pc[3] == 0xb9cc0008) +++ pc += 2; +++ else +++ return _URC_END_OF_STACK; +++ +++ /* The trampoline is the last member of the kernel's rt_sigframe and +++ the ucontext sits directly in front of it. Anchor there rather +++ than at the CFA so the layout of the frame head does not matter +++ (the kernel may insert an ABI argument-home gap at the front). +++ uClibc's ucontext_t matches the kernel's struct ucontext. */ +++ ucontext_t *uc = (ucontext_t *) ((_Unwind_Ptr) pc - sizeof (ucontext_t)); +++ +++ sc = (struct sigcontext *) &uc->uc_mcontext; +++ +++ new_cfa = sc->regs.r1; +++ fs->regs.cfa_how = CFA_REG_OFFSET; +++ fs->regs.cfa_reg = 1; /* r1, the stack pointer. */ +++ fs->regs.cfa_offset = new_cfa - (_Unwind_Ptr) context->cfa; +++ +++ /* pt_regs holds r0..r31 consecutively. */ +++ for (i = 0; i < 32; i++) +++ { +++ fs->regs.how[i] = REG_SAVED_OFFSET; +++ fs->regs.reg[i].loc.offset +++ = (_Unwind_Ptr) &sc->regs.r0 + i * sizeof (unsigned long) - new_cfa; +++ } +++ +++ /* The interrupted PC goes into the alternate return column +++ (DWARF_ALT_FRAME_RETURN_COLUMN, defined as 36 in +++ gcc/config/microblaze/microblaze.h), one past the hard registers; +++ column 15 above keeps the interrupted r15. */ +++ fs->regs.how[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__] = REG_SAVED_OFFSET; +++ fs->regs.reg[__LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__].loc.offset +++ = (_Unwind_Ptr) &sc->regs.pc - new_cfa; +++ fs->retaddr_column = __LIBGCC_DWARF_ALT_FRAME_RETURN_COLUMN__; +++ fs->signal_frame = 1; +++ +++ return _URC_NO_REASON; +++} +++ +++#endif diff --cc debian/patches/gm2-texinfo.diff index 0000000,0000000..b7c1505 new file mode 100644 --- /dev/null +++ b/debian/patches/gm2-texinfo.diff @@@ -1,0 -1,0 +1,30 @@@ ++# DP: gm2.texi: Define our own gcctabopt macro, needed for dfsg builds. ++ ++--- a/src/gcc/doc/gm2.texi +++++ b/src/gcc/doc/gm2.texi ++@@ -51,6 +51,25 @@ man page gfdl(7). ++ @versionsubtitle ++ @author Gaius Mulley ++ +++@macro gcctabopt{body} +++@code{\body\} +++@end macro +++@macro gccoptlist{body} +++@smallexample +++\body\ +++@end smallexample +++@end macro +++@c Makeinfo handles the above macro OK, TeX needs manual line breaks; +++@c they get lost at some point in handling the macro. But if @macro is +++@c used here rather than @alias, it produces double line breaks. +++@iftex +++@alias gol = * +++@end iftex +++@ifnottex +++@macro gol +++@end macro +++@end ifnottex +++ ++ @page ++ @vskip 0pt plus 1filll ++ Published by the Free Software Foundation @* diff --cc debian/patches/go-testsuite.diff index 0000000,0000000..b424eb5 new file mode 100644 --- /dev/null +++ b/debian/patches/go-testsuite.diff @@@ -1,0 -1,0 +1,19 @@@ ++# DP: Skip Go testcase on AArch64 which hangs on the buildds. ++ ++--- a/src/gcc/testsuite/go.test/go-test.exp +++++ b/src/gcc/testsuite/go.test/go-test.exp ++@@ -460,6 +460,14 @@ proc go-gc-tests { } { ++ continue ++ } ++ +++ # Hangs on the buildds +++ if { [istarget "aarch64*-*-*"] } { +++ if { [file tail $test] == "pprof.go" } { +++ untested $test +++ continue +++ } +++ } +++ ++ if { [file tail $test] == "init1.go" } { ++ # This tests whether GC runs during init, which for gccgo ++ # it currently does not. diff --cc debian/patches/hppa64-libgcov-fallback.diff index 0000000,0000000..58e4410 new file mode 100644 --- /dev/null +++ b/debian/patches/hppa64-libgcov-fallback.diff @@@ -1,0 -1,0 +1,15 @@@ ++--- a/src/libgcc/libgcov.h +++++ b/src/libgcc/libgcov.h ++@@ -45,6 +45,12 @@ ++ #include "libgcc_tm.h" ++ #include "gcov.h" ++ +++/* hppa64-linux-gnu does not have this header, use the fallback. */ +++#if defined(__LP64__) && defined(_PA_RISC2_0) +++#undef HAVE_SYS_MMAN_H +++#define HAVE_SYS_MMAN_H 0 +++#endif +++ ++ #if HAVE_SYS_MMAN_H ++ #include ++ #endif diff --cc debian/patches/hurd-changes.diff index 0000000,0000000..ca4d820 new file mode 100644 --- /dev/null +++ b/debian/patches/hurd-changes.diff @@@ -1,0 -1,0 +1,20 @@@ ++# DP: Traditional GNU systems don't have a /usr directory. However, Debian ++# DP: systems do, and we support both having a /usr -> . symlink, and having a ++# DP: /usr directory like the other ports. So this patch should NOT go ++# DP: upstream. ++ ++--- ++ config.gcc | 2 +- ++ 1 file changed, 1 insertion(+), 1 deletion(-) ++ ++--- a/src/gcc/config.gcc +++++ b/src/gcc/config.gcc ++@@ -583,7 +583,7 @@ ++ *-*-linux* | frv-*-*linux* | *-*-kfreebsd*-gnu | *-*-knetbsd*-gnu | *-*-kopensolaris*-gnu) ++ :;; ++ *-*-gnu*) ++- native_system_header_dir=/include +++ # native_system_header_dir=/include ++ ;; ++ esac ++ # glibc / uclibc / bionic switch. diff --cc debian/patches/hurd-multiarch.diff index 0000000,0000000..e45b1af new file mode 100644 --- /dev/null +++ b/debian/patches/hurd-multiarch.diff @@@ -1,0 -1,0 +1,16 @@@ ++--- a/src/gcc/config/i386/t-gnu64 +++++ b/src/gcc/config/i386/t-gnu64 ++@@ -36,3 +36,13 @@ MULTILIB_DIRNAMES = $(patsubst m%, %, ++ MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) ++ MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-gnu) ++ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) +++ +++ifneq (,$(findstring x86_64,$(target))) +++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) +++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-gnux32) +++ else +++ MULTIARCH_DIRNAME = $(call if_multiarch,x86_64-gnu) +++ endif +++else +++ MULTIARCH_DIRNAME = $(call if_multiarch,i386-gnu) +++endif diff --cc debian/patches/hurd-multilib-multiarch.diff index 0000000,0000000..5b9f167 new file mode 100644 --- /dev/null +++ b/debian/patches/hurd-multilib-multiarch.diff @@@ -1,0 -1,0 +1,23 @@@ ++--- a/src/gcc/config/i386/t-gnu64 +++++ b/src/gcc/config/i386/t-gnu64 ++@@ -33,9 +33,19 @@ ++ comma=, ++ MULTILIB_OPTIONS = $(subst $(comma),/,$(TM_MULTILIB_CONFIG)) ++ MULTILIB_DIRNAMES = $(patsubst m%, %, $(subst /, ,$(MULTILIB_OPTIONS))) +++ifneq (,$(findstring gnux32,$(target))) ++ MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) ++-MULTILIB_OSDIRNAMES+= m32=$(if $(wildcard $(shell echo $(SYSTEM_HEADER_DIR))/../../usr/lib32),../lib32,../lib)$(call if_multiarch,:i386-gnu) +++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-gnu) +++MULTILIB_OSDIRNAMES+= mx32=../lib$(call if_multiarch,:x86_64-gnux32) +++else ifneq (,$(findstring x86_64,$(target))) +++MULTILIB_OSDIRNAMES = m64=../lib$(call if_multiarch,:x86_64-gnu) +++MULTILIB_OSDIRNAMES+= m32=../lib32$(call if_multiarch,:i386-gnu) ++ MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) +++else +++MULTILIB_OSDIRNAMES = m64=../lib64$(call if_multiarch,:x86_64-gnu) +++MULTILIB_OSDIRNAMES+= m32=../lib$(call if_multiarch,:i386-gnu) +++MULTILIB_OSDIRNAMES+= mx32=../libx32$(call if_multiarch,:x86_64-gnux32) +++endif ++ ++ ifneq (,$(findstring x86_64,$(target))) ++ ifneq (,$(findstring biarchx32.h,$(tm_include_list))) diff --cc debian/patches/ignore-pie-specs-when-not-enabled.diff index 0000000,0000000..8f5cc09 new file mode 100644 --- /dev/null +++ b/debian/patches/ignore-pie-specs-when-not-enabled.diff @@@ -1,0 -1,0 +1,56 @@@ ++# DP: Ignore dpkg's pie specs when pie is not enabled. ++ ++Index: b/src/gcc/gcc.c ++=================================================================== ++--- a/src/gcc/gcc.c +++++ b/src/gcc/gcc.c ++@@ -3715,6 +3715,36 @@ handle_foffload_option (const char *arg) ++ } ++ } ++ +++static bool ignore_pie_specs_when_not_enabled(const char *envvar, +++ const char *specname) +++{ +++ const char *envval = secure_getenv(envvar); +++ char *hardening; +++ bool ignore; +++ +++ if (strstr (specname, "/pie-compile.specs") == NULL +++ && strstr (specname, "/pie-link.specs") == NULL) +++ return false; +++ if (envval == NULL || strstr (envval, "hardening=") == NULL) +++ return true; +++ ignore = true; +++ hardening = (char *) xmalloc (strlen(envval) + 1); +++ strcpy (hardening, strstr (envval, "hardening=")); +++ if (strchr (hardening, ' ')) +++ *strchr (hardening, ' ') = '\0'; +++ if (strstr(hardening, "+all")) +++ { +++ if (strstr(hardening, "-pie") == NULL) +++ ignore = false; +++ } +++ else if (strstr(hardening, "+pie")) +++ { +++ ignore = false; +++ } +++ free (hardening); +++ return ignore; +++} +++ ++ /* Handle a driver option; arguments and return value as for ++ handle_option. */ ++ ++@@ -3989,6 +4019,12 @@ driver_handle_option (struct gcc_options ++ break; ++ ++ case OPT_specs_: +++ if (ignore_pie_specs_when_not_enabled("DEB_BUILD_MAINT_OPTIONS", arg) +++ && ignore_pie_specs_when_not_enabled("DEB_BUILD_OPTIONS", arg)) +++ { +++ inform (0, "pie specs %s ignored when pie is not enabled", arg); +++ return true; +++ } ++ { ++ struct user_specs *user = XNEW (struct user_specs); ++ diff --cc debian/patches/libasan-sparc.diff index 0000000,0000000..4b52ac2 new file mode 100644 --- /dev/null +++ b/debian/patches/libasan-sparc.diff @@@ -1,0 -1,0 +1,163 @@@ ++# DP: Re-apply sanitizer patch for sparc, dropped upstream ++ ++# don't remove, this is regularly overwritten, see PR sanitizer/63958. ++ ++libsanitizer/ ++ ++2014-10-14 David S. Miller ++ ++ * sanitizer_common/sanitizer_platform_limits_linux.cc (time_t): ++ Define at __kernel_time_t, as needed for sparc. ++ (struct __old_kernel_stat): Don't check if __sparc__ is defined. ++ * libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++ (__sanitizer): Define struct___old_kernel_stat_sz, ++ struct_kernel_stat_sz, and struct_kernel_stat64_sz for sparc. ++ (__sanitizer_ipc_perm): Adjust for sparc targets. ++ (__sanitizer_shmid_ds): Likewsie. ++ (__sanitizer_sigaction): Likewsie. ++ (IOC_SIZE): Likewsie. ++ ++Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++=================================================================== ++--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216223) +++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h (revision 216224) ++@@ -72,6 +72,14 @@ ++ const unsigned struct_kernel_stat_sz = 144; ++ #endif ++ const unsigned struct_kernel_stat64_sz = 104; +++#elif defined(__sparc__) && defined(__arch64__) +++ const unsigned struct___old_kernel_stat_sz = 0; +++ const unsigned struct_kernel_stat_sz = 104; +++ const unsigned struct_kernel_stat64_sz = 144; +++#elif defined(__sparc__) && !defined(__arch64__) +++ const unsigned struct___old_kernel_stat_sz = 0; +++ const unsigned struct_kernel_stat_sz = 64; +++ const unsigned struct_kernel_stat64_sz = 104; ++ #endif ++ struct __sanitizer_perf_event_attr { ++ unsigned type; ++@@ -94,7 +102,7 @@ ++ ++ #if defined(__powerpc64__) ++ const unsigned struct___old_kernel_stat_sz = 0; ++-#else +++#elif !defined(__sparc__) ++ const unsigned struct___old_kernel_stat_sz = 32; ++ #endif ++ ++@@ -173,6 +181,18 @@ ++ unsigned short __pad1; ++ unsigned long __unused1; ++ unsigned long __unused2; +++#elif defined(__sparc__) +++# if defined(__arch64__) +++ unsigned mode; +++ unsigned short __pad1; +++# else +++ unsigned short __pad1; +++ unsigned short mode; +++ unsigned short __pad2; +++# endif +++ unsigned short __seq; +++ unsigned long long __unused1; +++ unsigned long long __unused2; ++ #else ++ unsigned short mode; ++ unsigned short __pad1; ++@@ -190,6 +210,26 @@ ++ ++ struct __sanitizer_shmid_ds { ++ __sanitizer_ipc_perm shm_perm; +++ #if defined(__sparc__) +++ # if !defined(__arch64__) +++ u32 __pad1; +++ # endif +++ long shm_atime; +++ # if !defined(__arch64__) +++ u32 __pad2; +++ # endif +++ long shm_dtime; +++ # if !defined(__arch64__) +++ u32 __pad3; +++ # endif +++ long shm_ctime; +++ uptr shm_segsz; +++ int shm_cpid; +++ int shm_lpid; +++ unsigned long shm_nattch; +++ unsigned long __glibc_reserved1; +++ unsigned long __glibc_reserved2; +++ #else ++ #ifndef __powerpc__ ++ uptr shm_segsz; ++ #elif !defined(__powerpc64__) ++@@ -227,6 +267,7 @@ ++ uptr __unused4; ++ uptr __unused5; ++ #endif +++#endif ++ }; ++ #elif SANITIZER_FREEBSD ++ struct __sanitizer_ipc_perm { ++@@ -523,9 +564,13 @@ ++ #else ++ __sanitizer_sigset_t sa_mask; ++ #ifndef __mips__ +++#if defined(__sparc__) +++ unsigned long sa_flags; +++#else ++ int sa_flags; ++ #endif ++ #endif +++#endif ++ #if SANITIZER_LINUX ++ void (*sa_restorer)(); ++ #endif ++@@ -745,7 +790,7 @@ ++ ++ #define IOC_NRBITS 8 ++ #define IOC_TYPEBITS 8 ++-#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) +++#if defined(__powerpc__) || defined(__powerpc64__) || defined(__mips__) || defined(__sparc__) ++ #define IOC_SIZEBITS 13 ++ #define IOC_DIRBITS 3 ++ #define IOC_NONE 1U ++@@ -775,7 +820,17 @@ ++ #define IOC_DIR(nr) (((nr) >> IOC_DIRSHIFT) & IOC_DIRMASK) ++ #define IOC_TYPE(nr) (((nr) >> IOC_TYPESHIFT) & IOC_TYPEMASK) ++ #define IOC_NR(nr) (((nr) >> IOC_NRSHIFT) & IOC_NRMASK) +++ +++#if defined(__sparc__) +++// In sparc the 14 bits SIZE field overlaps with the +++// least significant bit of DIR, so either IOC_READ or +++// IOC_WRITE shall be 1 in order to get a non-zero SIZE. +++# define IOC_SIZE(nr) \ +++ ((((((nr) >> 29) & 0x7) & (4U|2U)) == 0)? \ +++ 0 : (((nr) >> 16) & 0x3fff)) +++#else ++ #define IOC_SIZE(nr) (((nr) >> IOC_SIZESHIFT) & IOC_SIZEMASK) +++#endif ++ ++ extern unsigned struct_arpreq_sz; ++ extern unsigned struct_ifreq_sz; ++Index: libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc ++=================================================================== ++--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216223) +++++ a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_linux.cc (revision 216224) ++@@ -36,6 +36,7 @@ ++ #define uid_t __kernel_uid_t ++ #define gid_t __kernel_gid_t ++ #define off_t __kernel_off_t +++#define time_t __kernel_time_t ++ // This header seems to contain the definitions of _kernel_ stat* structs. ++ #include ++ #undef ino_t ++@@ -60,7 +61,7 @@ ++ } // namespace __sanitizer ++ ++ #if !defined(__powerpc64__) && !defined(__x86_64__) && !defined(__aarch64__)\ ++- && !defined(__mips__) +++ && !defined(__mips__) && !defined(__sparc__) ++ COMPILER_CHECK(struct___old_kernel_stat_sz == sizeof(struct __old_kernel_stat)); ++ #endif ++ diff --cc debian/patches/libffi-race-condition.diff index 0000000,0000000..4e18c82 new file mode 100644 --- /dev/null +++ b/debian/patches/libffi-race-condition.diff @@@ -1,0 -1,0 +1,33 @@@ ++From 48d2e46528fb6e621d95a7fa194069fd136b712d Mon Sep 17 00:00:00 2001 ++From: =?UTF-8?q?Stefan=20B=C3=BChler?= ++Date: Wed, 7 Sep 2016 15:49:48 +0200 ++Subject: [PATCH 1/2] dlmmap_locked always needs locking as it always modifies ++ execsize ++ ++--- ++ src/closures.c | 13 ++++--------- ++ 1 file changed, 4 insertions(+), 9 deletions(-) ++ ++--- a/src/libffi/src/closures.c +++++ b/src/libffi/src/closures.c ++@@ -897,16 +897,11 @@ dlmmap (void *start, size_t length, int ++ MREMAP_DUP and prot at this point. */ ++ } ++ ++- if (execsize == 0 || execfd == -1) ++- { ++- pthread_mutex_lock (&open_temp_exec_file_mutex); ++- ptr = dlmmap_locked (start, length, prot, flags, offset); ++- pthread_mutex_unlock (&open_temp_exec_file_mutex); +++ pthread_mutex_lock (&open_temp_exec_file_mutex); +++ ptr = dlmmap_locked (start, length, prot, flags, offset); +++ pthread_mutex_unlock (&open_temp_exec_file_mutex); ++ ++- return ptr; ++- } ++- ++- return dlmmap_locked (start, length, prot, flags, offset); +++ return ptr; ++ } ++ ++ /* Release memory at the given address, as well as the corresponding diff --cc debian/patches/libffi-ro-eh_frame_sect.diff index 0000000,0000000..3653876 new file mode 100644 --- /dev/null +++ b/debian/patches/libffi-ro-eh_frame_sect.diff @@@ -1,0 -1,0 +1,13 @@@ ++# DP: PR libffi/47248, force a read only eh frame section. ++ ++--- a/src/libffi/configure.ac +++++ b/src/libffi/configure.ac ++@@ -296,6 +296,8 @@ if test "x$GCC" = "xyes"; then ++ libffi_cv_hidden_visibility_attribute=yes ++ fi ++ fi +++ # FIXME: see PR libffi/47248 +++ libffi_cv_ro_eh_frame=yes ++ rm -f conftest.* ++ ]) ++ if test $libffi_cv_hidden_visibility_attribute = yes; then diff --cc debian/patches/libgo-cleanfiles.diff index 0000000,0000000..59b1b04 new file mode 100644 --- /dev/null +++ b/debian/patches/libgo-cleanfiles.diff @@@ -1,0 -1,0 +1,26 @@@ ++--- a/src/libgo/Makefile.am +++++ b/src/libgo/Makefile.am ++@@ -1361,7 +1361,9 @@ mostlyclean-local: ++ find . -name '*-testsum' -print | xargs rm -f ++ find . -name '*-testlog' -print | xargs rm -f ++ ++-CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc +++CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \ +++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ +++ */*/*/*/*/*.dep ++ ++ clean-local: ++ find . -name '*.la' -print | xargs $(LIBTOOL) --mode=clean rm -f ++--- a/src/libgo/Makefile.in +++++ b/src/libgo/Makefile.in ++@@ -1199,7 +1199,9 @@ MOSTLYCLEANFILES = \ ++ libcalls-list \ ++ runtime.inc runtime.inc.tmp2 runtime.inc.tmp3 runtime.inc.raw ++ ++-CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc +++CLEANFILES = *.go *.c s-* libgo.sum libgo.log runtime.inc \ +++ *.dep */*.dep */*/*.dep */*/*/*.dep */*/*.dep */*/*/*/*.dep \ +++ */*/*/*/*/*.dep ++ MULTISRCTOP = ++ MULTIBUILDTOP = ++ MULTIDIRS = diff --cc debian/patches/libgo-hurd-hack.diff index 0000000,0000000..c25f8c1 new file mode 100644 --- /dev/null +++ b/debian/patches/libgo-hurd-hack.diff @@@ -1,0 -1,0 +1,22 @@@ ++# FIXME: #1005297, PR 104660 ++ ++--- a/src/Makefile.in +++++ b/src/Makefile.in ++@@ -67372,6 +67372,8 @@ all-flex: maybe-all-build-texinfo ++ all-m4: maybe-all-build-texinfo ++ configure-target-libgo: maybe-configure-target-libffi ++ all-target-libgo: maybe-all-target-libffi +++all-target-libgo: maybe-all-target-libbacktrace +++all-target-libgo: maybe-all-target-libatomic ++ configure-target-libphobos: maybe-configure-target-libbacktrace ++ configure-stage1-target-libphobos: maybe-configure-stage1-target-libbacktrace ++ configure-stage2-target-libphobos: maybe-configure-stage2-target-libbacktrace ++@@ -67539,8 +67541,6 @@ all-m4: maybe-all-intl ++ configure-target-fastjar: maybe-configure-target-zlib ++ all-target-fastjar: maybe-all-target-zlib ++ configure-target-libgo: maybe-all-target-libstdc++-v3 ++-all-target-libgo: maybe-all-target-libbacktrace ++-all-target-libgo: maybe-all-target-libatomic ++ configure-target-libgm2: maybe-all-target-libstdc++-v3 ++ all-target-libgm2: maybe-all-target-libatomic ++ configure-target-liboffloadmic: maybe-configure-target-libgomp diff --cc debian/patches/libgo-revert-timeout-exp.diff index 0000000,0000000..af0b838 new file mode 100644 --- /dev/null +++ b/debian/patches/libgo-revert-timeout-exp.diff @@@ -1,0 -1,0 +1,10 @@@ ++--- a/src/libgo/testsuite/lib/libgo.exp +++++ b/src/libgo/testsuite/lib/libgo.exp ++@@ -49,7 +49,6 @@ load_gcc_lib wrapper.exp ++ load_gcc_lib target-supports.exp ++ load_gcc_lib target-utils.exp ++ load_gcc_lib gcc-defs.exp ++-load_gcc_lib timeout.exp ++ load_gcc_lib go.exp ++ ++ proc libgo_init { args } { diff --cc debian/patches/libgo-setcontext-config.diff index 0000000,0000000..f6d105d new file mode 100644 --- /dev/null +++ b/debian/patches/libgo-setcontext-config.diff @@@ -1,0 -1,0 +1,19 @@@ ++# DP: libgo: Overwrite the setcontext_clobbers_tls check on mips* ++ ++--- a/src/libgo/configure.ac +++++ b/src/libgo/configure.ac ++@@ -802,6 +802,14 @@ main () ++ CFLAGS="$CFLAGS_hold" ++ LIBS="$LIBS_hold" ++ ]) +++dnl overwrite for the mips* 64bit multilibs, fails on some buildds +++if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then +++ case "$target" in +++ mips*-linux-*) +++ AC_MSG_WARN([FIXME: overwrite setcontext_clobbers_tls for $target:$ptr_type_size]) +++ libgo_cv_lib_setcontext_clobbers_tls=no ;; +++ esac +++fi ++ if test "$libgo_cv_lib_setcontext_clobbers_tls" = "yes"; then ++ AC_DEFINE(SETCONTEXT_CLOBBERS_TLS, 1, ++ [Define if setcontext clobbers TLS variables]) diff --cc debian/patches/libgo-testsuite.diff index 0000000,0000000..8369b5d new file mode 100644 --- /dev/null +++ b/debian/patches/libgo-testsuite.diff @@@ -1,0 -1,0 +1,76 @@@ ++# DP: Only run the libgo testsuite for flags configured in CHECK_MULTISUBDIRS ++ ++--- a/src/libgo/Makefile.am +++++ b/src/libgo/Makefile.am ++@@ -948,21 +948,29 @@ CHECK = \ ++ $(MKDIR_P) $(@D); \ ++ rm -f $@-testsum $@-testlog; \ ++ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \ +++ run_check=; \ +++ if [ -z "$(MULTISUBDIR)" ] || echo "$$CHECK_MULTISUBDIRS" | grep -q "$(MULTISUBDIR)"; then \ +++ run_check=yes; \ +++ fi; \ +++ if test "$$run_check" = "yes"; then \ ++ if test "$(USE_DEJAGNU)" = "yes"; then \ ++ $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ ++ elif test "$(GOBENCH)" != ""; then \ ++ $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \ ++ else \ ++ if $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" $(GOTESTFLAGS) >>$@-testlog 2>&1; then \ ++- echo "PASS: $(@D)" >> $@-testlog; \ ++- echo "PASS: $(@D)"; \ ++- echo "PASS: $(@D)" > $@-testsum; \ +++ echo "PASS: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ +++ echo "PASS: $(@D)$(MULTISUBDIR)"; \ +++ echo "PASS: $(@D)$(MULTISUBDIR)" > $@-testsum; \ ++ else \ ++- echo "FAIL: $(@D)" >> $@-testlog; \ +++ echo "FAIL: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ ++ cat $@-testlog; \ ++- echo "FAIL: $(@D)" > $@-testsum; \ +++ echo "FAIL: $(@D)$(MULTISUBDIR)" > $@-testsum; \ ++ exit 1; \ ++ fi; \ +++ fi; \ +++ else \ +++ echo "SKIP: $(@D)$(MULTISUBDIR)"; \ ++ fi ++ ++ # Build all packages before checking any. ++--- a/src/libgo/Makefile.in +++++ b/src/libgo/Makefile.in ++@@ -1066,21 +1066,29 @@ CHECK = \ ++ $(MKDIR_P) $(@D); \ ++ rm -f $@-testsum $@-testlog; \ ++ files=`$(SHELL) $(srcdir)/match.sh --goarch=$(GOARCH) --goos=$(GOOS) --srcdir=$(srcdir)/go/$(@D) --extrafiles="$(extra_go_files_$(subst .,_,$(subst /,_,$(@D))))" $(matchargs_$(subst /,_,$(@D)))`; \ +++ run_check=; \ +++ if [ -z "$(MULTISUBDIR)" ] || echo "$$CHECK_MULTISUBDIRS" | grep -q "$(MULTISUBDIR)"; then \ +++ run_check=yes; \ +++ fi; \ +++ if test "$$run_check" = "yes"; then \ ++ if test "$(USE_DEJAGNU)" = "yes"; then \ ++ $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --dejagnu=yes --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --testname="$(@D)" $(GOTESTFLAGS); \ ++ elif test "$(GOBENCH)" != ""; then \ ++ $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" --bench="$(GOBENCH)" $(GOTESTFLAGS); \ ++ else \ ++ if $(SHELL) $(srcdir)/testsuite/gotest --goarch=$(GOARCH) --goos=$(GOOS) --basedir=$(srcdir) --srcdir=$(srcdir)/go/$(@D) --pkgpath="$(@D)" --pkgfiles="$$files" $(GOTESTFLAGS) >>$@-testlog 2>&1; then \ ++- echo "PASS: $(@D)" >> $@-testlog; \ ++- echo "PASS: $(@D)"; \ ++- echo "PASS: $(@D)" > $@-testsum; \ +++ echo "PASS: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ +++ echo "PASS: $(@D)$(MULTISUBDIR)"; \ +++ echo "PASS: $(@D)$(MULTISUBDIR)" > $@-testsum; \ ++ else \ ++- echo "FAIL: $(@D)" >> $@-testlog; \ +++ echo "FAIL: $(@D)$(MULTISUBDIR)" >> $@-testlog; \ ++ cat $@-testlog; \ ++- echo "FAIL: $(@D)" > $@-testsum; \ +++ echo "FAIL: $(@D)$(MULTISUBDIR)" > $@-testsum; \ ++ exit 1; \ ++ fi; \ +++ fi; \ +++ else \ +++ echo "SKIP: $(@D)$(MULTISUBDIR)"; \ ++ fi ++ ++ diff --cc debian/patches/libgomp-omp_h-multilib.diff index 0000000,0000000..7f2cfa2 new file mode 100644 --- /dev/null +++ b/debian/patches/libgomp-omp_h-multilib.diff @@@ -1,0 -1,0 +1,32 @@@ ++# DP: Fix up omp.h for multilibs. ++ ++2008-06-09 Jakub Jelinek ++ ++ * omp.h.in (omp_nest_lock_t): Fix up for Linux multilibs. ++ ++2015-03-25 Matthias Klose ++ ++ * omp.h.in (omp_nest_lock_t): Limit the fix Linux. ++ ++--- a/src/libgomp/omp.h.in +++++ b/src/libgomp/omp.h.in ++@@ -52,8 +52,19 @@ typedef struct ++ ++ typedef struct ++ { +++ /* +++ Derive OMP_NEST_LOCK_SIZE and OMP_NEST_LOCK_ALIGN, don't hard +++ code the values because the header is used for all multilibs. +++ OMP_NEST_LOCK_SIZE = @OMP_NEST_LOCK_SIZE@ +++ OMP_NEST_LOCK_ALIGN = @OMP_NEST_LOCK_ALIGN@ +++ */ +++#if defined(__linux__) && !(defined(__hppa__) || defined(__alpha__)) +++ unsigned char _x[8 + sizeof (void *)] +++ __attribute__((__aligned__(sizeof (void *)))); +++#else ++ unsigned char _x[@OMP_NEST_LOCK_SIZE@] ++ __attribute__((__aligned__(@OMP_NEST_LOCK_ALIGN@))); +++#endif ++ } omp_nest_lock_t; ++ #endif ++ diff --cc debian/patches/libitm-no-fortify-source.diff index 0000000,0000000..fe0c705 new file mode 100644 --- /dev/null +++ b/debian/patches/libitm-no-fortify-source.diff @@@ -1,0 -1,0 +1,17 @@@ ++# DP: Build libitm with -U_FORTIFY_SOURCE on x86 and x86_64. ++ ++--- a/src/libitm/configure.tgt +++++ b/src/libitm/configure.tgt ++@@ -124,6 +124,12 @@ EOF ++ ;; ++ esac ++ +++# FIXME: ftbfs with -D_FORTIFY_SOURCE (error: invalid use of '__builtin_va_arg_pack ()) +++case "${target}" in +++ *-*-linux*) +++ XCFLAGS="${XCFLAGS} -U_FORTIFY_SOURCE" +++esac +++ ++ # For the benefit of top-level configure, determine if the cpu is supported. ++ test -d ${srcdir}/config/$ARCH || UNSUPPORTED=1 ++ diff --cc debian/patches/libphobos-ppc64el.diff index 0000000,0000000..51a501a new file mode 100644 --- /dev/null +++ b/debian/patches/libphobos-ppc64el.diff @@@ -1,0 -1,0 +1,16 @@@ ++# DP: build libphobos for IEEE long double on ppc64el ++ ++--- a/src/libphobos/libdruntime/core/stdc/stdio.d +++++ b/src/libphobos/libdruntime/core/stdc/stdio.d ++@@ -1350,9 +1350,9 @@ ++ alias vprintf = __vprintfieee128; ++ /// ++ pragma(scanf) ++- int __isoc99_vfscanfieee128(scope const char* format, va_list arg); +++ int __isoc99_vscanfieee128(scope const char* format, va_list arg); ++ /// ++- alias vscanf = __isoc99_vfscanfieee128; +++ alias vscanf = __isoc99_vscanfieee128; ++ /// ++ pragma(printf) ++ int __printfieee128(scope const char* format, scope const ...); diff --cc debian/patches/libphobos-unittest.diff index 0000000,0000000..fdbead6 new file mode 100644 --- /dev/null +++ b/debian/patches/libphobos-unittest.diff @@@ -1,0 -1,0 +1,13 @@@ ++# DP: https://github.com/dlang/phobos/pull/10586 ++ ++--- a/src/libphobos/src/std/process.d +++++ b/src/libphobos/src/std/process.d ++@@ -2835,7 +2835,7 @@ void kill(Pid pid, int codeOrSignal) ++ do { s = tryWait(pid); } while (!s.terminated); ++ version (Windows) assert(s.status == 123); ++ else version (Posix) assert(s.status == -SIGKILL); ++- assertThrown!ProcessException(kill(pid)); // Already terminated +++ assert(pid.processID == Pid.terminated); ++ } ++ ++ @system unittest // wait() and kill() detached process diff --cc debian/patches/libphobos-zlib.diff index 0000000,0000000..ddf7c95 new file mode 100644 --- /dev/null +++ b/debian/patches/libphobos-zlib.diff @@@ -1,0 -1,0 +1,72 @@@ ++# DP: Build zlib in any case to have a fall back for missing libz multilibs ++ ++--- a/src/libphobos/configure.ac +++++ b/src/libphobos/configure.ac ++@@ -142,6 +142,7 @@ DRUNTIME_LIBRARIES_BACKTRACE ++ DRUNTIME_LIBRARIES_DLOPEN ++ DRUNTIME_LIBRARIES_ZLIB ++ DRUNTIME_INSTALL_DIRECTORIES +++dnl fake change to regenerate the configure file ++ ++ # Add dependencies for libgphobos.spec file ++ SPEC_PHOBOS_DEPS="$LIBS" ++--- a/src/libphobos/m4/druntime/libraries.m4 +++++ b/src/libphobos/m4/druntime/libraries.m4 ++@@ -52,19 +52,45 @@ AC_DEFUN([DRUNTIME_LIBRARIES_ZLIB], ++ [ ++ AC_ARG_WITH(target-system-zlib, ++ AS_HELP_STRING([--with-target-system-zlib], ++- [use installed libz (default: no)])) +++ [use installed libz (default: no)]), +++ [system_zlib=yes],[system_zlib=no]) ++ ++- system_zlib=false ++- AS_IF([test "x$with_target_system_zlib" = "xyes"], [ ++- AC_CHECK_LIB([z], [deflate], [ ++- system_zlib=yes ++- ], [ ++- AC_MSG_ERROR([System zlib not found]) ++- ]) ++- ], [ ++- AC_MSG_CHECKING([for zlib]) ++- AC_MSG_RESULT([just compiled]) ++- ]) +++ AC_MSG_CHECKING([for system zlib]) +++ save_LIBS=$LIBS +++ LIBS="$LIBS -lz" +++ dnl the link test is not good enough for ARM32 multilib detection, +++ dnl first check to link, then to run +++ AC_LANG_PUSH(C) +++ AC_LINK_IFELSE( +++ [AC_LANG_PROGRAM([#include ],[gzopen("none", "rb")])], +++ [ +++ AC_RUN_IFELSE([AC_LANG_SOURCE([[ +++ #include +++ int main() { +++ gzFile file = gzopen("none", "rb"); +++ return 0; +++ } +++ ]])], +++ [system_zlib_found=yes], +++ [system_zlib_found=no], +++ dnl no system zlib for cross builds ... +++ [system_zlib_found=no] +++ ) +++ ], +++ [system_zlib_found=no]) +++ if test x$system_zlib = xyes; then +++ if test x$system_zlib_found = xyes; then +++ AC_MSG_RESULT([found]) +++ else +++ LIBS=$save_LIBS +++ AC_MSG_RESULT([not found, disabled]) +++ system_zlib=no +++ fi +++ else +++ LIBS=$save_LIBS +++ AC_MSG_RESULT([not enabled]) +++ fi +++ AC_LANG_POP ++ ++ AM_CONDITIONAL([DRUNTIME_ZLIB_SYSTEM], [test "$with_target_system_zlib" = yes]) ++ ]) diff --cc debian/patches/libsanitizer-static-tls.diff index 0000000,0000000..3d68495 new file mode 100644 --- /dev/null +++ b/debian/patches/libsanitizer-static-tls.diff @@@ -1,0 -1,0 +1,19 @@@ ++# DP: [TSan] Fix determining static TLS blocks ++ ++https://github.com/llvm/llvm-project/pull/183106 ++ ++--- a/src/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp +++++ b/src/libsanitizer/sanitizer_common/sanitizer_linux_libcdep.cpp ++@@ -503,10 +503,10 @@ __attribute__((unused)) static void GetStaticTlsBoundary(uptr *addr, uptr *size, ++ // loader places static TLS blocks this way not to waste space. ++ uptr l = one; ++ *align = ranges[l].align; ++- while (l != 0 && ranges[l].begin < ranges[l - 1].end + ranges[l].align) +++ while (l != 0 && ranges[l].begin <= ranges[l - 1].end + ranges[l].align) ++ *align = Max(*align, ranges[--l].align); ++ uptr r = one + 1; ++- while (r != len && ranges[r].begin < ranges[r - 1].end + ranges[r].align) +++ while (r != len && ranges[r].begin <= ranges[r - 1].end + ranges[r].align) ++ *align = Max(*align, ranges[r++].align); ++ *addr = ranges[l].begin; ++ *size = ranges[r - 1].end - ranges[l].begin; diff --cc debian/patches/libstdc++-doclink.diff index 0000000,0000000..a34b325 new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-doclink.diff @@@ -1,0 -1,0 +1,61 @@@ ++# DP: adjust hrefs to point to the local documentation ++ ++--- ++ libstdc++-v3/doc/doxygen/mainpage.html | 10 +++++----- ++ 1 files changed, 5 insertions(+), 5 deletions(-) ++ ++--- a/src/libstdc++-v3/doc/doxygen/mainpage.html +++++ b/src/libstdc++-v3/doc/doxygen/mainpage.html ++@@ -27,10 +27,10 @@ ++

Generated on @DATE@.

++ ++

There are two types of documentation for libstdc++. One is the ++- distribution documentation, which can be read online ++- here ++- or offline from the file doc/html/index.html in the library source ++- directory. +++ distribution documentation, which can be read +++ offline in the documentation directory +++ or +++ online. ++

++ ++

The other type is the source documentation, of which this is the first page. ++@@ -82,8 +82,11 @@ ++ ++

License, Copyright, and Other Lawyerly Verbosity

++

The libstdc++ documentation is released under +++ these terms +++ (read offline or ++ ++- these terms. +++ read online. +++ ). ++

++

Part of the generated documentation involved comments and notes from ++ SGI, who says we gotta say this: ++--- a/src/libstdc++-v3/doc/html/api.html +++++ b/src/libstdc++-v3/doc/html/api.html ++@@ -20,6 +20,8 @@ ++ member functions for the library classes, finding out what is in a ++ particular include file, looking at inheritance diagrams, etc. ++

+++The API documentation, rendered into HTML, can be viewed offline. +++

++ The API documentation, rendered into HTML, can be viewed online ++ for each GCC release ++ and ++--- a/src/libstdc++-v3/doc/xml/api.xml +++++ b/src/libstdc++-v3/doc/xml/api.xml ++@@ -40,6 +40,11 @@ ++ ++ ++ +++ The source-level documentation for this release can be viewed offline. +++ +++ +++ +++ ++ The API documentation, rendered into HTML, can be viewed online ++ for each GCC release ++ and diff --cc debian/patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff index 0000000,0000000..f297c7a new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-doxygen-SOURCE_DATE_EPOCH.diff @@@ -1,0 -1,0 +1,13 @@@ ++--- a/src/libstdc++-v3/scripts/run_doxygen +++++ b/src/libstdc++-v3/scripts/run_doxygen ++@@ -130,7 +130,9 @@ do_latex=false ++ latex_cmd= ++ enabled_sections= ++ generate_tagfile= ++-DATEtext=`date '+%Y-%m-%d'` +++DATE_FMT="+%Y-%m-%d" +++SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-$(date +%s)}" +++DATEtext=`date -u -d "@$SOURCE_DATE_EPOCH" "$DATE_FMT" 2>/dev/null || date -u -r "$SOURCE_DATE_EPOCH" "$DATE_FMT" 2>/dev/null || date -u "$DATE_FMT"` ++ ++ # Show how this script is called. ++ echo run_doxygen $* diff --cc debian/patches/libstdc++-hurd.diff index 0000000,0000000..278d83a new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-hurd.diff @@@ -1,0 -1,0 +1,48 @@@ ++This is notably needed because in glibc 2.34, the move of pthread functions ++into libc.so happened for Linux only, not GNU/Hurd. ++ ++The pthread_self() function can also always be used fine as it is on ++GNU/Hurd. ++ ++libstdc++-v3/ChangeLog: ++ ++ * config/os/gnu-linux/os_defines.h [!__linux__] ++ (_GLIBCXX_NATIVE_THREAD_ID, _GLIBCXX_GTHREAD_USE_WEAK): Do not define. ++ ++--- a/src/libstdc++-v3/config/os/gnu-linux/os_defines.h +++++ b/src/libstdc++-v3/config/os/gnu-linux/os_defines.h ++@@ -60,22 +60,24 @@ ++ # define _GLIBCXX_HAVE_FLOAT128_MATH 1 ++ #endif ++ ++-#if __GLIBC_PREREQ(2, 27) ++-// Since glibc 2.27 pthread_self() is usable without linking to libpthread. ++-# define _GLIBCXX_NATIVE_THREAD_ID pthread_self() ++-#else +++#ifdef __linux__ +++# if __GLIBC_PREREQ(2, 27) +++// Since glibc 2.27 Linux' pthread_self() is usable without linking to libpthread. +++# define _GLIBCXX_NATIVE_THREAD_ID pthread_self() +++# else ++ // Before then it was in libc.so.6 but not libc.a, and always returns 0, ++ // which breaks the invariant this_thread::get_id() != thread::id{}. ++ // So only use it if we know the libpthread version is available. ++ // Otherwise use (__gthread_t)1 as the ID of the main (and only) thread. ++-# define _GLIBCXX_NATIVE_THREAD_ID \ ++- (__gthread_active_p() ? __gthread_self() : (__gthread_t)1) ++-#endif +++# define _GLIBCXX_NATIVE_THREAD_ID \ +++ (__gthread_active_p() ? __gthread_self() : (__gthread_t)1) +++# endif ++ ++-#if __GLIBC_PREREQ(2, 34) ++-// Since glibc 2.34 all pthreads functions are usable without linking to +++# if __GLIBC_PREREQ(2, 34) +++// Since glibc 2.34 all Linux pthreads functions are usable without linking to ++ // libpthread. ++-# define _GLIBCXX_GTHREAD_USE_WEAK 0 +++# define _GLIBCXX_GTHREAD_USE_WEAK 0 +++# endif ++ #endif ++ ++ #endif diff --cc debian/patches/libstdc++-man-3cxx.diff index 0000000,0000000..a8963aa new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-man-3cxx.diff @@@ -1,0 -1,0 +1,63 @@@ ++# DP: Install libstdc++ man pages with suffix .3cxx instead of .3 ++ ++--- a/src/libstdc++-v3/doc/doxygen/user.cfg.in +++++ b/src/libstdc++-v3/doc/doxygen/user.cfg.in ++@@ -2146,7 +2146,7 @@ MAN_OUTPUT = man ++ # The default value is: .3. ++ # This tag requires that the tag GENERATE_MAN is set to YES. ++ ++-MAN_EXTENSION = .3 +++MAN_EXTENSION = .3cxx ++ ++ # The MAN_SUBDIR tag determines the name of the directory created within ++ # MAN_OUTPUT in which the man pages are placed. If defaults to man followed by ++--- a/src/libstdc++-v3/scripts/run_doxygen +++++ b/src/libstdc++-v3/scripts/run_doxygen ++@@ -262,6 +262,9 @@ fi ++ if $do_man; then ++ echo :: ++ echo :: Fixing up the man pages... +++mkdir -p $outdir/man/man3 +++mv $outdir/man/man3cxx/* $outdir/man/man3/ +++rmdir $outdir/man/man3cxx ++ cd $outdir/man/man3 ++ ++ # File names with embedded spaces (EVIL!) need to be....? renamed or removed? ++@@ -291,7 +294,7 @@ cxxflags="-Og -g -std=gnu++23" ++ $gxx $cppflags $cxxflags ${srcdir}/doc/doxygen/stdheader.cc -o ./stdheader || exit 1 ++ # Doxygen outputs something like "\fC#include \fP" and ++ # we want that internal header to be replaced with something like . ++-problematic=`grep -E -l '#include <.*h>' [a-z]*.3` +++problematic=`grep -E -l '#include <.*h>' [a-z]*.3 [a-z]*.3cxx` ++ for f in $problematic; do ++ # this is also slow, but safe and easy to debug ++ oldh=`sed -n '/f[CR]#include .*/\1/p' $f` ++@@ -307,7 +310,7 @@ rm stdheader ++ # Some of the pages for generated modules have text that confuses certain ++ # implementations of man(1), e.g. on GNU/Linux. We need to have another ++ # top-level *roff tag to /stop/ the .SH NAME entry. ++-problematic=`grep -E --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3` +++problematic=`grep -E --files-without-match '^\.SH SYNOPSIS' [A-Z]*.3cxx` ++ #problematic='Containers.3 Sequences.3 Assoc_containers.3 Iterator_types.3' ++ ++ for f in $problematic; do ++@@ -321,7 +324,7 @@ a\ ++ done ++ ++ # Also, break this (generated) line up. It's ugly as sin. ++-problematic=`grep -l '[^^]Definition at line' *.3` +++problematic=`grep -l '[^^]Definition at line' *.3 *.3cxx` ++ for f in $problematic; do ++ sed 's/Definition at line/\ ++ .PP\ ++@@ -452,8 +455,8 @@ for f in ios streambuf istream ostream i ++ istringstream ostringstream stringstream filebuf ifstream \ ++ ofstream fstream string ++ do ++- echo ".so man3/std::basic_${f}.3" > std::${f}.3 ++- echo ".so man3/std::basic_${f}.3" > std::w${f}.3 +++ echo ".so man3/std::basic_${f}.3cxx" > std::${f}.3cxx +++ echo ".so man3/std::basic_${f}.3cxx" > std::w${f}.3cxx ++ done ++ ++ echo :: diff --cc debian/patches/libstdc++-no-testsuite.diff index 0000000,0000000..771bf7a new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-no-testsuite.diff @@@ -1,0 -1,0 +1,12 @@@ ++# DP: Don't run the libstdc++ testsuite on arm, hppa and mipsel (timeouts on the buildds) ++ ++--- a/src/libstdc++-v3/testsuite/Makefile.in +++++ b/src/libstdc++-v3/testsuite/Makefile.in ++@@ -567,6 +567,7 @@ ++ ++ # Run the testsuite in normal mode. ++ check-DEJAGNU $(check_DEJAGNU_normal_targets): check-DEJAGNU%: site.exp +++ case "$(target)" in arm*|hppa*|mipsel*) exit 0;; esac; \ ++ $(if $*,@)AR="$(AR)"; export AR; \ ++ RANLIB="$(RANLIB)"; export RANLIB; \ ++ if [ -z "$*" ] && [ "$(filter -j, $(MFLAGS))" = "-j" ]; then \ diff --cc debian/patches/libstdc++-nothumb-check.diff index 0000000,0000000..6c665a2 new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-nothumb-check.diff @@@ -1,0 -1,0 +1,38 @@@ ++# DP: Don't run the libstdc++-v3 testsuite in thumb mode on armel ++ ++Index: testsuite/Makefile.in ++=================================================================== ++--- a/src/libstdc++-v3/testsuite/Makefile.in (revision 156820) +++++ b/src/libstdc++-v3/testsuite/Makefile.in (working copy) ++@@ -583,6 +583,8 @@ ++ srcdir=`$(am__cd) $(srcdir) && pwd`; export srcdir; \ ++ EXPECT=$(EXPECT); export EXPECT; \ ++ runtest=$(RUNTEST); \ +++ runtestflags="`echo '$(RUNTESTFLAGS)' | sed 's/,-marm/-marm/'`"; \ +++ case "$$runtestflags" in *\\{\\}) runtestflags=; esac; \ ++ if [ -z "$$runtest" ]; then runtest=runtest; fi; \ ++ tool=libstdc++; \ ++ dirs=; \ ++@@ -590,7 +592,7 @@ ++ normal0) \ ++ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ ++ $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ ++- $(RUNTESTFLAGS) abi.exp; \ +++ $$runtestflags abi.exp; \ ++ else echo "WARNING: could not find \`runtest'" 1>&2; :;\ ++ fi; \ ++ dirs="`cd $$srcdir; echo [013-9][0-9]_*/* [abep]*/*`";; \ ++@@ -605,11 +607,11 @@ ++ if $(SHELL) -c "$$runtest --version" > /dev/null 2>&1; then \ ++ if [ -n "$$dirs" ]; then \ ++ $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ ++- $(RUNTESTFLAGS) \ +++ $$runtestflags \ ++ "conformance.exp=`echo $$dirs | sed 's/ /* /g;s/$$/*/'`"; \ ++ else \ ++ $$runtest $(AM_RUNTESTFLAGS) $(RUNTESTDEFAULTFLAGS) \ ++- $(RUNTESTFLAGS); \ +++ $$runtestflags; \ ++ fi; \ ++ else echo "WARNING: could not find \`runtest'" 1>&2; :;\ ++ fi diff --cc debian/patches/libstdc++-pic.diff index 0000000,0000000..6adac41 new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-pic.diff @@@ -1,0 -1,0 +1,91 @@@ ++# DP: Build and install libstdc++_pic.a library. ++ ++--- a/src/libstdc++-v3/src/Makefile.am +++++ b/src/libstdc++-v3/src/Makefile.am ++@@ -379,10 +379,12 @@ if GLIBCXX_BUILD_DEBUG ++ STAMP_DEBUG = build-debug ++ STAMP_INSTALL_DEBUG = install-debug ++ CLEAN_DEBUG = debug +++STAMP_INSTALL_PIC = install-pic ++ else ++ STAMP_DEBUG = ++ STAMP_INSTALL_DEBUG = ++ CLEAN_DEBUG = +++STAMP_INSTALL_PIC = ++ endif ++ ++ # Build a debug variant. ++@@ -425,6 +427,7 @@ build-debug: stamp-debug $(debug_backtra ++ mv Makefile Makefile.tmp; \ ++ sed -e 's,all-local: all-once,all-local:,' \ ++ -e 's,install-data-local: install-data-once,install-data-local:,' \ +++ -e 's,install-exec-local:.*,install-exec-local:,' \ ++ -e '/vpath/!s,src/c,src/debug/c,' \ ++ < Makefile.tmp > Makefile ; \ ++ rm -f Makefile.tmp ; \ ++@@ -435,3 +438,8 @@ build-debug: stamp-debug $(debug_backtra ++ install-debug: build-debug ++ (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ ++ toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; +++ +++install-exec-local: $(STAMP_INSTALL_PIC) +++$(STAMP_INSTALL_PIC): +++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) +++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a ++--- a/src/libstdc++-v3/src/Makefile.in +++++ b/src/libstdc++-v3/src/Makefile.in ++@@ -676,6 +676,8 @@ CXXLINK = \ ++ @GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_DEBUG = install-debug ++ @GLIBCXX_BUILD_DEBUG_FALSE@CLEAN_DEBUG = ++ @GLIBCXX_BUILD_DEBUG_TRUE@CLEAN_DEBUG = debug +++@GLIBCXX_BUILD_DEBUG_FALSE@STAMP_INSTALL_PIC = +++@GLIBCXX_BUILD_DEBUG_TRUE@STAMP_INSTALL_PIC = install-pic ++ ++ # Build a debug variant. ++ # Take care to fix all possibly-relative paths. ++@@ -944,7 +946,7 @@ install-dvi: install-dvi-recursive ++ ++ install-dvi-am: ++ ++-install-exec-am: install-toolexeclibLTLIBRARIES +++install-exec-am: install-exec-local install-toolexeclibLTLIBRARIES ++ ++ install-html: install-html-recursive ++ ++@@ -994,11 +996,11 @@ uninstall-am: uninstall-toolexeclibLTLIB ++ distclean-libtool distclean-tags dvi dvi-am html html-am info \ ++ info-am install install-am install-data install-data-am \ ++ install-data-local install-dvi install-dvi-am install-exec \ ++- install-exec-am install-html install-html-am install-info \ ++- install-info-am install-man install-pdf install-pdf-am \ ++- install-ps install-ps-am install-strip \ ++- install-toolexeclibLTLIBRARIES installcheck installcheck-am \ ++- installdirs installdirs-am maintainer-clean \ +++ install-exec-am install-exec-local install-html \ +++ install-html-am install-info install-info-am install-man \ +++ install-pdf install-pdf-am install-ps install-ps-am \ +++ install-strip install-toolexeclibLTLIBRARIES installcheck \ +++ installcheck-am installdirs installdirs-am maintainer-clean \ ++ maintainer-clean-generic mostlyclean mostlyclean-compile \ ++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \ ++ tags tags-am uninstall uninstall-am \ ++@@ -1147,6 +1149,7 @@ build-debug: stamp-debug $(debug_backtra ++ mv Makefile Makefile.tmp; \ ++ sed -e 's,all-local: all-once,all-local:,' \ ++ -e 's,install-data-local: install-data-once,install-data-local:,' \ +++ -e 's,install-exec-local:.*,install-exec-local:,' \ ++ -e '/vpath/!s,src/c,src/debug/c,' \ ++ < Makefile.tmp > Makefile ; \ ++ rm -f Makefile.tmp ; \ ++@@ -1158,6 +1161,11 @@ install-debug: build-debug ++ (cd ${debugdir} && $(MAKE) CXXFLAGS='$(DEBUG_FLAGS)' \ ++ toolexeclibdir=$(glibcxx_toolexeclibdir)/debug install) ; ++ +++install-exec-local: $(STAMP_INSTALL_PIC) +++$(STAMP_INSTALL_PIC): +++ $(MKDIR_P) $(DESTDIR)$(toolexeclibdir) +++ $(INSTALL_DATA) .libs/libstdc++convenience.a $(DESTDIR)$(toolexeclibdir)/libstdc++_pic.a +++ ++ # Tell versions [3.59,3.63) of GNU make to not export all variables. ++ # Otherwise a system limit (for SysV at least) may be exceeded. ++ .NOEXPORT: diff --cc debian/patches/libstdc++-pythondir.diff index 0000000,0000000..325020c new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-pythondir.diff @@@ -1,0 -1,0 +1,22 @@@ ++--- a/src/libstdc++-v3/python/Makefile.am +++++ b/src/libstdc++-v3/python/Makefile.am ++@@ -26,7 +26,7 @@ include $(top_srcdir)/fragment.am ++ if ENABLE_PYTHONDIR ++ pythondir = $(prefix)/$(python_mod_dir) ++ else ++-pythondir = $(datadir)/gcc-$(gcc_version)/python +++pythondir = $(datadir)/gcc/python ++ endif ++ ++ if GLIBCXX_BUILD_DEBUG ++--- a/src/libstdc++-v3/python/Makefile.in +++++ b/src/libstdc++-v3/python/Makefile.in ++@@ -409,7 +409,7 @@ WARN_CXXFLAGS = \ ++ ++ # -I/-D flags to pass when compiling. ++ AM_CPPFLAGS = $(GLIBCXX_INCLUDES) $(CPPFLAGS) ++-@ENABLE_PYTHONDIR_FALSE@pythondir = $(datadir)/gcc-$(gcc_version)/python +++@ENABLE_PYTHONDIR_FALSE@pythondir = $(datadir)/gcc/python ++ @ENABLE_PYTHONDIR_TRUE@pythondir = $(prefix)/$(python_mod_dir) ++ @GLIBCXX_BUILD_DEBUG_FALSE@debug_gdb_py = ++ @GLIBCXX_BUILD_DEBUG_TRUE@debug_gdb_py = YES diff --cc debian/patches/libstdc++-test-installed.diff index 0000000,0000000..b266c7e new file mode 100644 --- /dev/null +++ b/debian/patches/libstdc++-test-installed.diff @@@ -1,0 -1,0 +1,76 @@@ ++# DP: Add support to run the libstdc++-v3 testsuite using the ++# DP: installed shared libraries. ++ ++--- a/src/libstdc++-v3/testsuite/lib/libstdc++.exp +++++ b/src/libstdc++-v3/testsuite/lib/libstdc++.exp ++@@ -37,6 +37,12 @@ ++ # the last thing before testing begins. This can be defined in, e.g., ++ # ~/.dejagnurc or $DEJAGNU. ++ +++set test_installed 0 +++if [info exists env(TEST_INSTALLED)] { +++ verbose -log "test installed libstdc++-v3" +++ set test_installed 1 +++} +++ ++ proc load_gcc_lib { filename } { ++ global srcdir loaded_libs ++ ++@@ -117,6 +123,7 @@ proc libstdc++_init { testfile } { ++ global tool_timeout ++ global DEFAULT_CXXFLAGS ++ global STATIC_LIBCXXFLAGS +++ global test_installed ++ ++ # We set LC_ALL and LANG to C so that we get the same error ++ # messages as expected. ++@@ -136,6 +143,9 @@ proc libstdc++_init { testfile } { ++ ++ set blddir [lookfor_file [get_multilibs] libstdc++-v3] ++ set flags_file "${blddir}/scripts/testsuite_flags" +++ if {$test_installed} { +++ set flags_file "${blddir}/scripts/testsuite_flags.installed" +++ } ++ set shlib_ext [get_shlib_extension] ++ v3track flags_file 2 ++ ++@@ -163,7 +173,11 @@ proc libstdc++_init { testfile } { ++ ++ # Locate libgcc.a so we don't need to account for different values of ++ # SHLIB_EXT on different platforms ++- set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] +++ if {$test_installed} { +++ set gccdir "" +++ } else { +++ set gccdir [lookfor_file $tool_root_dir gcc/libgcc.a] +++ } ++ if {$gccdir != ""} { ++ set gccdir [file dirname $gccdir] ++ append ld_library_path_tmp ":${gccdir}" ++@@ -183,7 +197,11 @@ proc libstdc++_init { testfile } { ++ ++ # Locate libgomp. This is only required for parallel mode. ++ set v3-libgomp 0 ++- set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] +++ if {$test_installed} { +++ set libgompdir "" +++ } else { +++ set libgompdir [lookfor_file $blddir/../libgomp .libs/libgomp.$shlib_ext] +++ } ++ if {$libgompdir != ""} { ++ set v3-libgomp 1 ++ set libgompdir [file dirname $libgompdir] ++@@ -205,7 +223,12 @@ proc libstdc++_init { testfile } { ++ ++ # Locate libstdc++ shared library. (ie libstdc++.so.) ++ set v3-sharedlib 0 ++- set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] +++ if {$test_installed} { +++ set sharedlibdir "" +++ set v3-sharedlib 1 +++ } else { +++ set sharedlibdir [lookfor_file $blddir src/.libs/libstdc++.$shlib_ext] +++ } ++ if {$sharedlibdir != ""} { ++ if { ([string match "*-*-gnu*" $target_triplet] ++ || [string match "*-*-linux*" $target_triplet] diff --cc debian/patches/musl-ssp.diff index 0000000,0000000..5a33a73 new file mode 100644 --- /dev/null +++ b/debian/patches/musl-ssp.diff @@@ -1,0 -1,0 +1,21 @@@ ++See https://git.alpinelinux.org/aports/commit/?id=d307f133de1f8a9993ab0d6fd51176b9373df4c3 ++and https://www.openwall.com/lists/musl/2014/11/05/3 ++ ++--- a/src/gcc/gcc.cc +++++ b/src/gcc/gcc.cc ++@@ -1126,8 +1126,15 @@ proper position among the other output f ++ ++ #ifndef LINK_SSP_SPEC ++ #ifdef TARGET_LIBC_PROVIDES_SSP +++#if DEFAULT_LIBC == LIBC_MUSL +++/* When linking without -fstack-protector-something but including objects that +++ were built with -fstack-protector-something, calls to __stack_chk_fail_local +++ can be emitted. Thus -lssp_nonshared must be linked unconditionally. */ +++#define LINK_SSP_SPEC "-lssp_nonshared" +++#else ++ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ ++ "|fstack-protector-strong|fstack-protector-explicit:}" +++#endif ++ #else ++ #define LINK_SSP_SPEC "%{fstack-protector|fstack-protector-all" \ ++ "|fstack-protector-strong|fstack-protector-explicit" \ diff --cc debian/patches/note-gnu-stack.diff index 0000000,0000000..b1aec35 new file mode 100644 --- /dev/null +++ b/debian/patches/note-gnu-stack.diff @@@ -1,0 -1,0 +1,125 @@@ ++# DP: Add .note.GNU-stack sections for gcc's crt files, libffi and boehm-gc ++# DP: Taken from FC. ++ ++gcc/ ++ ++2004-09-20 Jakub Jelinek ++ ++ * config/rs6000/ppc-asm.h: Add .note.GNU-stack section also ++ on ppc64-linux. ++ ++ * config/ia64/lib1funcs.asm: Add .note.GNU-stack section on ++ ia64-linux. ++ * config/ia64/crtbegin.asm: Likewise. ++ * config/ia64/crtend.asm: Likewise. ++ * config/ia64/crti.asm: Likewise. ++ * config/ia64/crtn.asm: Likewise. ++ ++2004-05-14 Jakub Jelinek ++ ++ * config/ia64/linux.h (TARGET_ASM_FILE_END): Define. ++ ++libffi/ ++ ++2007-05-11 Daniel Jacobowitz ++ ++ * src/arm/sysv.S: Fix ARM comment marker. ++ ++2005-02-08 Jakub Jelinek ++ ++ * src/alpha/osf.S: Add .note.GNU-stack on Linux. ++ * src/s390/sysv.S: Likewise. ++ * src/powerpc/linux64.S: Likewise. ++ * src/powerpc/linux64_closure.S: Likewise. ++ * src/powerpc/ppc_closure.S: Likewise. ++ * src/powerpc/sysv.S: Likewise. ++ * src/x86/unix64.S: Likewise. ++ * src/x86/sysv.S: Likewise. ++ * src/sparc/v8.S: Likewise. ++ * src/sparc/v9.S: Likewise. ++ * src/m68k/sysv.S: Likewise. ++ * src/ia64/unix.S: Likewise. ++ * src/arm/sysv.S: Likewise. ++ ++--- ++ gcc/config/ia64/linux.h | 3 +++ ++ gcc/config/rs6000/ppc-asm.h | 2 +- ++ libgcc/config/ia64/crtbegin.S | 4 ++++ ++ libgcc/config/ia64/crtend.S | 4 ++++ ++ libgcc/config/ia64/crti.S | 4 ++++ ++ libgcc/config/ia64/crtn.S | 4 ++++ ++ libgcc/config/ia64/lib1funcs.S | 4 ++++ ++ 9 files changed, 39 insertions(+), 13 deletions(-) ++ ++--- a/src/libgcc/config/ia64/crtbegin.S +++++ b/src/libgcc/config/ia64/crtbegin.S ++@@ -185,3 +185,7 @@ __do_global_dtors_aux: ++ .weak __cxa_finalize ++ #endif ++ .weak _Jv_RegisterClasses +++ +++#ifdef __linux__ +++.section .note.GNU-stack; .previous +++#endif ++--- a/src/libgcc/config/ia64/crtend.S +++++ b/src/libgcc/config/ia64/crtend.S ++@@ -114,3 +114,7 @@ __do_global_ctors_aux: ++ ++ br.ret.sptk.many rp ++ .endp __do_global_ctors_aux +++ +++#ifdef __linux__ +++.section .note.GNU-stack; .previous +++#endif ++--- a/src/libgcc/config/ia64/crti.S +++++ b/src/libgcc/config/ia64/crti.S ++@@ -51,3 +51,7 @@ _fini: ++ .body ++ ++ # end of crti.S +++ +++#ifdef __linux__ +++.section .note.GNU-stack; .previous +++#endif ++--- a/src/libgcc/config/ia64/crtn.S +++++ b/src/libgcc/config/ia64/crtn.S ++@@ -41,3 +41,7 @@ ++ br.ret.sptk.many b0 ++ ++ # end of crtn.S +++ +++#ifdef __linux__ +++.section .note.GNU-stack; .previous +++#endif ++--- a/src/libgcc/config/ia64/lib1funcs.S +++++ b/src/libgcc/config/ia64/lib1funcs.S ++@@ -793,3 +793,7 @@ __floattitf: ++ .endp __floattitf ++ #endif ++ #endif +++ +++#ifdef __linux__ +++.section .note.GNU-stack; .previous +++#endif ++--- a/src/gcc/config/ia64/linux.h +++++ b/src/gcc/config/ia64/linux.h ++@@ -79,5 +79,8 @@ do { \ ++ #undef TARGET_INIT_LIBFUNCS ++ #define TARGET_INIT_LIBFUNCS ia64_soft_fp_init_libfuncs ++ +++#undef TARGET_ASM_FILE_END +++#define TARGET_ASM_FILE_END file_end_indicate_exec_stack +++ ++ /* Define this to be nonzero if static stack checking is supported. */ ++ #define STACK_CHECK_STATIC_BUILTIN 1 ++--- a/src/gcc/config/rs6000/ppc-asm.h +++++ b/src/gcc/config/rs6000/ppc-asm.h ++@@ -384,7 +384,7 @@ GLUE(.L,name): \ ++ #endif ++ #endif ++ ++-#if defined __linux__ && !defined __powerpc64__ +++#if defined __linux__ ++ .section .note.GNU-stack ++ .previous ++ #endif diff --cc debian/patches/pr106641.diff index 0000000,0000000..6e69644 new file mode 100644 --- /dev/null +++ b/debian/patches/pr106641.diff @@@ -1,0 -1,0 +1,52 @@@ ++# DP: Fix PR demangler/106641, taken from the trunk. ++ ++libiberty: fix resource exhaustion in rust demangler (PR demangler/106641) ++ ++demangle_binder() parses the bound_lifetimes count as a base-62 ++integer with no upper bound. A crafted symbol can encode a huge ++lifetime count in very few bytes, causing OOM or CPU hang. ++ ++Cap bound_lifetimes at 1024 and check rdm->errored in the loop ++so it bails out early on errors during iteration. ++ ++libiberty/ChangeLog: ++ ++ PR demangler/106641 ++ * rust-demangle.c (demangle_binder): Reject bound_lifetimes ++ above 1024 to prevent resource exhaustion from crafted symbols. ++ Add rdm->errored check in the loop condition. ++ * testsuite/rust-demangle-expected: Add regression test. ++ ++--- a/src/libiberty/rust-demangle.c +++++ b/src/libiberty/rust-demangle.c ++@@ -651,10 +651,17 @@ demangle_binder (struct rust_demangler *rdm) ++ return; ++ ++ bound_lifetimes = parse_opt_integer_62 (rdm, 'G'); +++ /* Reject implausibly large lifetime counts to prevent +++ resource exhaustion from crafted symbols (PR demangler/106641). */ +++ if (bound_lifetimes > 1024) +++ { +++ rdm->errored = 1; +++ return; +++ } ++ if (bound_lifetimes > 0) ++ { ++ PRINT ("for<"); ++- for (i = 0; i < bound_lifetimes; i++) +++ for (i = 0; i < bound_lifetimes && !rdm->errored; i++) ++ { ++ if (i > 0) ++ PRINT (", "); ++--- a/src/libiberty/testsuite/rust-demangle-expected +++++ b/src/libiberty/testsuite/rust-demangle-expected ++@@ -321,3 +321,9 @@ foo ++ --format=rust ++ _RNvC9backtrace3foo.llvm.A5310EB9 ++ backtrace::foo +++# +++# PR demangler/106641: crafted symbol with huge lifetime count +++# should not cause resource exhaustion. +++--format=rust +++_RINvC4te_C4tokpppppppppppFFFFFFGFpppppppppKj2_FFFFFFFFFFFFFE +++_RINvC4te_C4tokpppppppppppFFFFFFGFpppppppppKj2_FFFFFFFFFFFFFE diff --cc debian/patches/pr119364-1.diff index 0000000,0000000..478abae new file mode 100644 --- /dev/null +++ b/debian/patches/pr119364-1.diff @@@ -1,0 -1,0 +1,2035 @@@ ++--- a/src/gcc/cobol/cbldiag.h +++++ b/src/gcc/cobol/cbldiag.h ++@@ -97,7 +97,7 @@ void cbl_unimplemented_at( const YYLTYP ++ * be localized and fwrite directly to standard out. dbgmsg is activated by ++ * -fflex-debug or -fyacc-debug. ++ */ ++-void dbgmsg( const char fmt[], ... ); +++void dbgmsg( const char fmt[], ... ) ATTRIBUTE_PRINTF_1; ++ ++ void gcc_location_set( const YYLTYPE& loc ); ++ ++--- a/src/gcc/cobol/cdf-copy.cc +++++ b/src/gcc/cobol/cdf-copy.cc ++@@ -34,6 +34,7 @@ ++ // ++ // We regret any confusion engendered. ++ +++#include "config.h" ++ #include ++ ++ #include "cobol-system.h" ++--- a/src/gcc/cobol/cdf.y +++++ b/src/gcc/cobol/cdf.y ++@@ -245,8 +245,8 @@ apply_cdf_turn( exception_turns_t& turns ++ %printer { fprintf(yyo, "%s '%s'", ++ keyword_str($$.token), ++ $$.string? $$.string : "" ); } ++-%printer { fprintf(yyo, "%ld '%s'", ++- $$.number, $$.string? $$.string : "" ); } +++%printer { fprintf(yyo, HOST_SIZE_T_PRINT_DEC " '%s'", +++ (fmt_size_t)$$.number, $$.string? $$.string : "" ); } ++ ++ %type NAME NUMSTR LITERAL PSEUDOTEXT ++ %type LSUB RSUB SUBSCRIPT ++@@ -828,7 +828,8 @@ defined_cmd( const char arg[] ) ++ ++ if( yydebug ) { ++ if( cdf_name->second.is_numeric() ) { ++- dbgmsg("%s: added -D %s = %ld", __func__, name, cdf_name->second.as_number()); +++ dbgmsg("%s: added -D %s = " HOST_SIZE_T_PRINT_DEC, +++ __func__, name, (fmt_size_t)cdf_name->second.as_number()); ++ } else { ++ dbgmsg("%s: added -D %s = \"%s\"", __func__, name, cdf_name->second.string); ++ } ++--- a/src/gcc/cobol/gcobolspec.cc +++++ b/src/gcc/cobol/gcobolspec.cc ++@@ -541,13 +541,14 @@ lang_specific_driver (struct cl_decoded_ ++ #endif ++ if( verbose && new_options != original_options ) ++ { ++- fprintf(stderr, _("Driving: (%ld)\n"), new_option_count); +++ fprintf(stderr, _("Driving: (" HOST_SIZE_T_PRINT_DEC ")\n"), +++ (fmt_size_t)new_option_count); ++ for(size_t i=0; iname, k.called); +++ fprintf(stderr, "\t#%-3" GCC_PRISZ "u %s calls %s ", +++ (fmt_size_t)k.caller, cbl_label_of(symbol_at(k.caller))->name, +++ k.called); ++ char ch = '['; ++ for( auto func : v ) { ++ fprintf( stderr, "%c %s", ch, IDENTIFIER_POINTER(DECL_NAME(func.node)) ); ++@@ -2310,9 +2313,11 @@ combined_name(cbl_label_t *label) ++ { ++ strcat(retval, mangled_program_name); ++ } ++- sprintf(ach, ".%ld", current_function->program_id_number); +++ sprintf(ach, "." HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)current_function->program_id_number); ++ strcat(retval, ach); ++- sprintf(ach, ".%ld", symbol_label_id(label)); +++ sprintf(ach, "." HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)symbol_label_id(label)); ++ strcat(retval, ach); ++ free(mangled_program_name); ++ free(section); ++@@ -2358,11 +2363,11 @@ section_label(struct cbl_proc_t *procedu ++ ++ cbl_label_t *label = procedure->label; ++ // The _initialize_program section isn't relevant. ++- char *psz = xasprintf("%s SECTION %s in %s (%ld)", +++ char *psz = xasprintf("%s SECTION %s in %s (" HOST_SIZE_T_PRINT_DEC ")", ++ ASM_COMMENT_START, ++ label->name, ++ current_function->our_unmangled_name, ++- deconflictor); +++ (fmt_size_t)deconflictor); ++ gg_insert_into_assembler(psz); ++ free(psz); ++ ++@@ -2410,12 +2415,12 @@ paragraph_label(struct cbl_proc_t *proce ++ ++ char *psz1 = ++ xasprintf( ++- "%s PARAGRAPH %s of %s in %s (%ld)", +++ "%s PARAGRAPH %s of %s in %s (" HOST_SIZE_T_PRINT_DEC ")", ++ ASM_COMMENT_START, ++ para_name ? para_name: "" , ++ section_name ? section_name: "(null)" , ++ current_function->our_unmangled_name ? current_function->our_unmangled_name: "" , ++- deconflictor ); +++ (fmt_size_t)deconflictor ); ++ ++ gg_insert_into_assembler(psz1); ++ ++@@ -2527,8 +2532,8 @@ leave_procedure(struct cbl_proc_t *proce ++ gg_append_statement(procedure->exit.label); ++ ++ char *psz; ++- psz = xasprintf("_procret.%ld:", ++- symbol_label_id(procedure->label)); +++ psz = xasprintf("_procret." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)symbol_label_id(procedure->label)); ++ gg_insert_into_assembler(psz); ++ free(psz); ++ pseudo_return_pop(procedure); ++@@ -3009,12 +3014,12 @@ parser_perform(cbl_label_t *label, bool ++ para_name = label->name; ++ sect_name = section_label->name; ++ sprintf(ach, ++- "%s PERFORM %s of %s of %s (%ld)", +++ "%s PERFORM %s of %s of %s (" HOST_SIZE_T_PRINT_DEC ")", ++ ASM_COMMENT_START, ++ para_name, ++ sect_name, ++ program_name, ++- deconflictor); +++ (fmt_size_t)deconflictor); ++ ++ gg_insert_into_assembler(ach); ++ } ++@@ -3022,19 +3027,19 @@ parser_perform(cbl_label_t *label, bool ++ { ++ sect_name = label->name; ++ sprintf(ach, ++- "%s PERFORM %s of %s (%ld)", +++ "%s PERFORM %s of %s (" HOST_SIZE_T_PRINT_DEC ")", ++ ASM_COMMENT_START, ++ sect_name, ++ program_name, ++- deconflictor); +++ (fmt_size_t)deconflictor); ++ gg_insert_into_assembler(ach); ++ } ++ ++ if( !suppress_nexting ) ++ { ++ sprintf(ach, ++- "_proccall.%ld.%d:", ++- symbol_label_id(label), +++ "_proccall." HOST_SIZE_T_PRINT_DEC ".%d:", +++ (fmt_size_t)symbol_label_id(label), ++ call_counter++); ++ gg_insert_into_assembler( ach ); ++ } ++@@ -3082,8 +3087,8 @@ parser_perform_times( cbl_label_t *proc_ ++ char ach[256]; ++ size_t our_pseudo_label = pseudo_label++; ++ sprintf(ach, ++- "_proccallb.%ld:", ++- our_pseudo_label); +++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ ++ tree counter = gg_define_variable(LONG); ++@@ -3104,8 +3109,8 @@ parser_perform_times( cbl_label_t *proc_ ++ WEND ++ ++ sprintf(ach, ++- "_procretb.%ld:", ++- our_pseudo_label); +++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler(ach); ++ } ++ ++@@ -3182,8 +3187,8 @@ internal_perform_through( cbl_label_t *p ++ { ++ char ach[256]; ++ sprintf(ach, ++- "_proccall.%ld.%d:", ++- symbol_label_id(proc_2), +++ "_proccall." HOST_SIZE_T_PRINT_DEC ".%d:", +++ (fmt_size_t)symbol_label_id(proc_2), ++ call_counter++); ++ gg_insert_into_assembler(ach); ++ } ++@@ -3232,8 +3237,8 @@ internal_perform_through_times( cbl_la ++ ++ char ach[256]; ++ sprintf(ach, ++- "_proccallb.%ld:", ++- our_pseudo_label); +++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ ++ tree counter = gg_define_variable(LONG); ++@@ -3249,8 +3254,8 @@ internal_perform_through_times( cbl_la ++ WEND ++ ++ sprintf(ach, ++- "_procretb.%ld:", ++- our_pseudo_label); +++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ } ++ ++@@ -3561,7 +3566,8 @@ parser_enter_program( const char *funcna ++ if( parent_index ) ++ { ++ // This is a nested function. Tack on the parent_index to the end of it. ++- sprintf(funcname, "%s.%ld", mangled_name, parent_index); +++ sprintf(funcname, "%s." HOST_SIZE_T_PRINT_DEC, mangled_name, +++ (fmt_size_t)parent_index); ++ } ++ else ++ { ++@@ -3727,8 +3733,8 @@ parser_init_list_size(int count_of_varia ++ vti_list_size = count_of_variables; ++ char ach[48]; ++ sprintf(ach, ++- "..variables_to_init_%ld", ++- current_function->our_symbol_table_index); +++ "..variables_to_init_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)current_function->our_symbol_table_index); ++ tree array_of_variables_type = build_array_type_nelts(VOID_P, ++ count_of_variables+1); ++ vti_array = gg_define_variable( array_of_variables_type, ++@@ -3766,8 +3772,8 @@ parser_init_list() ++ ++ char ach[48]; ++ sprintf(ach, ++- "..variables_to_init_%ld", ++- current_function->our_symbol_table_index); +++ "..variables_to_init_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)current_function->our_symbol_table_index); ++ tree array = gg_trans_unit_var_decl(ach); ++ gg_call(VOID, ++ "__gg__variables_to_init", ++@@ -3948,7 +3954,7 @@ psa_FldLiteralN(struct cbl_field_t *fiel ++ ++ static size_t our_index = 0; ++ ++- sprintf(id_string, ".%ld", ++our_index); +++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, (fmt_size_t)++our_index); ++ strcpy(base_name, field->name); ++ strcat(base_name, id_string); ++ ++@@ -3985,7 +3991,7 @@ psa_FldBlob(struct cbl_field_t *var ) ++ ++ static size_t our_index = 0; ++ ++- sprintf(id_string, ".%ld", ++our_index); +++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, (fmt_size_t)++our_index); ++ strcpy(base_name, var->name); ++ strcat(base_name, id_string); ++ ++@@ -5056,7 +5062,8 @@ parser_assign( size_t nC, cbl_num_result ++ { ++ TRACE1_HEADER ++ char ach[32]; ++- sprintf(ach, "%ld target%s", nC, nC==1 ? "" : "s"); +++ sprintf(ach, HOST_SIZE_T_PRINT_DEC " target%s", +++ (fmt_size_t)nC, nC==1 ? "" : "s"); ++ TRACE1_TEXT(ach); ++ if( on_error ) ++ { ++@@ -5075,7 +5082,8 @@ parser_assign( size_t nC, cbl_num_result ++ TRACE1 ++ { ++ char ach[48]; ++- sprintf(ach, "Processing target number %ld", i); +++ sprintf(ach, "Processing target number " HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)i); ++ TRACE1_INDENT ++ TRACE1_TEXT(ach); ++ } ++@@ -6129,7 +6137,8 @@ parser_free( size_t n, cbl_refer_t refer ++ gcc_assert( ! p->is_refmod_reference() ); ++ if( !(p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e)) ) ++ { ++- dbgmsg("Deallocating %s means it has to be FldPointer or addr_of or based_e"); +++ dbgmsg("Deallocating %s means it has to be FldPointer or addr_of or based_e", +++ p->field->name); ++ } ++ gcc_assert( p->field->type == FldPointer || p->addr_of || (p->field->attr & based_e) ); ++ ++@@ -6403,8 +6412,8 @@ parser_division(cbl_division_t division, ++ // We need a pointer to the array of program names ++ char ach[2*sizeof(cbl_name_t)]; ++ sprintf(ach, ++- "..accessible_program_list_%ld", ++- current_function->our_symbol_table_index); +++ "..accessible_program_list_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)current_function->our_symbol_table_index); ++ tree prog_list = gg_define_variable(build_pointer_type(CHAR_P), ++ ach, vs_file_static); ++ ++@@ -6416,8 +6425,8 @@ parser_division(cbl_division_t division, ++ tree pointer_type = build_pointer_type(function_type); ++ tree constructed_array_type = build_array_type_nelts(pointer_type, 1); ++ sprintf(ach, ++- "..accessible_program_pointers_%ld", ++- current_function->our_symbol_table_index); +++ "..accessible_program_pointers_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)current_function->our_symbol_table_index); ++ tree prog_pointers = gg_define_variable( ++ build_pointer_type(constructed_array_type), ++ ach, ++@@ -7720,8 +7729,8 @@ perform_outofline_before_until(struct cb ++ char ach[256]; ++ size_t our_pseudo_label = pseudo_label++; ++ sprintf(ach, ++- "_proccallb.%ld:", ++- our_pseudo_label); +++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ ++ parser_if(varys[0].until); ++@@ -7743,8 +7752,8 @@ perform_outofline_before_until(struct cb ++ // Label the bottom of the PERFORM ++ gg_append_statement( tgt->addresses.exit.label ); ++ sprintf(ach, ++- "_procretb.%ld:", ++- our_pseudo_label); +++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ } ++ ++@@ -7775,8 +7784,8 @@ perform_outofline_after_until(struct cbl ++ char ach[256]; ++ size_t our_pseudo_label = pseudo_label++; ++ sprintf(ach, ++- "_proccallb.%ld:", ++- our_pseudo_label); +++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ ++ create_iline_address_pairs(tgt); ++@@ -7806,8 +7815,8 @@ perform_outofline_after_until(struct cbl ++ // Label the bottom of the PERFORM ++ gg_append_statement( tgt->addresses.exit.label ); ++ sprintf(ach, ++- "_procretb.%ld:", ++- our_pseudo_label); +++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ } ++ ++@@ -7871,8 +7880,8 @@ perform_outofline_testafter_varying(stru ++ char ach[256]; ++ size_t our_pseudo_label = pseudo_label++; ++ sprintf(ach, ++- "_proccallb.%ld:", ++- our_pseudo_label); +++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ ++ create_iline_address_pairs(tgt); ++@@ -7926,8 +7935,8 @@ perform_outofline_testafter_varying(stru ++ // Arriving here means that we all of the conditions were ++ // true. So, we're done. ++ sprintf(ach, ++- "_procretb.%ld:", ++- our_pseudo_label); +++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ } ++ ++@@ -7988,8 +7997,8 @@ perform_outofline_before_varying( stru ++ char ach[256]; ++ size_t our_pseudo_label = pseudo_label++; ++ sprintf(ach, ++- "_proccallb.%ld:", ++- our_pseudo_label); +++ "_proccallb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ ++ // Initialize all varying: ++@@ -8069,8 +8078,8 @@ perform_outofline_before_varying( stru ++ // We have, you see, reached the egress: ++ gg_append_statement( tgt->addresses.exit.label ); ++ sprintf(ach, ++- "_procretb.%ld:", ++- our_pseudo_label); +++ "_procretb." HOST_SIZE_T_PRINT_DEC ":", +++ (fmt_size_t)our_pseudo_label); ++ gg_insert_into_assembler( ach ); ++ } ++ ++@@ -8277,7 +8286,7 @@ perform_inline_testbefore_varying( stru ++ { ++ SHOW_PARSE_INDENT ++ char ach[32]; ++- sprintf(ach, "LABEL [%ld]:", i); +++ sprintf(ach, "LABEL [" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)i); ++ SHOW_PARSE_TEXT(ach) ++ SHOW_PARSE_END ++ } ++@@ -8288,7 +8297,8 @@ perform_inline_testbefore_varying( stru ++ { ++ SHOW_PARSE_INDENT ++ char ach[32]; ++- sprintf(ach, "LABEL CONDINTO[%ld]:", i); +++ sprintf(ach, "LABEL CONDINTO[" HOST_SIZE_T_PRINT_DEC "]:", +++ (fmt_size_t)i); ++ SHOW_PARSE_TEXT(ach) ++ SHOW_PARSE_END ++ } ++@@ -8299,7 +8309,8 @@ perform_inline_testbefore_varying( stru ++ { ++ SHOW_PARSE_INDENT ++ char ach[32]; ++- sprintf(ach, "LABEL CONDBACK[%ld]:", i); +++ sprintf(ach, "LABEL CONDBACK[" HOST_SIZE_T_PRINT_DEC "]:", +++ (fmt_size_t)i); ++ SHOW_PARSE_TEXT(ach) ++ SHOW_PARSE_END ++ } ++@@ -8334,7 +8345,8 @@ perform_inline_testbefore_varying( stru ++ { ++ SHOW_PARSE_INDENT ++ char ach[32]; ++- sprintf(ach, "GOTO [%ld]:", i-1); +++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", +++ (fmt_size_t)(i-1)); ++ SHOW_PARSE_TEXT(ach) ++ SHOW_PARSE_END ++ } ++@@ -8368,7 +8380,8 @@ perform_inline_testbefore_varying( stru ++ { ++ SHOW_PARSE_INDENT ++ char ach[32]; ++- sprintf(ach, "GOTO [%ld]:", N-1); +++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", +++ (fmt_size_t)(N-1)); ++ SHOW_PARSE_TEXT(ach) ++ SHOW_PARSE_END ++ } ++@@ -8385,7 +8398,8 @@ perform_inline_testbefore_varying( stru ++ { ++ SHOW_PARSE_INDENT ++ char ach[32]; ++- sprintf(ach, "GOTO [%ld]:", i-1); +++ sprintf(ach, "GOTO [" HOST_SIZE_T_PRINT_DEC "]:", +++ (fmt_size_t)(i-1)); ++ SHOW_PARSE_TEXT(ach) ++ SHOW_PARSE_END ++ } ++@@ -9964,7 +9978,7 @@ inspect_replacing(int backward, ++ void ++ parser_inspect(cbl_refer_t identifier_1, ++ bool backward, ++- unsigned long n_operations, +++ size_t n_operations, ++ cbx_inspect_t* operations) ++ { ++ Analyze(); ++@@ -10185,7 +10199,8 @@ parser_intrinsic_callv( cbl_field_t *tgt ++ SHOW_PARSE_HEADER ++ SHOW_PARSE_TEXT(" of ") ++ SHOW_PARSE_TEXT(function_name) ++- fprintf(stderr, " with %zd parameters", nrefs); +++ fprintf(stderr, " with " HOST_SIZE_T_PRINT_DEC " parameters", +++ (fmt_size_t)nrefs); ++ SHOW_PARSE_END ++ } ++ ++@@ -12686,7 +12701,7 @@ parser_bitop( struct cbl_field_t *tgt, ++ { ++ SHOW_PARSE_HEADER ++ SHOW_PARSE_FIELD( " switch: ", a) ++- fprintf(stderr, " mask: %lx", bitmask); +++ fprintf(stderr, " mask: " HOST_SIZE_T_PRINT_HEX_PURE, (fmt_size_t)bitmask); ++ fprintf(stderr, " op: %s", ops[op]); ++ SHOW_PARSE_FIELD( " target ", tgt) ++ SHOW_PARSE_END ++@@ -12770,7 +12785,7 @@ parser_bitwise_op(struct cbl_field_t *tg ++ { ++ SHOW_PARSE_HEADER ++ SHOW_PARSE_FIELD( " switch: ", a) ++- fprintf(stderr, " mask: %lx", bitmask); +++ fprintf(stderr, " mask: " HOST_SIZE_T_PRINT_HEX_PURE, (fmt_size_t)bitmask); ++ fprintf(stderr, " op: %s", ops[op]); ++ SHOW_PARSE_FIELD( " target ", tgt) ++ SHOW_PARSE_END ++@@ -12974,11 +12989,11 @@ parser_program_hierarchy( const struct c ++ } ++ char ach[128]; ++ sprintf(ach, ++- "%ld %s%s parent:%ld", ++- hier.labels[i].ordinal, +++ HOST_SIZE_T_PRINT_DEC " %s%s parent:" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)hier.labels[i].ordinal, ++ hier.labels[i].label.name, ++ hier.labels[i].label.common ? " COMMON" : "", ++- hier.labels[i].label.parent); +++ (fmt_size_t)hier.labels[i].label.parent); ++ SHOW_PARSE_TEXT(ach); ++ } ++ } ++@@ -13107,12 +13122,14 @@ parser_program_hierarchy( const struct c ++ ++ char ach[2*sizeof(cbl_name_t)]; ++ tree names_table_type = build_array_type_nelts(CHAR_P, mol->second.size()+1); ++- sprintf(ach, "..our_accessible_functions_%ld", caller); +++ sprintf(ach, "..our_accessible_functions_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)caller); ++ tree the_names_table = gg_define_variable(names_table_type, ach, vs_file_static); ++ ++ // Here is where we build a table out of constructors: ++ tree constructed_array_type = build_array_type_nelts(pointer_type, mol->second.size()); ++- sprintf(ach, "..our_constructed_table_%ld", caller); +++ sprintf(ach, "..our_constructed_table_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)caller); ++ tree the_constructed_table = gg_define_variable(constructed_array_type, ach, vs_file_static); ++ ++ tree constr_names = make_node(CONSTRUCTOR); ++@@ -13130,7 +13147,8 @@ parser_program_hierarchy( const struct c ++ callee != mol->second.end(); ++ callee++ ) ++ { ++- sprintf(ach, "%s.%ld", (*callee)->name, (*callee)->parent_node->our_index); +++ sprintf(ach, "%s." HOST_SIZE_T_PRINT_DEC, (*callee)->name, +++ (fmt_size_t)(*callee)->parent_node->our_index); ++ ++ CONSTRUCTOR_APPEND_ELT( CONSTRUCTOR_ELTS(constr_names), ++ build_int_cst_type(SIZE_T, i), ++@@ -13156,11 +13174,13 @@ parser_program_hierarchy( const struct c ++ ++ // And put a pointer to that table into the file-static variable set aside ++ // for it: ++- sprintf(ach, "..accessible_program_list_%ld", caller); +++ sprintf(ach, "..accessible_program_list_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)caller); ++ tree accessible_list_var_decl = gg_trans_unit_var_decl(ach); ++ gg_assign( accessible_list_var_decl, gg_get_address_of(the_names_table) ); ++ ++- sprintf(ach, "..accessible_program_pointers_%ld", caller); +++ sprintf(ach, "..accessible_program_pointers_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)caller); ++ tree accessible_programs_decl = gg_trans_unit_var_decl(ach); ++ gg_assign( accessible_programs_decl, gg_get_address_of(the_constructed_table) ); ++ } ++@@ -13178,7 +13198,8 @@ parser_set_handled(ec_type_t ec_handled) ++ { ++ SHOW_PARSE_HEADER ++ char ach[64]; ++- sprintf(ach, "ec_type_t: 0x%lx", size_t(ec_handled)); +++ sprintf(ach, "ec_type_t: 0x" HOST_SIZE_T_PRINT_HEX_PURE, +++ (fmt_size_t)ec_handled); ++ SHOW_PARSE_TEXT(ach); ++ SHOW_PARSE_END ++ } ++@@ -13247,7 +13268,7 @@ parser_set_numeric(struct cbl_field_t *t ++ SHOW_PARSE_TEXT(tgt->name) ++ SHOW_PARSE_TEXT(" to ") ++ char ach[32]; ++- sprintf(ach, "%ld", value); +++ sprintf(ach, HOST_SIZE_T_PRINT_DEC, (fmt_size_t)value); ++ SHOW_PARSE_TEXT(ach); ++ SHOW_PARSE_END ++ } ++@@ -15969,12 +15990,14 @@ psa_new_var_decl(cbl_field_t *new_var, c ++ && symbol_at(new_var->parent)->type == SymField ) ++ { ++ // We have a parent that is a field ++- sprintf(id_string, ".%ld_%ld", our_index, new_var->parent); +++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC "_" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)our_index, (fmt_size_t)new_var->parent); ++ } ++ else ++ { ++ // The parent is zero, so it'll be implied: ++- sprintf(id_string, ".%ld", our_index); +++ sprintf(id_string, "." HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)our_index); ++ } ++ ++ if(strcasecmp(new_var->name, "filler") == 0) ++@@ -16215,29 +16238,30 @@ parser_symbol_add(struct cbl_field_t *ne ++ } ++ while(0); ++ ++- fprintf(stderr, " %2.2d %s<%s> off:%zd " ++- "msiz:%d cap:%d dig:%d rdig:%d attr:0x%lx loc:%p", +++ fprintf(stderr, " %2.2d %s<%s> off:" HOST_SIZE_T_PRINT_DEC " " +++ "msiz:%d cap:%d dig:%d rdig:%d attr:0x" HOST_SIZE_T_PRINT_HEX_PURE " loc:%p", ++ new_var->level, ++ new_var->name, ++ cbl_field_type_str(new_var->type), ++- new_var->offset, +++ (fmt_size_t)new_var->offset, ++ new_var->data.memsize, ++ new_var->data.capacity, ++ new_var->data.digits, ++ new_var->data.rdigits, ++- new_var->attr, +++ (fmt_size_t)new_var->attr, ++ (void*)new_var); ++ ++ if( is_table(new_var) ) ++ { ++- fprintf(stderr," OCCURS:%zd", new_var->occurs.ntimes()); +++ fprintf(stderr," OCCURS:" HOST_SIZE_T_PRINT_DEC, +++ (fmt_size_t)new_var->occurs.ntimes()); ++ } ++ cbl_field_t *parent = parent_of(new_var); ++ if( parent ) ++ { ++ fprintf(stderr, ++- " parent:(%zd)%s", ++- new_var->parent, +++ " parent:(" HOST_SIZE_T_PRINT_DEC ")%s", +++ (fmt_size_t)new_var->parent, ++ parent->name); ++ } ++ else ++@@ -16250,8 +16274,8 @@ parser_symbol_add(struct cbl_field_t *ne ++ if( e->type == SymFile ) ++ { ++ fprintf(stderr, ++- " parent_file:(%zd)%s", ++- new_var->parent, +++ " parent_file:(" HOST_SIZE_T_PRINT_DEC ")%s", +++ (fmt_size_t)new_var->parent, ++ e->elem.file.name); ++ if( e->elem.file.attr & external_e ) ++ { ++@@ -16706,9 +16730,10 @@ parser_symbol_add(struct cbl_field_t *ne ++ if( !bytes_to_allocate ) ++ { ++ fprintf(stderr, ++- "bytes_to_allocate is zero for %s (symbol number %ld)\n", +++ "bytes_to_allocate is zero for %s (symbol number " +++ HOST_SIZE_T_PRINT_DEC ")\n", ++ new_var->name, ++- new_var->our_index); +++ (fmt_size_t)new_var->our_index); ++ gcc_assert(bytes_to_allocate); ++ } ++ ++@@ -16742,16 +16767,16 @@ parser_symbol_add(struct cbl_field_t *ne ++ { ++ // Avoid doubling up on leading underscore ++ sprintf(achDataName, ++- "%s_data_%lu", +++ "%s_data_" HOST_SIZE_T_PRINT_UNSIGNED, ++ new_var->name, ++- sv_data_name_counter++); +++ (fmt_size_t)sv_data_name_counter++); ++ } ++ else ++ { ++ sprintf(achDataName, ++- "_%s_data_%lu", +++ "_%s_data_" HOST_SIZE_T_PRINT_UNSIGNED, ++ new_var->name, ++- sv_data_name_counter++); +++ (fmt_size_t)sv_data_name_counter++); ++ } ++ ++ if( new_var->attr & external_e ) ++--- a/src/gcc/cobol/gengen.cc +++++ b/src/gcc/cobol/gengen.cc ++@@ -393,13 +393,13 @@ show_type(tree type) ++ ++ case REAL_TYPE: ++ sprintf(ach, ++- "%3ld-bit REAL", +++ "%3" PRId64 "-bit REAL", ++ TREE_INT_CST_LOW(TYPE_SIZE(type))); ++ break; ++ ++ case INTEGER_TYPE: ++ sprintf(ach, ++- "%3ld-bit %s INT", +++ "%3" PRId64 "-bit %s INT", ++ TREE_INT_CST_LOW(TYPE_SIZE(type)), ++ (TYPE_UNSIGNED(type) ? "unsigned" : " signed")); ++ break; ++@@ -892,7 +892,8 @@ gg_unique_in_function(const char *var_na ++ char *retval = (char *)xmalloc(strlen(var_name)+32); ++ if( (vs_scope == vs_stack || vs_scope == vs_static) ) ++ { ++- sprintf(retval, "%s.%ld", var_name, current_function->program_id_number); +++ sprintf(retval, "%s." HOST_SIZE_T_PRINT_DEC, var_name, +++ (fmt_size_t)current_function->program_id_number); ++ } ++ else ++ { ++--- a/src/gcc/cobol/genmath.cc +++++ b/src/gcc/cobol/genmath.cc ++@@ -725,7 +725,7 @@ parser_add( size_t nC, cbl_num_result_t ++ SHOW_PARSE ++ { ++ SHOW_PARSE_HEADER ++- fprintf(stderr, " A[%ld]:", nA); +++ fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA); ++ for(size_t i=0; i 0) ++@@ -737,7 +737,7 @@ parser_add( size_t nC, cbl_num_result_t ++ ++ fprintf(stderr, "%s", format==giving_e? " GIVING" : ""); ++ ++- fprintf(stderr, " C[%ld]:", nC); +++ fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC); ++ for(size_t i=0; i 0) ++@@ -1412,7 +1412,7 @@ parser_subtract(size_t nC, cbl_num_resul ++ SHOW_PARSE ++ { ++ SHOW_PARSE_HEADER ++- fprintf(stderr, " A[%ld]:", nA); +++ fprintf(stderr, " A[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nA); ++ for(size_t i=0; i 0) ++@@ -1422,7 +1422,7 @@ parser_subtract(size_t nC, cbl_num_resul ++ fprintf(stderr, "%s", A[i].field->name); ++ } ++ ++- fprintf(stderr, " B[%ld]:", nB); +++ fprintf(stderr, " B[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nB); ++ for(size_t i=0; i 0) ++@@ -1432,7 +1432,7 @@ parser_subtract(size_t nC, cbl_num_resul ++ fprintf(stderr, "%s", B[i].field->name); ++ } ++ ++- fprintf(stderr, " C[%ld]:", nC); +++ fprintf(stderr, " C[" HOST_SIZE_T_PRINT_DEC "]:", (fmt_size_t)nC); ++ for(size_t i=0; i 0) ++--- a/src/gcc/cobol/lexio.cc +++++ b/src/gcc/cobol/lexio.cc ++@@ -28,6 +28,7 @@ ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ +++#include "config.h" ++ #include ++ #include "cobol-system.h" ++ #include "cbldiag.h" ++@@ -260,9 +261,10 @@ recognize_replacements( filespan_t mfile ++ found = span_t( cm[1].first, cm[1].second ); ++ if( yy_flex_debug ) { ++ size_t n = count_newlines(mfile.data, found.p); ++- dbgmsg("%s:%d first '%.*s' is on line %zu (offset %zu)", __func__, __LINE__, +++ dbgmsg("%s:%d first '%.*s' is on line " HOST_SIZE_T_PRINT_UNSIGNED +++ " (offset " HOST_SIZE_T_PRINT_UNSIGNED ")", __func__, __LINE__, ++ directive.before.size(), directive.before.p, ++- ++n, found.p - mfile.data); +++ (fmt_size_t)++n, (fmt_size_t)(found.p - mfile.data)); ++ } ++ } else { ++ dbgmsg("%s:%d not found: '%s' in \n'%.*s'", __func__, __LINE__, ++@@ -290,8 +292,10 @@ recognize_replacements( filespan_t mfile ++ ++ if( yy_flex_debug ) { ++ size_t n = std::count((const char *)mfile.data, recognized.before.p, '\n'); ++- dbgmsg( "%s:%d: line %zu @ %zu: '%s'\n/%.*s/%.*s/", __func__, __LINE__, ++- ++n, next.found.p - mfile.data, +++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED +++ " @ " HOST_SIZE_T_PRINT_UNSIGNED ": '%s'\n/%.*s/%.*s/", +++ __func__, __LINE__, +++ (fmt_size_t)++n, (fmt_size_t)(next.found.p - mfile.data), ++ next.directive.before.p, ++ int(recognized.before.size()), recognized.before.p, ++ int(recognized.after.size()), recognized.after.p ); ++@@ -308,9 +312,10 @@ recognize_replacements( filespan_t mfile ++ next.found = span_t( cm[1].first, cm[1].second ); ++ size_t n = std::count((const char *)mfile.data, next.found.p, '\n'); ++ if( false ) ++- dbgmsg("%s:%d next '%.*s' will be on line %zu (offset %zu)", __func__, __LINE__, +++ dbgmsg("%s:%d next '%.*s' will be on line " HOST_SIZE_T_PRINT_UNSIGNED +++ " (offset " HOST_SIZE_T_PRINT_UNSIGNED ")", __func__, __LINE__, ++ next.directive.before.size(), next.directive.before.p, ++- ++n, next.found.p - mfile.data); +++ (fmt_size_t)++n, (fmt_size_t)(next.found.p - mfile.data)); ++ } ++ pnext = std::min_element(futures.begin(), futures.end()); ++ } ++@@ -344,8 +349,10 @@ check_source_format_directive( filespan_ ++ break; ++ } ++ mfile.cur = const_cast(cm[0].second); ++- dbgmsg( "%s:%d: %s format set, on line %zu", __func__, __LINE__, ++- indicator.column == 7? "FIXED" : "FREE", mfile.lineno() ); +++ dbgmsg( "%s:%d: %s format set, on line " HOST_SIZE_T_PRINT_UNSIGNED, +++ __func__, __LINE__, +++ indicator.column == 7? "FIXED" : "FREE", +++ (fmt_size_t)mfile.lineno() ); ++ erase_line(const_cast(cm[0].first), ++ const_cast(cm[0].second)); ++ } ++@@ -724,7 +731,7 @@ parse_replacing_pair( const char *stmt, ++ // This eliminated a compiler warning about "format-overflow" ++ yywarn("CDF syntax error"); ++ } ++- pair.stmt = span_t(0UL, stmt); +++ pair.stmt = span_t(size_t(0), stmt); ++ pair.replace = replace_t(); ++ } ++ return pair; ++@@ -764,9 +771,9 @@ parse_replace_pairs( const char *stmt, c ++ // Report findings. ++ if( false && yy_flex_debug ) { ++ for( size_t i=0; i < cm.size(); i++ ) { ++- dbgmsg("%s: %s %zu: '%.*s'", __func__, +++ dbgmsg("%s: %s " HOST_SIZE_T_PRINT_UNSIGNED ": '%.*s'", __func__, ++ cm[i].matched? "Pair" : "pair", ++- i, +++ (fmt_size_t)i, ++ cm[i].matched? int(cm[i].length()) : 0, ++ cm[i].matched? cm[i].first : ""); ++ } ++@@ -825,9 +832,10 @@ parse_replace_pairs( const char *stmt, c ++ } ++ ++ if( yy_flex_debug ) { ++- dbgmsg( "%s:%d: %s: %zu pairs parsed from '%.*s'", __func__, __LINE__, ++- parsed.done()? "done" : "not done", ++- pairs.size(), parsed.stmt.size(), parsed.stmt.p ); +++ dbgmsg( "%s:%d: %s: " HOST_SIZE_T_PRINT_UNSIGNED " pairs parsed from '%.*s'", +++ __func__, __LINE__, +++ parsed.done() ? "done" : "not done", +++ (fmt_size_t)pairs.size(), parsed.stmt.size(), parsed.stmt.p ); ++ int i = 0; ++ for( const auto& replace : pairs ) { ++ dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__, ++@@ -909,9 +917,10 @@ parse_copy_directive( filespan_t& mfile ++ if( yy_flex_debug ) { ++ size_t nnl = 1 + count_newlines(mfile.data, copy_stmt.p); ++ size_t nst = 1 + count_newlines(copy_stmt.p, copy_stmt.pend); ++- dbgmsg("%s:%d: line %zu: COPY directive is %zu lines '%.*s'", +++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED +++ ": COPY directive is " HOST_SIZE_T_PRINT_UNSIGNED " lines '%.*s'", ++ __func__, __LINE__, ++- nnl, nst, copy_stmt.size(), copy_stmt.p); +++ (fmt_size_t)nnl, (fmt_size_t)nst, copy_stmt.size(), copy_stmt.p); ++ } ++ } ++ } ++@@ -924,7 +933,8 @@ parse_copy_directive( filespan_t& mfile ++ outcome.partial_line = span_t(mfile.cur, copy_stmt.p); ++ ++ if( yy_flex_debug ) { ++- dbgmsg("%zu expressions", std::count(pattern, pattern + sizeof(pattern), '(')); +++ dbgmsg(HOST_SIZE_T_PRINT_UNSIGNED " expressions", +++ (fmt_size_t)std::count(pattern, pattern + sizeof(pattern), '(')); ++ int i = 0; ++ for( const auto& m : cm ) { ++ if( m.matched ) ++@@ -1008,8 +1018,9 @@ parse_replace_last_off( filespan_t& mfil ++ } ++ } ++ ++- dbgmsg( "%s:%d: line %zu: parsed '%.*s', ", __func__, __LINE__, ++- mfile.lineno(), int(cm[0].length()), cm[0].first ); +++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": parsed '%.*s', ", +++ __func__, __LINE__, +++ (fmt_size_t)mfile.lineno(), int(cm[0].length()), cm[0].first ); ++ ++ // Remove statement from input ++ erase_line(const_cast(cm[0].first), ++@@ -1041,20 +1052,23 @@ parse_replace_text( filespan_t& mfile ) ++ gcc_assert(mfile.line_length() > 2); ++ if( pend[-1] == '\n' ) pend -= 2; ++ auto len = int(pend - mfile.cur); ++- dbgmsg("%s:%d: line %zu: parsing '%.*s", __func__, __LINE__, ++- current_lineno, len, mfile.cur); +++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": parsing '%.*s", +++ __func__, __LINE__, +++ (fmt_size_t)current_lineno, len, mfile.cur); ++ } ++ ++ if( ! regex_search(mfile.ccur(), (const char *)mfile.eodata, cm, re) ) { ++- dbgmsg( "%s:%d: line %zu: not a REPLACE statement:\n'%.*s'", ++- __func__, __LINE__, current_lineno, +++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED +++ ": not a REPLACE statement:\n'%.*s'", +++ __func__, __LINE__, (fmt_size_t)current_lineno, ++ int(mfile.line_length()), mfile.cur ); ++ return span_t(); ++ } ++ ++ // Report findings. ++ if( yy_flex_debug ) { ++- dbgmsg("%zu expressions", std::count(pattern, pattern + sizeof(pattern), '(')); +++ dbgmsg(HOST_SIZE_T_PRINT_UNSIGNED " expressions", +++ (fmt_size_t)std::count(pattern, pattern + sizeof(pattern), '(')); ++ int i = 0; ++ for( const auto& m : cm ) { ++ if( m.matched ) ++@@ -1083,8 +1097,10 @@ parse_replace_text( filespan_t& mfile ) ++ replace_directives.push( replacements ); ++ ++ if( yy_flex_debug ) { ++- dbgmsg( "%s:%d: line %zu: %zu pairs parsed from '%.*s'", __func__, __LINE__, ++- current_lineno, replacements.size(), int(replace_stmt.size()), replace_stmt.p ); +++ dbgmsg( "%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ": " HOST_SIZE_T_PRINT_UNSIGNED +++ " pairs parsed from '%.*s'", __func__, __LINE__, +++ (fmt_size_t)current_lineno, (fmt_size_t)replacements.size(), +++ int(replace_stmt.size()), replace_stmt.p ); ++ for( const auto& replace : replacements ) { ++ int i = 0; ++ dbgmsg("%s:%d:%4d: '%s' => '%s'", __func__, __LINE__, ++@@ -1164,8 +1180,9 @@ bytespan_t::append( const char *input, c ++ #if LEXIO ++ auto nq = std::count_if(data, eodata, isquote); ++ dbgmsg("%s:%3d: input ------ '%.*s'", __func__, __LINE__, int(eoinput - input), input); ++- dbgmsg("%s:%3d: precondition '%.*s' (%zu: %s)", __func__, __LINE__, ++- int(size()), data, nq, in_string()? "in string" : "not in string"); +++ dbgmsg("%s:%3d: precondition '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED ": %s)", +++ __func__, __LINE__, +++ int(size()), data, (fmt_size_t)nq, in_string()? "in string" : "not in string"); ++ #endif ++ if( !in_string() ) { // Remove trailing space unless it's part of a literal. ++ while(data < eodata && ISSPACE(eodata[-1])) eodata--; ++@@ -1563,8 +1580,8 @@ cdftext::map_file( int fd ) { ++ cbl_err( "%s: could not prepare map file from FIFO %d", ++ __func__, input); ++ } ++- if( false ) dbgmsg("%s: copied %ld bytes from FIFO", ++- __func__, nout); +++ if( false ) dbgmsg("%s: copied " HOST_SIZE_T_PRINT_DEC " bytes from FIFO", +++ __func__, (fmt_size_t)nout); ++ } ++ } ++ } while( S_ISFIFO(sb.st_mode) ); ++@@ -1774,8 +1791,8 @@ cdftext::process_file( filespan_t mfile, ++ std::copy_if(copied.erased_lines.p, copied.erased_lines.pend, ofs, ++ []( char ch ) { return ch == '\n'; } ); ++ struct { int in, out; filespan_t mfile; } copy; ++- dbgmsg("%s:%d: line %zu, opening %s on fd %d", __func__, __LINE__, ++- mfile.lineno(), +++ dbgmsg("%s:%d: line " HOST_SIZE_T_PRINT_UNSIGNED ", opening %s on fd %d", +++ __func__, __LINE__,mfile.lineno(), ++ copybook.source(), copybook.current()->fd); ++ copy.in = copybook.current()->fd; ++ copy.mfile = free_form_reference_format( copy.in ); ++--- a/src/gcc/cobol/parse.y +++++ b/src/gcc/cobol/parse.y ++@@ -28,6 +28,7 @@ ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ %code requires { +++ #include "config.h" ++ #include // Before cobol-system because it uses poisoned functions ++ #include "cobol-system.h" ++ #include "coretypes.h" ++@@ -279,6 +280,7 @@ ++ } ++ ++ %{ +++#include "config.h" ++ #include // Before cobol-system because it uses poisoned functions ++ #include "cobol-system.h" ++ #include "coretypes.h" ++@@ -945,18 +947,20 @@ ++ ++ %printer { fprintf(yyo, "%s (token %d)", keyword_str($$), $$ ); } relop ++ %printer { fprintf(yyo, "'%s'", $$? $$ : "" ); } NAME ++-%printer { fprintf(yyo, "%s'%.*s'{%zu} %s", $$.prefix, int($$.len), $$.data, $$.len, +++%printer { fprintf(yyo, "%s'%.*s'{" HOST_SIZE_T_PRINT_UNSIGNED "} %s", +++ $$.prefix, int($$.len), $$.data, (fmt_size_t)$$.len, ++ $$.symbol_name()); } ++-%printer { fprintf(yyo, "%s (1st of %zu)", +++%printer { fprintf(yyo, "%s (1st of " HOST_SIZE_T_PRINT_UNSIGNED ")", ++ $$->targets.empty()? "" : $$->targets.front().refer.field->name, ++- $$->targets.size() ); } ++-%printer { fprintf(yyo, "#%zu: %s", ++- is_temporary($$)? 0 : field_index($$), +++ (fmt_size_t)$$->targets.size() ); } +++%printer { fprintf(yyo, "#" HOST_SIZE_T_PRINT_UNSIGNED ": %s", +++ is_temporary($$)? 0 : (fmt_size_t)field_index($$), ++ $$? name_of($$) : "" ); } name ++-%printer { fprintf(yyo, "{%zu-%zu}", $$.min, $$.max ); } +++%printer { fprintf(yyo, "{" HOST_SIZE_T_PRINT_UNSIGNED "-" HOST_SIZE_T_PRINT_UNSIGNED "}", +++ (fmt_size_t)$$.min, (fmt_size_t)$$.max ); } ++ %printer { fprintf(yyo, "{%s}", $$? "+/-" : "" ); } signed ++-%printer { fprintf(yyo, "{%s of %zu}", ++- teed_up_names().front(), teed_up_names().size() ); } qname +++%printer { fprintf(yyo, "{%s of " HOST_SIZE_T_PRINT_UNSIGNED "}", +++ teed_up_names().front(), (fmt_size_t) teed_up_names().size() ); } qname ++ %printer { fprintf(yyo, "{%d}", $$ ); } ++ %printer { fprintf(yyo, "'%s'", $$.string ); } ++ %printer { const char *s = string_of($$); ++@@ -968,9 +972,9 @@ ++ $$.low? (const char*) $$.low : "", ++ $$.high? (const char*) $$.high : "", ++ $$.also? "+" : "" ); } ++-%printer { fprintf(yyo, "{%s, %zu parameters}", +++%printer { fprintf(yyo, "{%s, " HOST_SIZE_T_PRINT_UNSIGNED " parameters}", ++ name_of($$.ffi_name->field), !$$.using_params? 0 : ++- $$.using_params->elems.size()); } call_body +++ (fmt_size_t)$$.using_params->elems.size()); } call_body ++ %printer { fprintf(yyo, "%s <- %s", data_category_str($$.category), ++ name_of($$.replacement->field)); } init_by ++ ++@@ -3616,12 +3620,12 @@ data_descr1: level_name ++ ++ // SIGN clause valid only with "S" in picture ++ if( $field->type == FldNumericDisplay && !is_signable($field) ) { ++- static const size_t sign_attrs = leading_e | separate_e; +++ static const uint64_t sign_attrs = leading_e | separate_e; ++ static_assert(sizeof(sign_attrs) == sizeof($field->attr), ++ "size matters"); ++ ++ // remove inapplicable inherited sign attributes ++- size_t group_sign = group_attr($field) & sign_attrs; +++ uint64_t group_sign = group_attr($field) & sign_attrs; ++ $field->attr &= ~group_sign; ++ ++ if( $field->attr & sign_attrs ) { ++@@ -3777,7 +3781,7 @@ data_clauses: data_clause ++ ++ // If any implied TYPE bits are on in addition to ++ // type_clause_e, they're in conflict. ++- static const size_t type_implies = +++ static const uint64_t type_implies = ++ // ALIGNED clause not implemented ++ blank_zero_clause_e | justified_clause_e | picture_clause_e ++ | sign_clause_e | synched_clause_e | usage_clause_e; ++@@ -4278,8 +4282,9 @@ usage_clause1: usage COMPUTATIONAL[comp ++ is_numeric(redefined->type) && redefined->size() == 4) { ++ // For now, we allow POINTER to expand a 32-bit item to 64 bits. ++ field->data.capacity = int_size_in_bytes(ptr_type_node); ++- dbgmsg("%s: expanding #%zu %s capacity %u => %u", __func__, ++- field_index(redefined), redefined->name, +++ dbgmsg("%s: expanding #" HOST_SIZE_T_PRINT_UNSIGNED +++ " %s capacity %u => %u", __func__, +++ (fmt_size_t)field_index(redefined), redefined->name, ++ redefined->data.capacity, field->data.capacity); ++ ++ redefined->embiggen(); ++@@ -4533,7 +4538,7 @@ sign_clause: sign_is sign_leading sig ++ if( $sign_leading ) { ++ field->attr |= leading_e; ++ } else { ++- field->attr &= ~size_t(leading_e); // turn off in case inherited +++ field->attr &= ~uint64_t(leading_e); // turn off in case inherited ++ field->attr |= signable_e; ++ } ++ if( $sign_separate ) field->attr |= separate_e; ++@@ -11399,7 +11404,7 @@ perform_t::ec_labels_t::new_label( cbl_l ++ { ++ size_t n = 1 + symbols_end() - symbols_begin(); ++ cbl_name_t name; ++- sprintf(name, "_perf_%s_%zu", role, n); +++ sprintf(name, "_perf_%s_" HOST_SIZE_T_PRINT_UNSIGNED, role, (fmt_size_t)n); ++ return label_add( type, name, yylineno ); ++ } ++ ++@@ -11714,8 +11719,8 @@ struct stringify_src_t : public cbl_stri ++ } ++ ++ static void dump( const cbl_string_src_t& src ) { ++- dbgmsg( "%s:%d:, %zu inputs delimited by %s:", __func__, __LINE__, ++- src.ninput, +++ dbgmsg( "%s:%d:, " HOST_SIZE_T_PRINT_UNSIGNED " inputs delimited by %s:", +++ __func__, __LINE__, (fmt_size_t)src.ninput, ++ src.delimited_by.field? field_str(src.delimited_by.field) : "SIZE" ); ++ std::for_each(src.inputs, src.inputs + src.ninput, dump_input); ++ } ++@@ -11864,8 +11869,8 @@ lang_check_failed (const char* file, int ++ ++ void ast_inspect( cbl_refer_t& input, bool backward, ast_inspect_list_t& inspects ) { ++ if( yydebug ) { ++- dbgmsg("%s:%d: INSPECT %zu operations on %s, line %d", __func__, __LINE__, ++- inspects.size(), input.field->name, yylineno); +++ dbgmsg("%s:%d: INSPECT " HOST_SIZE_T_PRINT_UNSIGNED " operations on %s, line %d", +++ __func__, __LINE__, (fmt_size_t)inspects.size(), input.field->name, yylineno); ++ } ++ std::for_each(inspects.begin(), inspects.end(), dump_inspect); ++ auto array = inspects.as_array(); ++@@ -12006,6 +12011,7 @@ static REAL_VALUE_TYPE ++ numstr2i( const char input[], radix_t radix ) { ++ REAL_VALUE_TYPE output; ++ size_t integer = 0; +++ fmt_size_t integerf = 0; ++ int erc=0; ++ ++ switch( radix ) { ++@@ -12017,7 +12023,8 @@ numstr2i( const char input[], radix_t ra ++ } ++ break; ++ case hexadecimal_e: ++- erc = sscanf(input, "%zx", &integer); +++ erc = sscanf(input, "%" GCC_PRISZ "x", &integerf); +++ integer = integer; ++ real_from_integer (&output, VOIDmode, integer, UNSIGNED); ++ break; ++ case boolean_e: ++@@ -12445,9 +12452,11 @@ initialize_statement( std::listoccurs.bounds.fixed_size() ) { ++ static char ub[32] = "boo"; ++- sprintf(ub, " to %lu", oob->occurs.bounds.upper); +++ sprintf(ub, " to " HOST_SIZE_T_PRINT_UNSIGNED, +++ (fmt_size_t)oob->occurs.bounds.upper); ++ upper_phrase = ub; ++ } ++ ++@@ -12851,7 +12862,8 @@ eval_subject_t::label( const char skel[] ++ cbl_label_t label = protolabel; ++ label.line = yylineno; ++ size_t n = 1 + symbols_end() - symbols_begin(); ++- snprintf(label.name, sizeof(label.name), "_eval_%s_%zu", skel, n); +++ snprintf(label.name, sizeof(label.name), +++ "_eval_%s_" HOST_SIZE_T_PRINT_UNSIGNED, skel, (fmt_size_t)n); ++ auto output = symbol_label_add( PROGRAM, &label ); ++ return output; ++ } ++--- a/src/gcc/cobol/parse_ante.h +++++ b/src/gcc/cobol/parse_ante.h ++@@ -142,7 +142,8 @@ literal_of( size_t value ) { ++ case 0: return literally_zero; ++ case 1: return literally_one; ++ } ++- cbl_err("logic error: %s: %zu not supported", __func__, value); +++ cbl_err("logic error: %s: " HOST_SIZE_T_PRINT_UNSIGNED " not supported", +++ __func__, (fmt_size_t)value); ++ return NULL; ++ } ++ ++@@ -312,7 +313,9 @@ struct evaluate_elem_t { ++ case_iter pcase; ++ ++ void dump() const { ++- dbgmsg( "nother=%zu label '%s', %zu cases", nother, label.name, cases.size() ); +++ dbgmsg( "nother=" HOST_SIZE_T_PRINT_UNSIGNED " label '%s', " +++ HOST_SIZE_T_PRINT_UNSIGNED " cases", +++ (fmt_size_t)nother, label.name, (fmt_size_t)cases.size() ); ++ std::for_each( cases.begin(), cases.end(), case_t::Dump ); ++ } ++ ++@@ -542,8 +545,10 @@ struct arith_t { ++ res.refer.field = cbl_field_of(symbol_at(tgt)); ++ tgts.push_back( res ); ++ ++- dbgmsg("%s:%d: SRC: %3zu %s", __func__, __LINE__, src, a.str()); ++- dbgmsg("%s:%d: to %3zu %s", __func__, __LINE__, tgt, res.refer.str()); +++ dbgmsg("%s:%d: SRC: %3" GCC_PRISZ "u %s", +++ __func__, __LINE__, (fmt_size_t)src, a.str()); +++ dbgmsg("%s:%d: to %3" GCC_PRISZ "u %s", +++ __func__, __LINE__, (fmt_size_t)tgt, res.refer.str()); ++ } ++ void operator()( const corresponding_fields_t::const_reference elem ) { ++ another_pair( elem.first, elem.second ); ++@@ -2089,8 +2094,10 @@ static class current_t { ++ size_t n = ++ parser_call_target_update(caller, called->name, mangled_name); ++ // Zero is not an error ++- dbgmsg("updated %zu calls from #%-3zu (%s) s/%s/%s/", ++- n, caller, caller_name, called->name, mangled_name); +++ dbgmsg("updated " HOST_SIZE_T_PRINT_UNSIGNED +++ " calls from #%-3" GCC_PRISZ "u (%s) s/%s/%s/", +++ (fmt_size_t)n, (fmt_size_t)caller, caller_name, +++ called->name, mangled_name); ++ } ++ } ++ if( yydebug ) parser_call_targets_dump(); ++@@ -3006,8 +3013,8 @@ file_add( YYLTYPE loc, cbl_file_t *file ++ } ++ file = cbl_file_of(e); ++ snprintf(field->name, sizeof(field->name), ++- "%s%zu_%s", ++- record_area_name_stem, symbol_index(e), file->name); +++ "%s" HOST_SIZE_T_PRINT_UNSIGNED "_%s", +++ record_area_name_stem, (fmt_size_t)symbol_index(e), file->name); ++ if( file->attr & external_e ) { ++ snprintf(field->name, sizeof(field->name), ++ "%s%s", record_area_name_stem, file->name); ++@@ -3153,7 +3160,8 @@ static cbl_label_t * ++ implicit_paragraph() ++ { ++ cbl_name_t name; ++- sprintf(name, "_implicit_paragraph_%zu", symbol_index()); +++ sprintf(name, "_implicit_paragraph_" HOST_SIZE_T_PRINT_UNSIGNED, +++ (fmt_size_t)symbol_index()); ++ // Programs have to start with an implicit paragraph ++ return label_add(LblParagraph, name, yylineno); ++ } ++@@ -3161,7 +3169,8 @@ static cbl_label_t * ++ implicit_section() ++ { ++ cbl_name_t name; ++- sprintf(name, "_implicit_section_%zu", symbol_index()); +++ sprintf(name, "_implicit_section_" HOST_SIZE_T_PRINT_UNSIGNED, +++ (fmt_size_t)symbol_index()); ++ // Programs have to start with an implicit section ++ return label_add(LblSection, name, yylineno); ++ } ++@@ -3236,7 +3245,8 @@ data_division_ready() { ++ } ++ ++ if( nsymbol == 0 || nparse_error > 0 ) { ++- dbgmsg( "%d errors in DATA DIVISION, compilation ceases", nparse_error ); +++ dbgmsg( HOST_SIZE_T_PRINT_DEC " errors in DATA DIVISION, compilation ceases", +++ (fmt_size_t)nparse_error ); ++ return false; ++ } ++ ++--- a/src/gcc/cobol/scan.l +++++ b/src/gcc/cobol/scan.l ++@@ -27,6 +27,9 @@ ++ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ +++%top{ +++#include "config.h" +++} ++ %{ ++ #include // Before cobol-system because it uses poisoned functions ++ #include "cobol-system.h" ++--- a/src/gcc/cobol/scan_ante.h +++++ b/src/gcc/cobol/scan_ante.h ++@@ -438,11 +438,12 @@ trim_location( int nkeep) { ++ } rescan = { yytext + nkeep, yytext + yyleng }; ++ ++ auto nline = std::count(rescan.p, rescan.pend, '\n'); ++- dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (%zu lines, %d bytes)", +++ dbgmsg("%s:%d: yyless(%d), rescan '%.*s' (" HOST_SIZE_T_PRINT_UNSIGNED +++ " lines, " HOST_SIZE_T_PRINT_UNSIGNED " bytes)", ++ __func__, __LINE__, ++ nkeep, ++ int(rescan.size()), rescan.p, ++- nline, rescan.size()); +++ (fmt_size_t)nline, (fmt_size_t)rescan.size()); ++ if( nline ) { ++ gcc_assert( yylloc.first_line + nline <= yylloc.last_line ); ++ yylloc.last_line =- int(nline); ++--- a/src/gcc/cobol/structs.cc +++++ b/src/gcc/cobol/structs.cc ++@@ -176,7 +176,7 @@ create_cblc_field_t() ++ struct cblc_field_t *parent;// This field's immediate parent field ++ size_t occurs_lower; // non-zero for a table ++ size_t occurs_upper; // non-zero for a table ++- size_t attr; // See cbl_field_attr_t +++ uint64_t attr; // See cbl_field_attr_t ++ signed char type; // A one-byte copy of cbl_field_type_t ++ signed char level; // This variable's level in the naming heirarchy ++ signed char digits; // Digits specified in PIC string; e.g. 5 for 99v999 ++@@ -196,7 +196,7 @@ create_cblc_field_t() ++ CHAR_P, "parent", ++ SIZE_T, "occurs_lower", ++ SIZE_T, "occurs_upper", ++- SIZE_T, "attr", +++ ULONGLONG, "attr", ++ SCHAR, "type", ++ SCHAR, "level", ++ SCHAR, "digits", ++--- a/src/gcc/cobol/symbols.cc +++++ b/src/gcc/cobol/symbols.cc ++@@ -28,6 +28,7 @@ ++ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ++ */ ++ +++#include "config.h" ++ #include // Before cobol-system because it uses poisoned functions ++ #include "cobol-system.h" ++ ++@@ -814,24 +815,24 @@ cbl_field_t::size() const { ++ return field_size(this); ++ } ++ ++-size_t +++uint64_t ++ cbl_field_t::set_attr( cbl_field_attr_t attr ) { ++ if( attr == signable_e ) { ++ if( ! has_attr(attr) && this->var_decl_node != NULL ) { ++ parser_field_attr_set(this, attr); ++ } ++ } ++- return this->attr |= size_t(attr); +++ return this->attr |= uint64_t(attr); ++ } ++ ++-size_t +++uint64_t ++ cbl_field_t::clear_attr( cbl_field_attr_t attr ) { ++ if( attr == signable_e ) { ++ if( this->var_decl_node != nullptr && has_attr(attr) ) { ++ parser_field_attr_set(this, attr, false); ++ } ++ } ++- return this->attr &= ~size_t(attr); +++ return this->attr &= ~uint64_t(attr); ++ } ++ ++ static uint32_t ++@@ -1001,8 +1002,8 @@ symbol_field_capacity( const cbl_field_t ++ size_t size = std::accumulate( symbol_at(bog), symbol_at_impl(eog), ++ 0, sym_field_size::capacity ); ++ ++- if(true) dbgmsg("%s: %02u %s.data.capacity was computed as %zu", __func__, ++- field->level, field->name, size); +++ if(true) dbgmsg("%s: %02u %s.data.capacity was computed as " HOST_SIZE_T_PRINT_UNSIGNED, +++ __func__, field->level, field->name, (fmt_size_t)size); ++ ++ return size; ++ } ++@@ -1016,14 +1017,15 @@ has_odo( const symbol_elem_t& e ) { ++ struct cbl_field_t * ++ symbol_find_odo_debug( cbl_field_t * field ) { ++ size_t bog = field_index(field), eog = end_of_group(bog); ++- dbgmsg("%s: %s is #%zu - #%zu of %zu, ends at %s", __func__, ++- field->name, bog, eog, symbols.nelem, +++ dbgmsg("%s: %s is #" HOST_SIZE_T_PRINT_UNSIGNED " - #" HOST_SIZE_T_PRINT_UNSIGNED +++ " of " HOST_SIZE_T_PRINT_UNSIGNED ", ends at %s", __func__, +++ field->name, (fmt_size_t)bog, (fmt_size_t)eog, (fmt_size_t)symbols.nelem, ++ eog == symbols.nelem? "[end]" : cbl_field_of(symbol_at(eog))->name ); ++ ++ auto e = std::find_if( symbol_at(bog), symbol_at_impl(eog, true), has_odo ); ++ if( e != symbol_at_impl(eog, true) ) { ++- dbgmsg("%s: %s has ODO at #%zu (return '%s')", __func__, ++- field->name, symbol_index(e), +++ dbgmsg("%s: %s has ODO at #" HOST_SIZE_T_PRINT_UNSIGNED " (return '%s')", __func__, +++ field->name, (fmt_size_t)symbol_index(e), ++ cbl_field_of(e)->name ); ++ } ++ return e == symbol_at_impl(eog, true)? NULL : cbl_field_of(e); ++@@ -1047,8 +1049,8 @@ symbols_dump( size_t first, bool header ++ if( !yydebug ) return 0; ++ ++ if( header ) { ++- fprintf(stderr, "Symbol Table has %zu elements\n", ++- symbols_end() - symbols_begin()); +++ fprintf(stderr, "Symbol Table has " HOST_SIZE_T_PRINT_UNSIGNED " elements\n", +++ (fmt_size_t)(symbols_end() - symbols_begin())); ++ } ++ ++ for( struct symbol_elem_t *e = symbols_begin(first); e < symbols_end(); e++ ) { ++@@ -1056,25 +1058,26 @@ symbols_dump( size_t first, bool header ++ ++ switch(e->type) { ++ case SymFilename: ++- s = xasprintf("%4zu %-18s %s", e->program, +++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s", (fmt_size_t)e->program, ++ "Filename", e->elem.filename); ++ break; ++ case SymDataSection: ++- s = xasprintf("%4zu %-18s line %d", e->program, +++ s = xasprintf("%4" GCC_PRISZ "u %-18s line %d", (fmt_size_t)e->program, ++ cbl_section_of(e)->name(), cbl_section_of(e)->line); ++ break; ++ case SymFunction: ++- s = xasprintf("%4zu %-15s %s", e->program, +++ s = xasprintf("%4" GCC_PRISZ "u %-15s %s", (fmt_size_t)e->program, ++ "Function", e->elem.function.name); ++ break; ++ case SymField: { ++ auto field = cbl_field_of(e); ++ char *odo_str = NULL; ++ if( field->occurs.depending_on != 0 ) { ++- odo_str = xasprintf("odo %zu", field->occurs.depending_on ); +++ odo_str = xasprintf("odo " HOST_SIZE_T_PRINT_UNSIGNED, +++ (fmt_size_t)field->occurs.depending_on ); ++ } ++ ninvalid += cbl_field_of(e)->type == FldInvalid? 1 : 0; ++- s = xasprintf("%4zu %-18s %s (%s)", e->program, +++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s (%s)", (fmt_size_t)e->program, ++ cbl_field_type_str(cbl_field_of(e)->type) + 3, ++ field_str(cbl_field_of(e)), ++ odo_str? odo_str : ++@@ -1082,7 +1085,7 @@ symbols_dump( size_t first, bool header ++ } ++ break; ++ case SymLabel: ++- s = xasprintf("%4zu %-18s %s", e->program, +++ s = xasprintf("%4" GCC_PRISZ "u %-18s %s", (fmt_size_t)e->program, ++ "Labe1l", e->elem.label.str()); ++ if( LblProgram == cbl_label_of(e)->type ) { ++ const auto& L = *cbl_label_of(e); ++@@ -1094,31 +1097,35 @@ symbols_dump( size_t first, bool header ++ } ++ break; ++ case SymSpecial: ++- s = xasprintf("%4zu %-18s id=%2d, %s", e->program, +++ s = xasprintf("%4" GCC_PRISZ "u %-18s id=%2d, %s", (fmt_size_t)e->program, ++ "Special", e->elem.special.id, e->elem.special.name); ++ break; ++ case SymAlphabet: ++- s = xasprintf("%4zu %-18s encoding=%2d, '%s'", e->program, "Alphabet", +++ s = xasprintf("%4" GCC_PRISZ "u %-18s encoding=%2d, '%s'", +++ (fmt_size_t)e->program, "Alphabet", ++ int(e->elem.alphabet.encoding), e->elem.alphabet.name); ++ break; ++ case SymFile: ++- s = xasprintf("%4zu %-18s %-20s", e->program, +++ s = xasprintf("%4" GCC_PRISZ "u %-18s %-20s", (fmt_size_t)e->program, ++ "File", e->elem.file.name); ++ { ++ char same_as[26] = ""; ++ if( cbl_file_of(e)->same_record_as > 0 ) { ++- sprintf(same_as, "s%3zu", cbl_file_of(e)->same_record_as); +++ sprintf(same_as, "s%3" GCC_PRISZ "u", +++ (fmt_size_t)cbl_file_of(e)->same_record_as); ++ } ++ const char *type = file_org_str(e->elem.file.org); ++ char *part = s; ++ ++- s = xasprintf("%s %-4s %s %s %s{%zu-%zu} status=#%zu", +++ s = xasprintf("%s %-4s %s %s %s{" HOST_SIZE_T_PRINT_UNSIGNED "-" +++ HOST_SIZE_T_PRINT_UNSIGNED "} status=#" +++ HOST_SIZE_T_PRINT_UNSIGNED, ++ part, same_as, type, ++ e->elem.file.keys_str(), ++ cbl_file_of(e)->varies()? "varies " : "", ++- cbl_file_of(e)->varying_size.min, ++- cbl_file_of(e)->varying_size.max, ++- cbl_file_of(e)->user_status); +++ (fmt_size_t)cbl_file_of(e)->varying_size.min, +++ (fmt_size_t)cbl_file_of(e)->varying_size.max, +++ (fmt_size_t)cbl_file_of(e)->user_status); ++ free(part); ++ } ++ break; ++@@ -1126,7 +1133,8 @@ symbols_dump( size_t first, bool header ++ dbgmsg("%s: cannot dump symbol type %d", __func__, e->type); ++ continue; ++ } ++- fprintf(stderr, "%4zu: %s\n", e - symbols_begin(), s); +++ fprintf(stderr, "%4" GCC_PRISZ "u: %s\n", +++ (fmt_size_t)(e - symbols_begin()), s); ++ free(s); ++ } ++ return ninvalid; ++@@ -1238,7 +1246,8 @@ static struct symbol_elem_t * ++ } ++ ++ if(yydebug && group->type != FldGroup) { ++- dbgmsg("Field #%zu '%s' is not a group", symbol_index(e), group->name); +++ dbgmsg("Field #" HOST_SIZE_T_PRINT_UNSIGNED " '%s' is not a group", +++ (fmt_size_t)symbol_index(e), group->name); ++ symbols_dump(symbols.first_program, true); ++ } ++ if( group->type == FldInvalid ) return e; ++@@ -1493,8 +1502,8 @@ field_str( const cbl_field_t *field ) { ++ for( size_t i=0; i < field->occurs.nkey; i++ ) { ++ updown[i] = field->occurs.keys[i].ascending? 'A' : 'D'; ++ } ++- snprintf(name, sizeof(name), "%s[%zu]%s", ++- field->name, field->occurs.ntimes(), updown.data()); +++ snprintf(name, sizeof(name), "%s[" HOST_SIZE_T_PRINT_UNSIGNED "]%s", +++ field->name, (fmt_size_t)field->occurs.ntimes(), updown.data()); ++ } ++ } ++ ++@@ -1503,7 +1512,7 @@ field_str( const cbl_field_t *field ) { ++ ++ char offset[32] = ""; ++ if( field->level > 1 ) { ++- sprintf( offset, "off%3zu", field->offset ); +++ sprintf( offset, "off%3" GCC_PRISZ "u", (fmt_size_t)field->offset ); ++ } ++ ++ char parredef = ++@@ -1570,8 +1579,8 @@ field_str( const cbl_field_t *field ) { ++ }; ++ ++ pend += snprintf(pend, string + sizeof(string) - pend, ++- "%c%3zu %-6s %c%c%c %2u{%3u,%u,%d = %s} (%s), line %d", ++- parredef, field->parent, offset, +++ "%c%3" GCC_PRISZ "u %-6s %c%c%c %2u{%3u,%u,%d = %s} (%s), line %d", +++ parredef, (fmt_size_t)field->parent, offset, ++ (field->attr & global_e)? 'G' : 0x20, ++ (field->attr & external_e)? 'E' : 0x20, ++ storage_type, ++@@ -1796,18 +1805,19 @@ symbols_update( size_t first, bool parse ++ field->line, field->level_str(), field->name); ++ ++ } else { ++- dbgmsg("%s: error: data item %s #%zu '%s' capacity %u rejected", +++ dbgmsg("%s: error: data item %s #" HOST_SIZE_T_PRINT_UNSIGNED +++ " '%s' capacity %u rejected", ++ __func__, ++ 3 + cbl_field_type_str(field->type), ++- isym, field->name, field->data.capacity); +++ (fmt_size_t)isym, field->name, field->data.capacity); ++ } ++ } ++ return 0; ++ } ++ ++ if(! (field->data.memsize == 0 || field_size(field) <= field->data.memsize) ) { ++- dbgmsg( "%s:%d: #%zu: invalid: %s", __func__, __LINE__, ++- symbol_index(p), field_str(cbl_field_of(p)) ); +++ dbgmsg( "%s:%d: #" HOST_SIZE_T_PRINT_UNSIGNED ": invalid: %s", __func__, __LINE__, +++ (fmt_size_t)symbol_index(p), field_str(cbl_field_of(p)) ); ++ } ++ assert(field->data.memsize == 0 || field_size(field) <= field_memsize(field)); ++ assert( !(field->data.memsize > 0 && symbol_explicitly_redefines(field)) ); ++@@ -1925,7 +1935,8 @@ symbol_field_forward( size_t index ) { ++ assert( index < symbols.nelem ); ++ symbol_elem_t *e = symbol_at(index); ++ if( (e->type != SymField) ) { ++- dbgmsg("%s: logic error: #%zu is %s", __func__, index, symbol_type_str(e->type)); +++ dbgmsg("%s: logic error: #" HOST_SIZE_T_PRINT_UNSIGNED " is %s", +++ __func__, (fmt_size_t)index, symbol_type_str(e->type)); ++ } ++ assert(e->type == SymField); ++ ++@@ -2433,9 +2444,9 @@ symbol_alphabet_add( size_t program, str ++ return symbol_add(&sym); ++ } ++ ++-size_t +++uint64_t ++ numeric_group_attrs( const cbl_field_t *field ) { ++- static const size_t inherit = signable_e | leading_e | separate_e | big_endian_e; +++ static const uint64_t inherit = signable_e | leading_e | separate_e | big_endian_e; ++ static_assert(sizeof(cbl_field_t::type) < sizeof(inherit), "need bigger type"); ++ assert(field); ++ if( field->type == FldNumericDisplay || field->type == FldGroup ) { ++@@ -3258,10 +3269,10 @@ new_literal_add( const char initial[], u ++ ++ static size_t literal_count = 1; ++ sprintf(field->name, ++- "%s%c_%zd", +++ "%s%c_" HOST_SIZE_T_PRINT_DEC, ++ "_literal", ++ field->type == FldLiteralA ? 'a' : 'n', ++- literal_count++); +++ (fmt_size_t)literal_count++); ++ ++ return parser_symbol_add2(field); ++ } ++@@ -3290,14 +3301,15 @@ new_literal( uint32_t len, const char in ++ void ++ temporaries_t::dump() const { ++ extern int yylineno; ++- char *output = xasprintf("%4d: %zu Literals", yylineno, literals.size()); +++ char *output = xasprintf("%4d: " HOST_SIZE_T_PRINT_UNSIGNED " Literals", +++ yylineno, (fmt_size_t)literals.size()); ++ ++ for( const auto& elem : used ) { ++ if( ! elem.second.empty() ) { ++ char *so_far = output; ++- output = xasprintf("%s, %zu %s", +++ output = xasprintf("%s, " HOST_SIZE_T_PRINT_UNSIGNED " %s", ++ so_far, ++- elem.second.size(), +++ (fmt_size_t)elem.second.size(), ++ 3 + cbl_field_type_str(elem.first)); ++ free(so_far); ++ } ++@@ -3580,8 +3592,8 @@ cbl_label_t::str() const { ++ buf = xasprintf("%-12s %s top level [%s], line %d", ++ type_str() + 3, name, mangled_name, line); ++ } else { ++- buf = xasprintf("%-12s %s OF #%zu '%s' [%s], line %d", ++- type_str() + 3, name, parent, +++ buf = xasprintf("%-12s %s OF #" HOST_SIZE_T_PRINT_UNSIGNED " '%s' [%s], line %d", +++ type_str() + 3, name, (fmt_size_t)parent, ++ cbl_label_of(symbol_at(parent))->name, ++ mangled_name, line); ++ } ++@@ -3695,7 +3707,8 @@ symbol_label_add( size_t program, cbl_la ++ // Set the program's mangled name, dehyphenated and uniqified by parent index. ++ if( input->type == LblProgram ) { ++ char *psz = cobol_name_mangler(input->name); ++- input->mangled_name = xasprintf("%s.%zu", psz, input->parent); +++ input->mangled_name = xasprintf("%s." HOST_SIZE_T_PRINT_UNSIGNED, +++ psz, (fmt_size_t)input->parent); ++ free(psz); ++ } ++ ++@@ -3764,7 +3777,8 @@ symbol_program_add( size_t program, cbl_ ++ ++ // Set the program's mangled name, dehyphenated and uniqified by parent index. ++ char *psz = cobol_name_mangler(input->name); ++- elem.elem.label.mangled_name = xasprintf("%s.%zu", psz, input->parent); +++ elem.elem.label.mangled_name = xasprintf("%s." HOST_SIZE_T_PRINT_UNSIGNED, +++ psz, (fmt_size_t)input->parent); ++ free(psz); ++ ++ e = std::find_if( symbols_begin(program), symbols_end(), ++@@ -4445,8 +4459,8 @@ symbol_forward_names( size_t ifield ) { ++ for( auto sym = symbols_begin(ifield); sym && sym->type == SymField; ) { ++ const cbl_field_t *field = cbl_field_of(sym); ++ if( !(field->type == FldForward) ) { ++- dbgmsg("%s:%d: logic error, not FldForward: #%zu %s", ++- __func__, __LINE__, symbol_index(sym), field_str(field)); +++ dbgmsg("%s:%d: logic error, not FldForward: #" HOST_SIZE_T_PRINT_UNSIGNED " %s", +++ __func__, __LINE__, (fmt_size_t)symbol_index(sym), field_str(field)); ++ } ++ assert(field->type == FldForward); ++ ++@@ -4469,8 +4483,9 @@ symbol_forward_to( size_t fwd ) { ++ if( !elem.second ) { ++ const auto& field = *cbl_field_of(symbols_begin(fwd)); ++ if( yydebug ) ++- dbgmsg("%s:%d: no symbol found for #%zu %s %s", __func__, __LINE__, ++- fwd, cbl_field_type_str(field.type), field.name); +++ dbgmsg("%s:%d: no symbol found for #" HOST_SIZE_T_PRINT_UNSIGNED " %s %s", +++ __func__, __LINE__, +++ (fmt_size_t)fwd, cbl_field_type_str(field.type), field.name); ++ return fwd; ++ } ++ ++@@ -4491,8 +4506,9 @@ cbl_file_key_t::deforward( size_t ifile ++ const auto field = cbl_field_of(symbol_at(ifield)); ++ ++ if( is_forward(field) && yydebug ) { ++- dbgmsg("%s:%d: key %d: #%zu %s of %s is %s", "deforward", __LINE__, ++- keys[ifile]++, ifield, field->name, file->name, +++ dbgmsg("%s:%d: key %d: #" HOST_SIZE_T_PRINT_UNSIGNED " %s of %s is %s", +++ "deforward", __LINE__, +++ keys[ifile]++, (fmt_size_t)ifield, field->name, file->name, ++ cbl_field_type_str(field->type) + 3); ++ } ++ ++@@ -4546,7 +4562,7 @@ cbl_file_key_t::str() const { ++ ++ *p++ = '['; ++ for( auto f = fields; f < fields + nfield; f++) { ++- auto n = sprintf(p, "%s%zu", sep, *f); +++ auto n = sprintf(p, "%s" HOST_SIZE_T_PRINT_UNSIGNED, sep, (fmt_size_t)*f); ++ p += n; ++ sep = ", "; ++ } ++--- a/src/gcc/cobol/symbols.h +++++ b/src/gcc/cobol/symbols.h ++@@ -494,7 +494,7 @@ bool is_elementary( enum cbl_field_type_ ++ struct cbl_field_t { ++ size_t offset; ++ enum cbl_field_type_t type, usage; ++- size_t attr; +++ uint64_t attr; ++ static_assert(sizeof(attr) == sizeof(cbl_field_attr_t), "wrong attr size"); ++ size_t parent; // symbols[] index of our parent ++ size_t our_index; // symbols[] index of this field, set in symbol_add() ++@@ -597,8 +597,8 @@ struct cbl_field_t { ++ bool has_attr( cbl_field_attr_t attr ) const { ++ return cbl_field_attr_t(this->attr & attr) == attr; ++ } ++- size_t set_attr( cbl_field_attr_t attr ); ++- size_t clear_attr( cbl_field_attr_t attr ); +++ uint64_t set_attr( cbl_field_attr_t attr ); +++ uint64_t clear_attr( cbl_field_attr_t attr ); ++ const char * attr_str( const std::vector& attrs ) const; ++ ++ bool is_justifiable() const { ++@@ -1273,7 +1273,8 @@ struct function_descr_t { ++ static function_descr_t init( const char name[] ) { ++ function_descr_t descr = {}; ++ if( -1 == snprintf( descr.name, sizeof(descr.name), "%s", name ) ) { ++- dbgmsg("name truncated to '%s' (max %zu characters)", name); +++ dbgmsg("name truncated to '%s' (max " HOST_SIZE_T_PRINT_UNSIGNED +++ " characters)", name, (fmt_size_t)sizeof(descr.name)); ++ } ++ return descr; // truncation also reported elsewhere ? ++ } ++@@ -2049,11 +2050,12 @@ struct cbl_perform_tgt_t { ++ void dump() const { ++ assert(ifrom); ++ if( !ito ) { ++- dbgmsg( "%s:%d: #%3zu %s", __PRETTY_FUNCTION__, __LINE__, ++- ifrom, from()->str() ); +++ dbgmsg( "%s:%d: #%3" GCC_PRISZ "u %s", __PRETTY_FUNCTION__, __LINE__, +++ (fmt_size_t)ifrom, from()->str() ); ++ } else { ++- dbgmsg( "%s:%d: #%3zu %s THRU #%3zu %s", __PRETTY_FUNCTION__, __LINE__, ++- ifrom, from()->str(), ito, to()->str() ); +++ dbgmsg( "%s:%d: #%3" GCC_PRISZ "u %s THRU #%3" GCC_PRISZ "u %s", +++ __PRETTY_FUNCTION__, __LINE__, +++ (fmt_size_t)ifrom, from()->str(), (fmt_size_t)ito, to()->str() ); ++ } ++ } ++ ++@@ -2246,7 +2248,7 @@ cbl_file_t * symbol_record_file( const c ++ ++ struct cbl_field_t * symbol_find_odo( const cbl_field_t * field ); ++ ++-size_t numeric_group_attrs( const cbl_field_t *field ); +++uint64_t numeric_group_attrs( const cbl_field_t *field ); ++ ++ static inline struct cbl_field_t * ++ field_at( size_t index ) { ++--- a/src/gcc/cobol/symfind.cc +++++ b/src/gcc/cobol/symfind.cc ++@@ -147,13 +147,14 @@ dump_symbol_map2( const field_key_t& key ++ ++ for( auto candidate : candidates ) { ++ char *tmp = fields; ++- fields = xasprintf("%s%s %3zu", tmp? tmp : "", sep, candidate); +++ fields = xasprintf("%s%s %3" GCC_PRISZ "u", +++ tmp? tmp : "", sep, (fmt_size_t)candidate); ++ sep[0] = ','; ++ free(tmp); ++ } ++ ++- dbgmsg( "%s:%d: %3zu %s {%s}", __func__, __LINE__, ++- key.program, key.name, fields ); +++ dbgmsg( "%s:%d: %3" GCC_PRISZ "u %s {%s}", __func__, __LINE__, +++ (fmt_size_t)key.program, key.name, fields ); ++ free(fields); ++ } ++ ++@@ -179,7 +180,8 @@ dump_symbol_map_value( const char name[] ++ ++ for( ; p != value.second.end(); p++ ) { ++ char *tmp = ancestry; ++- ancestry = xasprintf("%s%s %3zu", tmp? tmp : "", sep, *p); +++ ancestry = xasprintf("%s%s %3" GCC_PRISZ "u", +++ tmp? tmp : "", sep, (fmt_size_t)*p); ++ sep[0] = ','; ++ free(tmp); ++ } ++@@ -256,8 +258,11 @@ build_symbol_map() { ++ symbol_map.erase(sym_name_t("")); ++ ++ if( yydebug ) { ++- dbgmsg( "%s:%d: %zu of %zu symbols inserted into %zu in symbol_map", ++- __func__, __LINE__, nsym, end, symbol_map.size() ); +++ dbgmsg( "%s:%d: " HOST_SIZE_T_PRINT_UNSIGNED " of " +++ HOST_SIZE_T_PRINT_UNSIGNED " symbols inserted into " +++ HOST_SIZE_T_PRINT_UNSIGNED " in symbol_map", +++ __func__, __LINE__, (fmt_size_t)nsym, (fmt_size_t)end, +++ (fmt_size_t)symbol_map.size() ); ++ } ++ } ++ ++@@ -277,8 +282,8 @@ public: ++ } ++ protected: ++ void dump_key( const char tag[], const symbol_map_t::key_type& key ) const { ++- dbgmsg( "symbol_map key: %s { %3zu %3zu %s }", ++- tag, key.program, key.parent, key.name ); +++ dbgmsg( "symbol_map key: %s { %3" GCC_PRISZ "u %3" GCC_PRISZ "u %s }", +++ tag, (fmt_size_t)key.program, (fmt_size_t)key.parent, key.name ); ++ } ++ }; ++ ++@@ -459,14 +464,16 @@ symbol_match2( size_t program, ++ sep = ""; ++ for( auto field : fields ) { ++ char *partial = fieldstr; ++- int asret = asprintf(&fieldstr, "%s%s%zu", partial? partial : "", sep, field); +++ int asret = asprintf(&fieldstr, "%s%s" HOST_SIZE_T_PRINT_UNSIGNED, +++ partial? partial : "", sep, (fmt_size_t)field); ++ assert(asret); ++ sep = ", "; ++ assert(fieldstr); ++ free(partial); ++ } ++ ++- dbgmsg("%s: '%s' matches %zu fields: {%s}", __func__, ancestry, fields.size(), fieldstr); +++ dbgmsg("%s: '%s' matches " HOST_SIZE_T_PRINT_UNSIGNED " fields: {%s}", +++ __func__, ancestry, (fmt_size_t)fields.size(), fieldstr); ++ free(fieldstr); ++ } ++ free(ancestry); ++@@ -537,8 +544,8 @@ symbol_find( size_t program, std::list(NULL, false); ++ } ++ if( yydebug ) { ++- dbgmsg( "%s:%d: '%s' has %zu possible matches", ++- __func__, __LINE__, names.back(), items.size() ); +++ dbgmsg( "%s:%d: '%s' has " HOST_SIZE_T_PRINT_UNSIGNED " possible matches", +++ __func__, __LINE__, names.back(), (fmt_size_t)items.size() ); ++ std::for_each( items.begin(), items.end(), dump_symbol_map_value1 ); ++ } ++ } ++@@ -577,8 +584,8 @@ symbol_find_of( size_t program, std::lis ++ } ++ ++ if( yydebug ) { ++- dbgmsg( "%s:%d: '%s' has %zu possible matches", ++- __func__, __LINE__, names.back(), input.size() ); +++ dbgmsg( "%s:%d: '%s' has " HOST_SIZE_T_PRINT_UNSIGNED " possible matches", +++ __func__, __LINE__, names.back(), (fmt_size_t)input.size() ); ++ std::for_each( input.begin(), input.end(), dump_symbol_map_value1 ); ++ } ++ ++--- a/src/gcc/cobol/util.cc +++++ b/src/gcc/cobol/util.cc ++@@ -324,8 +324,9 @@ is_numeric_edited( const char picture[] ++ break; ++ default: ++ numed_message = xasprintf("invalid PICTURE character " ++- "'%c' at offset %zu in '%s'", ++- *p, p - picture, picture); +++ "'%c' at offset " HOST_SIZE_T_PRINT_UNSIGNED +++ " in '%s'", +++ *p, (fmt_size_t)(p - picture), picture); ++ break; ++ } ++ ++@@ -370,10 +371,12 @@ normalize_picture( char picture[] ) ++ assert(pmatch[2].rm_so == pmatch[1].rm_eo + 1); // character paren number ++ p = picture + pmatch[2].rm_so; ++ len = 0; ++- if( 1 != sscanf(p, "%zu", &len) ) { +++ fmt_size_t lenf = 0; +++ if( 1 != sscanf(p, "%" GCC_PRISZ "u", &lenf) ) { ++ dbgmsg("%s:%d: no number found in '%s'", __func__, __LINE__, p); ++ goto irregular; ++ } +++ len = lenf; ++ if( len == 0 ) { ++ dbgmsg("%s:%d: ZERO length found in '%s'", __func__, __LINE__, p); ++ goto irregular; ++@@ -985,7 +988,8 @@ cbl_refer_t::subscripts_set( const std:: ++ const char * ++ cbl_refer_t::str() const { ++ static char subscripts[64]; ++- sprintf(subscripts, "(%u of %zu dimensions)", nsubscript, dimensions(field)); +++ sprintf(subscripts, "(%u of " HOST_SIZE_T_PRINT_UNSIGNED " dimensions)", +++ nsubscript, (fmt_size_t)dimensions(field)); ++ char *output = xasprintf("%s %s %s", ++ field? field_str(field) : "(none)", ++ 0 < dimensions(field)? subscripts : "", ++@@ -1031,10 +1035,10 @@ struct move_corresponding_field { ++ tgt.field = cbl_field_of(symbol_at(elem.second)); ++ ++ if( yydebug ) { ++- dbgmsg("move_corresponding:%d: SRC: %3zu %s", __LINE__, ++- elem.first, src.str()); ++- dbgmsg("move_corresponding:%d: to %3zu %s", __LINE__, ++- elem.second, tgt.str()); +++ dbgmsg("move_corresponding:%d: SRC: %3" GCC_PRISZ "u %s", __LINE__, +++ (fmt_size_t)elem.first, src.str()); +++ dbgmsg("move_corresponding:%d: to %3" GCC_PRISZ "u %s", __LINE__, +++ (fmt_size_t)elem.second, tgt.str()); ++ } ++ ++ parser_move(tgt, src); ++@@ -1138,8 +1142,9 @@ valid_move( const struct cbl_field_t *tg ++ if( yydebug && ! retval ) { ++ auto bad = std::find_if( p, pend, ++ []( char ch ) { return ! ISDIGIT(ch); } ); ++- dbgmsg("%s:%d: offending character '%c' at position %zu", ++- __func__, __LINE__, *bad, bad - p); +++ dbgmsg("%s:%d: offending character '%c' at position " +++ HOST_SIZE_T_PRINT_UNSIGNED, +++ __func__, __LINE__, *bad, (fmt_size_t)(bad - p)); ++ } ++ } ++ break; ++@@ -1498,9 +1503,10 @@ ambiguous_reference( size_t program ) { ++ is_unique(program, proc.first) ); ++ if( proc.second.end() != ambiguous ) { ++ if( yydebug ) { ++- dbgmsg("%s: %s of '%s' has %zu potential matches", __func__, +++ dbgmsg("%s: %s of '%s' has " HOST_SIZE_T_PRINT_UNSIGNED +++ "potential matches", __func__, ++ ambiguous->paragraph(), ambiguous->section(), ++- procedures.count(*ambiguous)); +++ (fmt_size_t)procedures.count(*ambiguous)); ++ } ++ return new procref_t(*ambiguous); ++ } ++@@ -1543,9 +1549,9 @@ parent_names( const symbol_elem_t *elem, ++ ++ if( is_filler(cbl_field_of(elem)) ) return; ++ ++- // dbgmsg("%s: asked about %s of %s (%zu away)", __func__, +++ // dbgmsg("%s: asked about %s of %s (" HOST_SIZE_T_PRINT_UNSIGNED " away)", __func__, ++ // cbl_field_of(elem)->name, ++- // cbl_field_of(group)->name, elem - group); +++ // cbl_field_of(group)->name, (fmt_size_t)(elem - group)); ++ ++ for( const symbol_elem_t *e=elem; e && group < e; e = symbol_parent(e) ) { ++ names.push_front( cbl_field_of(e)->name ); ++@@ -1564,9 +1570,11 @@ public: ++ symbol_elem_t *rgroup, type_t type ) ++ : lgroup(lgroup), rgroup(rgroup), type(type) ++ { ++- dbgmsg( "%s:%d: for #%zu %s and #%zu %s on line %d", __func__, __LINE__, ++- symbol_index(lgroup), cbl_field_of(lgroup)->name, ++- symbol_index(rgroup), cbl_field_of(rgroup)->name, yylineno ); +++ dbgmsg( "%s:%d: for #" HOST_SIZE_T_PRINT_UNSIGNED +++ " %s and #" HOST_SIZE_T_PRINT_UNSIGNED " %s on line %d", +++ __func__, __LINE__, +++ (fmt_size_t)symbol_index(lgroup), cbl_field_of(lgroup)->name, +++ (fmt_size_t)symbol_index(rgroup), cbl_field_of(rgroup)->name, yylineno ); ++ } ++ ++ static bool ++@@ -1643,8 +1651,9 @@ corresponding_fields( cbl_field_t *lhs, ++ lhsg.a = symbols_begin(field_index(lhs)); ++ lhsg.z = std::find_if( lhsg.a, symbols_end(), next_group(lhsg.a) ); ++ ++- dbgmsg("%s:%d: examining %zu symbols after %s", __func__, __LINE__, ++- lhsg.z - lhsg.a, lhs->name); +++ dbgmsg("%s:%d: examining " HOST_SIZE_T_PRINT_UNSIGNED " symbols after %s", +++ __func__, __LINE__, +++ (fmt_size_t)(lhsg.z - lhsg.a), lhs->name); ++ ++ find_corresponding finder( symbol_at(field_index(lhs)), ++ symbol_at(field_index(rhs)), type ); ++@@ -1652,8 +1661,9 @@ corresponding_fields( cbl_field_t *lhs, ++ ++ output.erase(0); ++ ++- dbgmsg( "%s:%d: %s and %s have %zu corresponding fields", ++- __func__, __LINE__, lhs->name, rhs->name, output.size() ); +++ dbgmsg( "%s:%d: %s and %s have " HOST_SIZE_T_PRINT_UNSIGNED +++ " corresponding fields", +++ __func__, __LINE__, lhs->name, rhs->name, (fmt_size_t)output.size() ); ++ ++ return output; ++ } ++@@ -1772,7 +1782,8 @@ class unique_stack : public std::stack>4; ++ new_size |= new_size>>8; ++ new_size |= new_size>>16; ++- new_size |= new_size>>32; +++ new_size |= (new_size>>16)>>16; ++ *dest_size = new_size + 1; ++ *dest = (char *)realloc(*dest, *dest_size); ++ } diff --cc debian/patches/pr119364-2.diff index 0000000,0000000..08cc3b2 new file mode 100644 --- /dev/null +++ b/debian/patches/pr119364-2.diff @@@ -1,0 -1,0 +1,158 @@@ ++--- a/src/gcc/cobol/genapi.cc +++++ b/src/gcc/cobol/genapi.cc ++@@ -13287,24 +13287,29 @@ static void ++ stash_exceptions( const cbl_enabled_exceptions_array_t *enabled ) ++ { ++ // We need to create a static array of bytes ++- size_t narg = enabled->nbytes(); ++- unsigned char *p = (unsigned char *)(enabled->ecs); ++- ++- static size_t prior_narg = 0; ++- static size_t max_narg = 128; ++- static unsigned char *prior_p = (unsigned char *)xmalloc(max_narg); +++ size_t nec = enabled->nec; +++ size_t sz = int_size_in_bytes(cbl_enabled_exception_type_node); +++ size_t narg = nec * sz; +++ cbl_enabled_exception_t *p = enabled->ecs; +++ +++ static size_t prior_nec = 0; +++ static size_t max_nec = 0; +++ static cbl_enabled_exception_t *prior_p; ++ ++ bool we_got_new_data = false; ++- if( prior_narg != narg ) +++ if( prior_nec != nec ) ++ { ++ we_got_new_data = true; ++ } ++ else ++ { ++- // The narg counts are the same. ++- for(size_t i=0; i max_narg ) +++ if( nec > max_nec ) ++ { ++- max_narg = narg; ++- prior_p = (unsigned char *)xrealloc(prior_p, max_narg); +++ max_nec = nec; +++ prior_p = (cbl_enabled_exception_t *) +++ xrealloc(prior_p, max_nec * sizeof(cbl_enabled_exception_t)); ++ } ++ ++- memcpy(prior_p, p, narg); +++ memcpy((unsigned char *)prior_p, (unsigned char *)p, +++ nec * sizeof(cbl_enabled_exception_t)); ++ ++ static int count = 1; ++ ++@@ -13341,12 +13348,33 @@ stash_exceptions( const cbl_enabled_exce ++ TREE_TYPE(constr) = array_of_chars_type; ++ TREE_STATIC(constr) = 1; ++ TREE_CONSTANT(constr) = 1; +++ unsigned char *q = XALLOCAVEC(unsigned char, sz); ++ ++- for(size_t i=0; i ++Date: Sat, 6 Jun 2026 17:37:48 +0200 ++Subject: [PATCH] m68k: prevent moves with pre-dec src overlapping with dst ++ (PR123853) ++ ++Since gcc-15 combine can produce moves from a PRE_DEC MEM to an ++address that uses the same register, causing wrong code on m68k. ++In particular the glibc build is broken. This adjusts the m68k ++backend to reject such moves. ++ ++On the test case in https://gcc.gnu.org/bugzilla/show_bug.cgi?id=123853#c11 ++the difference is ++ ++- move.l -(%a0),(%a0,%d0.l) +++ lea (%a0,%d0.l),%a1 +++ move.l -(%a0),(%a1) ++ ++which is exactly what we want. ++ ++Testing in progress. ++ ++gcc/ ++ ++ 2026-06-06 Mikael Pettersson ++ ++ PR rtl-optimization/123853 ++ * config/m68k/m68k-protos.h (check_move_simode): Declare. ++ * config/m68k/m68k.cc (check_move_simode): New, reject moves ++ where SRC is auto-inc/dec MEM whose REG occurs in DST. ++ * config/m68k/m68k.md (*movsi_m68k): Add check_move_simode ++ to condition. ++ (*movsi_m68k2): Likewise. ++--- ++ gcc/config/m68k/m68k-protos.h | 1 + ++ gcc/config/m68k/m68k.cc | 25 +++++++++++++++++++++++++ ++ gcc/config/m68k/m68k.md | 4 ++-- ++ 3 files changed, 28 insertions(+), 2 deletions(-) ++ ++--- a/src/gcc/config/m68k/m68k-protos.h +++++ b/src/gcc/config/m68k/m68k-protos.h ++@@ -26,6 +26,7 @@ extern HOST_WIDE_INT m68k_initial_elimination_offset (int from, int to); ++ extern void split_di (rtx[], int, rtx[], rtx[]); ++ ++ extern bool valid_mov3q_const (HOST_WIDE_INT); +++extern bool check_move_simode (const rtx *); ++ extern const char *output_move_simode (rtx *); ++ extern const char *output_move_himode (rtx *); ++ extern const char *output_move_qimode (rtx *); ++--- a/src/gcc/config/m68k/m68k.cc +++++ b/src/gcc/config/m68k/m68k.cc ++@@ -3227,6 +3227,31 @@ valid_mov3q_const (HOST_WIDE_INT i) ++ return TARGET_ISAB && (i == -1 || IN_RANGE (i, 1, 7)); ++ } ++ +++/* Return true if OPERANDS[] are valid for output_move_simode. +++ In particular, if SRC is a MEM with auto-inc/dec adressing and +++ its REG is mentioned in DST, it's invalid. See PR123853. */ +++ +++bool +++check_move_simode (const rtx *operands) +++{ +++ rtx src = operands[1]; +++ if (MEM_P (src)) +++ { +++ rtx src1 = XEXP (src, 0); +++ if (GET_CODE (src1) == PRE_DEC || GET_CODE (src1) == POST_INC) +++ { +++ rtx src2 = XEXP (src1, 0); +++ if (REG_P (src2)) +++ { +++ rtx dst = operands[0]; +++ if (reg_overlap_mentioned_p (src2, dst)) +++ return false; +++ } +++ } +++ } +++ return true; +++} +++ ++ /* Return an instruction to move CONST_INT OPERANDS[1] into OPERANDS[0]. ++ I is the value of OPERANDS[1]. */ ++ ++--- a/src/gcc/config/m68k/m68k.md +++++ b/src/gcc/config/m68k/m68k.md ++@@ -993,7 +993,7 @@ ++ ;; We don't allow f-regs since fixed point cannot go in them. ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<") ++ (match_operand:SI 1 "general_src_operand" "damSnT,n,i"))] ++- "!TARGET_COLDFIRE && reload_completed" +++ "!TARGET_COLDFIRE && reload_completed && check_move_simode (operands)" ++ { ++ return output_move_simode (operands); ++ } ++@@ -1006,7 +1006,7 @@ ++ [(set (match_operand:SI 0 "nonimmediate_operand" "=g,d,a<") ++ (match_operand:SI 1 "general_src_operand" "damSKT,n,i"))] ++ ++- "!TARGET_COLDFIRE" +++ "!TARGET_COLDFIRE && check_move_simode (operands)" ++ { ++ return output_move_simode (operands); ++ } ++-- ++2.54.0 ++ diff --cc debian/patches/pr124637.diff index 0000000,0000000..9eb1989 new file mode 100644 --- /dev/null +++ b/debian/patches/pr124637.diff @@@ -1,0 -1,0 +1,54 @@@ ++--- a/src/gcc/calls.cc +++++ b/src/gcc/calls.cc ++@@ -2252,10 +2252,20 @@ load_register_parameters (struct arg_data *args, int num_actuals, ++ && !TREE_SIDE_EFFECTS (tree_value) ++ && immediate_const_ctor_p (DECL_INITIAL (tree_value))) ++ { +++ HOST_WIDE_INT size = int_expr_size (DECL_INITIAL (tree_value)); ++ rtx target = gen_reg_rtx (word_mode); ++ store_constructor (DECL_INITIAL (tree_value), target, 0, ++- int_expr_size (DECL_INITIAL (tree_value)), ++- false); +++ size, false); +++ /* On big-endian targets, store_constructor places fields +++ from the MSB, which places any padding bits in the least +++ significant bytes. If required, use a logical right shift +++ to place things where expected in a register parameter. */ +++ if (BYTES_BIG_ENDIAN +++ && size < UNITS_PER_WORD +++ && args[i].locate.where_pad == PAD_DOWNWARD) +++ target = expand_shift (RSHIFT_EXPR, word_mode, target, +++ (UNITS_PER_WORD - size) * BITS_PER_UNIT, +++ NULL_RTX, 1); ++ reg = gen_rtx_REG (word_mode, REGNO (reg)); ++ emit_move_insn (reg, target); ++ } ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.target/powerpc/pr124637.c ++@@ -0,0 +1,26 @@ +++/* { dg-do compile { target { powerpc64-*-* } } } */ +++/* { dg-options "-O2 -m64 -mbig-endian" } */ +++ +++typedef struct { +++ unsigned short a; +++ unsigned short b; +++ unsigned short c; +++} S_t; +++ +++static const S_t m1 = { 0x20, 1, 1 }; +++ +++void ext(S_t r); +++void foo() { ext(m1); } +++ +++/* Apologies in advance that these may be a little fragile. */ +++ +++/* { dg-final { scan-assembler "lis 3,0x20" } } */ +++/* { dg-final { scan-assembler "ori 3,3,0x1" } } */ +++/* { dg-final { scan-assembler "sldi 3,3,16" } } */ +++/* { dg-final { scan-assembler "ori 3,3,0x1" } } */ +++ +++/* { dg-final { scan-assembler-not "lis 9,0x20" } } */ +++/* { dg-final { scan-assembler-not "ori 9,9,0x1" } } */ +++/* { dg-final { scan-assembler-not "lis 3,0x1" } } */ +++/* { dg-final { scan-assembler-not "rldimi 3,9,32,0" } } */ +++ diff --cc debian/patches/pr39491.diff index 0000000,0000000..4c51820 new file mode 100644 --- /dev/null +++ b/debian/patches/pr39491.diff @@@ -1,0 -1,0 +1,132 @@@ ++# DP: Proposed patch for PR libstdc++/39491. ++ ++2009-04-16 Benjamin Kosnik ++ ++ * src/math_stubs_long_double.cc (__signbitl): Add for hppa linux only. ++ ++Index: a/src/libstdc++-v3/src/math_stubs_long_double.cc ++=================================================================== ++--- a/src/libstdc++-v3/src/math_stubs_long_double.cc (revision 146216) +++++ b/src/libstdc++-v3/src/math_stubs_long_double.cc (working copy) ++@@ -213,4 +221,111 @@ ++ return tanh((double) x); ++ } ++ #endif +++ +++ // From libmath/signbitl.c +++ // XXX ABI mistakenly exported +++#if defined (__hppa__) && defined (__linux__) +++# include +++# include +++ +++typedef unsigned int U_int32_t __attribute ((mode (SI))); +++typedef int Int32_t __attribute ((mode (SI))); +++typedef unsigned int U_int64_t __attribute ((mode (DI))); +++typedef int Int64_t __attribute ((mode (DI))); +++ +++#if BYTE_ORDER == BIG_ENDIAN +++typedef union +++{ +++ long double value; +++ struct +++ { +++ unsigned int sign_exponent:16; +++ unsigned int empty:16; +++ U_int32_t msw; +++ U_int32_t lsw; +++ } parts; +++} ieee_long_double_shape_type; +++#endif +++#if BYTE_ORDER == LITTLE_ENDIAN +++typedef union +++{ +++ long double value; +++ struct +++ { +++ U_int32_t lsw; +++ U_int32_t msw; +++ unsigned int sign_exponent:16; +++ unsigned int empty:16; +++ } parts; +++} ieee_long_double_shape_type; +++#endif +++ +++/* Get int from the exponent of a long double. */ +++#define GET_LDOUBLE_EXP(exp,d) \ +++do { \ +++ ieee_long_double_shape_type ge_u; \ +++ ge_u.value = (d); \ +++ (exp) = ge_u.parts.sign_exponent; \ +++} while (0) +++ +++#if BYTE_ORDER == BIG_ENDIAN +++typedef union +++{ +++ long double value; +++ struct +++ { +++ U_int64_t msw; +++ U_int64_t lsw; +++ } parts64; +++ struct +++ { +++ U_int32_t w0, w1, w2, w3; +++ } parts32; +++} ieee_quad_double_shape_type; +++#endif +++ +++#if BYTE_ORDER == LITTLE_ENDIAN +++typedef union +++{ +++ long double value; +++ struct +++ { +++ U_int64_t lsw; +++ U_int64_t msw; +++ } parts64; +++ struct +++ { +++ U_int32_t w3, w2, w1, w0; +++ } parts32; +++} ieee_quad_double_shape_type; +++#endif +++ +++/* Get most significant 64 bit int from a quad long double. */ +++#define GET_LDOUBLE_MSW64(msw,d) \ +++do { \ +++ ieee_quad_double_shape_type qw_u; \ +++ qw_u.value = (d); \ +++ (msw) = qw_u.parts64.msw; \ +++} while (0) +++ +++int +++__signbitl (long double x) +++{ +++#if LDBL_MANT_DIG == 113 +++ Int64_t msw; +++ +++ GET_LDOUBLE_MSW64 (msw, x); +++ return msw < 0; +++#else +++ Int32_t e; +++ +++ GET_LDOUBLE_EXP (e, x); +++ return e & 0x8000; +++#endif +++} +++#endif +++ +++#ifndef _GLIBCXX_HAVE___SIGNBITL +++ +++#endif ++ } // extern "C" ++--- a/src/libstdc++-v3/config/abi/pre/gnu.ver~ 2009-04-10 01:23:07.000000000 +0200 +++++ b/src/libstdc++-v3/config/abi/pre/gnu.ver 2009-04-21 16:24:24.000000000 +0200 ++@@ -635,6 +635,7 @@ ++ sqrtf; ++ sqrtl; ++ copysignf; +++ __signbitl; ++ ++ # GLIBCXX_ABI compatibility only. ++ # std::string diff --cc debian/patches/pr66368.diff index 0000000,0000000..c2ec875 new file mode 100644 --- /dev/null +++ b/debian/patches/pr66368.diff @@@ -1,0 -1,0 +1,22 @@@ ++# DP: PR go/66368, build libgo with -fno-stack-protector ++ ++--- a/src/libgo/Makefile.am +++++ b/src/libgo/Makefile.am ++@@ -47,6 +47,7 @@ AM_CPPFLAGS = -I $(srcdir)/runtime $(LIB ++ ACLOCAL_AMFLAGS = -I ./config -I ../config ++ ++ AM_CFLAGS = -fexceptions -fnon-call-exceptions \ +++ -fno-stack-protector \ ++ $(SPLIT_STACK) $(WARN_CFLAGS) \ ++ $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ ++ -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ ++--- a/src/libgo/Makefile.in +++++ b/src/libgo/Makefile.in ++@@ -564,6 +564,7 @@ WARN_CFLAGS = $(WARN_FLAGS) $(WERROR) ++ AM_CPPFLAGS = -I $(srcdir)/runtime $(LIBFFIINCS) $(PTHREAD_CFLAGS) ++ ACLOCAL_AMFLAGS = -I ./config -I ../config ++ AM_CFLAGS = -fexceptions -fnon-call-exceptions \ +++ -fno-stack-protector \ ++ $(SPLIT_STACK) $(WARN_CFLAGS) \ ++ $(STRINGOPS_FLAG) $(HWCAP_CFLAGS) $(OSCFLAGS) \ ++ -I $(srcdir)/../libgcc -I $(srcdir)/../libbacktrace \ diff --cc debian/patches/pr67590.diff index 0000000,0000000..0b3adfa new file mode 100644 --- /dev/null +++ b/debian/patches/pr67590.diff @@@ -1,0 -1,0 +1,36 @@@ ++# DP: Fix PR67590, setting objdump macro. ++ ++--- a/src/libcc1/configure.ac +++++ b/src/libcc1/configure.ac ++@@ -74,6 +74,31 @@ if test "$GXX" = yes; then ++ fi ++ AC_SUBST(libsuffix) ++ +++# Figure out what objdump we will be using. +++AS_VAR_SET_IF(gcc_cv_objdump,, [ +++if test -f $gcc_cv_binutils_srcdir/configure.ac \ +++ && test -f ../binutils/Makefile \ +++ && test x$build = x$host; then +++ # Single tree build which includes binutils. +++ gcc_cv_objdump=../binutils/objdump$build_exeext +++elif test -x objdump$build_exeext; then +++ gcc_cv_objdump=./objdump$build_exeext +++elif ( set dummy $OBJDUMP_FOR_TARGET; test -x $[2] ); then +++ gcc_cv_objdump="$OBJDUMP_FOR_TARGET" +++else +++ AC_PATH_PROG(gcc_cv_objdump, $OBJDUMP_FOR_TARGET) +++fi]) +++ +++AC_MSG_CHECKING(what objdump to use) +++if test "$gcc_cv_objdump" = ../binutils/objdump$build_exeext; then +++ # Single tree build which includes binutils. +++ AC_MSG_RESULT(newly built objdump) +++elif test x$gcc_cv_objdump = x; then +++ AC_MSG_RESULT(not found) +++else +++ AC_MSG_RESULT($gcc_cv_objdump) +++fi +++ ++ dnl Test for -lsocket and -lnsl. Copied from libgo/configure.ac. ++ AC_CACHE_CHECK([for socket libraries], libcc1_cv_lib_sockets, ++ [libcc1_cv_lib_sockets= diff --cc debian/patches/pr67899.diff index 0000000,0000000..0f2ebd0 new file mode 100644 --- /dev/null +++ b/debian/patches/pr67899.diff @@@ -1,0 -1,0 +1,31 @@@ ++# DP: Proposed patch for PR sanitizer/67899 ++ ++Index: b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++=================================================================== ++--- a/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +++++ b/src/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++@@ -606,11 +606,10 @@ namespace __sanitizer { ++ #else ++ __sanitizer_sigset_t sa_mask; ++ #ifndef __mips__ ++-#if defined(__sparc__) ++- unsigned long sa_flags; ++-#else ++- int sa_flags; +++#if defined(__sparc__) && defined(__arch64__) +++ int __pad; ++ #endif +++ int sa_flags; ++ #endif ++ #endif ++ #if SANITIZER_LINUX ++@@ -640,7 +639,8 @@ namespace __sanitizer { ++ void (*handler)(int signo); ++ void (*sigaction)(int signo, void *info, void *ctx); ++ }; ++- unsigned long sa_flags; +++ int __pad; +++ int sa_flags; ++ void (*sa_restorer)(void); ++ __sanitizer_kernel_sigset_t sa_mask; ++ }; diff --cc debian/patches/pr81829.diff index 0000000,0000000..472e3d0 new file mode 100644 --- /dev/null +++ b/debian/patches/pr81829.diff @@@ -1,0 -1,0 +1,308 @@@ ++From f8029ed6d3dd444ee2608146118f2189cf9ef0d8 Mon Sep 17 00:00:00 2001 ++From: marxin ++Date: Mon, 14 Aug 2017 13:56:32 +0200 ++Subject: [PATCH] Fix file find utils and add unit tests (PR driver/81829). ++ ++gcc/ChangeLog: ++ ++2017-08-14 Martin Liska ++ ++ PR driver/81829 ++ * file-find.c (do_add_prefix): Always append DIR_SEPARATOR ++ at the end of a prefix. ++ (remove_prefix): Properly remove elements and accept also ++ path without a trailing DIR_SEPARATOR. ++ (purge): New function. ++ (file_find_verify_prefix_creation): Likewise. ++ (file_find_verify_prefix_add): Likewise. ++ (file_find_verify_prefix_removal): Likewise. ++ (file_find_c_tests): Likewise. ++ * selftest-run-tests.c (selftest::run_tests): Add new ++ file_find_c_tests. ++ * selftest.h (file_find_c_tests): Likewise. ++--- ++ gcc/file-find.c | 182 ++++++++++++++++++++++++++++++++++++++++++----- ++ gcc/gcc-ar.c | 19 +++-- ++ gcc/selftest-run-tests.c | 1 + ++ gcc/selftest.h | 1 + ++ 4 files changed, 179 insertions(+), 24 deletions(-) ++ ++Index: b/src/gcc/file-find.c ++=================================================================== ++--- a/src/gcc/file-find.c +++++ b/src/gcc/file-find.c ++@@ -21,6 +21,7 @@ along with GCC; see the file COPYING3. ++ #include "system.h" ++ #include "filenames.h" ++ #include "file-find.h" +++#include "selftest.h" ++ ++ static bool debug = false; ++ ++@@ -126,11 +127,22 @@ do_add_prefix (struct path_prefix *ppref ++ /* Keep track of the longest prefix. */ ++ ++ len = strlen (prefix); +++ bool append_separator = !IS_DIR_SEPARATOR (prefix[len - 1]); +++ if (append_separator) +++ len++; +++ ++ if (len > pprefix->max_len) ++ pprefix->max_len = len; ++ ++ pl = XNEW (struct prefix_list); ++- pl->prefix = xstrdup (prefix); +++ char *dup = XCNEWVEC (char, len + 1); +++ memcpy (dup, prefix, append_separator ? len - 1 : len); +++ if (append_separator) +++ { +++ dup[len - 1] = DIR_SEPARATOR; +++ dup[len] = '\0'; +++ } +++ pl->prefix = dup; ++ ++ if (*prev) ++ pl->next = *prev; ++@@ -212,34 +224,170 @@ prefix_from_string (const char *p, struc ++ void ++ remove_prefix (const char *prefix, struct path_prefix *pprefix) ++ { ++- struct prefix_list *remove, **prev, **remove_prev = NULL; +++ char *dup = NULL; ++ int max_len = 0; +++ size_t len = strlen (prefix); +++ if (prefix[len - 1] != DIR_SEPARATOR) +++ { +++ char *dup = XNEWVEC (char, len + 2); +++ memcpy (dup, prefix, len); +++ dup[len] = DIR_SEPARATOR; +++ dup[len + 1] = '\0'; +++ prefix = dup; +++ } ++ ++ if (pprefix->plist) ++ { ++- prev = &pprefix->plist; ++- for (struct prefix_list *pl = pprefix->plist; pl->next; pl = pl->next) +++ prefix_list *prev = NULL; +++ for (struct prefix_list *pl = pprefix->plist; pl;) ++ { ++ if (strcmp (prefix, pl->prefix) == 0) ++ { ++- remove = pl; ++- remove_prev = prev; ++- continue; +++ if (prev == NULL) +++ pprefix->plist = pl->next; +++ else +++ prev->next = pl->next; +++ +++ prefix_list *remove = pl; +++ free (remove); +++ pl = pl->next; ++ } +++ else +++ { +++ prev = pl; ++ ++- int l = strlen (pl->prefix); ++- if (l > max_len) ++- max_len = l; +++ int l = strlen (pl->prefix); +++ if (l > max_len) +++ max_len = l; ++ ++- prev = &pl; ++- } ++- ++- if (remove_prev) ++- { ++- *remove_prev = remove->next; ++- free (remove); +++ pl = pl->next; +++ } ++ } ++ ++ pprefix->max_len = max_len; ++ } +++ +++ if (dup) +++ free (dup); +++} +++ +++#if CHECKING_P +++ +++namespace selftest { +++ +++/* Encode '#' and '_' to path and dir separators in order to test portability +++ of the test-cases. */ +++ +++static char * +++purge (const char *input) +++{ +++ char *s = xstrdup (input); +++ for (char *c = s; *c != '\0'; c++) +++ switch (*c) +++ { +++ case '/': +++ case ':': +++ *c = 'a'; /* Poison default string values. */ +++ break; +++ case '_': +++ *c = PATH_SEPARATOR; +++ break; +++ case '#': +++ *c = DIR_SEPARATOR; +++ break; +++ default: +++ break; +++ } +++ +++ return s; +++} +++ +++const char *env1 = purge ("#home#user#bin_#home#user#bin_#bin_#usr#bin"); +++const char *env2 = purge ("#root_#root_#root"); +++ +++/* Verify creation of prefix. */ +++ +++static void +++file_find_verify_prefix_creation (void) +++{ +++ path_prefix prefix; +++ memset (&prefix, 0, sizeof (prefix)); +++ prefix_from_string (env1, &prefix); +++ +++ ASSERT_EQ (15, prefix.max_len); +++ +++ /* All prefixes end with DIR_SEPARATOR. */ +++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->prefix); +++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->next->prefix); +++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->next->next->prefix); +++ ASSERT_STREQ (purge ("#usr#bin#"), prefix.plist->next->next->next->prefix); +++ ASSERT_EQ (NULL, prefix.plist->next->next->next->next); +++} +++ +++/* Verify adding a prefix. */ +++ +++static void +++file_find_verify_prefix_add (void) +++{ +++ path_prefix prefix; +++ memset (&prefix, 0, sizeof (prefix)); +++ prefix_from_string (env1, &prefix); +++ +++ add_prefix (&prefix, purge ("#root")); +++ ASSERT_STREQ (purge ("#home#user#bin#"), prefix.plist->prefix); +++ ASSERT_STREQ (purge ("#root#"), +++ prefix.plist->next->next->next->next->prefix); +++ +++ add_prefix_begin (&prefix, purge ("#var")); +++ ASSERT_STREQ (purge ("#var#"), prefix.plist->prefix); +++} +++ +++/* Verify adding a prefix. */ +++ +++static void +++file_find_verify_prefix_removal (void) +++{ +++ path_prefix prefix; +++ memset (&prefix, 0, sizeof (prefix)); +++ prefix_from_string (env1, &prefix); +++ +++ /* All occurences of a prefix should be removed. */ +++ remove_prefix (purge ("#home#user#bin"), &prefix); +++ +++ ASSERT_EQ (9, prefix.max_len); +++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->prefix); +++ ASSERT_STREQ (purge ("#usr#bin#"), prefix.plist->next->prefix); +++ ASSERT_EQ (NULL, prefix.plist->next->next); +++ +++ remove_prefix (purge ("#usr#bin#"), &prefix); +++ ASSERT_EQ (5, prefix.max_len); +++ ASSERT_STREQ (purge ("#bin#"), prefix.plist->prefix); +++ ASSERT_EQ (NULL, prefix.plist->next); +++ +++ remove_prefix (purge ("#dev#random#"), &prefix); +++ remove_prefix (purge ("#bi#"), &prefix); +++ +++ remove_prefix (purge ("#bin#"), &prefix); +++ ASSERT_EQ (NULL, prefix.plist); +++ ASSERT_EQ (0, prefix.max_len); +++ +++ memset (&prefix, 0, sizeof (prefix)); +++ prefix_from_string (env2, &prefix); +++ ASSERT_EQ (6, prefix.max_len); +++ +++ remove_prefix (purge ("#root#"), &prefix); +++ ASSERT_EQ (NULL, prefix.plist); +++ ASSERT_EQ (0, prefix.max_len); ++ } +++ +++/* Run all of the selftests within this file. */ +++ +++void file_find_c_tests () +++{ +++ file_find_verify_prefix_creation (); +++ file_find_verify_prefix_add (); +++ file_find_verify_prefix_removal (); +++} +++ +++} // namespace selftest +++#endif /* CHECKING_P */ ++Index: b/src/gcc/gcc-ar.c ++=================================================================== ++--- a/src/gcc/gcc-ar.c +++++ b/src/gcc/gcc-ar.c ++@@ -194,15 +194,20 @@ main (int ac, char **av) ++ #ifdef CROSS_DIRECTORY_STRUCTURE ++ real_exe_name = concat (target_machine, "-", PERSONALITY, NULL); ++ #endif ++- /* Do not search original location in the same folder. */ ++- char *exe_folder = lrealpath (av[0]); ++- exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; ++- char *location = concat (exe_folder, PERSONALITY, NULL); +++ char *wrapper_file = lrealpath (av[0]); +++ exe_name = lrealpath (find_a_file (&path, real_exe_name, X_OK)); ++ ++- if (access (location, X_OK) == 0) ++- remove_prefix (exe_folder, &path); +++ /* If the exe_name points to the wrapper, remove folder of the wrapper +++ from prefix and try search again. */ +++ if (strcmp (exe_name, wrapper_file) == 0) +++ { +++ char *exe_folder = wrapper_file; +++ exe_folder[strlen (exe_folder) - strlen (lbasename (exe_folder))] = '\0'; +++ remove_prefix (exe_folder, &path); +++ +++ exe_name = find_a_file (&path, real_exe_name, X_OK); +++ } ++ ++- exe_name = find_a_file (&path, real_exe_name, X_OK); ++ if (!exe_name) ++ { ++ fprintf (stderr, "%s: Cannot find binary '%s'\n", av[0], ++Index: b/src/gcc/selftest-run-tests.c ++=================================================================== ++--- a/src/gcc/selftest-run-tests.c +++++ b/src/gcc/selftest-run-tests.c ++@@ -66,6 +66,7 @@ selftest::run_tests () ++ sreal_c_tests (); ++ fibonacci_heap_c_tests (); ++ typed_splay_tree_c_tests (); +++ file_find_c_tests (); ++ ++ /* Mid-level data structures. */ ++ input_c_tests (); ++Index: b/src/gcc/selftest.h ++=================================================================== ++--- a/src/gcc/selftest.h +++++ b/src/gcc/selftest.h ++@@ -196,6 +196,7 @@ extern void tree_c_tests (); ++ extern void tree_cfg_c_tests (); ++ extern void vec_c_tests (); ++ extern void wide_int_cc_tests (); +++extern void file_find_c_tests (); ++ ++ extern int num_passes; ++ diff --cc debian/patches/pr87808.diff index 0000000,0000000..c5d2868 new file mode 100644 --- /dev/null +++ b/debian/patches/pr87808.diff @@@ -1,0 -1,0 +1,56 @@@ ++# DP: Fix PR jit/87808. ++ ++--- a/src/gcc/jit/Make-lang.in +++++ b/src/gcc/jit/Make-lang.in ++@@ -146,6 +146,9 @@ ifneq (,$(findstring mingw,$(target))) ++ jit_OBJS += jit/jit-w32.o ++ endif ++ +++CFLAGS-jit/jit-playback.o += \ +++ -DFALLBACK_GCC_EXEC_PREFIX=\"$(libdir)/gcc/$(target_subdir)/$(version)\" +++ ++ # Use strict warnings for this front end. ++ jit-warn = $(STRICT_WARN) ++ ++--- a/src/gcc/jit/jit-playback.cc +++++ b/src/gcc/jit/jit-playback.cc ++@@ -45,6 +45,7 @@ along with GCC; see the file COPYING3. ++ #include "diagnostic.h" ++ #include "stmt.h" ++ #include "realmpfr.h" +++#include "file-find.h" ++ ++ #include "jit-playback.h" ++ #include "jit-result.h" ++@@ -3437,7 +3438,31 @@ void ++ playback::context:: ++ invoke_embedded_driver (const vec *argvec) ++ { +++ static char* gcc_driver_file = NULL; +++ ++ JIT_LOG_SCOPE (get_logger ()); +++ +++ /* process_command(), uses make_relative_prefix(), searches PATH +++ for the external driver, which might not be found. In this case +++ fall back to the configured default. */ +++#ifdef FALLBACK_GCC_EXEC_PREFIX +++ if (gcc_driver_file == NULL && ::getenv ("GCC_EXEC_PREFIX") == NULL) +++ { +++ struct path_prefix path = { 0, 0, "exec" }; +++ +++ prefix_from_env ("PATH", &path); +++ gcc_driver_file = find_a_file (&path, gcc_driver_name, X_OK); +++ if (gcc_driver_file == NULL) +++ { +++ char *str = concat ("GCC_EXEC_PREFIX=", +++ FALLBACK_GCC_EXEC_PREFIX, NULL); +++ ::putenv (str); +++ log ("gcc driver %s not found, using fallback GCC_EXEC_PREFIX=%s", +++ gcc_driver_name, FALLBACK_GCC_EXEC_PREFIX); +++ } +++ } +++#endif +++ ++ driver d (true, /* can_finalize */ ++ false); /* debug */ ++ int result = d.main (argvec->length (), diff --cc debian/patches/pr94253.diff index 0000000,0000000..4a935f2 new file mode 100644 --- /dev/null +++ b/debian/patches/pr94253.diff @@@ -1,0 -1,0 +1,48 @@@ ++commit 50e1e417b5cc68a6fd280e0a67c5c4eba524b70b ++Author: Richard Sandiford ++Date: Sun Mar 22 18:51:48 2020 +0000 ++ ++ rs6000: Allow FPRs to change between SDmode and DDmode [PR94254] ++ ++ g:497498c878d48754318e486428e2aa30854020b9 caused lra to cycle ++ on some SDmode reloads for power6. As explained in more detail ++ in the PR comments, the problem was a conflict between two target ++ hooks: rs6000_secondary_memory_needed_mode required SDmode FPR ++ reloads to use DDmode memory (rightly, since using SDmode memory ++ wouldn't make progress) but rs6000_can_change_mode_class didn't ++ allow FPRs to change from SDmode to DDmode. Previously lra ++ ignored that and changed the mode anyway. ++ ++ From what Segher says, it sounds like the "from_size < 8 || to_size < 8" ++ check is mostly there for SF<->64-bit subregs, and that SDmode is stored ++ in the way that target-independent code expects. This patch therefore ++ allows SD<->DD changes. ++ ++ I wondered about checking for SD<->64-bit changes instead, but that ++ seemed like an unnecessary generalisation for this stage. ++ ++ 2020-03-23 Richard Sandiford ++ ++ gcc/ ++ PR target/94254 ++ * config/rs6000/rs6000.c (rs6000_can_change_mode_class): Allow ++ FPRs to change between SDmode and DDmode. ++ ++--- a/src/gcc/config/rs6000/rs6000.cc +++++ b/src/gcc/config/rs6000/rs6000.cc ++@@ -13690,6 +13690,15 @@ rs6000_can_change_mode_class (machine_mo ++ || (to == SDmode && from == DDmode)) ++ return true; ++ +++ /* Allow SD<->DD changes, since SDmode values are stored in +++ the low half of the DDmode, just like target-independent +++ code expects. We need to allow at least SD->DD since +++ rs6000_secondary_memory_needed_mode asks for that change +++ to be made for SD reloads. */ +++ if ((to == DDmode && from == SDmode) +++ || (to == SDmode && from == DDmode)) +++ return true; +++ ++ if (from_size < 8 || to_size < 8) ++ return false; ++ diff --cc debian/patches/rename-info-files.diff index 0000000,0000000..02cc8e2 new file mode 100644 --- /dev/null +++ b/debian/patches/rename-info-files.diff @@@ -1,0 -1,0 +1,661 @@@ ++# DP: Allow transformations on info file names. Reference the ++# DP: transformed info file names in the texinfo files. ++ ++ ++2004-02-17 Matthias Klose ++ ++gcc/ChangeLog: ++ * Makefile.in: Allow transformations on info file names. ++ Define MAKEINFODEFS, macros to pass transformated info file ++ names to makeinfo. ++ * doc/cpp.texi: Use macros defined in MAKEINFODEFS for references. ++ * doc/cppinternals.texi: Likewise. ++ * doc/extend.texi: Likewise. ++ * doc/gcc.texi: Likewise. ++ * doc/gccint.texi: Likewise. ++ * doc/invoke.texi: Likewise. ++ * doc/libgcc.texi: Likewise. ++ * doc/makefile.texi: Likewise. ++ * doc/passes.texi: Likewise. ++ * doc/sourcebuild.texi: Likewise. ++ * doc/standards.texi: Likewise. ++ * doc/trouble.texi: Likewise. ++ ++gcc/fortran/ChangeLog: ++ * Make-lang.in: Allow transformations on info file names. ++ Pass macros of transformated info file defined in MAKEINFODEFS ++ names to makeinfo. ++ * gfortran.texi: Use macros defined in MAKEINFODEFS for references. ++ ++--- a/src/gcc/fortran/gfortran.texi +++++ b/src/gcc/fortran/gfortran.texi ++@@ -101,7 +101,7 @@ Texts being (a) (see below), and with th ++ @ifinfo ++ @dircategory Software development ++ @direntry ++-* gfortran: (gfortran). The GNU Fortran Compiler. +++* @value{fngfortran}: (@value{fngfortran}). The GNU Fortran Compiler. ++ @end direntry ++ This file documents the use and the internals of ++ the GNU Fortran compiler, (@command{gfortran}). ++--- a/src/gcc/fortran/Make-lang.in +++++ b/src/gcc/fortran/Make-lang.in ++@@ -116,7 +116,9 @@ fortran.tags: force ++ cd $(srcdir)/fortran; $(ETAGS) -o TAGS.sub *.cc *.h; \ ++ $(ETAGS) --include TAGS.sub --include ../TAGS.sub ++ ++-fortran.info: doc/gfortran.info doc/gfc-internals.info +++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') +++INFO_FORTRAN_I_NAME = $(shell echo gfc-internals|sed '$(program_transform_name)') +++fortran.info: doc/$(INFO_FORTRAN_NAME).info doc/$(INFO_FORTRAN_I_NAME).info ++ ++ F95_DVIFILES = doc/gfortran.dvi ++ ++@@ -199,10 +201,10 @@ GFORTRAN_TEXI = \ ++ $(srcdir)/doc/include/gcc-common.texi \ ++ gcc-vers.texi ++ ++-doc/gfortran.info: $(GFORTRAN_TEXI) +++doc/$(INFO_FORTRAN_NAME).info: $(GFORTRAN_TEXI) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ rm -f doc/gfortran.info-*; \ ++- $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ +++ $(MAKEINFO) $(MAKEINFODEFS) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ ++ -o $@ $<; \ ++ else true; fi ++ ++@@ -230,7 +232,7 @@ GFC_INTERNALS_TEXI = \ ++ $(srcdir)/doc/include/gcc-common.texi \ ++ gcc-vers.texi ++ ++-doc/gfc-internals.info: $(GFC_INTERNALS_TEXI) +++doc/$(INFO_FORTRAN_I_NAME).info: $(GFC_INTERNALS_TEXI) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ rm -f doc/gfc-internals.info-*; \ ++ $(MAKEINFO) -I $(srcdir)/doc/include -I $(srcdir)/fortran \ ++@@ -267,7 +269,7 @@ fortran.install-common: install-finclude ++ ++ fortran.install-plugin: ++ ++-fortran.install-info: $(DESTDIR)$(infodir)/gfortran.info +++fortran.install-info: $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info ++ ++ fortran.install-man: $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext) ++ ++@@ -285,7 +287,7 @@ fortran.uninstall: ++ rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_INSTALL_NAME)$(exeext); \ ++ rm -rf $(DESTDIR)$(man1dir)/$(GFORTRAN_INSTALL_NAME)$(man1ext); \ ++ rm -rf $(DESTDIR)$(bindir)/$(GFORTRAN_TARGET_INSTALL_NAME)$(exeext); \ ++- rm -rf $(DESTDIR)$(infodir)/gfortran.info* +++ rm -rf $(DESTDIR)$(infodir)/$(INFO_FORTRAN_NAME).info* ++ ++ # ++ # Clean hooks: ++--- a/src/gcc/Makefile.in +++++ b/src/gcc/Makefile.in ++@@ -3685,8 +3685,31 @@ ifeq ($(BUILD_INFO),no-info) ++ no-info: info ++ endif ++ ++-INFOFILES = doc/cpp.info doc/gcc.info doc/gccint.info \ ++- doc/gccinstall.info doc/cppinternals.info +++INFO_CPP_NAME = $(shell echo cpp|sed '$(program_transform_name)') +++INFO_GCC_NAME = $(shell echo gcc|sed '$(program_transform_name)') +++INFO_GXX_NAME = $(shell echo g++|sed '$(program_transform_name)') +++INFO_GCCINT_NAME = $(shell echo gccint|sed '$(program_transform_name)') +++INFO_GCCINSTALL_NAME = $(shell echo gccinstall|sed '$(program_transform_name)') +++INFO_CPPINT_NAME = $(shell echo cppinternals|sed '$(program_transform_name)') +++ +++INFO_FORTRAN_NAME = $(shell echo gfortran|sed '$(program_transform_name)') +++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') +++ +++INFOFILES = doc/$(INFO_CPP_NAME).info doc/$(INFO_GCC_NAME).info \ +++ doc/$(INFO_GCCINT_NAME).info \ +++ doc/$(INFO_GCCINSTALL_NAME).info doc/$(INFO_CPPINT_NAME).info +++ +++MAKEINFODEFS = -D 'fncpp $(INFO_CPP_NAME)' \ +++ -D 'fngcc $(INFO_GCC_NAME)' \ +++ -D 'fngcov $(INFO_GCC_NAME)' \ +++ -D 'fngcovtool $(INFO_GCC_NAME)' \ +++ -D 'fngcovdump $(INFO_GCC_NAME)' \ +++ -D 'fngxx $(INFO_GXX_NAME)' \ +++ -D 'fngccint $(INFO_GCCINT_NAME)' \ +++ -D 'fngccinstall $(INFO_GCCINSTALL_NAME)' \ +++ -D 'fncppint $(INFO_CPPINT_NAME)' \ +++ -D 'fngfortran $(INFO_FORTRAN_NAME)' \ +++ -D 'fngccgo $(INFO_GCCGO_NAME)' ++ ++ info: $(INFOFILES) lang.info @GENINSRC@ srcinfo lang.srcinfo ++ ++@@ -3734,7 +3757,20 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) ++ if [ -n "$(PKGVERSION)" ]; then \ ++ echo "@set VERSION_PACKAGE $(PKGVERSION)" >> $@T; \ ++ fi ++- echo "@set BUGURL $(BUGURL_TEXI)" >> $@T; \ +++ echo "@set BUGURL $(BUGURL_TEXI)" >> $@T +++ ( \ +++ echo '@set fncpp $(INFO_CPP_NAME)'; \ +++ echo '@set fngcc $(INFO_GCC_NAME)'; \ +++ echo '@set fngcov $(INFO_GCC_NAME)'; \ +++ echo '@set fngcovtool $(INFO_GCC_NAME)'; \ +++ echo '@set fngcovdump $(INFO_GCC_NAME)'; \ +++ echo '@set fngxx $(INFO_GXX_NAME)'; \ +++ echo '@set fngccint $(INFO_GCCINT_NAME)'; \ +++ echo '@set fngccinstall $(INFO_GCCINSTALL_NAME)'; \ +++ echo '@set fncppint $(INFO_CPPINT_NAME)'; \ +++ echo '@set fngfortran $(INFO_FORTRAN_NAME)'; \ +++ echo '@set fngccgo $(INFO_GCCGO_NAME)'; \ +++ ) >> $@T ++ mv -f $@T $@ ++ ++ ++@@ -3742,21 +3778,41 @@ gcc-vers.texi: $(BASEVER) $(DEVPHASE) ++ # patterns. To use them, put each of the specific targets with its ++ # specific dependencies but no build commands. ++ ++-doc/cpp.info: $(TEXI_CPP_FILES) ++-doc/gcc.info: $(TEXI_GCC_FILES) ++-doc/gccint.info: $(TEXI_GCCINT_FILES) ++-doc/cppinternals.info: $(TEXI_CPPINT_FILES) ++- +++# Generic entry to handle info files, which are not renamed (currently Ada) ++ doc/%.info: %.texi ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++ $(MAKEINFO) $(MAKEINFOFLAGS) -I . -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ +++doc/$(INFO_CPP_NAME).info: $(TEXI_CPP_FILES) +++ if [ x$(BUILD_INFO) = xinfo ]; then \ +++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ +++ -I $(gcc_docdir)/include -o $@ $<; \ +++ fi +++ +++doc/$(INFO_GCC_NAME).info: $(TEXI_GCC_FILES) +++ if [ x$(BUILD_INFO) = xinfo ]; then \ +++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ +++ -I $(gcc_docdir)/include -o $@ $<; \ +++ fi +++ +++doc/$(INFO_GCCINT_NAME).info: $(TEXI_GCCINT_FILES) +++ if [ x$(BUILD_INFO) = xinfo ]; then \ +++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ +++ -I $(gcc_docdir)/include -o $@ $<; \ +++ fi +++ +++doc/$(INFO_CPPINT_NAME).info: $(TEXI_CPPINT_FILES) +++ if [ x$(BUILD_INFO) = xinfo ]; then \ +++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ +++ -I $(gcc_docdir)/include -o $@ $<; \ +++ fi +++ ++ # Duplicate entry to handle renaming of gccinstall.info ++-doc/gccinstall.info: $(TEXI_GCCINSTALL_FILES) +++doc/$(INFO_GCCINSTALL_NAME).info: $(TEXI_GCCINSTALL_FILES) ++ if [ x$(BUILD_INFO) = xinfo ]; then \ ++- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ +++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ fi ++ ++@@ -4238,11 +4294,11 @@ install-libgdiagnostics: libgdiagnostics ++ # $(INSTALL_DATA) might be a relative pathname, so we can't cd into srcdir ++ # to do the install. ++ install-info:: doc installdirs \ ++- $(DESTDIR)$(infodir)/cpp.info \ ++- $(DESTDIR)$(infodir)/gcc.info \ ++- $(DESTDIR)$(infodir)/cppinternals.info \ ++- $(DESTDIR)$(infodir)/gccinstall.info \ ++- $(DESTDIR)$(infodir)/gccint.info \ +++ $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info \ +++ $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info \ +++ $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info \ +++ $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info \ +++ $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info \ ++ lang.install-info ++ ++ $(DESTDIR)$(infodir)/%.info: doc/%.info installdirs ++@@ -4481,8 +4537,11 @@ uninstall: lang.uninstall ++ -rm -rf $(DESTDIR)$(bindir)/$(GCOV_INSTALL_NAME)$(exeext) ++ -rm -rf $(DESTDIR)$(man1dir)/$(GCC_INSTALL_NAME)$(man1ext) ++ -rm -rf $(DESTDIR)$(man1dir)/cpp$(man1ext) ++- -rm -f $(DESTDIR)$(infodir)/cpp.info* $(DESTDIR)$(infodir)/gcc.info* ++- -rm -f $(DESTDIR)$(infodir)/cppinternals.info* $(DESTDIR)$(infodir)/gccint.info* +++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPP_NAME).info* +++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCC_NAME).info* +++ -rm -f $(DESTDIR)$(infodir)/$(INFO_CPPINT_NAME).info* +++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINT_NAME).info* +++ -rm -f $(DESTDIR)$(infodir)/$(INFO_GCCINSTALL_NAME).info* ++ for i in ar nm ranlib ; do \ ++ install_name=`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ;\ ++ target_install_name=$(target_noncanonical)-`echo gcc-$$i|sed '$(program_transform_name)'`$(exeext) ; \ ++--- a/src/gcc/ada/gnat-style.texi +++++ b/src/gcc/ada/gnat-style.texi ++@@ -12,7 +12,7 @@ ++ @finalout ++ @dircategory GNU Ada Tools ++ @direntry ++-* gnat-style: (gnat-style.info). gnat-style +++* gnat-style: (gnat-style-15). GNAT Coding Style ++ @end direntry ++ ++ @c %**end of header ++--- a/src/gcc/ada/gnat_rm.texi +++++ b/src/gcc/ada/gnat_rm.texi ++@@ -12,7 +12,7 @@ ++ @finalout ++ @dircategory GNU Ada Tools ++ @direntry ++-* gnat_rm: (gnat_rm.info). gnat_rm +++* GNAT Reference Manual: (gnat_rm-15). Reference Manual for GNU Ada tools. ++ @end direntry ++ ++ @c %**end of header ++--- a/src/gcc/doc/invoke.texi +++++ b/src/gcc/doc/invoke.texi ++@@ -19243,7 +19243,7 @@ One of the standard libraries bypassed b ++ @option{-nodefaultlibs} is @file{libgcc.a}, a library of internal subroutines ++ which GCC uses to overcome shortcomings of particular machines, or special ++ needs for some languages. ++-(@xref{Interface,,Interfacing to GCC Output,gccint,GNU Compiler +++(@xref{Interface,,Interfacing to GCC Output,@value{fngccint},GNU Compiler ++ Collection (GCC) Internals}, ++ for more discussion of @file{libgcc.a}.) ++ In most cases, you need @file{libgcc.a} even when you want to avoid ++@@ -19252,7 +19252,7 @@ or @option{-nodefaultlibs} you should us ++ This ensures that you have no unresolved references to internal GCC ++ library subroutines. ++ (An example of such an internal subroutine is @code{__main}, used to ensure C++ ++-constructors are called; @pxref{Collect2,,@code{collect2}, gccint, +++constructors are called; @pxref{Collect2,,@code{collect2}, @value{fngccint}, ++ GNU Compiler Collection (GCC) Internals}.) ++ ++ @opindex nostdlib++ ++@@ -37987,7 +37987,7 @@ Note that you can also specify places to ++ @option{-B}, @option{-I} and @option{-L} (@pxref{Directory Options}). These ++ take precedence over places specified using environment variables, which ++ in turn take precedence over those specified by the configuration of GCC@. ++-@xref{Driver,, Controlling the Compilation Driver @file{gcc}, gccint, +++@xref{Driver,, Controlling the Compilation Driver @file{gcc}, @value{fngccint}, ++ GNU Compiler Collection (GCC) Internals}. ++ ++ @table @env ++@@ -38167,7 +38167,7 @@ the headers it contains change. ++ ++ A precompiled header file is searched for when @code{#include} is ++ seen in the compilation. As it searches for the included file ++-(@pxref{Search Path,,Search Path,cpp,The C Preprocessor}) the +++(@pxref{Search Path,,Search Path,@value{fncpp},The C Preprocessor}) the ++ compiler looks for a precompiled header in each directory just before it ++ looks for the include file in that directory. The name searched for is ++ the name specified in the @code{#include} with @samp{.gch} appended. If ++--- a/src/gcc/doc/extend.texi +++++ b/src/gcc/doc/extend.texi ++@@ -29824,7 +29824,7 @@ want to write code that checks whether t ++ test for the GNU compiler the same way as for C programs: check for a ++ predefined macro @code{__GNUC__}. You can also use @code{__GNUG__} to ++ test specifically for GNU C++ (@pxref{Common Predefined Macros,, ++-Predefined Macros,cpp,The GNU C Preprocessor}). +++Predefined Macros,@value{fncpp},The GNU C Preprocessor}). ++ ++ @menu ++ * C++ Volatiles:: What constitutes an access to a volatile object. ++--- a/src/gcc/doc/standards.texi +++++ b/src/gcc/doc/standards.texi ++@@ -371,5 +371,5 @@ available at @uref{https://gcc.gnu.org/o ++ GNAT Reference Manual}, for information on standard ++ conformance and compatibility of the Ada compiler. ++ ++-@xref{Standards,,Standards, gfortran, The GNU Fortran Compiler}, for details +++@xref{Standards,,Standards, @value{fngfortran}, The GNU Fortran Compiler}, for details ++ of standards supported by GNU Fortran. ++--- a/src/gcc/doc/libgcc.texi +++++ b/src/gcc/doc/libgcc.texi ++@@ -24,7 +24,7 @@ that needs them. ++ GCC will also generate calls to C library routines, such as ++ @code{memcpy} and @code{memset}, in some cases. The set of routines ++ that GCC may possibly use is documented in @ref{Other ++-Builtins,,,gcc, Using the GNU Compiler Collection (GCC)}. +++Builtins,,,@value{fngcc}, Using the GNU Compiler Collection (GCC)}. ++ ++ These routines take arguments and return values of a specific machine ++ mode, not a specific C type. @xref{Machine Modes}, for an explanation ++--- a/src/gcc/doc/gccint.texi +++++ b/src/gcc/doc/gccint.texi ++@@ -49,7 +49,7 @@ Texts being (a) (see below), and with th ++ @ifnottex ++ @dircategory Software development ++ @direntry ++-* gccint: (gccint). Internals of the GNU Compiler Collection. +++* @value{fngccint}: (@value{fngccint}). Internals of the GNU Compiler Collection. ++ @end direntry ++ This file documents the internals of the GNU compilers. ++ @sp 1 ++@@ -81,7 +81,7 @@ write front ends for new languages. It ++ @value{VERSION_PACKAGE} ++ @end ifset ++ version @value{version-GCC}. The use of the GNU compilers is documented in a ++-separate manual. @xref{Top,, Introduction, gcc, Using the GNU +++separate manual. @xref{Top,, Introduction, @value{fngcc}, Using the GNU ++ Compiler Collection (GCC)}. ++ ++ This manual is mainly a reference manual rather than a tutorial. It ++--- a/src/gcc/doc/cpp.texi +++++ b/src/gcc/doc/cpp.texi ++@@ -50,7 +50,7 @@ This manual contains no Invariant Sectio ++ @ifinfo ++ @dircategory Software development ++ @direntry ++-* Cpp: (cpp). The GNU C preprocessor. +++* @value{fncpp}: (@value{fncpp}). The GNU C preprocessor. ++ @end direntry ++ @end ifinfo ++ ++--- a/src/gcc/doc/gcc.texi +++++ b/src/gcc/doc/gcc.texi ++@@ -135,7 +135,7 @@ version @value{version-GCC}. ++ The internals of the GNU compilers, including how to port them to new ++ targets and some information about how to write front ends for new ++ languages, are documented in a separate manual. @xref{Top,, ++-Introduction, gccint, GNU Compiler Collection (GCC) Internals}. +++Introduction, @value{fngccint}, GNU Compiler Collection (GCC) Internals}. ++ ++ @menu ++ * G++ and GCC:: You can compile C or C++ programs. ++--- a/src/gcc/doc/install.texi +++++ b/src/gcc/doc/install.texi ++@@ -89,7 +89,7 @@ Free Documentation License}''. ++ @end ifinfo ++ @dircategory Software development ++ @direntry ++-* gccinstall: (gccinstall). Installing the GNU Compiler Collection. +++* @value{fngccinstall}: (@value{fngccinstall}). Installing the GNU Compiler Collection. ++ @end direntry ++ ++ @c Part 3 Titlepage and Copyright ++--- a/src/gcc/doc/cppinternals.texi +++++ b/src/gcc/doc/cppinternals.texi ++@@ -7,7 +7,7 @@ ++ @ifinfo ++ @dircategory Software development ++ @direntry ++-* Cpplib: (cppinternals). Cpplib internals. +++* @value{fncppint}: (@value{fncppint}). Cpplib internals. ++ @end direntry ++ @end ifinfo ++ ++--- a/src/libgomp/libgomp.texi +++++ b/src/libgomp/libgomp.texi ++@@ -31,7 +31,7 @@ texts being (a) (see below), and with th ++ @ifinfo ++ @dircategory GNU Libraries ++ @direntry ++-* libgomp: (libgomp). GNU Offloading and Multi Processing Runtime Library. +++* @value{fnlibgomp}: (@value{fnlibgomp}). GNU Offloading and Multi Processing Runtime Library. ++ @end direntry ++ ++ This manual documents libgomp, the GNU Offloading and Multi Processing ++--- a/src/libgomp/Makefile.in +++++ b/src/libgomp/Makefile.in ++@@ -616,7 +616,8 @@ info_TEXINFOS = libgomp.texi ++ ++ # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) ++ @BUILD_INFO_TRUE@STAMP_BUILD_INFO = stamp-build-info ++-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) +++INFO_LIBGOMP_NAME = $(shell echo libgomp|sed '$(program_transform_name)') +++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBGOMP_NAME).info ++ MAINTAINERCLEANFILES = $(srcdir)/libgomp.info ++ MULTISRCTOP = ++ MULTIBUILDTOP = ++@@ -1395,15 +1396,16 @@ env.lo: libgomp_f.h ++ env.o: libgomp_f.h ++ ++ all-local: $(STAMP_GENINSRC) ++- ++-stamp-geninsrc: libgomp.info ++- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info +++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info +++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info ++ @touch $@ ++ ++-libgomp.info: $(STAMP_BUILD_INFO) +++libgomp.info: $(INFO_LIBGOMP_NAME).info +++ [ "$(INFO_LIBGOMP_NAME).info" = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info +++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) ++ ++ stamp-build-info: libgomp.texi ++- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi +++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi ++ @touch $@ ++ ++ # target overrides ++--- a/src/libgomp/Makefile.am +++++ b/src/libgomp/Makefile.am ++@@ -132,14 +132,16 @@ endif ++ ++ all-local: $(STAMP_GENINSRC) ++ ++-stamp-geninsrc: libgomp.info ++- cp -p $(top_builddir)/libgomp.info $(srcdir)/libgomp.info +++stamp-geninsrc: $(INFO_LIBGOMP_NAME).info +++ cp -p $(top_builddir)/$(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.info ++ @touch $@ ++ ++-libgomp.info: $(STAMP_BUILD_INFO) +++libgomp.info: $(INFO_LIBGOMP_NAME).info +++ [ "$(INFO_LIBGOMP_NAME).info = libgomp.info ] || cp $(INFO_LIBGOMP_NAME).info libgomp.info +++$(INFO_LIBGOMP_NAME).info: $(STAMP_BUILD_INFO) ++ ++ stamp-build-info: libgomp.texi ++- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libgomp.info $(srcdir)/libgomp.texi +++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -D 'fnlibgomp $(INFO_LIBGOMP_NAME)' -I $(srcdir) -o $(INFO_LIBGOMP_NAME).info $(srcdir)/libgomp.texi ++ @touch $@ ++ ++ ++--- a/src/libitm/libitm.texi +++++ b/src/libitm/libitm.texi ++@@ -20,7 +20,7 @@ Free Documentation License''. ++ @ifinfo ++ @dircategory GNU Libraries ++ @direntry ++-* libitm: (libitm). GNU Transactional Memory Library +++* @value{fnlibitm}: (@value{fnlibitm}). GNU Transactional Memory Library ++ @end direntry ++ ++ This manual documents the GNU Transactional Memory Library. ++--- a/src/libitm/Makefile.am +++++ b/src/libitm/Makefile.am ++@@ -110,14 +110,17 @@ endif ++ ++ all-local: $(STAMP_GENINSRC) ++ ++-stamp-geninsrc: libitm.info ++- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info +++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') +++stamp-geninsrc: $(INFO_LIBITM_NAME).info +++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info ++ @touch $@ ++ ++-libitm.info: $(STAMP_BUILD_INFO) +++libitm.info: $(INFO_LIBITM_NAME).info +++ [ $(INFO_LIBITM_NAME).info = libitm.info ] || cp $(INFO_LIBITM_NAME).info libitm.info +++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) ++ ++ stamp-build-info: libitm.texi ++- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi +++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)'-o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi ++ @touch $@ ++ ++ ++--- a/src/libitm/Makefile.in +++++ b/src/libitm/Makefile.in ++@@ -1188,14 +1188,17 @@ vpath % $(strip $(search_path)) ++ ++ all-local: $(STAMP_GENINSRC) ++ ++-stamp-geninsrc: libitm.info ++- cp -p $(top_builddir)/libitm.info $(srcdir)/libitm.info +++INFO_LIBITM_NAME = $(shell echo libitm|sed '$(program_transform_name)') +++stamp-geninsrc: $(INFO_LIBITM_NAME).info +++ cp -p $(top_builddir)/$(INFO_LIBITM_NAME).info $(srcdir)/libitm.info ++ @touch $@ ++ ++-libitm.info: $(STAMP_BUILD_INFO) +++libitm.info: $(INFO_LIBITM_NAME).info +++ [ $(INFO_LIBITM_NAME).info = libitm.info ] || cp $(INFO_LIBITM_NAME).info libitm.info +++$(INFO_LIBITM_NAME).info: $(STAMP_BUILD_INFO) ++ ++ stamp-build-info: libitm.texi ++- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libitm.info $(srcdir)/libitm.texi +++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -D 'fnlibitm $(INFO_LIBITM_NAME)' -o $(INFO_LIBITM_NAME).info $(srcdir)/libitm.texi ++ @touch $@ ++ ++ # GNU Make needs to see an explicit $(MAKE) variable in the command it ++--- a/src/gcc/go/Make-lang.in +++++ b/src/gcc/go/Make-lang.in ++@@ -95,10 +95,11 @@ GO_TEXI_FILES = \ ++ $(gcc_docdir)/include/gcc-common.texi \ ++ gcc-vers.texi ++ ++-doc/gccgo.info: $(GO_TEXI_FILES) +++INFO_GCCGO_NAME = $(shell echo gccgo|sed '$(program_transform_name)') +++doc/$(INFO_GCCGO_NAME).info: $(GO_TEXI_FILES) ++ if test "x$(BUILD_INFO)" = xinfo; then \ ++- rm -f doc/gccgo.info*; \ ++- $(MAKEINFO) $(MAKEINFOFLAGS) -I $(gcc_docdir) \ +++ rm -f doc/$(INFO_GCCGO_NAME).info*; \ +++ $(MAKEINFO) $(MAKEINFOFLAGS) $(MAKEINFODEFS) -I $(gcc_docdir) \ ++ -I $(gcc_docdir)/include -o $@ $<; \ ++ else true; fi ++ ++@@ -124,7 +125,7 @@ gccgo.pod: go/gccgo.texi ++ go.all.cross: gccgo-cross$(exeext) ++ go.start.encap: gccgo$(exeext) ++ go.rest.encap: ++-go.info: doc/gccgo.info +++go.info: doc/$(INFO_GCCGO_NAME).info ++ go.dvi: doc/gccgo.dvi ++ go.pdf: doc/gccgo.pdf ++ go.html: $(build_htmldir)/go/index.html ++@@ -163,7 +164,7 @@ go.install-common: installdirs ++ ++ go.install-plugin: ++ ++-go.install-info: $(DESTDIR)$(infodir)/gccgo.info +++go.install-info: $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info ++ ++ go.install-pdf: doc/gccgo.pdf ++ @$(NORMAL_INSTALL) ++@@ -213,7 +214,7 @@ go.uninstall: ++ rm -rf $(DESTDIR)$(bindir)/$(GCCGO_INSTALL_NAME)$(exeext) ++ rm -rf $(DESTDIR)$(man1dir)/$(GCCGO_INSTALL_NAME)$(man1ext) ++ rm -rf $(DESTDIR)$(bindir)/$(GCCGO_TARGET_INSTALL_NAME)$(exeext) ++- rm -rf $(DESTDIR)$(infodir)/gccgo.info* +++ rm -rf $(DESTDIR)$(infodir)/$(INFO_GCCGO_NAME).info* ++ ++ # Clean hooks. ++ ++--- a/src/gcc/go/gccgo.texi +++++ b/src/gcc/go/gccgo.texi ++@@ -50,7 +50,7 @@ man page gfdl(7). ++ @format ++ @dircategory Software development ++ @direntry ++-* Gccgo: (gccgo). A GCC-based compiler for the Go language +++* @value{fngccgo}: (@value{fngccgo}). A GCC-based compiler for the Go language ++ @end direntry ++ @end format ++ ++@@ -124,7 +124,7 @@ and the Info entries for @file{gccgo} an ++ ++ The @command{gccgo} command is a frontend to @command{gcc} and ++ supports many of the same options. @xref{Option Summary, , Option ++-Summary, gcc, Using the GNU Compiler Collection (GCC)}. This manual +++Summary, @value{fngcc}, Using the GNU Compiler Collection (GCC)}. This manual ++ only documents the options specific to @command{gccgo}. ++ ++ The @command{gccgo} command may be used to compile Go source code into ++--- a/src/libquadmath/libquadmath.texi +++++ b/src/libquadmath/libquadmath.texi ++@@ -25,7 +25,7 @@ copy and modify this GNU manual. ++ @ifinfo ++ @dircategory GNU Libraries ++ @direntry ++-* libquadmath: (libquadmath). GCC Quad-Precision Math Library +++* @value{fnlibquadmath}: (@value{fnlibquadmath}). GCC Quad-Precision Math Library ++ @end direntry ++ ++ This manual documents the GCC Quad-Precision Math Library API. ++--- a/src/libquadmath/Makefile.am +++++ b/src/libquadmath/Makefile.am ++@@ -139,16 +139,18 @@ STAMP_BUILD_INFO = ++ endif ++ ++ ++-stamp-geninsrc: libquadmath.info ++- cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info +++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') +++ +++stamp-geninsrc: $(INFO_LIBQMATH_NAME).info +++ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.info ++ @touch $@ ++ ++ stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) ++- $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi +++ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi ++ @touch $@ ++ ++-CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) ++-MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info +++CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info +++MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info ++ ++ endif BUILD_LIBQUADMATH ++ ++--- a/src/libquadmath/Makefile.in +++++ b/src/libquadmath/Makefile.in ++@@ -283,7 +283,8 @@ AM_V_texidevnull = $(am__v_texidevnull_@ ++ am__v_texidevnull_ = $(am__v_texidevnull_@AM_DEFAULT_V@) ++ am__v_texidevnull_0 = > /dev/null ++ am__v_texidevnull_1 = ++-INFO_DEPS = libquadmath.info +++INFO_LIBQMATH_NAME = $(shell echo libquadmath|sed '$(program_transform_name)') +++INFO_DEPS = $(INFO_LIBQMATH_NAME).info ++ am__TEXINFO_TEX_DIR = $(srcdir)/../gcc/doc/include ++ DVIS = libquadmath.dvi ++ PDFS = libquadmath.pdf ++@@ -556,8 +557,8 @@ AUTOMAKE_OPTIONS = foreign info-in-build ++ ++ # AM_CONDITIONAL on configure check ACX_CHECK_PROG_VER([MAKEINFO]) ++ @BUILD_INFO_TRUE@@BUILD_LIBQUADMATH_TRUE@STAMP_BUILD_INFO = stamp-build-info ++-@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) ++-@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/libquadmath.info +++@BUILD_LIBQUADMATH_TRUE@CLEANFILES = $(STAMP_GENINSRC) $(STAMP_BUILD_INFO) $(INFO_LIBQMATH_NAME).info +++@BUILD_LIBQUADMATH_TRUE@MAINTAINERCLEANFILES = $(srcdir)/$(INFO_LIBQMATH_NAME).info ++ ++ # Automake Documentation: ++ # If your package has Texinfo files in many directories, you can use the ++@@ -1437,19 +1438,19 @@ uninstall-am: uninstall-dvi-am uninstall ++ @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ $(libquadmath_la_OBJECTS) $(libquadmath_la_LIBADD) \ ++ @BUILD_LIBQUADMATH_TRUE@@LIBQUAD_USE_SYMVER_SUN_TRUE@@LIBQUAD_USE_SYMVER_TRUE@ > $@ || (rm -f $@ ; exit 1) ++ ++-@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: libquadmath.info ++-@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/libquadmath.info $(srcdir)/libquadmath.info +++@BUILD_LIBQUADMATH_TRUE@stamp-geninsrc: $(INFO_LIBQMATH_NAME).info +++@BUILD_LIBQUADMATH_TRUE@ cp -p $(top_builddir)/$(INFO_LIBQMATH_NAME).info $(srcdir)/$(INFO_LIBQMATH_NAME).info ++ @BUILD_LIBQUADMATH_TRUE@ @touch $@ ++ ++ @BUILD_LIBQUADMATH_TRUE@stamp-build-info: libquadmath.texi $(libquadmath_TEXINFOS) ++-@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o libquadmath.info $(srcdir)/libquadmath.texi +++@BUILD_LIBQUADMATH_TRUE@ $(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir) -o $(INFO_LIBQMATH_NAME).info $(srcdir)/libquadmath.texi ++ @BUILD_LIBQUADMATH_TRUE@ @touch $@ ++ ++ all-local: $(ALL_LOCAL_DEPS) ++ ++ # Unconditionally override this target, so that automake's definition ++ # does not wrongly interfere. ++-libquadmath.info: $(STAMP_BUILD_INFO) +++$(INFO_LIBQMATH_NAME).info: $(STAMP_BUILD_INFO) ++ ++ libquadmath-vers.texi: ++ echo "@set BUGURL $(REPORT_BUGS_TEXI)" > $@ diff --cc debian/patches/rust-enabled.diff index 0000000,0000000..d0972fa new file mode 100644 --- /dev/null +++ b/debian/patches/rust-enabled.diff @@@ -1,0 -1,0 +1,23 @@@ ++# DP: Explicitely enable rust, too late to be removed from 23.04 ++ ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -2150,18 +2150,6 @@ if test -d ${srcdir}/gcc; then ++ ;; ++ esac ++ ++- # Disable Rust for GCC 13 release. ++- case ${add_this_lang}:${language} in ++- yes:rust) ++- # Specifically requested language; tell them. ++- AC_MSG_ERROR([Rust is not supported in GCC 13 release]) ++- ;; ++- *:rust) ++- # Silently disable. ++- add_this_lang=unsupported ++- ;; ++- esac ++- ++ # Disable jit if -enable-host-shared not specified ++ # but not if building for Mingw. All code in Windows ++ # is position independent code (PIC). diff --cc debian/patches/sh-bootstrap-compare.diff index 0000000,0000000..27d0fc3 new file mode 100644 --- /dev/null +++ b/debian/patches/sh-bootstrap-compare.diff @@@ -1,0 -1,0 +1,13 @@@ ++# DP: ignore gm2version.o stage diff on some archtectures (m68k, riscv64) ++ ++--- a/src/configure.ac +++++ b/src/configure.ac ++@@ -4223,6 +4223,8 @@ compare_exclusions="$compare_exclusions ++ compare_exclusions="$compare_exclusions | gcc/m2/gm2-compiler-boot/SYSTEM*" ++ compare_exclusions="$compare_exclusions | gcc/m2/gm2version*" ++ compare_exclusions="$compare_exclusions | gcc/cobol/parse\$(objext)" +++compare_exclusions="$compare_exclusions | sh4-linux-gnu/libstdc++-v3/src/c++98/math_stubs_long_double\$(objext)" +++compare_exclusions="$compare_exclusions | sh4-linux-gnu/libstdc++-v3/src/.libs/compatibility\$(objext)" ++ case "$target" in ++ hppa*64*-*-hpux*) ;; ++ mipsel-*linux-gnu) compare_exclusions="$compare_exclusions | gcc/rust/rust-macro-builtins.o | gcc/rust/rust-session-manager.o | gcc/rust/rust-cfg-parser.o | gcc/rust/rust-lex.o" ;; diff --cc debian/patches/sh-lra-support-doc.diff index 0000000,0000000..01b78f0 new file mode 100644 --- /dev/null +++ b/debian/patches/sh-lra-support-doc.diff @@@ -1,0 -1,0 +1,44 @@@ ++From 8a687ad35493af0112f156f4551ef5ece82fae54 Mon Sep 17 00:00:00 2001 ++From: Oleg Endo ++Date: Sun, 29 Sep 2024 21:33:29 +0900 ++Subject: [PATCH] SH: Add support for LRA and enable it by default ++ ++SH: Tighten memory predicates and constraints ++ ++--- a/src/gcc/doc/tm.texi +++++ b/src/gcc/doc/tm.texi ++@@ -3093,9 +3093,20 @@ A target hook which returns @code{true} if @var{subst} can't ++ substitute safely pseudos with equivalent memory values during ++ register allocation. ++ The default version of this target hook returns @code{false}. ++-On most machines, this default should be used. For generally ++-machines with non orthogonal register usage for addressing, such ++-as SH, this hook can be used to avoid excessive spilling. +++On most machines, this default should be used. For machines with +++non-orthogonal register usage for addressing, such as SH, +++this hook can be used to avoid excessive spilling. +++@end deftypefn +++ +++@deftypefn {Target Hook} bool TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P (rtx @var{subst}) +++A target hook which returns @code{true} if @var{subst} can't +++substitute safely pseudos with equivalent constant values during +++register allocation. +++The default version of this target hook returns @code{false}. +++On most machines, this default should be used. For machines with +++special constant load instructions that have additional constraints +++or being dependent on mode-switching, such as SH, this hook can be +++used to avoid unsafe substitution. ++ @end deftypefn ++ ++ @deftypefn {Target Hook} bool TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT (rtx *@var{offset1}, rtx *@var{offset2}, poly_int64 @var{orig_offset}, machine_mode @var{mode}) ++--- a/src/gcc/doc/tm.texi.in +++++ b/src/gcc/doc/tm.texi.in ++@@ -2398,6 +2398,8 @@ in the reload pass. ++ ++ @hook TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P ++ +++@hook TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P +++ ++ @hook TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT ++ ++ @hook TARGET_SPILL_CLASS diff --cc debian/patches/sh-lra-support.diff index 0000000,0000000..2dc86e9 new file mode 100644 --- /dev/null +++ b/debian/patches/sh-lra-support.diff @@@ -1,0 -1,0 +1,3380 @@@ ++From fd2e8b96b6fbf45a4cccd147ee82afac904e72fc Mon Sep 17 00:00:00 2001 ++From: Oleg Endo ++Date: Sun, 29 Sep 2024 21:33:29 +0900 ++Subject: [PATCH] SH: Add support for LRA and enable it by default ++ ++SH: Tighten memory predicates and constraints ++ ++In particular, reject invalid hard-regs for memory address registers when using ++LRA. Unfortunately we need to distingquish between old reload and LRA behaviors ++for the transitional period. LRA seems to require stricter predicates and ++constraints. ++ ++gcc/ChangeLog: ++ ++ PR target/55212 ++ * config/sh/predicates.md (simple_mem_operand): ++ Use 'satisfies_constraint_Sra'. ++ (post_inc_mem, pre_dec_mem): Use 'satisfies_constraint_Rab'. ++ * config/sh/constraints.md (Rab, Rai, Sgb): New constraints. ++ (Sua, Sdd, Snd, Ssd, Sbv, Sra, Ara, Add): Use Rab and Rai constraints. ++ * config/sh/sync.md (atomic_mem_operand_0, atomic_mem_operand_1): Reject ++ GBR addresses when hard-llcs atomic mode is enabled. ++ ++SH: Pin input args to hard-regs via predicates for sfuncs ++ ++Some sfuncs uses hard reg as input and clobber its raw reg pattern. It ++seems that LRA doesn't process this clobber pattern. Rewrite these ++patterns so as to work with LRA. ++ ++gcc/ChangeLog: ++ ++ PR target/55212 ++ * config/sh/predicates.md (hard_reg_r0..r7): New predicates. ++ * config/sh/sh.md (udivsi3_i4, udivsi3_i4_single, ++ udivsi3_i1): Rewrite with match_operand and match_dup. ++ (block_lump_real, block_lump_real_i4): Ditto. ++ (udivsi3): Adjust for it. ++ * config/sh/sh-mem.cc (expand_block_move): Ditto. ++ ++LRA: Take scratch as implicit unused output reloads ++ ++gcc/ChangeLog: ++ * lra-constraints.cc (match_reload, process_alt_operands, ++ curr_insn_transform): Take scratch as implicit unused ++ output reloads. ++ ++LRA: Add cannot_substitute_const_equiv_p target hook ++ ++On SH fp constant load special instructions 'fldi0' and 'fldi1' are only valid ++for single-precision fp mode and thus depend on mode-switiching. Since LRA is ++not aware of that it would emit such constant loads in the wrong mode. The new ++target hook allows rejecting such potentially unsafe substitutions. ++ ++gcc/ChangeLog: ++ PR target/117182 ++ * target.def (cannot_substitute_const_equiv_p): New target hook. ++ * doc/tm.texi.in: Add it. ++ * lra-constraints.cc (get_equiv): Use it. ++ * config/sh/sh.cc (sh_cannot_substitute_const_equiv_p): Override it. ++ * doc/tm.texi: Re-generate. ++ ++SH: A test case for wrong-code with -mlra PR55212 c#192 / c#248 / att. 59102 ++ ++gcc/testsuite/ChangeLog: ++ ++ PR target/55212 ++ * gcc.target/sh/pr55212-c248.c: New test. ++ ++SH: Add test case from PR55212 c#298 / c#311 / att. 59185 ++ ++gcc/testsuite/ChangeLog: ++ ++ PR target/55212 ++ * g++.target/sh/sh.exp: New. ++ * g++.target/sh/torture/sh-torture.exp: New. ++ * g++.target/sh/torture/pr55212-c311.C: New ++ ++SH: Add test case from PR55212 c#331 / c#333 / att. 59215 ++ ++gcc/testsuite/ChangeLog: ++ ++ PR target/55212 ++ * g++.target/sh/torture/pr55212-c333.C: New. ++ ++SH: Add test case from PR55212 c#367 / c#373 / att. 59285 ++ ++gcc/testsuite/ChangeLog: ++ ++ PR target/55212 ++ * g++.target/sh/torture/pr55212-c373.C: New. ++ ++SH: Add test case from PR55212 c#378 / c#384 / att. 59289 ++ ++gcc/testsuite/ChangeLog: ++ ++ PR target/55212 ++ * g++.target/sh/torture/pr55212-c384.C: New. ++ ++SH: Add test case from PR55212 c#405 / c#413 / att. 59442 ++ ++gcc/testsuite/ChangeLog: ++ ++ PR target/55212 ++ * g++.target/sh/torture/pr55212-c413.C: New. ++ ++SH: Try to workaround fp-reg related move insns ++ ++LRA will try to satisfy the constraints in match_scratch for the memory ++displacements and it will make issues on this target. To mitigate the ++issue, split movsf_ie_ra into several new patterns to remove ++match_scratch. Also define a new sub-pattern of movdf for constant ++loads. ++ ++gcc/ChangeLog: ++ ++ PR target/55212 ++ * gcc/config/sh/predicates.md (pc_relative_load_operand): New predicate. ++ * gcc/config/sh/sh-protos.h (sh_movsf_ie_ra_split_p): Remove. ++ (sh_movsf_ie_y_split_p): New proto. ++ * gcc/config/sh/sh.cc: (sh_movsf_ie_ra_split_p): Remove. ++ (sh_movsf_ie_y_split_p): New function. ++ (broken_move): Take movsf_ie_ra into account for fldi cases. ++ * gcc/config/sh/sh.md (movdf_i4_F_z): New insn pattern. ++ (movdf): Use it. ++ (movsf_ie_ra): Use define_insn instead of define_insn_and_split. ++ (movsf_ie_F_z, movsf_ie_Q_z, movsf_ie_y): New insn pattern. ++ (movsf): Use new patterns. ++ (movsf-1): Don't split when operands[0] or operands[1] is fpul. ++ (movdf_i4_F_z+7): New splitter. ++ ++SH: Try to workaround fp-reg related move insns pt.2 ++ ++The current movsf logic for LRA doesn't work well for reg from/to ++multiword subreg. Use a separate pattern movsf_ie_rffr for that case. ++Also movsf_ie_ra should be disabled for reg from/to subreg of SImode. ++If not, it's recognizable as such move when subreg1 pass tries to split ++multiword because the constraints aren't effective in that stage. ++ ++gcc/ChangeLog: ++ PR target/55212 ++ * config/sh/sh-protos.h (sh_movsf_ie_subreg_multiword_p): ++ New proto. ++ * config/sh/sh.cc (sh_movsf_ie_subreg_multiword_p): New function. ++ * config/sh/sh.md (movsf_ie_rffr): New insn_and_split. ++ (movsf): Use movsf_ie_rffr when sh_movsf_ie_subreg_multiword_p is true. ++ (movsf_ie_ra): Disable when sh_movsf_ie_y_split_p is true. ++ ++SH: Try to reduce R0 live ranges ++ ++Some move or extend patterns will make long R0 live ranges and could ++confuse LRA. Try reduce the failures by using insn variants that use an ++explicit R0-clobber. ++ ++gcc/ChangeLog: ++ PR target/55212 ++ * config/sh/sh.md (extendsi2_short_mem_disp_z): New ++ insn_and_split. ++ (extendsi2): Use it for LRA. ++ (mov_store_mem_index, *mov_store_mem_index): New patterns. ++ (mov): Use it for LRA. ++ (movsf_ie_store_mem_index, movsf_ie_load_mem_index, ++ *movsf_ie_store_mem_inde, *movsf_ie_load_mem_index): New patterns. ++ (movsf): Use it for LRA. ++ ++SH: Enable LRA by default ++ ++gcc/ChangeLog: ++ ++ PR target/55212 ++ * conifg/sh/sh.opt (sh_lra_flag): Init to 1. ++ ++SH: Add patch 59550 from PR/target 55212 ++--- ++ gcc/config/sh/constraints.md | 65 +- ++ gcc/config/sh/predicates.md | 46 +- ++ gcc/config/sh/sh-mem.cc | 4 +- ++ gcc/config/sh/sh-protos.h | 3 +- ++ gcc/config/sh/sh.cc | 63 +- ++ gcc/config/sh/sh.md | 419 ++++++++++-- ++ gcc/config/sh/sh.opt | 2 +- ++ gcc/config/sh/sync.md | 8 +- ++ gcc/lra-constraints.cc | 20 +- ++ gcc/target.def | 21 +- ++ gcc/testsuite/g++.target/sh/sh.exp | 297 +++++++++ ++ .../g++.target/sh/torture/pr55212-c311.C | 73 +++ ++ .../g++.target/sh/torture/pr55212-c333.C | 259 ++++++++ ++ .../g++.target/sh/torture/pr55212-c373.C | 612 ++++++++++++++++++ ++ .../g++.target/sh/torture/pr55212-c384.C | 429 ++++++++++++ ++ .../g++.target/sh/torture/pr55212-c413.C | 38 ++ ++ .../g++.target/sh/torture/sh-torture.exp | 299 +++++++++ ++ gcc/testsuite/gcc.target/sh/pr55212-c248.c | 31 + ++ 20 files changed, 2586 insertions(+), 122 deletions(-) ++ create mode 100644 gcc/testsuite/g++.target/sh/sh.exp ++ create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c311.C ++ create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c333.C ++ create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c373.C ++ create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c384.C ++ create mode 100644 gcc/testsuite/g++.target/sh/torture/pr55212-c413.C ++ create mode 100644 gcc/testsuite/g++.target/sh/torture/sh-torture.exp ++ create mode 100644 gcc/testsuite/gcc.target/sh/pr55212-c248.c ++ ++diff --git a/src/gcc/config/sh/constraints.md b/src/gcc/config/sh/constraints.md ++index bfdd868213e..04fb241e271 100644 ++--- a/src/gcc/config/sh/constraints.md +++++ b/src/gcc/config/sh/constraints.md ++@@ -45,8 +45,10 @@ ++ ;; H: Floating point 1 ++ ;; Q: pc relative load operand ++ ;; Rxx: reserved for exotic register classes. +++;; Rab: address base register +++;; Rai: address index register ++ ;; Sxx: extra memory constraints ++-;; Sua: unaligned memory address +++;; Sua: simple or post-inc address (for unaligned load) ++ ;; Sbv: QImode address without displacement ++ ;; Sbw: QImode address with 12 bit displacement ++ ;; Snd: address without displacement ++@@ -260,16 +262,36 @@ ++ (match_test "~ival == 64") ++ (match_test "~ival == 128")))) ++ +++;; FIXME: LRA and reload behavior differs in memory constraint handling. +++;; For LRA memory address constraints need to narrow the register type +++;; restrictions. It seems the address RTX validation is done slightly +++;; differently. Remove the non-LRA paths eventually. +++(define_constraint "Rab" +++ "@internal address base register constraint" +++ (ior (and (match_test "sh_lra_p ()") +++ (match_test "MAYBE_BASE_REGISTER_RTX_P (op, false)")) +++ (and (match_test "!sh_lra_p ()") +++ (match_code "reg")))) +++ +++(define_constraint "Rai" +++ "@internal address index register constraint" +++ (ior (and (match_test "sh_lra_p ()") +++ (match_test "MAYBE_INDEX_REGISTER_RTX_P (op, false)")) +++ (and (match_test "!sh_lra_p ()") +++ (match_code "reg")))) +++ ++ (define_memory_constraint "Sua" ++- "@internal" ++- (and (match_test "memory_operand (op, GET_MODE (op))") ++- (match_test "GET_CODE (XEXP (op, 0)) != PLUS"))) +++ "A memory reference that allows simple register or post-inc addressing." +++ (and (match_code "mem") +++ (ior (match_test "satisfies_constraint_Rab (XEXP (op, 0))") +++ (and (match_code "post_inc" "0") +++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))))) ++ ++ (define_memory_constraint "Sdd" ++ "A memory reference that uses displacement addressing." ++ (and (match_code "mem") ++ (match_code "plus" "0") ++- (match_code "reg" "00") +++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") ++ (match_code "const_int" "01"))) ++ ++ (define_memory_constraint "Snd" ++@@ -281,19 +303,28 @@ ++ "A memory reference that uses index addressing." ++ (and (match_code "mem") ++ (match_code "plus" "0") ++- (match_code "reg" "00") ++- (match_code "reg" "01"))) +++ (ior (and (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") +++ (match_test "satisfies_constraint_Rai (XEXP (XEXP (op, 0), 1))")) +++ (and (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 1))") +++ (match_test "satisfies_constraint_Rai (XEXP (XEXP (op, 0), 0))"))))) ++ ++ (define_memory_constraint "Ssd" ++ "A memory reference that excludes index and displacement addressing." ++- (and (match_code "mem") ++- (match_test "! satisfies_constraint_Sid (op)") ++- (match_test "! satisfies_constraint_Sdd (op)"))) +++ (ior (and (match_code "mem") +++ (match_test "! sh_lra_p ()") +++ (match_test "! satisfies_constraint_Sid (op)") +++ (match_test "! satisfies_constraint_Sdd (op)")) +++ (and (match_code "mem") +++ (match_test "sh_lra_p ()") +++ (ior (match_test "satisfies_constraint_Rab (XEXP (op, 0))") +++ (and (ior (match_code "pre_dec" "0") (match_code "post_inc" "0")) +++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))")))))) ++ ++ (define_memory_constraint "Sbv" ++ "A memory reference, as used in SH2A bclr.b, bset.b, etc." ++- (and (match_test "MEM_P (op) && GET_MODE (op) == QImode") ++- (match_test "REG_P (XEXP (op, 0))"))) +++ (and (match_code "mem") +++ (match_test "GET_MODE (op) == QImode") +++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))"))) ++ ++ (define_memory_constraint "Sbw" ++ "A memory reference, as used in SH2A bclr.b, bset.b, etc." ++@@ -304,13 +335,17 @@ ++ (define_memory_constraint "Sra" ++ "A memory reference that uses simple register addressing." ++ (and (match_code "mem") ++- (match_code "reg" "0"))) +++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))"))) +++ +++(define_memory_constraint "Sgb" +++ "A memory renference that uses GBR addressing." +++ (match_test "gbr_address_mem (op, GET_MODE (op))")) ++ ++ (define_memory_constraint "Ara" ++ "A memory reference that uses simple register addressing suitable for ++ gusa atomic operations." ++ (and (match_code "mem") ++- (match_code "reg" "0") +++ (match_test "satisfies_constraint_Rab (XEXP (op, 0))") ++ (match_test "REGNO (XEXP (op, 0)) != SP_REG"))) ++ ++ (define_memory_constraint "Add" ++@@ -319,6 +354,6 @@ ++ (and (match_code "mem") ++ (match_test "GET_MODE (op) == SImode") ++ (match_code "plus" "0") ++- (match_code "reg" "00") +++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))") ++ (match_code "const_int" "01") ++ (match_test "REGNO (XEXP (XEXP (op, 0), 0)) != SP_REG"))) ++diff --git a/src/gcc/config/sh/predicates.md b/src/gcc/config/sh/predicates.md ++index 7349c97a2b5..632a236b17a 100644 ++--- a/src/gcc/config/sh/predicates.md +++++ b/src/gcc/config/sh/predicates.md ++@@ -208,8 +208,7 @@ ++ ;; Returns 1 if OP is a simple register address. ++ (define_predicate "simple_mem_operand" ++ (and (match_code "mem") ++- (match_code "reg" "0") ++- (match_test "arith_reg_operand (XEXP (op, 0), SImode)"))) +++ (match_test "satisfies_constraint_Sra (op)"))) ++ ++ ;; Returns 1 if OP is a valid displacement address. ++ (define_predicate "displacement_mem_operand" ++@@ -239,13 +238,13 @@ ++ (define_predicate "post_inc_mem" ++ (and (match_code "mem") ++ (match_code "post_inc" "0") ++- (match_code "reg" "00"))) +++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))) ++ ++ ;; Returns true if OP is a pre-decrement addressing mode memory reference. ++ (define_predicate "pre_dec_mem" ++ (and (match_code "mem") ++ (match_code "pre_dec" "0") ++- (match_code "reg" "00"))) +++ (match_test "satisfies_constraint_Rab (XEXP (XEXP (op, 0), 0))"))) ++ ++ ;; Returns 1 if the operand can be used in an SH2A movu.{b|w} insn. ++ (define_predicate "zero_extend_movu_operand" ++@@ -485,6 +484,12 @@ ++ && sh_legitimate_index_p (mode, XEXP (plus0_rtx, 1), TARGET_SH2A, true); ++ }) ++ +++;; Returns true if OP is a pc relative load operand. +++(define_predicate "pc_relative_load_operand" +++ (and (match_code "mem") +++ (match_test "GET_MODE (op) != QImode") +++ (match_test "IS_PC_RELATIVE_LOAD_ADDR_P (XEXP (op, 0))"))) +++ ++ ;; Returns true if OP is a valid source operand for a logical operation. ++ (define_predicate "logical_operand" ++ (and (match_code "subreg,reg,const_int") ++@@ -807,3 +812,36 @@ ++ ++ return false; ++ }) +++ +++;; Predicates for pinning operands to hard-regs. +++(define_predicate "hard_reg_r0" +++ (and (match_code "reg") +++ (match_test "REGNO (op) == R0_REG"))) +++ +++(define_predicate "hard_reg_r1" +++ (and (match_code "reg") +++ (match_test "REGNO (op) == R1_REG"))) +++ +++(define_predicate "hard_reg_r2" +++ (and (match_code "reg") +++ (match_test "REGNO (op) == R2_REG"))) +++ +++(define_predicate "hard_reg_r3" +++ (and (match_code "reg") +++ (match_test "REGNO (op) == R3_REG"))) +++ +++(define_predicate "hard_reg_r4" +++ (and (match_code "reg") +++ (match_test "REGNO (op) == R4_REG"))) +++ +++(define_predicate "hard_reg_r5" +++ (and (match_code "reg") +++ (match_test "REGNO (op) == R5_REG"))) +++ +++(define_predicate "hard_reg_r6" +++ (and (match_code "reg") +++ (match_test "REGNO (op) == R6_REG"))) +++ +++(define_predicate "hard_reg_r7" +++ (and (match_code "reg") +++ (match_test "REGNO (op) == R7_REG"))) ++diff --git a/src/gcc/config/sh/sh-mem.cc b/src/gcc/config/sh/sh-mem.cc ++index 2a64bede951..c608bf9aa2d 100644 ++--- a/src/gcc/config/sh/sh-mem.cc +++++ b/src/gcc/config/sh/sh-mem.cc ++@@ -134,7 +134,7 @@ expand_block_move (rtx *operands) ++ ++ int dwords = bytes >> 3; ++ emit_insn (gen_move_insn (r6, GEN_INT (dwords - 1))); ++- emit_insn (gen_block_lump_real_i4 (func_addr_rtx, lab)); +++ emit_insn (gen_block_lump_real_i4 (func_addr_rtx, lab, r4, r5, r6)); ++ return true; ++ } ++ else ++@@ -178,7 +178,7 @@ expand_block_move (rtx *operands) ++ final_switch = 16 - ((bytes / 4) % 16); ++ while_loop = ((bytes / 4) / 16 - 1) * 16; ++ emit_insn (gen_move_insn (r6, GEN_INT (while_loop + final_switch))); ++- emit_insn (gen_block_lump_real (func_addr_rtx, lab)); +++ emit_insn (gen_block_lump_real (func_addr_rtx, lab, r4, r5, r6)); ++ return true; ++ } ++ ++diff --git a/src/gcc/config/sh/sh-protos.h b/src/gcc/config/sh/sh-protos.h ++index c8cc19f4dc7..dc37b22837b 100644 ++--- a/src/gcc/config/sh/sh-protos.h +++++ b/src/gcc/config/sh/sh-protos.h ++@@ -102,7 +102,8 @@ extern rtx sh_find_equiv_gbr_addr (rtx_insn* cur_insn, rtx mem); ++ extern int sh_eval_treg_value (rtx op); ++ extern HOST_WIDE_INT sh_disp_addr_displacement (rtx mem_op); ++ extern int sh_max_mov_insn_displacement (machine_mode mode, bool consider_sh2a); ++-extern bool sh_movsf_ie_ra_split_p (rtx, rtx, rtx); +++extern bool sh_movsf_ie_y_split_p (rtx, rtx); +++extern bool sh_movsf_ie_subreg_multiword_p (rtx, rtx); ++ extern void sh_expand_sym_label2reg (rtx, rtx, rtx, bool); ++ ++ /* Result value of sh_find_set_of_reg. */ ++diff --git a/src/gcc/config/sh/sh.cc b/src/gcc/config/sh/sh.cc ++index 1bc34e0a3e3..d6c70ef9409 100644 ++--- a/src/gcc/config/sh/sh.cc +++++ b/src/gcc/config/sh/sh.cc ++@@ -271,6 +271,7 @@ static bool sh_legitimate_address_p (machine_mode, rtx, bool, ++ static rtx sh_legitimize_address (rtx, rtx, machine_mode); ++ static rtx sh_delegitimize_address (rtx); ++ static bool sh_cannot_substitute_mem_equiv_p (rtx); +++static bool sh_cannot_substitute_const_equiv_p (rtx); ++ static bool sh_legitimize_address_displacement (rtx *, rtx *, ++ poly_int64, machine_mode); ++ static int scavenge_reg (HARD_REG_SET *s); ++@@ -612,6 +613,9 @@ TARGET_GNU_ATTRIBUTES (sh_attribute_table, ++ #undef TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P ++ #define TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P sh_cannot_substitute_mem_equiv_p ++ +++#undef TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P +++#define TARGET_CANNOT_SUBSTITUTE_CONST_EQUIV_P sh_cannot_substitute_const_equiv_p +++ ++ #undef TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT ++ #define TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT \ ++ sh_legitimize_address_displacement ++@@ -4829,6 +4833,7 @@ broken_move (rtx_insn *insn) ++ we changed this to do a constant load. In that case ++ we don't have an r0 clobber, hence we must use fldi. */ ++ && (TARGET_FMOVD +++ || sh_lra_p () ++ || (GET_CODE (XEXP (XVECEXP (PATTERN (insn), 0, 2), 0)) ++ == SCRATCH)) ++ && REG_P (SET_DEST (pat)) ++@@ -11431,6 +11436,19 @@ sh_cannot_substitute_mem_equiv_p (rtx) ++ return true; ++ } ++ +++static bool +++sh_cannot_substitute_const_equiv_p (rtx subst) +++{ +++ /* If SUBST is SFmode const_double 0 or 1, the move insn may be +++ transformed into fldi0/1. This is unsafe for fp mode switching +++ because fldi0/1 are single mode only instructions. */ +++ if (GET_MODE (subst) == SFmode +++ && (real_equal (CONST_DOUBLE_REAL_VALUE (subst), &dconst1) +++ || real_equal (CONST_DOUBLE_REAL_VALUE (subst), &dconst0))) +++ return true; +++ return false; +++} +++ ++ /* Implement TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT. */ ++ static bool ++ sh_legitimize_address_displacement (rtx *offset1, rtx *offset2, ++@@ -11452,30 +11470,37 @@ sh_legitimize_address_displacement (rtx *offset1, rtx *offset2, ++ return false; ++ } ++ ++-/* Return true if movsf insn should be splited with an additional ++- register. */ +++/* Return true if movsf insn should be splited with fpul register. */ ++ bool ++-sh_movsf_ie_ra_split_p (rtx op0, rtx op1, rtx op2) +++sh_movsf_ie_y_split_p (rtx op0, rtx op1) ++ { ++- /* op0 == op1 */ ++- if (rtx_equal_p (op0, op1)) +++ /* f, r */ +++ if (REG_P (op0) +++ && (SUBREG_P (op1) && GET_MODE (SUBREG_REG (op1)) == SImode)) ++ return true; ++- /* fy, FQ, reg */ ++- if (GET_CODE (op1) == CONST_DOUBLE ++- && ! satisfies_constraint_G (op1) ++- && ! satisfies_constraint_H (op1) ++- && REG_P (op0) ++- && REG_P (op2)) +++ /* r, f */ +++ if (REG_P (op1) +++ && (SUBREG_P (op0) && GET_MODE (SUBREG_REG (op0)) == SImode)) ++ return true; ++- /* f, r, y */ ++- if (REG_P (op0) && FP_REGISTER_P (REGNO (op0)) ++- && REG_P (op1) && GENERAL_REGISTER_P (REGNO (op1)) ++- && REG_P (op2) && (REGNO (op2) == FPUL_REG)) +++ +++ return false; +++} +++ +++/* Return true if it moves reg from/to subreg of multiword mode. */ +++bool +++sh_movsf_ie_subreg_multiword_p (rtx op0, rtx op1) +++{ +++ if (REG_P (op0) +++ && (SUBREG_P (op1) +++ && (GET_MODE (SUBREG_REG (op1)) == SCmode +++ || GET_MODE (SUBREG_REG (op1)) == DImode +++ || GET_MODE (SUBREG_REG (op1)) == TImode))) ++ return true; ++- /* r, f, y */ ++- if (REG_P (op1) && FP_REGISTER_P (REGNO (op1)) ++- && REG_P (op0) && GENERAL_REGISTER_P (REGNO (op0)) ++- && REG_P (op2) && (REGNO (op2) == FPUL_REG)) +++ if (REG_P (op1) +++ && (SUBREG_P (op0) +++ && (GET_MODE (SUBREG_REG (op0)) == SCmode +++ || GET_MODE (SUBREG_REG (op0)) == DImode +++ || GET_MODE (SUBREG_REG (op0)) == TImode))) ++ return true; ++ ++ return false; ++diff --git a/src/gcc/config/sh/sh.md b/src/gcc/config/sh/sh.md ++index 65b353da56e..1f905455b36 100644 ++--- a/src/gcc/config/sh/sh.md +++++ b/src/gcc/config/sh/sh.md ++@@ -2194,13 +2194,24 @@ ++ ;; there is nothing to prevent reload from using r0 to reload the address. ++ ;; This reload would clobber the value in r0 we are trying to store. ++ ;; If we let reload allocate r0, then this problem can never happen. +++;; +++;; In addition to that, we also must pin the input regs to hard-regs via the +++;; predicates. When these insns are instantiated it also emits the +++;; accompanying mov insns to load the hard-regs. However, subsequent RTL +++;; passes might move things around and reassign the operands to pseudo regs +++;; which might get allocated to different (wrong) hard-regs eventually. To +++;; avoid that, only allow matching these insns if the operands are the +++;; expected hard-regs. ++ (define_insn "udivsi3_i1" ++ [(set (match_operand:SI 0 "register_operand" "=z,z") ++- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) +++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") +++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) ++ (clobber (reg:SI T_REG)) ++ (clobber (reg:SI PR_REG)) ++ (clobber (reg:SI R1_REG)) ++- (clobber (reg:SI R4_REG)) +++ (clobber (match_dup 3)) +++ (use (reg:SI R4_REG)) +++ (use (reg:SI R5_REG)) ++ (use (match_operand:SI 1 "arith_reg_operand" "r,r")) ++ (use (match_operand 2 "" "Z,Ccl"))] ++ "TARGET_SH1 && TARGET_DIVIDE_CALL_DIV1" ++@@ -2212,7 +2223,8 @@ ++ ++ (define_insn "udivsi3_i4" ++ [(set (match_operand:SI 0 "register_operand" "=y,y") ++- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) +++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") +++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) ++ (clobber (reg:SI T_REG)) ++ (clobber (reg:SI PR_REG)) ++ (clobber (reg:DF DR0_REG)) ++@@ -2220,9 +2232,11 @@ ++ (clobber (reg:DF DR4_REG)) ++ (clobber (reg:SI R0_REG)) ++ (clobber (reg:SI R1_REG)) ++- (clobber (reg:SI R4_REG)) ++- (clobber (reg:SI R5_REG)) +++ (clobber (match_dup 3)) +++ (clobber (match_dup 4)) ++ (clobber (reg:SI FPSCR_STAT_REG)) +++ (use (reg:SI R4_REG)) +++ (use (reg:SI R5_REG)) ++ (use (match_operand:SI 1 "arith_reg_operand" "r,r")) ++ (use (match_operand 2 "" "Z,Ccl")) ++ (use (reg:SI FPSCR_MODES_REG))] ++@@ -2236,7 +2250,8 @@ ++ ++ (define_insn "udivsi3_i4_single" ++ [(set (match_operand:SI 0 "register_operand" "=y,y") ++- (udiv:SI (reg:SI R4_REG) (reg:SI R5_REG))) +++ (udiv:SI (match_operand:SI 3 "hard_reg_r4" "=r,r") +++ (match_operand:SI 4 "hard_reg_r5" "=r,r"))) ++ (clobber (reg:SI T_REG)) ++ (clobber (reg:SI PR_REG)) ++ (clobber (reg:DF DR0_REG)) ++@@ -2244,8 +2259,10 @@ ++ (clobber (reg:DF DR4_REG)) ++ (clobber (reg:SI R0_REG)) ++ (clobber (reg:SI R1_REG)) ++- (clobber (reg:SI R4_REG)) ++- (clobber (reg:SI R5_REG)) +++ (clobber (match_dup 3)) +++ (clobber (match_dup 4)) +++ (use (reg:SI R4_REG)) +++ (use (reg:SI R5_REG)) ++ (use (match_operand:SI 1 "arith_reg_operand" "r,r")) ++ (use (match_operand 2 "" "Z,Ccl"))] ++ "TARGET_FPU_ANY && TARGET_FPU_SINGLE" ++@@ -2278,6 +2295,8 @@ ++ { ++ rtx last; ++ rtx func_ptr = gen_reg_rtx (Pmode); +++ rtx r4 = gen_rtx_REG (SImode, R4_REG); +++ rtx r5 = gen_rtx_REG (SImode, R5_REG); ++ ++ /* Emit the move of the address to a pseudo outside of the libcall. */ ++ if (TARGET_DIVIDE_CALL_TABLE) ++@@ -2305,9 +2324,9 @@ ++ { ++ rtx lab = function_symbol (func_ptr, "__udivsi3_i4", SFUNC_STATIC).lab; ++ if (TARGET_FPU_SINGLE) ++- last = gen_udivsi3_i4_single (operands[0], func_ptr, lab); +++ last = gen_udivsi3_i4_single (operands[0], func_ptr, lab, r4, r5); ++ else ++- last = gen_udivsi3_i4 (operands[0], func_ptr, lab); +++ last = gen_udivsi3_i4 (operands[0], func_ptr, lab, r4, r5); ++ } ++ else if (TARGET_SH2A) ++ { ++@@ -2319,10 +2338,10 @@ ++ else ++ { ++ rtx lab = function_symbol (func_ptr, "__udivsi3", SFUNC_STATIC).lab; ++- last = gen_udivsi3_i1 (operands[0], func_ptr, lab); +++ last = gen_udivsi3_i1 (operands[0], func_ptr, lab, r4, r5); ++ } ++- emit_move_insn (gen_rtx_REG (SImode, 4), operands[1]); ++- emit_move_insn (gen_rtx_REG (SImode, 5), operands[2]); +++ emit_move_insn (r4, operands[1]); +++ emit_move_insn (r5, operands[2]); ++ emit_insn (last); ++ DONE; ++ }) ++@@ -4801,7 +4820,37 @@ ++ ++ (define_expand "extendsi2" ++ [(set (match_operand:SI 0 "arith_reg_dest") ++- (sign_extend:SI (match_operand:QIHI 1 "general_extend_operand")))]) +++ (sign_extend:SI (match_operand:QIHI 1 "general_extend_operand")))] +++ "" +++{ +++ /* When the displacement addressing is used, RA will assign r0 to +++ the pseudo register operand for the QI/HImode load. +++ See the comment in sh.cc:prepare_move_operand and PR target/55212. */ +++ if (! lra_in_progress && ! reload_completed +++ && sh_lra_p () +++ && ! TARGET_SH2A +++ && arith_reg_dest (operands[0], mode) +++ && short_displacement_mem_operand (operands[1], mode)) +++ { +++ emit_insn (gen_extendsi2_short_mem_disp_z (operands[0], operands[1])); +++ DONE; +++ } +++}) +++ +++(define_insn_and_split "extendsi2_short_mem_disp_z" +++ [(set (match_operand:SI 0 "arith_reg_dest" "=r") +++ (sign_extend:SI +++ (match_operand:QIHI 1 "short_displacement_mem_operand" "m"))) +++ (clobber (reg:SI R0_REG))] +++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" +++ "#" +++ "&& 1" +++ [(set (match_dup 2) (sign_extend:SI (match_dup 1))) +++ (set (match_dup 0) (match_dup 2))] +++{ +++ operands[2] = gen_rtx_REG (SImode, R0_REG); +++} +++ [(set_attr "type" "load")]) ++ ++ (define_insn_and_split "*extendsi2_compact_reg" ++ [(set (match_operand:SI 0 "arith_reg_dest" "=r") ++@@ -5343,9 +5392,49 @@ ++ operands[1] = gen_lowpart (mode, reg); ++ } ++ +++ if (! lra_in_progress && ! reload_completed +++ && sh_lra_p () +++ && ! TARGET_SH2A +++ && arith_reg_operand (operands[1], mode) +++ && satisfies_constraint_Sid (operands[0])) +++ { +++ rtx adr = XEXP (operands[0], 0); +++ rtx base = XEXP (adr, 0); +++ rtx idx = XEXP (adr, 1); +++ emit_insn (gen_mov_store_mem_index (base, idx,operands[1])); +++ DONE; +++ } +++ ++ prepare_move_operands (operands, mode); ++ }) ++ +++;; The "*mov_store_mem_index" pattern must come before the +++;; "mov_store_mem_index" pattern. Matching order is important because +++;; the "hard_reg_r0" operand will match in both, but we want to prioritize +++;; the former. +++(define_insn "*mov_store_mem_index" +++ [(set (mem:QIHI (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") +++ (match_operand:SI 1 "hard_reg_r0" "z"))) +++ (match_operand:QIHI 2 "arith_reg_operand" "r"))] +++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" +++ "mov. %2,@(%1,%0)" +++ [(set_attr "type" "store")]) +++ +++(define_insn_and_split "mov_store_mem_index" +++ [(set (mem:QIHI (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") +++ (match_operand:SI 1 "arith_reg_operand" "^zr"))) +++ (match_operand:QIHI 2 "arith_reg_operand" "r")) +++ (clobber (reg:SI R0_REG))] +++ "TARGET_SH1 && ! TARGET_SH2A && sh_lra_p ()" +++ "#" +++ "&& 1" +++ [(set (match_dup 3) (match_dup 1)) +++ (set (mem:QIHI (plus:SI (match_dup 0) (match_dup 3))) (match_dup 2))] +++{ +++ operands[3] = gen_rtx_REG (SImode, R0_REG); +++} +++ [(set_attr "type" "store")]) +++ ++ ;; The pre-dec and post-inc mems must be captured by the '<' and '>' ++ ;; constraints, otherwise wrong code might get generated. ++ (define_insn "*mov_load_predec" ++@@ -5631,6 +5720,22 @@ ++ (const_string "double") ++ (const_string "none")))]) ++ +++;; LRA will try to satisfy the constraints in match_scratch for the memory +++;; displacements and it will make issues on this target. Use R0 as a scratch +++;; register for the constant load. +++(define_insn "movdf_i4_F_z" +++ [(set (match_operand:DF 0 "fp_arith_reg_operand" "=d") +++ (match_operand:DF 1 "const_double_operand" "F")) +++ (use (reg:SI FPSCR_MODES_REG)) +++ (clobber (reg:SI R0_REG))] +++ "TARGET_FPU_DOUBLE && sh_lra_p ()" +++ "#" +++ [(set_attr "type" "pcfload") +++ (set (attr "length") (if_then_else (eq_attr "fmovd" "yes") (const_int 4) (const_int 8))) +++ (set (attr "fp_mode") (if_then_else (eq_attr "fmovd" "yes") +++ (const_string "double") +++ (const_string "none")))]) +++ ++ ;; Moving DFmode between fp/general registers through memory ++ ;; (the top of the stack) is faster than moving through fpul even for ++ ;; little endian. Because the type of an instruction is important for its ++@@ -5770,6 +5875,14 @@ ++ [(set (match_dup 0) (match_dup 0))] ++ "") ++ +++(define_split +++ [(set (match_operand:SF 0 "register_operand") +++ (match_operand:SF 1 "register_operand")) +++ (use (reg:SI FPSCR_MODES_REG))] +++ "TARGET_SH2E && sh_lra_p () && reload_completed +++ && true_regnum (operands[0]) == true_regnum (operands[1])" +++ [(set (match_dup 0) (match_dup 0))]) +++ ++ ;; fmovd substitute post-reload splits ++ (define_split ++ [(set (match_operand:DF 0 "register_operand" "") ++@@ -6014,6 +6127,14 @@ ++ prepare_move_operands (operands, DFmode); ++ if (TARGET_FPU_DOUBLE) ++ { +++ if (sh_lra_p () +++ && (GET_CODE (operands[1]) == CONST_DOUBLE +++ && REG_P (operands[0]))) +++ { +++ emit_insn (gen_movdf_i4_F_z (operands[0], operands[1])); +++ DONE; +++ } +++ ++ emit_insn (gen_movdf_i4 (operands[0], operands[1])); ++ DONE; ++ } ++@@ -6139,15 +6260,17 @@ ++ (const_string "none") ++ (const_string "none")])]) ++ ++-(define_insn_and_split "movsf_ie_ra" +++;; LRA will try to satisfy the constraints in match_scratch for the memory +++;; displacements and it will make issues on this target. movsf_ie is splitted +++;; into 4 patterns to avoid it when lra_in_progress is true. +++(define_insn "movsf_ie_ra" ++ [(set (match_operand:SF 0 "general_movdst_operand" ++- "=f,r,f,f,fy,f,m, r,r,m,f,y,y,rf,r,y,<,y,y") +++ "=f,r,f,f,f,m, r,r,m,f,y,y,r,y,<,y,y") ++ (match_operand:SF 1 "general_movsrc_operand" ++- " f,r,G,H,FQ,m,f,FQ,m,r,y,f,>,fr,y,r,y,>,y")) ++- (use (reg:SI FPSCR_MODES_REG)) ++- (clobber (match_scratch:SF 2 "=r,r,X,X,&z,r,r, X,r,r,r,r,r, y,r,r,r,r,r")) ++- (const_int 0)] ++- "TARGET_SH2E +++ " f,r,G,H,m,f,FQ,m,r,y,f,>,y,r,y,>,y")) +++ (use (reg:SI FPSCR_MODES_REG))] +++ "TARGET_SH2E && sh_lra_p () +++ && ! sh_movsf_ie_y_split_p (operands[0], operands[1]) ++ && (arith_reg_operand (operands[0], SFmode) ++ || fpul_operand (operands[0], SFmode) ++ || arith_reg_operand (operands[1], SFmode) ++@@ -6157,7 +6280,6 @@ ++ mov %1,%0 ++ fldi0 %0 ++ fldi1 %0 ++- # ++ fmov.s %1,%0 ++ fmov.s %1,%0 ++ mov.l %1,%0 ++@@ -6166,31 +6288,19 @@ ++ fsts fpul,%0 ++ flds %1,fpul ++ lds.l %1,%0 ++- # ++ sts %1,%0 ++ lds %1,%0 ++ sts.l %1,%0 ++ lds.l %1,%0 ++ ! move optimized away" ++- "reload_completed ++- && sh_movsf_ie_ra_split_p (operands[0], operands[1], operands[2])" ++- [(const_int 0)] ++-{ ++- if (! rtx_equal_p (operands[0], operands[1])) ++- { ++- emit_insn (gen_movsf_ie (operands[2], operands[1])); ++- emit_insn (gen_movsf_ie (operands[0], operands[2])); ++- } ++-} ++- [(set_attr "type" "fmove,move,fmove,fmove,pcfload,fload,fstore,pcload,load, ++- store,fmove,fmove,load,*,fpul_gp,gp_fpul,fstore,load,nil") ++- (set_attr "late_fp_use" "*,*,*,*,*,*,yes,*,*,*,*,*,*,*,yes,*,yes,*,*") +++ [(set_attr "type" "fmove,move,fmove,fmove,fload,fstore,pcload,load, +++ store,fmove,fmove,load,fpul_gp,gp_fpul,fstore,load,nil") +++ (set_attr "late_fp_use" "*,*,*,*,*,yes,*,*,*,*,*,*,yes,*,yes,*,*") ++ (set_attr_alternative "length" ++ [(const_int 2) ++ (const_int 2) ++ (const_int 2) ++ (const_int 2) ++- (const_int 4) ++ (if_then_else (match_operand 1 "displacement_mem_operand") ++ (const_int 4) (const_int 2)) ++ (if_then_else (match_operand 0 "displacement_mem_operand") ++@@ -6203,7 +6313,6 @@ ++ (const_int 2) ++ (const_int 2) ++ (const_int 2) ++- (const_int 4) ++ (const_int 2) ++ (const_int 2) ++ (const_int 2) ++@@ -6215,7 +6324,6 @@ ++ (const_string "none") ++ (const_string "single") ++ (const_string "single") ++- (const_string "none") ++ (if_then_else (eq_attr "fmovd" "yes") ++ (const_string "single") (const_string "none")) ++ (if_then_else (eq_attr "fmovd" "yes") ++@@ -6230,15 +6338,75 @@ ++ (const_string "none") ++ (const_string "none") ++ (const_string "none") +++ (const_string "none")])]) +++ +++(define_insn_and_split "movsf_ie_rffr" +++ [(set (match_operand:SF 0 "arith_reg_dest" "=f,r,rf") +++ (match_operand:SF 1 "arith_reg_operand" "f,r,fr")) +++ (use (reg:SI FPSCR_MODES_REG)) +++ (clobber (match_scratch:SF 2 "=X,X,y"))] +++ "TARGET_SH2E && sh_lra_p ()" +++ "@ +++ fmov %1,%0 +++ mov %1,%0 +++ #" +++ "reload_completed +++ && (FP_REGISTER_P (REGNO (operands[0])) +++ != FP_REGISTER_P (REGNO (operands[1])))" +++ [(const_int 0)] +++{ +++ emit_insn (gen_movsf_ie_ra (operands[2], operands[1])); +++ emit_insn (gen_movsf_ie_ra (operands[0], operands[2])); +++} +++ [(set_attr "type" "fmove,move,*") +++ (set_attr_alternative "length" +++ [(const_int 2) +++ (const_int 2) +++ (const_int 4)]) +++ (set_attr_alternative "fp_mode" +++ [(if_then_else (eq_attr "fmovd" "yes") +++ (const_string "single") (const_string "none")) ++ (const_string "none") ++ (const_string "none")])]) ++ +++(define_insn "movsf_ie_F_z" +++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") +++ (match_operand:SF 1 "const_double_operand" "F")) +++ (use (reg:SI FPSCR_MODES_REG)) +++ (clobber (reg:SI R0_REG))] +++ "TARGET_SH2E && sh_lra_p ()" +++ "#" +++ [(set_attr "type" "pcfload") +++ (set_attr "length" "4")]) +++ +++(define_insn "movsf_ie_Q_z" +++ [(set (match_operand:SF 0 "fpul_operand" "=y") +++ (match_operand:SF 1 "pc_relative_load_operand" "Q")) +++ (use (reg:SI FPSCR_MODES_REG)) +++ (clobber (reg:SI R0_REG))] +++ "TARGET_SH2E && sh_lra_p ()" +++ "#" +++ [(set_attr "type" "pcfload") +++ (set_attr "length" "4")]) +++ +++(define_insn "movsf_ie_y" +++ [(set (match_operand:SF 0 "arith_reg_dest" "=fr") +++ (match_operand:SF 1 "arith_reg_operand" "rf")) +++ (use (reg:SI FPSCR_MODES_REG)) +++ (clobber (reg:SI FPUL_REG))] +++ "TARGET_SH2E && sh_lra_p ()" +++ "#" +++ [(set_attr "type" "*") +++ (set_attr "length" "4")]) +++ ++ (define_split ++ [(set (match_operand:SF 0 "register_operand" "") ++ (match_operand:SF 1 "register_operand" "")) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (reg:SI FPUL_REG))] ++- "TARGET_SH1" +++ "TARGET_SH1 +++ && ! fpul_operand (operands[0], SFmode) +++ && ! fpul_operand (operands[1], SFmode)" ++ [(parallel [(set (reg:SF FPUL_REG) (match_dup 1)) ++ (use (reg:SI FPSCR_MODES_REG)) ++ (clobber (scratch:SI))]) ++@@ -6247,6 +6415,66 @@ ++ (clobber (scratch:SI))])] ++ "") ++ +++;; The "*movsf_ie_store_mem_index" pattern must come before the +++;; "movsf_ie_store_mem_index" pattern. Matching order is important because +++;; the "hard_reg_r0" operand will match in both, but we want to prioritize +++;; the former. +++(define_insn "*movsf_ie_store_mem_index" +++ [(set (mem:SF (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") +++ (match_operand:SI 1 "hard_reg_r0" "z"))) +++ (match_operand:SF 2 "fp_arith_reg_operand" "f")) +++ (use (reg:SI FPSCR_MODES_REG))] +++ "TARGET_SH2E && sh_lra_p ()" +++ "fmov.s %2,@(%1,%0)" +++ [(set_attr "type" "store")]) +++ +++(define_insn_and_split "movsf_ie_store_mem_index" +++ [(set (mem:SF (plus:SI (match_operand:SI 0 "arith_reg_operand" "%r") +++ (match_operand:SI 1 "arith_reg_operand" "^zr"))) +++ (match_operand:SF 2 "fp_arith_reg_operand" "f")) +++ (use (reg:SI FPSCR_MODES_REG)) +++ (clobber (reg:SI R0_REG))] +++ "TARGET_SH2E && sh_lra_p ()" +++ "#" +++ "&& 1" +++ [(set (match_dup 3) (match_dup 1)) +++ (parallel [(set (mem:SF (plus:SI (match_dup 0) (match_dup 3))) (match_dup 2)) +++ (use (reg:SI FPSCR_MODES_REG))])] +++{ +++ operands[3] = gen_rtx_REG (SImode, R0_REG); +++} +++ [(set_attr "type" "store")]) +++ +++;; The "*movsf_ie_load_mem_index" pattern must come before the +++;; "movsf_ie_load_mem_index" pattern. Matching order is important because +++;; the "hard_reg_r0" operand will match in both, but we want to prioritize +++;; the former. +++(define_insn "*movsf_ie_load_mem_index" +++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") +++ (mem:SF (plus:SI (match_operand:SI 1 "arith_reg_operand" "%r") +++ (match_operand:SI 2 "hard_reg_r0" "z")))) +++ (use (reg:SI FPSCR_MODES_REG))] +++ "TARGET_SH2E && sh_lra_p ()" +++ "fmov.s @(%2,%1),%0" +++ [(set_attr "type" "load")]) +++ +++(define_insn_and_split "movsf_ie_load_mem_index" +++ [(set (match_operand:SF 0 "fp_arith_reg_operand" "=f") +++ (mem:SF (plus:SI (match_operand:SI 1 "arith_reg_operand" "%r") +++ (match_operand:SI 2 "arith_reg_operand" "^zr")))) +++ (use (reg:SI FPSCR_MODES_REG)) +++ (clobber (reg:SI R0_REG))] +++ "TARGET_SH2E && sh_lra_p ()" +++ "#" +++ "&& 1" +++ [(set (match_dup 3) (match_dup 2)) +++ (parallel [(set (match_dup 0) (mem:SF (plus:SI (match_dup 1) (match_dup 3)))) +++ (use (reg:SI FPSCR_MODES_REG))])] +++{ +++ operands[3] = gen_rtx_REG (SImode, R0_REG); +++} +++ [(set_attr "type" "load")]) +++ ++ (define_expand "movsf" ++ [(set (match_operand:SF 0 "general_movdst_operand" "") ++ (match_operand:SF 1 "general_movsrc_operand" ""))] ++@@ -6255,11 +6483,62 @@ ++ prepare_move_operands (operands, SFmode); ++ if (TARGET_SH2E) ++ { ++- if (lra_in_progress) +++ if (sh_lra_p ()) ++ { ++ if (GET_CODE (operands[0]) == SCRATCH) ++ DONE; ++- emit_insn (gen_movsf_ie_ra (operands[0], operands[1])); +++ if (! lra_in_progress && ! reload_completed +++ && fp_arith_reg_operand (operands[1], SFmode) +++ && satisfies_constraint_Sid (operands[0])) +++ { +++ rtx adr = XEXP (operands[0], 0); +++ rtx base = XEXP (adr, 0); +++ rtx idx = XEXP (adr, 1); +++ emit_insn (gen_movsf_ie_store_mem_index (base, idx, operands[1])); +++ DONE; +++ } +++ if (! lra_in_progress && ! reload_completed +++ && fp_arith_reg_operand (operands[0], SFmode) +++ && satisfies_constraint_Sid (operands[1])) +++ { +++ rtx adr = XEXP (operands[1], 0); +++ rtx base = XEXP (adr, 0); +++ rtx idx = XEXP (adr, 1); +++ emit_insn (gen_movsf_ie_load_mem_index (operands[0], base, idx)); +++ DONE; +++ } +++ /* reg from/to multiword subreg may be splitted to several reg from/to +++ subreg of SImode by subreg1 pass. This confuses our splitted +++ movsf logic for LRA and will end up in bad code or ICE. Use a special +++ pattern so that LRA can optimize this case. */ +++ if (! lra_in_progress && ! reload_completed +++ && sh_movsf_ie_subreg_multiword_p (operands[0], operands[1])) +++ { +++ emit_insn (gen_movsf_ie_rffr (operands[0], operands[1])); +++ DONE; +++ } +++ if (GET_CODE (operands[1]) == CONST_DOUBLE +++ && ! satisfies_constraint_G (operands[1]) +++ && ! satisfies_constraint_H (operands[1]) +++ && REG_P (operands[0])) +++ { +++ if (lra_in_progress) +++ emit_insn (gen_movsf_ie (operands[0], operands[1])); +++ else +++ emit_insn (gen_movsf_ie_F_z (operands[0], operands[1])); +++ } +++ else if (REG_P (operands[0]) && REGNO (operands[0]) == FPUL_REG +++ && satisfies_constraint_Q (operands[1])) +++ emit_insn (gen_movsf_ie_Q_z (operands[0], operands[1])); +++ else if (sh_movsf_ie_y_split_p (operands[0], operands[1])) +++ { +++ if (lra_in_progress) +++ emit_insn (gen_movsf_ie (operands[0], operands[1])); +++ else +++ emit_insn (gen_movsf_ie_y (operands[0], operands[1])); +++ } +++ else +++ emit_insn (gen_movsf_ie_ra (operands[0], operands[1])); ++ DONE; ++ } ++ ++@@ -8951,17 +9230,20 @@ ++ (set_attr "needs_delay_slot" "yes")]) ++ ++ (define_insn "block_lump_real" ++- [(parallel [(set (mem:BLK (reg:SI R4_REG)) ++- (mem:BLK (reg:SI R5_REG))) ++- (use (match_operand:SI 0 "arith_reg_operand" "r,r")) ++- (use (match_operand 1 "" "Z,Ccl")) ++- (use (reg:SI R6_REG)) ++- (clobber (reg:SI PR_REG)) ++- (clobber (reg:SI T_REG)) ++- (clobber (reg:SI R4_REG)) ++- (clobber (reg:SI R5_REG)) ++- (clobber (reg:SI R6_REG)) ++- (clobber (reg:SI R0_REG))])] +++ [(set (mem:BLK (match_operand:SI 2 "hard_reg_r4" "=r,r")) +++ (mem:BLK (match_operand:SI 3 "hard_reg_r5" "=r,r"))) +++ (use (match_operand:SI 0 "arith_reg_operand" "r,r")) +++ (use (match_operand 1 "" "Z,Ccl")) +++ (use (match_operand:SI 4 "hard_reg_r6" "=r,r")) +++ (use (reg:SI R4_REG)) +++ (use (reg:SI R5_REG)) +++ (use (reg:SI R6_REG)) +++ (clobber (match_dup 2)) +++ (clobber (match_dup 3)) +++ (clobber (match_dup 4)) +++ (clobber (reg:SI PR_REG)) +++ (clobber (reg:SI T_REG)) +++ (clobber (reg:SI R0_REG))] ++ "TARGET_SH1 && ! TARGET_HARD_SH4" ++ "@ ++ jsr @%0%# ++@@ -8986,20 +9268,23 @@ ++ (set_attr "needs_delay_slot" "yes")]) ++ ++ (define_insn "block_lump_real_i4" ++- [(parallel [(set (mem:BLK (reg:SI R4_REG)) ++- (mem:BLK (reg:SI R5_REG))) ++- (use (match_operand:SI 0 "arith_reg_operand" "r,r")) ++- (use (match_operand 1 "" "Z,Ccl")) ++- (use (reg:SI R6_REG)) ++- (clobber (reg:SI PR_REG)) ++- (clobber (reg:SI T_REG)) ++- (clobber (reg:SI R4_REG)) ++- (clobber (reg:SI R5_REG)) ++- (clobber (reg:SI R6_REG)) ++- (clobber (reg:SI R0_REG)) ++- (clobber (reg:SI R1_REG)) ++- (clobber (reg:SI R2_REG)) ++- (clobber (reg:SI R3_REG))])] +++ [(set (mem:BLK (match_operand:SI 2 "hard_reg_r4" "=r,r")) +++ (mem:BLK (match_operand:SI 3 "hard_reg_r5" "=r,r"))) +++ (use (match_operand:SI 0 "arith_reg_operand" "r,r")) +++ (use (match_operand 1 "" "Z,Ccl")) +++ (use (match_operand:SI 4 "hard_reg_r6" "=r,r")) +++ (use (reg:SI R4_REG)) +++ (use (reg:SI R5_REG)) +++ (use (reg:SI R6_REG)) +++ (clobber (match_dup 2)) +++ (clobber (match_dup 3)) +++ (clobber (match_dup 4)) +++ (clobber (reg:SI PR_REG)) +++ (clobber (reg:SI T_REG)) +++ (clobber (reg:SI R0_REG)) +++ (clobber (reg:SI R1_REG)) +++ (clobber (reg:SI R2_REG)) +++ (clobber (reg:SI R3_REG))] ++ "TARGET_HARD_SH4" ++ "@ ++ jsr @%0%# ++diff --git a/src/gcc/config/sh/sh.opt b/src/gcc/config/sh/sh.opt ++index beaf830037b..ce37746428e 100644 ++--- a/src/gcc/config/sh/sh.opt +++++ b/src/gcc/config/sh/sh.opt ++@@ -299,5 +299,5 @@ Target Var(TARGET_FSRRA) ++ Enable the use of the fsrra instruction. ++ ++ mlra ++-Target Var(sh_lra_flag) Init(0) Save +++Target Var(sh_lra_flag) Init(1) Save ++ Use LRA instead of reload (transitional). ++diff --git a/src/gcc/config/sh/sync.md b/src/gcc/config/sh/sync.md ++index e56c3e0becc..71b2360bceb 100644 ++--- a/src/gcc/config/sh/sync.md +++++ b/src/gcc/config/sh/sync.md ++@@ -217,7 +217,9 @@ ++ (and (match_test "mode == SImode") ++ (and (match_test "!TARGET_ATOMIC_HARD_LLCS") ++ (match_test "!TARGET_SH4A || TARGET_ATOMIC_STRICT")) ++- (match_operand 0 "short_displacement_mem_operand"))))) +++ (match_operand 0 "short_displacement_mem_operand"))) +++ (ior (match_test "!TARGET_ATOMIC_HARD_LLCS") +++ (not (match_operand 0 "gbr_address_mem"))))) ++ ++ (define_expand "atomic_compare_and_swap" ++ [(match_operand:SI 0 "arith_reg_dest") ;; bool success output ++@@ -715,7 +717,9 @@ ++ && TARGET_SH4A && !TARGET_ATOMIC_STRICT ++ && mode != SImode")) ++ (ior (match_operand 0 "short_displacement_mem_operand") ++- (match_operand 0 "gbr_address_mem")))))) +++ (match_operand 0 "gbr_address_mem")))) +++ (ior (match_test "!TARGET_ATOMIC_HARD_LLCS") +++ (not (match_operand 0 "gbr_address_mem"))))) ++ ++ (define_expand "atomic_fetch_" ++ [(set (match_operand:QIHISI 0 "arith_reg_dest") ++diff --git a/src/gcc/lra-constraints.cc b/src/gcc/lra-constraints.cc ++index 7dbc7fe1e00..832db82426f 100644 ++--- a/src/gcc/lra-constraints.cc +++++ b/src/gcc/lra-constraints.cc ++@@ -552,7 +552,11 @@ get_equiv (rtx x) ++ return res; ++ } ++ if ((res = ira_reg_equiv[regno].constant) != NULL_RTX) ++- return res; +++ { +++ if (targetm.cannot_substitute_const_equiv_p (res)) +++ return x; +++ return res; +++ } ++ if ((res = ira_reg_equiv[regno].invariant) != NULL_RTX) ++ return res; ++ gcc_unreachable (); ++@@ -1223,7 +1227,9 @@ match_reload (signed char out, signed char *ins, signed char *outs, ++ return; ++ /* See a comment for the input operand above. */ ++ narrow_reload_pseudo_class (out_rtx, goal_class); ++- if (find_reg_note (curr_insn, REG_UNUSED, out_rtx) == NULL_RTX) +++ if (find_reg_note (curr_insn, REG_UNUSED, out_rtx) == NULL_RTX +++ && !ira_former_scratch_p (REGNO (SUBREG_P (out_rtx) +++ ? SUBREG_REG (out_rtx) : out_rtx))) ++ { ++ reg = SUBREG_P (out_rtx) ? SUBREG_REG (out_rtx) : out_rtx; ++ start_sequence (); ++@@ -2972,7 +2978,8 @@ process_alt_operands (int only_alternative) ++ objects with a REG_UNUSED note. */ ++ if ((curr_static_id->operand[nop].type != OP_IN ++ && no_output_reloads_p ++- && ! find_reg_note (curr_insn, REG_UNUSED, op)) +++ && ! find_reg_note (curr_insn, REG_UNUSED, op) +++ && ! ira_former_scratch_p (REGNO (operand_reg[nop]))) ++ || (curr_static_id->operand[nop].type != OP_OUT ++ && no_input_reloads_p && ! const_to_mem) ++ || (this_alternative_matches >= 0 ++@@ -2982,7 +2989,9 @@ process_alt_operands (int only_alternative) ++ [this_alternative_matches].type != OP_IN) ++ && ! find_reg_note (curr_insn, REG_UNUSED, ++ no_subreg_reg_operand ++- [this_alternative_matches]))))) +++ [this_alternative_matches]) +++ && ! (ira_former_scratch_p +++ (REGNO (operand_reg[nop]))))))) ++ { ++ if (lra_dump_file != NULL) ++ fprintf ++@@ -4820,7 +4829,8 @@ curr_insn_transform (bool check_only_p) ++ if (type != OP_IN ++ && find_reg_note (curr_insn, REG_UNUSED, old) == NULL_RTX ++ /* OLD can be an equivalent constant here. */ ++- && !CONSTANT_P (old)) +++ && !CONSTANT_P (old) +++ && !ira_former_scratch_p (REGNO (old))) ++ { ++ start_sequence (); ++ lra_emit_move (type == OP_INOUT ? copy_rtx (old) : old, new_reg); ++diff --git a/src/gcc/target.def b/src/gcc/target.def ++index 6c7cdc8126b..f69f1db7532 100644 ++--- a/src/gcc/target.def +++++ b/src/gcc/target.def ++@@ -6167,9 +6167,24 @@ DEFHOOK ++ substitute safely pseudos with equivalent memory values during\n\ ++ register allocation.\n\ ++ The default version of this target hook returns @code{false}.\n\ ++-On most machines, this default should be used. For generally\n\ ++-machines with non orthogonal register usage for addressing, such\n\ ++-as SH, this hook can be used to avoid excessive spilling.", +++On most machines, this default should be used. For machines with\n\ +++non-orthogonal register usage for addressing, such as SH,\n\ +++this hook can be used to avoid excessive spilling.", +++ bool, (rtx subst), +++ hook_bool_rtx_false) +++ +++/* This target hook allows the backend to avoid unsafe substitution +++ during register allocation. */ +++DEFHOOK +++(cannot_substitute_const_equiv_p, +++ "A target hook which returns @code{true} if @var{subst} can't\n\ +++substitute safely pseudos with equivalent constant values during\n\ +++register allocation.\n\ +++The default version of this target hook returns @code{false}.\n\ +++On most machines, this default should be used. For machines with\n\ +++special constant load instructions that have additional constraints\n\ +++or being dependent on mode-switching, such as SH, this hook can be\n\ +++used to avoid unsafe substitution.", ++ bool, (rtx subst), ++ hook_bool_rtx_false) ++ ++diff --git a/src/gcc/testsuite/g++.target/sh/sh.exp b/src/gcc/testsuite/g++.target/sh/sh.exp ++new file mode 100644 ++index 00000000000..45c5b373857 ++--- /dev/null +++++ b/src/gcc/testsuite/g++.target/sh/sh.exp ++@@ -0,0 +1,297 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# GCC testsuite that uses the `dg.exp' driver. +++ +++# Exit immediately if this isn't an SH target. +++if ![istarget sh*-*-*] then { +++ return +++} +++ +++# Load support procs. +++load_lib g++-dg.exp +++ +++# Return 1 if target is SH2A +++proc check_effective_target_sh2a { } { +++ return [check_no_compiler_messages sh2a object { +++ #ifndef __SH2A__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target is SH1 +++proc check_effective_target_sh1 { } { +++ return [check_no_compiler_messages sh1 object { +++ #ifndef __SH1__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target is SH4A +++proc check_effective_target_sh4a { } { +++ return [check_no_compiler_messages sh4a object { +++ #ifndef __SH4A__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target is big endian +++proc check_effective_target_big_endian { } { +++ return [check_no_compiler_messages big_endian object { +++ #if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target is little endian +++proc check_effective_target_little_endian { } { +++ return [check_no_compiler_messages little_endian object { +++ #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has any FPU (single or double precision) +++proc check_effective_target_any_fpu { } { +++ return [check_no_compiler_messages any_fpu object { +++ #ifndef __SH_FPU_ANY__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has a double precision FPU which is allowed to be +++# used by the compiler as such. +++proc check_effective_target_double_fpu { } { +++ return [check_no_compiler_messages double_fpu object { +++ #ifndef __SH_FPU_DOUBLE__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has a double precision FPU but it is only being used +++# in single precision mode by the compiler +++proc check_effective_target_use_single_only_fpu { } { +++ return [check_no_compiler_messages use_single_only_fpu object { +++ #if !(defined (__SH2A_SINGLE_ONLY__) \ +++ || defined (__SH4_SINGLE_ONLY__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has an FPU and the default mode is single +++proc check_effective_target_default_single_fpu { } { +++ return [check_no_compiler_messages default_single_fpu object { +++ #if !(defined (__SH2E__) || defined (__SH3E__) \ +++ || defined (__SH2A_SINGLE__) \ +++ || defined (__SH2A_SINGLE_ONLY__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has no FPU +++proc check_effective_target_no_fpu { } { +++ return [check_no_compiler_messages no_fpu object { +++ #ifdef __SH_FPU_ANY__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++ +++# Return 1 if the target has XF regs +++proc check_effective_target_has_xf_regs { } { +++ return [check_no_compiler_messages has_xf_regs object { +++ #if !(defined (__SH_FPU_ANY__) \ +++ && (defined (__SH4__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__))) +++ #error "" +++ #endif +++ } ""] +++} +++ +++ +++# Return 1 if the target can do the fsca insn +++proc check_effective_target_has_fsca { } { +++ return [check_no_compiler_messages has_fsca object { +++ #if !(defined (__SH_FPU_ANY__) \ +++ && (defined (__SH4__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__))) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target can do the fsrra insn +++proc check_effective_target_has_fsrra { } { +++ return [check_no_compiler_messages has_fsrra object { +++ #if !(defined (__SH_FPU_ANY__) \ +++ && (defined (__SH4__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__))) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target can do the fpchg insn +++proc check_effective_target_has_fpchg { } { +++ return [check_no_compiler_messages has_fpchg object { +++ #if !(defined (__SH4A__) && defined (__SH_FPU_ANY__) \ +++ && !defined (__SH4_SINGLE_ONLY__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target can do dynamic shifts +++proc check_effective_target_has_dyn_shift { } { +++ return [check_no_compiler_messages has_dyn_shift object { +++ #if !(defined (__SH3__) \ +++ || defined (__SH3E__) \ +++ || defined (__SH2A__) \ +++ || defined (__SH4__) \ +++ || defined (__SH4_NOFPU__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the mfmovd option is enabled +++proc check_effective_target_fmovd_enabled { } { +++ return [check_no_compiler_messages fmovd_enabled object { +++ #ifndef __FMOVD_ENABLED__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target supports privileged mode +++proc check_effective_target_has_privileged { } { +++ return [check_no_compiler_messages has_privileged object { +++ #if !(defined (__SH3__) \ +++ || defined (__SH3E__) \ +++ || defined (__SH4__) \ +++ || defined (__SH4_NOFPU__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target supports the prefetch insn +++proc check_effective_target_has_pref { } { +++ return [check_no_compiler_messages has_pref object { +++ #if !(defined (__SH3__) \ +++ || defined (__SH3E__) \ +++ || defined (__SH4__) \ +++ || defined (__SH4_NOFPU__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target does banked r0..r7 regs type of ISRs +++proc check_effective_target_banked_r0r7_isr { } { +++ return [check_no_compiler_messages banked_r0r7_isr object { +++ #if !(defined (__SH3__) || defined (__SH3E__) \ +++ || defined (__SH4__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4_NOFPU__) \ +++ || defined (__SH4A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target does stack only type of ISRs +++proc check_effective_target_stack_save_isr { } { +++ return [check_no_compiler_messages stack_save_isr object { +++ #if !(defined (__SH1__) \ +++ || defined (__SH2__) \ +++ || defined (__SH2E__) \ +++ || defined (__SH2A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target supports atomic-model=soft-gusa +++proc check_effective_target_atomic_model_soft_gusa_available { } { +++ return [check_no_compiler_messages atomic_model_soft_gusa_available object { +++ int x = 0; +++ } "-matomic-model=soft-gusa"] +++} +++ +++# Return 1 if target supports atomic-model=soft-tcb +++proc check_effective_target_atomic_model_soft_tcb_available { } { +++ return [check_no_compiler_messages atomic_model_soft_tcb_available object { +++ int x = 0; +++ } "-matomic-model=soft-tcb,gbr-offset=0"] +++} +++ +++# Return 1 if target supports atomic-model=soft-imask +++proc check_effective_target_atomic_model_soft_imask_available { } { +++ return [check_no_compiler_messages atomic_model_soft_imask_available object { +++ int x = 0; +++ } "-matomic-model=soft-imask -mno-usermode"] +++} +++ +++# Return 1 if target supports atomic-model=hard-llcs +++proc check_effective_target_atomic_model_hard_llcs_available { } { +++ return [check_no_compiler_messages atomic_model_hard_llcs_available object { +++ int x = 0; +++ } "-matomic-model=hard-llcs"] +++} +++ +++# If a testcase doesn't have special options, use these. +++global DEFAULT_CXXFLAGS +++if ![info exists DEFAULT_CXXFLAGS] then { +++ set DEFAULT_CXXFLAGS " -pedantic-errors" +++} +++ +++# Initialize `dg'. +++dg-init +++ +++# Main loop. +++dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS +++ +++# All done. +++dg-finish ++diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C ++new file mode 100644 ++index 00000000000..cc31dbcc443 ++--- /dev/null +++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c311.C ++@@ -0,0 +1,73 @@ +++/* { dg-additional-options "-mlra -fpic" } */ +++/* { dg-do compile } */ +++ +++ +++typedef signed int int32_t; +++typedef signed long long int int64_t; +++static constexpr int32_t SK_MaxS32 = 214748364;; +++static constexpr int32_t SK_MinS32 = -SK_MaxS32; +++ +++extern double fabs (double __x) noexcept (true) __attribute__ ((__const__)); +++ +++namespace std __attribute__ ((__visibility__ ("default"))) +++{ +++using ::fabs; +++ +++template [[__nodiscard__]] constexpr inline const _Tp& min(const _Tp& __a, const _Tp& __b) +++{ +++ if (__b < __a) return __b; +++ return __a; +++} +++ +++template [[__nodiscard__]] constexpr inline const _Tp& max(const _Tp& __a, const _Tp& __b) +++{ +++ return __a; +++} +++ +++} +++ +++ +++static constexpr int32_t Sk64_pin_to_s32(int64_t x) +++{ +++ return x < SK_MinS32 ? SK_MinS32 : (x > SK_MaxS32 ? SK_MaxS32 : (int32_t)x); +++} +++ +++static constexpr int32_t Sk32_sat_sub(int32_t a, int32_t b) +++{ +++ return Sk64_pin_to_s32((int64_t)a - (int64_t)b); +++}; +++ +++struct SkPoint +++{ +++ float fX; +++ float fY; +++}; +++ +++typedef float SkScalar; +++static inline bool SkScalarNearlyEqual(SkScalar x, SkScalar y, SkScalar tolerance = (1.0f / (1 << 12))) +++{ +++ return std::fabs(x-y) <= tolerance; +++} +++ +++class SkCubicMap +++{ +++public: +++ SkCubicMap(SkPoint p1, SkPoint p2); +++private: +++ enum Type +++ { +++ kLine_Type, kCubeRoot_Type, kSolver_Type, +++ }; +++ +++ Type fType; +++}; +++ +++SkCubicMap::SkCubicMap(SkPoint p1, SkPoint p2) +++{ +++ p1.fX = std::min(std::max(p1.fX, 0.0f), 1.0f); +++ p2.fX = std::min(std::max(p2.fX, 0.0f), 1.0f); +++ if (SkScalarNearlyEqual(p1.fX, p1.fY) && SkScalarNearlyEqual(p2.fX, p2.fY)) +++ { +++ fType = kLine_Type; +++ } +++} ++diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C ++new file mode 100644 ++index 00000000000..afab629cdf2 ++--- /dev/null +++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c333.C ++@@ -0,0 +1,259 @@ +++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ +++/* { dg-do compile } */ +++ +++typedef unsigned int size_t; +++ +++extern "C++" +++{ +++ +++namespace std __attribute__ ((__visibility__ ("default"))) +++{ +++ +++template struct integral_constant +++{ +++ static constexpr _Tp value = __v; +++ using value_type = _Tp; +++ constexpr operator value_type() const noexcept { return value; } +++ +++ constexpr value_type operator()() const noexcept { } +++ }; +++ +++template using __bool_constant = integral_constant; +++using true_type = __bool_constant; +++using false_type = __bool_constant; +++ +++template struct enable_if { }; +++ +++template struct enable_if { using type = _Tp; }; +++ +++template using __enable_if_t = typename enable_if<_Cond, _Tp>::type; +++template struct __conditional { template using type = _Tp; }; +++template using __conditional_t = typename __conditional<_Cond>::template type<_If, _Else>; +++template struct __type_identity { }; +++ +++namespace __detail +++{ +++template using __first_t = _Tp; +++template auto __and_fn(int) -> __first_t...>; +++} +++ +++template struct __and_ : decltype(__detail::__and_fn<_Bn...>(0)) { }; +++template struct __not_ : __bool_constant { }; +++ +++template constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) { return { }; } +++template struct is_pointer : public __bool_constant<__is_pointer(_Tp)> { }; +++template struct is_empty : public __bool_constant<__is_empty(_Tp)> { }; +++template using __is_constructible_impl = __bool_constant<__is_constructible(_Tp, _Args...)>; +++ +++template struct is_default_constructible : public __is_constructible_impl<_Tp> { }; +++template using __add_lval_ref_t = __add_lvalue_reference(_Tp); +++template using __add_rval_ref_t = __add_rvalue_reference(_Tp); +++template struct is_move_constructible : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> +++{ +++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ } +++), "template argument must be a complete class or an unbounded array"); +++}; +++ +++template using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; +++template struct is_move_assignable : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_rval_ref_t<_Tp>> +++{ +++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp> {} +++), "template argument must be a complete class or an unbounded array"); +++ +++}; +++ +++template struct tuple_element; +++template using __tuple_element_t = typename tuple_element<__i, _Tp>::type; +++template struct _Nth_type +++{ +++ using type = __type_pack_element<_Np, _Types...>; +++}; +++ +++template class tuple; +++template constexpr const __tuple_element_t<__i, tuple<_Elements...>>& get(const tuple<_Elements...>& __t) noexcept; +++} +++} +++ +++inline constexpr float SK_FloatSqrt2 = 1.41421356f; +++ +++struct SkPoint +++{ +++ float fY; +++}; +++ +++extern void sk_free(void*); +++enum +++{ +++ SK_MALLOC_ZERO_INITIALIZE = 1 << 0, SK_MALLOC_THROW = 1 << 1, +++}; +++ +++extern void* sk_malloc_flags(size_t size, unsigned flags); +++ +++static inline void* sk_calloc_throw(size_t size) +++{ +++ return sk_malloc_flags(size, SK_MALLOC_THROW | SK_MALLOC_ZERO_INITIALIZE); +++} +++ +++typedef struct +++{ +++ union +++ { +++ } __value; +++ +++} __mbstate_t; +++ +++namespace std __attribute__ ((__visibility__ ("default"))) +++{ +++template struct __is_empty_non_tuple : is_empty<_Tp> { }; +++ +++template using __empty_not_final = __conditional_t<__is_final(_Tp), false_type, __is_empty_non_tuple<_Tp>>; +++template::value> struct _Head_base; +++template struct _Head_base<_Idx, _Head, false> { }; +++template struct _Tuple_impl; +++template struct _Tuple_impl<_Idx, _Head, _Tail...> : public _Tuple_impl<_Idx + 1, _Tail...>, private _Head_base<_Idx, _Head> { }; +++template struct _Tuple_impl<_Idx, _Head> : private _Head_base<_Idx, _Head> { }; +++template class tuple : public _Tuple_impl<0, _Elements...> { }; +++template struct tuple_element<__i, tuple<_Types...>> +++{ +++ using type = typename _Nth_type<__i, _Types...>::type; +++}; +++ +++template struct default_delete +++{ +++}; +++ +++template class __uniq_ptr_impl +++{ +++ template struct _Ptr { using type = _Up*; }; +++ +++public: +++ using _DeleterConstraint = enable_if< __and_<__not_>, is_default_constructible<_Dp>>::value>; +++ using pointer = typename _Ptr<_Tp, _Dp>::type; +++ constexpr __uniq_ptr_impl(pointer __p) : _M_t() { } +++ constexpr pointer _M_ptr() const noexcept { return std::get<0>(_M_t); } +++private: +++ tuple _M_t; +++}; +++ +++template ::value, bool = is_move_assignable<_Dp>::value> struct __uniq_ptr_data : __uniq_ptr_impl<_Tp, _Dp>{ }; +++ +++template > class unique_ptr +++{ +++ template using _DeleterConstraint = typename __uniq_ptr_impl<_Tp, _Up>::_DeleterConstraint::type; +++ __uniq_ptr_data<_Tp, _Dp> _M_t; +++public: +++ using pointer = typename __uniq_ptr_impl<_Tp, _Dp>::pointer; +++ template> constexpr explicit unique_ptr(pointer __p) noexcept : _M_t(__p) { } +++ +++ constexpr pointer get() const noexcept { return _M_t._M_ptr(); } +++}; +++ +++} +++ +++template struct SkOverloadedFunctionObject +++{ +++}; +++ +++namespace skia_private +++{ +++ using UniqueVoidPtr = std::unique_ptr>; +++} +++ +++class SkNoncopyable +++{ +++}; +++ +++template class SkAutoSMalloc : SkNoncopyable +++{ +++ public: SkAutoSMalloc() { } +++ +++ explicit SkAutoSMalloc(size_t size) { } +++ +++ void* get() const { return fPtr; } +++ +++ void* fPtr; +++}; +++ +++ class SkPointPriv { +++ public: enum Side { +++ kLeft_Side = -1, kOn_Side = 0, kRight_Side = 1, }; +++ static bool SetLengthFast(SkPoint* pt, float length); +++ }; +++ using namespace skia_private; +++ struct DFData { +++ float fAlpha; +++ SkPoint fDistVector; +++ }; +++ enum NeighborFlags { +++ kLeft_NeighborFlag = 0x01, kRight_NeighborFlag = 0x02, kTopLeft_NeighborFlag = 0x04, kTop_NeighborFlag = 0x08, kTopRight_NeighborFlag = 0x10, kBottomLeft_NeighborFlag = 0x20, kBottom_NeighborFlag = 0x40, kBottomRight_NeighborFlag = 0x80, kAll_NeighborFlags = 0xff, kNeighborFlagCount = 8 }; +++ static void init_glyph_data(DFData* data, unsigned char* edges, const unsigned char* image, int dataWidth, int dataHeight, int imageWidth, int imageHeight, int pad) { +++ for (int j = 0; +++ j < imageHeight; +++ ++j) { +++ for (int i = 0; +++ i < imageWidth; +++ ++i) { +++ if (255 == *image) { +++ } +++ } +++ } +++ } +++ +++static void init_distances(DFData* data, unsigned char* edges, int width, int height) +++{ +++ DFData* currData = data; +++ DFData* prevData = data - width; +++ DFData* nextData = data + width; +++ for (int j = 0; j < height; ++j) +++ { +++ for (int i = 0;i < width;++i) +++ { +++ if (*edges) +++ { +++ SkPoint currGrad; +++ currGrad.fY = (nextData-1)->fAlpha - (prevData-1)->fAlpha + SK_FloatSqrt2*nextData->fAlpha - SK_FloatSqrt2*prevData->fAlpha + (nextData+1)->fAlpha - (prevData+1)->fAlpha; +++ SkPointPriv::SetLengthFast(&currGrad, 1.0f); +++ currData->fDistVector.fY = 1000.f; +++ } +++ ++currData; +++ ++prevData; +++ ++nextData; +++ } +++ } +++} +++ +++static void B1(DFData* curr, int width) +++{ +++} +++ +++static bool generate_distance_field_from_image(unsigned char* distanceField, const unsigned char* copyPtr, int width, int height) +++{ +++ int pad = 4 + 1; +++ int dataWidth = width + 2*pad; +++ int dataHeight = height + 2*pad; +++ UniqueVoidPtr storage(sk_calloc_throw(dataWidth*dataHeight*(sizeof(DFData) + 1))); +++ DFData* dataPtr = (DFData*)storage.get(); +++ unsigned char* edgePtr = (unsigned char*)storage.get() + dataWidth*dataHeight*sizeof(DFData); +++ init_distances(dataPtr, edgePtr, dataWidth, dataHeight); +++ unsigned char* currEdge = edgePtr+dataWidth+1; +++ for (int j = 1; j < dataHeight-1; ++j) +++ { +++ for (int i = 1; i < dataWidth-1; ++i) +++ { +++ if (!*currEdge) +++ { +++ } +++ } +++ } +++ +++ // return true; +++ // ICE triggered only without return statement +++} +++ +++ +++bool SkGenerateDistanceFieldFromA8Image(unsigned char* distanceField, const unsigned char* image, int width, int height, size_t rowBytes) +++{ +++ SkAutoSMalloc<1024> copyStorage((width+2)*(height+2)*sizeof(char)); +++ unsigned char* copyPtr = (unsigned char*) copyStorage.get(); +++ return generate_distance_field_from_image(distanceField, copyPtr, width, height); +++} ++diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C ++new file mode 100644 ++index 00000000000..d1f30cb93c4 ++--- /dev/null +++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c373.C ++@@ -0,0 +1,612 @@ +++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ +++/* { dg-do compile } */ +++ +++ namespace std { +++ typedef unsigned int size_t; +++ } +++ namespace std { +++ __attribute__((__always_inline__)) constexpr inline bool __is_constant_evaluated() noexcept { +++ return __builtin_is_constant_evaluated(); +++ } +++ } +++ typedef unsigned int size_t; +++ extern "C" { +++ typedef struct { +++ } +++ lldiv_t; +++ extern "C" { +++ typedef unsigned char __uint8_t; +++ typedef unsigned int __uint32_t; +++ typedef union { +++ struct { +++ } +++ __value32; +++ } +++ __atomic_wide_counter; +++ } +++ } +++ extern "C++" { +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ } +++ } +++ extern "C++" { +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ template struct integral_constant { +++ static constexpr _Tp value = __v; +++ using value_type = _Tp; +++ constexpr operator value_type() const noexcept { +++ } +++ }; +++ template using __bool_constant = integral_constant; +++ using true_type = __bool_constant; +++ using false_type = __bool_constant; +++ template struct enable_if { +++ }; +++ template struct enable_if { +++ using type = _Tp; +++ }; +++ template struct __conditional { +++ }; +++ template using __conditional_t = typename __conditional<_Cond>::template type<_If, _Else>; +++ template struct __type_identity { +++ }; +++ namespace __detail { +++ template auto __and_fn(...) -> false_type; +++ } +++ template struct __and_ : decltype(__detail::__and_fn<_Bn...>(0)) { +++ }; +++ template struct remove_cv; +++ template constexpr true_type __is_complete_or_unbounded(__type_identity<_Tp>) { +++ return { +++}; +++ } +++ template struct is_void : public false_type { +++ }; +++ template struct is_member_object_pointer : public __bool_constant<__is_member_object_pointer(_Tp)> { +++ }; +++ template struct is_member_function_pointer : public __bool_constant<__is_member_function_pointer(_Tp)> { +++ }; +++ template struct is_empty : public __bool_constant<__is_empty(_Tp)> { +++ }; +++ template _Tp __declval(long); +++ template auto declval() noexcept -> decltype(__declval<_Tp>(0)); +++ template using __is_constructible_impl = __bool_constant<__is_constructible(_Tp, _Args...)>; +++ template using __add_lval_ref_t = __add_lvalue_reference(_Tp); +++ template struct is_copy_constructible : public __is_constructible_impl<_Tp, __add_lval_ref_t> { +++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ +++} +++), "template argument must be a complete class or an unbounded array"); +++ }; +++ template using __add_rval_ref_t = __add_rvalue_reference(_Tp); +++ template struct is_move_constructible : public __is_constructible_impl<_Tp, __add_rval_ref_t<_Tp>> { +++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ +++} +++), "template argument must be a complete class or an unbounded array"); +++ }; +++ template using __is_assignable_impl = __bool_constant<__is_assignable(_Tp, _Up)>; +++ template struct is_copy_assignable : public __is_assignable_impl<__add_lval_ref_t<_Tp>, __add_lval_ref_t> { +++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Tp>{ +++} +++), "template argument must be a complete class or an unbounded array"); +++ }; +++ template struct is_same : public __bool_constant<__is_same(_Tp, _Up)> { +++ }; +++ template struct remove_const { +++ }; +++ template struct add_const { +++ }; +++ template struct remove_reference { +++ }; +++ template using remove_reference_t = typename remove_reference<_Tp>::type; +++ template struct add_pointer { +++ }; +++ template using __remove_cvref_t = typename remove_cv::type>::type; +++ template struct conditional { +++ }; +++ struct __failure_type { +++ }; +++ struct __invoke_memfun_ref { +++ }; +++ struct __invoke_other { +++ }; +++ template> struct __inv_unwrap { +++ }; +++ template struct __result_of_impl { +++ }; +++ template struct __invoke_result : public __result_of_impl< is_member_object_pointer< typename remove_reference<_Functor>::type >::value, is_member_function_pointer< typename remove_reference<_Functor>::type >::value, _Functor, _ArgTypes... >::type { +++ }; +++ template::value, typename = void> struct __is_invocable_impl : false_type { +++ }; +++ template constexpr bool __call_is_nt(__invoke_memfun_ref) { +++ using _Up = typename __inv_unwrap<_Tp>::type; +++ return noexcept((std::declval<_Up>().*std::declval<_Fn>())( std::declval<_Args>()...)); +++ } +++ template struct __call_is_nothrow : __bool_constant< std::__call_is_nt<_Fn, _Args...>(typename _Result::__invoke_type{ +++} +++ ) > { +++ }; +++ template struct is_invocable_r : __is_invocable_impl<__invoke_result<_Fn, _ArgTypes...>, _Ret>::type { +++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Fn>{ +++} +++), "_Fn must be a complete class or an unbounded array"); +++ static_assert((std::__is_complete_or_unbounded( __type_identity<_ArgTypes>{ +++} +++) && ...), "each argument type must be a complete class or an unbounded array"); +++ static_assert(std::__is_complete_or_unbounded(__type_identity<_Ret>{ +++} +++), "_Ret must be a complete class or an unbounded array"); +++ }; +++ template inline constexpr bool is_lvalue_reference_v = false; +++ template inline constexpr bool is_enum_v = __is_enum(_Tp); +++ template inline constexpr bool is_union_v = __is_union(_Tp); +++ template inline constexpr bool is_class_v = __is_class(_Tp); +++ template inline constexpr bool is_trivial_v = __is_trivial(_Tp); +++ template inline constexpr bool is_standard_layout_v = __is_standard_layout(_Tp); +++ template inline constexpr bool is_constructible_v = __is_constructible(_Tp, _Args...); +++ template inline constexpr bool is_same_v = __is_same(_Tp, _Up); +++ template inline constexpr bool is_base_of_v = __is_base_of(_Base, _Derived); +++ template inline constexpr bool is_convertible_v = __is_convertible(_From, _To); +++ template struct common_reference; +++ template using common_reference_t = typename common_reference<_Tp...>::type; +++ } +++ } +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ template inline constexpr _Tp* __addressof(_Tp& __r) noexcept { +++ } +++ template [[__nodiscard__]] constexpr typename std::remove_reference<_Tp>::type&& move(_Tp&& __t) noexcept { +++ } +++ namespace __detail { +++ template concept __same_as = std::is_same_v<_Tp, _Up>; +++ } +++ template concept same_as = __detail::__same_as<_Tp, _Up> && __detail::__same_as<_Up, _Tp>; +++ template concept convertible_to = is_convertible_v<_From, _To> && requires { +++ static_cast<_To>(std::declval<_From>()); +++ }; +++ template concept common_reference_with = same_as, common_reference_t<_Up, _Tp>> && convertible_to<_Tp, common_reference_t<_Tp, _Up>> && convertible_to<_Up, common_reference_t<_Tp, _Up>>; +++ namespace __detail { +++ template using __cref = const remove_reference_t<_Tp>&; +++ template concept __class_or_enum = is_class_v<_Tp> || is_union_v<_Tp> || is_enum_v<_Tp>; +++ template constexpr bool __destructible_impl = false; +++ template requires requires(_Tp& __t) { +++ { +++ __t.~_Tp() } +++ noexcept; +++ } +++ constexpr bool __destructible_impl<_Tp> = true; +++ template constexpr bool __destructible = __destructible_impl<_Tp>; +++ } +++ template concept assignable_from = is_lvalue_reference_v<_Lhs> && common_reference_with<__detail::__cref<_Lhs>, __detail::__cref<_Rhs>> && requires(_Lhs __lhs, _Rhs&& __rhs) { +++ { +++ __lhs = static_cast<_Rhs&&>(__rhs) } +++ -> same_as<_Lhs>; +++ }; +++ template concept destructible = __detail::__destructible<_Tp>; +++ template concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>; +++ template concept default_initializable = constructible_from<_Tp> && requires { +++ (void) ::new _Tp; +++ }; +++ template concept move_constructible = constructible_from<_Tp, _Tp> && convertible_to<_Tp, _Tp>; +++ namespace ranges { +++ namespace __swap { +++ template concept __adl_swap = (std::__detail::__class_or_enum> || std::__detail::__class_or_enum>) && requires(_Tp&& __t, _Up&& __u) { +++ swap(static_cast<_Tp&&>(__t), static_cast<_Up&&>(__u)); +++ }; +++ struct _Swap { +++ private: template static constexpr bool _S_noexcept() { +++ if constexpr (__adl_swap<_Tp, _Up>) return noexcept(swap(std::declval<_Tp>(), std::declval<_Up>())); +++ } +++ public: template requires __adl_swap<_Tp, _Up> || (same_as<_Tp, _Up> && is_lvalue_reference_v<_Tp> && move_constructible> && assignable_from<_Tp, remove_reference_t<_Tp>>) constexpr void operator()(_Tp&& __t, _Up&& __u) const noexcept(_S_noexcept<_Tp, _Up>()) { +++ if constexpr (__adl_swap<_Tp, _Up>) swap(static_cast<_Tp&&>(__t), static_cast<_Up&&>(__u)); +++ else { +++ } +++ } +++ template requires requires(const _Swap& __swap, _Tp& __e1, _Up& __e2) { +++ __swap(__e1, __e2); +++ } +++ constexpr void operator()(_Tp (&__e1)[_Num], _Up (&__e2)[_Num]) const noexcept(noexcept(std::declval()(*__e1, *__e2))) { +++ for (size_t __n = 0; +++ __n < _Num; +++ ++__n) (*this)(__e1[__n], __e2[__n]); +++ } +++ }; +++ } +++ inline namespace _Cpo { +++ inline constexpr __swap::_Swap swap{ +++}; +++ } +++ } +++ template concept swappable = requires(_Tp& __a, _Tp& __b) { +++ ranges::swap(__a, __b); +++ }; +++ template concept swappable_with = common_reference_with<_Tp, _Up> && requires(_Tp&& __t, _Up&& __u) { +++ ranges::swap(static_cast<_Tp&&>(__t), static_cast<_Tp&&>(__t)); +++ }; +++ namespace __detail { +++ template concept __boolean_testable_impl = convertible_to<_Tp, bool>; +++ template concept __boolean_testable = __boolean_testable_impl<_Tp> && requires(_Tp&& __t) { +++ { +++ !static_cast<_Tp&&>(__t) } +++ -> __boolean_testable_impl; +++ }; +++ template concept __weakly_eq_cmp_with = requires(__detail::__cref<_Tp> __t, __detail::__cref<_Up> __u) { +++ { +++ __t == __u } +++ -> __boolean_testable; +++ { +++ __u == __t } +++ -> __boolean_testable; +++ { +++ __u != __t } +++ -> __boolean_testable; +++ }; +++ } +++ namespace __detail { +++ template concept __partially_ordered_with = requires(const remove_reference_t<_Tp>& __t, const remove_reference_t<_Up>& __u) { +++ { +++ __t < __u } +++ -> __boolean_testable; +++ { +++ __t <= __u } +++ -> __boolean_testable; +++ { +++ __t >= __u } +++ -> __boolean_testable; +++ { +++ __u < __t } +++ -> __boolean_testable; +++ }; +++ } +++ template struct __get_first_arg { +++ }; +++ template struct __ptr_traits_elem : __get_first_arg<_Ptr> { +++ }; +++ template requires requires { +++ typename _Ptr::element_type; +++ } +++ struct __ptr_traits_elem<_Ptr, void> { +++ }; +++ template::value> struct __ptr_traits_ptr_to { +++ using pointer = _Ptr; +++ using element_type = _Elt; +++ static pointer pointer_to(element_type& __r) requires requires { +++ { +++ pointer::pointer_to(__r) } +++ -> convertible_to; +++ } +++ { +++ } +++ }; +++ namespace __detail { +++ template using __with_ref = _Tp&; +++ template concept __can_reference = requires { +++ typename __with_ref<_Tp>; +++ }; +++ template concept __dereferenceable = requires(_Tp& __t) { +++ { +++ *__t } +++ -> __can_reference; +++ }; +++ } +++ namespace ranges { +++ namespace __imove { +++ template concept __adl_imove = (std::__detail::__class_or_enum>) && requires(_Tp&& __t) { +++ iter_move(static_cast<_Tp&&>(__t)); +++ }; +++ struct _IterMove { +++ private: template struct __result { +++ }; +++ template static constexpr bool _S_noexcept() { +++ if constexpr (__adl_imove<_Tp>) return noexcept(iter_move(std::declval<_Tp>())); +++ } +++ public: template using __type = typename __result<_Tp>::type; +++ template [[nodiscard]] constexpr __type<_Tp> operator()(_Tp&& __e) const noexcept(_S_noexcept<_Tp>()) { +++ } +++ }; +++ } +++ } +++ template struct incrementable_traits { +++ }; +++ namespace __detail { +++ } +++ template struct tuple_element; +++ template using __tuple_element_t = typename tuple_element<__i, _Tp>::type; +++ template constexpr size_t __find_uniq_type_in_pack() { +++ constexpr size_t __sz = sizeof...(_Types); +++ constexpr bool __found[__sz] = { +++ __is_same(_Tp, _Types) ... }; +++ size_t __n = __sz; +++ for (size_t __i = 0; +++ __i < __sz; +++ ++__i) { +++ if (__found[__i]) { +++ if (__n < __sz) return __sz; +++ } +++ } +++ }; +++ template struct integer_sequence { +++ }; +++ template using make_integer_sequence = integer_sequence<_Tp, __integer_pack(_Num)...>; +++ template using index_sequence = integer_sequence; +++ template using make_index_sequence = make_integer_sequence; +++ template using index_sequence_for = make_index_sequence; +++ template struct in_place_type_t { +++ }; +++ template class tuple; +++ template class __pair_base { +++ }; +++ namespace __detail { +++ template struct __move_iter_cat { +++ }; +++ } +++ template class move_iterator : public __detail::__move_iter_cat<_Iterator> { +++ }; +++ template [[__nodiscard__]] inline constexpr bool operator<(const move_iterator<_IteratorL>& __x, const move_iterator<_IteratorR>& __y) requires requires { +++ { +++ __x.base() < __y.base() } +++ -> convertible_to; +++ } +++ { +++ return !(__x < __y); +++ } +++ namespace __ops { +++ template struct _Iter_comp_iter { +++ _Compare _M_comp; +++ explicit constexpr _Iter_comp_iter(_Compare __comp) : _M_comp(std::move(__comp)) { +++ } +++ template constexpr bool operator()(_Iterator1 __it1, _Iterator2 __it2) { +++ return bool(_M_comp(*__it1, *__it2)); +++ } +++ }; +++ template constexpr inline _Iter_comp_iter<_Compare> __iter_comp_iter(_Compare __comp) { +++ } +++ } +++ template [[__nodiscard__]] constexpr inline const _Tp& min(const _Tp& __a, const _Tp& __b) { +++ return __a; +++ } +++ template [[__nodiscard__]] constexpr inline const _Tp& max(const _Tp& __a, const _Tp& __b) { +++ if (__a < __b) return __b; +++ } +++ template constexpr inline _Iterator __find_if(_Iterator __first, _Iterator __last, _Predicate __pred) { +++ } +++ } +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ struct allocator_arg_t { +++ struct _Sink { +++ void constexpr operator=(const void*) { +++ } +++ } +++ _M_a; +++ }; +++ template constexpr _Res __invoke_impl(__invoke_other, _Fn&& __f, _Args&&... __args) { +++ } +++ template class initializer_list { +++ typedef size_t size_type; +++ typedef const _E* iterator; +++ private: iterator _M_array; +++ size_type _M_len; +++ }; +++ template struct __is_empty_non_tuple : is_empty<_Tp> { +++ }; +++ template using __empty_not_final = __conditional_t<__is_final(_Tp), false_type, __is_empty_non_tuple<_Tp>>; +++ template::value> struct _Head_base; +++ template struct _Tuple_impl; +++ template struct _Tuple_impl<_Idx, _Head, _Tail...> : public _Tuple_impl<_Idx + 1, _Tail...>, private _Head_base<_Idx, _Head> { +++ }; +++ template constexpr __tuple_element_t<__i, tuple<_Elements...>>& get(tuple<_Elements...>& __t) noexcept { +++ } +++ template requires (sizeof...(_Tps) == sizeof...(_Ups)) && (requires (const _Tps& __t, const _Ups& __u) { +++ { +++ __t == __u } +++ -> __detail::__boolean_testable; +++ } +++ && ...) constexpr bool operator== [[nodiscard]] (const tuple<_Tps...>& __t, const tuple<_Ups...>& __u) { +++ return [&](index_sequence<_Inds...>) { +++ } +++ (index_sequence_for<_Tps...>{ +++} +++ ); +++ } +++ } +++ typedef struct { +++ union { +++ } +++ __value; +++ } +++ __mbstate_t; +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ } +++ static inline int __gthread_yield (void) { +++ } +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ template [[nodiscard, __gnu__::__always_inline__]] constexpr _Tp* data(_Tp (&__array)[_Nm]) noexcept { +++ }; +++ } +++ typedef __uint8_t uint8_t; +++ typedef __uint32_t uint32_t; +++ namespace std { +++ namespace __detail { +++ inline void __thread_yield() noexcept { +++ } +++ inline void __thread_relax() noexcept { +++ } +++ inline constexpr auto __atomic_spin_count = 16; +++ struct __default_spin_policy { +++ bool operator()() const noexcept { +++ } +++ }; +++ template bool __atomic_spin(_Pred& __pred, _Spin __spin = _Spin{ +++ } +++ ) noexcept { +++ for (auto __i = 0; +++ __i < __atomic_spin_count; +++ ++__i) { +++ } +++ } +++ } +++ struct __numeric_limits_base { +++ }; +++ template struct numeric_limits : public __numeric_limits_base { +++ static constexpr bool is_signed = true; +++ static constexpr bool is_integer = true; +++ }; +++ template<> struct numeric_limits { +++ static constexpr bool is_signed = false; +++ static constexpr bool is_integer = true; +++ }; +++ } +++ namespace WTF { +++ template struct IsSmartPtr { +++ }; +++ template > struct TypeCastTraits { +++ }; +++ template class TypeHasRefMemberFunction { +++ }; +++ } +++ namespace WTF { +++ } +++ namespace std { +++ namespace experimental { +++ }; +++ } +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ template struct array { +++ }; +++ } +++ extern "C" { +++ extern float sqrtf (float __x) noexcept (true); +++ extern float floorf (float __x) noexcept (true) __attribute__ ((__const__)); +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ constexpr bool isnan(float __x) { +++ return __builtin_isnan(__x); +++ } +++ } +++ } +++ constexpr float piFloat = static_cast( 3.14159265358979323846 ); +++ template typename std::enable_if::value && std::numeric_limits::is_integer && std::numeric_limits::is_integer && std::numeric_limits::is_signed && !std::numeric_limits::is_signed && sizeof(SourceType) >= sizeof(TargetType), TargetType>::type clampTo(SourceType value) { +++ return static_cast(value); +++ } +++ namespace WTF { +++ constexpr uint32_t roundUpToPowerOfTwo(uint32_t v) { +++ return v; +++ }; +++ template struct VectorTraitsBase; +++ template struct VectorTraits : VectorTraitsBase && std::is_trivial_v, T> { +++ }; +++ } +++ namespace WTF { +++ class StringHasher { +++ }; +++ enum class DestructionThread : uint8_t { +++ Any, Main, MainRunLoop }; +++ } +++ namespace WebCore { +++ class IntSize { +++ public: constexpr IntSize() = default; +++ void setWidth(int width) { +++ m_width = width; +++ } +++ void setHeight(int height) { +++ m_height = height; +++ } +++ private: int m_width { +++ 0 }; +++ int m_height { +++ 0 }; +++ }; +++ inline IntSize& operator+=(IntSize& a, const IntSize& b) { +++ } +++ } +++ namespace WebCore { +++ class FloatSize { +++ public: constexpr FloatSize() = default; +++ constexpr float width() const { +++ return m_width; +++ } +++ constexpr float height() const { +++ return m_height; +++ } +++ private: float m_width { +++ 0 }; +++ float m_height { +++ 0 }; +++ }; +++ } +++ namespace WTF { +++ class ThreadSafeRefCountedBase { +++ }; +++ template class ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr { +++ }; +++ } +++ using WTF::ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr; +++ namespace WebCore { +++ class FloatPoint { +++ }; +++ inline FloatSize toFloatSize(const FloatPoint& a) { +++ } +++ } +++ namespace WTF { +++ } +++ namespace WebCore { +++ template struct ColorComponents { +++ template constexpr auto map(F&& function) const -> ColorComponents())), N>; +++ }; +++ template struct AlphaTraits; +++ inline constexpr ColorComponents resolveColorComponents(const ColorComponents& colorComponents) { +++ return colorComponents.map([] (float component) { +++ return std::isnan(component) ? 0.0f : component; +++ } +++ ); +++ }; +++ enum class WhitePoint { +++ D50, D65 }; +++ template struct ColorWithAlphaHelper { +++ }; +++ template struct RGBAType : ColorWithAlphaHelper { +++ constexpr RGBAType(T red, T green, T blue, T alpha = AlphaTraits::opaque) : red { +++ red } +++ { +++ } +++ protected: T red; +++ }; +++ } +++ namespace WebCore { +++ class RenderingResource : public ThreadSafeRefCountedAndCanMakeThreadSafeWeakPtr { +++ }; +++ class FilterFunction : public RenderingResource { +++ }; +++ class FilterEffect : public FilterFunction { +++ }; +++ class AffineTransform { +++ public: constexpr AffineTransform(); +++ private: std::array m_transform; +++ }; +++ constexpr AffineTransform::AffineTransform() : m_transform { +++ } +++ { +++ } +++ } +++ namespace WTF { +++ } +++ namespace WebCore { +++ class FEGaussianBlur : public FilterEffect { +++ static IntSize calculateUnscaledKernelSize(FloatSize stdDeviation); +++ }; +++ } +++ namespace WTF { +++ } +++ namespace WebCore { +++ static inline float gaussianKernelFactor() { +++ return 3 / 4.f * sqrtf(2 * piFloat); +++ } +++ static int clampedToKernelSize(float value) { +++ static constexpr unsigned maxKernelSize = 500; +++ unsigned size = std::max(2, static_cast(floorf(value * gaussianKernelFactor() + 0.5f))); +++ return clampTo(std::min(size, maxKernelSize)); +++ } +++ IntSize FEGaussianBlur::calculateUnscaledKernelSize(FloatSize stdDeviation) { +++ IntSize kernelSize; +++ if (stdDeviation.width()) kernelSize.setWidth(clampedToKernelSize(stdDeviation.width())); +++ if (stdDeviation.height()) kernelSize.setHeight(clampedToKernelSize(stdDeviation.height())); +++ return kernelSize; +++ } +++ } ++diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C ++new file mode 100644 ++index 00000000000..f46136489b5 ++--- /dev/null +++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c384.C ++@@ -0,0 +1,429 @@ +++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ +++/* { dg-do compile } */ +++ +++ typedef unsigned int size_t; +++ extern "C" { +++ typedef signed int __int32_t; +++ typedef struct { +++ } +++ __fpos64_t; +++ } +++ extern "C++" { +++ namespace std __attribute__ ((__visibility__ ("default"))) { +++ template struct integral_constant { +++ using value_type = _Tp; +++ constexpr operator value_type() const noexcept { +++ } +++ }; +++ } +++ typedef __int32_t int32_t; +++ typedef struct { +++ } +++ ldiv_t; +++ } +++ extern "C" { +++ typedef unsigned int hashval_t; +++ enum insert_option { +++ NO_INSERT, INSERT}; +++ } +++ typedef const union tree_node *const_tree; +++ struct varpool_node; +++ struct cgraph_edge; +++ template inline T * ggc_alloc () { +++ } +++ struct vl_embed { +++ }; +++ struct vl_ptr { +++ }; +++ struct va_heap { +++ typedef vl_ptr default_layout; +++ }; +++ struct va_gc { +++ typedef vl_embed default_layout; +++ }; +++ template struct vec { +++ }; +++ template T* begin (vec *v) { +++ } +++ template T* end (vec *v) { +++ } +++ struct vnull { +++ }; +++ template struct vec { +++ bool is_empty (void) const { +++ } +++ T &operator[] (unsigned); +++ }; +++ template inline unsigned vec_safe_length (const vec *v) { +++ } +++ template class auto_vec; +++ template struct vec { +++ public: vec () = default; +++ vec (vnull): m_vec () { +++ } +++ T &operator[] (unsigned ix) { +++ return (*m_vec)[ix]; +++ } +++ vec *m_vec; +++ }; +++ template class auto_vec : public vec { +++ public: auto_vec () { +++ } +++ auto_vec (size_t s ) { +++ } +++ }; +++ enum mem_alloc_origin { +++ HASH_TABLE_ORIGIN, HASH_MAP_ORIGIN, HASH_SET_ORIGIN, VEC_ORIGIN, BITMAP_ORIGIN, GGC_ORIGIN, ALLOC_POOL_ORIGIN, MEM_ALLOC_ORIGIN_LENGTH }; +++ template struct typed_noop_remove { +++ }; +++ template struct int_hash_base : typed_noop_remove { +++ typedef Type value_type; +++ }; +++ template struct int_hash : int_hash_base { +++ }; +++ template struct default_hash_traits : T { +++ }; +++ template struct simple_hashmap_traits { +++ typedef typename H::value_type key_type; +++ static inline hashval_t hash (const key_type &); +++ }; +++ template struct xcallocator { +++ }; +++ template class Allocator = xcallocator> class hash_table { +++ typedef typename Descriptor::value_type value_type; +++ typedef typename Descriptor::compare_type compare_type; +++ public: explicit hash_table (size_t, bool ggc = false, bool sanitize_eq_and_hash = true, bool gather_mem_stats = 0, mem_alloc_origin origin = HASH_TABLE_ORIGIN ); +++ value_type *find_slot_with_hash (const compare_type &comparable, hashval_t hash, enum insert_option insert); +++ }; +++ template, Value> > class hash_map; +++ class mem_location { +++ }; +++ const size_t default_hash_map_size = 13; +++ template class hash_map { +++ typedef typename Traits::key_type Key; +++ struct hash_entry { +++ Value m_value; +++ typedef hash_entry value_type; +++ typedef Key compare_type; +++ }; +++ public: explicit hash_map (size_t n = default_hash_map_size, bool ggc = false, bool sanitize_eq_and_hash = true, bool gather_mem_stats = 0 ) : m_table (n, ggc, sanitize_eq_and_hash, gather_mem_stats, HASH_MAP_ORIGIN ) { +++ } +++ Value &get_or_insert (const Key &k, bool *existed = nullptr) { +++ hash_entry *e = m_table.find_slot_with_hash (k, Traits::hash (k), INSERT); +++ return e->m_value; +++ } +++ hash_table m_table; +++ }; +++ enum optgroup_flag { +++ OPTGROUP_NONE = 0, OPTGROUP_IPA = (1 << 1), OPTGROUP_LOOP = (1 << 2), OPTGROUP_INLINE = (1 << 3), OPTGROUP_OMP = (1 << 4), OPTGROUP_VEC = (1 << 5), OPTGROUP_OTHER = (1 << 6), OPTGROUP_ALL = (OPTGROUP_IPA | OPTGROUP_LOOP | OPTGROUP_INLINE | OPTGROUP_OMP | OPTGROUP_VEC | OPTGROUP_OTHER) }; +++ typedef enum optgroup_flag optgroup_flags_t; +++ enum reorder_blocks_algorithm { +++ }; +++ enum tree_node_structure_enum { +++ TS_BASE, TS_TYPED, TS_COMMON, TS_INT_CST, TS_POLY_INT_CST, TS_REAL_CST, TS_FIXED_CST, TS_VECTOR, TS_STRING, TS_COMPLEX, TS_IDENTIFIER, TS_DECL_MINIMAL, TS_DECL_COMMON, TS_DECL_WRTL, TS_DECL_NON_COMMON, TS_DECL_WITH_VIS, TS_FIELD_DECL, TS_VAR_DECL, TS_PARM_DECL, TS_LABEL_DECL, TS_RESULT_DECL, TS_CONST_DECL, TS_TYPE_DECL, TS_FUNCTION_DECL, TS_TRANSLATION_UNIT_DECL, TS_TYPE_COMMON, TS_TYPE_WITH_LANG_SPECIFIC, TS_TYPE_NON_COMMON, TS_LIST, TS_VEC, TS_EXP, TS_SSA_NAME, TS_BLOCK, TS_BINFO, TS_STATEMENT_LIST, TS_CONSTRUCTOR, TS_OMP_CLAUSE, TS_OPTIMIZATION, TS_TARGET_OPTION, LAST_TS_ENUM }; +++ struct tree_base { +++ union { +++ struct { +++ } +++ bits; +++ } +++ u; +++ }; +++ struct tree_typed { +++ }; +++ inline const_tree contains_struct_check (const_tree __t, const enum tree_node_structure_enum __s, const char *__f, int __l, const char *__g) { +++ } +++ struct gimple { +++ }; +++ typedef enum { +++ TV_NONE, TV_TOTAL, TV_PHASE_SETUP, TV_PHASE_PARSING, TV_PHASE_DEFERRED, TV_PHASE_LATE_PARSING_CLEANUPS, TV_PHASE_OPT_GEN, TV_PHASE_LATE_ASM, TV_PHASE_STREAM_IN, TV_PHASE_STREAM_OUT, TV_PHASE_FINALIZE, TV_NAME_LOOKUP, TV_OVERLOAD, TV_GC, TV_DUMP, TV_PCH_SAVE, TV_PCH_CPP_SAVE, TV_PCH_PTR_REALLOC, TV_PCH_PTR_SORT, TV_PCH_RESTORE, TV_PCH_CPP_RESTORE, TV_CGRAPH, TV_CGRAPHOPT, TV_CGRAPH_FUNC_EXPANSION, TV_CGRAPH_IPA_PASSES, TV_IPA_ODR, TV_IPA_FNSUMMARY, TV_IPA_UNREACHABLE, TV_IPA_INHERITANCE, TV_IPA_VIRTUAL_CALL, TV_IPA_DEVIRT, TV_IPA_CONSTANT_PROP, TV_IPA_INLINING, TV_IPA_FNSPLIT, TV_IPA_COMDATS, TV_IPA_OPT, TV_IPA_LTO_DECOMPRESS, TV_IPA_LTO_COMPRESS, TV_IPA_LTO_OUTPUT, TV_IPA_LTO_GIMPLE_IN, TV_IPA_LTO_GIMPLE_OUT, TV_IPA_LTO_DECL_IN, TV_IPA_LTO_DECL_OUT, TV_IPA_LTO_CTORS_IN, TV_IPA_LTO_CTORS_OUT, TV_IPA_LTO_CGRAPH_IO, TV_IPA_LTO_DECL_MERGE, TV_IPA_LTO_CGRAPH_MERGE, TV_LTO, TV_WHOPR_WPA, TV_WHOPR_WPA_IO, TV_WHOPR_PARTITIONING, TV_WHOPR_LTRANS, TV_IPA_REFERENCE, TV_IPA_PROFILE, TV_IPA_AUTOFDO, TV_IPA_PURE_CONST, TV_IPA_ICF, TV_IPA_PTA, TV_IPA_SRA, TV_IPA_FREE_LANG_DATA, TV_IPA_FREE_INLINE_SUMMARY, TV_IPA_MODREF, TV_CFG, TV_CLEANUP_CFG, TV_CFG_VERIFY, TV_DELETE_TRIVIALLY_DEAD, TV_DF_SCAN, TV_DF_MD, TV_DF_RD, TV_DF_LR, TV_DF_LIVE, TV_DF_MIR, TV_DF_CHAIN, TV_DF_WORD_LR, TV_DF_NOTE, TV_REG_STATS, TV_ALIAS_ANALYSIS, TV_ALIAS_STMT_WALK, TV_REG_SCAN, TV_REBUILD_JUMP, TV_CPP, TV_LEX, TV_PARSE_GLOBAL, TV_PARSE_STRUCT, TV_PARSE_ENUM, TV_PARSE_FUNC, TV_PARSE_INLINE, TV_PARSE_INMETH, TV_TEMPLATE_INST, TV_CONSTEXPR, TV_CONSTRAINT_NORM, TV_CONSTRAINT_SAT, TV_CONSTRAINT_SUB, TV_MODULE_IMPORT, TV_MODULE_EXPORT, TV_MODULE_MAPPER, TV_FLATTEN_INLINING, TV_EARLY_INLINING, TV_INLINE_PARAMETERS, TV_INTEGRATION, TV_TREE_GIMPLIFY, TV_TREE_EH, TV_TREE_CFG, TV_TREE_CLEANUP_CFG, TV_TREE_TAIL_MERGE, TV_TREE_VRP, TV_TREE_VRP_THREADER, TV_TREE_EARLY_VRP, TV_TREE_FAST_VRP, TV_TREE_ARRAY_BOUNDS, TV_TREE_COPY_PROP, TV_FIND_REFERENCED_VARS, TV_TREE_PTA, TV_TREE_SSA_OTHER, TV_TREE_INTO_SSA, TV_TREE_SSA_INCREMENTAL, TV_TREE_OPS, TV_TREE_SSA_DOMINATOR_OPTS, TV_TREE_SSA_THREAD_JUMPS, TV_TREE_SRA, TV_ISOLATE_ERRONEOUS_PATHS, TV_TREE_CCP, TV_TREE_SPLIT_EDGES, TV_TREE_REASSOC, TV_TREE_PRE, TV_TREE_FRE, TV_TREE_RPO_VN, TV_TREE_SINK, TV_TREE_PHIOPT, TV_TREE_BACKPROP, TV_TREE_FORWPROP, TV_TREE_PHIPROP, TV_TREE_DCE, TV_TREE_CD_DCE, TV_TREE_CALL_CDCE, TV_TREE_DSE, TV_TREE_MERGE_PHI, TV_TREE_LOOP, TV_TREE_NOLOOP, TV_TREE_LOOP_BOUNDS, TV_LIM, TV_LINTERCHANGE, TV_TREE_LOOP_IVCANON, TV_SCEV_CONST, TV_TREE_LOOP_UNSWITCH, TV_LOOP_SPLIT, TV_LOOP_JAM, TV_COMPLETE_UNROLL, TV_SCALAR_CLEANUP, TV_TREE_PARALLELIZE_LOOPS, TV_TREE_VECTORIZATION, TV_TREE_SLP_VECTORIZATION, TV_GRAPHITE, TV_GRAPHITE_TRANSFORMS, TV_GRAPHITE_DATA_DEPS, TV_GRAPHITE_CODE_GEN, TV_TREE_LOOP_DISTRIBUTION, TV_CHECK_DATA_DEPS, TV_TREE_PREFETCH, TV_TREE_LOOP_IVOPTS, TV_PREDCOM, TV_TREE_CH, TV_TREE_SSA_UNCPROP, TV_TREE_NRV, TV_TREE_COPY_RENAME, TV_TREE_SSA_VERIFY, TV_TREE_STMT_VERIFY, TV_TREE_SWITCH_CONVERSION, TV_TREE_SWITCH_LOWERING, TV_TREE_RECIP, TV_TREE_SINCOS, TV_TREE_POW, TV_TREE_WIDEN_MUL, TV_TRANS_MEM, TV_TREE_STRLEN, TV_TREE_MODREF, TV_TREE_ASSUMPTIONS, TV_CGRAPH_VERIFY, TV_DOM_FRONTIERS, TV_DOMINANCE, TV_CONTROL_DEPENDENCES, TV_OUT_OF_SSA, TV_VAR_EXPAND, TV_EXPAND, TV_POST_EXPAND, TV_VARCONST, TV_LOWER_SUBREG, TV_JUMP, TV_FWPROP, TV_CSE, TV_DCE, TV_DSE1, TV_DSE2, TV_LOOP, TV_LOOP_INIT, TV_LOOP_VERSIONING, TV_LOOP_MOVE_INVARIANTS, TV_LOOP_UNROLL, TV_LOOP_DOLOOP, TV_LOOP_FINI, TV_CPROP, TV_PRE, TV_HOIST, TV_LSM, TV_TRACER, TV_WEB, TV_AUTO_INC_DEC, TV_CSE2, TV_BRANCH_PROB, TV_COMBINE, TV_IFCVT, TV_MODE_SWITCH, TV_SMS, TV_LIVE_RANGE_SHRINKAGE, TV_SCHED, TV_EARLY_REMAT, TV_IRA, TV_LRA, TV_LRA_ELIMINATE, TV_LRA_INHERITANCE, TV_LRA_CREATE_LIVE_RANGES, TV_LRA_ASSIGN, TV_LRA_COALESCE, TV_LRA_REMAT, TV_RELOAD, TV_RELOAD_CSE_REGS, TV_GCSE_AFTER_RELOAD, TV_REE, TV_THREAD_PROLOGUE_AND_EPILOGUE, TV_IFCVT2, TV_SPLIT_PATHS, TV_COMBINE_STACK_ADJUST, TV_PEEPHOLE2, TV_RENAME_REGISTERS, TV_SCHED_FUSION, TV_CPROP_REGISTERS, TV_SCHED2, TV_MACH_DEP, TV_DBR_SCHED, TV_REORDER_BLOCKS, TV_SHORTEN_BRANCH, TV_REG_STACK, TV_FINAL, TV_VAROUT, TV_SYMOUT, TV_VAR_TRACKING, TV_VAR_TRACKING_DATAFLOW, TV_VAR_TRACKING_EMIT, TV_TREE_IFCOMBINE, TV_TREE_IF_TO_SWITCH, TV_TREE_UNINIT, TV_PLUGIN_INIT, TV_PLUGIN_RUN, TV_GIMPLE_SLSR, TV_GIMPLE_STORE_MERGING, TV_VTABLE_VERIFICATION, TV_TREE_UBSAN, TV_INITIALIZE_RTL, TV_GIMPLE_LADDRESS, TV_TREE_LOOP_IFCVT, TV_WARN_ACCESS, TV_EARLY_LOCAL, TV_OPTIMIZE, TV_REST_OF_COMPILATION, TV_POSTRELOAD, TV_LATE_COMPILATION, TV_REMOVE_UNUSED, TV_ADDRESS_TAKEN, TV_TODO, TV_VERIFY_LOOP_CLOSED, TV_VERIFY_RTL_SHARING, TV_REBUILD_FREQUENCIES, TV_REPAIR_LOOPS, TV_JIT_REPLAY, TV_ASSEMBLE, TV_LINK, TV_LOAD, TV_JIT_ACQUIRING_MUTEX, TV_JIT_CLIENT_CODE, TV_ANALYZER, TV_ANALYZER_SUPERGRAPH, TV_ANALYZER_STATE_PURGE, TV_ANALYZER_PLAN, TV_ANALYZER_SCC, TV_ANALYZER_WORKLIST, TV_ANALYZER_INFINITE_LOOPS, TV_ANALYZER_DUMP, TV_ANALYZER_DIAGNOSTICS, TV_ANALYZER_SHORTEST_PATHS, TIMEVAR_LAST } +++ timevar_id_t; +++ enum opt_pass_type { +++ GIMPLE_PASS, RTL_PASS, SIMPLE_IPA_PASS, IPA_PASS }; +++ struct pass_data { +++ enum opt_pass_type type; +++ const char *name; +++ optgroup_flags_t optinfo_flags; +++ timevar_id_t tv_id; +++ unsigned int properties_required; +++ unsigned int properties_provided; +++ unsigned int properties_destroyed; +++ unsigned int todo_flags_start; +++ unsigned int todo_flags_finish; +++ }; +++ namespace gcc { +++ class context; +++ } +++ class opt_pass : public pass_data { +++ protected: opt_pass (const pass_data&, gcc::context *); +++ }; +++ class ipa_opt_pass_d : public opt_pass { +++ public: void (*generate_summary) (void); +++ void (*write_summary) (void); +++ void (*read_summary) (void); +++ void (*write_optimization_summary) (void); +++ void (*read_optimization_summary) (void); +++ void (*stmt_fixup) (struct cgraph_node *, gimple **); +++ unsigned int function_transform_todo_flags_start; +++ unsigned int (*function_transform) (struct cgraph_node *); +++ void (*variable_transform) (varpool_node *); +++ protected: ipa_opt_pass_d (const pass_data& data, gcc::context *ctxt, void (*generate_summary) (void), void (*write_summary) (void), void (*read_summary) (void), void (*write_optimization_summary) (void), void (*read_optimization_summary) (void), void (*stmt_fixup) (struct cgraph_node *, gimple **), unsigned int function_transform_todo_flags_start, unsigned int (*function_transform) (struct cgraph_node *), void (*variable_transform) (varpool_node *)) : opt_pass (data, ctxt), generate_summary (generate_summary), write_summary (write_summary), read_summary (read_summary), write_optimization_summary (write_optimization_summary), read_optimization_summary (read_optimization_summary), stmt_fixup (stmt_fixup), function_transform_todo_flags_start (function_transform_todo_flags_start), function_transform (function_transform), variable_transform (variable_transform) { +++ } +++ }; +++ struct symtab_node { +++ struct lto_file_decl_data * lto_file_data; +++ }; +++ struct cgraph_node : public symtab_node { +++ cgraph_edge *callees; +++ cgraph_edge *indirect_calls; +++ }; +++ class cgraph_edge { +++ public: friend struct cgraph_node; +++ inline int get_uid () { +++ return m_uid; +++ } +++ cgraph_edge *next_callee; +++ private: int m_uid; +++ }; +++ template class function_summary; +++ class symbol_table { +++ }; +++ template class function_summary_base { +++ }; +++ template class function_summary : public function_summary_base { +++ T* get (cgraph_node *node) __attribute__ ((__pure__)) { +++ } +++ }; +++ template class call_summary_base { +++ }; +++ template class call_summary { +++ }; +++ template class call_summary : public call_summary_base { +++ public: call_summary (symbol_table *symtab, bool ggc = false ) : call_summary_base (symtab, call_summary::symtab_removal, call_summary::symtab_duplication ), m_ggc (ggc), m_map (13, ggc, true, 0 ) { +++ } +++ T* get_create (cgraph_edge *edge) { +++ bool existed; +++ T **v = &m_map.get_or_insert (edge->get_uid (), &existed); +++ return *v; +++ } +++ protected: bool m_ggc; +++ typedef int_hash map_hash; +++ hash_map m_map; +++ }; +++ enum lto_section_type { +++ LTO_section_decls = 0, LTO_section_function_body, LTO_section_static_initializer, LTO_section_symtab, LTO_section_symtab_extension, LTO_section_refs, LTO_section_asm, LTO_section_jump_functions, LTO_section_ipa_pure_const, LTO_section_ipa_reference, LTO_section_ipa_profile, LTO_section_symtab_nodes, LTO_section_opts, LTO_section_cgraph_opt_sum, LTO_section_ipa_fn_summary, LTO_section_ipcp_transform, LTO_section_ipa_icf, LTO_section_offload_table, LTO_section_mode_table, LTO_section_lto, LTO_section_ipa_sra, LTO_section_odr_types, LTO_section_ipa_modref, LTO_N_SECTION_TYPES }; +++ class lto_input_block { +++ public: lto_input_block (const char *data_, unsigned int p_, unsigned int len_, const lto_file_decl_data *file_data_) : data (data_), file_data (file_data_), p (p_), len (len_) { +++ } +++ lto_input_block (const char *data_, unsigned int len_, const lto_file_decl_data *file_data_) : data (data_), file_data (file_data_), p (0), len (len_) { +++ } +++ const char *data; +++ const lto_file_decl_data *file_data; +++ unsigned int p; +++ unsigned int len; +++ }; +++ struct lto_simple_header { +++ int32_t main_size; +++ }; +++ struct lto_simple_header_with_strings : lto_simple_header { +++ }; +++ struct lto_function_header : lto_simple_header_with_strings { +++ int32_t cfg_size; +++ }; +++ typedef struct lto_symtab_encoder_d *lto_symtab_encoder_t; +++ struct lto_symtab_encoder_iterator { +++ }; +++ struct lto_out_decl_state { +++ lto_symtab_encoder_t symtab_node_encoder; +++ }; +++ struct output_block { +++ struct lto_out_decl_state *decl_state; +++ }; +++ extern struct lto_file_decl_data **lto_get_file_decl_data (void); +++ extern const char *lto_get_summary_section_data (struct lto_file_decl_data *, enum lto_section_type, size_t *); +++ extern struct output_block *create_output_block (enum lto_section_type); +++ inline bool lsei_end_p (lto_symtab_encoder_iterator lsei) { +++ } +++ inline void lsei_next_function_in_partition (lto_symtab_encoder_iterator *lsei) { +++ } +++ inline lto_symtab_encoder_iterator lsei_start_function_in_partition (lto_symtab_encoder_t encoder) { +++ } +++ static unsigned const BITS_PER_BITPACK_WORD = 64; +++ typedef unsigned long long bitpack_word_t; +++ struct bitpack_d { +++ unsigned pos; +++ bitpack_word_t word; +++ void *stream; +++ }; +++ unsigned long long streamer_read_uhwi (class lto_input_block *); +++ inline struct bitpack_d bitpack_create (struct lto_output_stream *s) { +++ } +++ inline struct bitpack_d streamer_read_bitpack (class lto_input_block *ib) { +++ struct bitpack_d bp; +++ return bp; +++ } +++ inline bitpack_word_t bp_unpack_value (struct bitpack_d *bp, unsigned nbits) { +++ bitpack_word_t mask, val; +++ int pos = bp->pos; +++ mask = (nbits == BITS_PER_BITPACK_WORD ? (bitpack_word_t) -1 : ((bitpack_word_t) 1 << nbits) - 1); +++ if (pos + nbits > BITS_PER_BITPACK_WORD) { +++ bp->word = val = streamer_read_uhwi ((class lto_input_block *)bp->stream); +++ bp->pos = nbits; +++ return val & mask; +++ } +++ val = bp->word; +++ val >>= pos; +++ bp->pos = pos + nbits; +++ return val & mask; +++ } +++ class ipcp_transformation; +++ class ipa_argagg_value_list { +++ template void remove_argaggs_if (pred_function &&predicate) { +++ } +++ }; +++ inline ipcp_transformation * ipcp_get_transformation_summary (cgraph_node *node) { +++ } +++ struct param_access { +++ }; +++ struct isra_param_desc { +++ vec *accesses; +++ unsigned remove_only_when_retval_removed : 1; +++ }; +++ class isra_func_summary { +++ public: isra_func_summary () : m_parameters (nullptr), m_candidate (false), m_returns_value (false), m_return_ignored (false), m_queued (false) { +++ } +++ vec *m_parameters; +++ unsigned m_candidate : 1; +++ unsigned m_returns_value : 1; +++ unsigned m_return_ignored : 1; +++ unsigned m_queued : 1; +++ }; +++ struct isra_param_flow { +++ char length; +++ unsigned char inputs[7]; +++ unsigned aggregate_pass_through : 1; +++ unsigned pointer_pass_through : 1; +++ unsigned safe_to_import_accesses : 1; +++ }; +++ class isra_call_summary { +++ public: isra_call_summary () : m_arg_flow (), m_return_ignored (false), m_return_returned (false), m_bit_aligned_arg (false), m_before_any_store (false) { +++ } +++ auto_vec m_arg_flow; +++ unsigned m_return_ignored : 1; +++ unsigned m_return_returned : 1; +++ unsigned m_bit_aligned_arg : 1; +++ unsigned m_before_any_store : 1; +++ }; +++ class ipa_sra_function_summaries : public function_summary { +++ }; +++ class ipa_sra_call_summaries: public call_summary { +++ }; +++ static ipa_sra_call_summaries *call_sums; +++ namespace { +++ static void verify_splitting_accesses (cgraph_node *node, bool certain_must_exist) { +++ } +++ static void ipa_sra_generate_summary (void) { +++ } +++ static void isra_write_edge_summary (output_block *ob, cgraph_edge *e) { +++ } +++ static void isra_write_node_summary (output_block *ob, cgraph_node *node) { +++ for (cgraph_edge *e = node->callees; +++ e; +++ e = e->next_callee) isra_write_edge_summary (ob, e); +++ } +++ static void ipa_sra_write_summary (void) { +++ struct output_block *ob = create_output_block (LTO_section_ipa_sra); +++ lto_symtab_encoder_t encoder = ob->decl_state->symtab_node_encoder; +++ lto_symtab_encoder_iterator lsei; +++ for (lsei = lsei_start_function_in_partition (encoder); +++ !lsei_end_p (lsei); +++ lsei_next_function_in_partition (&lsei)) { +++ } +++ } +++ static void isra_read_edge_summary (struct lto_input_block *ib, cgraph_edge *cs) { +++ isra_call_summary *csum = call_sums->get_create (cs); +++ unsigned input_count = streamer_read_uhwi (ib); +++ for (unsigned i = 0; +++ i < input_count; +++ i++) { +++ isra_param_flow *ipf = &csum->m_arg_flow[i]; +++ bitpack_d bp = streamer_read_bitpack (ib); +++ for (int j = 0; +++ j < ipf->length; +++ j++) ipf->inputs[j] = bp_unpack_value (&bp, 8); +++ ipf->aggregate_pass_through = bp_unpack_value (&bp, 1); +++ ipf->pointer_pass_through = bp_unpack_value (&bp, 1); +++ ipf->safe_to_import_accesses = bp_unpack_value (&bp, 1); +++ } +++ } +++ static void isra_read_node_info (struct lto_input_block *ib, cgraph_node *node, struct data_in *data_in) { +++ for (cgraph_edge *e = node->indirect_calls; +++ e; +++ e = e->next_callee) isra_read_edge_summary (ib, e); +++ } +++ static void isra_read_summary_section (struct lto_file_decl_data *file_data, const char *data, size_t len) { +++ const struct lto_function_header *header = (const struct lto_function_header *) data; +++ const int cfg_offset = sizeof (struct lto_function_header); +++ const int main_offset = cfg_offset + header->cfg_size; +++ struct data_in *data_in; +++ unsigned int i; +++ unsigned int count; +++ lto_input_block ib_main ((const char *) data + main_offset, header->main_size, file_data); +++ count = streamer_read_uhwi (&ib_main); +++ for (i = 0; +++ i < count; +++ i++) { +++ struct cgraph_node *node; +++ isra_read_node_info (&ib_main, node, data_in); +++ } +++ } +++ static void ipa_sra_read_summary (void) { +++ struct lto_file_decl_data **file_data_vec = lto_get_file_decl_data (); +++ struct lto_file_decl_data *file_data; +++ unsigned int j = 0; +++ while ((file_data = file_data_vec[j++])) { +++ size_t len; +++ const char *data = lto_get_summary_section_data (file_data, LTO_section_ipa_sra, &len); +++ if (data) isra_read_summary_section (file_data, data, len); +++ } +++ } +++ static bool all_callee_accesses_present_p (isra_param_desc *param_desc, isra_param_desc *arg_desc) { +++ unsigned aclen = vec_safe_length (arg_desc->accesses); +++ for (unsigned j = 0; +++ j < aclen; +++ j++) { +++ } +++ } +++ enum acc_prop_kind { +++ ACC_PROP_DONT, ACC_PROP_COPY, ACC_PROP_CERTAIN}; +++ static const char * pull_accesses_from_callee (cgraph_node *caller, isra_param_desc *param_desc, isra_param_desc *arg_desc, unsigned delta_offset, unsigned arg_size, bool *change_p) { +++ unsigned aclen = vec_safe_length (arg_desc->accesses); +++ for (unsigned j = 0; +++ j < aclen; +++ j++) { +++ } +++ } +++ static bool adjust_parameter_descriptions (cgraph_node *node, isra_func_summary *ifs) { +++ unsigned len = vec_safe_length (ifs->m_parameters); +++ for (unsigned i = 0; +++ i < len; +++ i++) { +++ isra_param_desc *desc = &(*ifs->m_parameters)[i]; +++ if (desc->remove_only_when_retval_removed && !ifs->m_return_ignored) { +++ for (const param_access *pa : desc->accesses) { +++ } +++ } +++ } +++ } +++ const pass_data pass_data_ipa_sra = { +++ IPA_PASS, "sra", OPTGROUP_NONE, TV_IPA_SRA, 0, 0, 0, 0, ( (1 << 7) | (1 << 8) ), }; +++ class pass_ipa_sra : public ipa_opt_pass_d { +++ public: pass_ipa_sra (gcc::context *ctxt) : ipa_opt_pass_d (pass_data_ipa_sra, ctxt, ipa_sra_generate_summary, ipa_sra_write_summary, ipa_sra_read_summary, nullptr , nullptr, nullptr, 0, nullptr, nullptr) { +++ } +++ }; +++ } +++ ipa_opt_pass_d * make_pass_ipa_sra (gcc::context *ctxt) { +++ return new pass_ipa_sra (ctxt); +++ } +++ +++ ++diff --git a/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C ++new file mode 100644 ++index 00000000000..13eb1ff4d89 ++--- /dev/null +++++ b/src/gcc/testsuite/g++.target/sh/torture/pr55212-c413.C ++@@ -0,0 +1,38 @@ +++/* { dg-additional-options "-std=c++20 -mlra -fpic -w " } */ +++/* { dg-do compile } */ +++ +++struct Trans_NS_WTF_HashMap +++{ +++ template void set(int *, V); +++}; +++ +++struct AscentAndDescent +++{ +++ float ascent; +++ float descent; +++}; +++ +++bool isRubyAnnotationBox(); +++ +++struct EnclosingAscentDescent +++{ +++ float ascent; +++ float descent; +++}; +++ +++AscentAndDescent primaryFontMetricsForInlineBox(); +++int adjustInlineBoxHeightsForLineBoxContainIfApplicable___trans_tmp_1; +++ +++void adjustInlineBoxHeightsForLineBoxContainIfApplicable() +++{ +++ Trans_NS_WTF_HashMap inlineBoxBoundsMap; +++ auto ensureFontMetricsBasedHeight = [&](auto inlineBox) +++ { +++ auto [ascent, descent] = primaryFontMetricsForInlineBox(); +++ auto halfLeading = isRubyAnnotationBox() ? ascent + descent : 0.f; +++ ascent += halfLeading; +++ inlineBoxBoundsMap.set(&inlineBox, EnclosingAscentDescent{ascent, descent}); +++ }; +++ ensureFontMetricsBasedHeight( +++ adjustInlineBoxHeightsForLineBoxContainIfApplicable___trans_tmp_1); +++} ++diff --git a/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp b/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp ++new file mode 100644 ++index 00000000000..8be516ebd25 ++--- /dev/null +++++ b/src/gcc/testsuite/g++.target/sh/torture/sh-torture.exp ++@@ -0,0 +1,299 @@ +++# Copyright (C) 2024 Free Software Foundation, Inc. +++ +++# This program is free software; you can redistribute it and/or modify +++# it under the terms of the GNU General Public License as published by +++# the Free Software Foundation; either version 3 of the License, or +++# (at your option) any later version. +++# +++# This program is distributed in the hope that it will be useful, +++# but WITHOUT ANY WARRANTY; without even the implied warranty of +++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +++# GNU General Public License for more details. +++# +++# You should have received a copy of the GNU General Public License +++# along with GCC; see the file COPYING3. If not see +++# . +++ +++# GCC testsuite that uses the `gcc-dg.exp' driver, looping over +++# optimization options. +++ +++# Exit immediately if this isn't an SH target. +++if { ![istarget sh*-*-*] } then { +++ return +++} +++ +++# Load support procs. +++load_lib g++-dg.exp +++ +++# Return 1 if target is SH2A +++proc check_effective_target_sh2a { } { +++ return [check_no_compiler_messages sh2a object { +++ #ifndef __SH2A__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target is SH1 +++proc check_effective_target_sh1 { } { +++ return [check_no_compiler_messages sh1 object { +++ #ifndef __SH1__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target is SH4A +++proc check_effective_target_sh4a { } { +++ return [check_no_compiler_messages sh4a object { +++ #ifndef __SH4A__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target is big endian +++proc check_effective_target_big_endian { } { +++ return [check_no_compiler_messages big_endian object { +++ #if __BYTE_ORDER__ != __ORDER_BIG_ENDIAN__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target is little endian +++proc check_effective_target_little_endian { } { +++ return [check_no_compiler_messages little_endian object { +++ #if __BYTE_ORDER__ != __ORDER_LITTLE_ENDIAN__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has any FPU (single or double precision) +++proc check_effective_target_any_fpu { } { +++ return [check_no_compiler_messages any_fpu object { +++ #ifndef __SH_FPU_ANY__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has a double precision FPU which is allowed to be +++# used by the compiler as such. +++proc check_effective_target_double_fpu { } { +++ return [check_no_compiler_messages double_fpu object { +++ #ifndef __SH_FPU_DOUBLE__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has a double precision FPU but it is only being used +++# in single precision mode by the compiler +++proc check_effective_target_use_single_only_fpu { } { +++ return [check_no_compiler_messages use_single_only_fpu object { +++ #if !(defined (__SH2A_SINGLE_ONLY__) \ +++ || defined (__SH4_SINGLE_ONLY__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has an FPU and the default mode is single +++proc check_effective_target_default_single_fpu { } { +++ return [check_no_compiler_messages default_single_fpu object { +++ #if !(defined (__SH2E__) || defined (__SH3E__) \ +++ || defined (__SH2A_SINGLE__) \ +++ || defined (__SH2A_SINGLE_ONLY__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target has no FPU +++proc check_effective_target_no_fpu { } { +++ return [check_no_compiler_messages no_fpu object { +++ #ifdef __SH_FPU_ANY__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++ +++# Return 1 if the target has XF regs +++proc check_effective_target_has_xf_regs { } { +++ return [check_no_compiler_messages has_xf_regs object { +++ #if !(defined (__SH_FPU_ANY__) \ +++ && (defined (__SH4__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__))) +++ #error "" +++ #endif +++ } ""] +++} +++ +++ +++# Return 1 if the target can do the fsca insn +++proc check_effective_target_has_fsca { } { +++ return [check_no_compiler_messages has_fsca object { +++ #if !(defined (__SH_FPU_ANY__) \ +++ && (defined (__SH4__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__))) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target can do the fsrra insn +++proc check_effective_target_has_fsrra { } { +++ return [check_no_compiler_messages has_fsrra object { +++ #if !(defined (__SH_FPU_ANY__) \ +++ && (defined (__SH4__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__))) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target can do the fpchg insn +++proc check_effective_target_has_fpchg { } { +++ return [check_no_compiler_messages has_fpchg object { +++ #if !(defined (__SH4A__) && defined (__SH_FPU_ANY__) \ +++ && !defined (__SH4_SINGLE_ONLY__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target can do dynamic shifts +++proc check_effective_target_has_dyn_shift { } { +++ return [check_no_compiler_messages has_dyn_shift object { +++ #if !(defined (__SH3__) \ +++ || defined (__SH3E__) \ +++ || defined (__SH2A__) \ +++ || defined (__SH4__) \ +++ || defined (__SH4_NOFPU__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the mfmovd option is enabled +++proc check_effective_target_fmovd_enabled { } { +++ return [check_no_compiler_messages fmovd_enabled object { +++ #ifndef __FMOVD_ENABLED__ +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target supports privileged mode +++proc check_effective_target_has_privileged { } { +++ return [check_no_compiler_messages has_privileged object { +++ #if !(defined (__SH3__) \ +++ || defined (__SH3E__) \ +++ || defined (__SH4__) \ +++ || defined (__SH4_NOFPU__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if the target supports the prefetch insn +++proc check_effective_target_has_pref { } { +++ return [check_no_compiler_messages has_pref object { +++ #if !(defined (__SH3__) \ +++ || defined (__SH3E__) \ +++ || defined (__SH4__) \ +++ || defined (__SH4_NOFPU__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target does banked r0..r7 regs type of ISRs +++proc check_effective_target_banked_r0r7_isr { } { +++ return [check_no_compiler_messages banked_r0r7_isr object { +++ #if !(defined (__SH3__) || defined (__SH3E__) \ +++ || defined (__SH4__) \ +++ || defined (__SH4_SINGLE__) \ +++ || defined (__SH4_SINGLE_ONLY__) \ +++ || defined (__SH4_NOFPU__) \ +++ || defined (__SH4A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target does stack only type of ISRs +++proc check_effective_target_stack_save_isr { } { +++ return [check_no_compiler_messages stack_save_isr object { +++ #if !(defined (__SH1__) \ +++ || defined (__SH2__) \ +++ || defined (__SH2E__) \ +++ || defined (__SH2A__)) +++ #error "" +++ #endif +++ } ""] +++} +++ +++# Return 1 if target supports atomic-model=soft-gusa +++proc check_effective_target_atomic_model_soft_gusa_available { } { +++ return [check_no_compiler_messages atomic_model_soft_gusa_available object { +++ int x = 0; +++ } "-matomic-model=soft-gusa"] +++} +++ +++# Return 1 if target supports atomic-model=soft-tcb +++proc check_effective_target_atomic_model_soft_tcb_available { } { +++ return [check_no_compiler_messages atomic_model_soft_tcb_available object { +++ int x = 0; +++ } "-matomic-model=soft-tcb,gbr-offset=0"] +++} +++ +++# Return 1 if target supports atomic-model=soft-imask +++proc check_effective_target_atomic_model_soft_imask_available { } { +++ return [check_no_compiler_messages atomic_model_soft_imask_available object { +++ int x = 0; +++ } "-matomic-model=soft-imask -mno-usermode"] +++} +++ +++# Return 1 if target supports atomic-model=hard-llcs +++proc check_effective_target_atomic_model_hard_llcs_available { } { +++ return [check_no_compiler_messages atomic_model_hard_llcs_available object { +++ int x = 0; +++ } "-matomic-model=hard-llcs"] +++} +++ +++# If a testcase doesn't have special options, use these. +++global DEFAULT_CXXFLAGS +++if ![info exists DEFAULT_CXXFLAGS] then { +++ set DEFAULT_CXXFLAGS " -pedantic-errors" +++} +++ +++# Initialize `dg'. +++dg-init +++ +++# Main loop. +++gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.C]] "" $DEFAULT_CXXFLAGS +++ +++ +++# All done. +++dg-finish ++diff --git a/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c b/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c ++new file mode 100644 ++index 00000000000..94fd6afaab3 ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.target/sh/pr55212-c248.c ++@@ -0,0 +1,31 @@ +++/* { dg-do run } */ +++/* { dg-options "-O2 -m4 -mlra -ffixed-r7 -ffixed-r8 -ffixed-r9 -ffixed-r10 -ffixed-r11 -ffixed-r12 -ffixed-r13" } */ +++#include +++#include +++ +++typedef struct { int c[64]; } obj; +++obj obj0; +++obj obj1; +++ +++void __attribute__ ((noinline)) +++bar (int a, int b, int c, int d, obj *q) +++{ +++ if (q->c[0] != 0x12345678 || q->c[1] != 0xdeadbeef) +++ abort (); +++} +++ +++void foo (obj *p) +++{ +++ obj bobj; +++ bobj = *p; +++ bar (0, 0, 0, 0, &bobj); +++} +++ +++int +++main () +++{ +++ obj0.c[0] = 0x12345678; +++ obj0.c[1] = 0xdeadbeef; +++ foo (&obj0); +++ exit (0); +++} ++-- ++2.50.0 ++ diff --cc debian/patches/sh-math-fixes.diff index 0000000,0000000..1a46519 new file mode 100644 --- /dev/null +++ b/debian/patches/sh-math-fixes.diff @@@ -1,0 -1,0 +1,128 @@@ ++From f1496a2ebee717137ba0b3c96aa4cbf8c96f51ec Mon Sep 17 00:00:00 2001 ++From: Jiaxun Yang ++Date: Sat, 19 Apr 2025 08:07:58 -0600 ++Subject: [PATCH] [PATCH v2] sh: Correct NaN signalling bit and propagation ++ rules [PR111814] ++ ++As per architecture, SuperH has a reversed NaN signalling bit ++vs IEEE754-2008, it also has a NaN propgation rule similar to ++MIPS style. ++ ++Use mips style float format and mode for all float types, and ++correct sfp-machine header accordingly. ++ ++ PR target/111814 ++ ++gcc/ChangeLog: ++ ++ * config/sh/sh-modes.def (RESET_FLOAT_FORMAT): Use mips format. ++ (FLOAT_MODE): Use mips mode. ++ ++libgcc/ChangeLog: ++ ++ * config/sh/sfp-machine.h (_FP_NANFRAC_B): Reverse signaling bit. ++ (_FP_NANFRAC_H): Likewise. ++ (_FP_NANFRAC_S): Likewise. ++ (_FP_NANFRAC_D): Likewise. ++ (_FP_NANFRAC_Q): Likewise. ++ (_FP_KEEPNANFRACP): Enable for target. ++ (_FP_QNANNEGATEDP): Enable for target. ++ (_FP_CHOOSENAN): Port from MIPS. ++ ++gcc/testsuite/ChangeLog: ++ ++ * gcc.target/sh/pr111814.c: New test. ++--- ++ gcc/config/sh/sh-modes.def | 6 +++++ ++ gcc/testsuite/gcc.target/sh/pr111814.c | 7 +++++ ++ libgcc/config/sh/sfp-machine.h | 36 ++++++++++++++++---------- ++ 3 files changed, 36 insertions(+), 13 deletions(-) ++ create mode 100644 gcc/testsuite/gcc.target/sh/pr111814.c ++ ++diff --git a/src/gcc/config/sh/sh-modes.def b/src/gcc/config/sh/sh-modes.def ++index 80650b429e4..e31ae694a48 100644 ++--- a/src/gcc/config/sh/sh-modes.def +++++ b/src/gcc/config/sh/sh-modes.def ++@@ -17,6 +17,12 @@ You should have received a copy of the GNU General Public License ++ along with GCC; see the file COPYING3. If not see ++ . */ ++ +++/* SH has the same reversed quiet bit as MIPS. */ +++RESET_FLOAT_FORMAT (SF, mips_single_format); +++RESET_FLOAT_FORMAT (DF, mips_double_format); +++/* TFmode: IEEE quad floating point (software). */ +++FLOAT_MODE (TF, 16, mips_quad_format); +++ ++ /* Vector modes. */ ++ VECTOR_MODE (INT, QI, 2); /* V2QI */ ++ VECTOR_MODES (INT, 4); /* V4QI V2HI */ ++diff --git a/src/gcc/testsuite/gcc.target/sh/pr111814.c b/src/gcc/testsuite/gcc.target/sh/pr111814.c ++new file mode 100644 ++index 00000000000..a88e5d786ba ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.target/sh/pr111814.c ++@@ -0,0 +1,7 @@ +++/* Verify that __builtin_nan("") produces a constant matches +++ architecture specification. */ +++/* { dg-do compile } */ +++ +++double d = __builtin_nan (""); +++ +++/* { dg-final { scan-assembler "\t.long\t-1\n\t.long\t2146959359\n" } } */ ++diff --git a/src/libgcc/config/sh/sfp-machine.h b/src/libgcc/config/sh/sfp-machine.h ++index 66984d45755..67bc41516a3 100644 ++--- a/src/libgcc/config/sh/sfp-machine.h +++++ b/src/libgcc/config/sh/sfp-machine.h ++@@ -39,11 +39,11 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see ++ #define _FP_DIV_MEAT_D(R,X,Y) _FP_DIV_MEAT_2_udiv(D,R,X,Y) ++ #define _FP_DIV_MEAT_Q(R,X,Y) _FP_DIV_MEAT_4_udiv(Q,R,X,Y) ++ ++-#define _FP_NANFRAC_B _FP_QNANBIT_B ++-#define _FP_NANFRAC_H _FP_QNANBIT_H ++-#define _FP_NANFRAC_S _FP_QNANBIT_S ++-#define _FP_NANFRAC_D _FP_QNANBIT_D, 0 ++-#define _FP_NANFRAC_Q _FP_QNANBIT_Q, 0, 0, 0 +++#define _FP_NANFRAC_B (_FP_QNANBIT_B - 1) +++#define _FP_NANFRAC_H (_FP_QNANBIT_H - 1) +++#define _FP_NANFRAC_S (_FP_QNANBIT_S - 1) +++#define _FP_NANFRAC_D (_FP_QNANBIT_D - 1), -1 +++#define _FP_NANFRAC_Q (_FP_QNANBIT_Q - 1), -1, -1, -1 ++ ++ /* The type of the result of a floating point comparison. This must ++ match __libgcc_cmp_return__ in GCC for the target. */ ++@@ -56,14 +56,24 @@ typedef int __gcc_CMPtype __attribute__ ((mode (__libgcc_cmp_return__))); ++ #define _FP_NANSIGN_D 0 ++ #define _FP_NANSIGN_Q 0 ++ ++-#define _FP_KEEPNANFRACP 0 ++-#define _FP_QNANNEGATEDP 0 ++- ++-#define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ ++- do { \ ++- R##_s = _FP_NANSIGN_##fs; \ ++- _FP_FRAC_SET_##wc(R,_FP_NANFRAC_##fs); \ ++- R##_c = FP_CLS_NAN; \ +++#define _FP_KEEPNANFRACP 1 +++#define _FP_QNANNEGATEDP 1 +++ +++/* X is chosen unless one of the NaNs is sNaN. */ +++# define _FP_CHOOSENAN(fs, wc, R, X, Y, OP) \ +++ do { \ +++ if ((_FP_FRAC_HIGH_RAW_##fs(X) | \ +++ _FP_FRAC_HIGH_RAW_##fs(Y)) & _FP_QNANBIT_##fs) \ +++ { \ +++ R##_s = _FP_NANSIGN_##fs; \ +++ _FP_FRAC_SET_##wc(R,_FP_NANFRAC_##fs); \ +++ } \ +++ else \ +++ { \ +++ R##_s = X##_s; \ +++ _FP_FRAC_COPY_##wc(R,X); \ +++ } \ +++ R##_c = FP_CLS_NAN; \ ++ } while (0) ++ ++ #define _FP_TININESS_AFTER_ROUNDING 1 ++-- ++2.50.0 ++ diff --cc debian/patches/skip-bootstrap-multilib.diff index 0000000,0000000..a07b8c1 new file mode 100644 --- /dev/null +++ b/debian/patches/skip-bootstrap-multilib.diff @@@ -1,0 -1,0 +1,22 @@@ ++# DP: Skip non-default multilib and libstdc++-v3 debug builds in bootstrap builds ++ ++--- a/src/config-ml.in +++++ b/src/config-ml.in ++@@ -492,6 +492,17 @@ esac ++ # Tests like `if [ -n "$multidirs" ]' require it. ++ multidirs=`echo "$multidirs" | sed -e 's/^[ ][ ]*//' -e 's/[ ][ ]*$//' -e 's/[ ][ ]*/ /g'` ++ +++# stage1 and stage2 builds of the non-default multilib configurations +++# are not needed; skip these to save some build time. +++if [ -f ../../stage_final ] && [ -f ../../stage_current ]; then +++ stage_final=`cat ../../stage_final` +++ stage_current=`cat ../../stage_current` +++ if [ "$stage_current" != "$stage_final" ]; then +++ echo "Skip `basename $ml_realsrcdir` non-default multilibs for bootstrap stage $stage_current" +++ multidirs= +++ fi +++fi +++ ++ # Add code to library's top level makefile to handle building the multilib ++ # subdirs. ++ diff --cc debian/patches/sparc64-biarch-long-double-128.diff index 0000000,0000000..7c80575 new file mode 100644 --- /dev/null +++ b/debian/patches/sparc64-biarch-long-double-128.diff @@@ -1,0 -1,0 +1,33 @@@ ++# DP: Fix --with-long-double-128 for sparc32 when defaulting to 64-bit. ++ ++On sparc, the --with-long-double-128 option doesn't change anything for ++a 64-bit compiler, as it always default to 128-bit long doubles. For ++a 32/64-bit compiler defaulting to 32-bit this correctly control the ++size of long double of the 32-bit compiler, however for a 32/64-bit ++compiler defaulting to 64-bit, the built-in specs force the ++-mlong-double-64 option. This makes the option useless in this case. ++ ++The patch below fixes that by removing the -mlong-double-64 from the ++built-in spec, using the default instead. ++ ++Changelog gcc/ ++ ++2013-12-04 Aurelien Jarno ++ ++ * config/sparc/linux64.h (CC1_SPEC): When defaulting to 64-bit, ++ don't force -mlong-double-64 when -m32 or -mv8plus is given. ++ ++--- a/src/gcc/config/sparc/linux64.h +++++ b/src/gcc/config/sparc/linux64.h ++@@ -160,9 +160,9 @@ extern const char *host_detect_local_cpu ++ #else ++ #define CC1_SPEC GNU_USER_TARGET_CC1_SPEC ASAN_CC1_SPEC \ ++ "%{m32:%{m64:%emay not use both -m32 and -m64}} \ ++-%{m32:-mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ +++%{m32:-mptr32 -mno-stack-bias \ ++ %{!mcpu*:-mcpu=cypress}} \ ++-%{mv8plus:-m32 -mptr32 -mno-stack-bias %{!mlong-double-128:-mlong-double-64} \ +++%{mv8plus:-m32 -mptr32 -mno-stack-bias \ ++ %{!mcpu*:-mcpu=v9}} \ ++ %{!m32:%{!mcpu*:-mcpu=ultrasparc}} \ ++ %{!mno-vis:%{!m32:%{!mcpu=v9:-mvis}}}" diff --cc debian/patches/t-libunwind-elf-Wl-z-defs.diff index 0000000,0000000..082d4d5 new file mode 100644 --- /dev/null +++ b/debian/patches/t-libunwind-elf-Wl-z-defs.diff @@@ -1,0 -1,0 +1,13 @@@ ++# DP: strip -z,defs from linker options for internal libunwind. ++ ++--- a/src/libgcc/config/t-libunwind-elf +++++ b/src/libgcc/config/t-libunwind-elf ++@@ -31,7 +31,7 @@ SHLIBUNWIND_SONAME = @shlib_base_name@.s ++ ++ SHLIBUNWIND_LINK = $(CC) $(LIBGCC2_CFLAGS) -shared \ ++ -nodefaultlibs -Wl,-h,$(SHLIBUNWIND_SONAME) \ ++- -Wl,-z,text -Wl,-z,defs -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ +++ -Wl,-z,text -o $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME).tmp \ ++ @multilib_flags@ $(SHLIB_OBJS) -lc && \ ++ rm -f $(SHLIB_DIR)/$(SHLIB_SOLINK) && \ ++ if [ -f $(SHLIB_DIR)/$(SHLIBUNWIND_SONAME) ]; then \ diff --cc debian/patches/testsuite-glibc-warnings.diff index 0000000,0000000..9f28e1d new file mode 100644 --- /dev/null +++ b/debian/patches/testsuite-glibc-warnings.diff @@@ -1,0 -1,0 +1,16 @@@ ++# DP: fix testcases that triggered -Wunused-result with glibc ++# DP: Author: Steve Beattie ++--- ++ src/gcc/testsuite/c-c++-common/cilk-plus/AN/comma_exp.c | 2 +- ++ src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c | 1 + ++ 2 files changed, 2 insertions(+), 1 deletion(-) ++ ++--- a/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c +++++ b/src/gcc/testsuite/c-c++-common/tsan/fd_pipe_race.c ++@@ -1,5 +1,5 @@ ++ /* { dg-shouldfail "tsan" } */ ++-/* { dg-additional-options "-ldl" } */ +++/* { dg-additional-options "-Wno-unused-result -ldl" } */ ++ ++ #include ++ #include diff --cc debian/patches/testsuite-hardening-format.diff index 0000000,0000000..a71ff8a new file mode 100644 --- /dev/null +++ b/debian/patches/testsuite-hardening-format.diff @@@ -1,0 -1,0 +1,304 @@@ ++#! /bin/sh -e ++ ++# All lines beginning with `# DPATCH:' are a description of the patch. ++# DP: Description: use -Wno-format on tests that cannot be adjusted other ways. ++# DP: Author: Kees Cook ++# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 ++ ++dir= ++if [ $# -eq 3 -a "$2" = '-d' ]; then ++ pdir="-d $3" ++ dir="$3/" ++elif [ $# -ne 1 ]; then ++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" ++ exit 1 ++fi ++case "$1" in ++ -patch) ++ patch $pdir -f --no-backup-if-mismatch -p1 < $0 ++ #cd ${dir}gcc && autoconf ++ ;; ++ -unpatch) ++ patch $pdir -f --no-backup-if-mismatch -R -p1 < $0 ++ #rm ${dir}gcc/configure ++ ;; ++ *) ++ echo >&2 "`basename $0`: script expects -patch|-unpatch as argument" ++ exit 1 ++esac ++exit 0 ++ ++--- ++ src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c | 1 + ++ src/gcc/testsuite/g++.dg/abi/pragma-pack1.C | 2 ++ ++ src/gcc/testsuite/g++.dg/abi/regparm1.C | 1 + ++ src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C | 1 + ++ src/gcc/testsuite/g++.dg/torture/pr51436.C | 1 + ++ src/gcc/testsuite/g++.old-deja/g++.law/weak.C | 2 +- ++ src/gcc/testsuite/g++.old-deja/g++.other/std1.C | 1 + ++ src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x | 5 +++++ ++ src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x | 5 +++++ ++ src/gcc/testsuite/gcc.dg/charset/builtin2.c | 2 +- ++ src/gcc/testsuite/gcc.dg/format/format.exp | 2 +- ++ src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c | 2 ++ ++ src/gcc/testsuite/gcc.dg/pr30473.c | 2 +- ++ src/gcc/testsuite/gcc.dg/pr38902.c | 2 +- ++ src/gcc/testsuite/gcc.dg/pr59418.c | 2 +- ++ src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/tree-ssa/isolate-4.c | 2 +- ++ src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m | 2 +- ++ 28 files changed, 40 insertions(+), 18 deletions(-) ++ ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.c-torture/execute/vfprintf-chk-1.x ++@@ -0,0 +1,5 @@ +++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to +++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 +++ +++set additional_flags "-U_FORTIFY_SOURCE" +++return 0 ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.c-torture/execute/vprintf-chk-1.x ++@@ -0,0 +1,5 @@ +++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to +++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 +++ +++set additional_flags "-U_FORTIFY_SOURCE" +++return 0 ++--- a/src/gcc/testsuite/gcc.dg/charset/builtin2.c +++++ b/src/gcc/testsuite/gcc.dg/charset/builtin2.c ++@@ -3,7 +3,7 @@ ++ ++ /* { dg-do compile } */ ++ /* { dg-require-iconv "IBM1047" } */ ++-/* { dg-options "-O2 -fexec-charset=IBM1047" } */ +++/* { dg-options "-O2 -fexec-charset=IBM1047 -Wno-format" } */ ++ /* { dg-final { scan-assembler-not "printf" } } */ ++ /* { dg-final { scan-assembler-not "fprintf" } } */ ++ /* { dg-final { scan-assembler-not "sprintf" } } */ ++--- a/src/gcc/testsuite/gcc.dg/format/format.exp +++++ b/src/gcc/testsuite/gcc.dg/format/format.exp ++@@ -26,7 +26,7 @@ load_lib gcc-dg.exp ++ load_lib torture-options.exp ++ ++ torture-init ++-set-torture-options [list { } { -DWIDE } ] +++set-torture-options [list { -Wformat=0 } { -DWIDE -Wformat=0 } ] ++ ++ dg-init ++ gcc-dg-runtest [lsort [glob -nocomplain $srcdir/$subdir/*.\[cS\]]] "" "" ++--- a/src/gcc/testsuite/gcc.dg/pr30473.c +++++ b/src/gcc/testsuite/gcc.dg/pr30473.c ++@@ -1,7 +1,7 @@ ++ /* PR middle-end/30473 */ ++ /* Make sure this doesn't ICE. */ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2" } */ +++/* { dg-options "-O2 -Wno-format" } */ ++ ++ extern int sprintf (char *, const char *, ...); ++ ++--- a/src/gcc/testsuite/gcc.dg/pr38902.c +++++ b/src/gcc/testsuite/gcc.dg/pr38902.c ++@@ -1,6 +1,6 @@ ++ /* PR target/38902 */ ++ /* { dg-do run } */ ++-/* { dg-options "-O2 -fstack-protector" } */ +++/* { dg-options "-O2 -fstack-protector -Wno-format" } */ ++ /* { dg-require-effective-target fstack_protector } */ ++ ++ #ifdef DEBUG ++--- a/src/gcc/testsuite/gcc.dg/pr59418.c +++++ b/src/gcc/testsuite/gcc.dg/pr59418.c ++@@ -2,7 +2,7 @@ ++ /* Reported by Ryan Mansfield */ ++ ++ /* { dg-do compile } */ ++-/* { dg-options "-Os -g" } */ +++/* { dg-options "-Os -g -Wno-format-zero-length" } */ ++ /* { dg-options "-mcpu=unset -march=armv7-a+fp -mfloat-abi=hard -Os -g" { target { arm*-*-* && { ! arm_thumb1 } } } } */ ++ ++ extern int printf (const char *__format, ...); ++--- a/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c +++++ b/src/gcc/testsuite/gcc.dg/ipa/ipa-sra-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do run } */ ++-/* { dg-options "-O2 -fipa-sra -fdump-ipa-sra-details" } */ +++/* { dg-options "-O2 -fipa-sra -fdump-ipa-sra-details -Wformat=0" } */ ++ ++ struct bovid ++ { ++--- a/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c +++++ b/src/gcc/testsuite/gcc.dg/lto/20090218-2_0.c ++@@ -1,3 +1,5 @@ +++/* { dg-lto-options "-Wno-nonnull" } */ +++ ++ void set_mem_alias_set (); ++ void emit_push_insn () { ++ set_mem_alias_set (); ++--- a/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c +++++ b/src/gcc/testsuite/c-c++-common/torture/vector-compare-1.c ++@@ -1,4 +1,5 @@ ++ /* { dg-do run } */ +++/* { dg-options "-Wformat=0" } */ ++ #define vector(elcount, type) \ ++ __attribute__((vector_size((elcount)*sizeof(type)))) type ++ ++--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c +++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-chk-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2 -fdump-tree-fab1" } */ +++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ ++ ++ #include ++ ++--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c +++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vprintf-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2 -fdump-tree-fab1" } */ +++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ ++ ++ #include ++ ++--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c +++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2 -fdump-tree-fab1" } */ +++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ ++ ++ extern int printf (const char *, ...); ++ volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; ++--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c +++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-printf-chk-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2 -fdump-tree-fab1" } */ +++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ ++ ++ extern int __printf_chk (int, const char *, ...); ++ volatile int vi0, vi1, vi2, vi3, vi4, vi5, vi6, vi7, vi8, vi9, via; ++--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c +++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2 -fdump-tree-fab1" } */ +++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ ++ ++ typedef struct { int i; } FILE; ++ FILE *fp; ++--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c +++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-fprintf-chk-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2 -fdump-tree-fab1" } */ +++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ ++ ++ typedef struct { int i; } FILE; ++ FILE *fp; ++--- a/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c +++++ b/src/gcc/testsuite/gcc.dg/torture/tls/tls-test.c ++@@ -1,7 +1,7 @@ ++ /* { dg-do run } */ ++ /* { dg-require-effective-target tls } */ ++ /* { dg-require-effective-target pthread } */ ++-/* { dg-options "-pthread" } */ +++/* { dg-options "-pthread -Wformat=0" } */ ++ ++ #include ++ extern int printf (char *,...); ++--- a/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m +++++ b/src/gcc/testsuite/objc.dg/torture/strings/const-str-3.m ++@@ -2,7 +2,7 @@ ++ /* Developed by Markus Hitter . */ ++ /* { dg-do run } */ ++ /* { dg-xfail-run-if "Needs OBJC2 ABI" { *-*-darwin* && { lp64 && { ! objc2 } } } { "-fnext-runtime" } { "" } } */ ++-/* { dg-options "-fconstant-string-class=Foo" } */ +++/* { dg-options "-fconstant-string-class=Foo -Wno-format-security" } */ ++ /* { dg-options "-mno-constant-cfstrings -fconstant-string-class=Foo" { target *-*-darwin* } } */ ++ ++ #include "../../../objc-obj-c++-shared/objc-test-suite-types.h" ++--- a/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C +++++ b/src/gcc/testsuite/g++.dg/abi/pragma-pack1.C ++@@ -1,5 +1,7 @@ ++ // PR c++/7046 ++ +++// { dg-options "-Wformat=0" } +++ ++ extern "C" int printf (const char *, ...); ++ ++ #pragma pack(4) ++--- a/src/gcc/testsuite/g++.dg/abi/regparm1.C +++++ b/src/gcc/testsuite/g++.dg/abi/regparm1.C ++@@ -1,6 +1,7 @@ ++ // PR c++/29911 (9381) ++ // { dg-do run { target i?86-*-* x86_64-*-* } } ++ // { dg-require-effective-target c++11 } +++// { dg-options "-Wformat=0" } ++ ++ extern "C" int printf(const char *, ...); ++ ++--- a/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C +++++ b/src/gcc/testsuite/g++.dg/cpp0x/constexpr-tuple.C ++@@ -1,5 +1,6 @@ ++ // PR c++/53202 ++ // { dg-do run { target c++11 } } +++// { dg-options "-Wformat=0" } ++ ++ #include ++ ++--- a/src/gcc/testsuite/g++.dg/torture/pr51436.C +++++ b/src/gcc/testsuite/g++.dg/torture/pr51436.C ++@@ -1,4 +1,5 @@ ++ /* { dg-do compile } */ +++/* { dg-options "-Wno-nonnull" } */ ++ /* { dg-additional-options "-Wno-return-type" } */ ++ ++ typedef __SIZE_TYPE__ size_t; ++--- a/src/gcc/testsuite/g++.old-deja/g++.law/weak.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.law/weak.C ++@@ -1,6 +1,6 @@ ++ // { dg-do link { target i?86-*-linux* i?86-*-gnu* x86_64-*-linux* } } ++ // { dg-require-effective-target static } ++-// { dg-options "-static" } +++// { dg-options "-static -Wno-nonnull" } ++ // { dg-skip-if "requires hosted libstdc++ for iostream" { ! hostedlib } } ++ ++ // Bug: g++ fails to instantiate operator<<. ++--- a/src/gcc/testsuite/g++.old-deja/g++.other/std1.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.other/std1.C ++@@ -1,4 +1,5 @@ ++ // { dg-do assemble } +++// { dg-options "-Wno-nonnull" } ++ // Origin: Mark Mitchell ++ ++ extern "C" int memcmp (const void * __s1, ++--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c +++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2 -fdump-tree-fab1" } */ +++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ ++ ++ #include ++ ++--- a/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c +++++ b/src/gcc/testsuite/gcc.dg/tree-ssa/builtin-vfprintf-chk-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do compile } */ ++-/* { dg-options "-O2 -fdump-tree-fab1" } */ +++/* { dg-options "-O2 -fdump-tree-fab1 -Wno-format-zero-length" } */ ++ ++ #include ++ diff --cc debian/patches/testsuite-hardening-printf-types.diff index 0000000,0000000..ffc761d new file mode 100644 --- /dev/null +++ b/debian/patches/testsuite-hardening-printf-types.diff @@@ -1,0 -1,0 +1,605 @@@ ++# DP: Description: adjust/standardize printf types to avoid -Wformat warnings. ++# DP: Author: Kees Cook ++# DP: Ubuntu: https://bugs.launchpad.net/bugs/344502 ++ ++--- a/src/gcc/testsuite/g++.dg/ext/align1.C +++++ b/src/gcc/testsuite/g++.dg/ext/align1.C ++@@ -16,6 +16,7 @@ float f1 __attribute__ ((aligned)); ++ int ++ main (void) ++ { ++- printf ("%d %d\n", __alignof (a1), __alignof (f1)); +++ // "%td" is not allowed by ISO C++, so use %p with a void * cast +++ printf ("%p %p\n", (void*)__alignof (a1), (void*)__alignof (f1)); ++ return (__alignof (a1) < __alignof (f1)); ++ } ++--- a/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.law/operators28.C ++@@ -14,7 +14,8 @@ void* new_test::operator new(size_t sz, ++ { ++ void *p; ++ ++- printf("%d %d %d\n", sz, count, type); +++ // ISO C++ does not support format size modifier "z", so use a cast +++ printf("%u %d %d\n", (unsigned int)sz, count, type); ++ ++ p = new char[sz * count]; ++ ((new_test *)p)->type = type; ++--- a/src/gcc/testsuite/gcc.dg/torture/matrix-2.c +++++ b/src/gcc/testsuite/gcc.dg/torture/matrix-2.c ++@@ -42,7 +42,7 @@ main (int argc, char **argv) ++ } ++ for (i = 0; i < ARCHnodes; i++) ++ for (j = 0; j < 3; j++) ++- printf ("%x\n",vel[i][j]); +++ printf ("%p\n",vel[i][j]); ++ /*if (i!=1 || j!=1)*/ ++ /*if (i==1 && j==1) ++ continue; ++@@ -82,14 +82,14 @@ mem_init (void) ++ for (j = 0; j < 3; j++) ++ { ++ vel[i][j] = (int *) malloc (ARCHnodes1 * sizeof (int)); ++- printf ("%x %d %d\n",vel[i][j], ARCHnodes1, sizeof (int)); +++ printf ("%p %d %d\n",vel[i][j], ARCHnodes1, (int)sizeof (int)); ++ } ++ } ++ for (i = 0; i < ARCHnodes; i++) ++ { ++ for (j = 0; j < 3; j++) ++ { ++- printf ("%x\n",vel[i][j]); +++ printf ("%p\n",vel[i][j]); ++ } ++ } ++ ++@@ -98,7 +98,7 @@ mem_init (void) ++ { ++ for (j = 0; j < 3; j++) ++ { ++- printf ("%x\n",vel[i][j]); +++ printf ("%p\n",vel[i][j]); ++ /*for (k = 0; k < ARCHnodes1; k++) ++ { ++ vel[i][j][k] = d; ++--- a/src/gcc/testsuite/gcc.dg/packed-vla.c +++++ b/src/gcc/testsuite/gcc.dg/packed-vla.c ++@@ -17,8 +17,8 @@ int func(int levels) ++ int b[4]; ++ } __attribute__ ((__packed__)) foo; ++ ++- printf("foo %d\n", sizeof(foo)); ++- printf("bar %d\n", sizeof(bar)); +++ printf("foo %d\n", (int)sizeof(foo)); +++ printf("bar %d\n", (int)sizeof(bar)); ++ ++ if (sizeof (foo) != sizeof (bar)) ++ abort (); ++--- a/src/gcc/testsuite/g++.dg/opt/alias2.C +++++ b/src/gcc/testsuite/g++.dg/opt/alias2.C ++@@ -30,14 +30,14 @@ public: ++ ++ ++ _Deque_base::~_Deque_base() { ++- printf ("bb %x %x\n", this, *_M_start._M_node); +++ printf ("bb %p %x\n", this, *_M_start._M_node); ++ } ++ ++ void ++ _Deque_base::_M_initialize_map() ++ { ++ yy = 0x123; ++- printf ("aa %x %x\n", this, yy); +++ printf ("aa %p %x\n", this, yy); ++ ++ _M_start._M_node = &yy; ++ _M_start._M_cur = yy; ++--- a/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.abi/vbase1.C ++@@ -33,7 +33,7 @@ struct VBase ++ void Offset () const ++ { ++ printf ("VBase\n"); ++- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); +++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); ++ } ++ }; ++ ++@@ -55,8 +55,8 @@ struct VDerived : virtual VBase ++ void Offset () const ++ { ++ printf ("VDerived\n"); ++- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); ++- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); +++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); +++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); ++ } ++ }; ++ struct B : virtual VBase ++@@ -65,8 +65,8 @@ struct B : virtual VBase ++ void Offset () const ++ { ++ printf ("B\n"); ++- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); ++- printf (" B::member %d\n", &this->B::member - (int *)this); +++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); +++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); ++ } ++ }; ++ struct MostDerived : B, virtual VDerived ++@@ -75,10 +75,10 @@ struct MostDerived : B, virtual VDerived ++ void Offset () const ++ { ++ printf ("MostDerived\n"); ++- printf (" VBase::member %d\n", &this->VBase::member - (int *)this); ++- printf (" B::member %d\n", &this->B::member - (int *)this); ++- printf (" VDerived::member %d\n", &this->VDerived::member - (int *)this); ++- printf (" MostDerived::member %d\n", &this->MostDerived::member - (int *)this); +++ printf (" VBase::member %d\n", (int)(&this->VBase::member - (int *)this)); +++ printf (" B::member %d\n", (int)(&this->B::member - (int *)this)); +++ printf (" VDerived::member %d\n", (int)(&this->VDerived::member - (int *)this)); +++ printf (" MostDerived::member %d\n", (int)(&this->MostDerived::member - (int *)this)); ++ } ++ }; ++ ++@@ -95,10 +95,10 @@ int main () ++ if (ctorVDerived != &dum.VDerived::member) ++ return 24; ++ ++- printf (" VBase::member %d\n", &dum.VBase::member - this_); ++- printf (" B::member %d\n", &dum.B::member - this_); ++- printf (" VDerived::member %d\n", &dum.VDerived::member - this_); ++- printf (" MostDerived::member %d\n", &dum.MostDerived::member - this_); +++ printf (" VBase::member %d\n", (int)(&dum.VBase::member - this_)); +++ printf (" B::member %d\n", (int)(&dum.B::member - this_)); +++ printf (" VDerived::member %d\n", (int)(&dum.VDerived::member - this_)); +++ printf (" MostDerived::member %d\n", (int)(&dum.MostDerived::member - this_)); ++ dum.MostDerived::Offset (); ++ dum.B::Offset (); ++ dum.VDerived::Offset (); ++--- a/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.brendan/template8.C ++@@ -15,6 +15,6 @@ int main(){ ++ ++ Double_alignt<20000> heap; ++ ++- printf(" &heap.array[0] = %d, &heap.for_alignt = %d\n", &heap.array[0], &heap.for_alignt); +++ printf(" &heap.array[0] = %p, &heap.for_alignt = %p\n", (void*)&heap.array[0], (void*)&heap.for_alignt); ++ ++ } ++--- a/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.eh/ptr1.C ++@@ -16,7 +16,7 @@ int main() ++ } ++ ++ catch (E *&e) { ++- printf ("address of e is 0x%lx\n", (__SIZE_TYPE__)e); +++ printf ("address of e is %p\n", (void *)e); ++ return !((__SIZE_TYPE__)e != 5 && e->x == 5); ++ } ++ return 2; ++--- a/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.jason/access23.C ++@@ -42,19 +42,19 @@ public: ++ void DoSomething() { ++ PUB_A = 0; ++ Foo::A = 0; ++- printf("%x\n",pX); +++ printf("%p\n",pX); ++ Foo::PUB.A = 0; ++- printf("%x\n",PUB.pX); +++ printf("%p\n",PUB.pX); ++ B = 0; ++- printf("%x\n",Foo::pY); +++ printf("%p\n",Foo::pY); ++ PRT_A = 0; ++ PRT.B = 0; ++- printf("%x\n",Foo::PRT.pY); +++ printf("%p\n",Foo::PRT.pY); ++ PRV_A = 0; // { dg-error "" } ++ Foo::C = 0; // { dg-error "" } ++- printf("%x\n",pZ); // { dg-error "" } +++ printf("%p\n",pZ); // { dg-error "" } ++ Foo::PRV.C = 0; // { dg-error "" } ++- printf("%x\n",PRV.pZ); // { dg-error "" } +++ printf("%p\n",PRV.pZ); // { dg-error "" } ++ } ++ }; ++ ++@@ -64,17 +64,17 @@ int main() ++ ++ a.PUB_A = 0; ++ a.A = 0; ++- printf("%x\n",a.pX); +++ printf("%p\n",a.pX); ++ a.PRT_A = 0; // { dg-error "" } ++ a.B = 0; // { dg-error "" } ++- printf("%x\n",a.pY); // { dg-error "" } +++ printf("%p\n",a.pY); // { dg-error "" } ++ a.PRV_A = 0; // { dg-error "" } ++ a.C = 0; // { dg-error "" } ++- printf("%x\n",a.pZ); // { dg-error "" } +++ printf("%p\n",a.pZ); // { dg-error "" } ++ a.PUB.A = 0; ++- printf("%x\n",a.PUB.pX); +++ printf("%p\n",a.PUB.pX); ++ a.PRT.B = 0; // { dg-error "" } ++- printf("%x\n",a.PRT.pY); // { dg-error "" } +++ printf("%p\n",a.PRT.pY); // { dg-error "" } ++ a.PRV.C = 0; // { dg-error "" } ++- printf("%x\n",a.PRV.pZ); // { dg-error "" } +++ printf("%p\n",a.PRV.pZ); // { dg-error "" } ++ } ++--- a/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.law/cvt8.C ++@@ -20,12 +20,12 @@ struct B { ++ B::operator const A&() const { ++ static A a; ++ a.i = i; ++- printf("convert B to A at %x\n", &a); +++ printf("convert B to A at %p\n", (void*)&a); ++ return a; ++ } ++ ++ void f(A &a) { // { dg-message "" } in passing argument ++- printf("A at %x is %d\n", &a, a.i); +++ printf("A at %p is %d\n", (void*)&a, a.i); ++ } ++ ++ int main() { ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/net35.C ++@@ -17,10 +17,10 @@ public: ++ ++ int main() { ++ C c; ++- printf("&c.x = %x\n", &c.x); ++- printf("&c.B1::x = %x\n", &c.B1::x); ++- printf("&c.B2::x = %x\n", &c.B2::x); ++- printf("&c.A::x = %x\n", &c.A::x); +++ printf("&c.x = %p\n", (void*)&c.x); +++ printf("&c.B1::x = %p\n", (void*)&c.B1::x); +++ printf("&c.B2::x = %p\n", (void*)&c.B2::x); +++ printf("&c.A::x = %p\n", (void*)&c.A::x); ++ if (&c.x != &c.B1::x ++ || &c.x != &c.B2::x ++ || &c.x != &c.A::x) ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/offset1.C ++@@ -6,7 +6,7 @@ int fail = 0; ++ class Foo { ++ public: ++ virtual void setName() { ++- printf("Foo at %x\n", this); +++ printf("Foo at %p\n", (void*)this); ++ if (vp != (void*)this) ++ fail = 1; ++ } ++@@ -15,7 +15,7 @@ public: ++ class Bar : public Foo { ++ public: ++ virtual void init(int argc, char **argv) { ++- printf("Bar's Foo at %x\n", (Foo*)this); +++ printf("Bar's Foo at %p\n", (void*)(Foo*)this); ++ vp = (void*)(Foo*)this; ++ setName(); ++ } ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p12306.C ++@@ -18,7 +18,7 @@ public: ++ if (ptr2 != &(*this).slist) ++ fail = 6; ++ ++- if (0) printf("at %x %x\n", (RWSlistIterator*)this, &(*this).slist); +++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)this, (void*)&(*this).slist); ++ } ++ }; ++ ++@@ -54,14 +54,14 @@ Sim_Event_Manager::Sim_Event_Manager () ++ void Sim_Event_Manager::post_event () { ++ ptr1 = (RWSlistIterator*)&last_posted_event_position_; ++ ptr2 = &((RWSlistIterator*)&last_posted_event_position_)->slist; ++- if (0) printf("at %x %x\n", (RWSlistIterator*)&last_posted_event_position_, ++- &((RWSlistIterator*)&last_posted_event_position_)->slist); +++ if (0) printf("at %p %p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, +++ (void*)&((RWSlistIterator*)&last_posted_event_position_)->slist); ++ if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) ++ fail = 1; ++ if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) ++ fail = 2; ++- if (0) printf("at %x ?%x\n", (RWSlistIterator*)&last_posted_event_position_, ++- &((RWSlistIterator&)last_posted_event_position_).slist); +++ if (0) printf("at %p ?%p\n", (void*)(RWSlistIterator*)&last_posted_event_position_, +++ (void*)&((RWSlistIterator&)last_posted_event_position_).slist); ++ if (ptr1 != (RWSlistIterator*)&last_posted_event_position_) ++ fail = 3; ++ if (ptr2 != &((RWSlistIterator&)last_posted_event_position_).slist) ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3579.C ++@@ -7,26 +7,26 @@ int num_x; ++ ++ class Y { ++ public: ++- Y () { printf("Y() this: %x\n", this); } ++- ~Y () { printf("~Y() this: %x\n", this); } +++ Y () { printf("Y() this: %p\n", (void*)this); } +++ ~Y () { printf("~Y() this: %p\n", (void*)this); } ++ }; ++ ++ class X { ++ public: ++ X () { ++ ++num_x; ++- printf("X() this: %x\n", this); +++ printf("X() this: %p\n", (void*)this); ++ Y y; ++ *this = (X) y; ++ } ++ ++- X (const Y & yy) { printf("X(const Y&) this: %x\n", this); ++num_x; } +++ X (const Y & yy) { printf("X(const Y&) this: %p\n", (void*)this); ++num_x; } ++ X & operator = (const X & xx) { ++- printf("X.op=(X&) this: %x\n", this); +++ printf("X.op=(X&) this: %p\n", (void*)this); ++ return *this; ++ } ++ ++- ~X () { printf("~X() this: %x\n", this); --num_x; } +++ ~X () { printf("~X() this: %p\n", (void*)this); --num_x; } ++ }; ++ ++ int main (int, char **) { ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708a.C ++@@ -38,7 +38,7 @@ public: ++ virtual void xx(int doit) { ++ --num; ++ if (ptr != this) ++- printf("FAIL\n%x != %x\n", ptr, this); +++ printf("FAIL\n%p != %p\n", ptr, (void*)this); ++ printf ("C is destructed.\n"); ++ B::xx (0); ++ if (doit) A::xx (1); ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708b.C ++@@ -48,7 +48,7 @@ public: ++ virtual void xx(int doit) { ++ --num; ++ if (ptr != this) { ++- printf("FAIL\n%x != %x\n", ptr, this); +++ printf("FAIL\n%p != %p\n", ptr, (void*)this); ++ exit(1); ++ } ++ printf ("D is destructed.\n"); ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p3708.C ++@@ -38,7 +38,7 @@ public: ++ virtual void xx(int doit) { ++ --num; ++ if (ptr != this) ++- printf("FAIL\n%x != %x\n", ptr, this); +++ printf("FAIL\n%p != %p\n", ptr, (void*)this); ++ printf ("C is destructed.\n"); ++ B::xx (0); ++ if (doit) A::xx (1); ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p646.C ++@@ -35,20 +35,20 @@ int foo::si = 0; ++ foo::foo () ++ { ++ si++; ++- printf ("new foo @ 0x%x; now %d foos\n", this, si); +++ printf ("new foo @ %p; now %d foos\n", (void*)this, si); ++ } ++ ++ foo::foo (const foo &other) ++ { ++ si++; ++- printf ("another foo @ 0x%x; now %d foos\n", this, si); +++ printf ("another foo @ %p; now %d foos\n", (void*)this, si); ++ *this = other; ++ } ++ ++ foo::~foo () ++ { ++ si--; ++- printf ("deleted foo @ 0x%x; now %d foos\n", this, si); +++ printf ("deleted foo @ %p; now %d foos\n", (void*)this, si); ++ } ++ ++ int ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p710.C ++@@ -32,7 +32,7 @@ class B ++ virtual ~B() {} ++ void operator delete(void*,size_t s) ++ { ++- printf("B::delete() %d\n",s); +++ printf("B::delete() %u\n",(unsigned int)s); ++ } ++ void operator delete(void*){} ++ }; ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/p789a.C ++@@ -13,10 +13,10 @@ struct foo ++ int x; ++ foo () { ++ x = count++; ++- printf("this %d = %x\n", x, (void *)this); +++ printf("this %d = %p\n", x, (void *)this); ++ } ++ virtual ~foo () { ++- printf("this %d = %x\n", x, (void *)this); +++ printf("this %d = %p\n", x, (void *)this); ++ --count; ++ } ++ }; ++@@ -31,7 +31,7 @@ int main () ++ { ++ for (int j = 0; j < 3; j++) ++ { ++- printf("&a[%d][%d] = %x\n", i, j, (void *)&array[i][j]); +++ printf("&a[%d][%d] = %p\n", i, j, (void *)&array[i][j]); ++ } ++ } ++ // The count should be nine, if not, fail the test. ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/pmf2.C ++@@ -42,7 +42,7 @@ B_table b; ++ bar jar; ++ ++ int main() { ++- printf("ptr to B_table=%x, ptr to A_table=%x\n",&b,(A_table*)&b); +++ printf("ptr to B_table=%p, ptr to A_table=%p\n",(void*)&b,(void*)(A_table*)&b); ++ B_table::B_ti_fn z = &B_table::func1; ++ int j = 1; ++ jar.call_fn_fn1(j,(void *)&z); ++--- a/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.mike/temp.C ++@@ -7,11 +7,11 @@ class T { ++ public: ++ T() { ++ i = 1; ++- printf("T() at %x\n", this); +++ printf("T() at %p\n", (void*)this); ++ } ++ T(const T& o) { ++ i = o.i; ++- printf("T(const T&) at %x <-- %x\n", this, &o); +++ printf("T(const T&) at %p <-- %p\n", (void*)this, (void*)&o); ++ } ++ T operator +(const T& o) { ++ T r; ++@@ -21,7 +21,7 @@ public: ++ operator int () { ++ return i; ++ } ++- ~T() { printf("~T() at %x\n", this); } +++ ~T() { printf("~T() at %p\n", (void*)this); } ++ } s, b; ++ ++ int foo() { return getenv("TEST") == 0; } ++--- a/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.other/temporary1.C ++@@ -5,16 +5,16 @@ int c, d; ++ class Foo ++ { ++ public: ++- Foo() { printf("Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++c; } ++- Foo(Foo const &) { printf("Foo(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } ++- ~Foo() { printf("~Foo() 0x%08lx\n", (__SIZE_TYPE__)this); ++d; } +++ Foo() { printf("Foo() %p\n", (void*)this); ++c; } +++ Foo(Foo const &) { printf("Foo(Foo const &) %p\n", (void*)this); } +++ ~Foo() { printf("~Foo() %p\n", (void*)this); ++d; } ++ }; ++ ++ // Bar creates constructs a temporary Foo() as a default ++ class Bar ++ { ++ public: ++- Bar(Foo const & = Foo()) { printf("Bar(Foo const &) 0x%08lx\n", (__SIZE_TYPE__)this); } +++ Bar(Foo const & = Foo()) { printf("Bar(Foo const &) %p\n", (void*)this); } ++ }; ++ ++ void fakeRef(Bar *) ++--- a/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.other/virtual8.C ++@@ -4,7 +4,7 @@ extern "C" int printf (const char*, ...) ++ struct A ++ { ++ virtual void f () { ++- printf ("%x\n", this); +++ printf ("%p\n", (void*)this); ++ } ++ }; ++ ++--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp23.C ++@@ -13,7 +13,7 @@ struct S ++ ++ template ++ void f(U u) ++- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } +++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } ++ ++ int c[16]; ++ }; ++--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp24.C ++@@ -13,7 +13,7 @@ struct S ++ ++ template ++ void f(U u) ++- { printf ("In S::f(U)\nsizeof(U) == %d\n", sizeof(u)); } +++ { printf ("In S::f(U)\nsizeof(U) == %d\n", (int)sizeof(u)); } ++ ++ int c[16]; ++ }; ++--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp25.C ++@@ -6,7 +6,7 @@ template ++ struct S ++ { ++ template ++- void f(U u) { printf ("%d\n", sizeof (U)); } +++ void f(U u) { printf ("%d\n", (int)sizeof (U)); } ++ ++ int i[4]; ++ }; ++--- a/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/memtemp26.C ++@@ -16,7 +16,7 @@ template ++ template ++ void S::f(U u) ++ { ++- printf ("%d\n", sizeof (U)); +++ printf ("%d\n", (int)sizeof (U)); ++ } ++ ++ ++--- a/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.pt/t39.C ++@@ -10,9 +10,9 @@ struct frob { ++ ++ template ++ void frob::print () { ++- printf ("this = %08x\n", this); ++- printf (" ptr = %08x\n", ptr); ++- printf (" values = %x %x %x ...\n", ptr[0], ptr[1], ptr[2]); +++ printf ("this = %p\n", (void*)this); +++ printf (" ptr = %p\n", (void*)ptr); +++ printf (" values = %x %x %x ...\n", (int)ptr[0], (int)ptr[1], (int)ptr[2]); ++ } ++ ++ static int x[10]; ++--- a/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C +++++ b/src/gcc/testsuite/g++.old-deja/g++.robertl/eb17.C ++@@ -44,15 +44,15 @@ int main() ++ A * a = new B; ++ B * b = dynamic_cast(a); ++ ++- printf("%p\n",b); // (*2*) +++ printf("%p\n",(void*)b); // (*2*) ++ b->print(); ++ ++ a = b; ++- printf("%p\n",a); +++ printf("%p\n",(void*)a); ++ a->print(); ++ ++ a = a->clone(); ++- printf("%p\n",a); +++ printf("%p\n",(void*)a); ++ a->print(); // (*1*) ++ ++ return 0; ++--- a/src/gcc/testsuite/gcc.dg/pch/inline-4.c +++++ b/src/gcc/testsuite/gcc.dg/pch/inline-4.c ++@@ -1,6 +1,6 @@ ++ #include "inline-4.h" ++ extern int printf (const char *, ...); ++ int main(void) { ++- printf (getstring()); +++ printf ("%s", getstring()); ++ return 0; ++ } diff --cc debian/patches/testsuite-hardening-updates.diff index 0000000,0000000..112a3b8 new file mode 100644 --- /dev/null +++ b/debian/patches/testsuite-hardening-updates.diff @@@ -1,0 -1,0 +1,84 @@@ ++# DP: Fix some gcc and g++ testcases to pass with hardening defaults ++ ++--- ++ src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c | 2 +- ++ src/gcc/testsuite/g++.dg/asan/asan_test.C | 2 +- ++ src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C | 2 +- ++ src/gcc/testsuite/g++.dg/fstack-protector-strong.C | 2 +- ++ src/gcc/testsuite/gcc.c-torture/execute/memset-1.c | 1 - ++ src/gcc/testsuite/gcc.c-torture/execute/memset-1.x | 5 +++++ ++ src/gcc/testsuite/gcc.dg/fstack-protector-strong.c | 2 +- ++ src/gcc/testsuite/gcc.dg/stack-usage-1.c | 2 +- ++ src/gcc/testsuite/gcc.dg/superblock.c | 2 +- ++ src/gcc/testsuite/gcc.target/i386/sw-1.c | 2 +- ++ 11 files changed, 14 insertions(+), 10 deletions(-) ++ ++--- a/src/gcc/testsuite/g++.dg/asan/asan_test.C +++++ b/src/gcc/testsuite/g++.dg/asan/asan_test.C ++@@ -2,7 +2,7 @@ ++ // { dg-skip-if "" { *-*-* } { "*" } { "-O2" } } ++ // { dg-skip-if "" { *-*-* } { "-flto" } { "" } } ++ // { dg-additional-sources "asan_globals_test-wrapper.cc" } ++-// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Werror -Wno-alloc-size-larger-than -Wno-array-bounds -Wno-stringop-overflow -Wno-stringop-overread -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread" } +++// { dg-options "-std=c++11 -fsanitize=address -fno-builtin -Wall -Werror -Wno-alloc-size-larger-than -Wno-array-bounds -Wno-stringop-overflow -Wno-stringop-overread -Wno-unused-result -g -DASAN_UAR=0 -DASAN_HAS_EXCEPTIONS=1 -DASAN_HAS_BLACKLIST=0 -DSANITIZER_USE_DEJAGNU_GTEST=1 -lasan -lpthread" } ++ // { dg-additional-options "-ldl" { target { ! *-*-freebsd* } } } ++ // { dg-additional-options "-DASAN_NEEDS_SEGV=1" { target { ! arm*-*-* } } } ++ // { dg-additional-options "-DASAN_LOW_MEMORY=1 -DASAN_NEEDS_SEGV=0" { target arm*-*-* } } ++--- a/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C +++++ b/src/gcc/testsuite/g++.dg/asan/interception-malloc-test-1.C ++@@ -1,7 +1,7 @@ ++ // ASan interceptor can be accessed with __interceptor_ prefix. ++ ++ // { dg-do run { target *-*-linux* *-*-freebsd* } } ++-// { dg-options "-fno-builtin-free" } +++// { dg-options "-fno-builtin-free -Wno-unused-result" } ++ // { dg-additional-options "-D__NO_INLINE__" { target { *-*-linux-gnu *-*-freebsd* } } } ++ // { dg-shouldfail "asan" } ++ ++--- a/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c +++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.c ++@@ -1,3 +1,5 @@ +++/* { dg-prune-output ".*warning: memset used with constant zero length parameter.*" } */ +++ ++ /* Copyright (C) 2002 Free Software Foundation. ++ ++ Test memset with various combinations of pointer alignments and lengths to ++--- a/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c +++++ b/src/gcc/testsuite/c-c++-common/asan/strncpy-overflow-1.c ++@@ -1,5 +1,5 @@ ++ /* { dg-do run } */ ++-/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy" } */ +++/* { dg-options "-fno-builtin-malloc -fno-builtin-strncpy -U_FORTIFY_SOURCE" } */ ++ /* { dg-additional-options "-D_FORTIFY_SOURCE=0 -gdwarf-3" { target *-*-darwin* } } */ ++ /* { dg-shouldfail "asan" } */ ++ ++--- a/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c +++++ b/src/gcc/testsuite/gcc.dg/fstack-protector-strong.c ++@@ -1,7 +1,7 @@ ++ /* Test that stack protection is done on chosen functions. */ ++ ++ /* { dg-do compile { target i?86-*-* x86_64-*-* rs6000-*-* s390x-*-* } } */ ++-/* { dg-options "-O2 -fstack-protector-strong" } */ +++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ ++ ++ /* This test checks the presence of __stack_chk_fail function in assembler. ++ * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. ++--- a/src/gcc/testsuite/g++.dg/fstack-protector-strong.C +++++ b/src/gcc/testsuite/g++.dg/fstack-protector-strong.C ++@@ -1,7 +1,7 @@ ++ /* Test that stack protection is done on chosen functions. */ ++ ++ /* { dg-do compile { target i?86-*-* x86_64-*-* } } */ ++-/* { dg-options "-O2 -fstack-protector-strong" } */ +++/* { dg-options "-O2 -fstack-protector-strong -U_FORTIFY_SOURCE" } */ ++ ++ /* This test checks the presence of __stack_chk_fail function in assembler. ++ * Compiler generates _stack_chk_fail_local (wrapper) calls instead for PIC. ++--- /dev/null +++++ b/src/gcc/testsuite/gcc.c-torture/execute/memset-1.x ++@@ -0,0 +1,5 @@ +++# Implement "/* { dg-options "-U_FORITFY_SOURCE" } */", due to +++# http://gcc.gnu.org/bugzilla/show_bug.cgi?id=20567 +++ +++set additional_flags "-U_FORTIFY_SOURCE" +++return 0 diff --cc debian/porting.html index 0000000,0000000..2fe5477 new file mode 100644 --- /dev/null +++ b/debian/porting.html @@@ -1,0 -1,0 +1,30 @@@ ++ ++ ++Porting libstdc++-v3 ++ ++ ++ ++ ++ ++ ++ ++

Porting libstdc++-v3

++
++


++Node: Top, ++Next: , ++Up: (dir) ++
++
++ ++The documentation in this file was removed, because it is licencensed ++under a non DFSG conforming licencse. ++ ++ diff --cc debian/reduce-test-diff.awk index 0000000,0000000..0e438de new file mode 100755 --- /dev/null +++ b/debian/reduce-test-diff.awk @@@ -1,0 -1,0 +1,33 @@@ ++#! /usr/bin/gawk -f ++ ++BEGIN { ++ skip=0 ++ warn=0 ++} ++ ++/^-(FAIL|ERROR|UNRESOLVED|WARNING)/ { ++ next ++} ++ ++# only compare gcc, g++, g77 and objc results ++/=== treelang tests ===/ { ++ skip=1 ++} ++ ++# omit extra files appended to test-summary ++/^\+Compiler version/ { ++ skip=1 ++} ++ ++skip == 0 { ++ print ++ next ++} ++ ++/^\+(FAIL|ERROR|UNRESOLVED|WARNING)/ { ++ warn=1 ++} ++ ++END { ++ exit warn ++} diff --cc debian/rules index 0000000,0000000..f49ea84 new file mode 100755 --- /dev/null +++ b/debian/rules @@@ -1,0 -1,0 +1,100 @@@ ++#! /usr/bin/make -f ++# -*- makefile -*- ++# Build rules for gcc (>= 2.95) and gcc-snapshot ++# Targets found in this makefile: ++# - unpack tarballs ++# - patch sources ++# - (re)create the control file ++# - create a debian/rules.parameters file, which is included ++# by debian/rules2 ++# All other targets are passed to the debian/rules2 file ++ ++# Uncomment this to turn on verbose mode. ++#export DH_VERBOSE=1 ++ ++unexport LANG LC_ALL LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC LC_MESSAGES ++ ++default: build ++ ++include debian/rules.defs ++include debian/rules.unpack ++include debian/rules.patch ++ ++control: $(control_dependencies) ++ @echo "Build environment: derivative=$(derivative), release=$(distrelease)" ++ -mkdir -p $(stampdir) ++ $(MAKE) -f debian/rules.conf $@ ++ ++configure: control $(unpack_stamp) $(patch_stamp) ++ $(MAKE) -f debian/rules2 $@ ++ ++pre-build: ++# no backport support for these releases ..., keep conditionals for ++# Debian: jessie stretch buster bullseye ... ++# UBuntu: precise trusty xenial bionic focal groovy hirsute ... ++ifneq (,$(filter $(distrelease),lenny squeeze wheezy hardy lucid)) ++ @echo explicitely fail the build for $(distribution)/$(distrelease) on $(DEB_TARGET_ARCH). ++ @echo no bug report required. please figure out the back port yourself. ++ false ++endif ++#ifeq ($(PKGSOURCE),gcc-15) ++# ifneq (,$(findstring native, $(build_type))) ++# ifneq (,$(findstring mips, $(TARGET_ALIAS))) ++# @echo "native compiler for $(TARGET_ALIAS) not built from this source." ++# @echo "See https://lists.debian.org/debian-gcc/2021/05/msg00011.html" ++# false ++# endif ++# endif ++#endif ++ ++build: pre-build control ++ $(MAKE) $(NJOBS) -f debian/rules2 $@ ++build-arch: pre-build control ++ $(MAKE) $(NJOBS) -f debian/rules2 $@ ++build-indep: pre-build control ++ DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nostrap nohppa64 nonvptx nogcn nocheck nopgo nolto" \ ++ $(MAKE) $(NJOBS) -f debian/rules2 $@ ++ ++check: $(check_stamp) ++$(check_stamp): $(build_stamp) ++ $(MAKE) -f debian/rules2 $@ ++ ++clean: ++ rm -rf $(stampdir) ++# remove temporary dirs used for unpacking ++ rm -rf $(gcc_srcdir) $(gdc_srcdir) $(newlib_srcdir) $(binutils_srcdir) ++ -$(MAKE) -f debian/rules2 $@ ++ rm -rf $(srcdir)* $(builddir)* debian/tmp* html ++ rm -f bootstrap-* test-protocol* first-move-stamp ++ rm -f debian/*.tmp ++ rm -f debian/soname-cache ++ find debian -name '.#*' | xargs -r rm -f ++ rm -f $(series_file)* ++ rm -rf .pc ++ dh_clean ++ ++install: ++ $(MAKE) -f debian/rules2 $@ ++ ++html-docs doxygen-docs update-doxygen-docs update-ada-files xxx: ++ $(MAKE) -f debian/rules2 $@ ++ ++binary-arch binary: build-arch ++ $(MAKE) -f debian/rules2 $@ ++ ++binary-indep: build-indep ++ DEB_BUILD_OPTIONS="$(DEB_BUILD_OPTIONS) nostrap nohppa64 nonvptx nocheck nopgo nolto" \ ++ $(MAKE) -f debian/rules2 $@ ++ ++source diff: ++ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false ++ ++release: ++ foo=$(shell basename $(CURDIR)); \ ++ if [ "$$foo" != "gcc-3.4" ]; then \ ++ find -name CVS -o -name .cvsignore -o -name '.#*' | \ ++ xargs rm -rf; \ ++ fi ++ ++.NOTPARALLEL: ++.PHONY: build clean binary-indep binary-arch binary release diff --cc debian/rules.conf index 0000000,0000000..d1269a6 new file mode 100644 --- /dev/null +++ b/debian/rules.conf @@@ -1,0 -1,0 +1,1382 @@@ ++# -*- makefile -*- ++# rules.conf ++# - used to build debian/control and debian/rules.parameters ++# - assumes unpacked sources ++ ++include debian/rules.defs ++include debian/rules.sonames ++ ++ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++include $(binutils_srcdir)/debian/rules.defs ++endif ++ ++# manual ... ++ifeq ($(DEB_TARGET_GNU_CPU), $(findstring $(DEB_TARGET_GNU_CPU),hppa m68k)) ++ ifeq ($(DEB_TARGET_ARCH),m68k) ++ GCC_SONAME := 2 ++ endif ++ ifeq ($(DEB_TARGET_ARCH),hppa) ++ GCC_SONAME := 4 ++ endif ++else ++ GCC_SONAME := 1 ++endif ++DEB_LIBGCC_SOVERSION := $(DEB_SOVERSION) ++DEB_LIBGCC_VERSION := $(DEB_VERSION) ++ ++_soname_map = gcc-s=$(GCC_SONAME) gcc=$(GCC_SONAME) stdc++=$(CXX_SONAME) \ ++ gomp=$(GOMP_SONAME) ssp=$(SSP_SONAME) gfortran=$(FORTRAN_SONAME) \ ++ itm=$(ITM_SONAME) objc=$(OBJC_SONAME) quadmath=$(QUADMATH_SONAME) \ ++ go=$(GO_SONAME) backtrace=$(BTRACE_SONAME) \ ++ atomic=$(ATOMIC_SONAME) asan=$(ASAN_SONAME) lsan=$(LSAN_SONAME) \ ++ tsan=$(TSAN_SONAME) ubsan=$(UBSAN_SONAME) hwasan=$(HWASAN_SONAME) \ ++ vtv=$(VTV_SONAME) gm2=$(GM2_SONAME) gcobol=$(GCOBOL_SONAME) \ ++ gphobos=$(GPHOBOS_SONAME) gdiagnostics=$(DIAGNOSTICS_SONAME) \ ++ ga68=$(GA68_SONAME) ++_soname = $(patsubst $(1)=%,%,$(filter $(1)=%,$(_soname_map))) ++ ++rel_on_dev := $(if $(cross_lib_arch),>=,=) ++# $(call _lib_name,,,) ++_lib_name = $(subst $(SPACE),, \ ++ lib$(2)$(1) \ ++ $(if $(filter dev,$(3)),,$(call _soname,$(1))) \ ++ $(if $(or $(filter $(3),dev),$(and $(filter $(3),dbg),$(filter $(1),stdc++))),-$(BASE_VERSION)) \ ++ $(if $(3),-$(3))$(LS)$(AQ)) ++# $(call _lib_vers,,) ++_lib_vers = ($(if $(filter $(1),dev),$(rel_on_dev),>=) $(2)) ++ ++# Helper to generate biarch/triarch dependencies. ++# For example, $(eval $(call gen_multilib_deps,gomp)) will create the ++# libgompbiarch variable, and make it contains the libgompbiarch{32,64,n32} ++# variables if biarch{32,64,n32} is set to yes. ++ ++define gen_multilib_deps ++ lib$1biarch64$2 := $(call _lib_name,$(1),64,$(2)) $(call _lib_vers,$(2),$(3)) ++ lib$1biarch32$2 := $(call _lib_name,$(1),32,$(2)) $(call _lib_vers,$(2),$(3)) ++ lib$1biarchn32$2 := $(call _lib_name,$(1),n32,$(2)) $(call _lib_vers,$(2),$(3)) ++ lib$1biarchx32$2 := $(call _lib_name,$(1),x32,$(2)) $(call _lib_vers,$(2),$(3)) ++ ifeq ($$(biarch64),yes) ++ lib$1biarch$2 := $$(lib$1biarch64$2) ++ endif ++ ifeq ($$(biarch32),yes) ++ ifeq ($$(biarch64),yes) ++ lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarch32$2) ++ else ++ lib$1biarch$2 := $$(lib$1biarch32$2) ++ endif ++ endif ++ ifeq ($$(biarchx32),yes) ++ ifeq ($$(biarch64),yes) ++ lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchx32$2) ++ else ifeq ($$(biarch32),yes) ++ lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchx32$2) ++ else ++ lib$1biarch$2 := $$(lib$1biarchx32$2) ++ endif ++ endif ++ ifeq ($$(biarchn32),yes) ++ ifeq ($$(biarch64),yes) ++ lib$1biarch$2 := $$(lib$1biarch64$2), $$(lib$1biarchn32$2) ++ else ifeq ($$(biarch32),yes) ++ lib$1biarch$2 := $$(lib$1biarch32$2), $$(lib$1biarchn32$2) ++ else ++ lib$1biarch$2 := $$(lib$1biarchn32$2) ++ endif ++ endif ++endef ++ifeq ($(with_shared_libgcc),yes) ++ LIBGCC_DEP := libgcc-s$(GCC_SONAME)$(LS)$(AQ) (>= $${gcc:Version}) ++ $(eval $(call gen_multilib_deps,gcc-s,,$$$${gcc:Version})) ++endif ++LIBGCC_DEV_DEP := libgcc-$(BASE_VERSION)-dev$(LS)$(AQ) ($(rel_on_dev) $${gcc:Version}) ++$(foreach x,stdc++ gomp ssp gfortran itm objc atomic asan lsan ubsan hwasan quadmath go vtv, \ ++ $(eval $(call gen_multilib_deps,$(x),,$$$${gcc:Version}))) ++$(foreach x,gcc gcc-s stdc++ gfortran objc go gphobos, \ ++ $(eval $(call gen_multilib_deps,$(x),dev,$$$${gcc:Version}))) ++$(foreach x,gcc gcc-s stdc++ gfortran objc go gphobos, \ ++ $(eval $(call gen_multilib_deps,$(x),dbg,$$$${gcc:Version}))) ++ ++# Helper to generate _no_archs variables. ++# For example, $(eval $(call gen_no_archs,go)) will create the go_no_archs ++# variable, using the go_no_cpu and go_no_systems variables. ++define gen_no_archs ++ $1_no_archs := ++ ifneq (,$$($1_no_cpus)) ++ $1_no_archs += $$(foreach cpu,$$(filter-out i386 amd64 arm,$$($1_no_cpus)),!$$(cpu)) ++ ifneq (,$$(filter i386,$$($1_no_cpus))) ++ $1_no_archs += !i386 !hurd-i386 ++ endif ++ ifneq (,$$(filter amd64,$$($1_no_cpus))) ++ $1_no_archs += !amd64 !hurd-amd64 ++ endif ++ ifneq (,$$(filter arm,$$($1_no_cpus))) ++ $1_no_archs += !arm !armel !armhf ++ endif ++ ifneq (,$$(strip $3)) ++ $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$3$$(SPACE)) ++ $1_no_archs += $$(foreach cpu,$$($1_no_cpus),$$(foreach system,$$($1_no_systems_tmp),!$$(subst gnu,$$(cpu),$$(system)))) ++ endif ++ endif ++ ifneq (,$$($1_no_systems)) ++ $1_no_systems_tmp := $$(subst $$(SPACE)gnu$$(SPACE),$$(SPACE)hurd-gnu$$(SPACE),$$(SPACE)$$($1_no_systems)$$(SPACE)) ++ $1_no_archs += $$(foreach system,$$($1_no_systems_tmp),$$(foreach cpu,$2,!$$(subst gnu,$$(cpu),$$(system)))) ++ endif ++ $1_no_archs := $$(strip $$($1_no_archs)) ++endef ++base_deb_cpus := amd64 i386 ++base_deb_systems := ++$(foreach x,ada cobol d fortran go m2 rs libgphobos libgc check locale,$(eval $(call gen_no_archs,$(x),$(base_deb_cpus),$(base_deb_systems)))) ++linux_no_archs := !hurd-any ++ ++GCC_VERSION := $(strip $(shell cat $(firstword $(wildcard $(srcdir)/gcc/FULL-VER $(srcdir)/gcc/BASE-VER)))) ++NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ ++ awk -F. '{OFS="."; $$2 += 1; $$3=0; print}') ++GCC_MAJOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/([0-9])\.[0-9]\.[0-9]/\1/') ++GCC_MINOR_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.([0-9])\.[0-9]/\1/') ++GCC_RELEASE_VERSION := $(shell echo $(GCC_VERSION) | sed -r 's/[0-9]\.[0-9]\.([0-9])/\1/') ++NEXT_GCC_MAJOR_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) ++NEXT_GCC_MINOR_VERSION := $(shell expr $(echo $(GCC_MINOR_VERSION)) + 1) ++NEXT_GCC_RELEASE_VERSION := $(shell expr $(echo $(GCC_MAJOR_VERSION)) + 1) ++ ++ifeq ($(single_package),yes) ++ BASE_VERSION := $(shell echo $(GCC_VERSION) | sed -e 's/\([0-9]*\).*/\1/') ++endif ++ ++GCC_SOURCE_VERSION := $(shell echo $(DEB_VERSION) | sed 's/-.*//') ++NEXT_GCC_SOURCE_VERSION := $(shell echo $(GCC_SOURCE_VERSION) | \ ++ awk -F. '{OFS="."; $$2 += 1; $$3=0; print}') ++ ++MAINTAINER = Debian GCC Maintainers ++ifeq ($(distribution),Ubuntu) ++ MAINTAINER = Ubuntu Core developers ++endif ++UPLOADERS = Matthias Klose ++ ++DPKGV = 1.14.15 ++ifeq ($(with_multiarch_lib),yes) ++ DPKGV = 1.16.0~ubuntu4 ++endif ++ifeq ($(multiarch_stage1),yes) ++ DPKGV = 1.16.0~ubuntu4 ++endif ++ifeq (,$(filter $(distrelease), precise trusty)) ++ DPKGV = 1.17.14 ++endif ++DPKG_BUILD_DEP = dpkg-dev (>= $(DPKGV)), ++ ++ifeq ($(DEB_HOST_ARCH),$(DEB_TARGET_ARCH)) ++ TARGET_QUAL = :$(DEB_TARGET_ARCH) ++endif ++ ++ifneq (,$(filter $(distrelease), precise trusty xenial)) ++ LOCALES = locales ++else ++ LOCALES = locales-all ++endif ++ ++# The binutils version needed. ++# The oldest suitable versions for the various platforms can be found in ++# INSTALL/specific.html ; we take a tighter dependency if possible to be on ++# the safe side (something like newest( version in stable, versions for the ++# various platforms in INSTALL/specific.html) ). ++# We need binutils (>= 2.19.1) for a new dwarf unwind expression opcode. ++# See http://gcc.gnu.org/ml/gcc-patches/2008-09/msg01713.html ++ifeq ($(trunk_build),yes) ++ BINUTILSBDV = 2.23 ++else ++ BINUTILSBDV = 2.22 ++ ifneq (,$(filter $(distrelease),precise)) ++ BINUTILSBDV = 2.22-6~ ++ else ifneq (,$(filter $(distrelease),trusty)) ++ BINUTILSBDV = 2.24-5~ ++ else ifneq (,$(filter $(distrelease),jessie)) ++ BINUTILSBDV = 2.25-7~ ++ else ifneq (,$(filter $(distrelease),xenial)) ++ BINUTILSBDV = 2.26.1 ++ else ifneq (,$(filter $(distrelease),stretch)) ++ BINUTILSBDV = 2.28 ++ else ifneq (,$(filter $(distrelease),bionic)) ++ BINUTILSBDV = 2.30 ++ else ifneq (,$(filter $(distrelease),buster focal)) ++ BINUTILSBDV = 2.34 ++ else ifneq (,$(filter $(distrelease),groovy)) ++ BINUTILSBDV = 2.35 ++ else ifneq (,$(filter $(distrelease),bullseye)) ++ BINUTILSBDV = 2.35.2 ++ else ifneq (,$(filter $(distrelease),hirsute)) ++ BINUTILSBDV = 2.36 ++ else ifneq (,$(filter $(distrelease),jammy)) ++ BINUTILSBDV = 2.38 ++ else ifneq (,$(filter $(distrelease),$(no_sframe_distreleases))) ++ BINUTILSBDV = 2.39 ++ else ++ BINUTILSBDV = 2.45 ++ endif ++endif ++ifeq ($(DEB_CROSS),yes) ++ ifneq (,$(filter $(distrelease),stretch jessie precise trusty xenial)) ++ BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), binutils-multiarch$(NT) (>= $(BINUTILSBDV)) ++ else ++ BINUTILS_BUILD_DEP = binutils$(TS)$(NT) (>= $(BINUTILSBDV)), debhelper (>= 11) ++ endif ++ BINUTILSV := $(shell dpkg -l binutils$(TS) \ ++ | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') ++else ++ BINUTILS_BUILD_DEP = binutils$(NT) (>= $(BINUTILSBDV)) ++ ifneq (,$(findstring cross-build-,$(build_type))) ++ BINUTILSV := $(shell dpkg -l binutils$(TS) \ ++ | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') ++ else ++ BINUTILSV := $(shell dpkg -l binutils binutils-multiarch \ ++ | awk '/^ii/{print $$3;exit}' | sed 's/-.*//') ++ endif ++endif ++# for riscv64, more recent binutils versions are needed for backports ++ifneq (,$(filter $(distrelease),stretch buster bullseye bionic focal jammy)) ++ BINUTILS_BUILD_DEP +=$(COMMA) binutils$(TS)$(NT) (>= 2.40) [riscv64] ++endif ++ ++ifneq (,$(filter $(build_type), build-native cross-build-native)) ++ BINUTILS_BUILD_DEP += , $(binutils_hppa64)$(NT) (>= $(BINUTILSBDV)) [$(hppa64_archs)] ++endif ++ifeq (,$(BINUTILSV)) ++ BINUTILSV := $(BINUTILSBDV) ++endif ++# gcc/configure.ac enables some features based on the binutils version. The most ++# recently checked binutils version is 2.36 for GCC 14. For now it is safe to ++# derive the binutils runtime dependency from the binutils build dependency. ++BINUTILSV := $(BINUTILSBDV) ++ ++# libc-dev dependencies ++libc_ver := 2.23 ++libc_dev_ver := $(libc_ver) ++ifeq ($(with_multiarch_lib),yes) ++ ifeq ($(derivative),Debian) ++ libc_dev_ver := 2.23-1~ ++ else ++ libc_dev_ver := 2.13-0ubuntu6 ++ endif ++endif ++# first set LIBC_DEP/LIBC_DEV_DEP for native builds only ++ifeq ($(DEB_TARGET_ARCH_OS),linux) ++ LIBC_DEP = $(if $(filter alpha ia64, $(DEB_TARGET_ARCH)),libc6.1,libc6) ++ ifneq (,$(findstring musl-linux-,$(DEB_TARGET_ARCH))) ++ LIBC_DEP = musl ++ libc_ver = 0.9 ++ libc_dev_ver = 0.9 ++ endif ++else ifeq ($(DEB_TARGET_ARCH_OS),hurd) ++ LIBC_DEP = libc0.3 ++else ifeq ($(DEB_TARGET_ARCH),uclibc) ++ LIBC_DEP = libuclibc ++endif ++LIBC_DEV_DEP := $(LIBC_DEP)-dev ++ ++# this is about Debian archs name, *NOT* GNU target triplet ++biarch_deb_map := \ ++ i386=amd64 amd64=i386 \ ++ mips=mips64 mipsel=mips64el \ ++ mipsn32=mips mipsn32el=mipsel \ ++ mips64=mips mips64el=mipsel \ ++ mipsr6=mips64r6 mipsr6el=mips64r6el \ ++ mipsn32r6=mipsr6 mipsn32r6el=mipsr6el \ ++ mips64r6=mipsr6 mips64r6el=mipsr6el \ ++ powerpc=ppc64 ppc64=powerpc \ ++ sparc=sparc64 sparc64=sparc\ ++ s390=s390x s390x=s390 ++biarch_deb_arch := $(patsubst $(DEB_TARGET_ARCH)=%,%, \ ++ $(filter $(DEB_TARGET_ARCH)=%,$(biarch_deb_map))) ++ ++LIBC_BIARCH_DEP := ++LIBC_BIARCH_DEV_DEP := ++ifneq (,$(findstring yes,$(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ LIBC_BIARCH_DEP := $${shlibs:Depends} ++ LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-$(biarch_deb_arch)$(LS)$(AQ) (>= $(libc_dev_ver)) ++ # amd64, x32, i386 ++ ifneq (,$(findstring $(DEB_TARGET_ARCH),amd64 x32 i386)) ++ ifeq ($(biarch64)$(biarch32),yesyes) ++ LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_dev_ver)), ++ LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_dev_ver)) ++ endif ++ ifeq ($(biarch64)$(biarchx32),yesyes) ++ LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-amd64$(LS)$(AQ) (>= $(libc_dev_ver)), ++ LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_dev_ver)) ++ endif ++ ifeq ($(biarch32)$(biarchx32),yesyes) ++ LIBC_BIARCH_DEV_DEP := $(LIBC_DEV_DEP)-i386$(LS)$(AQ) (>= $(libc_dev_ver)), ++ LIBC_BIARCH_DEV_DEP += $(LIBC_DEV_DEP)-x32$(LS)$(AQ) (>= $(libc_dev_ver)) ++ endif ++ endif ++ # mips* ++ ifneq (,$(findstring mips, $(DEB_TARGET_ARCH))) ++ ifeq ($(biarchn32)$(biarch32),yesyes) ++ LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_dev_ver)), ++ LIBC_BIARCH_DEV_DEP += libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_dev_ver)) ++ endif ++ ifeq ($(biarch64)$(biarch32),yesyes) ++ triarch := $(COMMA)$(SPACE) ++ LIBC_BIARCH_DEV_DEP := libc6-dev-mips32$(LS)$(AQ) (>= $(libc_dev_ver)), ++ LIBC_BIARCH_DEV_DEP += libc6-dev-mips64$(LS)$(AQ) (>= $(libc_dev_ver)) ++ endif ++ ifeq ($(biarchn32)$(biarch64),yesyes) ++ triarch := $(COMMA)$(SPACE) ++ LIBC_BIARCH_DEV_DEP := libc6-dev-mips64$(LS)$(AQ) (>= $(libc_dev_ver)), ++ LIBC_BIARCH_DEV_DEP += libc6-dev-mipsn32$(LS)$(AQ) (>= $(libc_dev_ver)) ++ endif ++ endif ++endif ++ ++# now add the cross suffix and required version ++LIBC_DEP := $(LIBC_DEP)$(LS)$(AQ) ++LIBC_DEV_DEP := $(LIBC_DEV_DEP)$(LS)$(AQ) (>= $(libc_dev_ver)) ++ ++ifneq (,$(filter $(build_type), build-native cross-build-native)) ++ LIBC_DBG_DEP = libc6.1-dbg [alpha ia64] | libc0.3-dbg [hurd-amd64 hurd-i386] | libc6-dbg, ++endif ++ ++# TODO: make this automatic, there must be a better way to define LIBC_DEP. ++ifneq ($(DEB_CROSS),yes) ++ LIBC_BUILD_DEP = libc6.1-dev (>= $(libc_dev_ver)) [alpha ia64] | libc0.3-dev (>= $(libc_dev_ver)) [hurd-amd64 hurd-i386] | libc6-dev (>= $(libc_dev_ver)) ++ LIBC_BIARCH_BUILD_DEP = \ ++ libc6-dev-amd64 [i386 x32], \ ++ libc6-dev-sparc64 [sparc], \ ++ libc6-dev-sparc [sparc64], \ ++ $(if $(findstring s390x, $(biarch32archs)), libc6-dev-s390 [s390x]$(COMMA)) \ ++ libc6-dev-s390x [s390], \ ++ libc6-dev-i386 [amd64 x32], \ ++ libc6-dev-powerpc [ppc64], \ ++ libc6-dev-ppc64 [powerpc], \ ++ lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el$(if $(findstring s390x, $(biarch32archs)),s390x) sparc64 x32], \ ++ libn32gcc-s1 [mips mipsel mips64 mips64el], \ ++ lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el powerpc sparc s390 x32], \ ++ libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el], \ ++ libc6-dev-mipsn32 [mips mipsel mips64 mips64el], \ ++ libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el], ++ ifeq (yes,$(MIPS_R6_ENABLED)) ++ LIBC_BIARCH_BUILD_DEP = \ ++ libc6-dev-amd64 [i386 x32], \ ++ libc6-dev-sparc64 [sparc], \ ++ libc6-dev-sparc [sparc64], \ ++ $(if $(findstring s390x, $(biarch32archs)), libc6-dev-s390 [s390x]$(COMMA)) \ ++ libc6-dev-s390x [s390], \ ++ libc6-dev-i386 [amd64 x32], \ ++ libc6-dev-powerpc [ppc64], \ ++ libc6-dev-ppc64 [powerpc], \ ++ lib32gcc-s1 [amd64 ppc64 mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el$(if $(findstring s390x, $(biarch32archs)), s390x) sparc64 x32], \ ++ libn32gcc-s1 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], \ ++ lib64gcc-s1 [i386 mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el powerpc sparc s390 x32], \ ++ libc6-dev-mips64 [mips mipsel mipsn32 mipsn32el mipsr6 mipsr6el mipsn32r6 mipsn32r6el], \ ++ libc6-dev-mipsn32 [mips mipsel mips64 mips64el mipsr6 mipsr6el mips64r6 mips64r6el], \ ++ libc6-dev-mips32 [mipsn32 mipsn32el mips64 mips64el mipsn32r6 mipsn32r6el mips64r6 mips64r6el], ++ endif ++ ifneq (,$(findstring amd64,$(biarchx32archs))) ++ LIBC_BIARCH_BUILD_DEP += libc6-dev-x32 [amd64 i386], libx32gcc-s1 [amd64 i386], ++ endif ++ # FIXME: needed for backports ++ #LIBC_BIARCH_BUILD_DEP := $(subst gcc-s,gcc,$(LIBC_BIARCH_BUILD_DEP)) ++else ++ LIBC_BUILD_DEP = $(LIBC_DEV_DEP), ++ ifneq ($(LIBC_BIARCH_DEV_DEP),) ++ LIBC_BIARCH_BUILD_DEP = $(LIBC_BIARCH_DEV_DEP), ++ else ++ LIBC_BIARCH_BUILD_DEP = ++ endif ++endif ++ ++# needed for the include/asm symlink to run the testsuite for ++# non default multilibs ++ifneq (,$(multilib_archs)) ++ GCC_MULTILIB_BUILD_DEP = g++-multilib [$(multilib_archs)]$(pf_ncross), ++endif ++ ++LIBUNWIND_DEV_DEP := libunwind8-dev$(LS)$(AQ) ++LIBUNWIND_BUILD_DEP := $(LIBUNWIND_DEV_DEP) [ia64], ++LIBATOMIC_OPS_BUILD_DEP := libatomic-ops-dev$(LS) [ia64], ++ifneq ($(DEB_TARGET_ARCH),ia64) ++ LIBUNWIND_DEV_DEP := # nothing ++else ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) ++ LIBUNWIND_DEV_DEP := # nothing ++endif ++ ++GMP_BUILD_DEP = libgmp-dev (>= 2:5.0.1~), ++MPFR_BUILD_DEP = libmpfr-dev (>= 3.0.0-9~), ++ ++ISL_BUILD_DEP = libisl-dev, ++ifeq (,$(filter $(distrelease), jessie stretch precise trusty xenial bionic)) ++ ISL_BUILD_DEP = libisl-dev (>= 0.20), ++endif ++ ++ifneq (,$(filter $(distrelease), precise)) ++ MPC_BUILD_DEP = libmpc-dev, ++else ++ MPC_BUILD_DEP = libmpc-dev (>= 1.0), ++endif ++ ++SOURCE_BUILD_DEP := ++ifeq (,$(findstring gcc,$(PKGSOURCE))) ++ SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), ++endif ++ ++ifneq (,$(filter $(distrelease), precise)) ++ CHECK_BUILD_DEP := dejagnu$(if $(check_no_archs), [$(check_no_archs)]), git, ++else ++ CHECK_BUILD_DEP := dejagnu$(if $(check_no_archs), [$(check_no_archs)]) ,\ ++ git$(if $(check_no_archs), [$(check_no_archs)]) , ++endif ++no_rustc_archs = alpha hppa m68k sh4 x32 ++ifeq (,$(filter $(distrelease),stretch buster bullseye trixie trusty xenial bionic focal jammy noble plucky)) ++ ifeq ($(derivative),Ubuntu) ++ no_rustc_archs += i386 ++ endif ++ # python3-check-jsonschema has unpackaged dependencies ++ CHECK_BUILD_DEP += python3-pytest [$(foreach a,$(no_rustc_archs),!$(a))] , \ ++ python3-check-jsonschema [$(foreach a,$(no_rustc_archs),!$(a))] , ++endif ++ ++AUTO_BUILD_DEP := m4, libtool, ++autoconf_version = 2.69 ++ifneq (,$(filter $(distrelease),stretch buster trusty xenial bionic focal groovy)) ++ autoconf_version = ++endif ++AUTO_BUILD_DEP += autoconf$(autoconf_version), ++ ++ifeq (,$(filter $(distrelease), precise trusty)) ++ SDT_BUILD_DEP = systemtap-sdt-dev [linux-any], ++endif ++ ++# ensure that the common libs, built from the next GCC version are available ++ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) ++ ifneq ($(with_common_libs),yes) ++ BASE_BUILD_DEP = gcc-16-base, ++ endif ++endif ++ ++ifeq (,$(filter $(distrelease), precise)) ++ OFFLOAD_BUILD_DEP += nvptx-tools [$(nvptx_archs)], ++endif ++OFFLOAD_BUILD_DEP += $(AMDGCN_TOOLS_DEP) ++ ++PHOBOS_BUILD_DEP = lib32z1-dev [amd64], lib64z1-dev [i386], ++ifeq ($(derivative),Ubuntu) ++ ifeq (,$(filter $(distrelease),precise)) ++ PHOBOS_BUILD_DEP += libx32z1-dev [amd64 i386], ++ endif ++endif ++PHOBOS_BUILD_DEP += unzip , ++ ++ifeq ($(with_m2),yes) ++ GM2_BUILD_DEP = python3:any, ++endif ++ ++ifeq ($(usage_stats),yes) ++ ifeq (,$(no_usage_archs)) ++ USAGE_BUILD_DEP = python3:any, python3-psutil, python3-matplotlib, ++ else ++ USAGE_BUILD_DEP = python3:any, \ ++ python3-psutil [$(foreach a,$(no_usage_archs),!$(a))], \ ++ python3-matplotlib [$(foreach a,$(no_usage_archs),!$(a))], ++ endif ++endif ++ ++DEBHELPER_BUILD_DEP = debhelper (>= 11), ++ ++PKGCONF_BUILD_DEP = pkgconf, ++ifneq (,$(filter $(distrelease),wheezy jessie stretch buster bullseye bookworm precise trusty xenial bionic focal jammy)) ++ PKGCONF_BUILD_DEP = pkg-config, ++endif ++ ++ifneq ($(DEB_CROSS),yes) ++# all archs for which to create b-d's ++any_archs := alpha amd64 armel armhf arm64 i386 loong64 mips mipsel mips64 mips64el mipsn32 powerpc ppc64 ppc64el m68k riscv64 sh4 sparc sparc64 s390x x32 ++ifeq (,$(filter $(distrelease), jessie stretch buster precise xenial bionic)) ++ any_archs := $(filter-out mips, $(any_archs)) ++endif ++ifneq (,$(filter $(distrelease), jessie stretch buster precise xenial bionic jammy)) ++ any_archs := $(filter-out loong64, $(any_archs)) ++endif ++ifeq (yes,$(MIPS_R6_ENABLED)) ++ any_archs += mipsn32el mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el ++endif ++ifeq (,$(filter $(DEB_HOST_ARCH),$(any_archs))) ++ any_archs += $(DEB_HOST_ARCH) ++endif ++ ++arch_gnutype_map := $(foreach a,$(any_archs),$(a)=$(shell CC=true dpkg-architecture -f -a$(a) -qDEB_HOST_GNU_TYPE)) ++_gnu_type = $(subst $1=,,$(filter $1=%,$(arch_gnutype_map))) ++_gnu_suffix = -$(subst _,-,$(call _gnu_type,$1)) ++ ++ifneq (,$(filter $(distrelease),precise trusty)) ++ TARGET_TOOL_BUILD_DEP = bash, # non-empty line ++ pf_cross = ++ pf_ncross = ++else ++ TARGET_TOOL_BUILD_DEP = \ ++ g++-$(BASE_VERSION)-for-host , \ ++ gobjc-$(BASE_VERSION)-for-host [!avr] , \ ++ gfortran-$(BASE_VERSION)-for-host , \ ++ gdc-$(BASE_VERSION)-for-host $(if $(d_no_archs),[$(d_no_archs)] ), \ ++ gccgo-$(BASE_VERSION)-for-host $(if $(go_no_archs),[$(go_no_archs)] ), \ ++ gnat-$(BASE_VERSION)-for-host $(if $(ada_no_archs),[$(ada_no_archs)] ), \ ++ gm2-$(BASE_VERSION)-for-host $(if $(m2_no_archs),[$(m2_no_archs)] ), \ ++ gcobol-$(BASE_VERSION)-for-host $(if $(cobol_no_archs),[$(cobol_no_archs)] ), \ ++ ga68-$(BASE_VERSION)-for-host $(if $(algol_no_archs),[$(algol_no_archs)] ), ++ # FIXME: gccrs not yet built as a cross compiler, macros constraints ++ pf_cross = $(SPACE) ++ pf_ncross = $(SPACE) ++ NT = :native ++endif ++ ++LIBSTDCXX_BUILD_INDEP = doxygen , graphviz , \ ++ ghostscript , texlive-latex-base , xsltproc , \ ++ libxml2-utils , docbook-xsl-ns , ++ ++GO_BUILD_DEP := netbase, ++ ++RS_BUILD_DEP := cargo [$(rs_no_archs)], ++ ++# try to build with itself, or with the last version ++# require at least GCC 9 for the bootstrap, anything else is untested ++ifneq (,$(filter $(distrelease), buster bullseye precise trusty)) ++ gnat_build_dep := gnat-9$(NT) [$(ada_no_archs)], g++-9$(NT) ++ gdc_build_dep := gdc-9$(NT) [$(d_no_archs)] ++else ifneq (,$(filter $(distrelease), bookworm xenial)) ++ gnat_build_dep := gnat-11$(NT) [$(ada_no_archs)], g++-11$(NT) ++ gdc_build_dep := gdc-11$(NT) [$(d_no_archs)] ++else ifneq (,$(filter $(distrelease), bionic focal jammy noble)) ++ gnat_build_dep := gnat-13$(NT) [$(ada_no_archs)], g++-13$(NT) ++ gdc_build_dep := gdc-13$(NT) [$(d_no_archs)] ++else ifneq (,$(filter $(distrelease), trixie)) ++ gnat_build_dep := gnat-14$(NT) [$(ada_no_archs)], g++-14$(NT) ++ gdc_build_dep := gdc-14$(NT) [$(d_no_archs)] ++else ++ gnat_build_dep := gnat-15$(NT) [$(ada_no_archs)], g++-15$(NT) ++ gdc_build_dep := gdc-15$(NT) [$(d_no_archs)] ++endif ++ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) ++ gnat_build_dep := ++ gdc_build_dep := ++endif ++ ++ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) ++ # Build gnat as part of the combined gcc-x.y source package. Do not fail ++ # if gnat is not present on unsupported architectures; the build scripts ++ # will not use gnat anyway. ++ GNAT_BUILD_DEP := $(gnat_build_dep), ++ GDC_BUILD_DEP := $(gdc_build_dep), ++else ifeq ($(single_package),yes) ++ # Ditto, as part of the gcc-snapshot package. ++ GNAT_BUILD_DEP := $(gnat_build_dep), ++ GDC_BUILD_DEP := $(gdc_build_dep), ++endif ++ ++ ++else ++# build cross compiler ++ CROSS_BUILD_DEP := libc6-dev$(cross_lib_arch), ++ifneq (,$(findstring cross-build-,$(build_type))) ++ CROSS_BUILD_DEP += zlib1g-dev$(cross_lib_arch), libmpfr-dev$(cross_lib_arch), ++endif ++ SOURCE_BUILD_DEP := ++ ifeq (,$(findstring gcc,$(PKGSOURCE))) ++ SOURCE_BUILD_DEP := gcc-$(BASE_VERSION)-source (>= $(GCC_SOURCE_VERSION)), gcc-$(BASE_VERSION)-source (<< $(NEXT_GCC_SOURCE_VERSION)), ++ endif ++ GNAT_BUILD_DEP := gnat-$(BASE_VERSION), ++ ifneq (,$(filter !$(DEB_TARGET_ARCH),$(ada_no_archs))) ++ GNAT_BUILD_DEP := ++ endif ++ GDC_BUILD_DEP := gdc-$(BASE_VERSION), ++ ifneq (,$(filter !$(DEB_TARGET_ARCH),$(d_no_archs))) ++ GDC_BUILD_DEP := ++ endif ++ ifeq (yes_,$(with_m2)_$(filter !$(DEB_TARGET_ARCH),$(m2_no_archs))) ++ GM2_BUILD_DEP += gm2-$(BASE_VERSION), ++ endif ++ ifeq (yes_,$(with_cobol)_$(filter !$(DEB_TARGET_ARCH),$(cobol_no_archs))) ++ COBOL_BUILD_DEP += gcobol-$(BASE_VERSION), ++ endif ++ ifeq (yes_,$(with_ga68)_$(filter !$(DEB_TARGET_ARCH),$(algol_no_archs))) ++ GA68_BUILD_DEP += ga68-$(BASE_VERSION), ++ endif ++ arch_gnutype_map = $(DEB_TARGET_ARCH)=$(TARGET_ALIAS) ++endif # cross compiler ++ ++BASE_BREAKS := gnat (<< 7) ++# these would need proper updates, and are only needed for upgrades ++ifneq (,$(filter $(distrelease),stretch jessie trusty xenial bionic)) ++ BASE_BREAKS := ++endif ++ ++# FIXME: can these be dropped? In the end the libgcc_s.so.1 remained in the same location. ++ifneq (,$(filter $(DEB_HOST_ARCH), arm64 s390x sparc64)) ++ ifeq (,$(filter $(distrelease), jessie stretch buster trusty xenial bionic)) ++ LIBGCC_BREAKS := libgcc-9-dev (<< 9.2.1-26), libgcc-8-dev (<< 8.3.0-27), libgcc-7-dev (<< 7.5.0-4), ++ endif ++endif ++ifneq (,$(filter $(distrelease),sid bullseye focal)) ++ LIBGCC_BREAKS += cryptsetup-initramfs (<< 2:2.2.2-3~), ++endif ++ ++# The numeric part of the gcc version number (x.yy.zz) ++NEXT_GCC_VERSION := $(shell echo $(GCC_VERSION) | \ ++ awk -F. '{OFS="."; if (NF==2) $$3=1; else $$NF += 1; print}') ++# first version with a new path component in gcc_lib_dir (i.e. GCC_VERSION ++# or TARGET_ALIAS changes), or last version available for all architectures ++DEB_GCC_SOFT_VERSION := 15 ++DEB_GNAT_SOFT_VERSION := 15 ++ ++ifeq ($(with_d),yes) ++ GDC_VERSION := $(BASE_VERSION) ++ DEB_GDC_VERSION := $(DEB_VERSION) ++endif ++ ++ifeq ($(with_m2),yes) ++ GM2_VERSION := $(BASE_VERSION) ++ DEB_GM2_VERSION := $(DEB_VERSION) ++endif ++ ++# semiautomatic ... ++DEB_SOVERSION := $(DEB_VERSION) ++DEB_SOVERSION := 5 ++DEB_SOEVERSION := $(EPOCH):5 ++DEB_STDCXX_SOVERSION := 5 ++DEB_GOMP_SOVERSION := $(DEB_SOVERSION) ++ ++DEB_GCC_VERSION := $(DEB_VERSION) ++ ++DEB_GNAT_VERSION := $(DEB_VERSION) ++ ++GNAT_VERSION := $(BASE_VERSION) ++ ++LIBGNAT_DEP := ++ifeq ($(with_libgnat),yes) ++ LIBGNAT_DEP := libgnat-$(GNAT_VERSION)$(LS)$(AQ) (>= $${gcc:Version}) ++endif ++ ++pkg_ver := -$(BASE_VERSION) ++ ++ctrl_flags = \ ++ -DBINUTILSV=$(BINUTILSV) \ ++ -DBINUTILSBDV=$(BINUTILSBDV) \ ++ -DSRCNAME=$(PKGSOURCE) \ ++ -D__$(DEB_TARGET_GNU_CPU)__ \ ++ -DARCH=$(DEB_TARGET_ARCH) \ ++ -DDIST=$(distribution) \ ++ -DLOCALES=$(LOCALES) \ ++ ++ctrl_flags += \ ++ -DLIBC_DEV_DEP="$(LIBC_DEV_DEP)" \ ++ -DLIBC_BIARCH_BUILD_DEP="$(LIBC_BIARCH_BUILD_DEP)" \ ++ -DLIBC_DBG_DEP="$(LIBC_DBG_DEP)" \ ++ -DBASE_BUILD_DEP="$(BASE_BUILD_DEP)" \ ++ -DFORTRAN_BUILD_DEP="$(FORTRAN_BUILD_DEP)" \ ++ -DGNAT_BUILD_DEP="$(GNAT_BUILD_DEP)" \ ++ -DGO_BUILD_DEP="$(GO_BUILD_DEP)" \ ++ -DLIBSTDCXX_BUILD_INDEP="$(LIBSTDCXX_BUILD_INDEP)" \ ++ -DGDC_BUILD_DEP="$(GDC_BUILD_DEP)" \ ++ -DBINUTILS_BUILD_DEP="$(BINUTILS_BUILD_DEP)" \ ++ -DLIBC_BUILD_DEP="$(LIBC_BUILD_DEP)" \ ++ -DCHECK_BUILD_DEP="$(CHECK_BUILD_DEP)" \ ++ -DAUTO_BUILD_DEP="$(AUTO_BUILD_DEP)" \ ++ -DSDT_BUILD_DEP="$(SDT_BUILD_DEP)" \ ++ -DISL_BUILD_DEP="$(ISL_BUILD_DEP)" \ ++ -DGMP_BUILD_DEP="$(GMP_BUILD_DEP)" \ ++ -DMPFR_BUILD_DEP="$(MPFR_BUILD_DEP)" \ ++ -DMPC_BUILD_DEP="$(MPC_BUILD_DEP)" \ ++ -DDEBHELPER_BUILD_DEP="$(DEBHELPER_BUILD_DEP)" \ ++ -DPKGCONF_BUILD_DEP="$(PKGCONF_BUILD_DEP)" \ ++ -DDPKG_BUILD_DEP="$(DPKG_BUILD_DEP)" \ ++ -DSOURCE_BUILD_DEP="$(SOURCE_BUILD_DEP)" \ ++ -DCROSS_BUILD_DEP="$(CROSS_BUILD_DEP)" \ ++ -DGCC_MULTILIB_BUILD_DEP='$(GCC_MULTILIB_BUILD_DEP)' \ ++ -DTARGET_TOOL_BUILD_DEP='$(TARGET_TOOL_BUILD_DEP)' \ ++ -DPHOBOS_BUILD_DEP="$(PHOBOS_BUILD_DEP)" \ ++ -DGM2_BUILD_DEP="$(GM2_BUILD_DEP)" \ ++ -DRS_BUILD_DEP="$(RS_BUILD_DEP)" \ ++ -DOFFLOAD_BUILD_DEP="$(OFFLOAD_BUILD_DEP)" \ ++ -DUSAGE_BUILD_DEP="$(USAGE_BUILD_DEP)" \ ++ -DAMDGCN_TOOLS_DEP="$(AMDGCN_TOOLS_DEP)" \ ++ -DARCH_GNUTYPE_MAP="$(arch_gnutype_map)" \ ++ -DMULTILIB_ARCHS="$(multilib_archs)" \ ++ -DTP=$(TP) \ ++ -DTS=$(TS) \ ++ -DLS=$(LS) \ ++ -DAQ=$(AQ) \ ++ -DNT=$(NT) ++ ++ifeq ($(DEB_CROSS),yes) ++ ctrl_flags += \ ++ -DTARGET=$(DEB_TARGET_ARCH) \ ++ -DLIBUNWIND_BUILD_DEP="$(LIBUNWIND_BUILD_DEP)" \ ++ -DLIBATOMIC_OPS_BUILD_DEP="$(LIBATOMIC_OPS_BUILD_DEP)" ++ ifeq ($(DEB_STAGE),rtlibs) ++ ctrl_flags += -DCROSS_ARCH=$(DEB_TARGET_ARCH) ++ endif ++else ++ # add '-DPRI=optional' to ctrl_flags if this is not the default compiler ++ # ctrl_flags += \ ++ # -DPRI=optional ++endif ++ ++ifeq ($(with_base_only),yes) ++ ctrl_flags += \ ++ -DBASE_ONLY=yes ++endif ++ ++ifeq ($(with_multiarch_lib),yes) ++ ctrl_flags += \ ++ -DMULTIARCH=yes ++endif ++ ++ctrl_flags += -DBUILD_DEP_FOR_BINUTILS="$(if $(filter yes, $(with_binutils)),$(bd_binutils_only))" ++ ++control: control-file readme-bugs-file parameters-file symbols-files copyright-file substvars-file versioned-files check-versions ++ ++# stage1 and stage2 compilers are only C ++ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) ++ languages = c ++ addons = gccbase cdev plugindev ++ ifeq ($(with_gcclbase),yes) ++ addons += gcclbase ++ endif ++ ifeq ($(multilib),yes) ++ addons += multilib ++ endif ++ addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev) ++ ifeq ($(DEB_STAGE),stage2) ++ addons += libgcc ++ ifeq ($(multilib),yes) ++ addons += lib32gcc lib64gcc libn32gcc ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) ++ endif ++ else ++ LIBC_BIARCH_DEV_DEP := ++ endif ++else ++languages = c c++ fortran objc objpp ++ifeq ($(DEB_STAGE),rtlibs) ++ ifeq (,$(filter libgfortran, $(with_rtlibs))) ++ languages := $(filter-out fortran, $(languages)) ++ endif ++ ifeq (,$(filter libobjc, $(with_rtlibs))) ++ languages := $(filter-out objc objpp, $(languages)) ++ endif ++endif ++ifeq ($(with_dbg),yes) ++ addons += libdbg ++endif ++ifeq ($(with_gccbase),yes) ++ addons += gccbase ++endif ++ifeq ($(with_gcclbase),yes) ++ addons += gcclbase ++endif ++ifneq ($(DEB_STAGE),rtlibs) ++ addons += cdev c++dev source multilib ++ ifeq ($(build_type),build-native) ++ addons += testresults ++ endif ++ ifneq (,$(filter fortran, $(languages))) ++ addons += fdev ++ endif ++ ifneq (,$(filter objc, $(languages))) ++ addons += objcdev ++ endif ++ ifneq (,$(filter objpp, $(languages))) ++ addons += objppdev ++ endif ++ addons += plugindev ++endif ++addons += $(if $(findstring amd64,$(biarchx32archs)),x32dev) ++ifeq ($(with_libgcc),yes) ++ addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) ++ ifeq ($(with_libcompatgcc),yes) ++ addons += libcompatgcc ++ endif ++endif ++ifeq ($(with_libcxx),yes) ++ addons += libcxx lib32cxx lib64cxx libn32cxx ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32cxx) ++endif ++addons += $(if $(findstring amd64,$(biarchx32archs)),libx32dbgcxx) ++ifeq ($(with_libgfortran),yes) ++ addons += libgfortran lib32gfortran lib64gfortran libn32gfortran ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gfortran) ++endif ++ifeq ($(with_libobjc),yes) ++ addons += libobjc lib32objc lib64objc libn32objc ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32objc) ++endif ++ifeq ($(with_libgomp),yes) ++ addons += libgomp lib32gomp lib64gomp libn32gomp ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gomp) ++endif ++ifeq ($(with_libitm),yes) ++ addons += libitm lib32itm lib64itm libn32itm ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32itm) ++endif ++ifeq ($(with_libatomic),yes) ++ addons += libatomic lib32atomic lib64atomic libn32atomic ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32atomic) ++endif ++ifeq ($(with_libbacktrace),yes) ++ addons += libbtrace lib32btrace lib64btrace libn32btrace ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32btrace) ++endif ++ifeq ($(with_libasan),yes) ++ addons += libasan lib32asan lib64asan libn32asan ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32asan) ++endif ++ifeq ($(with_liblsan),yes) ++ addons += liblsan ++ ifneq (,$(filter $(distrelease),lunar jammy focal)) ++ addons += lib32lsan lib64lsan libn32lsan ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32lsan) ++ endif ++endif ++ifeq ($(with_libtsan),yes) ++ addons += libtsan ++ addons += libtsan #lib32tsan lib64tsan libn32tsan ++ #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32tsan) ++endif ++ifeq ($(with_libubsan),yes) ++ addons += libubsan lib32ubsan lib64ubsan libn32ubsan ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ubsan) ++endif ++ifeq ($(with_libhwasan),yes) ++ addons += libhwasan ++endif ++ifeq ($(with_vtv),yes) ++ addons += libvtv lib32vtv lib64vtv #libn32vtv ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32vtv) ++endif ++ifeq ($(with_libqmath),yes) ++ addons += libqmath lib32qmath lib64qmath libn32qmath ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32qmath) ++endif ++ifeq ($(with_jit),yes) ++ addons += jit gdiag ++endif ++ifeq ($(with_libgccjit),yes) ++ addons += libjit ++endif ++ifeq ($(with_libdiag),yes) ++ addons += libdiag ++endif ++ifeq ($(with_offload_nvptx),yes) ++ addons += olnvptx gompnvptx ++endif ++ifeq ($(with_offload_gcn),yes) ++ addons += olgcn gompgcn ++endif ++ifeq ($(with_offload_hsa),yes) ++ addons += olhsa gomphsa ++endif ++ifeq ($(with_libcc1),yes) ++ addons += libcc1 ++endif ++ifeq ($(with_d),yes) ++ languages += d ++ ifeq ($(with_libphobos),yes) ++ addons += libphobos libn32phobos ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32phobos) ++ endif ++ ifeq ($(with_libphobosdev),yes) ++ addons += libdevphobos libdevn32phobos ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libdevx32phobos) ++ endif ++endif ++ifeq ($(with_go),yes) ++ addons += ggo godev ++ ifeq ($(with_libgo),yes) ++ addons += libggo lib32ggo lib64ggo libn32ggo ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo) ++ endif ++endif ++ifeq ($(with_m2),yes) ++ languages += m2 ++ addons += libdevgm2 ++ ifeq ($(with_libgm2),yes) ++ addons += libgm2 # lib32gm2 lib64gm2 libn32gm2 ++ #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gm2) ++ endif ++endif ++ifeq ($(with_cobol),yes) ++ languages += cobol ++ addons += libdevgcobol ++ ifeq ($(with_libgcobol),yes) ++ addons += libgcobol # lib32gcobol lib64gcobol libn32gcobol ++ #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcobol) ++ endif ++endif ++ifeq ($(with_algol),yes) ++ languages += algol ++ addons += libdevga68 ++ ifeq ($(with_libga68),yes) ++ addons += libga68 # lib32ga68 lib64ga68 libn32ga68 ++ #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ga68) ++ endif ++endif ++ifeq ($(with_rs),yes) ++ languages += rust ++ #addons += libdevgrs ++ #ifeq ($(with_libgrs),yes) ++ # addons += libgrs # lib32gm2 lib64gm2 libn32gm2 ++ # #addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gm2) ++ #endif ++endif ++ifeq ($(with_ada),yes) ++ languages += ada ++ addons += libgnat libs # libgmath libnof lib64gnat ssp ++ ifeq ($(with_gnatsjlj),yes) ++ addons += adasjlj ++ endif ++endif ++ ++ ifneq ($(DEB_CROSS),yes) ++ endif # DEB_CROSS ++ ifeq ($(with_separate_libgo),yes) ++ ifeq ($(PKGSOURCE),gcc-$(BASE_VERSION)) ++ languages := $(filter-out go,$(languages)) ++ addons := $(filter-out ggo godev libggo lib64ggo lib32ggo libn32ggo libx32ggo,$(addons)) ++ endif ++ ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) ++ languages = go ++ addons = ggo godev libggo lib64ggo lib32ggo libn32ggo gccbase multilib ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32ggo) ++ ifeq ($(with_standalone_go),yes) ++ addons += libgcc lib4gcc lib32gcc lib64gcc libn32gcc ++ addons += $(if $(findstring amd64,$(biarchx32archs)),libx32gcc) ++ ifeq ($(with_libcc1),yes) ++ addons += libcc1 ++ endif ++ endif ++ endif ++ endif ++ ifeq ($(with_standalone_go),yes) ++ ifeq ($(PKGSOURCE),gccgo-$(BASE_VERSION)) ++ ctrl_flags += -DSTANDALONEGO ++ endif ++ endif ++ ifneq ($(DEB_CROSS),yes) # no docs for cross compilers ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ addons += gfdldoc ++ endif ++ endif ++endif # not stage ++ ++control-file: ++ echo "addons: $(addons)"; \ ++ m4 $(ctrl_flags) \ ++ -DPV=$(pkg_ver) \ ++ -DCXX_SO=$(CXX_SONAME) \ ++ -DGCC_SO=$(GCC_SONAME) \ ++ -DOBJC_SO=$(OBJC_SONAME) \ ++ -DFORTRAN_SO=$(FORTRAN_SONAME) \ ++ -DGNAT_SO=$(GNAT_SONAME) \ ++ -DGNAT_V=$(GNAT_VERSION) \ ++ -DPHOBOS_V=$(GPHOBOS_SONAME) \ ++ -DGM2_V=$(GM2_SONAME) \ ++ -DGDRUNTIME_V=$(GDRUNTIME_SONAME) \ ++ -DGCOBOL_V=$(GCOBOL_SONAME) \ ++ -DGA68_V=$(GA68_SONAME) \ ++ -DGOMP_SO=$(GOMP_SONAME) \ ++ -DITM_SO=$(ITM_SONAME) \ ++ -DATOMIC_SO=$(ATOMIC_SONAME) \ ++ -DBTRACE_SO=$(BTRACE_SONAME) \ ++ -DASAN_SO=$(ASAN_SONAME) \ ++ -DLSAN_SO=$(LSAN_SONAME) \ ++ -DTSAN_SO=$(TSAN_SONAME) \ ++ -DUBSAN_SO=$(UBSAN_SONAME) \ ++ -DHWASAN_SO=$(HWASAN_SONAME) \ ++ -DVTV_SO=$(VTV_SONAME) \ ++ -DQMATH_SO=$(QUADMATH_SONAME) \ ++ -DSSP_SO=$(SSP_SONAME) \ ++ -DGO_SO=$(GO_SONAME) \ ++ -DCC1_SO=$(CC1_SONAME) \ ++ -DGCCJIT_SO=$(GCCJIT_SONAME) \ ++ -DDIAGNOSTICS_SO=$(DIAGNOSTICS_SONAME) \ ++ -Denabled_languages="$(languages) $(addons)" \ ++ -Dada_no_archs="$(ada_no_archs)" \ ++ -Dfortran_no_archs="$(fortran_no_archs)" \ ++ -Dgo_no_archs="$(go_no_archs)" \ ++ -Dd_no_archs="$(d_no_archs)" \ ++ -Dm2_no_archs="$(m2_no_archs)" \ ++ -Drs_no_archs="$(rs_no_archs)" \ ++ -Dcobol_no_archs="$(cobol_no_archs)" \ ++ -Dalgol68_no_archs="$(algol68_no_archs)" \ ++ -Dlibgc_no_archs="$(libgc_no_archs)" \ ++ -Dlibphobos_archs="$(phobos_archs)" \ ++ -Dlibphobos_no_archs="$(phobos_no_archs)" \ ++ -Dcheck_no_archs="$(check_no_archs)" \ ++ -Dlocale_no_archs="$(locale_no_archs)" \ ++ -Dlinux_gnu_archs="$(linux_gnu_archs)" \ ++ -Dbiarch32_archs="$(strip $(subst /, ,$(biarch32archs)))" \ ++ -Dbiarch64_archs="$(strip $(subst /, ,$(biarch64archs)))" \ ++ -Dbiarchn32_archs="$(strip $(subst /, ,$(biarchn32archs)))" \ ++ -Dbiarchx32_archs="$(strip $(subst /, ,$(biarchx32archs)))" \ ++ -Dnvptx_archs="$(nvptx_archs)" \ ++ -Dgcn_archs="$(gcn_archs)" \ ++ -Dbiarch32_conflicts="$(biarch32_conflicts)" \ ++ -Dadd_built_using=$(add_built_using) \ ++ -DGCC_PORTS_BUILD=$(GCC_PORTS_BUILD) \ ++ $(if $(findstring build-native, $(build_type)), \ ++ $(if $(filter $(distrelease),jessie stretch buster xenial bionic focal),,-DLIBGCCPROTECTED=1)) \ ++ debian/control.m4 > debian/control.tmp2 ++ uniq debian/control.tmp2 | grep -v '^ *, *$$' | sed -E '/^Build/s/ *, +/, /g;/^ /s/, +/, /g;/^ /s/ *,/,/g; s/ +$$//' \ ++ $(if $(filter yes, $(with_base_only)), | awk '/^$$/ {if (p) exit; else p=1; } {print}') \ ++ > debian/control.tmp ++ rm -f debian/control.tmp2 ++ [ -e debian/control ] \ ++ && cmp -s debian/control debian/control.tmp \ ++ && rm -f debian/control.tmp && exit 0; \ ++ mv debian/control.tmp debian/control; touch $(control_stamp) ++ ++readme-bugs-file: ++ m4 -DDIST=$(distribution) -DSRCNAME=$(PKGSOURCE) \ ++ debian/README.Bugs.m4 > debian/README.Bugs ++ ++copyright-file: ++ rm -f debian/copyright ++ if echo $(SOURCE_VERSION) | grep -E ^'[0-9][0-9]*\.[0-9]-[0-9]{8}' ; \ ++ then SVN_BRANCH="trunk" ; \ ++ else \ ++ SVN_BRANCH="gcc-$(subst .,_,$(BASE_VERSION))-branch" ; \ ++ fi ; \ ++ sed debian/copyright.in \ ++ -e "s/@BV@/$(BASE_VERSION)/g" \ ++ -e "s/@SVN_BRANCH@/$$SVN_BRANCH/g" \ ++ > debian/copyright ++ ++substvars-file: control-file ++ rm -f debian/substvars.local.tmp ++ ( \ ++ echo 'libgcc:Version=$(DEB_GCC_VERSION)'; \ ++ echo 'gcc:Version=$(DEB_GCC_VERSION)'; \ ++ echo 'gcc:EpochVersion=$(DEB_EVERSION)'; \ ++ echo 'gcc:SoftVersion=$(DEB_GCC_SOFT_VERSION)'; \ ++ echo 'gdc:Version=$(DEB_GDC_VERSION)'; \ ++ echo 'gm2:Version=$(DEB_GM2_VERSION)'; \ ++ echo 'gnat:Version=$(DEB_GNAT_VERSION)'; \ ++ echo 'gnat:SoftVersion=$(DEB_GNAT_SOFT_VERSION)'; \ ++ echo 'gcobol:Version=$(DEB_GCC_VERSION)'; \ ++ echo 'ga68:Version=$(DEB_GCC_VERSION)'; \ ++ echo 'binutils:Version=$(BINUTILSV)'; \ ++ echo 'dep:libgcc=$(LIBGCC_DEP)'; \ ++ echo 'dep:libgccdev=$(LIBGCC_DEV_DEP)'; \ ++ echo 'dep:libgccbiarch=$(libgcc-sbiarch)'; \ ++ echo 'dep:libgccbiarchdev=$(libgccbiarchdev)'; \ ++ echo 'dep:libc=$(LIBC_DEP) (>= $(libc_ver))'; \ ++ echo 'dep:libcdev=$(LIBC_DEV_DEP)'; \ ++ echo 'dep:libcbiarch=$(LIBC_BIARCH_DEP)'; \ ++ echo 'dep:libcbiarchdev=$(LIBC_BIARCH_DEV_DEP)'; \ ++ echo 'dep:libunwinddev=$(LIBUNWIND_DEV_DEP)'; \ ++ echo 'dep:libcxxbiarchdev=$(libstdc++biarchdev)'; \ ++ echo 'dep:libcxxbiarchdbg=$(libstdc++biarchdbg)'; \ ++ echo 'dep:libgnat=$(LIBGNAT_DEP)'; \ ++ echo 'base:Breaks=$(BASE_BREAKS)'; \ ++ echo 'libgcc:Breaks=$(LIBGCC_BREAKS)'; \ ++ echo 'target:suffix=-$(subst _,-,$(TARGET_ALIAS))'; \ ++ ) > debian/substvars.local.tmp ++ifneq (,$(filter $(DEB_TARGET_ARCH), $(multilib_archs))) ++ ( \ ++ echo 'gcc:multilib=gcc-$(BASE_VERSION)-multilib$(TS)'; \ ++ echo 'gxx:multilib=g++-$(BASE_VERSION)-multilib$(TS)'; \ ++ echo 'gobjc:multilib=gobjc-$(BASE_VERSION)-multilib$(TS)'; \ ++ echo 'gobjcxx:multilib=gobjc++-$(BASE_VERSION)-multilib$(TS)'; \ ++ echo 'gfortran:multilib=gfortran-$(BASE_VERSION)-multilib$(TS)'; \ ++ ) >> debian/substvars.local.tmp ++endif ++ifeq ($(with_gold),yes) ++ echo 'dep:gold=binutils-gold (>= $(BINUTILSV))' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_libssp),yes) ++ echo 'dep:libssp=libssp$(SSP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_gomp),yes) ++ echo 'dep:libgomp=libgomp$(GOMP_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_itm),yes) ++ echo 'dep:libitm=libitm$(ITM_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_atomic),yes) ++ echo 'dep:libatomic=libatomic$(ATOMIC_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_libbacktrace),yes) ++ echo 'dep:libbacktrace=libbtrace$(BTRACE_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_asan),yes) ++ echo 'dep:libasan=libasan$(ASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_lsan),yes) ++ echo 'dep:liblsan=liblsan$(LSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_tsan),yes) ++ echo 'dep:libtsan=libtsan$(TSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_ubsan),yes) ++ echo 'dep:libubsan=libubsan$(UBSAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_hwasan),yes) ++ echo 'dep:libhwasan=libhwasan$(HWASAN_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_vtv),yes) ++ echo 'dep:libvtv=libvtv$(VTV_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_qmath),yes) ++ echo 'dep:libqmath=libquadmath$(QUADMATH_SONAME)$(LS)$(AQ) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(distribution),Debian) ++ echo 'dep:libx32z=$(if $(filter $(distribution), Debian),,libx32z1-dev)' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(multilib),yes) ++ echo 'dep:libgfortranbiarchdev=$(libgfortranbiarchdev)' \ ++ >> debian/substvars.local.tmp ++ echo 'dep:libobjcbiarchdev=$(libobjcbiarchdev)' \ ++ >> debian/substvars.local.tmp ++ ifeq ($(with_phobos),yes) ++ echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_libssp),yes) ++ echo 'dep:libsspbiarch=$(libsspbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_gomp),yes) ++ echo 'dep:libgompbiarch=$(libgompbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_itm),yes) ++ echo 'dep:libitmbiarch=$(libitmbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_atomic),yes) ++ echo 'dep:libatomicbiarch=$(libatomicbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_libbacktrace),yes) ++ echo 'dep:libbtracebiarch=$(libbtracebiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_asan),yes) ++ echo 'dep:libasanbiarch=$(libasanbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_lsan),yes) ++ #echo 'dep:liblsanbiarch=$(liblsanbiarch)' \ ++ # >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_tsan),yes) ++ #echo 'dep:libtsanbiarch=$(libtsanbiarch)' \ ++ # >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_ubsan),yes) ++ echo 'dep:libubsanbiarch=$(libubsanbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_hwasan),yes) ++ # amd64 hwasan not available for 32/x32 ++ ifeq ($(DEB_TARGET_ARCH),amd64) ++ else ++ echo 'dep:libhwasanbiarch=$(libhwasanbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ endif ++ ifeq ($(with_vtv),yes) ++ echo 'dep:libvtvbiarch=$(libvtvbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_qmath),yes) ++ echo 'dep:libqmathbiarch=$(libquadmathbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_go),yes) ++ echo 'dep:libgobiarchdev=$(libgobiarchdev)' \ ++ >> debian/substvars.local.tmp ++ echo 'dep:libgobiarch=$(libgobiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++endif ++ifeq ($(DEB_CROSS),yes) ++ echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ ++ >> debian/substvars.local.tmp ++endif ++ifeq ($(with_phobos),yes) ++ echo 'dep:phobosdev=libgphobos$(pkg_ver)-dev$(LS)$(AQ) (>= $(DEB_GCC_SOFT_VERSION))' \ ++ >> debian/substvars.local.tmp ++ ifeq ($(DEB_CROSS),yes) ++ : # FIXME: make the cross gdc aware of both include paths ++ echo 'dep:gdccross=gdc$(pkg_ver) (>= $(DEB_GCC_SOFT_VERSION))' \ ++ >> debian/substvars.local.tmp ++ endif ++ ifeq ($(with_libphobosdev),yes) ++ echo 'dep:libphobosbiarchdev=$(libgphobosbiarchdev)' \ ++ >> debian/substvars.local.tmp ++ echo 'dep:libphobosbiarch=$(libgphobosbiarch)' \ ++ >> debian/substvars.local.tmp ++ endif ++endif ++ifeq ($(with_cc1),yes) ++ ifneq (,$(findstring build-cross, $(build_type))) ++ echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:SoftVersion})' \ ++ >> debian/substvars.local.tmp ++ else ++ echo 'dep:libcc1=libcc1-$(CC1_SONAME) (>= $${gcc:Version})' \ ++ >> debian/substvars.local.tmp ++ endif ++endif ++ifeq ($(DEB_HOST_ARCH),hppa) ++ echo 'dep:prctl=prctl' >> debian/substvars.local.tmp ++endif ++ifeq ($(derivative)-$(DEB_HOST_ARCH),Debian-amd64) ++ echo 'confl:lib32=libc6-i386 (<< 2.9-22)' >> debian/substvars.local.tmp ++endif ++ifeq ($(with_multiarch_lib),yes) ++ echo 'multiarch:breaks=gcc-4.3 (<< 4.3.6-1), gcc-4.4 (<< 4.4.6-4), gcc-4.5 (<< 4.5.3-2)' >> debian/substvars.local.tmp ++endif ++ echo 'golang:Conflicts=golang-go (<< 2:1.3.3-1ubuntu2)' >> debian/substvars.local.tmp ++ifeq ($(add_built_using),yes) ++ echo "Built-Using=$(shell dpkg-query -f '$${source:Package} (= $${source:Version}), ' -W gcc$(pkg_ver)-source)" \ ++ >> debian/substvars.local.tmp ++endif ++ v=`sed -n '/^#define MOD_VERSION/s/.* "\([0-9]*\)"/\1/p' \ ++ $(srcdir)/gcc/fortran/module.cc`; \ ++ echo "fortran:mod-version=gfortran-mod-$$v" >> debian/substvars.local.tmp ++ ++ [ -e debian/substvars.local ] \ ++ && cmp -s debian/substvars.local debian/substvars.local.tmp \ ++ && rm -f debian/substvars.local.tmp && exit 0; \ ++ mv debian/substvars.local.tmp debian/substvars.local; \ ++ touch $(control_stamp) ++ ++parameters-file: ++ rm -f debian/rules.parameters.tmp ++ ( \ ++ echo '# configuration parameters taken from upstream source files'; \ ++ echo 'GCC_VERSION := $(GCC_VERSION)'; \ ++ echo 'NEXT_GCC_VERSION := $(NEXT_GCC_VERSION)'; \ ++ echo 'BASE_VERSION := $(BASE_VERSION)'; \ ++ echo 'SOURCE_VERSION := $(SOURCE_VERSION)'; \ ++ echo 'DEB_VERSION := $(DEB_VERSION)'; \ ++ echo 'DEB_EVERSION := $(DEB_EVERSION)'; \ ++ echo 'DEB_GDC_VERSION := $(DEB_GDC_VERSION)'; \ ++ echo 'DEB_SOVERSION := $(DEB_SOVERSION)'; \ ++ echo 'DEB_SOEVERSION := $(DEB_SOEVERSION)'; \ ++ echo 'DEB_LIBGCC_SOVERSION := $(DEB_LIBGCC_SOVERSION)'; \ ++ echo 'DEB_LIBGCC_VERSION := $(DEB_LIBGCC_VERSION)'; \ ++ echo 'DEB_STDCXX_SOVERSION := $(DEB_STDCXX_SOVERSION)'; \ ++ echo 'DEB_GOMP_SOVERSION := $(DEB_GOMP_SOVERSION)'; \ ++ echo 'GCC_SONAME := $(GCC_SONAME)'; \ ++ echo 'CXX_SONAME := $(CXX_SONAME)'; \ ++ echo 'FORTRAN_SONAME := $(FORTRAN_SONAME)'; \ ++ echo 'OBJC_SONAME := $(OBJC_SONAME)'; \ ++ echo 'GDC_VERSION := $(GDC_VERSION)'; \ ++ echo 'GNAT_VERSION := $(GNAT_VERSION)'; \ ++ echo 'GNAT_SONAME := $(GNAT_SONAME)'; \ ++ echo 'FFI_SONAME := $(FFI_SONAME)'; \ ++ echo 'SSP_SONAME := $(SSP_SONAME)'; \ ++ echo 'GOMP_SONAME := $(GOMP_SONAME)'; \ ++ echo 'ITM_SONAME := $(ITM_SONAME)'; \ ++ echo 'ATOMIC_SONAME := $(ATOMIC_SONAME)'; \ ++ echo 'BTRACE_SONAME := $(BTRACE_SONAME)'; \ ++ echo 'ASAN_SONAME := $(ASAN_SONAME)'; \ ++ echo 'LSAN_SONAME := $(LSAN_SONAME)'; \ ++ echo 'TSAN_SONAME := $(TSAN_SONAME)'; \ ++ echo 'UBSAN_SONAME := $(UBSAN_SONAME)'; \ ++ echo 'HWASAN_SONAME := $(HWASAN_SONAME)'; \ ++ echo 'VTV_SONAME := $(VTV_SONAME)'; \ ++ echo 'QUADMATH_SONAME := $(QUADMATH_SONAME)'; \ ++ echo 'GO_SONAME := $(GO_SONAME)'; \ ++ echo 'CC1_SONAME := $(CC1_SONAME)'; \ ++ echo 'GCCJIT_SONAME := $(GCCJIT_SONAME)'; \ ++ echo 'GPHOBOS_SONAME := $(GPHOBOS_SONAME)'; \ ++ echo 'GDRUNTIME_SONAME := $(GDRUNTIME_SONAME)'; \ ++ echo 'GM2_SONAME := $(GM2_SONAME)'; \ ++ echo 'DIAGNOSTICS_SONAME:= $(DIAGNOSTICS_SONAME)'; \ ++ echo 'GCOBOL_SONAME := $(GCOBOL_SONAME)'; \ ++ echo 'GA68_SONAME := $(GA68_SONAME)'; \ ++ echo 'LIBC_DEP := $(LIBC_DEP)'; \ ++ ) > debian/rules.parameters.tmp ++ [ -e debian/rules.parameters ] \ ++ && cmp -s debian/rules.parameters debian/rules.parameters.tmp \ ++ && rm -f debian/rules.parameters.tmp && exit 0; \ ++ mv debian/rules.parameters.tmp debian/rules.parameters; \ ++ touch $(control_stamp) ++ ++symbols-files: control-file ++ifeq ($(DEB_CROSS),yes) ++ ifneq ($(DEB_STAGE),rtlibs) ++ test -n "$(LS)" ++ set -e; \ ++ for p in $$(dh_listpackages -i | grep '^lib'); do \ ++ p=$${p%$(LS)}; \ ++ if [ -f debian/$$p.symbols.$(DEB_TARGET_ARCH) ]; then \ ++ f=debian/$$p.symbols.$(DEB_TARGET_ARCH); \ ++ elif [ -f debian/$$p.symbols ]; then \ ++ f=debian/$$p.symbols; \ ++ else \ ++ continue; \ ++ fi; \ ++ link=debian/$$p$(LS).symbols; \ ++ if [ -L $$link ]; then \ ++ echo >&2 "removing left over symbols file link: $$link"; \ ++ rm -f $$link; \ ++ fi; \ ++ ln -s $$f $$link; \ ++ done ++ endif ++endif ++ ++versioned-files: ++ fs=`echo debian/*BV* debian/*CXX* debian/*LC* | sort -u`; \ ++ for f in $$fs; do \ ++ [ -f $$f ] || echo "CANNOT FIND $$f"; \ ++ [ -f $$f ] || continue; \ ++ if [ -z "$(DEB_CROSS)" ]; then case "$$f" in *-CR*) continue; esac; fi; \ ++ f2=$$(echo $$f \ ++ | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ ++ sed -e 's/@BV@/$(BASE_VERSION)/g' \ ++ -e 's/@CXX@/$(CXX_SONAME)/g' \ ++ -e 's/@LC@/$(GCC_SONAME)/g' \ ++ -e 's/@SRC@/$(PKGSOURCE)/g' \ ++ -e 's/@GFDL@/$(if $(filter yes,$(GFDL_INVARIANT_FREE)),#)/g' \ ++ -e 's/@gcc_priority@/$(subst .,,$(BASE_VERSION))/g' \ ++ -e 's/@TARGET@/$(DEB_TARGET_GNU_TYPE)/g' \ ++ -e 's/@TARGET_QUAL@/$(TARGET_QUAL)/g' \ ++ $$f > $$f2; \ ++ touch -r $$f $$f2; \ ++ done ++ for t in ar nm ranlib; do \ ++ sed "s/@BV@/$(BASE_VERSION)/g;s/@TOOL@/$$t/g" \ ++ debian/gcc-XX-BV.1 > debian/gcc-$$t-$(BASE_VERSION).1; \ ++ done ++ ++# don't encode versioned build dependencies in the control file, but check ++# these here instead. ++check-versions: ++ v=$$(dpkg-query -l dpkg-dev | awk '/^.i/ {print $$3}'); \ ++ if dpkg --compare-versions "$$v" lt "$(DPKGV)"; then \ ++ echo "dpkg-dev (>= $(DPKGV)) required, found $$v"; \ ++ exit 1; \ ++ fi ++ v=$$(dpkg-query -l binutils binutils-multiarch 2>/dev/null | awk '/^.i/ {print $$3;exit}'); \ ++ if dpkg --compare-versions "$$v" lt "$(BINUTILSBDV)"; then \ ++ echo "binutils (>= $(BINUTILSBDV)) required, found $$v"; \ ++ exit 1; \ ++ fi ++ ++.PRECIOUS: $(stampdir)/%-stamp diff --cc debian/rules.d/binary-ada.mk index 0000000,0000000..52a6cc2 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-ada.mk @@@ -1,0 -1,0 +1,263 @@@ ++ifeq ($(with_libgnat),yes) ++ # During native builds, gnat-BV Depends: ++ # * libgnat because of the development symlink. ++ # During cross builds, gnat1 is linked statically. Only the latter remains. ++ $(lib_binaries) += libgnat ++endif ++ ++arch_binaries := $(arch_binaries) ada-nat ada-host ++ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) ada ++ indep_binaries := $(indep_binaries) ada-build ++endif ++ifneq ($(DEB_CROSS),yes) ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ indep_binaries := $(indep_binaries) ada-doc ++ endif ++endif ++ ++p_gbase = $(p_xbase) ++p_glbase = $(p_lbase) ++ ++p_gnat_n = gnat-$(GNAT_VERSION)-$(subst _,-,$(TARGET_ALIAS)) ++p_gnat_h = gnat-$(GNAT_VERSION)-for-host ++p_gnat_b = gnat-$(GNAT_VERSION)-for-build ++p_gnat = gnat-$(GNAT_VERSION) ++p_gnatsjlj= gnat-$(GNAT_VERSION)-sjlj$(cross_bin_arch) ++p_lgnat = libgnat-$(GNAT_VERSION)$(cross_lib_arch) ++p_lgnat_dbg = libgnat-$(GNAT_VERSION)-dbg$(cross_lib_arch) ++p_gnatd = $(p_gnat)-doc ++ ++d_gbase = debian/$(p_gbase) ++d_gnat_n = debian/$(p_gnat_n) ++d_gnat_h = debian/$(p_gnat_h) ++d_gnat_b = debian/$(p_gnat_b) ++d_gnat = debian/$(p_gnat) ++d_gnatsjlj = debian/$(p_gnatsjlj) ++d_lgnat = debian/$(p_lgnat) ++d_gnatd = debian/$(p_gnatd) ++ ++GNAT_TOOLS = gnat gnatbind gnatchop gnatclean gnatkr gnatlink \ ++ gnatls gnatmake gnatname gnatprep gnathtml ++ ++dirs_gnat_n = \ ++ $(docdir)/$(p_gbase) \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ $(gcc_lib_dir)/{adalib,adainclude} \ ++ $(gcc_lexec_dir) \ ++ usr/share/lintian/overrides ++ ++dirs_gnat = \ ++ $(docdir)/$(p_gbase)/ada \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ usr/share/lintian/overrides ++ ++files_gnat_n = \ ++ $(gcc_lexec_dir)/gnat1 \ ++ $(gcc_lib_dir)/ada_target_properties \ ++ $(gcc_lib_dir)/adainclude/*.ad[bs] \ ++ $(gcc_lib_dir)/adainclude/*.h \ ++ $(gcc_lib_dir)/adalib/*.ali \ ++ $(gcc_lib_dir)/adalib/lib*.a \ ++ $(foreach i,$(GNAT_TOOLS),$(PF)/bin/$(cmd_prefix)$(i)$(pkg_ver)) ++ ++# Strip unreproducible -f*-prefix-map= options from installed .ali ++# files until the proper solution BUILD_PATH_PREFIX_MAP is accepted. ++sed_ali_strip_prefix_map := sed -i '/^A -f[a-z]+-prefix-map=/d' ++ ++$(binary_stamp)-libgnat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ : # libgnat ++ rm -rf $(d_lgnat) ++ ++ dh_install -p$(p_lgnat) $(gcc_lib_dir)/adalib/libgna{t,rl}-$(GNAT_SONAME).so $(usr_lib) ++ ++ debian/dh_doclink -p$(p_lgnat) $(p_glbase) ++ ++ debian/dh_rmemptydirs -p$(p_lgnat) ++ ++ b=libgnat; \ ++ v=$(GNAT_VERSION); \ ++ for ext in preinst postinst prerm postrm; do \ ++ for t in '' -dev -dbg; do \ ++ if [ -f debian/$$b$$t.$$ext ]; then \ ++ cp -pf debian/$$b$$t.$$ext debian/$$b$$v$$t.$$ext; \ ++ fi; \ ++ done; \ ++ done ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_lgnat) \ ++ -V '$(p_lgnat) (>= $(shell echo $(DEB_VERSION) | sed 's/-.*//'))' ++ $(call cross_mangle_shlibs,$(p_lgnat)) ++ ++ifneq (,$(filter $(build_type), build-native cross-build-native)) ++ mkdir -p $(d_lgnat)/usr/share/lintian/overrides ++ echo package-name-doesnt-match-sonames > \ ++ $(d_lgnat)/usr/share/lintian/overrides/$(p_lgnat) ++endif ++ ++# The subst Make command below could be simplified, but ensures ++# consistency with libraries building non-default multilib packages. ++ $(call do_strip_lib_dbg, $(p_lgnat), $(p_lgnat_dbg), $(v_dbg),,) ++ $(cross_shlibdeps) dh_shlibdeps -p$(p_lgnat) \ ++ $(call shlibdirs_to_search, \ ++ $(subst gnat-$(GNAT_SONAME),gcc-s$(GCC_SONAME),$(p_lgnat)) \ ++ $(subst gnat-$(GNAT_SONAME),atomic$(ATOMIC_SONAME),$(p_lgnat)) \ ++ ,) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common) ++ $(call cross_mangle_substvars,$(p_lgnat)) ++ ++ifeq ($(with_dbg),yes) ++ : # $(p_lgnat_dbg) ++ debian/dh_doclink -p$(p_lgnat_dbg) $(p_glbase) ++endif ++ echo $(p_lgnat) $(if $(with_dbg), $(p_lgnat_dbg)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-ada-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ : # $(p_gnat_n) ++ rm -rf $(d_gnat_n) ++ dh_installdirs -p$(p_gnat_n) $(dirs_gnat_n) ++ : # Upstream does not install gnathtml. ++ cp src/gcc/ada/gnathtml.pl debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) ++ chmod 755 debian/tmp/$(PF)/bin/$(cmd_prefix)gnathtml$(pkg_ver) ++ $(dh_compat2) dh_movefiles -p$(p_gnat_n) $(files_gnat_n) ++ ++ifeq ($(with_libgnat),yes) ++ # Similar links specific to Debian. FIXME: what is their purpose? ++ dh_link -p$(p_gnat_n) $(foreach lib,libgnat libgnarl,\ ++ $(usr_lib)/$(lib)-$(GNAT_SONAME).so $(gcc_lib_dir)/adalib/$(lib).so) ++endif ++ debian/dh_doclink -p$(p_gnat_n) $(p_gbase) ++ for i in $(GNAT_TOOLS); do \ ++ case "$$i" in \ ++ gnat) cp -p debian/gnat.1 $(d_gnat_n)/$(PF)/share/man/man1/$(cmd_prefix)gnat$(pkg_ver).1 ;; \ ++ *) ln -sf $(cmd_prefix)gnat$(pkg_ver).1 $(d_gnat_n)/$(PF)/share/man/man1/$(cmd_prefix)$$i$(pkg_ver).1; \ ++ esac; \ ++ done ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_gnat_n)/$(gcc_lexec_dir)/gnat1 ++endif ++ dh_strip -p$(p_gnat_n) ++ find $(d_gnat_n) -name '*.ali' | xargs $(sed_ali_strip_prefix_map) ++ find $(d_gnat_n) -name '*.ali' | xargs chmod 444 ++ dh_shlibdeps -p$(p_gnat_n) ++ ( \ ++ echo '$(p_gnat_n) binary: hardening-no-pie'; \ ++ echo '$(p_gnat_n) binary: non-standard-file-perm' \ ++ ) > $(d_gnat_n)/usr/share/lintian/overrides/$(p_gnat_n) ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_gnat_n) binary: binary-without-manpage' \ ++ >> $(d_gnat_n)/usr/share/lintian/overrides/$(p_gnat_n) ++endif ++ ++ debian/dh_rmemptydirs -p$(p_gnat_n) ++ ++ echo $(p_gnat_n) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-ada-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gnat_h) ++ debian/dh_doclink -p$(p_gnat_h) $(p_xbase) ++ echo $(p_gnat_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-ada-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gnat_b) ++ debian/dh_doclink -p$(p_gnat_b) $(p_cpp_b) ++ echo $(p_gnat_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-ada: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ : # $(p_gnat) ++ rm -rf $(d_gnat) ++ dh_installdirs -p$(p_gnat) $(dirs_gnat) ++ ++ifeq ($(with_gnatsjlj),yes) ++ dh_installdirs -p$(p_gnatsjlj) $(gcc_lib_dir) ++ $(dh_compat2) dh_movefiles -p$(p_gnatsjlj) $(gcc_lib_dir)/rts-sjlj/adalib $(gcc_lib_dir)/rts-sjlj/adainclude ++endif ++ ++ debian/dh_doclink -p$(p_gnat) $(p_gbase) ++ifeq ($(with_gnatsjlj),yes) ++ debian/dh_doclink -p$(p_gnatsjlj) $(p_gbase) ++endif ++ cp -p src/gcc/ada/ChangeLog $(d_gnat)/$(docdir)/$(p_gbase)/ada/. ++ cp -p debian/ada/README.gnat $(d_gnat)/$(docdir)/$(p_gbase)/ada/. ++ ++ifneq (,$(filter $(build_type), build-native cross-build-native)) ++ : # ship the versioned prefixed names in the gnat package. ++ for i in $(GNAT_TOOLS); do \ ++ ln -sf $(cmd_prefix)$$i$(pkg_ver) \ ++ $(d_gnat)/$(PF)/bin/$$i$(pkg_ver); \ ++ ln -sf $(cmd_prefix)gnat$(pkg_ver).1.gz \ ++ $(d_gnat)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ ++ done ++endif ++ ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_gnat) binary: binary-without-manpage' \ ++ >> $(d_gnat)/usr/share/lintian/overrides/$(p_gnat) ++endif ++ ++ debian/dh_rmemptydirs -p$(p_gnat) ++ ++ echo $(p_gnat) >> debian/arch_binaries ++ ++ifeq ($(with_gnatsjlj),yes) ++ dh_strip -p$(p_gnatsjlj) ++ find $(d_gnatsjlj) -name '*.ali' | xargs $(sed_ali_strip_prefix_map) ++ find $(d_gnatsjlj) -name '*.ali' | xargs chmod 444 ++ dh_shlibdeps -p$(p_gnatsjlj) ++ echo $(p_gnatsjlj) >> debian/arch_binaries ++endif ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++ ++$(build_gnatdoc_stamp): $(build_stamp) ++ mkdir -p html ++ rm -f html/*.info ++ echo -n gnat_ugn gnat_rm gnat-style | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ ++ sh -c 'cd html && \ ++ echo "generating {}-$(GNAT_VERSION).info"; \ ++ makeinfo -I $(srcdir)/gcc/doc/include -I $(srcdir)/gcc/ada \ ++ -I $(builddir)/gcc \ ++ -o {}-$(GNAT_VERSION).info \ ++ $(srcdir)/gcc/ada/{}.texi' ++ touch $@ ++ ++$(binary_stamp)-ada-doc: $(build_html_stamp) $(build_gnatdoc_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gnatd) ++ dh_installdirs -p$(p_gnatd) \ ++ $(PF)/share/info ++ cp -p html/gnat*info* $(d_gnatd)/$(PF)/share/info/. ++ dh_installdocs -p$(p_gnatd) \ ++ html/gnat_ugn.html html/gnat_rm.html html/gnat-style.html ++ echo $(p_gnatd) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-algol68.mk index 0000000,0000000..364f37b new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-algol68.mk @@@ -1,0 -1,0 +1,307 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifeq (0,1) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) ga68-multi ++ endif ++ endif ++ arch_binaries := $(arch_binaries) ga68-nat ga68-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) ga68 ++ indep_binaries := $(indep_binaries) ga68-build ++ endif ++ ++ ifeq ($(with_algoldev),yes) ++ $(lib_binaries) += libga68-dev ++ endif ++ ifeq ($(with_libga68),yes) ++ $(lib_binaries) += libga68 ++ endif ++ ++ ifneq ($(DEB_CROSS),yes) ++ indep_binaries := $(indep_binaries) ga68-doc ++ endif ++ ++ ifeq (0,1) ++ ifeq ($(with_lib64ga68dev),yes) ++ $(lib_binaries) += lib64ga68-dev ++ endif ++ ifeq ($(with_lib32ga68dev),yes) ++ $(lib_binaries) += lib32ga68-dev ++ endif ++ ifeq ($(with_libn32ga68dev),yes) ++ $(lib_binaries) += libn32ga68-dev ++ endif ++ ifeq ($(with_libx32ga68dev),yes) ++ $(lib_binaries) += libx32ga68-dev ++ endif ++ ++ ifeq ($(with_lib64ga68),yes) ++ $(lib_binaries) += lib64ga68 ++ endif ++ ifeq ($(with_lib32ga68),yes) ++ $(lib_binaries) += lib32ga68 ++ endif ++ ifeq ($(with_libn32ga68),yes) ++ $(lib_binaries) += libn32ga68 ++ endif ++ ifeq ($(with_libx32ga68),yes) ++ $(lib_binaries) += libx32ga68 ++ endif ++ endif ++endif ++ ++p_ga68_n = ga68$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_ga68_h = ga68$(pkg_ver)-for-host ++p_ga68_b = ga68$(pkg_ver)-for-build ++p_ga68 = ga68$(pkg_ver) ++p_ga68_m = ga68$(pkg_ver)-multilib$(cross_bin_arch) ++p_libga68 = libga68-$(GA68_SONAME) ++p_libga68dev = libga68$(pkg_ver)-dev ++p_ga68d = ga68$(pkg_ver)-doc ++ ++d_ga68_n = debian/$(p_ga68_n) ++d_ga68_h = debian/$(p_ga68_h) ++d_ga68_b = debian/$(p_ga68_b) ++d_ga68 = debian/$(p_ga68) ++d_ga68_m = debian/$(p_ga68_m) ++d_libga68 = debian/$(p_libga68) ++d_libga68dev = debian/$(p_libga68dev) ++d_ga68d = debian/$(p_ga68d) ++ ++dirs_ga68_n = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ $(gcc_lexec_dir) \ ++ $(gcc_lib_dir) \ ++ usr/share/lintian/overrides ++#ifneq ($(DEB_CROSS),yes) ++# dirs_ga68_n += \ ++# $(ga68_include_dir) ++#endif ++ ++dirs_ga68 = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ $(docdir)/$(p_xbase)/Algol68 ++ ++files_ga68_n = \ ++ $(PF)/bin/$(cmd_prefix)ga68$(pkg_ver) \ ++ $(PF)/share/man/man1/$(cmd_prefix)ga68$(pkg_ver).1 \ ++ $(gcc_lexec_dir)/a681 ++ ++dirs_libga68 = \ ++ $(PF)/lib \ ++ $(ga68_include_dir) \ ++ $(gcc_lib_dir) ++ ++$(binary_stamp)-ga68-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_ga68_n) ++ dh_installdirs -p$(p_ga68_n) $(dirs_ga68_n) ++ ++ $(dh_compat2) dh_movefiles -p$(p_ga68_n) $(files_ga68_n) ++ ++ mv $(d)/$(usr_lib)/libga68.spec $(d_ga68_n)/$(gcc_lib_dir)/ ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_ga68_n)/$(gcc_lexec_dir)/a681 ++endif ++ dh_strip -p$(p_ga68_n) \ ++ $(if $(unstripped_exe),-X/a681 -X/ga68) ++ dh_shlibdeps -p$(p_ga68_n) ++ ++ mkdir -p $(d_ga68_n)/usr/share/lintian/overrides ++ echo '$(p_ga68_n) binary: hardening-no-pie' \ ++ > $(d_ga68_n)/usr/share/lintian/overrides/$(p_ga68_n) ++ ++ debian/dh_doclink -p$(p_ga68_n) $(p_xbase) ++ ++ echo $(p_ga68_n) >> debian/arch_binaries ++ ++ find $(d_ga68_n) -type d -empty -delete ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-ga68-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_ga68_h) ++ debian/dh_doclink -p$(p_ga68_h) $(p_xbase) ++ echo $(p_ga68_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-ga68-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_ga68_b) ++ debian/dh_doclink -p$(p_ga68_b) $(p_cpp_b) ++ echo $(p_ga68_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-ga68: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_ga68) ++ dh_installdirs -p$(p_ga68) $(dirs_ga68) ++ ++# cp -p $(srcdir)/gcc/algol68/ChangeLog \ ++# $(d_ga68)/$(docdir)/$(p_xbase)/Algol68/changelog.algol68 ++ ++ debian/dh_doclink -p$(p_ga68) $(p_xbase) ++ ++ ln -sf $(cmd_prefix)ga68$(pkg_ver) \ ++ $(d_ga68)/$(PF)/bin/ga68$(pkg_ver) ++ ln -sf $(cmd_prefix)ga68$(pkg_ver).1.gz \ ++ $(d_ga68)/$(PF)/share/man/man1/ga68$(pkg_ver).1.gz ++ debian/dh_rmemptydirs -p$(p_ga68) ++ ++ echo $(p_ga68) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-ga68-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_ga68_m) ++ dh_installdirs -p$(p_ga68_m) $(docdir) ++ ++ debian/dh_doclink -p$(p_ga68_m) $(p_xbase) ++ ++ dh_strip -p$(p_ga68_m) ++ dh_shlibdeps -p$(p_ga68_m) ++ echo $(p_ga68_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++define __do_libga68 ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) \ ++ $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(usr_lib$(2))/libga68.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ln -sf libga68.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) ++ rm -f debian/$(p_l).symbols ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst ga68$(GA68_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst ga68$(GA68_SONAME),stdc++$(GXX_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ ++ mkdir -p $(d_l)/usr/share/lintian/overrides; \ ++ ( \ ++ echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ ++ ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) ++ ++ dh_lintian -p$(p_l) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# install_ga68_lib(lib,soname,flavour,package) ++define install_ga68_lib ++ dh_link -p$(4) \ ++ /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so ++ rm -f $(d)/$(usr_lib$(3))/$(1).so ++ mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/$(5)/$(1).a ++endef ++ ++define __do_libga68_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) \ ++ $(gcc_lib_dir$(2)) ++ ++ : # install_ga68_lib calls needed? ++ $(call install_ga68_lib,libga68,$(GA68_SONAME),$(2),$(p_l)) ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++do_libga68 = $(call __do_libga68,lib$(1)ga68-$(GA68_SONAME),$(1)) ++do_libga68_dev = $(call __do_libga68_dev,lib$(1)ga68-$(BASE_VERSION)-dev,$(1)) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-ga68-doc: $(build_html_stamp) $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_ga68d) ++ dh_installdirs -p$(p_ga68d) \ ++ $(docdir)/$(p_xbase)/Algol68 \ ++ $(PF)/share/info ++ cp -p $(d)/$(PF)/share/info/ga68.info \ ++ $(d_ga68d)/$(PF)/share/info/ga68-$(BASE_VERSION).info ++ cp -p $(d)/$(PF)/share/info/ga68-internals.info \ ++ $(d_ga68d)/$(PF)/share/info/ga68-internals-$(BASE_VERSION).info ++ cp -p html/ga68.html $(d_ga68d)/$(docdir)/$(p_xbase)/Algol68/ga68-$(BASE_VERSION).html ++ ++ debian/dh_doclink -p$(p_ga68d) $(p_xbase) ++ dh_installdocs -p$(p_ga68d) ++ rm -f $(d_ga68d)/$(docdir)/$(p_xbase)/copyright ++ ++ echo $(p_ga68d) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++ ++$(binary_stamp)-libga68: $(install_stamp) ++ $(call do_libga68,) ++ ++$(binary_stamp)-lib64ga68: $(install_stamp) ++ $(call do_libga68,64) ++ ++$(binary_stamp)-lib32ga68: $(install_stamp) ++ $(call do_libga68,32) ++ ++$(binary_stamp)-libn32ga68: $(install_stamp) ++ $(call do_libga68,n32) ++ ++$(binary_stamp)-libx32ga68: $(install_stamp) ++ $(call do_libga68,x32) ++ ++ ++$(binary_stamp)-libga68-dev: $(install_stamp) ++ $(call do_libga68_dev,) ++ ++$(binary_stamp)-lib64ga68-dev: $(install_stamp) ++ $(call do_libga68_dev,64) ++ ++$(binary_stamp)-lib32ga68-dev: $(install_stamp) ++ $(call do_libga68_dev,32) ++ ++$(binary_stamp)-libx32ga68-dev: $(install_stamp) ++ $(call do_libga68_dev,x32) ++ ++$(binary_stamp)-libn32ga68-dev: $(install_stamp) ++ $(call do_libga68_dev,n32) diff --cc debian/rules.d/binary-base.mk index 0000000,0000000..c6f589b new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-base.mk @@@ -1,0 -1,0 +1,49 @@@ ++arch_binaries += base ++ifeq ($(with_gcclbase),yes) ++ ifneq ($(with_base_only),yes) ++ indep_binaries += lbase ++ endif ++endif ++ ++# --------------------------------------------------------------------------- ++# gcc-base ++ ++$(binary_stamp)-base: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ rm -rf $(d_base) ++ dh_installdirs -p$(p_base) ++ ++ifeq ($(with_base_only),yes) ++ dh_installdocs -p$(p_base) debian/README.Debian ++else ++ dh_installdocs -p$(p_base) debian/README.Debian.$(DEB_TARGET_ARCH) ++endif ++ rm -f $(d_base)/usr/share/doc/$(p_base)/README.Debian ++ dh_installchangelogs -p$(p_base) ++ dh_compress -p$(p_base) ++ dh_fixperms -p$(p_base) ++ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) ++ $(cross_gencontrol) dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) ++else ++ dh_gencontrol -p$(p_base) -- -v$(DEB_VERSION) $(common_substvars) ++endif ++ dh_installdeb -p$(p_base) ++ dh_md5sums -p$(p_base) ++ dh_builddeb -p$(p_base) ++ touch $@ ++ ++$(binary_stamp)-lbase: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ rm -rf $(d_lbase) ++ dh_installdocs -p$(p_lbase) debian/README.Debian ++ rm -f debian/$(p_lbase)/usr/share/doc/$(p_lbase)/README.Debian ++ dh_installchangelogs -p$(p_lbase) ++ dh_compress -p$(p_lbase) ++ dh_fixperms -p$(p_lbase) ++ dh_gencontrol -p$(p_lbase) -- -v$(DEB_VERSION) $(common_substvars) ++ dh_installdeb -p$(p_lbase) ++ dh_md5sums -p$(p_lbase) ++ dh_builddeb -p$(p_lbase) ++ touch $@ diff --cc debian/rules.d/binary-cobol.mk index 0000000,0000000..22b05a7 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-cobol.mk @@@ -1,0 -1,0 +1,328 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifeq (0,1) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) gcobol-multi ++ endif ++ endif ++ arch_binaries := $(arch_binaries) gcobol-nat gcobol-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) gcobol ++ indep_binaries := $(indep_binaries) gcobol-build ++ endif ++ ++ ifeq ($(with_coboldev),yes) ++ $(lib_binaries) += libgcobol-dev ++ endif ++ ifeq ($(with_libgcobol),yes) ++ $(lib_binaries) += libgcobol ++ endif ++ ++ ifeq (0,1) ++ ifneq ($(DEB_CROSS),yes) ++ indep_binaries := $(indep_binaries) gcobol-doc ++ endif ++ endif ++ ++ ifeq (0,1) ++ ifeq ($(with_lib64gcoboldev),yes) ++ $(lib_binaries) += lib64gcobol-dev ++ endif ++ ifeq ($(with_lib32gcoboldev),yes) ++ $(lib_binaries) += lib32gcobol-dev ++ endif ++ ifeq ($(with_libn32gcoboldev),yes) ++ $(lib_binaries) += libn32gcobol-dev ++ endif ++ ifeq ($(with_libx32gcoboldev),yes) ++ $(lib_binaries) += libx32gcobol-dev ++ endif ++ ++ ifeq ($(with_lib64gcobol),yes) ++ $(lib_binaries) += lib64gcobol ++ endif ++ ifeq ($(with_lib32gcobol),yes) ++ $(lib_binaries) += lib32gcobol ++ endif ++ ifeq ($(with_libn32gcobol),yes) ++ $(lib_binaries) += libn32gcobol ++ endif ++ ifeq ($(with_libx32gcobol),yes) ++ $(lib_binaries) += libx32gcobol ++ endif ++ endif ++endif ++ ++p_gcobol_n = gcobol$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_gcobol_h = gcobol$(pkg_ver)-for-host ++p_gcobol_b = gcobol$(pkg_ver)-for-build ++p_gcobol = gcobol$(pkg_ver) ++p_gcobol_m = gcobol$(pkg_ver)-multilib$(cross_bin_arch) ++p_libgcobol = libgcobol$(GCOBOL_SONAME) ++p_libgcoboldev = libgcobol$(pkg_ver)-dev ++p_gcobold = gcobol$(pkg_ver)-doc ++ ++d_gcobol_n = debian/$(p_gcobol_n) ++d_gcobol_h = debian/$(p_gcobol_h) ++d_gcobol_b = debian/$(p_gcobol_b) ++d_gcobol = debian/$(p_gcobol) ++d_gcobol_m = debian/$(p_gcobol_m) ++d_libgcobol = debian/$(p_libgcobol) ++d_libgcoboldev = debian/$(p_libgcoboldev) ++d_gcobold = debian/$(p_gcobold) ++ ++dirs_gcobol_n = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ $(gcc_lexec_dir) \ ++ $(gcc_lib_dir) \ ++ usr/share/lintian/overrides ++#ifneq ($(DEB_CROSS),yes) ++# dirs_gcobol_n += \ ++# $(gcobol_include_dir) ++#endif ++ ++dirs_gcobol = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ $(docdir)/$(p_xbase)/COBOL ++ ++files_gcobol_n = \ ++ $(PF)/bin/$(cmd_prefix)gcobol$(pkg_ver) \ ++ $(PF)/bin/$(cmd_prefix)gcobc$(pkg_ver) \ ++ $(gcc_lexec_dir)/cobol1 ++ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) ++ files_gcobol_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix)gcobol$(pkg_ver).1 ++endif ++ ++dirs_libgcobol = \ ++ $(PF)/lib \ ++ $(gcobol_include_dir) \ ++ $(gcc_lib_dir) ++ ++$(binary_stamp)-gcobol-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcobol_n) ++ dh_installdirs -p$(p_gcobol_n) $(dirs_gcobol_n) ++ ++ $(dh_compat2) dh_movefiles -p$(p_gcobol_n) $(files_gcobol_n) ++ ++ mv $(d)/$(usr_lib)/libgcobol.spec $(d_gcobol_n)/$(gcc_lib_dir)/ ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_gcobol_n)/$(gcc_lexec_dir)/cobol1 ++endif ++ dh_strip -p$(p_gcobol_n) \ ++ $(if $(unstripped_exe),-X/cobol1 -X/gcobol) ++ dh_shlibdeps -p$(p_gcobol_n) ++ ++ mkdir -p $(d_gcobol_n)/usr/share/lintian/overrides ++ ( \ ++ echo '$(p_gcobol_n) binary: hardening-no-pie'; \ ++ echo '$(p_gcobol_n) binary: no-manual-page'; \ ++ ) > $(d_gcobol_n)/usr/share/lintian/overrides/$(p_gcobol_n) ++ ++ debian/dh_doclink -p$(p_gcobol_n) $(p_xbase) ++ ++ echo $(p_gcobol_n) >> debian/arch_binaries ++ ++ find $(d_gcobol_n) -type d -empty -delete ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gcobol-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gcobol_h) ++ debian/dh_doclink -p$(p_gcobol_h) $(p_xbase) ++ echo $(p_gcobol_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gcobol-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gcobol_b) ++ debian/dh_doclink -p$(p_gcobol_b) $(p_cpp_b) ++ echo $(p_gcobol_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gcobol: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcobol) ++ dh_installdirs -p$(p_gcobol) $(dirs_gcobol) ++ ++# cp -p $(srcdir)/gcc/cobol/ChangeLog \ ++# $(d_gcobol)/$(docdir)/$(p_xbase)/COBOL/changelog.cobol ++ ++ ln -sf $(cmd_prefix)gcobc$(pkg_ver) \ ++ $(d_gcobol)/$(PF)/bin/gcobc$(pkg_ver) ++ ln -sf $(cmd_prefix)gcobol$(pkg_ver) \ ++ $(d_gcobol)/$(PF)/bin/gcobol$(pkg_ver) ++ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) ++ ln -sf $(cmd_prefix)gcobol$(pkg_ver).1.gz \ ++ $(d_gcobol)/$(PF)/share/man/man1/gcobol$(pkg_ver).1.gz ++endif ++ debian/dh_doclink -p$(p_gcobol) $(p_xbase) ++ ++ debian/dh_rmemptydirs -p$(p_gcobol) ++ ++ echo $(p_gcobol) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gcobol-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcobol_m) ++ dh_installdirs -p$(p_gcobol_m) $(docdir) ++ ++ debian/dh_doclink -p$(p_gcobol_m) $(p_xbase) ++ ++ dh_strip -p$(p_gcobol_m) ++ dh_shlibdeps -p$(p_gcobol_m) ++ echo $(p_gcobol_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++define __do_libgcobol ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) \ ++ $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(usr_lib$(2))/libgcobol.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ln -sf libgcobol.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) ++ rm -f debian/$(p_l).symbols ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst gcobol$(GCOBOL_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst gcobol$(GCOBOL_SONAME),stdc++$(GXX_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ ++ mkdir -p $(d_l)/usr/share/lintian/overrides; \ ++ ( \ ++ echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ ++ ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) ++ ++ dh_lintian -p$(p_l) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# install_gcobol_lib(lib,soname,flavour,package) ++define install_gcobol_lib ++ dh_link -p$(4) \ ++ /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so ++ rm -f $(d)/$(usr_lib$(3))/$(1).so ++ rm -f $(d)/$(usr_lib$(3))/$(1).a ++endef ++ ++define __do_libgcobol_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) \ ++ $(gcc_lib_dir$(2)) ++ ++ $(if $(findstring native, $(build_type)), ++ $(if $(2),, ++ mkdir -p $(d_l)/$(PF)/share/man/man3 ++ mv $(d)/$(PF)/share/man/man3/$(cmd_prefix)gcobol-io$(pkg_ver).3 \ ++ $(d_l)/$(PF)/share/man/man3/. ++ )) ++ ++ : # install_gcobol_lib calls needed? ++ $(call install_gcobol_lib,libgcobol,$(GCOBOL_SONAME),$(2),$(p_l)) ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++do_libgcobol = $(call __do_libgcobol,lib$(1)gcobol$(GCOBOL_SONAME),$(1)) ++do_libgcobol_dev = $(call __do_libgcobol_dev,lib$(1)gcobol-$(BASE_VERSION)-dev,$(1)) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gcobol-doc: $(build_html_stamp) $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcobold) ++ dh_installdirs -p$(p_gcobold) \ ++ $(docdir)/$(p_gcobol) \ ++ $(docdir)/$(p_xbase) \ ++ $(PF)/share/info ++ cp -p $(builddir)/gcc/doc/gcobol.info \ ++ $(d_gcobold)/$(PF)/share/info/gcobol-$(BASE_VERSION).info ++ cp -p html/gcobol.html \ ++ $(d_gcobold)/$(docdir)/$(p_xbase)/cobol/gcobol-$(BASE_VERSION).html ++ ln -sf ../$(p_xbase)/cobol/gcobol-$(BASE_VERSION).html \ ++ $(d_gcobold)/$(docdir)/$(p_gcobol)/gcobol-$(BASE_VERSION).html ++ ++ debian/dh_doclink -p$(p_gcobold) $(p_xbase) ++ dh_installdocs -p$(p_gcobold) ++ rm -f $(d_gcobold)/$(docdir)/$(p_xbase)/copyright ++ ++ echo $(p_gcobold) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++ ++$(binary_stamp)-libgcobol: $(install_stamp) ++ $(call do_libgcobol,) ++ ++$(binary_stamp)-lib64gcobol: $(install_stamp) ++ $(call do_libgcobol,64) ++ ++$(binary_stamp)-lib32gcobol: $(install_stamp) ++ $(call do_libgcobol,32) ++ ++$(binary_stamp)-libn32gcobol: $(install_stamp) ++ $(call do_libgcobol,n32) ++ ++$(binary_stamp)-libx32gcobol: $(install_stamp) ++ $(call do_libgcobol,x32) ++ ++ ++$(binary_stamp)-libgcobol-dev: $(install_stamp) ++ $(call do_libgcobol_dev,) ++ ++$(binary_stamp)-lib64gcobol-dev: $(install_stamp) ++ $(call do_libgcobol_dev,64) ++ ++$(binary_stamp)-lib32gcobol-dev: $(install_stamp) ++ $(call do_libgcobol_dev,32) ++ ++$(binary_stamp)-libx32gcobol-dev: $(install_stamp) ++ $(call do_libgcobol_dev,x32) ++ ++$(binary_stamp)-libn32gcobol-dev: $(install_stamp) ++ $(call do_libgcobol_dev,n32) diff --cc debian/rules.d/binary-cpp.mk index 0000000,0000000..d7ee242 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-cpp.mk @@@ -1,0 -1,0 +1,143 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ arch_binaries := $(arch_binaries) cpp-nat cpp-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) cpp ++ indep_binaries := $(indep_binaries) cpp-build ++ endif ++ ifneq ($(DEB_CROSS),yes) ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ indep_binaries := $(indep_binaries) cpp-doc ++ endif ++ endif ++endif ++ ++p_cpp = cpp$(pkg_ver) ++p_cpp_n = cpp$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_cpp_h = cpp$(pkg_ver)-for-host ++p_cpp_d = cpp$(pkg_ver)-doc ++ ++d_cpp = debian/$(p_cpp) ++d_cpp_n = debian/$(p_cpp_n) ++d_cpp_h = debian/$(p_cpp_h) ++d_cpp_b = debian/$(p_cpp_b) ++d_cpp_d = debian/$(p_cpp_d) ++ ++dirs_cpp_n = \ ++ $(docdir) \ ++ $(PF)/share/man/man1 \ ++ $(PF)/bin \ ++ $(gcc_lexec_dir) \ ++ usr/share/lintian/overrides ++ ++dirs_cpp = \ ++ $(docdir) \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ usr/share/lintian/overrides ++ ++files_cpp_n = \ ++ $(PF)/bin/$(cmd_prefix)cpp$(pkg_ver) \ ++ $(gcc_lexec_dir)/cc1 ++ ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ files_cpp_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix)cpp$(pkg_ver).1 ++endif ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-cpp-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_cpp_n) ++ dh_installdirs -p$(p_cpp_n) $(dirs_cpp_n) ++ $(dh_compat2) dh_movefiles -p$(p_cpp_n) $(files_cpp_n) ++ ++ echo '$(p_cpp_n) binary: hardening-no-pie' \ ++ > $(d_cpp_n)/usr/share/lintian/overrides/$(p_cpp_n) ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_cpp_n) binary: binary-without-manpage' \ ++ >> $(d_cpp_n)/usr/share/lintian/overrides/$(p_cpp_n) ++endif ++ ++ debian/dh_doclink -p$(p_cpp_n) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_cpp_n) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) $(d_cpp_n)/$(gcc_lexec_dir)/cc1 ++endif ++ dh_strip -p$(p_cpp_n) \ ++ $(if $(unstripped_exe),-X/cc1) ++ dh_shlibdeps -p$(p_cpp_n) ++ ++ echo $(p_cpp_n) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-cpp-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_cpp_h) ++ debian/dh_doclink -p$(p_cpp_h) $(p_xbase) ++ echo $(p_cpp_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-cpp-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_cpp_b) ++ dh_installdocs -p$(p_cpp_b) debian/README.Debian ++ dh_installchangelogs -p$(p_cpp_b) ++ dh_compress -p$(p_cpp_b) ++ dh_fixperms -p$(p_cpp_b) ++ echo $(p_cpp_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-cpp: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_cpp) ++ dh_installdirs -p$(p_cpp) $(dirs_cpp) ++ ++ ln -sf $(cmd_prefix)cpp$(pkg_ver) \ ++ $(d_cpp)/$(PF)/bin/cpp$(pkg_ver) ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ ln -sf $(cmd_prefix)cpp$(pkg_ver).1 \ ++ $(d_cpp)/$(PF)/share/man/man1/cpp$(pkg_ver).1 ++else ++ echo '$(p_cpp) binary: binary-without-manpage' \ ++ >> $(d_cpp)/usr/share/lintian/overrides/$(p_cpp) ++endif ++ ++ debian/dh_doclink -p$(p_cpp) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_cpp) ++ ++ echo $(p_cpp) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-cpp-doc: $(build_html_stamp) $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_cpp_d) ++ dh_installdirs -p$(p_cpp_d) \ ++ $(docdir)/$(p_xbase) \ ++ $(PF)/share/info ++ $(dh_compat2) dh_movefiles -p$(p_cpp_d) \ ++ $(PF)/share/info/cpp* ++ ++ debian/dh_doclink -p$(p_cpp_d) $(p_xbase) ++ dh_installdocs -p$(p_cpp_d) html/cpp.html html/cppinternals.html ++ rm -f $(d_cpp_d)/$(docdir)/$(p_xbase)/copyright ++ debian/dh_rmemptydirs -p$(p_cpp_d) ++ echo $(p_cpp_d) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-cxx.mk index 0000000,0000000..fc947d4 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-cxx.mk @@@ -1,0 -1,0 +1,142 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) cxx-multi ++ endif ++ arch_binaries := $(arch_binaries) cxx-nat cxx-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) cxx ++ indep_binaries := $(indep_binaries) cxx-build ++ endif ++endif ++ ++p_cxx = g++$(pkg_ver) ++p_cxx_n = g++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_cxx_h = g++$(pkg_ver)-for-host ++p_cxx_b = g++$(pkg_ver)-for-build ++ ++d_cxx = debian/$(p_cxx) ++d_cxx_n = debian/$(p_cxx_n) ++d_cxx_h = debian/$(p_cxx_h) ++d_cxx_b = debian/$(p_cxx_b) ++ ++dirs_cxx_n = \ ++ $(PF)/bin \ ++ $(gcc_lexec_dir) \ ++ $(PF)/share/man/man1 \ ++ usr/share/lintian/overrides ++ ++dirs_cxx = \ ++ $(docdir)/$(p_xbase)/C++ \ ++ $(PF)/bin \ ++ $(PF)/share/info \ ++ $(PF)/share/man/man1 \ ++ usr/share/lintian/overrides ++ ++files_cxx_n = \ ++ $(PF)/bin/$(cmd_prefix)g++$(pkg_ver) \ ++ $(gcc_lexec_dir)/cc1plus \ ++ $(gcc_lexec_dir)/g++-mapper-server ++ ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ files_cxx_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix)g++$(pkg_ver).1 ++endif ++ ++p_cxx_m = g++$(pkg_ver)-multilib$(cross_bin_arch) ++d_cxx_m = debian/$(p_cxx_m) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-cxx-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_cxx_n) ++ dh_installdirs -p$(p_cxx_n) $(dirs_cxx_n) ++ $(dh_compat2) dh_movefiles -p$(p_cxx_n) $(files_cxx_n) ++ ++ echo '$(p_cxx_n) binary: hardening-no-pie' \ ++ > $(d_cxx_n)/usr/share/lintian/overrides/$(p_cxx_n) ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_cxx_n) binary: binary-without-manpage' \ ++ >> $(d_cxx_n)/usr/share/lintian/overrides/$(p_cxx_n) ++endif ++ ++ debian/dh_doclink -p$(p_cxx_n) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_cxx_n) ++ ++ dh_shlibdeps -p$(p_cxx_n) ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_cxx_n)/$(gcc_lexec_dir)/cc1plus ++endif ++ dh_strip -p$(p_cxx_n) $(if $(unstripped_exe),-X/cc1plus) ++ echo $(p_cxx_n) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-cxx-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_cxx_h) ++ debian/dh_doclink -p$(p_cxx_h) $(p_xbase) ++ echo $(p_cxx_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-cxx-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_cxx_b) ++ debian/dh_doclink -p$(p_cxx_b) $(p_cpp_b) ++ echo $(p_cxx_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-cxx: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_cxx) ++ dh_installdirs -p$(p_cxx) $(dirs_cxx) ++ ++ ln -sf $(cmd_prefix)g++$(pkg_ver) \ ++ $(d_cxx)/$(PF)/bin/g++$(pkg_ver) ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ ln -sf $(cmd_prefix)g++$(pkg_ver).1.gz \ ++ $(d_cxx)/$(PF)/share/man/man1/g++$(pkg_ver).1.gz ++endif ++ ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_cxx) binary: binary-without-manpage' \ ++ >> $(d_cxx)/usr/share/lintian/overrides/$(p_cxx) ++endif ++ ++ debian/dh_doclink -p$(p_cxx) $(p_xbase) ++ cp -p debian/README.C++ $(d_cxx)/$(docdir)/$(p_xbase)/C++/ ++ cp -p $(srcdir)/gcc/cp/ChangeLog \ ++ $(d_cxx)/$(docdir)/$(p_xbase)/C++/changelog ++ debian/dh_rmemptydirs -p$(p_cxx) ++ ++ echo $(p_cxx) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-cxx-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_cxx_m) ++ dh_installdirs -p$(p_cxx_m) \ ++ $(docdir) ++ ++ debian/dh_doclink -p$(p_cxx_m) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_cxx_m) ++ ++ dh_strip -p$(p_cxx_m) ++ dh_shlibdeps -p$(p_cxx_m) ++ echo $(p_cxx_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-d.mk index 0000000,0000000..2adc8c2 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-d.mk @@@ -1,0 -1,0 +1,314 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32))) ++ arch_binaries := $(arch_binaries) gdc-multi ++ endif ++ arch_binaries := $(arch_binaries) gdc-nat gdc-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) gdc ++ indep_binaries := $(indep_binaries) gdc-build ++ endif ++ ++ ifeq ($(with_libphobosdev),yes) ++ $(lib_binaries) += libphobos-dev ++ endif ++ ifeq ($(with_libphobos),yes) ++ $(lib_binaries) += libphobos ++ endif ++ ++ ifeq ($(with_lib64phobosdev),yes) ++ $(lib_binaries) += lib64phobos-dev ++ endif ++ ifeq ($(with_lib32phobosdev),yes) ++ $(lib_binaries) += lib32phobos-dev ++ endif ++ ifeq ($(with_libn32phobosdev),yes) ++ $(lib_binaries) += libn32phobos-dev ++ endif ++ ifeq ($(with_libx32phobosdev),yes) ++ $(lib_binaries) += libx32phobos-dev ++ endif ++ ++ ifeq ($(with_lib64phobos),yes) ++ $(lib_binaries) += lib64phobos ++ endif ++ ifeq ($(with_lib32phobos),yes) ++ $(lib_binaries) += lib32phobos ++ endif ++ ifeq ($(with_libn32phobos),yes) ++ $(lib_binaries) += libn32phobos ++ endif ++ ifeq ($(with_libx32phobos),yes) ++ $(lib_binaries) += libx32phobos ++ endif ++endif ++ ++p_gdc_n = gdc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_gdc_h = gdc$(pkg_ver)-for-host ++p_gdc_b = gdc$(pkg_ver)-for-build ++p_gdc = gdc$(pkg_ver) ++p_gdc_m = gdc$(pkg_ver)-multilib$(cross_bin_arch) ++p_libphobos = libgphobos$(GPHOBOS_SONAME) ++p_libphobosdev = libgphobos$(pkg_ver)-dev ++ ++d_gdc_n = debian/$(p_gdc_n) ++d_gdc_h = debian/$(p_gdc_h) ++d_gdc_b = debian/$(p_gdc_b) ++d_gdc = debian/$(p_gdc) ++d_gdc_m = debian/$(p_gdc_m) ++d_libphobos = debian/$(p_libphobos) ++d_libphobosdev = debian/$(p_libphobosdev) ++ ++ifeq ($(DEB_CROSS),yes) ++ gdc_include_dir := $(gcc_lib_dir)/include/d ++else ++ gdc_include_dir := $(PF)/include/d/$(BASE_VERSION) ++endif ++# FIXME: always here? ++gdc_include_dir := $(gcc_lib_dir)/include/d ++ ++dirs_gdc_n = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ $(gcc_lib_dir) \ ++ $(gcc_lexec_dir) \ ++ usr/share/lintian/overrides ++ ++dirs_gdc = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 ++ ++ifneq ($(DEB_CROSS),yes) ++ dirs_gdc_n += \ ++ $(gdc_include_dir) ++endif ++ ++files_gdc_n = \ ++ $(PF)/bin/$(cmd_prefix)gdc$(pkg_ver) \ ++ $(gcc_lexec_dir)/d21 ++ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) ++ files_gdc_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix)gdc$(pkg_ver).1 ++endif ++ ++dirs_libphobos = \ ++ $(PF)/lib \ ++ $(gdc_include_dir) \ ++ $(gcc_lib_dir) ++ ++$(binary_stamp)-gdc-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gdc_n) ++ dh_installdirs -p$(p_gdc_n) $(dirs_gdc_n) ++ ++ debian/dh_doclink -p$(p_gdc_n) $(p_xbase) ++ ++ $(dh_compat2) dh_movefiles -p$(p_gdc_n) -X/zlib/ $(files_gdc_n) ++ ++ifeq ($(with_phobos),yes) ++ mv $(d)/$(usr_lib)/libgphobos.spec $(d_gdc_n)/$(gcc_lib_dir)/ ++endif ++ ++# FIXME: __entrypoint.di needs to go into a libgdc-dev Multi-Arch: same package ++## # Always needed by gdc. ++## mkdir -p $(d_gdc_n)/$(gdc_include_dir) ++## cp $(srcdir)/libphobos/libdruntime/__entrypoint.di \ ++## $(d_gdc_n)/$(gdc_include_dir)/. ++#ifneq ($(DEB_CROSS),yes) ++# dh_link -p$(p_gdc_n) \ ++# /$(gdc_include_dir) \ ++# /$(dir $(gdc_include_dir))/$(GCC_VERSION) ++#endif ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_gdc_n)/$(gcc_lexec_dir)/d21 ++endif ++ dh_strip -p$(p_gdc_n) \ ++ $(if $(unstripped_exe),-X/d21) ++ dh_shlibdeps -p$(p_gdc_n) ++ ++ echo '$(p_gdc_n) binary: hardening-no-pie' \ ++ > $(d_gdc_n)/usr/share/lintian/overrides/$(p_gdc_n) ++ ++ echo $(p_gdc_n) >> debian/arch_binaries ++ ++ find $(d_gdc_n) -type d -empty -delete ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gdc-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gdc_h) ++ debian/dh_doclink -p$(p_gdc_h) $(p_xbase) ++ echo $(p_gdc_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gdc-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gdc_b) ++ debian/dh_doclink -p$(p_gdc_b) $(p_cpp_b) ++ echo $(p_gdc_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gdc: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gdc) ++ dh_installdirs -p$(p_gdc) $(dirs_gdc) ++ ++ dh_installdocs -p$(p_gdc) ++ dh_installchangelogs -p$(p_gdc) src/gcc/d/ChangeLog ++ ++ ln -sf $(cmd_prefix)gdc$(pkg_ver) \ ++ $(d_gdc)/$(PF)/bin/gdc$(pkg_ver) ++ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) ++ ln -sf $(cmd_prefix)gdc$(pkg_ver).1.gz \ ++ $(d_gdc)/$(PF)/share/man/man1/gdc$(pkg_ver).1.gz ++endif ++ ++ dh_link -p$(p_gdc) \ ++ /$(docdir)/$(p_xbase)/README.Bugs \ ++ /$(docdir)/$(p_gdc)/README.Bugs ++ ++ echo $(p_gdc) >> debian/arch_binaries ++ ++ find $(d_gdc) -type d -empty -delete ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gdc-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gdc_m) ++ dh_installdirs -p$(p_gdc_m) $(docdir) ++ ++ debian/dh_doclink -p$(p_gdc_m) $(p_xbase) ++ ++ dh_strip -p$(p_gdc_m) ++ dh_shlibdeps -p$(p_gdc_m) ++ echo $(p_gdc_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++define __do_libphobos ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) \ ++ $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(usr_lib$(2))/libgphobos.so.* \ ++ $(usr_lib$(2))/libgdruntime.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ln -sf libgphobos.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) ++ rm -f debian/$(p_l).symbols ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst gphobos$(GPHOBOS_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ ++ mkdir -p $(d_l)/usr/share/lintian/overrides; \ ++ $(if $(filter $(DEB_TARGET_ARCH), amd64), ++ $(if $(2), ++ echo "$(p_l) binary: symbols-file-contains-current-version-with-debian-revision" \ ++ >> $(d_l)/usr/share/lintian/overrides/$(p_l) ++ ) ++ , ++ echo "$(p_l) binary: symbols-file-contains-current-version-with-debian-revision" \ ++ >> $(d_l)/usr/share/lintian/overrides/$(p_l) ++ ) ++ $(if $(2), ++ echo "$(p_l) binary: embedded-library" \ ++ >> $(d_l)/usr/share/lintian/overrides/$(p_l) ++ ) ++ ++ dh_lintian -p$(p_l) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++define __do_libphobos_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) \ ++ $(gcc_lib_dir$(2)) ++ ++ $(call install_gcc_lib,libgdruntime,$(GDRUNTIME_SONAME),$(2),$(p_l)) ++ $(call install_gcc_lib,libgphobos,$(GPHOBOS_SONAME),$(2),$(p_l)) ++ ++ $(if $(2),, ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(gdc_include_dir) ++ ) ++ ++## : # included in gdc package ++## rm -f $(d_l)/$(gdc_include_dir)/__entrypoint.di ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# don't put this as a comment within define/endef ++# $(call install_gcc_lib,libphobos,$(PHOBOS_SONAME),$(2),$(p_l)) ++ ++do_libphobos = $(call __do_libphobos,lib$(1)gphobos$(GPHOBOS_SONAME),$(1)) ++do_libphobos_dev = $(call __do_libphobos_dev,lib$(1)gphobos-$(BASE_VERSION)-dev,$(1)) ++ ++$(binary_stamp)-libphobos: $(install_stamp) ++ $(call do_libphobos,) ++ ++$(binary_stamp)-lib64phobos: $(install_stamp) ++ $(call do_libphobos,64) ++ ++$(binary_stamp)-lib32phobos: $(install_stamp) ++ $(call do_libphobos,32) ++ ++$(binary_stamp)-libn32phobos: $(install_stamp) ++ $(call do_libphobos,n32) ++ ++$(binary_stamp)-libx32phobos: $(install_stamp) ++ $(call do_libphobos,x32) ++ ++ ++$(binary_stamp)-libphobos-dev: $(install_stamp) ++ $(call do_libphobos_dev,) ++ ++$(binary_stamp)-lib64phobos-dev: $(install_stamp) ++ $(call do_libphobos_dev,64) ++ ++$(binary_stamp)-lib32phobos-dev: $(install_stamp) ++ $(call do_libphobos_dev,32) ++ ++$(binary_stamp)-libx32phobos-dev: $(install_stamp) ++ $(call do_libphobos_dev,x32) ++ ++$(binary_stamp)-libn32phobos-dev: $(install_stamp) ++ $(call do_libphobos_dev,n32) diff --cc debian/rules.d/binary-fortran.mk index 0000000,0000000..f2aa9e5 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-fortran.mk @@@ -1,0 -1,0 +1,309 @@@ ++ifeq ($(with_libgfortran),yes) ++ $(lib_binaries) += libgfortran ++endif ++ifeq ($(with_fdev),yes) ++ $(lib_binaries) += libgfortran-dev ++endif ++ifeq ($(with_lib64gfortran),yes) ++ $(lib_binaries) += lib64fortran ++endif ++ifeq ($(with_lib64gfortrandev),yes) ++ $(lib_binaries) += lib64gfortran-dev ++endif ++ifeq ($(with_lib32gfortran),yes) ++ $(lib_binaries) += lib32fortran ++endif ++ifeq ($(with_lib32gfortrandev),yes) ++ $(lib_binaries) += lib32gfortran-dev ++endif ++ifeq ($(with_libn32gfortran),yes) ++ $(lib_binaries) += libn32fortran ++endif ++ifeq ($(with_libn32gfortrandev),yes) ++ $(lib_binaries) += libn32gfortran-dev ++endif ++ifeq ($(with_libx32gfortran),yes) ++ $(lib_binaries) += libx32fortran ++endif ++ifeq ($(with_libx32gfortrandev),yes) ++ $(lib_binaries) += libx32gfortran-dev ++endif ++ ++ifeq ($(with_fdev),yes) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) fdev-multi ++ endif ++ arch_binaries := $(arch_binaries) fdev-nat fdev-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) fdev ++ indep_binaries := $(indep_binaries) fdev-build ++ endif ++ ifneq ($(DEB_CROSS),yes) ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ indep_binaries := $(indep_binaries) fortran-doc ++ endif ++ endif ++endif ++ ++p_g95_n = gfortran$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_g95_h = gfortran$(pkg_ver)-for-host ++p_g95_b = gfortran$(pkg_ver)-for-build ++p_g95 = gfortran$(pkg_ver) ++p_g95_m = gfortran$(pkg_ver)-multilib$(cross_bin_arch) ++p_g95d = gfortran$(pkg_ver)-doc ++p_flib = libgfortran$(FORTRAN_SONAME)$(cross_lib_arch) ++ ++d_g95_n = debian/$(p_g95_n) ++d_g95_h = debian/$(p_g95_h) ++d_g95_b = debian/$(p_g95_b) ++d_g95 = debian/$(p_g95) ++d_g95_m = debian/$(p_g95_m) ++d_g95d = debian/$(p_g95d) ++ ++dirs_g95_n = \ ++ $(PF)/bin \ ++ $(gcc_lexec_dir) \ ++ $(gcc_lib_dir) \ ++ $(PF)/include \ ++ $(PF)/share/man/man1 \ ++ usr/share/lintian/overrides ++ ++dirs_g95 = \ ++ $(docdir)/$(p_xbase)/fortran \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 ++ ++files_g95_n = \ ++ $(PF)/bin/$(cmd_prefix)gfortran$(pkg_ver) \ ++ $(gcc_lib_dir)/finclude \ ++ $(gcc_lexec_dir)/f951 ++ ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ files_g95_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix)gfortran$(pkg_ver).1 ++endif ++ ++# ---------------------------------------------------------------------- ++define __do_fortran ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgfortran.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ if [ -f debian/$(p_l).overrides ]; then \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ ++ fi ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ln -sf libgfortran.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst gfortran$(FORTRAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst gfortran$(FORTRAN_SONAME),quadmath$(QUADMATH_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++do_fortran = $(call __do_fortran,lib$(1)gfortran$(FORTRAN_SONAME),$(1)) ++ ++ ++define __do_libgfortran_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) ++ ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(gcc_lib_dir$(2))/libcaf_single.a ++ $(call install_gcc_lib,libgfortran,$(FORTRAN_SONAME),$(2),$(p_l)) ++ ++ $(if $(2),, \ ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(gcc_lib_dir$(2))/include/ISO_Fortran_binding.h) ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ debian/dh_rmemptydirs -p$(p_l) ++ ++ dh_strip -p$(p_l) ++ $(cross_shlibdeps) dh_shlibdeps -p$(p_l) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++# ---------------------------------------------------------------------- ++ ++do_libgfortran_dev = $(call __do_libgfortran_dev,lib$(1)gfortran-$(BASE_VERSION)-dev,$(1)) ++ ++$(binary_stamp)-libgfortran: $(install_stamp) ++ $(call do_fortran,) ++ ++$(binary_stamp)-lib64fortran: $(install_stamp) ++ $(call do_fortran,64) ++ ++$(binary_stamp)-lib32fortran: $(install_stamp) ++ $(call do_fortran,32) ++ ++$(binary_stamp)-libn32fortran: $(install_stamp) ++ $(call do_fortran,n32) ++ ++$(binary_stamp)-libx32fortran: $(install_stamp) ++ $(call do_fortran,x32) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-fdev-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_g95_n) ++ dh_installdirs -p$(p_g95_n) $(dirs_g95_n) ++ ++ $(dh_compat2) dh_movefiles -p$(p_g95_n) $(files_g95_n) ++ ++ mv $(d)/$(usr_lib)/libgfortran.spec $(d_g95_n)/$(gcc_lib_dir)/ ++ ++ ( \ ++ echo '$(p_g95_n) binary: hardening-no-pie'; \ ++ echo '$(p_g95_n) binary: missing-prerequisite-for-gfortran-module'; \ ++ ) \ ++ > $(d_g95_n)/usr/share/lintian/overrides/$(p_g95_n) ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_g95_n) binary: binary-without-manpage' \ ++ >> $(d_g95_n)/usr/share/lintian/overrides/$(p_g95_n) ++endif ++ ++ debian/dh_doclink -p$(p_g95_n) $(p_xbase) ++ ++ debian/dh_rmemptydirs -p$(p_g95_n) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_g95_n)/$(gcc_lexec_dir)/f951 ++endif ++ dh_strip -p$(p_g95_n) \ ++ $(if $(unstripped_exe),-X/f951) ++ dh_shlibdeps -p$(p_g95_n) ++ ++ echo $(p_g95_n) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-fdev-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_g95_h) ++ debian/dh_doclink -p$(p_g95_h) $(p_xbase) ++ echo $(p_g95_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-fdev-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_g95_b) ++ debian/dh_doclink -p$(p_g95_b) $(p_cpp_b) ++ echo $(p_g95_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-fdev: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_g95) ++ dh_installdirs -p$(p_g95) $(dirs_g95) ++ ++ ln -sf $(cmd_prefix)gfortran$(pkg_ver) \ ++ $(d_g95)/$(PF)/bin/gfortran$(pkg_ver) ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ ln -sf $(cmd_prefix)gfortran$(pkg_ver).1 \ ++ $(d_g95)/$(PF)/share/man/man1/gfortran$(pkg_ver).1 ++endif ++ ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ mkdir -p $(d_g95)/usr/share/lintian/overrides ++ echo '$(p_g95) binary: binary-without-manpage' \ ++ > $(d_g95)/usr/share/lintian/overrides/$(p_g95) ++endif ++ ++ debian/dh_doclink -p$(p_g95) $(p_xbase) ++ ++ cp -p $(srcdir)/gcc/fortran/ChangeLog \ ++ $(d_g95)/$(docdir)/$(p_xbase)/fortran/changelog ++ debian/dh_rmemptydirs -p$(p_g95) ++ ++ echo $(p_g95) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-fdev-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_g95_m) ++ dh_installdirs -p$(p_g95_m) $(docdir) ++ ++ debian/dh_doclink -p$(p_g95_m) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_g95_m) ++ dh_strip -p$(p_g95_m) ++ dh_shlibdeps -p$(p_g95_m) ++ echo $(p_g95_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-fortran-doc: $(build_html_stamp) $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_g95d) ++ dh_installdirs -p$(p_g95d) \ ++ $(docdir)/$(p_xbase)/fortran \ ++ $(PF)/share/info ++ $(dh_compat2) dh_movefiles -p$(p_g95d) \ ++ $(PF)/share/info/gfortran* ++ ++ debian/dh_doclink -p$(p_g95d) $(p_xbase) ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ dh_installdocs -p$(p_g95d) ++ rm -f $(d_g95d)/$(docdir)/$(p_xbase)/copyright ++ cp -p html/gfortran.html $(d_g95d)/$(docdir)/$(p_xbase)/fortran/ ++endif ++ echo $(p_g95d) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-libgfortran-dev: $(install_stamp) ++ $(call do_libgfortran_dev,) ++ ++$(binary_stamp)-lib64gfortran-dev: $(install_stamp) ++ $(call do_libgfortran_dev,64) ++ ++$(binary_stamp)-lib32gfortran-dev: $(install_stamp) ++ $(call do_libgfortran_dev,32) ++ ++$(binary_stamp)-libn32gfortran-dev: $(install_stamp) ++ $(call do_libgfortran_dev,n32) ++ ++$(binary_stamp)-libx32gfortran-dev: $(install_stamp) ++ $(call do_libgfortran_dev,x32) diff --cc debian/rules.d/binary-gcc.mk index 0000000,0000000..36edf54 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-gcc.mk @@@ -1,0 -1,0 +1,385 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) gcc-multi ++ endif ++ ifeq ($(with_plugins),yes) ++ arch_binaries := $(arch_binaries) gcc-plugindev ++ endif ++ ++ arch_binaries := $(arch_binaries) gcc-nat gcc-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) gcc ++ indep_binaries := $(indep_binaries) gcc-build ++ endif ++ ++ ifneq ($(DEB_CROSS),yes) ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ indep_binaries := $(indep_binaries) gcc-doc ++ endif ++ ifeq ($(with_nls),yes) ++ indep_binaries := $(indep_binaries) gcc-locales ++ endif ++ endif ++ ++ ifeq ($(build_type),build-native) ++ arch_binaries := $(arch_binaries) testresults ++ endif ++endif ++ ++# gcc must be moved after g77 and g++ ++# not all files $(PF)/include/*.h are part of gcc, ++# but it becomes difficult to name all these files ... ++ ++p_gcc = gcc$(pkg_ver) ++p_gcc_n = gcc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_gcc_h = gcc$(pkg_ver)-for-host ++p_gcc_b = gcc$(pkg_ver)-for-build ++p_gcc_d = gcc$(pkg_ver)-doc ++ ++d_gcc = debian/$(p_gcc) ++d_gcc_n = debian/$(p_gcc_n) ++d_gcc_h = debian/$(p_gcc_h) ++d_gcc_b = debian/$(p_gcc_b) ++d_gcc_d = debian/$(p_gcc_d) ++ ++dirs_gcc_n = \ ++ $(PF)/bin \ ++ $(gcc_lexec_dir) \ ++ $(gcc_lib_dir)/include \ ++ $(PF)/share/man/man1 $(libgcc_dir) \ ++ usr/share/lintian/overrides ++ ++dirs_gcc = \ ++ $(docdir)/$(p_xbase)/{gcc,libssp,gomp,itm,quadmath,sanitizer} \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ usr/share/lintian/overrides ++ ++# XXX: what about triarch mapping? ++files_gcc_n = \ ++ $(PF)/bin/$(cmd_prefix){gcc,gcov,gcov-tool,gcov-dump,lto-dump}$(pkg_ver) \ ++ $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ ++ $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ ++ $(gcc_lexec_dir)/{collect2,lto1,lto-wrapper} \ ++ $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ ++ && echo $(gcc_lib_dir)/SYSCALLS.c.X) ++ ++ifeq ($(with_libcc1_plugin),yes) ++ files_gcc_n += \ ++ $(gcc_lib_dir)/plugin/libc[cp]1plugin.so{,.0,.0.0.0} ++endif ++ ++files_gcc_n += \ ++ $(gcc_lexec_dir)/liblto_plugin.so ++ ++ifeq ($(DEB_STAGE),stage1) ++ files_gcc_n += \ ++ $(gcc_lib_dir)/include ++endif ++ ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ files_gcc_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix){gcc,gcov}$(pkg_ver).1 \ ++ $(PF)/share/man/man1/$(cmd_prefix)gcov-{dump,tool}$(pkg_ver).1 \ ++ $(PF)/share/man/man1/$(cmd_prefix)lto-dump$(pkg_ver).1 ++endif ++ ++usr_doc_files = debian/README.Bugs \ ++ $(shell test -f $(srcdir)/FAQ && echo $(srcdir)/FAQ) ++ ++p_loc = gcc$(pkg_ver)-locales ++d_loc = debian/$(p_loc) ++ ++p_gcc_m = gcc$(pkg_ver)-multilib$(cross_bin_arch) ++d_gcc_m = debian/$(p_gcc_m) ++ ++p_pld = gcc$(pkg_ver)-plugin-dev$(cross_bin_arch) ++d_pld = debian/$(p_pld) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gcc-nat: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcc_n) ++ dh_installdirs -p$(p_gcc_n) $(dirs_gcc_n) ++ ++ifeq ($(with_gomp),yes) ++ mv $(d)/$(usr_lib)/libgomp*.spec $(d_gcc_n)/$(gcc_lib_dir)/ ++endif ++ifeq ($(with_itm),yes) ++ mv $(d)/$(usr_lib)/libitm*.spec $(d_gcc_n)/$(gcc_lib_dir)/ ++endif ++ifeq ($(with_asan),yes) ++ mv $(d)/$(usr_lib)/libsanitizer*.spec $(d_gcc_n)/$(gcc_lib_dir)/ ++endif ++ifeq ($(with_hwasan),yes) ++ mv $(d)/$(usr_lib)/libhwasan_preinit.o $(d_gcc_n)/$(gcc_lib_dir)/ ++endif ++ifeq ($(with_cc1),yes) ++ rm -f $(d)/$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so ++ dh_link -p$(p_gcc_n) \ ++ /$(PF)/lib/$(DEB_HOST_MULTIARCH)/libcc1.so.$(CC1_SONAME) \ ++ /$(gcc_lib_dir)/libcc1.so ++endif ++ ++ $(dh_compat2) dh_movefiles -p$(p_gcc_n) $(files_gcc_n) ++ : # keep the lto_plugin.so link in the old place for a while ++ dh_link -p$(p_gcc_n) \ ++ /$(gcc_lexec_dir)/liblto_plugin.so /$(gcc_lib_dir)/liblto_plugin.so ++ ++# dh_installdebconf ++ debian/dh_doclink -p$(p_gcc_n) $(p_xbase) ++ ++ echo '$(p_gcc_n) binary: hardening-no-pie' \ ++ > $(d_gcc_n)/usr/share/lintian/overrides/$(p_gcc_n) ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_gcc_n) binary: binary-without-manpage' \ ++ >> $(d_gcc_n)/usr/share/lintian/overrides/$(p_gcc_n) ++endif ++ ++ debian/dh_rmemptydirs -p$(p_gcc_n) ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_gcc_n)/$(gcc_lexec_dir)/lto1 \ ++ $(d_gcc_n)/$(gcc_lexec_dir)/lto-wrapper \ ++ $(d_gcc_n)/$(gcc_lexec_dir)/collect2 ++endif ++ dh_strip -p$(p_gcc_n) \ ++ $(if $(unstripped_exe),-X/lto1) ++ dh_shlibdeps -p$(p_gcc_n) ++ echo $(p_gcc_n) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gcc-host: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gcc_h) ++ debian/dh_doclink -p$(p_gcc_h) $(p_xbase) ++ echo $(p_gcc_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gcc-build: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gcc_b) ++ debian/dh_doclink -p$(p_gcc_b) $(p_cpp_b) ++ echo $(p_gcc_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gcc: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcc) ++ dh_installdirs -p$(p_gcc) $(dirs_gcc) ++ ++ifeq ($(with_libssp),yes) ++ cp -p $(srcdir)/libssp/ChangeLog \ ++ $(d_gcc)/$(docdir)/$(p_xbase)/libssp/changelog ++endif ++ifeq ($(with_gomp),yes) ++ cp -p $(srcdir)/libgomp/ChangeLog \ ++ $(d_gcc)/$(docdir)/$(p_xbase)/gomp/changelog ++endif ++ifeq ($(with_itm),yes) ++ cp -p $(srcdir)/libitm/ChangeLog \ ++ $(d_gcc)/$(docdir)/$(p_xbase)/itm/changelog ++endif ++ifeq ($(with_qmath),yes) ++ cp -p $(srcdir)/libquadmath/ChangeLog \ ++ $(d_gcc)/$(docdir)/$(p_xbase)/quadmath/changelog ++endif ++ifeq ($(with_asan),yes) ++ cp -p $(srcdir)/libsanitizer/ChangeLog \ ++ $(d_gcc)/$(docdir)/$(p_xbase)/sanitizer/changelog ++endif ++ ++ for i in gcc gcov gcov-dump gcov-tool gcc-ar gcc-nm gcc-ranlib lto-dump; do \ ++ ln -sf $(cmd_prefix)$$i$(pkg_ver) \ ++ $(d_gcc)/$(PF)/bin/$$i$(pkg_ver); \ ++ done ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ for i in gcc gcov gcov-dump gcov-tool lto-dump; do \ ++ ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ ++ $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ ++ done ++endif ++ for i in gcc-ar gcc-nm gcc-ranlib; do \ ++ ln -sf $(cmd_prefix)$$i$(pkg_ver).1.gz \ ++ $(d_gcc)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ ++ done ++ ++# dh_installdebconf ++ debian/dh_doclink -p$(p_gcc) $(p_xbase) ++ cp -p $(usr_doc_files) $(d_gcc)/$(docdir)/$(p_xbase)/. ++ cp -p debian/README.ssp $(d_gcc)/$(docdir)/$(p_xbase)/ ++ cp -p debian/NEWS.gcc $(d_gcc)/$(docdir)/$(p_xbase)/NEWS ++ cp -p debian/NEWS.html $(d_gcc)/$(docdir)/$(p_xbase)/NEWS.html ++ cp -p $(srcdir)/ChangeLog $(d_gcc)/$(docdir)/$(p_xbase)/changelog ++ cp -p $(srcdir)/gcc/ChangeLog \ ++ $(d_gcc)/$(docdir)/$(p_xbase)/gcc/changelog ++ if [ -f $(builddir)/gcc/.bad_compare ]; then \ ++ ( \ ++ echo "The comparision of the stage2 and stage3 object files shows differences."; \ ++ echo "The Debian package was modified to ignore these differences."; \ ++ echo ""; \ ++ echo "The following files differ:"; \ ++ echo ""; \ ++ cat $(builddir)/gcc/.bad_compare; \ ++ ) > $(d_gcc)/$(docdir)/$(p_xbase)/BOOTSTRAP_COMPARISION_FAILURE; \ ++ fi ++ ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_gcc) binary: binary-without-manpage' \ ++ >> $(d_gcc)/usr/share/lintian/overrides/$(p_gcc) ++endif ++ ++ debian/dh_rmemptydirs -p$(p_gcc) ++ echo $(p_gcc) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++ ++$(binary_stamp)-gcc-multi: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcc_m) ++ dh_installdirs -p$(p_gcc_m) $(docdir) ++ ++ debian/dh_doclink -p$(p_gcc_m) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_gcc_m) ++ ++ dh_strip -p$(p_gcc_m) ++ dh_shlibdeps -p$(p_gcc_m) ++ echo $(p_gcc_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gcc-plugindev: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_pld) ++ dh_installdirs -p$(p_pld) \ ++ $(docdir) \ ++ $(gcc_lib_dir)/plugin ++ $(dh_compat2) dh_movefiles -p$(p_pld) \ ++ $(gcc_lib_dir)/plugin/include \ ++ $(gcc_lib_dir)/plugin/gtype.state \ ++ $(gcc_lexec_dir)/plugin/gengtype ++ ++ debian/dh_doclink -p$(p_pld) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_pld) ++ dh_strip -p$(p_pld) ++ dh_shlibdeps -p$(p_pld) ++ mkdir -p $(d_pld)/usr/share/lintian/overrides ++ echo '$(p_pld) binary: hardening-no-pie' \ ++ > $(d_pld)/usr/share/lintian/overrides/$(p_pld) ++ echo $(p_pld) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gcc-locales: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_loc) ++ dh_installdirs -p$(p_loc) \ ++ $(docdir) ++ $(dh_compat2) dh_movefiles -p$(p_loc) \ ++ $(PF)/share/locale/*/*/cpplib*.* \ ++ $(PF)/share/locale/*/*/gcc*.* ++ ++ debian/dh_doclink -p$(p_loc) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_loc) ++ echo $(p_loc) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++ ++# ---------------------------------------------------------------------- ++ ++$(binary_stamp)-testresults: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_tst) ++ dh_installdirs -p$(p_tst) $(docdir) ++ ++ debian/dh_doclink -p$(p_tst) $(p_xbase) ++ ++ mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test ++ifeq ($(with_check),yes) ++ cd $(d_tst) && tar xvf ../../installed-testlogs.tar ++else ++ echo "Nothing to compare (testsuite not run)" ++ echo 'Test run disabled, reason: $(with_check)' \ ++ > $(d_tst)/$(docdir)/$(p_xbase)/test-run-disabled ++endif ++ ++ debian/dh_rmemptydirs -p$(p_tst) ++ ++ echo $(p_tst) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gcc-doc: $(build_html_stamp) $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcc_d) ++ dh_installdirs -p$(p_gcc_d) \ ++ $(docdir)/$(p_xbase) \ ++ $(PF)/share/info ++ $(dh_compat2) dh_movefiles -p$(p_gcc_d) \ ++ $(PF)/share/info/cpp{,internals}-* \ ++ $(PF)/share/info/gcc{,int}-* \ ++ $(PF)/share/info/lib{gomp,itm}-* \ ++ $(if $(with_qmath),$(PF)/share/info/libquadmath-*) ++ rm -f $(d_gcc_d)/$(PF)/share/info/gccinst* ++ ++ifeq ($(with_gomp),yes) ++ $(MAKE) -C $(buildlibdir)/libgomp stamp-build-info ++ cp -p $(buildlibdir)/libgomp/$(cmd_prefix)libgomp$(pkg_ver).info \ ++ $(d_gcc_d)/$(PF)/share/info/libgomp$(pkg_ver).info ++endif ++ifeq ($(with_itm),yes) ++ -$(MAKE) -C $(buildlibdir)/libitm stamp-build-info ++ if [ -f $(buildlibdir)/libitm/$(cmd_prefix)libitm$(pkg_ver).info ]; then \ ++ cp -p $(buildlibdir)/libitm/$(cmd_prefix)libitm$(pkg_ver).info \ ++ $(d_gcc_d)/$(PF)/share/info/libitm$(pkg_ver).info; \ ++ fi ++endif ++ ++ debian/dh_doclink -p$(p_gcc_d) $(p_xbase) ++ dh_installdocs -p$(p_gcc_d) html/gcc.html html/gccint.html ++ifeq ($(with_gomp),yes) ++ cp -p html/libgomp.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ ++endif ++ifeq ($(with_itm),yes) ++ cp -p html/libitm.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ ++endif ++ifeq ($(with_qmath),yes) ++ cp -p html/libquadmath.html $(d_gcc_d)/usr/share/doc/$(p_gcc_d)/ ++endif ++ rm -f $(d_gcc_d)/$(docdir)/$(p_xbase)/copyright ++ debian/dh_rmemptydirs -p$(p_gcc_d) ++ echo $(p_gcc_d) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-gcn.mk index 0000000,0000000..7ae4eaa new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-gcn.mk @@@ -1,0 -1,0 +1,124 @@@ ++ifeq ($(with_offload_gcn),yes) ++ arch_binaries := $(arch_binaries) gcn ++ ifeq ($(with_common_libs),yes) ++ arch_binaries := $(arch_binaries) gcn-plugin ++ endif ++endif ++ ++p_gcn = gcc$(pkg_ver)-offload-amdgcn ++d_gcn = debian/$(p_gcn) ++ ++p_pl_gcn = libgomp-plugin-amdgcn1 ++d_pl_gcn = debian/$(p_pl_gcn) ++ ++dirs_gcn = \ ++ $(docdir)/$(p_xbase)/ \ ++ $(PF)/bin \ ++ $(gcc_lib_dir)/accel \ ++ $(gcc_lexec_dir)/accel ++ ++files_gcn = \ ++ $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-$(gcn_target_name)-gcc$(pkg_ver) \ ++ $(gcc_lib_dir)/accel/$(gcn_target_name) \ ++ $(gcc_lexec_dir)/accel/$(gcn_target_name) ++ ++# not needed: libs moved, headers not needed for lto1 ++# $(PF)/amdgcn-none ++ ++# are these needed? ++# $(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/{include,finclude,mgomp} ++ ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ files_gcn += \ ++ $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-$(gcn_target_name)-gcc$(pkg_ver).1 ++endif ++ ++$(binary_stamp)-gcn: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gcn) ++ dh_installdirs -p$(p_gcn) $(dirs_gcn) ++ tar -c -C $(d)-gcn -f - $(files_gcn) \ ++ | tar -x -v -C $(d_gcn) -f - ++ ++ifeq ($(gcn_tools_llvm_version),tools) ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_gcn) \ ++ /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ ++ /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ ++ /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ ++ /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ ++ /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib ++else ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_gcn) \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib ++ ++ mkdir -p $(d_gcn)/usr/$(gcn_target_name)/bin ++ dh_link -p$(p_gcn) \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /usr/$(gcn_target_name)/bin/ar \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /usr/$(gcn_target_name)/bin/as \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /usr/$(gcn_target_name)/bin/ld \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /usr/$(gcn_target_name)/bin/nm \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /usr/$(gcn_target_name)/bin/ranlib ++endif ++ ++ mkdir -p $(d_gcn)/usr/share/lintian/overrides ++ ( \ ++ echo '$(p_gcn) binary: hardening-no-pie'; \ ++ echo '$(p_gcn) binary: non-standard-dir-in-usr'; \ ++ echo '$(p_gcn) binary: file-in-unusual-dir'; \ ++ echo '$(p_gcn) binary: binary-from-other-architecture'; \ ++ ) > $(d_gcn)/usr/share/lintian/overrides/$(p_gcn) ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_gcn) binary: binary-without-manpage' \ ++ >> $(d_gcn)/usr/share/lintian/overrides/$(p_gcn) ++endif ++ ++ debian/dh_doclink -p$(p_gcn) $(p_xbase) ++ ++ debian/dh_rmemptydirs -p$(p_gcn) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_gcn)/$(gcc_lexec_dir)/accel/$(gcn_target_name)/{collect2,lto1,lto-wrapper,mkoffload} ++endif ++ dh_strip -p$(p_gcn) \ ++ $(if $(unstripped_exe),-X/lto1) -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared,stdc++}.a ++ dh_shlibdeps -p$(p_gcn) ++ echo $(p_gcn) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gcn-plugin: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_pl_gcn) ++ dh_installdirs -p$(p_pl_gcn) \ ++ $(docdir) \ ++ $(usr_lib) ++ $(dh_compat2) dh_movefiles -p$(p_pl_gcn) \ ++ $(usr_lib)/libgomp-plugin-gcn.so.* ++ ++ mkdir -p $(d_pl_gcn)/usr/share/lintian/overrides ++ ( \ ++ echo '$(p_pl_gcn) binary: package-name-doesnt-match-sonames'; \ ++ ) > $(d_pl_gcn)/usr/share/lintian/overrides/$(p_pl_gcn) ++ debian/dh_doclink -p$(p_pl_gcn) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_pl_gcn) ++ ++ dh_strip -p$(p_pl_gcn) ++ dh_makeshlibs -p$(p_pl_gcn) ++ dh_shlibdeps -p$(p_pl_gcn) ++ echo $(p_pl_gcn) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-go.mk index 0000000,0000000..b8e2c93 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-go.mk @@@ -1,0 -1,0 +1,423 @@@ ++ifeq ($(with_libgo),yes) ++ $(lib_binaries) += libgo ++endif ++ifeq ($(with_godev),yes) ++ $(lib_binaries) += libgo-dev ++endif ++ifeq ($(with_lib64go),yes) ++ $(lib_binaries) += lib64go ++endif ++ifeq ($(with_lib64godev),yes) ++ $(lib_binaries) += lib64go-dev ++endif ++ifeq ($(with_lib32go),yes) ++ $(lib_binaries) += lib32go ++endif ++ifeq ($(with_lib32godev),yes) ++ $(lib_binaries) += lib32go-dev ++endif ++ifeq ($(with_libn32go),yes) ++ $(lib_binaries) += libn32go ++endif ++ifeq ($(with_libn32godev),yes) ++ $(lib_binaries) += libn32go-dev ++endif ++ifeq ($(with_libx32go),yes) ++ $(lib_binaries) += libx32go ++endif ++ifeq ($(with_libx32godev),yes) ++ $(lib_binaries) += libx32go-dev ++endif ++ ++ifneq ($(DEB_STAGE),rtlibs) ++ arch_binaries := $(arch_binaries) gccgo-nat gccgo-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) gccgo ++ indep_binaries := $(indep_binaries) gccgo-build ++ endif ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) gccgo-multi ++ endif ++ ifneq ($(DEB_CROSS),yes) ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ indep_binaries := $(indep_binaries) go-doc ++ endif ++ endif ++endif ++ ++p_go_n = gccgo$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_go_h = gccgo$(pkg_ver)-for-host ++p_go_b = gccgo$(pkg_ver)-for-build ++p_go = gccgo$(pkg_ver) ++p_go_m = gccgo$(pkg_ver)-multilib$(cross_bin_arch) ++p_god = gccgo$(pkg_ver)-doc ++p_golib = libgo$(GO_SONAME)$(cross_lib_arch) ++ ++d_go_n = debian/$(p_go_n) ++d_go_h = debian/$(p_go_h) ++d_go_b = debian/$(p_go_b) ++d_go = debian/$(p_go) ++d_go_m = debian/$(p_go_m) ++d_god = debian/$(p_god) ++d_golib = debian/$(p_golib) ++ ++dirs_go_n = \ ++ $(PF)/bin \ ++ $(gcc_lexec_dir) \ ++ $(gcc_lib_dir) \ ++ $(PF)/include \ ++ $(PF)/share/man/man1 \ ++ usr/share/lintian/overrides ++ ++dirs_go = \ ++ $(docdir)/$(p_xbase)/go \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ ++files_go_n = \ ++ $(PF)/bin/$(cmd_prefix)gccgo$(pkg_ver) \ ++ $(gcc_lexec_dir)/go1 ++ ++ifneq (,$(filter $(build_type), build-native cross-build-native)) ++ files_go_n += \ ++ $(PF)/bin/$(cmd_prefix){go,gofmt}$(pkg_ver) \ ++ $(gcc_lexec_dir)/cgo \ ++ $(gcc_lexec_dir)/{buildid,test2json,vet} \ ++ $(PF)/share/man/man1/$(cmd_prefix){go,gofmt}$(pkg_ver).1 ++endif ++ ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ files_go_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix)gccgo$(pkg_ver).1 ++endif ++ ++ifeq ($(with_standalone_go),yes) ++ ++ dirs_go_n += \ ++ $(gcc_lib_dir)/include \ ++ $(PF)/share/man/man1 ++ dirs_go += \ ++ $(PF)/share/man/man1 ++ ++# XXX: what about triarch mapping? ++ files_go_n += \ ++ $(PF)/bin/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver) \ ++ $(PF)/bin/$(cmd_prefix)gcc-{ar,ranlib,nm}$(pkg_ver) \ ++ $(PF)/share/man/man1/$(cmd_prefix)gcc-{ar,nm,ranlib}$(pkg_ver).1 \ ++ $(gcc_lexec_dir)/{cc1,collect2,lto1,lto-wrapper} \ ++ $(gcc_lexec_dir)/liblto_plugin.so{,.0,.0.0.0} \ ++ $(gcc_lib_dir)/{libgcc*,libgcov.a,*.o} \ ++ $(header_files) \ ++ $(shell test -e $(d)/$(gcc_lib_dir)/SYSCALLS.c.X \ ++ && echo $(gcc_lib_dir)/SYSCALLS.c.X) ++ ++ ifeq ($(with_cc1),yes) ++ files_go_n += \ ++ $(gcc_lib_dir)/plugin/libcc1plugin.so{,.0,.0.0.0} ++ endif ++ ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ files_go_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix){cpp,gcc,gcov,gcov-tool}$(pkg_ver).1 ++ endif ++ ++ ifeq ($(biarch64),yes) ++ files_go_n += $(gcc_lib_dir)/$(biarch64subdir)/{libgcc*,libgcov.a,*.o} ++ endif ++ ifeq ($(biarch32),yes) ++ files_go_n += $(gcc_lib_dir)/$(biarch32subdir)/{libgcc*,*.o} ++ endif ++ ifeq ($(biarchn32),yes) ++ files_go_n += $(gcc_lib_dir)/$(biarchn32subdir)/{libgcc*,libgcov.a,*.o} ++ endif ++ ifeq ($(biarchx32),yes) ++ files_go_n += $(gcc_lib_dir)/$(biarchx32subdir)/{libgcc*,libgcov.a,*.o} ++ endif ++endif ++ ++# ---------------------------------------------------------------------- ++define __do_libgo ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(usr_lib$(2))/libgo.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides ++ echo '$(p_l) binary: unstripped-binary-or-object' \ ++ >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) ++ ++ : # don't strip: https://gcc.gnu.org/ml/gcc-patches/2015-02/msg01722.html ++ : # dh_strip -p$(p_l) --dbg-package=$(p_d) ++ : # $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst go$(GO_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst go$(GO_SONAME),atomic$(ATOMIC_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++define install_gccgo_lib ++ mv $(d)/$(usr_lib$(3))/$(1).a debian/$(4)/$(gcc_lib_dir$(3))/ ++ if [ -f $(d)/$(usr_lib$(3))/$(1)libbegin.a ]; then \ ++ mv $(d)/$(usr_lib$(3))/$(1)libbegin.a debian/$(4)/$(gcc_lib_dir$(3))/; \ ++ fi ++ rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} ++ dh_link -p$(4) \ ++ /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so ++endef ++ ++# __do_gccgo_libgcc(flavour,package,todir,fromdir) ++define __do_gccgo_libgcc ++ $(if $(findstring gccgo,$(PKGSOURCE)), ++ : # libgcc_s.so may be a linker script on some architectures ++ set -e; \ ++ if [ -h $(4)/libgcc_s.so ]; then \ ++ rm -f $(4)/libgcc_s.so; \ ++ dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ ++ $(3)/libgcc_s.so; \ ++ else \ ++ mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ ++ dh_link -p$(2) /$(libgcc_dir$(1))/libgcc_s.so.$(GCC_SONAME) \ ++ $(3)/libgcc_s.so.$(GCC_SONAME); \ ++ fi; \ ++ $(if $(1), dh_link -p$(2) /$(3)/libgcc_s.so \ ++ $(gcc_lib_dir)/libgcc_s_$(1).so;) ++ ) ++endef ++ ++define __do_libgo_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) \ ++ $(gcc_lib_dir$(2)) \ ++ $(usr_lib$(2)) ++ mv $(d)/$(usr_lib$(2))/{libgobegin,libgolibbegin}.a \ ++ $(d)/$(gcc_lib_dir$(2))/ ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(gcc_lib_dir$(2))/{libgobegin,libgolibbegin}.a \ ++ $(usr_lib$(2))/go ++ $(call install_gccgo_lib,libgo,$(GO_SONAME),$(2),$(p_l)) ++ ++ $(if $(filter yes, $(with_standalone_go)), \ ++ $(call install_gccgo_lib,libgomp,$(GOMP_SONAME),$(2),$(p_l))) ++ $(call __do_gccgo_libgcc,$(2),$(p_l),$(gcc_lib_dir$(2)),$(d)/$(usr_lib$(2))) ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++do_libgo = $(call __do_libgo,lib$(1)go$(GO_SONAME),$(1)) ++do_libgo_dev = $(call __do_libgo_dev,lib$(1)go-$(BASE_VERSION)-dev,$(1)) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-libgo: $(install_stamp) ++ $(call do_libgo,) ++ ++$(binary_stamp)-lib64go: $(install_stamp) ++ $(call do_libgo,64) ++ ++$(binary_stamp)-lib32go: $(install_stamp) ++ $(call do_libgo,32) ++ ++$(binary_stamp)-libn32go: $(install_stamp) ++ $(call do_libgo,n32) ++ ++$(binary_stamp)-libx32go: $(install_stamp) ++ $(call do_libgo,x32) ++ ++$(binary_stamp)-libgo-dev: $(install_stamp) ++ $(call do_libgo_dev,) ++ ++$(binary_stamp)-lib64go-dev: $(install_stamp) ++ $(call do_libgo_dev,64) ++ ++$(binary_stamp)-lib32go-dev: $(install_stamp) ++ $(call do_libgo_dev,32) ++ ++$(binary_stamp)-libx32go-dev: $(install_stamp) ++ $(call do_libgo_dev,x32) ++ ++$(binary_stamp)-libn32go-dev: $(install_stamp) ++ $(call do_libgo_dev,n32) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gccgo-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_go_n) ++ dh_installdirs -p$(p_go_n) $(dirs_go_n) ++ ++ $(dh_compat2) dh_movefiles -p$(p_go_n) $(files_go_n) ++ ++ifneq (,$(findstring gccgo,$(PKGSOURCE))) ++ rm -rf $(d_go_n)/$(gcc_lib_dir)/include/cilk ++ rm -rf $(d_go_n)/$(gcc_lib_dir)/include/openacc.h ++endif ++ ++ifeq ($(with_standalone_go),yes) ++ ifeq ($(with_gomp),yes) ++ mv $(d)/$(usr_lib)/libgomp*.spec $(d_go_n)/$(gcc_lib_dir)/ ++ endif ++ ifeq ($(with_cc1),yes) ++ rm -f $(d)/$(usr_lib)/libcc1.so ++ dh_link -p$(p_go_n) \ ++ /$(usr_lib)/libcc1.so.$(CC1_SONAME) /$(gcc_lib_dir)/libcc1.so ++ endif ++endif ++ ++ echo '$(p_go_n) binary: unstripped-binary-or-object' \ ++ > $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) ++ echo '$(p_go_n) binary: hardening-no-pie' \ ++ >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_go_n) binary: binary-without-manpage' \ ++ >> $(d_go_n)/usr/share/lintian/overrides/$(p_go_n) ++endif ++ ++ debian/dh_doclink -p$(p_go_n) $(p_xbase) ++ ++ debian/dh_rmemptydirs -p$(p_go_n) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_go_n)/$(gcc_lexec_dir)/go1 ++endif ++ dh_strip -v -p$(p_go_n) -X/cgo -X/go$(pkg_ver) -X/gofmt$(pkg_ver) \ ++ -X/buildid -X/test2json -X/vet $(if $(unstripped_exe),-X/go1) ++ dh_shlibdeps -p$(p_go_n) ++ echo $(p_go_n) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gccgo-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_go_h) ++ debian/dh_doclink -p$(p_go_h) $(p_xbase) ++ echo $(p_go_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gccgo-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_go_b) ++ debian/dh_doclink -p$(p_go_b) $(p_cpp_b) ++ echo $(p_go_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gccgo: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_go) ++ dh_installdirs -p$(p_go) $(dirs_go) ++ ++ ln -sf $(cmd_prefix)gccgo$(pkg_ver) \ ++ $(d_go)/$(PF)/bin/gccgo$(pkg_ver) ++ ln -sf $(cmd_prefix)go$(pkg_ver) \ ++ $(d_go)/$(PF)/bin/go$(pkg_ver) ++ ln -sf $(cmd_prefix)gofmt$(pkg_ver) \ ++ $(d_go)/$(PF)/bin/gofmt$(pkg_ver) ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ ln -sf $(cmd_prefix)gccgo$(pkg_ver).1.gz \ ++ $(d_go)/$(PF)/share/man/man1/gccgo$(pkg_ver).1.gz ++ endif ++ ln -sf $(cmd_prefix)go$(pkg_ver).1.gz \ ++ $(d_go)/$(PF)/share/man/man1/go$(pkg_ver).1.gz ++ ln -sf $(cmd_prefix)gofmt$(pkg_ver).1.gz \ ++ $(d_go)/$(PF)/share/man/man1/gofmt$(pkg_ver).1.gz ++ ++ifeq ($(with_standalone_go),yes) ++ for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ ++ ln -sf $(cmd_prefix)$$i$(pkg_ver) \ ++ $(d_go)/$(PF)/bin/$$i$(pkg_ver); \ ++ done ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ for i in gcc gcov gcov-tool gcc-ar gcc-nm gcc-ranlib; do \ ++ ln -sf $(cmd_prefix)gcc$(pkg_ver).1.gz \ ++ $(d_go)/$(PF)/share/man/man1/$$i$(pkg_ver).1.gz; \ ++ done ++ endif ++endif ++ ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ mkdir -p $(d_go)/usr/share/lintian/overrides ++ echo '$(p_go) binary: binary-without-manpage' \ ++ > $(d_go)/usr/share/lintian/overrides/$(p_go) ++endif ++ ++ debian/dh_doclink -p$(p_go) $(p_xbase) ++ ++# cp -p $(srcdir)/gcc/go/ChangeLog \ ++# $(d_go)/$(docdir)/$(p_base)/go/changelog ++ debian/dh_rmemptydirs -p$(p_go) ++ ++ echo $(p_go) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gccgo-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_go_m) ++ dh_installdirs -p$(p_go_m) $(docdir) ++ ++ mkdir -p $(d_go_m)/usr/share/lintian/overrides ++ echo '$(p_go_m) binary: non-multi-arch-lib-dir' \ ++ > $(d_go_m)/usr/share/lintian/overrides/$(p_go_m) ++ ++ debian/dh_doclink -p$(p_go_m) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_go_m) ++ dh_strip -p$(p_go_m) ++ dh_shlibdeps -p$(p_go_m) ++ echo $(p_go_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-go-doc: $(build_html_stamp) $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_god) ++ dh_installdirs -p$(p_god) \ ++ $(docdir)/$(p_xbase)/go \ ++ $(PF)/share/info ++ $(dh_compat2) dh_movefiles -p$(p_god) \ ++ $(PF)/share/info/gccgo* ++ ++ debian/dh_doclink -p$(p_god) $(p_xbase) ++ dh_installdocs -p$(p_god) ++ rm -f $(d_god)/$(docdir)/$(p_xbase)/copyright ++ cp -p html/gccgo.html $(d_god)/$(docdir)/$(p_xbase)/go/ ++ echo $(p_god) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-hppa64.mk index 0000000,0000000..36f91f5 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-hppa64.mk @@@ -1,0 -1,0 +1,39 @@@ ++arch_binaries := $(arch_binaries) hppa64 ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-hppa64: $(install_hppa64_stamp) ++ dh_testdir ++ dh_testroot ++ ++# dh_installdirs -p$(p_hppa64) ++ ++ rm -f $(d_hppa64)/usr/lib/libiberty.a ++ -find $(d_hppa64) ! -type d ++ ++ : # provide as and ld links ++ dh_link -p $(p_hppa64) \ ++ /usr/bin/hppa64-linux-gnu-as \ ++ /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/as \ ++ /usr/bin/hppa64-linux-gnu-ld \ ++ /$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/ld ++ ++ debian/dh_doclink -p$(p_hppa64) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_hppa64) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/cc1 \ ++ $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/collect2 \ ++ $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/lto-wrapper \ ++ $(d_hppa64)/$(hppa64libexecdir)/gcc/hppa64-linux-gnu/$(versiondir)/lto1 ++endif ++ dh_strip -p$(p_hppa64) -X.o -Xlibgcc.a -Xlibgcov.a ++ dh_shlibdeps -p$(p_hppa64) ++ ++ mkdir -p $(d_hppa64)/usr/share/lintian/overrides ++ cp -p debian/$(p_hppa64).overrides \ ++ $(d_hppa64)/usr/share/lintian/overrides/$(p_hppa64) ++ ++ echo $(p_hppa64) >> debian/arch_binaries ++ ++ touch $@ diff --cc debian/rules.d/binary-libasan.mk index 0000000,0000000..5876d9b new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libasan.mk @@@ -1,0 -1,0 +1,72 @@@ ++$(lib_binaries) += libasan ++ifeq ($(with_lib64asan),yes) ++ $(lib_binaries) += lib64asan ++endif ++ifeq ($(with_lib32asan),yes) ++ $(lib_binaries) += lib32asan ++endif ++ifeq ($(with_libn32asan),yes) ++ $(lib_binaries) += libn32asan ++endif ++ifeq ($(with_libx32asan),yes) ++ $(lib_binaries) += libx32asan ++endif ++ ++define __do_asan ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libasan.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ if [ -f debian/$(p_l).overrides ]; then \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ ++ fi ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides ++ echo "$(p_l): unstripped-binary-or-object" \ ++ >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) ++ ++ $(if $(2), \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ echo "$(p_l): symbols-file-contains-current-version-with-debian-revision" \ ++ >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l)) ++ ++ $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(if $(ignshld),$(ignshld),-)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst asan$(ASAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst asan$(ASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_asan = $(call __do_asan,lib$(1)asan$(ASAN_SONAME),$(1)) ++ ++$(binary_stamp)-libasan: $(install_stamp) ++ $(call do_asan,) ++ ++$(binary_stamp)-lib64asan: $(install_stamp) ++ $(call do_asan,64) ++ ++$(binary_stamp)-lib32asan: $(install_stamp) ++ $(call do_asan,32) ++ ++$(binary_stamp)-libn32asan: $(install_stamp) ++ $(call do_asan,n32) ++ ++$(binary_stamp)-libx32asan: $(install_stamp) ++ $(call do_asan,x32) diff --cc debian/rules.d/binary-libatomic.mk index 0000000,0000000..522a9b6 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libatomic.mk @@@ -1,0 -1,0 +1,56 @@@ ++$(lib_binaries) += libatomic ++ifeq ($(with_lib64atomic),yes) ++ $(lib_binaries) += lib64atomic ++endif ++ifeq ($(with_lib32atomic),yes) ++ $(lib_binaries) += lib32atomic ++endif ++ifeq ($(with_libn32atomic),yes) ++ $(lib_binaries) += libn32atomic ++endif ++ifeq ($(with_libx32atomic),yes) ++ $(lib_binaries) += libx32atomic ++endif ++ ++define __do_atomic ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libatomic.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ln -sf libatomic.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search,,$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_atomic = $(call __do_atomic,lib$(1)atomic$(ATOMIC_SONAME),$(1)) ++ ++$(binary_stamp)-libatomic: $(install_stamp) ++ $(call do_atomic,) ++ ++$(binary_stamp)-lib64atomic: $(install_stamp) ++ $(call do_atomic,64) ++ ++$(binary_stamp)-lib32atomic: $(install_stamp) ++ $(call do_atomic,32) ++ ++$(binary_stamp)-libn32atomic: $(install_stamp) ++ $(call do_atomic,n32) ++ ++$(binary_stamp)-libx32atomic: $(install_stamp) ++ $(call do_atomic,x32) diff --cc debian/rules.d/binary-libcc1.mk index 0000000,0000000..1dba145 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libcc1.mk @@@ -1,0 -1,0 +1,31 @@@ ++ifeq ($(with_libcc1),yes) ++ ifneq ($(DEB_CROSS),yes) ++ arch_binaries := $(arch_binaries) libcc1 ++ endif ++endif ++ ++p_cc1 = libcc1-$(CC1_SONAME) ++d_cc1 = debian/$(p_cc1) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-libcc1: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_cc1) ++ dh_installdirs -p$(p_cc1) \ ++ $(docdir) \ ++ $(usr_lib) ++ $(dh_compat2) dh_movefiles -p$(p_cc1) \ ++ $(usr_lib)/libcc1.so.* ++ ++ debian/dh_doclink -p$(p_cc1) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_cc1) ++ ++ dh_strip -p$(p_cc1) ++ dh_makeshlibs -p$(p_cc1) ++ dh_shlibdeps -p$(p_cc1) ++ echo $(p_cc1) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-libdiag.mk index 0000000,0000000..1d04281 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libdiag.mk @@@ -1,0 -1,0 +1,146 @@@ ++ifeq ($(with_libdiag),yes) ++ $(lib_binaries) += libdiag ++endif ++ ++$(lib_binaries) += libdiagdev ++ ++arch_binaries := $(arch_binaries) diag ++ ++ifneq ($(DEB_CROSS),yes) ++# indep_binaries := $(indep_binaries) libdiagdoc ++endif ++ ++p_diag = gcc$(pkg_ver)-diagnostics ++p_diaglib = libgdiagnostics$(DIAGNOSTICS_SONAME) ++p_diagdbg = libgdiagnostics$(DIAGNOSTICS_SONAME)-dbg ++p_diagdev = libgdiagnostics$(pkg_ver)-dev ++p_diagdoc = libgdiagnostics$(pkg_ver)-doc ++ ++d_diag = debian/$(p_diag) ++d_diaglib = debian/$(p_diaglib) ++d_diagdev = debian/$(p_diagdev) ++d_diagdbg = debian/$(p_diagdbg) ++d_diagdoc = debian/$(p_diagdoc) ++ ++$(binary_stamp)-libdiag: $(install_jit_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_diaglib) $(d_diagdbg) ++ dh_installdirs -p$(p_diaglib) \ ++ $(usr_lib) ++ifeq ($(with_dbg),yes) ++ dh_installdirs -p$(p_diagdbg) ++endif ++ ++ $(dh_compat2) dh_movefiles -p$(p_diaglib) \ ++ $(usr_lib)/libgdiagnostics.so.* ++ rm -f $(d)/$(usr_lib)/libgdiagnostics.so ++ ++ debian/dh_doclink -p$(p_diaglib) $(p_base) ++ifeq ($(with_dbg),yes) ++ debian/dh_doclink -p$(p_diagdbg) $(p_base) ++endif ++ ++ $(call do_strip_lib_dbg, $(p_diaglib), $(p_diagdbg), $(v_dbg),,) ++ $(cross_makeshlibs) dh_makeshlibs -p$(p_diaglib) ++ $(call cross_mangle_shlibs,$(p_diaglib)) ++ $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_diaglib) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_diaglib)) ++ echo $(p_diaglib) $(if $(with_dbg), $(p_diagdbg)) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ touch $@ ++ ++$(binary_stamp)-libdiagdev: $(install_jit_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_diagdev) ++ dh_installdirs -p$(p_diagdev) \ ++ $(usr_lib) \ ++ $(gcc_lib_dir)/include ++ ++ rm -f $(d)/$(usr_lib)/libgdiagnostics.so ++ ++ $(dh_compat2) dh_movefiles -p$(p_diagdev) \ ++ $(gcc_lib_dir)/include/libgdiagnostics*.h ++ dh_link -p$(p_diagdev) \ ++ $(usr_lib)/libgdiagnostics.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgdiagnostics.so ++ ++ debian/dh_doclink -p$(p_diagdev) $(p_base) ++ ++ echo $(p_diagdev) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ touch $@ ++ ++$(binary_stamp)-libdiagdoc: $(install_jit_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_diagdoc) ++ dh_installdirs -p$(p_diagdoc) \ ++ $(PF)/share/info ++ ++ $(dh_compat2) dh_movefiles -p$(p_diagdoc) \ ++ $(PF)/share/info/libgdiagnostics* ++ ++ debian/dh_doclink -p$(p_diagdoc) $(p_base) ++ echo $(p_diagdoc) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ touch $@ ++ ++$(binary_stamp)-diag: $(install_jit_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_diag) ++ dh_installdirs -p$(p_diag) \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 ++ ++ $(dh_compat2) dh_movefiles -p$(p_diag) \ ++ $(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) ++ dh_link -p$(p_diag) \ ++ $(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) $(PF)/bin/sarif-replay$(pkg_ver) ++ ++ if which help2man >/dev/null 2>&1; then \ ++ LD_LIBRARY_PATH=$(CURDIR)/$(d_diaglib)/$(usr_lib):/usr/lib/$(DEB_HOST_MULTIARCH)/libfakeroot${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \ ++ help2man --no-discard-stderr --help-option=--usage --no-info \ ++ --version-string=$(BASE_VERSION) \ ++ --name="Replay results from one or more .sarif files as if they were GCC diagnostics" \ ++ $(d_diag)/$(PF)/bin/sarif-replay$(pkg_ver) > debian/sarif-replay.1; \ ++ fi ++ cp debian/sarif-replay.1 \ ++ $(d_diag)/$(PF)/share/man/man1/$(cmd_prefix)sarif-replay$(pkg_ver).1 ++ dh_link -p$(p_diag) \ ++ $(PF)/share/man/man1/$(cmd_prefix)sarif-replay$(pkg_ver).1 \ ++ $(PF)/share/man/man1/sarif-replay$(pkg_ver).1 ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_diag)/$(PF)/bin/$(cmd_prefix)sarif-replay$(pkg_ver) ++endif ++ dh_strip -p$(p_diag) ++ ++ $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_diag) \ ++ -L$(p_diaglib) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ ++ mkdir -p $(d_diag)/usr/share/lintian/overrides ++ echo '$(p_diag) binary: hardening-no-pie' \ ++ > $(d_diag)/usr/share/lintian/overrides/$(p_diag) ++ ++ debian/dh_doclink -p$(p_diag) $(p_base) ++ ++ echo $(p_diag) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ touch $@ diff --cc debian/rules.d/binary-libgcc.mk index 0000000,0000000..2632bff new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libgcc.mk @@@ -1,0 -1,0 +1,318 @@@ ++ifeq ($(with_libgcc),yes) ++ $(lib_binaries) += libgcc ++endif ++ifeq ($(with_lib64gcc),yes) ++ $(lib_binaries) += lib64gcc ++endif ++ifeq ($(with_lib32gcc),yes) ++ $(lib_binaries) += lib32gcc ++endif ++ifeq ($(with_libn32gcc),yes) ++ $(lib_binaries) += libn32gcc ++endif ++ifeq ($(with_libx32gcc),yes) ++ $(lib_binaries) += libx32gcc ++endif ++ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifeq ($(with_cdev),yes) ++ $(lib_binaries) += libgcc-dev ++ endif ++ ifeq ($(with_lib64gccdev),yes) ++ $(lib_binaries) += lib64gcc-dev ++ endif ++ ifeq ($(with_lib32gccdev),yes) ++ $(lib_binaries) += lib32gcc-dev ++ endif ++ ifeq ($(with_libn32gccdev),yes) ++ $(lib_binaries) += libn32gcc-dev ++ endif ++ ifeq ($(with_libx32gccdev),yes) ++ $(lib_binaries) += libx32gcc-dev ++ endif ++endif ++ ++p_lgcc = libgcc-s$(GCC_SONAME)$(cross_lib_arch) ++p_lgccdbg = libgcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) ++p_lgccdev = libgcc-$(BASE_VERSION)-dev$(cross_lib_arch) ++d_lgcc = debian/$(p_lgcc) ++d_lgccdbg = debian/$(p_lgccdbg) ++d_lgccdev = debian/$(p_lgccdev) ++ ++p_l32gcc = lib32gcc-s$(GCC_SONAME)$(cross_lib_arch) ++p_l32gccdbg = lib32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) ++p_l32gccdev = lib32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) ++d_l32gcc = debian/$(p_l32gcc) ++d_l32gccdbg = debian/$(p_l32gccdbg) ++d_l32gccdev = debian/$(p_l32gccdev) ++ ++p_l64gcc = lib64gcc-s$(GCC_SONAME)$(cross_lib_arch) ++p_l64gccdbg = lib64gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) ++p_l64gccdev = lib64gcc-$(BASE_VERSION)-dev$(cross_lib_arch) ++d_l64gcc = debian/$(p_l64gcc) ++d_l64gccdbg = debian/$(p_l64gccdbg) ++d_l64gccdev = debian/$(p_l64gccdev) ++ ++p_ln32gcc = libn32gcc-s$(GCC_SONAME)$(cross_lib_arch) ++p_ln32gccdbg = libn32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) ++p_ln32gccdev = libn32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) ++d_ln32gcc = debian/$(p_ln32gcc) ++d_ln32gccdbg = debian/$(p_ln32gccdbg) ++d_ln32gccdev = debian/$(p_ln32gccdev) ++ ++p_lx32gcc = libx32gcc-s$(GCC_SONAME)$(cross_lib_arch) ++p_lx32gccdbg = libx32gcc-s$(GCC_SONAME)-dbg$(cross_lib_arch) ++p_lx32gccdev = libx32gcc-$(BASE_VERSION)-dev$(cross_lib_arch) ++d_lx32gcc = debian/$(p_lx32gcc) ++d_lx32gccdbg = debian/$(p_lx32gccdbg) ++d_lx32gccdev = debian/$(p_lx32gccdev) ++ ++# __do_gcc_devels(flavour,package,todir,fromdir) ++define __do_gcc_devels ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ test -n "$(2)" ++ rm -rf debian/$(2) ++ dh_installdirs -p$(2) $(docdir) #TODO ++ dh_installdirs -p$(2) $(3) ++ ++ $(call __do_gcc_devels2,$(1),$(2),$(3),$(4)) ++ ++ debian/dh_doclink -p$(2) $(p_lbase) ++ debian/dh_rmemptydirs -p$(2) ++ ++ dh_strip -p$(2) ++ $(cross_shlibdeps) dh_shlibdeps -p$(2) ++ $(call cross_mangle_substvars,$(2)) ++ echo $(2) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# __do_gcc_devels2(flavour,package,todir,fromdir) ++define __do_gcc_devels2 ++# stage1 builds static libgcc only ++ $(if $(filter $(DEB_STAGE),stage1),, ++ : # libgcc_s.so may be a linker script on some architectures ++ set -e; \ ++ if [ -h $(4)/libgcc_s.so ]; then \ ++ rm -f $(4)/libgcc_s.so; \ ++ rm -f $(d)/$(3)/libgcc_s.so; \ ++ ( \ ++ echo '/* GNU ld script'; \ ++ echo ' Use a trivial linker script instead of a symlink. */'; \ ++ echo 'GROUP ( libgcc_s.so.$(GCC_SONAME) )'; \ ++ ) > $(d)/$(3)/libgcc_s.so; \ ++ else \ ++ mv $(4)/libgcc_s.so $(d)/$(3)/libgcc_s.so; \ ++ fi; \ ++ ) ++ $(dh_compat2) dh_movefiles -p$(2) \ ++ $(3)/{libgcc*,libgcov.a,*.o} \ ++ $(if $(1),,$(gcc_lib_dir)/include/*.h $(gcc_lib_dir)/include/sanitizer/*.h) # Only move headers for the "main" package ++ $(if $(1),, for h in ISO_Fortran_binding.h libgccjit.h libgccjit++.h libdiagnostics.h libdiagnostics++.h; do \ ++ if [ -f debian/$(2)/$(gcc_lib_dir)/include/$$h ]; then \ ++ mv debian/$(2)/$(gcc_lib_dir)/include/$$h $(d)/$(gcc_lib_dir)/include/.; \ ++ fi; done) ++ ++ : # libbacktrace not installed by default ++ $(if $(filter yes, $(with_backtrace)), ++ if [ -f $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a ]; then \ ++ install -m644 $(buildlibdir)/$(1)/libbacktrace/.libs/libbacktrace.a \ ++ debian/$(2)/$(gcc_lib_dir)/$(1); \ ++ fi; \ ++ $(if $(1),, ++ if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ ++ install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ ++ debian/$(2)/$(gcc_lib_dir)/include/; \ ++ install -m644 $(srcdir)/libbacktrace/backtrace.h \ ++ debian/$(2)/$(gcc_lib_dir)/include/; \ ++ fi ++ )) ++ ++ : # If building a flavour, add a lintian override ++ $(if $(1), ++ #TODO: use a file instead of a hacky echo ++ # but do we want to use one override file (in the source package) per ++ # flavour or not since they are essentially the same? ++ mkdir -p debian/$(2)/usr/share/lintian/overrides ++ echo "$(2) binary: binary-from-other-architecture" \ ++ >> debian/$(2)/usr/share/lintian/overrides/$(2) ++ ) ++ $(if $(filter yes, $(with_lib$(1)gmath)), ++ $(call install_gcc_lib,libgcc-math,$(GCC_SONAME),$(1),$(2)) ++ ) ++ $(if $(filter yes, $(with_libssp)), ++ $(call install_gcc_lib,libssp,$(SSP_SONAME),$(1),$(2)) ++ ) ++ $(if $(filter yes, $(with_ssp)), ++ mv $(4)/libssp_nonshared.a debian/$(2)/$(3)/; ++ ) ++ $(if $(filter yes, $(with_gomp)), ++ $(call install_gcc_lib,libgomp,$(GOMP_SONAME),$(1),$(2)) ++ ) ++ $(if $(filter yes, $(with_itm)), ++ $(call install_gcc_lib,libitm,$(ITM_SONAME),$(1),$(2)) ++ ) ++ $(if $(filter yes, $(with_atomic)), ++ $(call install_gcc_lib,libatomic,$(ATOMIC_SONAME),$(1),$(2)) ++ ) ++ $(if $(filter yes, $(with_asan)), ++ $(call install_gcc_lib,libasan,$(ASAN_SONAME),$(1),$(2)) ++ mv $(4)/libasan_preinit.o debian/$(2)/$(3)/; ++ ) ++ $(if $(1),,$(if $(filter yes, $(with_lsan)), ++ $(call install_gcc_lib,liblsan,$(LSAN_SONAME),$(1),$(2)) ++ mv $(4)/liblsan_preinit.o debian/$(2)/$(3)/; ++ )) ++ $(if $(1),,$(if $(filter yes, $(with_tsan)), ++ $(call install_gcc_lib,libtsan,$(TSAN_SONAME),$(1),$(2)) ++ mv $(4)/libtsan_preinit.o debian/$(2)/$(3)/; ++ )) ++ $(if $(filter yes, $(with_ubsan)), ++ $(call install_gcc_lib,libubsan,$(UBSAN_SONAME),$(1),$(2)) ++ ) ++ $(if $(1),,$(if $(filter yes, $(with_hwasan)), ++ $(call install_gcc_lib,libhwasan,$(HWASAN_SONAME),$(1),$(2)) ++ )) ++ $(if $(filter yes, $(with_vtv)), ++ $(call install_gcc_lib,libvtv,$(VTV_SONAME),$(1),$(2)) ++ ) ++ $(if $(filter yes, $(with_cilkrts)), ++ $(call install_gcc_lib,libcilkrts,$(CILKRTS_SONAME),$(1),$(2)) ++ ) ++ $(if $(filter yes, $(with_qmath)), ++ $(call install_gcc_lib,libquadmath,$(QUADMATH_SONAME),$(1),$(2)) ++ ) ++endef ++ ++# do_gcc_devels(flavour) ++define do_gcc_devels ++ $(call __do_gcc_devels,$(1),$(p_l$(1)gccdev),$(gcc_lib_dir$(1)),$(d)/$(usr_lib$(1))) ++endef ++ ++ ++define __do_libgcc ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ ++ dh_installdirs -p$(p_l) \ ++ $(docdir)/$(p_l) \ ++ $(libgcc_dir$(2)) ++ ++ $(if $(filter yes,$(with_shared_libgcc)), ++ mv $(d)/$(usr_lib$(2))/libgcc_s.so.$(GCC_SONAME) \ ++ $(d_l)/$(libgcc_dir$(2))/. ++ ) ++ ++ $(if $(filter yes, $(with_internal_libunwind)), ++ mv $(d)/$(usr_lib$(2))/libunwind.* \ ++ $(d_l)/$(libgcc_dir$(2))/. ++ ) ++ ++ debian/dh_doclink -p$(p_l) $(if $(3),$(3),$(p_lbase)) ++ debian/dh_rmemptydirs -p$(p_l) ++ $(if $(with_dbg), ++ debian/dh_doclink -p$(p_d) $(if $(3),$(3),$(p_lbase)) ++ debian/dh_rmemptydirs -p$(p_d) ++ ) ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ++ # see Debian #533843 for the __aeabi symbol handling; this construct is ++ # just to include the symbols for dpkg versions older than 1.15.3 which ++ # didn't allow bypassing the symbol blacklist ++ $(if $(filter yes,$(with_shared_libgcc)), ++ $(if $(findstring gcc-s1,$(p_l)), \ ++ ln -sf libgcc-s.symbols debian/$(p_l).symbols \ ++ ) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ -- -v$(DEB_LIBGCC_VERSION) -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(if $(filter arm-linux-gnueabi%,$(DEB_TARGET_GNU_TYPE)), ++ if head -1 $(d_l)/DEBIAN/symbols 2>/dev/null | grep -q '^lib'; then \ ++ grep -q '^ __aeabi' $(d_l)/DEBIAN/symbols \ ++ || cat debian/libgcc.symbols.aeabi \ ++ >> $(d_l)/DEBIAN/symbols; \ ++ fi ++ ) ++ ) ++ ++ $(if $(DEB_STAGE),, ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search,,$(2)) ++ ) ++ $(call cross_mangle_substvars,$(p_l)) ++ ++ $(if $(2),, # only for native ++ mkdir -p $(d_l)/usr/share/lintian/overrides ++ echo '$(p_l): package-name-doesnt-match-sonames' \ ++ > $(d_l)/usr/share/lintian/overrides/$(p_l) ++ ) ++ ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ $(if $(filter yes,$(with_libcompatgcc)), ++ debian/dh_doclink -p$(subst gcc-s,gcc,$(p_l)) $(if $(3),$(3),$(p_lbase)) ++ $(if $(with_dbg), ++ debian/dh_doclink -p$(subst gcc-s,gcc,$(p_d)) $(if $(3),$(3),$(p_lbase)) ++ ) ++ ++ $(if $(2),, ++ mkdir -p $(subst gcc-s,gcc,$(d_l))/$(libgcc_dir$(2)) ++ cp -p $(d_l)/$(libgcc_dir$(2))/libgcc_s.so.$(GCC_SONAME) \ ++ $(subst gcc-s,gcc,$(d_l))/lib/. ++ mkdir -p $(subst gcc-s,gcc,$(d_l))/DEBIAN ++ cp -p $(d_l)/DEBIAN/{symbols,shlibs} \ ++ $(subst gcc-s,gcc,$(d_l))/DEBIAN/. ++ cp -p $(d_l).substvars $(subst gcc-s,gcc,$(d_l)).substvars ++ mkdir -p $(subst gcc-s,gcc,$(d_l))/usr/share/lintian/overrides ++ ( \ ++ echo '$(subst gcc-s,gcc,$(p_l)): package-name-doesnt-match-sonames'; \ ++ echo '$(subst gcc-s,gcc,$(p_l)): shlibs-declares-dependency-on-other-package'; \ ++ echo '$(subst gcc-s,gcc,$(p_l)): symbols-declares-dependency-on-other-package'; \ ++ ) > $(subst gcc-s,gcc,$(d_l))/usr/share/lintian/overrides/$(subst gcc-s,gcc,$(p_l)) ++ ) ++ ++ echo $(subst gcc-s,gcc,$(p_l) $(if $(with_dbg), $(p_d))) >> debian/$(lib_binaries).epoch ++ ) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++do_libgcc = $(call __do_libgcc,lib$(1)gcc-s$(GCC_SONAME),$(1),$(2)) ++# ---------------------------------------------------------------------- ++ ++$(binary_stamp)-libgcc: $(install_dependencies) ++ $(call do_libgcc,,) ++ ++$(binary_stamp)-lib64gcc: $(install_dependencies) ++ $(call do_libgcc,64,) ++ ++$(binary_stamp)-lib32gcc: $(install_dependencies) ++ $(call do_libgcc,32,) ++ ++$(binary_stamp)-libn32gcc: $(install_dependencies) ++ $(call do_libgcc,n32,) ++ ++$(binary_stamp)-libx32gcc: $(install_dependencies) ++ $(call do_libgcc,x32,) ++ ++$(binary_stamp)-libgcc-dev: $(install_dependencies) ++ $(call do_gcc_devels,) ++ ++$(binary_stamp)-lib64gcc-dev: $(install_dependencies) ++ $(call do_gcc_devels,64) ++ ++$(binary_stamp)-lib32gcc-dev: $(install_dependencies) ++ $(call do_gcc_devels,32) ++ ++$(binary_stamp)-libn32gcc-dev: $(install_dependencies) ++ $(call do_gcc_devels,n32) ++ ++$(binary_stamp)-libx32gcc-dev: $(install_dependencies) ++ $(call do_gcc_devels,x32) diff --cc debian/rules.d/binary-libgccjit.mk index 0000000,0000000..9441a49 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libgccjit.mk @@@ -1,0 -1,0 +1,95 @@@ ++ifeq ($(with_libgccjit),yes) ++ $(lib_binaries) += libgccjit ++endif ++ ++$(lib_binaries) += libgccjitdev ++ ++ifneq ($(DEB_CROSS),yes) ++ indep_binaries := $(indep_binaries) libgccjitdoc ++endif ++ ++p_jitlib = libgccjit$(GCCJIT_SONAME) ++p_jitdbg = libgccjit$(GCCJIT_SONAME)-dbg ++p_jitdev = libgccjit$(pkg_ver)-dev ++p_jitdoc = libgccjit$(pkg_ver)-doc ++ ++d_jitlib = debian/$(p_jitlib) ++d_jitdev = debian/$(p_jitdev) ++d_jitdbg = debian/$(p_jitdbg) ++d_jitdoc = debian/$(p_jitdoc) ++ ++$(binary_stamp)-libgccjit: $(install_jit_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_jitlib) $(d_jitdbg) ++ dh_installdirs -p$(p_jitlib) \ ++ $(usr_lib) ++ifeq ($(with_dbg),yes) ++ dh_installdirs -p$(p_jitdbg) ++endif ++ ++ $(dh_compat2) dh_movefiles -p$(p_jitlib) \ ++ $(usr_lib)/libgccjit.so.* ++ rm -f $(d)/$(usr_lib)/libgccjit.so ++ ++ debian/dh_doclink -p$(p_jitlib) $(p_base) ++ifeq ($(with_dbg),yes) ++ debian/dh_doclink -p$(p_jitdbg) $(p_base) ++endif ++ ++ $(call do_strip_lib_dbg, $(p_jitlib), $(p_jitdbg), $(v_dbg),,) ++ $(cross_makeshlibs) dh_makeshlibs -p$(p_jitlib) ++ $(call cross_mangle_shlibs,$(p_jitlib)) ++ $(ignshld)$(cross_shlibdeps) dh_shlibdeps -p$(p_jitlib) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_jitlib)) ++ echo $(p_jitlib) $(if $(with_dbg), $(p_jitdbg)) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ touch $@ ++ ++$(binary_stamp)-libgccjitdev: $(install_jit_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_jitdev) ++ dh_installdirs -p$(p_jitdev) \ ++ $(usr_lib) \ ++ $(gcc_lib_dir)/include ++ ++ rm -f $(d)/$(usr_lib)/libgccjit.so ++ ++ $(dh_compat2) dh_movefiles -p$(p_jitdev) \ ++ $(gcc_lib_dir)/include/libgccjit*.h ++ dh_link -p$(p_jitdev) \ ++ $(usr_lib)/libgccjit.so.$(GCCJIT_SONAME) $(gcc_lib_dir)/libgccjit.so ++ ++ debian/dh_doclink -p$(p_jitdev) $(p_base) ++ ++ echo $(p_jitdev) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ touch $@ ++ ++$(binary_stamp)-libgccjitdoc: $(install_jit_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_jitdoc) ++ dh_installdirs -p$(p_jitdoc) \ ++ $(PF)/share/info/libgccjit-figures ++ ++ $(dh_compat2) dh_movefiles -p$(p_jitdoc) \ ++ $(PF)/share/info/libgccjit* ++ cp -p $(srcdir)/gcc/jit/docs/_build/texinfo/libgccjit-figures/*.png \ ++ $(d_jitdoc)/$(PF)/share/info/libgccjit-figures/. ++ ++ debian/dh_doclink -p$(p_jitdoc) $(p_base) ++ echo $(p_jitdoc) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ touch $@ diff --cc debian/rules.d/binary-libgomp.mk index 0000000,0000000..b6e994e new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libgomp.mk @@@ -1,0 -1,0 +1,57 @@@ ++$(lib_binaries) += libgomp ++ifeq ($(with_lib64gomp),yes) ++ $(lib_binaries) += lib64gomp ++endif ++ifeq ($(with_lib32gomp),yes) ++ $(lib_binaries) += lib32gomp ++endif ++ifeq ($(with_libn32gomp),yes) ++ $(lib_binaries) += libn32gomp ++endif ++ifeq ($(with_libx32gomp),yes) ++ $(lib_binaries) += libx32gomp ++endif ++ ++define __do_gomp ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libgomp.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ln -sf libgomp.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search,$(subst gomp$(GOMP_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_gomp = $(call __do_gomp,lib$(1)gomp$(GOMP_SONAME),$(1)) ++ ++$(binary_stamp)-libgomp: $(install_stamp) ++ $(call do_gomp,) ++ ++$(binary_stamp)-lib64gomp: $(install_stamp) ++ $(call do_gomp,64) ++ ++$(binary_stamp)-lib32gomp: $(install_stamp) ++ $(call do_gomp,32) ++ ++$(binary_stamp)-libn32gomp: $(install_stamp) ++ $(call do_gomp,n32) ++ ++$(binary_stamp)-libx32gomp: $(install_stamp) ++ $(call do_gomp,x32) diff --cc debian/rules.d/binary-libhwasan.mk index 0000000,0000000..86c2cdd new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libhwasan.mk @@@ -1,0 -1,0 +1,71 @@@ ++$(lib_binaries) += libhwasan ++ifeq ($(with_lib64hwasan),yes) ++ $(lib_binaries) += lib64hwasan ++endif ++ifeq ($(with_lib32hwasan),yes) ++ $(lib_binaries) += lib32hwasan ++endif ++ifeq ($(with_libn32hwasan),yes) ++ $(lib_binaries) += libn32hwasan ++endif ++ifeq ($(with_libx32hwasan),yes) ++ $(lib_binaries) += libx32hwasan ++endif ++ ++define __do_hwasan ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libhwasan.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ if [ -f debian/$(p_l).overrides ]; then \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ ++ fi ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides ++ echo "$(p_l): unstripped-binary-or-object" \ ++ >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) ++ $(if $(2), \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ echo "$(p_l): symbols-file-contains-current-version-with-debian-revision" \ ++ >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l)) ++ ++ $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(if $(ignshld),$(ignshld),-)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst hwasan$(HWASAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst hwasan$(HWASAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_hwasan = $(call __do_hwasan,lib$(1)hwasan$(HWASAN_SONAME),$(1)) ++ ++$(binary_stamp)-libhwasan: $(install_stamp) ++ $(call do_hwasan,) ++ ++$(binary_stamp)-lib64hwasan: $(install_stamp) ++ $(call do_hwasan,64) ++ ++$(binary_stamp)-lib32hwasan: $(install_stamp) ++ $(call do_hwasan,32) ++ ++$(binary_stamp)-libn32hwasan: $(install_stamp) ++ $(call do_hwasan,n32) ++ ++$(binary_stamp)-libx32hwasan: $(install_stamp) ++ $(call do_hwasan,x32) diff --cc debian/rules.d/binary-libitm.mk index 0000000,0000000..1553364 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libitm.mk @@@ -1,0 -1,0 +1,57 @@@ ++$(lib_binaries) += libitm ++ifeq ($(with_lib64itm),yes) ++ $(lib_binaries) += lib64itm ++endif ++ifeq ($(with_lib32itm),yes) ++ $(lib_binaries) += lib32itm ++endif ++ifeq ($(with_libn32itm),yes) ++ $(lib_binaries) += libn32itm ++endif ++ifeq ($(with_libx32itm),yes) ++ $(lib_binaries) += libx32itm ++endif ++ ++define __do_itm ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libitm.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ln -sf libitm.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search,,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_itm = $(call __do_itm,lib$(1)itm$(ITM_SONAME),$(1)) ++ ++$(binary_stamp)-libitm: $(install_stamp) ++ $(call do_itm,) ++ ++$(binary_stamp)-lib64itm: $(install_stamp) ++ $(call do_itm,64) ++ ++$(binary_stamp)-lib32itm: $(install_stamp) ++ $(call do_itm,32) ++ ++$(binary_stamp)-libn32itm: $(install_stamp) ++ $(call do_itm,n32) ++ ++$(binary_stamp)-libx32itm: $(install_stamp) ++ $(call do_itm,x32) diff --cc debian/rules.d/binary-liblsan.mk index 0000000,0000000..fa8001c new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-liblsan.mk @@@ -1,0 -1,0 +1,67 @@@ ++$(lib_binaries) += liblsan ++ifeq ($(with_lib64lsan),yes) ++ $(lib_binaries) += lib64lsan ++endif ++ifeq ($(with_lib32lsan),yes) ++ $(lib_binaries) += lib32lsan ++endif ++ifeq ($(with_libn32lsan),yes) ++ $(lib_binaries) += libn32lsan ++endif ++ifeq ($(with_libx32lsan),yes) ++ $(lib_binaries) += libx32lsan ++endif ++ ++define __do_lsan ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/liblsan.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ if [ -f debian/$(p_l).overrides ]; then \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ ++ fi ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides ++ echo "$(p_l): unstripped-binary-or-object" \ ++ >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) ++ ++ $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst lsan$(LSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst lsan$(LSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_lsan = $(call __do_lsan,lib$(1)lsan$(LSAN_SONAME),$(1)) ++ ++$(binary_stamp)-liblsan: $(install_stamp) ++ $(call do_lsan,) ++ ++$(binary_stamp)-lib64lsan: $(install_stamp) ++ $(call do_lsan,64) ++ ++$(binary_stamp)-lib32lsan: $(install_stamp) ++ $(call do_lsan,32) ++ ++$(binary_stamp)-libn32lsan: $(install_stamp) ++ $(call do_lsan,n32) ++ ++$(binary_stamp)-libx32lsan: $(install_stamp) ++ $(call do_lsan,x32) diff --cc debian/rules.d/binary-libobjc.mk index 0000000,0000000..345e6ea new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libobjc.mk @@@ -1,0 -1,0 +1,137 @@@ ++ifeq ($(with_libobjc),yes) ++ $(lib_binaries) += libobjc ++endif ++ifeq ($(with_objcdev),yes) ++ $(lib_binaries) += libobjc-dev ++endif ++ifeq ($(with_lib64objc),yes) ++ $(lib_binaries) += lib64objc ++endif ++ifeq ($(with_lib64objcdev),yes) ++ $(lib_binaries) += lib64objc-dev ++endif ++ifeq ($(with_lib32objc),yes) ++ $(lib_binaries) += lib32objc ++endif ++ifeq ($(with_lib32objcdev),yes) ++ $(lib_binaries) += lib32objc-dev ++endif ++ifeq ($(with_libn32objc),yes) ++ $(lib_binaries) += libn32objc ++endif ++ifeq ($(with_libn32objcdev),yes) ++ $(lib_binaries) += libn32objc-dev ++endif ++ifeq ($(with_libx32objc),yes) ++ $(lib_binaries) += libx32objc ++endif ++ifeq ($(with_libx32objcdev),yes) ++ $(lib_binaries) += libx32objc-dev ++endif ++ ++files_lobjcdev= \ ++ $(gcc_lib_dir)/include/objc ++ ++files_lobjc = \ ++ $(usr_lib$(2))/libobjc.so.* ++ifeq ($(with_objc_gc),yes) ++ files_lobjc += \ ++ $(usr_lib$(2))/libobjc_gc.so.* ++endif ++ ++define __do_libobjc ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) \ ++ $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(files_lobjc) ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ rm -f debian/$(p_l).symbols ++ $(if $(2), ++ ln -sf libobjc.symbols debian/$(p_l).symbols , ++ fgrep -v libobjc.symbols.gc debian/libobjc.symbols > debian/$(p_l).symbols ++ ) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXXXXX ERROR $(p_l) ++ rm -f debian/$(p_l).symbols ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search,$(subst objc$(OBJC_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++ ++define __do_libobjc_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) \ ++ $(gcc_lib_dir$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(files_lobjcdev) ++ ++ $(call install_gcc_lib,libobjc,$(OBJC_SONAME),$(2),$(p_l)) ++ $(if $(filter yes,$(with_objc_gc)), ++ $(if $(2),, ++ dh_link -p$(p_l) \ ++ /$(usr_lib$(2))/libobjc_gc.so.$(OBJC_SONAME) \ ++ /$(gcc_lib_dir$(2))/libobjc_gc.so ++ )) ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++ ++ ++# ---------------------------------------------------------------------- ++ ++do_libobjc = $(call __do_libobjc,lib$(1)objc$(OBJC_SONAME),$(1)) ++do_libobjc_dev = $(call __do_libobjc_dev,lib$(1)objc-$(BASE_VERSION)-dev,$(1)) ++ ++$(binary_stamp)-libobjc: $(install_stamp) ++ $(call do_libobjc,) ++ ++$(binary_stamp)-lib64objc: $(install_stamp) ++ $(call do_libobjc,64) ++ ++$(binary_stamp)-lib32objc: $(install_stamp) ++ $(call do_libobjc,32) ++ ++$(binary_stamp)-libn32objc: $(install_stamp) ++ $(call do_libobjc,n32) ++ ++$(binary_stamp)-libx32objc: $(install_stamp) ++ $(call do_libobjc,x32) ++ ++ ++$(binary_stamp)-libobjc-dev: $(install_stamp) ++ $(call do_libobjc_dev,) ++ ++$(binary_stamp)-lib64objc-dev: $(install_stamp) ++ $(call do_libobjc_dev,64) ++ ++$(binary_stamp)-lib32objc-dev: $(install_stamp) ++ $(call do_libobjc_dev,32) ++ ++$(binary_stamp)-libx32objc-dev: $(install_stamp) ++ $(call do_libobjc_dev,x32) ++ ++$(binary_stamp)-libn32objc-dev: $(install_stamp) ++ $(call do_libobjc_dev,n32) diff --cc debian/rules.d/binary-libquadmath.mk index 0000000,0000000..e5db688 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libquadmath.mk @@@ -1,0 -1,0 +1,57 @@@ ++$(lib_binaries) += libqmath ++ifeq ($(with_lib64qmath),yes) ++ $(lib_binaries) += lib64qmath ++endif ++ifeq ($(with_lib32qmath),yes) ++ $(lib_binaries) += lib32qmath ++endif ++ifeq ($(with_libn32qmath),yes) ++ $(lib_binaries) += libn32qmath ++endif ++ifeq ($(with_libx32qmath),yes) ++ $(lib_binaries) += libx32qmath ++endif ++ ++define __do_qmath ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libquadmath.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ ln -sf libquadmath.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search,,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_qmath = $(call __do_qmath,lib$(1)quadmath$(QUADMATH_SONAME),$(1)) ++ ++$(binary_stamp)-libqmath: $(install_stamp) ++ $(call do_qmath,) ++ ++$(binary_stamp)-lib64qmath: $(install_stamp) ++ $(call do_qmath,64) ++ ++$(binary_stamp)-lib32qmath: $(install_stamp) ++ $(call do_qmath,32) ++ ++$(binary_stamp)-libn32qmath: $(install_stamp) ++ $(call do_qmath,n32) ++ ++$(binary_stamp)-libx32qmath: $(install_stamp) ++ $(call do_qmath,x32) diff --cc debian/rules.d/binary-libssp.mk index 0000000,0000000..e2c873a new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libssp.mk @@@ -1,0 -1,0 +1,155 @@@ ++arch_binaries := $(arch_binaries) libssp ++ifeq ($(with_lib64ssp),yes) ++ arch_binaries := $(arch_binaries) lib64ssp ++endif ++ifeq ($(with_lib32ssp),yes) ++ arch_binaries := $(arch_binaries) lib32ssp ++endif ++ifeq ($(with_libn32ssp),yes) ++ arch_binaries := $(arch_binaries) libn32ssp ++endif ++ifeq ($(with_libx32ssp),yes) ++ arch_binaries := $(arch_binaries) libx32ssp ++endif ++ ++p_ssp = libssp$(SSP_SONAME) ++p_ssp32 = lib32ssp$(SSP_SONAME) ++p_ssp64 = lib64ssp$(SSP_SONAME) ++p_sspx32 = libx32ssp$(SSP_SONAME) ++p_sspd = libssp$(SSP_SONAME)-dev ++ ++d_ssp = debian/$(p_ssp) ++d_ssp32 = debian/$(p_ssp32) ++d_ssp64 = debian/$(p_ssp64) ++d_sspx32 = debian/$(p_sspx32) ++d_sspd = debian/$(p_sspd) ++ ++dirs_ssp = \ ++ $(docdir)/$(p_base) \ ++ $(PF)/$(libdir) ++files_ssp = \ ++ $(PF)/$(libdir)/libssp.so.* ++ ++dirs_sspd = \ ++ $(docdir) \ ++ $(PF)/include \ ++ $(PF)/$(libdir) ++files_sspd = \ ++ $(gcc_lib_dir)/include/ssp \ ++ $(PF)/$(libdir)/libssp.{a,so} \ ++ $(PF)/$(libdir)/libssp_nonshared.a ++ ++ifeq ($(with_lib32ssp),yes) ++ dirs_sspd += $(lib32) ++ files_sspd += $(lib32)/libssp.{a,so} ++ files_sspd += $(lib32)/libssp_nonshared.a ++endif ++ifeq ($(with_lib64ssp),yes) ++ dirs_sspd += $(PF)/lib64 ++ files_sspd += $(PF)/lib64/libssp.{a,so} ++ files_sspd += $(PF)/lib64/libssp_nonshared.a ++endif ++ ++$(binary_stamp)-libssp: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_ssp) ++ dh_installdirs -p$(p_ssp) ++ ++ $(dh_compat2) dh_movefiles -p$(p_ssp) $(files_ssp) ++ debian/dh_doclink -p$(p_ssp) $(p_lbase) ++ ++ debian/dh_rmemptydirs -p$(p_ssp) ++ ++ dh_strip -p$(p_ssp) ++ dh_makeshlibs $(ldconfig_arg) -p$(p_ssp) -V '$(p_ssp) (>= $(DEB_SOVERSION))' ++ dh_shlibdeps -p$(p_ssp) ++ echo $(p_ssp) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-lib64ssp: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_ssp64) ++ dh_installdirs -p$(p_ssp64) \ ++ $(PF)/lib64 ++ $(dh_compat2) dh_movefiles -p$(p_ssp64) \ ++ $(PF)/lib64/libssp.so.* ++ ++ debian/dh_doclink -p$(p_ssp64) $(p_lbase) ++ ++ dh_strip -p$(p_ssp64) ++ dh_makeshlibs $(ldconfig_arg) -p$(p_ssp64) -V '$(p_ssp64) (>= $(DEB_SOVERSION))' ++# dh_shlibdeps -p$(p_ssp64) ++ echo $(p_ssp64) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-lib32ssp: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_ssp32) ++ dh_installdirs -p$(p_ssp32) \ ++ $(lib32) ++ $(dh_compat2) dh_movefiles -p$(p_ssp32) \ ++ $(lib32)/libssp.so.* ++ ++ debian/dh_doclink -p$(p_ssp32) $(p_lbase) ++ ++ dh_strip -p$(p_ssp32) ++ dh_makeshlibs $(ldconfig_arg) -p$(p_ssp32) -V '$(p_ssp32) (>= $(DEB_SOVERSION))' ++# dh_shlibdeps -p$(p_ssp32) ++ echo $(p_ssp32) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-libn32ssp: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_sspn32) ++ dh_installdirs -p$(p_sspn32) \ ++ $(PF)/$(libn32) ++ $(dh_compat2) dh_movefiles -p$(p_sspn32) \ ++ $(PF)/$(libn32)/libssp.so.* ++ ++ debian/dh_doclink -p$(p_sspn32) $(p_lbase) ++ ++ dh_strip -p$(p_sspn32) ++ dh_makeshlibs $(ldconfig_arg) -p$(p_sspn32) -V '$(p_sspn32) (>= $(DEB_SOVERSION))' ++# dh_shlibdeps -p$(p_sspn32) ++ echo $(p_sspn32) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-libx32ssp: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_sspx32) ++ dh_installdirs -p$(p_sspx32) \ ++ $(PF)/$(libx32) ++ $(dh_compat2) dh_movefiles -p$(p_sspx32) \ ++ $(PF)/$(libx32)/libssp.so.* ++ ++ debian/dh_doclink -p$(p_sspx32) $(p_lbase) ++ ++ dh_strip -p$(p_sspx32) ++ dh_makeshlibs $(ldconfig_arg) -p$(p_sspx32) -V '$(p_sspx32) (>= $(DEB_SOVERSION))' ++# dh_shlibdeps -p$(p_sspx32) ++ echo $(p_sspx32) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-libstdcxx.mk index 0000000,0000000..fd064c7 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libstdcxx.mk @@@ -1,0 -1,0 +1,523 @@@ ++ifeq ($(with_libcxx),yes) ++ $(lib_binaries) += libstdcxx ++endif ++ifeq ($(with_lib64cxx),yes) ++ $(lib_binaries) += lib64stdcxx ++endif ++ifeq ($(with_lib32cxx),yes) ++ $(lib_binaries) += lib32stdcxx ++endif ++ifeq ($(with_libn32cxx),yes) ++ $(lib_binaries) += libn32stdcxx ++endif ++ifeq ($(with_libx32cxx),yes) ++ $(lib_binaries) += libx32stdcxx ++endif ++ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifeq ($(with_lib64cxxdev),yes) ++ $(lib_binaries) += lib64stdcxx-dev ++ endif ++ ifeq ($(with_lib64cxxdbg),yes) ++ $(lib_binaries) += lib64stdcxxdbg ++ endif ++ ifeq ($(with_lib32cxxdev),yes) ++ $(lib_binaries) += lib32stdcxx-dev ++ endif ++ ifeq ($(with_lib32cxxdbg),yes) ++ $(lib_binaries) += lib32stdcxxdbg ++ endif ++ ifeq ($(with_libn32cxxdev),yes) ++ $(lib_binaries) += libn32stdcxx-dev ++ endif ++ ifeq ($(with_libn32cxxdbg),yes) ++ $(lib_binaries) += libn32stdcxxdbg ++ endif ++ ifeq ($(with_libx32cxxdev),yes) ++ $(lib_binaries) += libx32stdcxx-dev ++ endif ++ ifeq ($(with_libx32cxxdbg),yes) ++ $(lib_binaries) += libx32stdcxxdbg ++ endif ++ ++ ifeq ($(with_cxxdev),yes) ++ $(lib_binaries) += libstdcxx-dev ++ ifeq ($(with_libcxx_doc),yes) ++ ifneq ($(DEB_CROSS),yes) ++ indep_binaries := $(indep_binaries) libstdcxx-doc ++ endif ++ endif ++ endif ++endif ++ ++libstdc_ext = -$(BASE_VERSION) ++ ++p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) ++p_lib64 = lib64stdc++$(CXX_SONAME)$(cross_lib_arch) ++p_lib32 = lib32stdc++$(CXX_SONAME)$(cross_lib_arch) ++p_libn32= libn32stdc++$(CXX_SONAME)$(cross_lib_arch) ++p_libx32= libx32stdc++$(CXX_SONAME)$(cross_lib_arch) ++p_dev = libstdc++$(libstdc_ext)-dev$(cross_lib_arch) ++p_pic = libstdc++$(libstdc_ext)-pic$(cross_lib_arch) ++p_dbg = libstdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) ++p_dbg64 = lib64stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) ++p_dbg32 = lib32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) ++p_dbgn32= libn32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) ++p_dbgx32= libx32stdc++$(CXX_SONAME)$(libstdc_ext)-dbg$(cross_lib_arch) ++p_libd = libstdc++$(libstdc_ext)-doc ++ ++d_lib = debian/$(p_lib) ++d_lib64 = debian/$(p_lib64) ++d_lib32 = debian/$(p_lib32) ++d_libn32= debian/$(p_libn32) ++d_libx32= debian/$(p_libx32) ++d_dev = debian/$(p_dev) ++d_pic = debian/$(p_pic) ++d_dbg = debian/$(p_dbg) ++d_dbg64 = debian/$(p_dbg64) ++d_dbg32 = debian/$(p_dbg32) ++d_libd = debian/$(p_libd) ++ ++dirs_dev = \ ++ $(docdir)/$(p_base)/C++ \ ++ $(usr_lib) \ ++ $(gcc_lib_dir)/include \ ++ $(PFL)/include/c++ ++ ++files_dev = \ ++ $(PFL)/include/c++/$(BASE_VERSION) \ ++ $(gcc_lib_dir)/libstdc++.{a,so} \ ++ $(gcc_lib_dir)/libsupc++.a \ ++ $(gcc_lib_dir)/libstdc++fs.a \ ++ $(gcc_lib_dir)/libstdc++exp.a \ ++ $(gcc_lib_dir)/libstdc++.modules.json ++ ++ifeq ($(with_multiarch_cxxheaders),yes) ++ dirs_dev += \ ++ $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION) ++ files_dev += \ ++ $(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/{bits,ext} ++endif ++ ++dirs_dbg = \ ++ $(docdir) \ ++ $(PF)/lib/debug/$(usr_lib) \ ++ $(usr_lib)/debug \ ++ $(PF)/share/gdb/auto-load/$(usr_lib)/debug \ ++ $(gcc_lib_dir) ++files_dbg = \ ++ $(usr_lib)/debug/libstdc++.{a,so*} \ ++ $(usr_lib)/debug/libstdc++fs.a \ ++ $(usr_lib)/debug/libstdc++exp.a ++ ++dirs_pic = \ ++ $(docdir) \ ++ $(gcc_lib_dir) ++files_pic = \ ++ $(gcc_lib_dir)/libstdc++_pic.a ++ ++# ---------------------------------------------------------------------- ++ ++gxx_baseline_dir = $(shell \ ++ sed -n '/^baseline_dir *=/s,.*= *\(.*\)$$,\1,p' \ ++ $(buildlibdir)/libstdc++-v3/testsuite/Makefile) ++gxx_baseline_file = $(gxx_baseline_dir)/baseline_symbols.txt ++ ++debian/README.libstdc++-baseline: ++ : # save the results of the libstdc++ test run, overridden by check-abi ++ -tar -c -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++.tar \ ++ -C $(buildlibdir)/libstdc++-v3/testsuite libstdc++.{log,sum} ++ ++ cat debian/README.libstdc++-baseline.in \ ++ > debian/README.libstdc++-baseline ++ ++ baseline_name=`basename $(gxx_baseline_dir)`; \ ++ baseline_parentdir=`dirname $(gxx_baseline_dir)`; \ ++ compat_baseline_name=""; \ ++ if [ -f "$(gxx_baseline_file)" ]; then \ ++ ( \ ++ echo "A baseline file for $$baseline_name was found."; \ ++ echo "Running the check-abi script ..."; \ ++ echo ""; \ ++ $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite \ ++ check-abi; \ ++ ) | grep -Ev '^Test run by \S+ on .*$$' >> debian/README.libstdc++-baseline; \ ++ else \ ++ ( \ ++ echo "No baseline file found for $$baseline_name."; \ ++ echo "Generating a new baseline file ..."; \ ++ echo ""; \ ++ ) >> debian/README.libstdc++-baseline; \ ++ mkdir -p $(gxx_baseline_dir); \ ++ $(MAKE) -C $(buildlibdir)/libstdc++-v3/testsuite new-abi-baseline; \ ++ if [ -f $(gxx_baseline_file) ]; then \ ++ cat $(gxx_baseline_file); \ ++ else \ ++ cat $$(find $(buildlibdir)/libstdc++-v3 $(srcdir)/libstdc++-v3 -name '.new') || true; \ ++ fi | grep -Ev '^Test run by \S+ on .*$$' >> debian/README.libstdc++-baseline; \ ++ fi ++ ++ : # restore the results of the libstdc++ test run ++ -tar -x -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++.tar \ ++ -C $(buildlibdir)/libstdc++-v3/testsuite ++ ++# ---------------------------------------------------------------------- ++# FIXME: see #792204, libstdc++ symbols on sparc64, for now ignore errors ++# for the 32bit multilib build ++ ++define __do_libstdcxx ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ ++ dh_installdirs -p$(p_l) \ ++ $(docdir) \ ++ $(usr_lib$(2)) \ ++ $(PF)/share/gdb/auto-load/$(usr_lib$(2)) ++ ++ $(if $(DEB_CROSS),,$(if $(2),, ++ dh_installdirs -p$(p_l) \ ++ $(PF)/share/gcc/python ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(PF)/share/gcc/python/libstdcxx ++ )) ++ cp -p $(d)/$(usr_lib$(2))/libstdc++.so.*.py \ ++ $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/. ++ sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib$(2))'," \ ++ $(d_l)/$(PF)/share/gdb/auto-load/$(usr_lib$(2))/libstdc++.so.*.py ++ ++ cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ ++ $(d_l)/$(usr_lib$(2))/. ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ debian/dh_rmemptydirs -p$(p_l) ++ ++ $(if $(with_dbg), ++ dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbg-package=$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch)), ++ dh_strip -p$(p_l) $(if $(filter rtlibs,$(DEB_STAGE)),,--dbgsym-migration='$(1)-$(BASE_VERSION)-dbg$(cross_lib_arch) (<< $(v_dbg))') ++ ) ++ ln -sf libstdc++.symbols debian/$(p_l).symbols ++ $(if $(filter $(DEB_TARGET_ARCH), armel hppa sparc64), \ ++ -$(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ @echo "FIXME: libstdc++ not feature complete (https://gcc.gnu.org/ml/gcc/2014-07/msg00000.html)", \ ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ ) ++ ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++define __do_libstdcxx_dbg ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_d) ++ dh_installdirs -p$(p_d) \ ++ $(PF)/lib/debug/$(usr_lib$(2)) \ ++ $(usr_lib$(2)) ++ ++ $(if $(with_dbg), ++ $(if $(filter yes,$(with_lib$(2)cxx)), ++ cp -a $(d)/$(usr_lib$(2))/libstdc++.so.*[0-9] \ ++ $(d_d)/$(usr_lib$(2))/.; ++ dh_strip -p$(p_d) --keep-debug; ++ $(if $(filter yes,$(with_common_libs)),, # if !with_common_libs ++ # remove the debug symbols for libstdc++ ++ # built by a newer version of GCC ++ rm -rf $(d_d)/usr/lib/debug/$(PF); ++ ) ++ rm -f $(d_d)/$(usr_lib$(2))/libstdc++.so.*[0-9] ++ ) ++ ) ++ ++ $(if $(filter yes,$(with_cxx_debug)), ++ mkdir -p $(d_d)/$(usr_lib$(2))/debug; ++ mv $(d)/$(usr_lib$(2))/debug/libstdc++* $(d_d)/$(usr_lib$(2))/debug; ++ rm -f $(d_d)/$(usr_lib$(2))/debug/libstdc++_pic.a ++ ) ++ ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_d) \ ++ $(call shlibdirs_to_search,$(subst $(pkg_ver),,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l))),$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_d)) ++ ++ debian/dh_doclink -p$(p_d) $(p_lbase) ++ debian/dh_rmemptydirs -p$(p_d) ++ echo $(p_d) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++define __do_libstdcxx_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ mv $(d)/$(usr_lib$(2))/libsupc++.a \ ++ $(d)/$(gcc_lib_dir$(2))/ ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) $(gcc_lib_dir$(2)) ++ ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(gcc_lib_dir$(2))/libsupc++.a \ ++ $(if $(with_multiarch_cxxheaders),$(PF)/include/$(DEB_TARGET_MULTIARCH)/c++/$(BASE_VERSION)/$(2)) ++ $(call install_gcc_lib,libstdc++,$(CXX_SONAME),$(2),$(p_l)) ++ ++ $(if $(2),, ++ mv $(d)/$(usr_lib$(2))/libstdc++.modules.json \ ++ $(d_l)/$(gcc_lib_dir$(2))/ ++ sed -i '/source-path/s,\.\./include,/$(PF)/include,' \ ++ $(d_l)/$(gcc_lib_dir$(2))/libstdc++.modules.json ++ ) ++ ++ $(if $(filter yes, $(with_common_libs)),, ++ rm -f $(d_l)/$(gcc_lib_dir$(2))/libstdc++.so ++ cp -a $(d)/$(usr_lib$(2))/libstdc++.so.$(CXX_SONAME).*[0-9] \ ++ $(d_l)/$(gcc_lib_dir$(2))/libstdc++.so ++ ) ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ debian/dh_rmemptydirs -p$(p_l) ++ dh_strip -p$(p_l) ++ dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search,$(subst stdc++$(CXX_SONAME),gcc-s$(GCC_SONAME),$(p_l)),$(2)) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++do_libstdcxx = $(call __do_libstdcxx,lib$(1)stdc++$(CXX_SONAME),$(1)) ++do_libstdcxx_dbg = $(call __do_libstdcxx_dbg,lib$(1)stdc++$(CXX_SONAME)$(libstdc_ext),$(1)) ++do_libstdcxx_dev = $(call __do_libstdcxx_dev,lib$(1)stdc++-$(BASE_VERSION)-dev,$(1)) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-libstdcxx: $(install_stamp) ++ $(call do_libstdcxx,) ++ ++$(binary_stamp)-lib64stdcxx: $(install_stamp) ++ $(call do_libstdcxx,64) ++ ++$(binary_stamp)-lib32stdcxx: $(install_stamp) ++ $(call do_libstdcxx,32) ++ ++$(binary_stamp)-libn32stdcxx: $(install_stamp) ++ $(call do_libstdcxx,n32) ++ ++$(binary_stamp)-libx32stdcxx: $(install_stamp) ++ $(call do_libstdcxx,x32) ++ ++$(binary_stamp)-lib64stdcxxdbg: $(install_stamp) ++ $(call do_libstdcxx_dbg,64) ++ ++$(binary_stamp)-lib32stdcxxdbg: $(install_stamp) ++ $(call do_libstdcxx_dbg,32) ++ ++$(binary_stamp)-libn32stdcxxdbg: $(install_stamp) ++ $(call do_libstdcxx_dbg,n32) ++ ++$(binary_stamp)-libx32stdcxxdbg: $(install_stamp) ++ $(call do_libstdcxx_dbg,x32) ++ ++$(binary_stamp)-lib64stdcxx-dev: $(install_stamp) ++ $(call do_libstdcxx_dev,64) ++ ++$(binary_stamp)-lib32stdcxx-dev: $(install_stamp) ++ $(call do_libstdcxx_dev,32) ++ ++$(binary_stamp)-libn32stdcxx-dev: $(install_stamp) ++ $(call do_libstdcxx_dev,n32) ++ ++$(binary_stamp)-libx32stdcxx-dev: $(install_stamp) ++ $(call do_libstdcxx_dev,x32) ++ ++# ---------------------------------------------------------------------- ++libcxxdev_deps = $(install_stamp) ++ifeq ($(with_libcxx),yes) ++ libcxxdev_deps += $(binary_stamp)-libstdcxx ++endif ++ifeq ($(with_check),yes) ++ libcxxdev_deps += debian/README.libstdc++-baseline ++endif ++# FIXME: the -dev and -dbg packages are built twice ... ++$(binary_stamp)-libstdcxx-dev: $(libcxxdev_deps) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_dev) $(d_pic) ++ dh_installdirs -p$(p_dev) $(dirs_dev) ++ dh_installdirs -p$(p_pic) $(dirs_pic) ++ dh_installdirs -p$(p_dbg) $(dirs_dbg) ++ ++ : # - correct libstdc++-v3 file locations ++ mv $(d)/$(usr_lib)/libsupc++.a $(d)/$(gcc_lib_dir)/ ++ mv $(d)/$(usr_lib)/libstdc++fs.a $(d)/$(gcc_lib_dir)/ ++ mv $(d)/$(usr_lib)/libstdc++exp.a $(d)/$(gcc_lib_dir)/ ++ mv $(d)/$(usr_lib)/libstdc++.{a,so} $(d)/$(gcc_lib_dir)/ ++ ++ mv $(d)/$(usr_lib)/libstdc++.modules.json $(d)/$(gcc_lib_dir)/ ++ sed -i '/source-path/s,\.\./include,/$(PF)/include,' \ ++ $(d)/$(gcc_lib_dir)/libstdc++.modules.json ++ ++ : # FIXME: update libstdc++-pic patch ++# mv $(d)/$(usr_lib)/libstdc++_pic.a $(d)/$(gcc_lib_dir)/ ++ cp $(buildlibdir)/libstdc++-v3/src/.libs/libstdc++convenience.a \ ++ $(d)/$(gcc_lib_dir)/libstdc++_pic.a ++ ++ rm -f $(d)/$(usr_lib)/debug/libstdc++_pic.a ++ rm -f $(d)/$(usr_lib64)/debug/libstdc++_pic.a ++ ++ : # remove precompiled headers ++ -find $(d) -type d -name '*.gch' | xargs rm -rf ++ ++ for i in $(d)/$(PF)/include/c++/$(GCC_VERSION)/*-linux; do \ ++ if [ -d $$i ]; then mv $$i $$i-gnu; fi; \ ++ done ++ ++ $(dh_compat2) dh_movefiles -p$(p_dev) $(files_dev) ++ $(dh_compat2) dh_movefiles -p$(p_pic) $(files_pic) ++ifeq ($(with_cxx_debug),yes) ++ $(dh_compat2) dh_movefiles -p$(p_dbg) $(files_dbg) ++endif ++ ++ifeq ($(with_common_libs),yes) ++ dh_link -p$(p_dev) \ ++ /$(usr_lib)/libstdc++.so.$(CXX_SONAME) \ ++ /$(gcc_lib_dir)/libstdc++.so ++else ++ : # PR libstdc++/103382, install the library in the gcc_lib_dir ++ : # to link against the libstdc++ from this GCC version. ++ rm -f $(d_dev)/$(gcc_lib_dir)/libstdc++.so ++ cp -a $(d)/$(usr_lib$(2))/libstdc++.so.$(CXX_SONAME).*[0-9] \ ++ $(d_dev)/$(gcc_lib_dir)/libstdc++.so ++ ls -l $(d_dev)/$(gcc_lib_dir)/libstdc++.so ++endif ++ ++ debian/dh_doclink -p$(p_dev) $(p_lbase) ++ debian/dh_doclink -p$(p_pic) $(p_lbase) ++ debian/dh_doclink -p$(p_dbg) $(p_lbase) ++ cp -p $(srcdir)/libstdc++-v3/ChangeLog \ ++ $(d_dev)/$(docdir)/$(p_base)/C++/changelog.libstdc++ ++ifeq ($(with_check),yes) ++ cp -p debian/README.libstdc++-baseline \ ++ $(d_dev)/$(docdir)/$(p_base)/C++/README.libstdc++-baseline.$(DEB_TARGET_ARCH) ++ if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ ++ then \ ++ cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ ++ $(d_dev)/$(docdir)/$(p_base)/C++/libstdc++_symbols.txt.$(DEB_TARGET_ARCH); \ ++ fi ++endif ++ cp -p $(buildlibdir)/libstdc++-v3/src/libstdc++-symbols.ver \ ++ $(d_pic)/$(gcc_lib_dir)/libstdc++_pic.map ++ ++ cp -p $(d)/$(usr_lib)/libstdc++.so.*.py \ ++ $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/. ++ sed -i -e "/^libdir *=/s,=.*,= '/$(usr_lib)'," \ ++ $(d_dbg)/$(PF)/share/gdb/auto-load/$(usr_lib)/debug/libstdc++.so.*.py ++ ++ifeq ($(with_libcxx),yes) ++ ifeq ($(with_dbg),yes) ++ cp -a $(d)/$(usr_lib)/libstdc++.so.*[0-9] \ ++ $(d_dbg)/$(usr_lib)/ ++ dh_strip -p$(p_dbg) --keep-debug ++ rm -f $(d_dbg)/$(usr_lib)/libstdc++.so.*[0-9] ++ endif ++endif ++ $(call do_strip_lib_dbg, $(p_dev), $(p_dbg), $(v_dbg),,) ++ifneq ($(with_common_libs),yes) ++ : # remove the debug symbols for libstdc++ built by a newer version of GCC ++ rm -rf $(d_dbg)/usr/lib/debug/$(PF) ++endif ++ dh_strip -p$(p_pic) ++ ++ifeq ($(with_cxxdev),yes) ++ debian/dh_rmemptydirs -p$(p_dev) ++ debian/dh_rmemptydirs -p$(p_pic) ++ debian/dh_rmemptydirs -p$(p_dbg) ++endif ++ ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_dev) -p$(p_pic) -p$(p_dbg) \ ++ $(call shlibdirs_to_search,,) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_dbg)) ++ echo $(p_dev) $(p_pic) $(p_dbg) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++ ++doxygen_doc_dir = $(buildlibdir)/libstdc++-v3/doc ++ ++doxygen-docs: $(build_doxygen_stamp) ++$(build_doxygen_stamp): $(build_stamp) ++ $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-html-doxygen ++ $(MAKE) -C $(buildlibdir)/libstdc++-v3/doc SHELL=/bin/bash doc-man-doxygen ++ -find $(doxygen_doc_dir)/doxygen/html -name 'struct*' -empty | xargs rm -f ++ ++ touch $@ ++ ++$(binary_stamp)-libstdcxx-doc: $(install_stamp) doxygen-docs ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_libd) ++ dh_installdirs -p$(p_libd) \ ++ $(docdir)/$(p_base)/libstdc++ \ ++ $(PF)/share/man ++ ++# debian/dh_doclink -p$(p_libd) $(p_base) ++ dh_link -p$(p_libd) /usr/share/doc/$(p_base) /usr/share/doc/$(p_libd) ++ dh_installdocs -p$(p_libd) ++ rm -f $(d_libd)/$(docdir)/$(p_base)/copyright ++ ++ cp -a $(srcdir)/libstdc++-v3/doc/html/* \ ++ $(d_libd)/$(docdir)/$(p_base)/libstdc++/. ++ cp -a $(doxygen_doc_dir)/doxygen/html \ ++ $(d_libd)/$(docdir)/$(p_base)/libstdc++/user ++ find $(d_libd)/$(docdir)/$(p_base)/libstdc++ -name '*.md5' \ ++ | xargs -r rm -f ++ ++# Broken docs ... see #766499 ++# rm -f $(d_libd)/$(docdir)/$(p_base)/libstdc++/*/jquery.js ++# dh_link -p$(p_libd) \ ++# /usr/share/javascript/jquery/jquery.js \ ++# /$(docdir)/$(p_base)/libstdc++/html/jquery.js \ ++# /usr/share/javascript/jquery/jquery.js \ ++# /$(docdir)/$(p_base)/libstdc++/user/jquery.js ++ ++ : FIXME: depending on the doxygen version ++ if [ -d $(doxygen_doc_dir)/doxygen/man/man3cxx ]; then \ ++ cp -a $(doxygen_doc_dir)/doxygen/man/man3cxx \ ++ $(d_libd)/$(PF)/share/man/man3; \ ++ if [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ ++ cp -a $(doxygen_doc_dir)/doxygen/man/man3/* \ ++ $(d_libd)/$(PF)/share/man/man3/; \ ++ fi; \ ++ elif [ -d $(doxygen_doc_dir)/doxygen/man/man3 ]; then \ ++ cp -a $(doxygen_doc_dir)/doxygen/man/man3 \ ++ $(d_libd)/$(PF)/share/man/man3; \ ++ fi ++ ++ for i in $(d_libd)/$(PF)/share/man/man3/*.3; do \ ++ [ -f $${i} ] || continue; \ ++ mv $${i} $${i}cxx; \ ++ done ++ rm -f $(d_libd)/$(PF)/share/man/man3/todo.3* ++ ++ mkdir -p $(d_libd)/usr/share/lintian/overrides ++ cp -p debian/$(p_libd).overrides \ ++ $(d_libd)/usr/share/lintian/overrides/$(p_libd) ++ ++ echo $(p_libd) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-libtsan.mk index 0000000,0000000..f1158d4 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libtsan.mk @@@ -1,0 -1,0 +1,70 @@@ ++$(lib_binaries) += libtsan ++ifeq (0,1) ++ifeq ($(with_lib64tsan),yes) ++ $(lib_binaries) += lib64tsan ++endif ++ifeq ($(with_lib32tsan),yes) ++ $(lib_binaries) += lib32tsan ++endif ++ifeq ($(with_libn32tsan),yes) ++ $(lib_binaries) += libn32tsan ++endif ++ifeq ($(with_libx32tsan),yes) ++ $(lib_binaries) += libx32tsan ++endif ++endif ++ ++define __do_tsan ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(usr_lib$(2))/libtsan.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ if [ -f debian/$(p_l).overrides ]; then \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ ++ fi ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides ++ echo "$(p_l): unstripped-binary-or-object" \ ++ >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) ++ ++ $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst tsan$(TSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst tsan$(TSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_tsan = $(call __do_tsan,lib$(1)tsan$(TSAN_SONAME),$(1)) ++ ++$(binary_stamp)-libtsan: $(install_stamp) ++ $(call do_tsan,) ++ ++$(binary_stamp)-lib64tsan: $(install_stamp) ++ $(call do_tsan,64) ++ ++$(binary_stamp)-lib32tsan: $(install_stamp) ++ $(call do_tsan,32) ++ ++$(binary_stamp)-libn32tsan: $(install_stamp) ++ $(call do_tsan,n32) ++ ++$(binary_stamp)-libx32tsan: $(install_stamp) ++ $(call do_tsan,x32) diff --cc debian/rules.d/binary-libubsan.mk index 0000000,0000000..342b5a7 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libubsan.mk @@@ -1,0 -1,0 +1,67 @@@ ++$(lib_binaries) += libubsan ++ifeq ($(with_lib64ubsan),yes) ++ $(lib_binaries) += lib64ubsan ++endif ++ifeq ($(with_lib32ubsan),yes) ++ $(lib_binaries) += lib32ubsan ++endif ++ifeq ($(with_libn32ubsan),yes) ++ $(lib_binaries) += libn32ubsan ++endif ++ifeq ($(with_libx32ubsan),yes) ++ $(lib_binaries) += libx32ubsan ++endif ++ ++define __do_ubsan ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libubsan.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ if [ -f debian/$(p_l).overrides ]; then \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ ++ fi ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides ++ echo "$(p_l): unstripped-binary-or-object" \ ++ >> debian/$(p_l)/usr/share/lintian/overrides/$(p_l) ++ ++ $(if $(strip_sanitizer), $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,)) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst ubsan$(UBSAN_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst ubsan$(UBSAN_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_ubsan = $(call __do_ubsan,lib$(1)ubsan$(UBSAN_SONAME),$(1)) ++ ++$(binary_stamp)-libubsan: $(install_stamp) ++ $(call do_ubsan,) ++ ++$(binary_stamp)-lib64ubsan: $(install_stamp) ++ $(call do_ubsan,64) ++ ++$(binary_stamp)-lib32ubsan: $(install_stamp) ++ $(call do_ubsan,32) ++ ++$(binary_stamp)-libn32ubsan: $(install_stamp) ++ $(call do_ubsan,n32) ++ ++$(binary_stamp)-libx32ubsan: $(install_stamp) ++ $(call do_ubsan,x32) diff --cc debian/rules.d/binary-libvtv.mk index 0000000,0000000..5e61003 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-libvtv.mk @@@ -1,0 -1,0 +1,64 @@@ ++$(lib_binaries) += libvtv ++ifeq ($(with_lib64vtv),yes) ++ $(lib_binaries) += lib64vtv ++endif ++ifeq ($(with_lib32vtv),yes) ++ $(lib_binaries) += lib32vtv ++endif ++ifeq ($(with_libn32vtv),yes) ++ $(lib_binaries) += libn32vtv ++endif ++ifeq ($(with_libx32vtv),yes) ++ $(lib_binaries) += libx32vtv ++endif ++ ++define __do_vtv ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) $(usr_lib$(2))/libvtv.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ if [ -f debian/$(p_l).overrides ]; then \ ++ mkdir -p debian/$(p_l)/usr/share/lintian/overrides; \ ++ cp debian/$(p_l).overrides debian/$(p_l)/usr/share/lintian/overrides/$(p_l); \ ++ fi ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst vtv$(VTV_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ $(subst vtv$(VTV_SONAME),stdc++$(CXX_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# ---------------------------------------------------------------------- ++ ++do_vtv = $(call __do_vtv,lib$(1)vtv$(VTV_SONAME),$(1)) ++ ++$(binary_stamp)-libvtv: $(install_stamp) ++ $(call do_vtv,) ++ ++$(binary_stamp)-lib64vtv: $(install_stamp) ++ $(call do_vtv,64) ++ ++$(binary_stamp)-lib32vtv: $(install_stamp) ++ $(call do_vtv,32) ++ ++$(binary_stamp)-libn32vtv: $(install_stamp) ++ $(call do_vtv,n32) ++ ++$(binary_stamp)-libx32vtv: $(install_stamp) ++ $(call do_vtv,x32) diff --cc debian/rules.d/binary-m2.mk index 0000000,0000000..0e68e16 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-m2.mk @@@ -1,0 -1,0 +1,325 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifeq (0,1) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) gm2-multi ++ endif ++ endif ++ arch_binaries := $(arch_binaries) gm2-nat gm2-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) gm2 ++ indep_binaries := $(indep_binaries) gm2-build ++ endif ++ ++ ifeq ($(with_m2dev),yes) ++ $(lib_binaries) += libgm2-dev ++ endif ++ ifeq ($(with_libgm2),yes) ++ $(lib_binaries) += libgm2 ++ endif ++ ++ ifneq ($(DEB_CROSS),yes) ++ indep_binaries := $(indep_binaries) gm2-doc ++ endif ++ ++ ifeq (0,1) ++ ifeq ($(with_lib64gm2dev),yes) ++ $(lib_binaries) += lib64gm2-dev ++ endif ++ ifeq ($(with_lib32gm2dev),yes) ++ $(lib_binaries) += lib32gm2-dev ++ endif ++ ifeq ($(with_libn32gm2dev),yes) ++ $(lib_binaries) += libn32gm2-dev ++ endif ++ ifeq ($(with_libx32gm2dev),yes) ++ $(lib_binaries) += libx32gm2-dev ++ endif ++ ++ ifeq ($(with_lib64gm2),yes) ++ $(lib_binaries) += lib64gm2 ++ endif ++ ifeq ($(with_lib32gm2),yes) ++ $(lib_binaries) += lib32gm2 ++ endif ++ ifeq ($(with_libn32gm2),yes) ++ $(lib_binaries) += libn32gm2 ++ endif ++ ifeq ($(with_libx32gm2),yes) ++ $(lib_binaries) += libx32gm2 ++ endif ++ endif ++endif ++ ++p_gm2_n = gm2$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_gm2_h = gm2$(pkg_ver)-for-host ++p_gm2_b = gm2$(pkg_ver)-for-build ++p_gm2 = gm2$(pkg_ver) ++p_gm2_m = gm2$(pkg_ver)-multilib$(cross_bin_arch) ++p_libgm2 = libgm2-$(GM2_SONAME) ++p_libgm2dev = libgm2$(pkg_ver)-dev ++p_gm2d = gm2$(pkg_ver)-doc ++ ++d_gm2_n = debian/$(p_gm2_n) ++d_gm2_h = debian/$(p_gm2_h) ++d_gm2_b = debian/$(p_gm2_b) ++d_gm2 = debian/$(p_gm2) ++d_gm2_m = debian/$(p_gm2_m) ++d_libgm2 = debian/$(p_libgm2) ++d_libgm2dev = debian/$(p_libgm2dev) ++d_gm2d = debian/$(p_gm2d) ++ ++dirs_gm2_n = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ $(gcc_lexec_dir) \ ++ $(gcc_lib_dir)/plugin \ ++ usr/share/lintian/overrides ++#ifneq ($(DEB_CROSS),yes) ++# dirs_gm2_n += \ ++# $(gm2_include_dir) ++#endif ++ ++dirs_gm2 = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 ++ ++files_gm2_n = \ ++ $(PF)/bin/$(cmd_prefix)gm2$(pkg_ver) \ ++ $(gcc_lib_dir)/plugin/m2rte.so \ ++ $(gcc_lexec_dir)/cc1gm2 ++ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) ++ files_gm2_n += \ ++ $(PF)/share/man/man1/$(cmd_prefix)gm2$(pkg_ver).1 ++endif ++ ++dirs_libgm2 = \ ++ $(PF)/lib \ ++ $(gm2_include_dir) \ ++ $(gcc_lib_dir) ++ ++$(binary_stamp)-gm2-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gm2_n) ++ dh_installdirs -p$(p_gm2_n) $(dirs_gm2_n) ++ ++ $(dh_compat2) dh_movefiles -p$(p_gm2_n) $(files_gm2_n) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_gm2_n)/$(gcc_lexec_dir)/cc1gm2 ++endif ++ dh_strip -p$(p_gm2_n) \ ++ $(if $(unstripped_exe),-X/cc1gm2 -X/gm2) ++ dh_shlibdeps -p$(p_gm2_n) ++ ++ mkdir -p $(d_gm2_n)/usr/share/lintian/overrides ++ echo '$(p_gm2_n) binary: hardening-no-pie' \ ++ > $(d_gm2_n)/usr/share/lintian/overrides/$(p_gm2_n) ++ ++ debian/dh_doclink -p$(p_gm2_n) $(p_xbase) ++ ++ echo $(p_gm2_n) >> debian/arch_binaries ++ ++ find $(d_gm2_n) -type d -empty -delete ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gm2-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gm2_h) ++ debian/dh_doclink -p$(p_gm2_h) $(p_xbase) ++ echo $(p_gm2_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gm2-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_gm2_b) ++ debian/dh_doclink -p$(p_gm2_b) $(p_cpp_b) ++ echo $(p_gm2_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gm2: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gm2) ++ dh_installdirs -p$(p_gm2) $(dirs_gm2) ++ ++ dh_installdocs -p$(p_gm2) ++ dh_installchangelogs -p$(p_gm2) src/gcc/m2/ChangeLog ++ ++ ln -sf $(cmd_prefix)gm2$(pkg_ver) \ ++ $(d_gm2)/$(PF)/bin/gm2$(pkg_ver) ++ifneq ($(GFDL_INVARIANT_FREE),yes-now-pure-gfdl) ++ ln -sf $(cmd_prefix)gm2$(pkg_ver).1.gz \ ++ $(d_gm2)/$(PF)/share/man/man1/gm2$(pkg_ver).1.gz ++endif ++ dh_link -p$(p_gm2) \ ++ /$(docdir)/$(p_xbase)/README.Bugs \ ++ /$(docdir)/$(p_gm2)/README.Bugs ++ ++ echo $(p_gm2) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-gm2-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gm2_m) ++ dh_installdirs -p$(p_gm2_m) $(docdir) ++ ++ debian/dh_doclink -p$(p_gm2_m) $(p_xbase) ++ ++ dh_strip -p$(p_gm2_m) ++ dh_shlibdeps -p$(p_gm2_m) ++ echo $(p_gm2_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++define __do_libgm2 ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) \ ++ $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(usr_lib$(2))/libm2pim.so.* \ ++ $(usr_lib$(2))/libm2cor.so.* \ ++ $(usr_lib$(2))/libm2iso.so.* \ ++ $(usr_lib$(2))/libm2log.so.* \ ++ $(usr_lib$(2))/libm2min.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ : ln -sf libgm2.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) ++ rm -f debian/$(p_l).symbols ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst gm2-$(GM2_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ ++ mkdir -p $(d_l)/usr/share/lintian/overrides; \ ++ ( \ ++ echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ ++ echo "$(p_l) binary: shared-lib-without-dependency-information"; \ ++ echo "$(p_l) binary: package-name-doesnt-match-sonames"; \ ++ ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) ++ ++ dh_lintian -p$(p_l) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# install_gm2_lib(lib,soname,flavour,package,subdir) ++define install_gm2_lib ++ dh_link -p$(4) \ ++ /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so \ ++ /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so ++ mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3)) ++ rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} ++endef ++ ++define __do_libgm2_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) \ ++ $(gcc_lib_dir$(2)) ++ ++ : # install_gm2_lib calls needed? ++ ++ $(if $(2),, ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(gcc_lib_dir)/m2 ++ ) ++ ++ $(call install_gm2_lib,libm2pim,$(GM2_SONAME),$(2),$(p_l),m2/m2pim) ++ $(call install_gm2_lib,libm2cor,$(GM2_SONAME),$(2),$(p_l),m2/m2cor) ++ $(call install_gm2_lib,libm2iso,$(GM2_SONAME),$(2),$(p_l),m2/m2iso) ++ $(call install_gm2_lib,libm2log,$(GM2_SONAME),$(2),$(p_l),m2/m2log) ++ $(call install_gm2_lib,libm2min,$(GM2_SONAME),$(2),$(p_l),m2/m2min) ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++do_libgm2 = $(call __do_libgm2,lib$(1)gm2-$(GM2_SONAME),$(1)) ++do_libgm2_dev = $(call __do_libgm2_dev,lib$(1)gm2-$(BASE_VERSION)-dev,$(1)) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-gm2-doc: $(build_html_stamp) $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_gm2d) ++ dh_installdirs -p$(p_gm2d) \ ++ $(docdir)/$(p_gm2) \ ++ $(docdir)/$(p_xbase)/m2 \ ++ $(PF)/share/info ++ cp -p $(builddir)/gcc/doc/m2.info $(d_gm2d)/$(PF)/share/info/gm2-$(BASE_VERSION).info ++ cp -p html/gm2.html $(d_gm2d)/$(docdir)/$(p_xbase)/m2/gm2-$(BASE_VERSION).html ++ ln -sf ../$(p_xbase)/m2/gm2-$(BASE_VERSION).html $(d_gm2d)/$(docdir)/$(p_gm2)/gm2-$(BASE_VERSION).html ++ ++ debian/dh_doclink -p$(p_gm2d) $(p_xbase) ++ dh_installdocs -p$(p_gm2d) ++ rm -f $(d_gm2d)/$(docdir)/$(p_xbase)/copyright ++ ++ echo $(p_gm2d) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++ ++$(binary_stamp)-libgm2: $(install_stamp) ++ $(call do_libgm2,) ++ ++$(binary_stamp)-lib64gm2: $(install_stamp) ++ $(call do_libgm2,64) ++ ++$(binary_stamp)-lib32gm2: $(install_stamp) ++ $(call do_libgm2,32) ++ ++$(binary_stamp)-libn32gm2: $(install_stamp) ++ $(call do_libgm2,n32) ++ ++$(binary_stamp)-libx32gm2: $(install_stamp) ++ $(call do_libgm2,x32) ++ ++ ++$(binary_stamp)-libgm2-dev: $(install_stamp) ++ $(call do_libgm2_dev,) ++ ++$(binary_stamp)-lib64gm2-dev: $(install_stamp) ++ $(call do_libgm2_dev,64) ++ ++$(binary_stamp)-lib32gm2-dev: $(install_stamp) ++ $(call do_libgm2_dev,32) ++ ++$(binary_stamp)-libx32gm2-dev: $(install_stamp) ++ $(call do_libgm2_dev,x32) ++ ++$(binary_stamp)-libn32gm2-dev: $(install_stamp) ++ $(call do_libgm2_dev,n32) diff --cc debian/rules.d/binary-nof.mk index 0000000,0000000..fa5408a new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-nof.mk @@@ -1,0 -1,0 +1,51 @@@ ++arch_binaries := $(arch_binaries) nof ++ ++p_nof = gcc$(pkg_ver)-nof ++d_nof = debian/$(p_nof) ++ ++dirs_nof = \ ++ $(docdir) \ ++ $(usr_lib)/nof ++ifeq ($(with_cdev),yes) ++ dirs_nof += \ ++ $(gcc_lib_dir)/nof ++endif ++ ++ifeq ($(with_cdev),yes) ++ files_nof = \ ++ $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ ++ $(gcc_lib_dir)/libgcc_s_nof.so \ ++ $(usr_lib)/nof \ ++ $(gcc_lib_dir)/nof ++else ++ files_nof = \ ++ $(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) ++endif ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-nof: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ mv $(d)/$(usr_lib)/libgcc_s_nof.so.$(GCC_SONAME) $(d)/$(libgcc_dir)/. ++ rm -f $(d)/$(usr_lib)/libgcc_s_nof.so ++ ln -sf $(libgcc_dir)/libgcc_s_nof.so.$(GCC_SONAME) \ ++ $(d)/$(gcc_lib_dir)/libgcc_s_nof.so ++ ++ rm -rf $(d_nof) ++ dh_installdirs -p$(p_nof) $(dirs_nof) ++ $(dh_compat2) dh_movefiles -p$(p_nof) $(files_nof) ++ debian/dh_doclink -p$(p_nof) $(p_xbase) ++ dh_strip -p$(p_nof) ++ dh_shlibdeps -p$(p_nof) ++ ++ dh_makeshlibs $(ldconfig_arg) -p$(p_nof) ++ : # Only keep the shlibs file for the libgcc_s_nof library ++ fgrep libgcc_s_nof debian/$(p_nof)/DEBIAN/shlibs \ ++ > debian/$(p_nof)/DEBIAN/shlibs.tmp ++ mv -f debian/$(p_nof)/DEBIAN/shlibs.tmp debian/$(p_nof)/DEBIAN/shlibs ++ ++ echo $(p_nof) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-nvptx.mk index 0000000,0000000..3bb4726 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-nvptx.mk @@@ -1,0 -1,0 +1,99 @@@ ++ifeq ($(with_offload_nvptx),yes) ++ arch_binaries := $(arch_binaries) nvptx ++ ifeq ($(with_common_libs),yes) ++ arch_binaries := $(arch_binaries) nvptx-plugin ++ endif ++endif ++ ++p_nvptx = gcc$(pkg_ver)-offload-nvptx ++d_nvptx = debian/$(p_nvptx) ++ ++p_pl_nvptx = libgomp-plugin-nvptx1 ++d_pl_nvptx = debian/$(p_pl_nvptx) ++ ++dirs_nvptx = \ ++ $(docdir)/$(p_xbase)/ \ ++ $(PF)/bin \ ++ $(gcc_lib_dir)/accel \ ++ $(gcc_lexec_dir)/accel ++ ++files_nvptx = \ ++ $(PF)/bin/$(DEB_TARGET_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver) \ ++ $(gcc_lib_dir)/accel/nvptx-none \ ++ $(gcc_lexec_dir)/accel/nvptx-none ++ ++# not needed: libs moved, headers not needed for lto1 ++# $(PF)/nvptx-none ++ ++# are these needed? ++# $(PF)/lib/gcc/nvptx-none/$(versiondir)/{include,finclude,mgomp} ++ ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ files_nvptx += \ ++ $(PF)/share/man/man1/$(DEB_HOST_GNU_TYPE)-accel-nvptx-none-gcc$(pkg_ver).1 ++endif ++ ++$(binary_stamp)-nvptx: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_nvptx) ++ dh_installdirs -p$(p_nvptx) $(dirs_nvptx) ++ tar -c -C $(d)-nvptx -f - $(files_nvptx) \ ++ | tar -x -v -C $(d_nvptx) -f - ++ ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_nvptx) \ ++ /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ ++ /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ ++ /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ ++ /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib ++ ++ mkdir -p $(d_nvptx)/usr/share/lintian/overrides ++ ( \ ++ echo '$(p_nvptx) binary: hardening-no-pie'; \ ++ echo '$(p_nvptx) binary: no-code-sections' \ ++ ) > $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ echo '$(p_nvptx) binary: binary-without-manpage' \ ++ >> $(d_nvptx)/usr/share/lintian/overrides/$(p_nvptx) ++endif ++ ++ debian/dh_doclink -p$(p_nvptx) $(p_xbase) ++ ++ debian/dh_rmemptydirs -p$(p_nvptx) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_nvptx)/$(gcc_lexec_dir)/accel/nvptx-none/{collect2,lto1,lto-wrapper,mkoffload} ++endif ++ dh_strip -p$(p_nvptx) \ ++ $(if $(unstripped_exe),-X/lto1) ++ dh_shlibdeps -p$(p_nvptx) ++ echo $(p_nvptx) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-nvptx-plugin: $(install_dependencies) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_pl_nvptx) ++ dh_installdirs -p$(p_pl_nvptx) \ ++ $(docdir) \ ++ $(usr_lib) ++ $(dh_compat2) dh_movefiles -p$(p_pl_nvptx) \ ++ $(usr_lib)/libgomp-plugin-nvptx.so.* ++ ++ debian/dh_doclink -p$(p_pl_nvptx) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_pl_nvptx) ++ ++ dh_strip -p$(p_pl_nvptx) ++ dh_makeshlibs -p$(p_pl_nvptx) ++ dh_shlibdeps -p$(p_pl_nvptx) ++ echo $(p_pl_nvptx) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-objc.mk index 0000000,0000000..e476a33 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-objc.mk @@@ -1,0 -1,0 +1,118 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) objc-multi ++ endif ++ arch_binaries := $(arch_binaries) objc-nat objc-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) objc ++ indep_binaries := $(indep_binaries) objc-build ++ endif ++endif ++ ++p_objc_n = gobjc$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++d_objc_n = debian/$(p_objc_n) ++ ++p_objc_h = gobjc$(pkg_ver)-for-host ++d_objc_h = debian/$(p_objc_h) ++ ++p_objc_b = gobjc$(pkg_ver)-for-build ++d_objc_b = debian/$(p_objc_b) ++ ++p_objc = gobjc$(pkg_ver) ++d_objc = debian/$(p_objc) ++ ++p_objc_m= gobjc$(pkg_ver)-multilib$(cross_bin_arch) ++d_objc_m= debian/$(p_objc_m) ++ ++dirs_objc_n = \ ++ $(gcc_lexec_dir) \ ++ usr/share/lintian/overrides ++ ++dirs_objc = \ ++ $(docdir)/$(p_xbase)/ObjC ++ ++files_objc_n = \ ++ $(gcc_lexec_dir)/cc1obj ++ ++$(binary_stamp)-objc-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_objc_n) ++ dh_installdirs -p$(p_objc_n) $(dirs_objc_n) ++ $(dh_compat2) dh_movefiles -p$(p_objc_n) $(files_objc_n) ++ ++ echo '$(p_objc_n) binary: hardening-no-pie' \ ++ > $(d_objc_n)/usr/share/lintian/overrides/$(p_objc_n) ++ ++ debian/dh_doclink -p$(p_objc_n) $(p_xbase) ++ ++ debian/dh_rmemptydirs -p$(p_objc_n) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_objc_n)/$(gcc_lexec_dir)/cc1obj ++endif ++ dh_strip -p$(p_objc_n) \ ++ $(if $(unstripped_exe),-X/cc1obj) ++ dh_shlibdeps -p$(p_objc_n) ++ echo $(p_objc_n) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-objc-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_objc_h) ++ debian/dh_doclink -p$(p_objc_h) $(p_xbase) ++ echo $(p_objc_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-objc-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_objc_b) ++ debian/dh_doclink -p$(p_objc_b) $(p_cpp_b) ++ echo $(p_objc_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-objc: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_objc) ++ dh_installdirs -p$(p_objc) $(dirs_objc) ++ ++ cp -p $(srcdir)/libobjc/{README*,THREADS*} \ ++ $(d_objc)/$(docdir)/$(p_xbase)/ObjC/. ++ ++ cp -p $(srcdir)/libobjc/ChangeLog \ ++ $(d_objc)/$(docdir)/$(p_xbase)/ObjC/changelog.libobjc ++ ++ debian/dh_doclink -p$(p_objc) $(p_xbase) ++ ++ debian/dh_rmemptydirs -p$(p_objc) ++ ++ echo $(p_objc) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-objc-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_objc_m) ++ dh_installdirs -p$(p_objc_m) $(docdir) ++ ++ debian/dh_doclink -p$(p_objc_m) $(p_xbase) ++ ++ dh_strip -p$(p_objc_m) ++ dh_shlibdeps -p$(p_objc_m) ++ echo $(p_objc_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-objcxx.mk index 0000000,0000000..b96ec33 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-objcxx.mk @@@ -1,0 -1,0 +1,111 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32) $(biarchx32))) ++ arch_binaries := $(arch_binaries) objcxx-multi ++ endif ++ arch_binaries := $(arch_binaries) objcxx-nat objcxx-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) objcxx ++ indep_binaries := $(indep_binaries) objcxx-build ++ endif ++endif ++ ++p_objcx_n = gobjc++$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++d_objcx_n = debian/$(p_objcx_n) ++ ++p_objcx_h = gobjc++$(pkg_ver)-for-host ++d_objcx_h = debian/$(p_objcx_h) ++ ++p_objcx_b = gobjc++$(pkg_ver)-for-build ++d_objcx_b = debian/$(p_objcx_b) ++ ++p_objcx = gobjc++$(pkg_ver) ++d_objcx = debian/$(p_objcx) ++ ++p_objcx_m = gobjc++$(pkg_ver)-multilib$(cross_bin_arch) ++d_objcx_m = debian/$(p_objcx_m) ++ ++dirs_objcx_n = \ ++ $(gcc_lexec_dir) \ ++ usr/share/lintian/overrides ++ ++dirs_objcx = \ ++ $(docdir)/$(p_xbase)/Obj-C++ \ ++ ++files_objcx_n = \ ++ $(gcc_lexec_dir)/cc1objplus ++ ++$(binary_stamp)-objcxx-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_objcx_n) ++ dh_installdirs -p$(p_objcx_n) $(dirs_objcx_n) ++ $(dh_compat2) dh_movefiles -p$(p_objcx_n) $(files_objcx_n) ++ ++ debian/dh_doclink -p$(p_objcx_n) $(p_xbase) ++ ++ echo '$(p_objcx_n) binary: hardening-no-pie' \ ++ > $(d_objcx_n)/usr/share/lintian/overrides/$(p_objcx_n) ++ ++ debian/dh_rmemptydirs -p$(p_objcx_n) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_objcx_n)/$(gcc_lexec_dir)/cc1objplus ++endif ++ dh_strip -p$(p_objcx_n) \ ++ $(if $(unstripped_exe),-X/cc1objplus) ++ dh_shlibdeps -p$(p_objcx_n) ++ echo $(p_objcx_n) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-objcxx-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_objcx_h) ++ debian/dh_doclink -p$(p_objcx_h) $(p_xbase) ++ echo $(p_objcx_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-objcxx-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_objcx_b) ++ debian/dh_doclink -p$(p_objcx_b) $(p_cpp_b) ++ echo $(p_objcx_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-objcxx: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_objcx) ++ dh_installdirs -p$(p_objcx) $(dirs_objcx) ++ ++ debian/dh_doclink -p$(p_objcx) $(p_xbase) ++ cp -p $(srcdir)/gcc/objcp/ChangeLog \ ++ $(d_objcx)/$(docdir)/$(p_xbase)/Obj-C++/changelog ++ ++ debian/dh_rmemptydirs -p$(p_objcx) ++ ++ echo $(p_objcx) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-objcxx-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_objcx_m) ++ debian/dh_doclink -p$(p_objcx_m) $(p_xbase) ++ debian/dh_rmemptydirs -p$(p_objcx_m) ++ dh_strip -p$(p_objcx_m) ++ dh_shlibdeps -p$(p_objcx_m) ++ echo $(p_objcx_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-rust.mk index 0000000,0000000..4710aad new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-rust.mk @@@ -1,0 -1,0 +1,336 @@@ ++ifneq ($(DEB_STAGE),rtlibs) ++ ifeq (0,1) ++ #ifneq (,$(filter yes, $(biarch64) $(biarch32) $(biarchn32))) ++ # arch_binaries := $(arch_binaries) grs-multi ++ #endif ++ endif ++ arch_binaries := $(arch_binaries) grs-nat grs-host ++ ifeq ($(unprefixed_names),yes) ++ arch_binaries := $(arch_binaries) grs ++ indep_binaries := $(indep_binaries) grs-build ++ endif ++ ++ #ifeq ($(with_rsdev),yes) ++ # $(lib_binaries) += libgrs-dev ++ #endif ++ #ifeq ($(with_libgrs),yes) ++ # $(lib_binaries) += libgrs ++ #endif ++ ++ #ifneq ($(DEB_CROSS),yes) ++ # indep_binaries := $(indep_binaries) grs-doc ++ #endif ++ ++ ifeq (0,1) ++ ifeq ($(with_lib64grsdev),yes) ++ $(lib_binaries) += lib64grs-dev ++ endif ++ ifeq ($(with_lib32grsdev),yes) ++ $(lib_binaries) += lib32grs-dev ++ endif ++ ifeq ($(with_libn32grsdev),yes) ++ $(lib_binaries) += libn32grs-dev ++ endif ++ ifeq ($(with_libx32grsdev),yes) ++ $(lib_binaries) += libx32grs-dev ++ endif ++ ++ ifeq ($(with_lib64grs),yes) ++ $(lib_binaries) += lib64grs ++ endif ++ ifeq ($(with_lib32grs),yes) ++ $(lib_binaries) += lib32grs ++ endif ++ ifeq ($(with_libn32grs),yes) ++ $(lib_binaries) += libn32grs ++ endif ++ ifeq ($(with_libx32grs),yes) ++ $(lib_binaries) += libx32grs ++ endif ++ endif ++endif ++ ++p_grs_n = gccrs$(pkg_ver)-$(subst _,-,$(TARGET_ALIAS)) ++p_grs_h = gccrs$(pkg_ver)-for-host ++p_grs_b = gccrs$(pkg_ver)-for-build ++p_grs = gccrs$(pkg_ver) ++p_grs_m = gccrs$(pkg_ver)-multilib$(cross_bin_arch) ++p_libgrs = libgrs-$(GRS_SONAME) ++p_libgrsdev = libgrs$(pkg_ver)-dev ++p_grsd = grs$(pkg_ver)-doc ++ ++d_grs_n = debian/$(p_grs_n) ++d_grs_h = debian/$(p_grs_h) ++d_grs_b = debian/$(p_grs_b) ++d_grs = debian/$(p_grs) ++d_grs_m = debian/$(p_grs_m) ++d_libgrs = debian/$(p_libgrs) ++d_libgrsdev = debian/$(p_libgrsdev) ++d_grsd = debian/$(p_grsd) ++ ++dirs_grs_n = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 \ ++ $(gcc_lexec_dir) \ ++ usr/share/lintian/overrides ++ ++dirs_grs = \ ++ $(PF)/bin \ ++ $(PF)/share/man/man1 ++#ifneq ($(DEB_CROSS),yes) ++# dirs_grs += \ ++# $(grs_include_dir) ++#endif ++ ++files_grs_n = \ ++ $(PF)/bin/$(cmd_prefix)gccrs$(pkg_ver) \ ++ $(gcc_lexec_dir)/crab1 ++ ++# files_grs_n += \ ++# $(PF)/share/man/man1/$(cmd_prefix)gccrs$(pkg_ver).1 ++ ++dirs_libgrs = \ ++ $(PF)/lib \ ++ $(grs_include_dir) \ ++ $(gcc_lib_dir) ++ ++$(binary_stamp)-grs-nat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_grs_n) ++ dh_installdirs -p$(p_grs_n) $(dirs_grs_n) ++ ++ $(dh_compat2) dh_movefiles -p$(p_grs_n) $(files_grs_n) ++ ++ dh_installdirs -p$(p_grs_n) ++ debian/dh_doclink -p$(p_grs_n) $(p_xbase) ++ ++ifeq (,$(findstring nostrip,$(DEB_BUILD_OPTONS))) ++ $(DWZ) \ ++ $(d_grs_n)/$(gcc_lexec_dir)/crab1 ++endif ++ dh_strip -p$(p_grs_n) \ ++ $(if $(unstripped_exe),-X/crab1) ++ dh_shlibdeps -p$(p_grs_n) ++ ++ ( \ ++ echo '$(p_grs_n) binary: hardening-no-pie'; \ ++ echo '$(p_grs_n) binary: no-manual-page'; \ ++ ) > $(d_grs_n)/usr/share/lintian/overrides/$(p_grs_n) ++ ++ echo $(p_grs_n) >> debian/arch_binaries ++ ++ find $(d_grs_n) -type d -empty -delete ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-grs-host: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_grs_h) ++ debian/dh_doclink -p$(p_grs_h) $(p_xbase) ++ echo $(p_grs_h) >> debian/arch_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-grs-build: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ rm -rf $(d_grs_b) ++ debian/dh_doclink -p$(p_grs_b) $(p_cpp_b) ++ echo $(p_grs_b) >> debian/indep_binaries ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-grs: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_grs) ++ dh_installdirs -p$(p_grs) $(dirs_grs) ++ ++ dh_installdocs -p$(p_grs) ++ dh_installchangelogs -p$(p_grs) #src/gcc/rs/ChangeLog ++ ++ $(dh_compat2) dh_movefiles -p$(p_grs) $(files_grs) ++ ++ ln -sf $(cmd_prefix)gccrs$(pkg_ver) \ ++ $(d_grs)/$(PF)/bin/gccrs$(pkg_ver) ++# ln -sf $(cmd_prefix)gccrs$(pkg_ver).1 \ ++# $(d_grs)/$(PF)/share/man/man1/gccrs$(pkg_ver).1 ++ dh_installdirs -p$(p_grs) ++ debian/dh_doclink -p$(p_grs) $(p_xbase) ++ ++ echo $(p_grs) >> debian/arch_binaries ++ ++ find $(d_grs) -type d -empty -delete ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++$(binary_stamp)-grs-multi: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_grs_m) ++ dh_installdirs -p$(p_grs_m) $(docdir) ++ ++ debian/dh_doclink -p$(p_grs_m) $(p_xbase) ++ ++ dh_strip -p$(p_grs_m) ++ dh_shlibdeps -p$(p_grs_m) ++ echo $(p_grs_m) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++define __do_libgrs ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) $(d_d) ++ dh_installdirs -p$(p_l) \ ++ $(usr_lib$(2)) ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(usr_lib$(2))/librspim.so.* \ ++ $(usr_lib$(2))/librscor.so.* \ ++ $(usr_lib$(2))/librsiso.so.* \ ++ $(usr_lib$(2))/librslog.so.* \ ++ $(usr_lib$(2))/librsmin.so.* ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ $(if $(with_dbg),debian/dh_doclink -p$(p_d) $(p_lbase)) ++ ++ $(call do_strip_lib_dbg, $(p_l), $(p_d), $(v_dbg),,) ++ : ln -sf libgrs.symbols debian/$(p_l).symbols ++ $(cross_makeshlibs) dh_makeshlibs $(ldconfig_arg) -p$(p_l) \ ++ -- -a$(call mlib_to_arch,$(2)) || echo XXXXXXXXXXX ERROR $(p_l) ++ rm -f debian/$(p_l).symbols ++ $(call cross_mangle_shlibs,$(p_l)) ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) dh_shlibdeps -p$(p_l) \ ++ $(call shlibdirs_to_search, \ ++ $(subst grs-$(GRS_SONAME),gcc-s$(GCC_SONAME),$(p_l)) \ ++ ,$(2)) \ ++ $(if $(filter yes, $(with_common_libs)),,-- -Ldebian/shlibs.common$(2)) ++ $(call cross_mangle_substvars,$(p_l)) ++ ++ mkdir -p $(d_l)/usr/share/lintian/overrides; \ ++ ( \ ++ echo "$(p_l) binary: dev-pkg-without-shlib-symlink"; \ ++ echo "$(p_l) binary: shared-lib-without-dependency-information"; \ ++ echo "$(p_l) binary: package-name-doesnt-match-sonames"; \ ++ echo "$(p_l) binary: library-not-linked-against-libc"; \ ++ ) >> $(d_l)/usr/share/lintian/overrides/$(p_l) ++ ++ dh_lintian -p$(p_l) ++ echo $(p_l) $(if $(with_dbg), $(p_d)) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++# install_grs_lib(lib,soname,flavour,package,subdir) ++#define install_grs_lib ++# mkdir -p debian/$(4)/$(gcc_lib_dir$(3))/$(5) ++# mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/$(5)/. ++# rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} ++# dh_link -p$(4) \ ++# /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so ++#endef ++define install_grs_lib ++ dh_link -p$(4) \ ++ /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(5)/$(1).so ++ rm -f $(d)/$(usr_lib$(3))/$(1).so ++ rm -f $(d)/$(usr_lib$(3))/$(1).a ++endef ++ ++define __do_libgrs_dev ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_l) ++ dh_installdirs -p$(p_l) \ ++ $(gcc_lib_dir$(2)) ++ ++ : # install_grs_lib calls needed? ++ ++ $(if $(2),, ++ $(dh_compat2) dh_movefiles -p$(p_l) \ ++ $(gcc_lexec_dir)/rs ++ ) ++ ++ $(call install_grs_lib,librspim,$(GRS_SONAME),$(2),$(p_l),rs/rspim) ++ $(call install_grs_lib,librscor,$(GRS_SONAME),$(2),$(p_l),rs/rscor) ++ $(call install_grs_lib,librsiso,$(GRS_SONAME),$(2),$(p_l),rs/rsiso) ++ $(call install_grs_lib,librslog,$(GRS_SONAME),$(2),$(p_l),rs/rslog) ++ $(call install_grs_lib,librsmin,$(GRS_SONAME),$(2),$(p_l),rs/rsmin) ++ ++ : # included in grs package ++ rm -f $(d_l)/$(grs_include_dir)/__entrypoint.di ++ ++ debian/dh_doclink -p$(p_l) $(p_lbase) ++ echo $(p_l) >> debian/$(lib_binaries) ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++endef ++ ++do_libgrs = $(call __do_libgrs,lib$(1)grs-$(GRS_SONAME),$(1)) ++do_libgrs_dev = $(call __do_libgrs_dev,lib$(1)grs-$(BASE_VERSION)-dev,$(1)) ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-grs-doc: $(build_html_stamp) $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_grsd) ++ dh_installdirs -p$(p_grsd) \ ++ $(docdir)/$(p_grs) \ ++ $(docdir)/$(p_xbase)/rs \ ++ $(PF)/share/info ++ cp -p $(builddir)/gcc/doc/rs.info $(d_grsd)/$(PF)/share/info/grs.info ++ cp -p html/grs.html $(d_grsd)/$(docdir)/$(p_xbase)/rs/ ++ ln -sf ../$(p_xbase)/rs/grs.html $(d_grsd)/$(docdir)/$(p_grs)/grs.html ++ ++ debian/dh_doclink -p$(p_grsd) $(p_xbase) ++ dh_installdocs -p$(p_grsd) ++ rm -f $(d_grsd)/$(docdir)/$(p_xbase)/copyright ++ ++ echo $(p_grsd) >> debian/indep_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) ++ ++ ++$(binary_stamp)-libgrs: $(install_stamp) ++ $(call do_libgrs,) ++ ++$(binary_stamp)-lib64grs: $(install_stamp) ++ $(call do_libgrs,64) ++ ++$(binary_stamp)-lib32grs: $(install_stamp) ++ $(call do_libgrs,32) ++ ++$(binary_stamp)-libn32grs: $(install_stamp) ++ $(call do_libgrs,n32) ++ ++$(binary_stamp)-libx32grs: $(install_stamp) ++ $(call do_libgrs,x32) ++ ++ ++$(binary_stamp)-libgrs-dev: $(install_stamp) ++ $(call do_libgrs_dev,) ++ ++$(binary_stamp)-lib64grs-dev: $(install_stamp) ++ $(call do_libgrs_dev,64) ++ ++$(binary_stamp)-lib32grs-dev: $(install_stamp) ++ $(call do_libgrs_dev,32) ++ ++$(binary_stamp)-libx32grs-dev: $(install_stamp) ++ $(call do_libgrs_dev,x32) ++ ++$(binary_stamp)-libn32grs-dev: $(install_stamp) ++ $(call do_libgrs_dev,n32) diff --cc debian/rules.d/binary-snapshot.mk index 0000000,0000000..fb2d6b2 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-snapshot.mk @@@ -1,0 -1,0 +1,213 @@@ ++arch_binaries := $(arch_binaries) snapshot ++ ++ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) ++ p_snap = gcc-snapshot ++else ++ $(error unknown build for single gcc package) ++endif ++ ++ifeq ($(DEB_CROSS),yes) ++ p_snap := $(p_snap)$(cross_bin_arch) ++endif ++d_snap = debian/$(p_snap) ++ ++dirs_snap = \ ++ $(docdir)/$(p_snap) \ ++ usr/lib ++ ++ifeq ($(with_hppa64),yes) ++ snapshot_depends = $(binutils_hppa64), ++endif ++ifeq ($(with_offload_nvptx),yes) ++ snapshot_depends += nvptx-tools, ++endif ++ifeq ($(with_offload_gcn),yes) ++ snapshot_depends += $(AMDGCN_TOOLS_DEP) ++endif ++ ++common_substvars += '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)' ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-snapshot: $(install_snap_stamp) \ ++ $(if $(filter yes, $(with_offload_nvptx)), $(install_nvptx_stamp)) \ ++ $(if $(filter yes, $(with_offload_gcn)), $(install_gcn_stamp)) ++ dh_testdir ++ dh_testroot ++ mv $(install_snap_stamp) $(install_snap_stamp)-tmp ++ ++ rm -rf $(d_snap) ++ dh_installdirs -p$(p_snap) $(dirs_snap) ++ ++ mv $(d)/$(PF) $(d_snap)/usr/lib/ ++ ++ if [ -f $(d)/gcobol.3 ]; then \ ++ mkdir -p $(d_snap)/$(PF)/share/man/man3; \ ++ mv $(d)/gcobol.3 $(d_snap)/$(PF)/share/man/man3/.; \ ++ fi ++ ++ifeq ($(with_jit),yes) ++ tar -C $(d_snap) -x -v -f installed-jit.tar.xz ++endif ++ ++ find $(d_snap) -name '*.gch' -type d | xargs -r rm -rf ++ find $(d_snap) -name '*.la' -o -name '*.lai' | xargs -r rm -f ++ ++ : # FIXME: libbacktrace is not installed by default ++ for d in . 32 n32 64; do \ ++ if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \ ++ install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \ ++ $(d_snap)/$(gcc_lib_dir)/$$d; \ ++ fi; \ ++ done ++ if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ ++ install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ ++ $(d_snap)/$(gcc_lib_dir)/include/; \ ++ install -m644 $(srcdir)/libbacktrace/backtrace.h \ ++ $(d_snap)/$(gcc_lib_dir)/include/; \ ++ fi ++ ++ rm -rf $(d_snap)/$(PF)/lib/nof ++ ++ifeq ($(with_ada),yes FIXME: apply our ada patches) ++ dh_link -p$(p_snap) \ ++ $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \ ++ $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a ++ dh_link -p$(p_snap) \ ++ $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \ ++ $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a ++ ++ set -e; \ ++ for lib in lib{gnat,gnarl}; do \ ++ vlib=$$lib-$(GNAT_SONAME); \ ++ mv $(d_snap)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_snap)/$(PF)/$(libdir)/. ; \ ++ rm -f $(d_snap)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ ++ dh_link -p$(p_snap) \ ++ /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \ ++ /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \ ++ done ++endif ++ ln -sf gcc $(d_snap)/$(PF)/bin/cc ++ifeq ($(with_fortran),yes) ++ ln -sf gfortran $(d_snap)/$(PF)/bin/f77 ++endif ++ ++ifeq ($(with_offload_nvptx),yes) ++ tar -c -C $(d)-nvptx -f - $(PF) \ ++ | tar x -C $(d_snap) -f - ++ ++ rm -f $(d_snap)/$(PF)/bin/*-lto-dump ++ rm -f $(d_snap)/$(PF)/share/man/man1/*-accel-nvptx-none-*.1 ++ ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_snap) \ ++ /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ ++ /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ ++ /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ ++ /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib ++endif ++ ++ifeq ($(with_offload_gcn),yes) ++ tar -c -C $(d)-gcn -f - $(PF) \ ++ | tar x -C $(d_snap) -f - ++ ++ ifeq ($(gcn_tools_llvm_version),tools) ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_snap) \ ++ /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ ++ /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ ++ /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ ++ /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ ++ /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib ++ else ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_snap) \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib ++ ++ : # FIXME: are these really needed? ++ dh_link -p$(p_snap) \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(PF)/bin/$(gcn_target_name)-ar \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(PF)/bin/$(gcn_target_name)-as \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(PF)/bin/$(gcn_target_name)-ld \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(PF)/bin/$(gcn_target_name)-nm \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(PF)/bin/$(gcn_target_name)-ranlib ++ rm -f $(d_snap)/$(PF)/bin/*-lto-dump ++ rm -f $(d_snap)/$(PF)/share/man/man1/*-accel-$(gcn_target_name)-*.1 ++ endif ++endif ++ ++ifeq ($(with_hppa64),yes) ++ : # provide as and ld links ++ dh_link -p $(p_snap) \ ++ /usr/bin/hppa64-linux-gnu-as \ ++ /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/as \ ++ /usr/bin/hppa64-linux-gnu-ld \ ++ /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/ld ++endif ++ ++ifeq ($(with_check),yes) ++ dh_installdocs -p$(p_snap) test-summary ++ cd $(d_snap) && tar xvf ../../installed-testlogs.tar ++ mv $(d_snap)/usr/share/doc/gcc-base/* $(d_snap)/usr/share/doc/$(p_snap)/. ++ rm -rf $(d_snap)/usr/share/doc/gcc-base ++else ++ dh_installdocs -p$(p_snap) ++endif ++ ++ if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ ++ then \ ++ cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ ++ $(d_snap)/$(docdir)/$(p_snap)/libstdc++6_symbols.txt; \ ++ fi ++ cp -p debian/README.snapshot \ ++ $(d_snap)/$(docdir)/$(p_snap)/README.Debian ++ cp -p debian/README.Bugs \ ++ $(d_snap)/$(docdir)/$(p_snap)/ ++ dh_installchangelogs -p$(p_snap) ++ifeq ($(DEB_TARGET_ARCH),hppa) ++# dh_dwz -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ ++# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) ++ dh_strip -p$(p_snap) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \ ++ $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) ++else ++# dh_dwz -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ ++# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) ++ dh_strip -p$(p_snap) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ ++ -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared}.a \ ++ $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) ++endif ++ ++ mkdir -p $(d_snap)/usr/share/lintian/overrides ++ cp -p debian/gcc-snapshot.overrides \ ++ $(d_snap)/usr/share/lintian/overrides/$(p_snap) ++ ++ ( \ ++ echo 'libgcc_s $(GCC_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ ++ echo 'libobjc $(OBJC_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ ++ echo 'libgfortran $(FORTRAN_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ ++ echo 'libgo $(GO_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ ++ echo 'libgomp $(GOMP_SONAME) ${p_snap} (>= $(DEB_EVERSION))'; \ ++ echo 'libgnat-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_EVERSION))'; \ ++ echo 'libgnarl-$(GNAT_SONAME) 1 ${p_snap} (>= $(DEB_EVERSION))'; \ ++ ) > debian/shlibs.local ++ ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \ ++ dh_shlibdeps -p$(p_snap) -l$(CURDIR)/$(d_snap)/$(PF)/lib:$(CURDIR)/$(d_snap)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib ++ -sed -i -e 's/$(p_snap)[^,]*, //g' debian/$(p_snap).substvars ++ ++ifeq ($(with_multiarch_lib),yes) ++ : # paths needed for relative lookups from startfile_prefixes ++ for ma in $(xarch_multiarch_names); do \ ++ mkdir -p $(d_snap)/lib/$$ma; \ ++ mkdir -p $(d_snap)/usr/lib/$$ma; \ ++ done ++endif ++ ++ -find $(d_snap) -type d -empty -delete ++ ++ echo $(p_snap) >> debian/arch_binaries.epoch ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_snap_stamp)-tmp $(install_snap_stamp) diff --cc debian/rules.d/binary-softfloat.mk index 0000000,0000000..6badfcc new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-softfloat.mk @@@ -1,0 -1,0 +1,31 @@@ ++arch_binaries := $(arch_binaries) softfloat ++ ++p_softfloat = gcc$(pkg_ver)-soft-float ++d_softfloat = debian/$(p_softfloat) ++ ++dirs_softfloat = \ ++ $(PFL)/$(libdir) \ ++ $(gcc_lib_dir) ++ ++files_softfloat = \ ++ $(PFL)/$(libdir)/soft-float \ ++ $(gcc_lib_dir)/soft-float ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-softfloat: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ mv $(install_stamp) $(install_stamp)-tmp ++ ++ rm -rf $(d_softfloat) ++ dh_installdirs -p$(p_softfloat) $(dirs_softfloat) ++ $(dh_compat2) dh_movefiles -p$(p_softfloat) $(files_softfloat) ++ rm -rf $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.so* ++ mv $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp.a \ ++ $(d_softfloat)/$(PFL)/$(libdir)/soft-float/libssp_nonshared.a ++ debian/dh_doclink -p$(p_softfloat) $(p_xbase) ++ dh_strip -p$(p_softfloat) ++ dh_shlibdeps -p$(p_softfloat) ++ echo $(p_softfloat) >> debian/arch_binaries ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_stamp)-tmp $(install_stamp) diff --cc debian/rules.d/binary-source.mk index 0000000,0000000..9844826 new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-source.mk @@@ -1,0 -1,0 +1,54 @@@ ++indep_binaries := $(indep_binaries) gcc-source ++ ++ifeq ($(BACKPORT),true) ++ p_source = gcc$(pkg_ver)-$(GCC_VERSION)-source ++else ++ p_source = gcc$(pkg_ver)-source ++endif ++d_source= debian/$(p_source) ++ ++$(binary_stamp)-gcc-source: $(install_stamp) ++ dh_testdir ++ dh_testroot ++ ++ dh_installdocs -p$(p_source) ++ dh_installchangelogs -p$(p_source) ++ ++ dh_install -p$(p_source) $(gcc_tarball) usr/src/gcc$(pkg_ver) ++ifneq (,$(m2_tarball)) ++ dh_install -p$(p_source) $(m2_tarball) usr/src/gcc$(pkg_ver) ++endif ++ tar cf - $$(find './debian' -mindepth 1 \( \ ++ -name .svn -prune -o \ ++ -path './debian/.debhelper' -prune -o \ ++ -path './debian/gcc-*' -type d -prune -o \ ++ -path './debian/cpp-*' -type d -prune -o \ ++ -path './debian/*fortran*' -type d -prune -o \ ++ -path './debian/lib*' -type d -prune -o \ ++ -path './debian/patches/*' -prune -o \ ++ -path './debian/tmp*' -prune -o \ ++ -path './debian/files' -prune -o \ ++ -path './debian/rules.d/*' -prune -o \ ++ -path './debian/rules.parameters' -prune -o \ ++ -path './debian/soname-cache' -prune -o \ ++ -path './debian/*substvars*' -prune -o \ ++ -path './debian/gcc-snapshot*' -prune -o \ ++ -path './debian/*[0-9]*.p*' -prune -o \ ++ -path './debian/*$(pkg_ver)[.-]*' -prune -o \ ++ -print \) ) \ ++ | tar -x -C $(d_source)/usr/src/gcc$(pkg_ver) -f - ++ # FIXME: Remove generated files ++ find $(d_source)/usr/src/gcc$(pkg_ver) -name '*.debhelper.log' -o -name .svn | xargs rm -rf ++ rm -f $(d_source)/usr/src/gcc$(pkg_ver)/debian/patches/series ++ ++ touch $(d_source)/usr/src/gcc$(pkg_ver)/debian/rules.parameters ++ ++ dh_link -p$(p_source) \ ++ /usr/src/gcc$(pkg_ver)/debian/patches /usr/src/gcc$(pkg_ver)/patches ++ ++ mkdir -p $(d_source)/usr/share/lintian/overrides ++ cp -p debian/$(p_source).overrides \ ++ $(d_source)/usr/share/lintian/overrides/$(p_source) ++ echo $(p_source) >> debian/indep_binaries ++ ++ touch $@ diff --cc debian/rules.d/binary-toolchain.mk index 0000000,0000000..a19d68c new file mode 100644 --- /dev/null +++ b/debian/rules.d/binary-toolchain.mk @@@ -1,0 -1,0 +1,210 @@@ ++arch_binaries := $(arch_binaries) toolchain ++ ++ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++ p_tc = gcc-toolchain-$(BASE_VERSION) ++else ++ $(error unknown build for single gcc package) ++endif ++ ++ifeq ($(DEB_CROSS),yes) ++ p_tc := $(p_tc)$(cross_bin_arch) ++endif ++d_tc = debian/$(p_tc) ++ ++dirs_tc = \ ++ $(docdir)/$(p_tc) \ ++ usr/lib ++ ++ifeq ($(with_hppa64),yes) ++ snapshot_depends = $(binutils_hppa64), ++endif ++ifeq ($(with_offload_nvptx),yes) ++ snapshot_depends += nvptx-tools, ++endif ++ifeq ($(with_offload_gcn),yes) ++ ifeq ($(gcn_tools_llvm_version),tools) ++ snapshot_depends += amdgcn-tools, ++ else ++ snapshot_depends += llvm-$(gcn_tools_llvm_version), lld-$(gcn_tools_llvm_version), ++ endif ++endif ++ ++common_substvars += '-Vsnap:depends=$(snapshot_depends)' '-Vsnap:recommends=$(snapshot_recommends)' ++ ++# ---------------------------------------------------------------------- ++$(binary_stamp)-toolchain: $(install_tc_stamp) \ ++ $(if $(filter yes, $(with_offload_nvptx)), $(install_nvptx_stamp)) \ ++ $(if $(filter yes, $(with_offload_gcn)), $(install_gcn_stamp)) ++ dh_testdir ++ dh_testroot ++ mv $(install_tc_stamp) $(install_tc_stamp)-tmp ++ ++ rm -rf $(d_tc) ++ dh_installdirs -p$(p_tc) $(dirs_tc) ++ ++ mv $(d)/$(PF) $(d_tc)/usr/lib/ ++ ++ find $(d_tc) -name '*.gch' -type d | xargs -r rm -rf ++ find $(d_tc) -name '*.la' -o -name '*.lai' | xargs -r rm -f ++ ++ : # FIXME: libbacktrace is not installed by default ++ for d in . 32 n32 64 sf hf; do \ ++ if [ -f $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a ]; then \ ++ install -m644 $(buildlibdir)/$$d/libbacktrace/.libs/libbacktrace.a \ ++ $(d_tc)/$(gcc_lib_dir)/$$d; \ ++ fi; \ ++ done ++ if [ -f $(buildlibdir)/libbacktrace/backtrace-supported.h ]; then \ ++ install -m644 $(buildlibdir)/libbacktrace/backtrace-supported.h \ ++ $(d_tc)/$(gcc_lib_dir)/include/; \ ++ install -m644 $(srcdir)/libbacktrace/backtrace.h \ ++ $(d_tc)/$(gcc_lib_dir)/include/; \ ++ fi ++ ++ rm -rf $(d_tc)/$(PF)/lib/nof ++ ++ifeq ($(with_ada),yes FIXME: apply our ada patches) ++ dh_link -p$(p_tc) \ ++ $(gcc_lib_dir)/rts-sjlj/adalib/libgnat.a \ ++ $(gcc_lib_dir)/rts-sjlj/adalib/libgnat-$(GNAT_VERSION).a ++ dh_link -p$(p_tc) \ ++ $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl.a \ ++ $(gcc_lib_dir)/rts-sjlj/adalib/libgnarl-$(GNAT_VERSION).a ++ ++ set -e; \ ++ for lib in lib{gnat,gnarl}; do \ ++ vlib=$$lib-$(GNAT_SONAME); \ ++ mv $(d_tc)/$(gcc_lib_dir)/adalib/$$vlib.so.1 $(d_tc)/$(PF)/$(libdir)/. ; \ ++ rm -f $(d_tc)/$(gcc_lib_dir)/adalib/$$lib.so.1; \ ++ dh_link -p$(p_tc) \ ++ /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$vlib.so \ ++ /$(PF)/$(libdir)/$$vlib.so.1 /$(PF)/$(libdir)/$$lib.so \ ++ /$(PF)/$(libdir)/$$vlib.so.1 /$(gcc_lib_dir)/rts-native/adalib/$$lib.so; \ ++ done ++endif ++ ln -sf gcc $(d_tc)/$(PF)/bin/cc ++ifeq ($(with_ada),yes) ++ ln -sf gcc $(d_tc)/$(PF)/bin/gnatgcc ++endif ++ifeq ($(with_fortran),yes) ++ ln -sf gfortran $(d_tc)/$(PF)/bin/f77 ++endif ++ ++ifeq ($(with_offload_nvptx),yes) ++ tar -c -C $(d)-nvptx -f - $(PF) \ ++ | tar x -C $(d_tc) -f - ++ ++ rm -f $(d_tc)/$(PF)/bin/*-lto-dump ++ rm -f $(d_tc)/$(PF)/share/man/man1/*-accel-nvptx-none-*.1 ++ ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_tc) \ ++ /usr/bin/nvptx-none-ar /$(gcc_lexec_dir)/accel/nvptx-none/ar \ ++ /usr/bin/nvptx-none-as /$(gcc_lexec_dir)/accel/nvptx-none/as \ ++ /usr/bin/nvptx-none-ld /$(gcc_lexec_dir)/accel/nvptx-none/ld \ ++ /usr/bin/nvptx-none-ranlib /$(gcc_lexec_dir)/accel/nvptx-none/ranlib ++endif ++ ++ifeq ($(with_offload_gcn),yes) ++ tar -c -C $(d)-gcn -f - $(PF) \ ++ | tar x -C $(d_tc) -f - ++ ++ ifeq ($(gcn_tools_llvm_version),tools) ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_tc) \ ++ /usr/$(gcn_target_name)/bin/ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ ++ /usr/$(gcn_target_name)/bin/as /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ ++ /usr/$(gcn_target_name)/bin/ld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ ++ /usr/$(gcn_target_name)/bin/nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ ++ /usr/$(gcn_target_name)/bin/ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib ++ else ++ : # re-create the symlinks as relative symlinks ++ dh_link -p$(p_tc) \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(gcc_lexec_dir)/accel/$(gcn_target_name)/as \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib ++ ++ : # FIXME: are these really needed? ++ dh_link -p$(p_tc) \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar /$(PF)/bin/$(gcn_target_name)-ar \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc /$(PF)/bin/$(gcn_target_name)-as \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld /$(PF)/bin/$(gcn_target_name)-ld \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm /$(PF)/bin/$(gcn_target_name)-nm \ ++ /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib /$(PF)/bin/$(gcn_target_name)-ranlib ++ rm -f $(d_tc)/$(PF)/bin/*-lto-dump ++ rm -f $(d_tc)/$(PF)/share/man/man1/*-accel-$(gcn_target_name)-*.1 ++ endif ++endif ++ ++ifeq ($(with_hppa64),yes) ++ : # provide as and ld links ++ dh_link -p $(p_tc) \ ++ /usr/bin/hppa64-linux-gnu-as \ ++ /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/as \ ++ /usr/bin/hppa64-linux-gnu-ld \ ++ /$(PF)/lib/gcc/hppa64-linux-gnu/$(versiondir)/ld ++endif ++ ++ifeq ($(with_check),yes) ++ dh_installdocs -p$(p_tc) test-summary ++ cd $(d_tc) && tar xvf ../../installed-testlogs.tar ++ mv $(d_tc)/usr/share/doc/gcc-base/* $(d_tc)/usr/share/doc/$(p_tc)/. ++ rm -rf $(d_tc)/usr/share/doc/gcc-base ++else ++ dh_installdocs -p$(p_tc) ++endif ++ cp $(binutils_srcdir)/debian/copyright $(d_tc)/usr/share/doc/copyright.binutils ++ ++ if [ -f $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt ]; \ ++ then \ ++ cp -p $(buildlibdir)/libstdc++-v3/testsuite/current_symbols.txt \ ++ $(d_tc)/$(docdir)/$(p_tc)/libstdc++6_symbols.txt; \ ++ fi ++ cp -p debian/README.snapshot \ ++ $(d_tc)/$(docdir)/$(p_tc)/README.Debian ++ cp -p debian/README.Bugs \ ++ $(d_tc)/$(docdir)/$(p_tc)/ ++ dh_installchangelogs -p$(p_tc) ++ifeq ($(DEB_TARGET_ARCH),hppa) ++# dh_dwz -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ ++# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) ++ dh_strip -p$(p_tc) -Xdebug -X.o -X.a -X/cgo -Xbin/go -Xbin/gofmt \ ++ $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) ++else ++# dh_dwz -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ ++# $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) ++ dh_strip -p$(p_tc) -Xdebug -X/cgo -Xbin/go -Xbin/gofmt \ ++ -X/lib{c,g,m,gcc,gomp,gcov,gfortran,caf_single,ssp,ssp_nonshared}.a \ ++ $(if $(unstripped_exe),$(foreach i,cc1 cc1obj cc1objplus cc1plus cc1gm2 d21 f951 go1 lto1, -X/$(i))) ++endif ++ ++ mkdir -p $(d_tc)/usr/share/lintian/overrides ++ cp -p debian/gcc-snapshot.overrides \ ++ $(d_tc)/usr/share/lintian/overrides/$(p_tc) ++ ++ ( \ ++ echo 'libgcc_s $(GCC_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ ++ echo 'libobjc $(OBJC_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ ++ echo 'libgfortran $(FORTRAN_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ ++ echo 'libgo $(GO_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ ++ echo 'libgomp $(GOMP_SONAME) ${p_tc} (>= $(DEB_EVERSION))'; \ ++ echo 'libgnat-$(GNAT_SONAME) 1 ${p_tc} (>= $(DEB_EVERSION))'; \ ++ echo 'libgnarl-$(GNAT_SONAME) 1 ${p_tc} (>= $(DEB_EVERSION))'; \ ++ ) > debian/shlibs.local ++ ++ $(ignshld)DIRNAME=$(subst n,,$(2)) $(cross_shlibdeps) \ ++ dh_shlibdeps -p$(p_tc) -l$(CURDIR)/$(d_tc)/$(PF)/lib:$(CURDIR)/$(d_tc)/$(PF)/$(if $(filter $(DEB_TARGET_ARCH),amd64 ppc64),lib32,lib64):/usr/$(DEB_TARGET_GNU_TYPE)/lib ++ -sed -i -e 's/$(p_tc)[^,]*, //g' debian/$(p_tc).substvars ++ ++ifeq ($(with_multiarch_lib),yes) ++ : # paths needed for relative lookups from startfile_prefixes ++ for ma in $(xarch_multiarch_names); do \ ++ mkdir -p $(d_tc)/lib/$$ma; \ ++ mkdir -p $(d_tc)/usr/lib/$$ma; \ ++ done ++endif ++ echo $(p_tc) >> debian/arch_binaries.epoch ++ ++ trap '' 1 2 3 15; touch $@; mv $(install_tc_stamp)-tmp $(install_tc_stamp) diff --cc debian/rules.defs index 0000000,0000000..9b8a735 new file mode 100644 --- /dev/null +++ b/debian/rules.defs @@@ -1,0 -1,0 +1,2368 @@@ ++# -*- makefile -*- ++# definitions used in more than one Makefile / rules file ++ ++# common vars ++COMMA = , ++SPACE = $(EMPTY) $(EMPTY) ++SHELL = /bin/bash -e # brace expansion used in rules file ++srcdir = $(CURDIR)/src ++builddir = $(CURDIR)/build ++builddir_jit = $(CURDIR)/build-jit ++builddir_nvptx = $(CURDIR)/build-nvptx ++builddir_gcn = $(CURDIR)/build-gcn ++builddir_hppa64 = $(CURDIR)/build-hppa64 ++stampdir = stamps ++ ++distribution := $(shell lsb_release -is) ++distrelease := $(shell lsb_release -cs) ++derivative := $(shell if dpkg-vendor --derives-from Ubuntu; then echo Ubuntu; \ ++ elif dpkg-vendor --derives-from Debian; then echo Debian; \ ++ else echo Unknown; fi) ++ ++# On non official archives, "lsb_release -cs" default to "n/a". Assume ++# sid in that case ++ifeq ($(distrelease),n/a) ++distrelease := sid ++endif ++ ++on_buildd := $(shell [ -f /CurrentlyBuilding -o "$$LOGNAME" = buildd ] && echo yes) ++ ++# creates {srcdir,builddir}_hppa64 ++$(foreach x,srcdir builddir,$(foreach target,hppa64,$(eval \ ++ $(x)_$(target) := $($(x))-$(target)))) ++ ++# for architecture dependent variables and changelog vars ++vafilt = $(subst $(2)=,,$(filter $(2)=%,$(1))) ++# for rules.sonames ++vafilt_defined = 1 ++ ++dpkg_target_vars := $(shell (dpkg-architecture | grep -q DEB_TARGET) && echo yes) ++ifeq ($(dpkg_target_vars),yes) ++ DEB_TARGET_ARCH= ++ DEB_TARGET_ARCH_BITS= ++ DEB_TARGET_ARCH_CPU= ++ DEB_TARGET_ARCH_ENDIAN= ++ DEB_TARGET_ARCH_OS= ++ DEB_TARGET_GNU_CPU= ++ DEB_TARGET_GNU_SYSTEM= ++ DEB_TARGET_GNU_TYPE= ++ DEB_TARGET_MULTIARCH= ++endif ++ ++DPKG_VARS := $(shell dpkg-architecture) ++ifeq ($(dpkg_target_vars),yes) ++ DPKG_VARS := $(filter-out DEB_TARGET_%, $(DPKG_VARS)) ++endif ++DEB_BUILD_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_ARCH) ++DEB_BUILD_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_GNU_TYPE) ++DEB_BUILD_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_BUILD_MULTIARCH) ++DEB_HOST_ARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH) ++DEB_HOST_ARCH_ABI ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_ABI) ++DEB_HOST_ARCH_BITS ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_BITS) ++DEB_HOST_ARCH_ENDIAN ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_ENDIAN) ++DEB_HOST_ARCH_LIBC ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_ARCH_LIBC) ++DEB_HOST_GNU_CPU ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_CPU) ++DEB_HOST_GNU_SYSTEM ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_SYSTEM) ++DEB_HOST_GNU_TYPE ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_GNU_TYPE) ++DEB_HOST_MULTIARCH ?= $(call vafilt,$(DPKG_VARS),DEB_HOST_MULTIARCH) ++ ++ifeq ($(derivative),Ubuntu) ++ ifeq (,$(filter $(distrelease), precise trusty)) ++ ifeq ($(DEB_BUILD_GNU_TYPE),i486-linux-gnu) ++ DEB_BUILD_GNU_TYPE = i686-linux-gnu ++ endif ++ ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) ++ DEB_HOST_GNU_TYPE = i686-linux-gnu ++ endif ++ endif ++else ++ ifneq (,$(filter $(distrelease),jessie)) ++ ifeq ($(DEB_HOST_GNU_TYPE),i486-linux-gnu) ++ DEB_HOST_GNU_TYPE = i586-linux-gnu ++ endif ++ else ++ # stretch and newer ... ++ DEB_BUILD_GNU_TYPE := $(subst i586,i686,$(DEB_BUILD_GNU_TYPE)) ++ DEB_HOST_GNU_TYPE := $(subst i586,i686,$(DEB_HOST_GNU_TYPE)) ++ endif ++endif ++ ++CHANGELOG_VARS := $(shell dpkg-parsechangelog | \ ++ sed -n 's/ /_/g;/^[^_]/s/^\([^:]*\):_\(.*\)/\1=\2/p') ++ ++# the name of the source package ++PKGSOURCE := $(call vafilt,$(CHANGELOG_VARS),Source) ++# those are required here too ++SOURCE_VERSION := $(call vafilt,$(CHANGELOG_VARS),Version) ++DEB_VERSION := $(strip $(shell echo $(SOURCE_VERSION) | \ ++ sed -e 's/.*://' -e 's/ds[0-9][0-9]*//')) ++# epoch used for gcc versions up to 3.3.x, now used for some remaining ++# libraries: libgcc1, libobjc1 ++EPOCH := 1 ++DEB_EVERSION := $(EPOCH):$(DEB_VERSION) ++BASE_VERSION := $(shell echo $(DEB_VERSION) | sed -e 's/\([0-9][0-9]*\).*-.*/\1/') ++ ++NJOBS := ++USE_CPUS := 1 ++ifneq (,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) ++ USE_CPUS := $(subst parallel=,,$(filter parallel=%,$(subst $(COMMA), ,$(DEB_BUILD_OPTIONS)))) ++ NJOBS := -j $(USE_CPUS) ++ NJOBS_TESTS := -j $(USE_CPUS) ++ # this is for debugging hanging tests on the buildds ++# ifeq ($(derivative),Ubuntu) ++# ifneq (,$(filter $(DEB_HOST_ARCH), arm64)) ++# NJOBS_TESTS := -j 1 ++# endif ++# else ++# ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armhf armel arm64 i386 riscv64 s390x)) ++# NJOBS_TESTS := -j 1 ++# endif ++# endif ++endif ++ ++CPUS_LTOLINK := $(if $(filter 1, $(USE_CPUS)),1,$(shell expr $(USE_CPUS) / 2)) ++ifeq ($(derivative)-$(DEB_BUILD_ARCH),Ubuntu-ppc64el) ++ CPUS_LTOLINK := 1 ++else ifeq ($(derivative)-$(DEB_BUILD_ARCH),Debian-sparc64) ++ CPUS_LTOLINK := $(shell if test $(CPUS_LTOLINK) -gt 4; then echo 4; else echo $(CPUS_LTOLINK); fi) ++endif ++ ++ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) ++ single_package = yes ++ trunk_build = yes ++else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++ single_package = yes ++ with_binutils = yes ++else ++ # --program-suffix=-$(BASE_VERSION) ++ versioned_packages := yes ++endif ++ ++# push glibc stack traces into stderr ++export LIBC_FATAL_STDERR_=1 ++ ++# --------------------------------------------------------------------------- ++# set target ++# - GNU triplet via DEB_TARGET_GNU_TYPE ++# - Debian arch in debian/target ++# - Debian arch via DEB_GCC_TARGET or GCC_TARGET ++# ++# alias ++ifdef GCC_TARGET ++ DEB_GCC_TARGET := $(GCC_TARGET) ++endif ++ifdef DEB_TARGET_GNU_TYPE ++ TARGET_VARS := $(shell dpkg-architecture -f -t$(DEB_TARGET_GNU_TYPE) 2>/dev/null) ++else ++ # allow debian/target to be used instead of DEB_GCC_TARGET - this was requested ++ # by toolchain-source maintainer ++ DEBIAN_TARGET_FILE := $(strip $(if $(wildcard debian/target),$(shell cat debian/target 2>/dev/null))) ++ ifndef DEB_TARGET_ARCH ++ ifneq (,$(DEBIAN_TARGET_FILE)) ++ DEB_TARGET_ARCH := $(DEBIAN_TARGET_FILE) ++ else ++ ifdef DEB_GCC_TARGET ++ DEB_TARGET_ARCH := $(DEB_GCC_TARGET) ++ else ++ DEB_TARGET_ARCH := $(DEB_HOST_ARCH) ++ endif ++ endif ++ endif ++ TARGET_VARS := $(shell dpkg-architecture -f -a$(DEB_TARGET_ARCH) 2>/dev/null) ++endif ++ifeq ($(dpkg_target_vars),yes) ++ TARGET_VARS := $(filter-out DEB_TARGET_%, $(TARGET_VARS)) ++endif ++ ++DEB_TARGET_ARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH) ++DEB_TARGET_ARCH_OS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_OS) ++DEB_TARGET_ARCH_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_CPU) ++DEB_TARGET_GNU_CPU := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_CPU) ++DEB_TARGET_GNU_TYPE := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_TYPE) ++DEB_TARGET_GNU_SYSTEM := $(call vafilt,$(TARGET_VARS),DEB_HOST_GNU_SYSTEM) ++DEB_TARGET_MULTIARCH := $(call vafilt,$(TARGET_VARS),DEB_HOST_MULTIARCH) ++DEB_TARGET_ARCH_ABI := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ABI) ++DEB_TARGET_ARCH_BITS := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_BITS) ++DEB_TARGET_ARCH_ENDIAN := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_ENDIAN) ++DEB_TARGET_ARCH_LIBC := $(call vafilt,$(TARGET_VARS),DEB_HOST_ARCH_LIBC) ++export DEB_TARGET_ARCH DEB_TARGET_ARCH_ABI DEB_TARGET_ARCH_BITS \ ++ DEB_TARGET_ARCH_CPU DEB_TARGET_ARCH_OS DEB_TARGET_ARCH_ENDIAN \ ++ DEB_TARGET_ARCH_LIBC DEB_TARGET_GNU_CPU DEB_TARGET_GNU_TYPE \ ++ DEB_TARGET_GNU_SYSTEM DEB_TARGET_MULTIARCH ++ ++ifneq (,$(filter $(distrelease),stretch)) ++ DEB_TARGET_GNU_TYPE := $(subst i586,i686,$(DEB_TARGET_GNU_TYPE)) ++endif ++ ++ifeq ($(DEB_TARGET_ARCH),) ++ $(error Invalid architecure.) ++endif ++ ++# Force this, people get confused about the default. See #760770. ++override with_deps_on_target_arch_pkgs := ++ ++# including unversiond symlinks for binaries ++#with_unversioned = yes ++ ++# package metadata information ++ifeq (,$(ELF_PACKAGE_METADATA)) ++ ELF_PACKAGE_METADATA := $(subst $(SPACE),,{ \ ++ "type":"deb", \ ++ "os":"$(shell awk -F= '/^ID=/ {print $$2}' /etc/os-release)", \ ++ "name":"$(PKGSOURCE)", \ ++ "version":"$(DEB_VERSION)", \ ++ "architecture":"$(DEB_HOST_ARCH)" \ ++ $(if $(DEB_HOST_ARCH_VARIANT),$(COMMA)"architectureVariant":"$(DEB_HOST_ARCH_VARIANT)") \ ++ $(if $(DEB_BUILD_DEBUG_INFO_URL),$(COMMA)"debugInfoUrl":"$(DEB_BUILD_DEBUG_INFO_URL)") \ ++ }) ++ export ELF_PACKAGE_METADATA ++endif ++ ++# --------------------------------------------------------------------------- ++# cross-compiler config ++ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) ++ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) ++ # cross building a cross compiler, untested. ++ DEB_CROSS = yes ++ build_type = cross-build-cross ++ else ++ # cross building the native compiler ++ build_type = cross-build-native ++ endif ++else ++ ifneq ($(DEB_HOST_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) ++ # cross compiler, sets WITH_SYSROOT on it's own ++ DEB_CROSS = yes ++ build_type = build-cross ++ else ifeq ($(FORCE_CROSS_LAYOUT),yes) ++ # a native build with a cross layout ++ DEB_CROSS = yes ++ build_type = build-cross ++ else ++ # native build ++ build_type = build-native ++ endif ++endif ++ ++# --------------------------------------------------------------------------- ++# cross compiler support ++ifeq ($(DEB_CROSS),yes) ++ # TARGET: Alias to DEB_TARGET_ARCH (Debian arch name) ++ # TP: Target Prefix. Used primarily as a prefix for cross tool ++ # names (e.g. powerpc-linux-gcc). ++ # TS: Target Suffix. Used primarily at the end of cross compiler ++ # package names (e.g. gcc-powerpc). ++ # LS: Library Suffix. Used primarily at the end of cross compiler ++ # library package names (e.g. libgcc-powerpc-cross). ++ # AQ: Arch Qualifier. Used for cross-arch dependencies ++ DEB_TARGET_ALIAS ?= $(DEB_TARGET_GNU_TYPE) ++ TARGET := $(DEB_TARGET_ARCH) ++ TP := $(subst _,-,$(DEB_TARGET_GNU_TYPE))- ++ TS := -$(subst _,-,$(DEB_TARGET_ALIAS)) ++ LS := -$(subst _,-,$(DEB_TARGET_ARCH))-cross ++ AQ := ++ ++ cross_bin_arch := -$(subst _,-,$(DEB_TARGET_ALIAS)) ++ cross_lib_arch := -$(subst _,-,$(DEB_TARGET_ARCH))-cross ++ cmd_prefix := $(DEB_TARGET_GNU_TYPE)- ++ ++ TARGET_ALIAS := $(DEB_TARGET_ALIAS) ++ ++ lib_binaries := indep_binaries ++ cross_shlibdeps = DEB_HOST_ARCH=$(TARGET) ARCH=$(DEB_TARGET_ARCH) MAKEFLAGS="CC=something" ++ cross_gencontrol = DEB_HOST_ARCH=$(TARGET) ++ cross_makeshlibs = DEB_HOST_ARCH=$(TARGET) ++ cross_clean = DEB_HOST_ARCH=$(TARGET) ++else ++ TARGET_ALIAS := $(DEB_TARGET_GNU_TYPE) ++ ++ ifeq ($(TARGET_ALIAS),i386-gnu) ++ TARGET_ALIAS := i586-gnu ++ endif ++ ++ ifeq ($(single_package),yes) ++ cmd_prefix := ++ unprefixed_names := ++ else ++ cmd_prefix := $(DEB_TARGET_GNU_TYPE)- ++ unprefixed_names := yes ++ endif ++ ++ #ifeq ($(TARGET_ALIAS),i486-linux-gnu) ++ # TARGET_ALIAS := i686-linux-gnu ++ #endif ++ ++ TARGET_ALIAS := $(subst i386,i486,$(TARGET_ALIAS)) ++ ++ # configure as linux-gnu, not linux ++ #ifeq ($(findstring linux,$(TARGET_ALIAS))/$(findstring linux-gnu,$(TARGET_ALIAS)),linux/) ++ # TARGET_ALIAS := $(TARGET_ALIAS)-gnu ++ #endif ++ ++ # configure as linux, not linux-gnu ++ #TARGET_ALIAS := $(subst linux-gnu,linux,$(TARGET_ALIAS)) ++ ++ lib_binaries := arch_binaries ++ cross_shlibdeps := ++ cross_gencontrol := ++ cross_makeshlibs := ++ # FIXME: Ignore missing symbols for a first build ... ++ cross_makeshlibs := - ++ cross_clean := ++endif ++ ++printarch: ++ @echo DEB_TARGET_ARCH: $(DEB_TARGET_ARCH) ++ @echo DEB_TARGET_ARCH_OS: $(DEB_TARGET_ARCH_OS) ++ @echo DEB_TARGET_ARCH_CPU: $(DEB_TARGET_ARCH_CPU) ++ @echo DEB_TARGET_GNU_SYSTEM: $(DEB_TARGET_GNU_SYSTEM) ++ @echo DEB_TARGET_MULTIARCH: $(DEB_TARGET_MULTIARCH) ++ @echo MULTIARCH_CONFARG: $(MULTIARCH_CONFARG) ++ @echo TARGET_ALIAS: $(TARGET_ALIAS) ++ @echo TP: $(TP) ++ @echo TS: $(TS) ++ ++# reaching the 50GB limit ... ++ifeq ($(derivative)-$(build_type),Ubuntu-build-native) ++ ifneq (,$(filter $(DEB_HOST_ARCH),amd64)) ++ save_disk_space = yes ++ endif ++endif ++ ++# ------------------------------------------------------------------- ++# bootstrap options ++ifdef WITH_BOOTSTRAP ++ # "yes" is the default and causes a 3-stage bootstrap. ++ # "off" runs a complete build with --disable-bootstrap ++ # "no" means to just build the first stage, and not create the stage1 ++ # directory. ++ # "lean" means a lean 3-stage bootstrap, i.e. delete each stage when no ++ # longer needed. ++ with_bootstrap = $(WITH_BOOTSTRAP) ++endif ++ ++# gcc-snapshot ... ++ifeq ($(trunk_build),yes) ++ ifeq ($(build_type),build-native) ++ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 armhf arm64 i386 powerpc ppc64 ppc64el riscv64 s390x sparc64)) ++ with_bootstrap := profiled ++ endif ++ endif ++ ++ # FIXME, disable profiled build for some archs ++ #ifneq (,$(filter $(DEB_HOST_ARCH), i386 armel armhf powerpc riscv64 amd64)) ++ # with_bootstrap := ++ #endif ++ ++ # Enable LTO only for 64bit builds ++ ifeq ($(DEB_BUILD_ARCH_BITS)-$(DEB_HOST_ARCH_BITS),64-64) ++ with_lto_build := yes ++ endif ++ ++ # FIXME, disable LTO build for some archs ++ ifneq (,$(filter $(DEB_HOST_ARCH), alpha ia64 mips64el hurd-amd64)) ++ with_lto_build := ++ endif ++ ++ # disable for testing purposes ++ with_bootstrap := ++ with_lto_build := ++endif ++ ++ifneq ($(trunk_build),yes) ++ ifeq ($(build_type),build-native) ++ ifeq (,$(DEB_STAGE)) ++ ifeq (,$(filter $(distrelease), jessie stretch precise trusty xenial bionic)) ++ ifneq (,$(filter $(DEB_HOST_ARCH), amd64 i386 armhf arm64 powerpc ppc64 ppc64el s390x sparc64)) ++ with_bootstrap := profiled ++ endif ++ # PR target/119937 ++ #ifeq ($(distribution)-$(DEB_HOST_ARCH),Debian-armhf) ++ # with_bootstrap := ++ #endif ++ endif ++ endif ++ endif ++ ++ # Enable LTO only for 64bit builds ++ ifeq ($(DEB_BUILD_ARCH_BITS)-$(DEB_HOST_ARCH_BITS),64-64) ++ with_lto_build := yes ++ endif ++ ++ # FIXME: hppa has issues with parsing the jobs output. ++ # FIXME: m68k and sh4 running on simulators, don't care ... ++ # FIXME: buildds not powerful enough: mips* ++ # FIXME: just let it build, takes too long: hurd-amd64 hurd-i386 ++ # FIXME: not yet tried to build: alpha ++ # FIXME: ia64, see https://gcc.gnu.org/PR98504 ++ # FIXME: mips64el requested by syq ++ ifneq (,$(filter $(DEB_HOST_ARCH), alpha hppa ia64 m68k mips mipsel mips64el sh4 sparc64 hurd-amd64 hurd-i386)) ++ with_lto_build := ++ endif ++ # Slow builders in Debian ++ ifeq ($(distribution)-$(DEB_HOST_ARCH),Debian-riscv64) ++ with_lto_build := ++ endif ++ ++ # FIXME: newer binutils needed? ++ ifneq (,$(filter $(distrelease),stretch precise trusty xenial bionic focal)) ++ with_bootstrap := ++ with_lto_build := ++ endif ++ ++ # disable for testing purposes ++ #with_bootstrap := ++ #with_lto_build := ++endif ++ ++ifneq ($(findstring nostrap, $(DEB_BUILD_OPTIONS)),) ++ with_bootstrap := off ++endif ++ ++ifneq ($(findstring nolto, $(DEB_BUILD_OPTIONS)),) ++ with_lto_build := ++endif ++ ++ifneq ($(findstring nopgo, $(DEB_BUILD_OPTIONS)),) ++ ifeq ($(with_bootstrap),profiled) ++ with_bootstrap := ++ endif ++endif ++ ++ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) ++ with_bootstrap := off ++ with_lto_build := ++ DEB_BUILD_OPTIONS := $(DEB_BUILD_OPTIONS) nostrip ++ export DEB_BUILD_OPTIONS ++endif ++ ++ifeq ($(build_type),build-native) ++ usage_stats = yes ++ ifeq ($(derivative),Ubuntu) ++ no_usage_archs = i386 ++ else ifeq ($(derivative),Debian) ++ no_usage_archs = alpha hppa ia64 m68k mipsel mips64el sh4 sparc64 x32 \ ++ hurd-amd64 hurd-i386 ++ endif ++ ifneq (,$(filter $(DEB_HOST_ARCH),$(no_usage_archs))) ++ usage_stats = ++ endif ++endif ++usage_stats = disabled for release builds ++ ++# ------------------------------------------------------------------- ++# stage options ++ifdef DEB_STAGE ++ with_cdev := yes ++ separate_lang := yes ++ # "stage1" is minimal compiler with static libgcc ++ # "stage2" is minimal compiler with shared libgcc ++ # "rtlibs" is a subset of target libraries, without compilers ++ ifeq ($(DEB_STAGE),stage1) ++ with_shared_libgcc := no ++ endif ++ ifeq ($(DEB_STAGE),stage2) ++ with_libgcc := yes ++ with_shared_libgcc := yes ++ endif ++ ifeq ($(DEB_STAGE),rtlibs) ++ with_rtlibs := libgcc libgomp libstdc++ libgfortran libquadmath ++ ifeq ($(DEB_CROSS),yes) ++ LS := ++ TS := ++ cross_lib_arch := ++ endif ++ endif ++endif ++ ++ifeq ($(BACKPORT),true) ++ with_dev := no ++ with_source := yes ++ with_base_only := yes ++endif ++ ++# ------------------------------------------------------------------- ++# sysroot options ++ifdef WITH_SYSROOT ++ with_sysroot = $(WITH_SYSROOT) ++endif ++ifdef WITH_BUILD_SYSROOT ++ with_build_sysroot = $(WITH_BUILD_SYSROOT) ++endif ++ ++# ------------------------------------------------------------------- ++# for components configuration ++ ++# lang= overwrites all of nolang=, overwrites all of WITHOUT_LANG ++ ++DEB_LANG_OPT := $(filter lang=%,$(DEB_BUILD_OPTIONS)) ++DEB_LANG := $(strip $(subst $(COMMA), ,$(patsubst lang=%,%,$(DEB_LANG_OPT)))) ++DEB_NOLANG_OPT := $(filter nolang=%,$(DEB_BUILD_OPTIONS)) ++DEB_NOLANG := $(strip $(subst $(COMMA), ,$(patsubst nolang=%,%,$(DEB_NOLANG_OPT)))) ++lfilt = $(strip $(if $(DEB_LANG), \ ++ $(if $(filter $(1) $(2),$(DEB_LANG)),yes),$(3))) ++nlfilt = $(strip $(if $(DEB_NOLANG), \ ++ $(if $(filter $(1) $(2),$(DEB_NOLANG)),disabled by $(DEB_NOLANG_OPT),$(3)))) ++wlfilt = $(strip $(if $(filter $(1) $(2), $(subst $(COMMA), ,$(WITHOUT_LANG))), \ ++ disabled by WITHOUT_LANG=$(WITHOUT_LANG),$(3))) ++envfilt = $(strip $(or $(call lfilt,$(1),$(2)),$(call nlfilt,$(1),$(3)),$(call wlfilt,$(1),$(3)),$(4))) ++ ++# ------------------------------------------------------------------- ++# architecture specific config ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) ++ with_async_unwind = yes ++endif ++ ++ifeq ($(derivative),Ubuntu) ++ ifeq (,$(filter $(distrelease),precise trusty xenial bionic)) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 i386 ppc64 ppc64el s390x x32)) ++ with_stack_clash := yes ++ endif ++ endif ++ ifeq (,$(filter $(distrelease),precise trusty xenial bionic)) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 x32)) ++ with_cf_protection := yes ++ endif ++ endif ++endif ++ ++ifeq ($(DEB_TARGET_ARCH),armhf) ++ ifeq ($(distribution),Raspbian) ++ with_arm_thumb := no ++ else ++ with_arm_thumb := yes ++ endif ++else ++ ifeq ($(derivative)-$(DEB_TARGET_ARCH),Ubuntu-armel) ++ ifneq (,$(filter $(distrelease), precise)) ++ with_arm_thumb := yes ++ endif ++ endif ++endif ++ ++timet64_archs = armel armhf hppa m68k mips mipsel powerpc sh4 ++no_timet64_distreleases = jessy stretch buster bullseye bookworm \ ++ precise trusty xenial bionic focal jammy kinetic lunar mantic ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH), $(timet64_archs))) ++ ifeq (,$(filter $(distrelease),$(no_timet64_distreleases))) ++ with_timet64 = yes ++ endif ++endif ++ ++# build using fsf or the ibm branch ++ifeq ($(distribution),Ubuntu) ++ ifneq (,$(findstring $(DEB_TARGET_ARCH),ppc64el)) ++ #with_ibm_branch = yes ++ endif ++endif ++ ++ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) ++ with_ibm_branch = ++endif ++ ++# check if we're building for armel or armhf ++ifneq (,$(filter %eabihf,$(DEB_TARGET_GNU_SYSTEM))) ++ float_abi := hard ++else ifneq (,$(filter $(distribution)-$(DEB_TARGET_ARCH), Ubuntu-armel)) ++ ifneq (,$(filter $(distrelease), precise)) ++ float_abi := softfp ++ else ++ float_abi := soft ++ endif ++else ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel)) ++ float_abi := soft ++endif ++ ++sframe_archs = amd64 arm64 ++no_sframe_distreleases = jessy stretch buster bullseye bookworm trixie \ ++ forky \ ++ precise trusty xenial bionic focal jammy kinetic lunar mantic \ ++ noble oracular plucky questing resolute ++ifneq (,$(filter $(DEB_TARGET_ARCH), $(sframe_archs))) ++ ifeq (,$(filter $(distrelease),$(no_sframe_distreleases))) ++ with_sframe = yes ++ endif ++endif ++ ++# turn off sframe everywhere, don't enabled before SFrame V3 ++with_sframe = ++ ++ppc64el_ibm128_distreleases = jessie stretch buster bullseye bookworm trixie \ ++ precise xenial bionic focal jammy noble oracular plucky ++ ++# ------------------------------------------------------------------- ++# basic config ++ ++# allows to write backtraces for ICEs ++#unstripped_exe = yes ++#ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 armhf arm64 i386 ppc64el riscv64 s390x)) ++# unstripped_exe = yes ++#endif ++ ++# common things --------------- ++# build common packages, where package names don't differ in different ++# gcc versions (fixincludes, ...) ++#with_common_pkgs := yes ++# ... and some libraries, which do not change (libgcc1, libssp0). ++#with_common_libs := yes ++# XXX: should with_common_libs be "yes" only if this is the default compiler ++# version on the targeted arch? ++ ++# build -dbg packages (with_dbg is empty when -dbg package are not built) ++ifneq (,$(filter $(distrelease), jessie stretch buster precise trusty xenial bionic)) ++ with_dbg = yes ++else ++ ifeq ($(derivative),Ubuntu) ++ v_dbg = 9.2.1-21ubuntu1 ++ else ifeq ($(derivative),Debian) ++ v_dbg = 9.2.1-21 ++ else ++ $(error unknown version for -dbgsym package migration) ++ endif ++endif ++ ++# is this a multiarch-enabled build? ++#ifneq (,$(filter $(distrelease), FIXME when removing multilib)) ++ with_multiarch_lib := yes ++#endif ++ ++ifeq ($(with_multiarch_lib),yes) ++ ifneq ($(single_package),yes) ++ ifneq ($(DEB_CROSS),yes) ++ with_multiarch_cxxheaders := yes ++ endif ++ endif ++endif ++ ++multiarch_stage1 := yes ++ ++MIPS_R6_ENABLED = no ++ifeq (,$(filter $(distrelease), jessie precise trusty xenial)) ++ MIPS_R6_ENABLED = yes ++endif ++ ++# mapping for the non-default biarch multilib / multiarch names ++multiarch_xarch_map = \ ++ amd64=i386-linux-gnu,x86_64-linux-gnux32 \ ++ armel=arm-linux-gnueabi \ ++ armhf=arm-linux-gnueabihf \ ++ i386=x86_64-linux-gnu,x86_64-linux-gnux32 \ ++ powerpc=powerpc64-linux-gnu \ ++ ppc64=powerpc-linux-gnu \ ++ sparc=sparc64-linux-gnu \ ++ sparc64=sparc-linux-gnu \ ++ s390=s390x-linux-gnu \ ++ s390x=s390-linux-gnu \ ++ mips=mips64-linux-gnuabin32,mips64-linux-gnuabi64 \ ++ mipsel=mips64el-linux-gnuabin32,mips64el-linux-gnuabi64 \ ++ mipsn32=mips-linux-gnu,mips64-linux-gnuabi64 \ ++ mipsn32el=mipsel-linux-gnu,mips64el-linux-gnuabi64 \ ++ mips64=mips-linux-gnu,mips64-linux-gnuabin32 \ ++ mips64el=mipsel-linux-gnu,mips64el-linux-gnuabin32 \ ++ mipsr6=mipsisa64r6-linux-gnuabin32,mipsisa64r6-linux-gnuabi64 \ ++ mipsr6el=mipsisa64r6el-linux-gnuabin32,mipsisa64r6el-linux-gnuabi64 \ ++ mipsn32r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabi64 \ ++ mipsn32r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabi64 \ ++ mips64r6=mipsisa32r6-linux-gnu,mipsisa64r6-linux-gnuabin32 \ ++ mips64r6el=mipsisa32r6el-linux-gnu,mipsisa64r6el-linux-gnuabin32 \ ++ x32=x86_64-linux-gnu,i386-linux-gnu ++xarch_multiarch_names = $(subst $(COMMA),$(SPACE),$(patsubst $(DEB_TARGET_ARCH)=%,%, \ ++ $(filter $(DEB_TARGET_ARCH)=%,$(multiarch_xarch_map)))) ++ ++multilib_multiarch_map = \ ++ $(DEB_TARGET_ARCH)/=$(DEB_TARGET_MULTIARCH) \ ++ amd64/32=i386-linux-gnu \ ++ amd64/x32=x86_64-linux-gnux32 \ ++ i386/64=x86_64-linux-gnu \ ++ i386/x32=x86_64-linux-gnux32 \ ++ powerpc/64=powerpc64-linux-gnu \ ++ ppc64/32=powerpc-linux-gnu \ ++ sparc/64=sparc64-linux-gnu \ ++ sparc64/32=sparc-linux-gnu \ ++ s390/64=s390x-linux-gnu \ ++ s390x/32=s390-linux-gnu \ ++ mips/n32=mips64-linux-gnuabin32 \ ++ mips/64=mips64-linux-gnuabi64 \ ++ mipsel/n32=mips64el-linux-gnuabin32 \ ++ mipsel/64=mips64el-linux-gnuabi64 \ ++ mipsn32/32=mips-linux-gnu \ ++ mipsn32/64=mips64-linux-gnuabi64 \ ++ mipsn32el/32=mipsel-linux-gnu \ ++ mipsn32el/64=mips64el-linux-gnuabi64 \ ++ mips64/32=mips-linux-gnu \ ++ mips64/n32=mips64-linux-gnuabin32 \ ++ mips64el/32=mipsel-linux-gnu \ ++ mips64el/n32=mips64el-linux-gnuabin32 \ ++ mipsr6/n32=mipsisa64r6-linux-gnuabin32 \ ++ mipsr6/64=mipsisa64r6-linux-gnuabi64 \ ++ mipsr6el/n32=mipsisa64r6el-linux-gnuabin32 \ ++ mipsr6el/64=mipsisa64r6el-linux-gnuabi64 \ ++ mipsn32r6/32=mipsisa32r6-linux-gnu \ ++ mipsn32r6/64=mipsisa64r6-linux-gnuabi64 \ ++ mipsn32r6el/32=mipsisa32r6el-linux-gnu \ ++ mipsn32r6el/64=mipsisa64r6el-linux-gnuabi64 \ ++ mips64r6/32=mipsisa32r6-linux-gnu \ ++ mips64r6/n32=mipsisa64r6-linux-gnuabin32 \ ++ mips64r6el/32=mipsisa32r6el-linux-gnu \ ++ mips64r6el/n32=mipsisa64r6el-linux-gnuabin32 \ ++ x32/32=i386-linux-gnu \ ++ x32/64=x86_64-linux-gnu ++# $(call mlib_to_march,|32|64|n32|x32) ++mlib_to_march = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \ ++ $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_multiarch_map))) ++ ++multilib_arch_map = \ ++ $(DEB_TARGET_ARCH)/=$(DEB_TARGET_ARCH) \ ++ amd64/32=i386 \ ++ amd64/x32=x32 \ ++ i386/64=amd64 \ ++ i386/x32=x32 \ ++ powerpc/64=ppc64 \ ++ ppc64/32=powerpc \ ++ sparc/64=sparc64 \ ++ sparc64/32=sparc \ ++ s390/64=s390x \ ++ s390x/32=s390 \ ++ mips/n32=mipsn32 \ ++ mips/64=mips64 \ ++ mipsel/n32=mipsn32el \ ++ mipsel/64=mips64el \ ++ mipsn32/32=mips \ ++ mipsn32/64=mips64 \ ++ mipsn32el/32=mipsel \ ++ mipsn32el/64=mips64el \ ++ mips64/32=mips \ ++ mips64/n32=mipsn32 \ ++ mips64el/32=mipsel \ ++ mips64el/n32=mipsn32el \ ++ mipsr6/n32=mipsn32r6 \ ++ mipsr6/64=mips64r6 \ ++ mipsr6el/n32=mipsn32r6el \ ++ mipsr6el/64=mips64r6el \ ++ mipsn32r6/32=mipsr6 \ ++ mipsn32r6/64=mips64r6 \ ++ mipsn32r6el/32=mipsr6el \ ++ mipsn32r6el/64=mips64r6el \ ++ mips64r6/32=mipsr6 \ ++ mips64r6/n32=mipsn32r6 \ ++ mips64r6el/32=mipsr6el \ ++ mips64r6el/n32=mipsn32r6el \ ++ x32/32=i386 \ ++ x32/64=amd64 ++# $(call mlib_to_arch,|32|64|n32|x32) ++mlib_to_arch = $(patsubst $(DEB_TARGET_ARCH)/$(1)=%,%, \ ++ $(filter $(DEB_TARGET_ARCH)/$(1)=%,$(multilib_arch_map))) ++ ++# build -base packages ++with_gccbase := yes ++ifeq ($(build_type),build-cross) ++ ifneq ($(DEB_STAGE),rtlibs) ++ with_gcclbase := yes ++ endif ++endif ++ ++# build dev packages. ++ifneq ($(DEB_STAGE),rtlibs) ++ with_dev := yes ++endif ++ ++with_cpp := yes ++ ++# set lang when built from a different source package. ++separate_lang := no ++ ++#no_dummy_cpus := ia64 i386 hppa s390 sparc ++#ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(no_dummy_cpus))) ++# with_base_only := no ++# with_common_libs := yes ++# with_common_pkgs := yes ++#else ++# with_base_only := yes ++# with_common_libs := no ++# with_common_pkgs := no ++# with_dev := no ++#endif ++ ++ifeq ($(versioned_packages),yes) ++ pkg_ver := -$(BASE_VERSION) ++ PV := $(pkg_ver) ++endif ++ ++# ------------------------------------------------------------------- ++# configure languages ++ ++# C --------------------------- ++enabled_languages := c ++ ++# libdiagnostics is also built in the jit build ++with_jit = yes ++ ++# FIXME: compiler bug ++# m68k: PR 95381 ++jit_no_cpus := ia64 ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(jit_no_cpus))) ++ with_jit := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++endif ++ifneq (,$(with_rtlibs)) ++ with_jit := disabled for rtlibs stage ++endif ++ifneq ($(findstring nojit, $(DEB_BUILD_OPTIONS)),) ++ with_jit := disabled by DEB_BUILD_OPTIONS ++endif ++with_jit := $(call envfilt, jit, , , $(with_jit)) ++ ++ifeq (,$(findstring gcc-,$(PKGSOURCE))) ++ with_jit := ++endif ++ ++# this fails when installing the jit build ++# libtool: install: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/./binutils/ranlib /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/debian/tmp-jit/usr/lib/gcc-toolchain-13/lib/../lib/libgomp.a ++# /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/binutils/.libs/ranlib: error while loading shared libraries: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/bfd/.libs/libbfd-2.41-tc13.so: file too short ++# /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/binutils/.libs/ranlib: error while loading shared libraries: /home/packages/gcc/13/tc/gcc-toolchain-13-13.2.0+2.41/build-jit/bfd/.libs/libbfd-2.41-tc13.so: file too short ++ ++ifneq (,$(findstring gcc-toolchain,$(PKGSOURCE))) ++ with_jit := disabled for $(PKGSOURCE) builds ++endif ++ ++ifneq (,$(findstring build-cross, $(build_type))) ++ with_jit := disabled for cross builds ++endif ++ ++ifeq ($(with_jit),yes) ++ #ifeq ($(with_common_libs),yes) ++ with_libgccjit := yes ++ #endif ++ ifeq ($(with_common_libs),yes) ++ with_libdiag := yes ++ endif ++ ifneq (,$(filter $(distrelease), no-release-yet-with-15-as-default)) ++ with_versioned_libgccjit := no ++ else ++ with_versioned_libgccjit := yes ++ endif ++endif ++ ++nvptx_archs := amd64 arm64 ppc64el ++# arm64, see PR target/96265 ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(nvptx_archs))) ++ offload_targets += nvptx-none ++ with_offload_nvptx := yes ++endif ++ifneq (,$(filter $(distrelease), precise)) ++ offload_targets := ++ with_offload_nvptx := ++endif ++ifneq (,$(findstring build-cross, $(build_type))) ++ offload_targets := ++ with_offload_nvptx := disabled for cross builds ++endif ++ ++ifeq ($(single_package),yes) ++ ifneq ($(trunk_build),yes) ++ offload_targets := ++ with_offload_nvptx := disabled for $(PKGSOURCE) builds ++ endif ++endif ++ifneq ($(findstring nonvptx, $(DEB_BUILD_OPTIONS)),) ++ offload_targets := ++ with_offload_nvptx := disabled by DEB_BUILD_OPTIONS ++endif ++with_offload_nvptx := $(call envfilt, nvptx, , , $(with_offload_nvptx)) ++#offload_targets := ++#with_offload_nvptx := not yet built for GCC 15 ++ ++gcn_archs := amd64 ++gcn_target_name = amdgcn-amdhsa ++ ++ifneq (,$(filter $(distrelease),buster xenial bionic focal groovy)) ++ gcn_tools_llvm_version = 9 ++else ifneq (,$(filter $(distrelease),focal groovy)) ++ gcn_tools_llvm_version = 11 ++else ++ gcn_tools_llvm_version = tools ++endif ++ifeq ($(gcn_tools_llvm_version),tools) ++ ifneq (,$(filter $(distrelease), bookworm trixie xenial bionic focal)) ++ AMDGCN_TOOLS_DEP = amdgcn-tools-19 [$(gcn_archs)], ++ else ++ AMDGCN_TOOLS_DEP = amdgcn-tools-21 [$(gcn_archs)], ++ endif ++else ++ AMDGCN_TOOLS_DEP = llvm-$(gcn_tools_llvm_version)$(if $(pkg_llvm_ver), (>= $(pkg_llvm_ver))) [$(gcn_archs)], \ ++ lld-$(gcn_tools_llvm_version)$(if $(pkg_llvm_ver), (>= $(pkg_llvm_ver))) [$(gcn_archs)], ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(gcn_archs))) ++ offload_targets += $(gcn_target_name) ++ with_offload_gcn := yes ++endif ++ifneq (,$(filter $(distrelease), precise bionic focal)) ++ offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) ++ with_offload_gcn := ++ AMDGCN_TOOLS_DEP = ++endif ++ifneq (,$(findstring build-cross, $(build_type))) ++ offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) ++ with_offload_gcn := disabled for cross builds ++endif ++ ++ifeq ($(single_package),yes) ++ ifneq ($(trunk_build),yes) ++ offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) ++ with_offload_gcn := disabled for $(PKGSOURCE) builds ++ endif ++endif ++ifneq ($(findstring nogcn, $(DEB_BUILD_OPTIONS)),) ++ offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) ++ with_offload_gcn := disabled by DEB_BUILD_OPTIONS ++endif ++with_offload_gcn := $(call envfilt, gcn, , , $(with_offload_gcn)) ++#offload_targets := $(filter-out $(gcn_target_name), $(offload_targets)) ++#with_offload_gcn := not yet built for GCC 15 ++ ++with_cc1 := yes ++with_cc1 := $(call envfilt, cc1, , , $(with_cc1)) ++ ++ifeq ($(with_cc1),yes) ++ ifeq ($(with_common_libs),yes) ++ with_libcc1 := yes ++ endif ++ with_libcc1_plugin := yes ++endif ++ ++ifneq (,$(with_rtlibs)) ++ with_libcc1 := disabled for rtlibs stage ++ with_libcc1_plugin := disabled for rtlibs stage ++endif ++ifneq (,$(findstring build-cross, $(build_type))) ++ with_libcc1 := disabled for cross builds ++endif ++ ++# Build all packages needed for C development ++ifneq ($(with_base_only),yes) ++ ifeq ($(with_dev),yes) ++ with_cdev := yes ++ endif ++endif ++ ++ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) ++# Ada -------------------- ++ada_no_cpus := arc ia64 sh3 sh3eb sh4eb ++ada_no_systems := ++ada_no_cross := no ++ada_no_snap := no ++#ifeq ($(single_package),yes) ++# ifneq (,$(filter $(DEB_TARGET_ARCH),alpha)) ++# ada_no_snap := yes ++# endif ++#endif ++#ifeq ($(DEB_CROSS),yes) ++# ifneq (,$(filter $(DEB_TARGET_ARCH),alpha)) ++# ada_no_cross := yes ++# endif ++#endif ++ ++ifeq ($(with_dev),yes) ++ ifneq ($(separate_lang),yes) ++ with_ada := yes ++ endif ++endif ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(ada_no_cpus))) ++ with_ada := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++endif ++ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(ada_no_systems))) ++ with_ada := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++ifeq ($(ada_no_cross)-$(DEB_CROSS),yes-yes) ++ with_ada := disabled for cross compiler package ++endif ++ifeq ($(ada_no_snap)-$(single_package),yes-yes) ++ with_ada := disabled for snapshot build ++endif ++ifneq (,$(filter $(distrelease), precise)) ++ with_ada := ++endif ++with_ada := $(call envfilt, ada, , , $(with_ada)) ++ ++ifeq ($(DEB_STAGE)-$(filter libgnat, $(with_rtlibs)),rtlibs-) ++ with_ada := disabled for rtlibs stage ++endif ++#with_ada := disabled for GCC 15 ++ ++ifeq ($(with_ada),yes) ++ enabled_languages += ada ++ with_libgnat := yes ++ #with_gnatsjlj := yes ++endif ++ ++# C++ ------------------------- ++cxx_no_cpus := avr ++ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_cxx := yes ++ endif ++endif ++ifneq (,$(findstring $(DEB_TARGET_ARCH_CPU),$(cxx_no_cpus))) ++ with_cxx := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++endif ++with_cxx := $(call envfilt, c++, obj-c++, , $(with_cxx)) ++ ++# Set the default libstdc++ ABI. libstdc++ provides both ABI's. ++# Existing code still runs with the new c++11 ABI, however link ++# errors are seen when one object is compiled with the new std::string in scope, ++# another object is compiled with the old std::string in scope. both can link ++# to libstdc++.so but not to each other. ++# two objects (which might be some system library and a user's program) need to ++# agree on the version of std::string they're using ++ ++libstdcxx_abi = new ++# backports default to the old ABI ++ifneq (,$(filter $(distrelease), jessie precise trusty)) ++ libstdcxx_abi = gcc4-compatible ++endif ++ ++# Build all packages needed for C++ development ++ifeq ($(with_cxx),yes) ++ ifeq ($(with_dev),yes) ++ with_cxxdev := yes ++ with_libcxxdbg := yes ++ endif ++ ifeq ($(with_common_libs),yes) ++ with_libcxx := yes ++ endif ++ ++ # debugging versions of libstdc++ ++ ifneq (,$(findstring gcc-, $(PKGSOURCE))) ++ ifeq ($(with_cxxdev),yes) ++ with_cxx_debug := yes ++ debug_no_archs := ++ ifneq (,$(findstring $(DEB_TARGET_ARCH),$(debug_no_archs))) ++ with_cxx_debug := disabled for cpu $(DEB_TARGET_ARCH) ++ endif ++ endif ++ endif ++ with_cxx_debug := $(call envfilt, debug, , , $(with_cxx_debug)) ++ ++ enabled_languages += c++ ++ ++ with_libcxx_doc := yes ++ ifneq (,$(findstring nodoc, $(DEB_BUILD_OPTIONS) $(DEB_BUILD_PROFILES))) ++ with_libcxx_doc := ++ endif ++endif ++ ++go_no_cross := yes ++go_no_cross := no ++ ++go_no_cpus := arc avr hppa loong64 ++go_no_cpus += m68k # See PR 79281 / PR 83314 ++#go_no_cpus += armel # See Debian #1061370 ++go_no_systems := ++ifneq (,$(filter $(distrelease),precise)) ++ go_no_cpus += armhf ++endif ++# Debian #969221 ++go_no_cpus += sh4 ++ ++ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_go := yes ++ endif ++endif ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(go_no_cpus))) ++ with_go := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++endif ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(go_no_cpus))) ++ with_go := disabled for arch $(DEB_TARGET_ARCH) ++endif ++ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(go_no_systems))) ++ with_go := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++ifeq ($(go_no_cross)-$(DEB_CROSS),yes-yes) ++ with_go := disabled for cross compiler package ++endif ++ifeq ($(DEB_STAGE)-$(filter libgo, $(with_rtlibs)),rtlibs-) ++ with_go := disabled for rtlibs stage ++endif ++with_go := $(call envfilt, go, , , $(with_go)) ++ ++# Build all packages needed for Go development ++ifneq (,$(findstring gcc, $(PKGSOURCE))) ++ ifeq ($(with_go),yes) ++ ifeq ($(with_dev),yes) ++ with_godev := yes ++ endif ++ with_libgo := yes ++ enabled_languages += go ++ endif ++endif ++ ++# D --------------------------- ++d_no_cross := yes ++d_no_snap := ++d_no_cpus := alpha arc ia64 m68k sh4 s390 ++d_no_systems := gnu ++ ++ifneq ($(separate_lang),yes) ++ with_d := yes ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(d_no_cpus))) ++ with_d := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++endif ++ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(d_no_systems))) ++ with_d := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++ifeq ($(d_no_snap)-$(single_package),yes-yes) ++ with_d := disabled for snapshot build ++endif ++ifeq ($(DEB_STAGE)-$(filter libphobos, $(with_rtlibs)),rtlibs-) ++ with_d := disabled for rtlibs stage ++endif ++ifeq ($(GENERATE_DFSG_TARBALL),yes) ++ with_d := disabled while generating the dfsg tarball ++endif ++with_d := $(call envfilt, d, , , $(with_d)) ++#with_d := not yet built for GCC 15 ++ ++ifeq ($(with_base_only),yes) ++ with_d := no ++endif ++ ++ifeq ($(with_d),yes) ++ phobos_archs = ++ druntime_only_archs = powerpc ppc64 ++ ifneq (,$(filter $(distrelease),$(ppc64el_ibm128_distreleases))) ++ druntime_only_archs += ppc64el ++ else ++ phobos_archs += ppc64el ++ endif ++ phobos_archs += amd64 arm64 armel armhf i386 x32 ++ phobos_archs += hppa ++ phobos_archs += mips mips64 mipsel mips64el ++ phobos_archs += mipsn32 mipsn32el ++ phobos_archs += mipsr6 mipsr6el mipsn32r6 mipsn32r6el mips64r6 mips64r6el ++ phobos_archs += riscv64 s390x loong64 sparc64 ++ phobos_archs += $(druntime_only_archs) ++ phobos_archs := $(sort $(phobos_archs)) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), $(phobos_archs))) ++ with_phobos := yes ++ endif ++ ++ phobos_no_systems := gnu ++ ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(phobos_no_systems))) ++ with_phobos := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++ endif ++ with_libphobosdev := $(with_phobos) ++ ++ enabled_languages += d ++endif ++ ++# Fortran 95 ------------------- ++fortran_no_cross := yes ++fortran_no_cross := no ++ ++ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_fortran := yes ++ endif ++endif ++ifeq ($(fortran_no_cross)-$(DEB_CROSS),yes-yes) ++ with_fortran := disabled for cross compiler package ++endif ++ifeq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-) ++ with_fortran := disabled for rtlibs stage ++endif ++ ++with_fortran := $(call envfilt, fortran, , , $(with_fortran)) ++ ++# Build all packages needed for Fortran development ++ifeq ($(with_fortran),yes) ++ ifeq ($(with_dev),yes) ++ ifneq ($(DEB_STAGE)-$(filter libgfortran libquadmath, $(with_rtlibs)),rtlibs-) ++ with_fdev := yes ++ endif ++ endif ++ ifeq ($(with_common_libs),yes) ++ with_libgfortran := yes ++ endif ++ enabled_languages += fortran ++endif ++ ++# libquadmath ------------------- ++ ++quadmath_targets = amd64 ia64 i386 x32 \ ++ hurd-amd64 hurd-i386 ppc64el ++# powerpc and ppc64 don't have power7 CPU defaults ... ++ifneq (,$(filter $(DEB_TARGET_ARCH), $(quadmath_targets))) ++ # FIXME: upstream build tied to gfortran build ++ ifeq ($(with_fortran),yes) ++ with_qmath := yes ++ ifneq (,$(findstring gcc-15,$(PKGSOURCE))) ++ ifeq ($(with_common_libs),yes) ++ with_libqmath := yes ++ endif ++ endif ++ endif ++endif ++ ++# ObjC ------------------------ ++objc_no_cross := no ++ ++ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_objc := yes ++ objc_no_archs = ++ ifneq (,$(filter $(DEB_TARGET_ARCH),$(objc_no_archs))) ++ with_objc := ++ endif ++ endif ++endif ++ifeq ($(objc_no_cross)-$(DEB_CROSS),yes-yes) ++ with_objc := disabled for cross compiler package ++endif ++ifeq ($(DEB_STAGE)-$(filter libobjc, $(with_rtlibs)),rtlibs-) ++ with_objc := disabled for rtlibs stage ++endif ++with_objc := $(call envfilt, objc, obj-c++, , $(with_objc)) ++ ++ifeq ($(with_objc),yes) ++ # the ObjC runtime with garbage collection enabled needs the Boehm GC ++ with_objc_gc := yes ++ ++ # disable ObjC garbage collection library (needs libgc) ++ libgc_no_cpus := avr ++ ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(libgc_no_cpus))) ++ with_objc_gc := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++ endif ++ ifneq (,$(findstring build-cross, $(build_type))) ++ with_objc_gc := disabled for cross builds ++ endif ++ # Build all packages needed for Objective-C development ++ ifeq ($(with_dev),yes) ++ with_objcdev := yes ++ endif ++ ifeq ($(with_common_libs),yes) ++ with_libobjc := yes ++ endif ++ ++ enabled_languages += objc ++endif ++ ++# ObjC++ ---------------------- ++objcxx_no_cross := no ++ ++ifeq ($(with_objc),yes) ++ ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_objcxx := yes ++ endif ++ endif ++endif ++ifeq ($(objcxx_no_cross)-$(DEB_CROSS),yes-yes) ++ with_objcxx := disabled for cross compiler package ++endif ++with_objcxx := $(call envfilt, obj-c++, , c++ objc, $(with_objcxx)) ++ ++ifeq ($(with_objcxx),yes) ++ enabled_languages += obj-c++ ++endif ++ ++# Modula-2 ------------------- ++m2_no_cross := yes ++m2_no_cross := no ++ ++ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_m2 := yes ++ endif ++endif ++m2_no_cpus = powerpc ppc64 sh4 ++m2_no_systems = ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(m2_no_cpus))) ++ with_m2 := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++endif ++ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(m2_no_systems))) ++ with_m2 := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++ifeq ($(m2_no_cross)-$(DEB_CROSS),yes-yes) ++ with_m2 := disabled for cross compiler package ++endif ++ifeq ($(DEB_STAGE)-$(filter libgm2, $(with_rtlibs)),rtlibs-) ++ with_m2 := disabled for rtlibs stage ++endif ++ifneq (,$(filter $(distrelease),precise)) ++ with_m2 := disabled for $(distrelease) backport ++endif ++#with_m2 := disabled for GCC 15 ++ ++with_m2 := $(call envfilt, m2, , , $(with_m2)) ++ ++# Build all packages needed for Modula-2 development ++ifeq ($(with_m2),yes) ++ ifeq ($(with_dev),yes) ++ with_m2dev := yes ++ endif ++ #ifeq ($(with_common_libs),yes) ++ with_libgm2 := yes ++ #endif ++ enabled_languages += m2 ++endif ++ ++# Rust ------------------- ++ ++rs_no_cross := yes ++ ++rs_no_cpus = alpha hppa ia64 m68k sh4 x32 ++rs_no_systems := gnu ++ ++ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_rs := yes ++ endif ++endif ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(rs_no_cpus))) ++ with_rs := disabled for arch $(DEB_TARGET_ARCH_CPU) ++else ifneq (,$(filter $(DEB_TARGET_ARCH),$(rs_no_cpus))) ++ with_rs := disabled for arch $(DEB_TARGET_ARCH) ++endif ++ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(rs_no_systems))) ++ with_rs := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++ifeq ($(rs_no_cross)-$(DEB_CROSS),yes-yes) ++ with_rs := disabled for cross compiler package ++endif ++#ifeq ($(DEB_STAGE)-$(filter libgrs, $(with_rtlibs)),rtlibs-) ++# with_rs := disabled for rtlibs stage ++#endif ++ ++#with_rs := disabled for GCC 15 ++ ++with_rs := $(call envfilt, rust, , , $(with_rs)) ++ ++# Build all packages needed for Rust development ++ifeq ($(with_rs),yes) ++ ifeq ($(with_dev),yes) ++ with_rsdev := yes ++ endif ++ ifeq ($(with_common_libs),yes) ++ with_libgrs := yes ++ endif ++ enabled_languages += rust ++endif ++ ++# COBOL ------------------- ++cobol_no_cross := yes ++cobol_no_cross := no ++ ++ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_cobol := yes ++ endif ++endif ++cobol_no_cpus = alpha arc arm hppa i386 loong64 m68k \ ++ mips mipsel mips64 mips64el \ ++ powerpc ppc64 s390x sh4 sparc sparc64 x32 ++cobol_no_systems = gnu ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(cobol_no_cpus))) ++ with_cobol := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++else ifneq (,$(filter $(DEB_TARGET_ARCH),$(cobol_no_cpus))) ++ with_cobol := disabled for arch $(DEB_TARGET_ARCH) ++endif ++ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(cobol_no_systems))) ++ with_cobol := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++#ifneq ($(DEB_HOST_ARCH_BITS),$(DEB_TARGET_ARCH_BITS)) ++# with_cobol := disabled for non matching arch bits ++#endif ++ifeq ($(cobol_no_cross)-$(DEB_CROSS),yes-yes) ++ with_cobol := disabled for cross compiler package ++endif ++ifeq ($(DEB_STAGE)-$(filter libgcobol, $(with_rtlibs)),rtlibs-) ++ with_cobol := disabled for rtlibs stage ++endif ++ifneq (,$(filter $(distrelease),precise)) ++ with_cobol := disabled for $(distrelease) backport ++endif ++#with_cobol := disabled for GCC 15 ++ ++with_cobol := $(call envfilt, cobol, , , $(with_cobol)) ++ ++# Build all packages needed for COBOL development ++ifeq ($(with_cobol),yes) ++ ifeq ($(with_dev),yes) ++ with_coboldev := yes ++ endif ++ #ifeq ($(with_common_libs),yes) ++ with_libgcobol := yes ++ #endif ++ enabled_languages += cobol ++endif ++ ++# Algol 68 ------------------- ++algol_no_cross := yes ++algol_no_cross := no ++ ++ifneq ($(with_base_only),yes) ++ ifneq ($(separate_lang),yes) ++ with_algol := yes ++ endif ++endif ++algol_no_cpus = ++algol_no_systems = ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(algol_no_cpus))) ++ with_algol := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++endif ++ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(algol_no_systems))) ++ with_algol := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++ifeq ($(algol_no_cross)-$(DEB_CROSS),yes-yes) ++ with_algol := disabled for cross compiler package ++endif ++ifeq ($(DEB_STAGE)-$(filter libga68, $(with_rtlibs)),rtlibs-) ++ with_algol := disabled for rtlibs stage ++endif ++ifneq (,$(filter $(distrelease),precise)) ++ with_algol := disabled for $(distrelease) backport ++endif ++#with_algol := disabled for GCC 15 ++ ++with_algol := $(call envfilt, algol68, , , $(with_algol)) ++ ++# Build all packages needed for Algol 68 development ++ifeq ($(with_algol),yes) ++ ifeq ($(with_dev),yes) ++ with_algoldev := yes ++ endif ++ #ifeq ($(with_common_libs),yes) ++ with_libga68 := yes ++ #endif ++ enabled_languages += algol68 ++endif ++ ++# ------------------------------------------------------------------- ++# other config ++ ++# not built from the main source package ++ifeq (,$(findstring gcc-,$(PKGSOURCE))) ++ extra_package := yes ++endif ++ ++with_nls := yes ++ifeq ($(trunk_build),yes) ++ with_nls := no ++endif ++with_nls := $(call envfilt, nls, , , $(with_nls)) ++ ++# powerpc nof libraries ----- ++with_libnof := no ++ ++ifneq (,$(findstring gcc-15,$(PKGSOURCE))) ++ ifeq (,$(with_rtlibs)) ++ with_source := yes ++ endif ++endif ++with_source := $(call envfilt, source, , , $(with_source)) ++ ++ifeq ($(with_cdev),yes) ++ ++# ssp & libssp ------------------------- ++with_ssp := yes ++ssp_no_archs = alpha hppa ia64 m68k ++ifneq (, $(filter $(DEB_TARGET_ARCH),$(ssp_no_archs) $(ssp_no_archs:%=uclibc-%))) ++ with_ssp := not available on $(DEB_TARGET_ARCH) ++endif ++with_ssp := $(call envfilt, ssp, , , $(with_ssp)) ++ ++ifeq ($(with_ssp),yes) ++ ifneq ($(derivative),Debian) ++ ifneq (,$(findstring gcc-15, $(PKGSOURCE))) ++ with_ssp_default := yes ++ endif ++ endif ++endif ++ ++# gomp -------------------- ++with_gomp := yes ++with_gomp := $(call envfilt, gomp, , , $(with_gomp)) ++gomp_no_archs = ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(gomp_no_archs))) ++ with_gomp := ++endif ++ ++# itm -------------------- ++itm_archs = alpha amd64 arm64 i386 x32 loong64 ppc64 ppc64el riscv64 s390x sh4 sparc64 ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(itm_archs))) ++ with_itm := yes ++endif ++with_itm := $(call envfilt, itm, , , $(with_itm)) ++ ++# atomic -------------------- ++with_atomic := yes ++atomic_no_archs = ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(atomic_no_archs))) ++ with_atomic := ++endif ++ ++# backtrace -------------------- ++with_backtrace := yes ++backtrace_no_archs = m68k ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(backtrace_no_archs))) ++ with_backtrace := ++endif ++ ++strip_sanitizer = ++ifneq (,$(filter $(distrelease),jessie stretch buster precise xenial bionic)) ++ strip_sanitizer = yes ++endif ++ ++# asan / sanitizer -------------------- ++with_asan := ++with_asan := $(call envfilt, asan, , , $(with_asan)) ++asan_archs = amd64 armel armhf arm64 i386 loong64 powerpc ppc64 ppc64el \ ++ riscv64 s390x sparc sparc64 x32 ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(asan_archs))) ++ with_asan := yes ++endif ++ ++# lsan / sanitizer -------------------- ++with_lsan := ++with_lsan := $(call envfilt, lsan, , , $(with_lsan)) ++lsan_archs = arm64 amd64 loong64 ppc64 ppc64el riscv64 s390x ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(lsan_archs))) ++ with_lsan := yes ++endif ++ ++# tsan / sanitizer -------------------- ++with_tsan := ++with_tsan := $(call envfilt, tsan, , , $(with_tsan)) ++tsan_archs = arm64 amd64 loong64 ppc64 ppc64el riscv64 s390x ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(tsan_archs))) ++ with_tsan := yes ++endif ++ ++# hwasan / sanitizer -------------------- ++with_hwasan := ++with_hwasan := $(call envfilt, hwasan, , , $(with_hwasan)) ++hwasan_archs = amd64 arm64 ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(hwasan_archs))) ++ with_hwasan := yes ++endif ++ ++# ubsan / sanitizer -------------------- ++with_ubsan := ++with_ubsan := $(call envfilt, ubsan, , , $(with_ubsan)) ++ubsan_archs = amd64 armel armhf arm64 i386 loong64 powerpc ppc64 ppc64el \ ++ riscv64 s390x sparc sparc64 x32 ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(ubsan_archs))) ++ with_ubsan := yes ++endif ++ ++endif # with_cdev ++ ++# libvtv -------------------- ++with_vtv := ++with_vtv := $(call envfilt, vtv, , , $(with_vtv)) ++vtv_archs = amd64 i386 x32 ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs))) ++ with_vtv := yes ++ with_libvtv := yes ++endif ++# libvtv builds a modified libstdc++, don't enable it by default ++with_vtv := ++with_libvtv := ++ ++# pie by default -------------------- ++with_pie := ++ifeq ($(distribution),Debian) ++ ifeq (,$(filter $(distrelease), jessie)) ++ pie_archs = amd64 arm64 armel armhf i386 \ ++ mips mipsel mips64 mips64el mipsn32 mipsn32el \ ++ mipsr6 mipsr6el mips64r6 mips64r6el mipsn32r6 mipsn32r6el \ ++ ppc64el s390x sparc sparc64 \ ++ hurd-amd64 hurd-i386 riscv64 loong64 ++ endif ++ ifeq (,$(filter $(distrelease), jessie stretch)) ++ pie_archs += powerpc ppc64 ++ endif ++else ifeq ($(distribution),Ubuntu) ++ ifeq (,$(filter $(distrelease), precise trusty)) ++ pie_archs = s390x ++ endif ++ ifeq (,$(filter $(distrelease), precise trusty xenial)) ++ pie_archs += amd64 ppc64el ++ endif ++ ifeq (,$(filter $(distrelease), precise trusty xenial)) ++ pie_archs += armhf arm64 i386 ++ endif ++ pie_archs += riscv64 ++endif ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(pie_archs))) ++ with_pie := yes ++endif ++ifeq ($(trunk_build),yes) ++ with_pie := disabled for trunk builds ++endif ++ ++# gold -------------------- ++# armel with binutils 2.20.51 only ++gold_archs = amd64 armel armhf i386 powerpc ppc64 ppc64el s390x sparc sparc64 x32 hurd-amd64 hurd-i386 ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(gold_archs))) ++ with_gold := yes ++endif ++ ++# plugins -------------------- ++with_plugins := yes ++ifneq (,$(with_rtlibs)) ++ with_plugins := disabled for rtlibs stage ++endif ++ ++endif # ifeq (,$(filter $(DEB_STAGE),stage1 stage2)) ++ ++# Don't include docs with GFDL invariant sections ++GFDL_INVARIANT_FREE := yes ++ifeq ($(derivative),Ubuntu) ++ GFDL_INVARIANT_FREE := no ++endif ++ ++# ------------------------------------------------------------------- ++# non-extra config ++ifeq ($(extra_package),yes) ++else ++ # libssp ------------------ ++ ifeq ($(with_ssp)-$(with_common_libs),yes-yes) ++ #ifneq ($(DEB_CROSS),yes) ++ with_libssp := $(if $(wildcard $(builddir)/gcc/auto-host.h),$(shell if grep -qs '^\#define TARGET_LIBC_PROVIDES_SSP 1' $(builddir)/gcc/auto-host.h; then echo 'libc provides ssp'; else echo 'yes'; fi)) ++ #endif ++ with_libssp := libc provides ssp ++ endif ++ ++ # libgomp ----------------- ++ ifeq ($(with_gomp)-$(with_common_libs),yes-yes) ++ with_libgomp := yes ++ endif ++ ++ # libitm ----------------- ++ ifeq ($(with_itm)-$(with_common_libs),yes-yes) ++ with_libitm := yes ++ endif ++ ++ # libatomic ----------------- ++ ifeq ($(with_atomic)-$(with_common_libs),yes-yes) ++ with_libatomic := yes ++ endif ++ ++ # libbacktrace ----------------- ++ ifeq ($(with_backtrace)-$(with_common_libs),yes-yes) ++ # currently not a shared library ++ #with_libbacktrace := yes ++ endif ++ ++ # libasan ----------------- ++ ifeq ($(with_asan)-$(with_common_libs),yes-yes) ++ ifeq ($(with_asan),yes) ++ with_libasan := yes ++ endif ++ endif ++ ++ # liblsan ----------------- ++ ifeq ($(with_lsan)-$(with_common_libs),yes-yes) ++ #ifneq ($(DEB_CROSS),yes) ++ with_liblsan := yes ++ #endif ++ endif ++ ++ # libtsan ----------------- ++ ifeq ($(with_tsan)-$(with_common_libs),yes-yes) ++ with_libtsan := yes ++ endif ++ ++ # libubsan ----------------- ++ ifeq ($(with_ubsan)-$(with_common_libs),yes-yes) ++ ifeq ($(with_ubsan),yes) ++ with_libubsan := yes ++ endif ++ endif ++ ++ # libhwasan ----------------- ++ ifeq ($(with_hwasan)-$(with_common_libs),yes-yes) ++ ifeq ($(with_hwasan),yes) ++ with_libhwasan := yes ++ endif ++ endif ++ ++ # libvtv ----------------- ++ ifeq ($(with_vtv)-$(with_common_libs),yes-yes) ++ with_libvtv := yes ++ endif ++ ++ # libquadmath ----------------- ++ ifeq ($(with_qmath)-$(with_common_libs),yes-yes) ++ with_libqmath := yes ++ endif ++ ++ # libunwind ----------------- ++ with_internal_libunwind = ++ ifeq ($(DEB_HOST_ARCH),ia64) ++ ifeq ($(DEB_STAGE),stage1) ++ ifeq ($(DEB_CROSS),yes) ++ with_internal_libunwind = yes ++ endif ++ endif ++ endif ++ ++ # Shared libgcc -------------------- ++ ifneq ($(DEB_STAGE),stage1) ++ with_shared_libgcc := yes ++ ifeq ($(with_common_libs),yes) ++ with_libgcc := yes ++ ifneq (,$(filter $(distrelease), jessie stretch buster lucid precise trusty xenial bionic focal)) ++ ifneq (,$(filter $(build_type), build-native cross-build-native)) ++ with_libcompatgcc := yes ++ endif ++ endif ++ endif ++ endif ++ ++ # libphobos ----------------- ++ #ifeq ($(with_common_libs),yes) ++ ifeq ($(with_phobos),yes) ++ with_libphobos := yes ++ endif ++ #endif ++ ++ # libgcc-math -------------------- ++ with_libgmath := no ++ ifneq (,$(findstring i486,$(DEB_TARGET_ARCH))) ++ #with_libgccmath := yes ++ #with_lib64gmath := yes ++ #with_libgmathdev := yes ++ endif ++ ifeq ($(DEB_TARGET_ARCH),amd64) ++ #with_libgccmath := yes ++ #with_lib32gmath := yes ++ #with_libgmathdev := yes ++ endif ++ ++ # hppa64 build ---------------- ++ hppa64_no_snap := no ++ hppa64_archs := hppa ++ ifneq (,$(filter $(build_type), build-native cross-build-native)) ++ ifneq (,$(filter $(distrelease), jessie precise trusty)) ++ binutils_hppa64 := binutils-hppa64 ++ else ++ ifneq ($(single_package),yes) ++ hppa64_archs += amd64 i386 x32 ++ endif ++ binutils_hppa64 := binutils-hppa64-linux-gnu ++ endif ++ ifneq (,$(filter $(DEB_TARGET_ARCH),$(hppa64_archs))) ++ with_hppa64 := yes ++ endif ++ endif ++ ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++ with_hppa64 := disabled for backports/toolchain builds ++ endif ++ ifeq ($(hppa64_no_snap)-$(trunk_build),yes-yes) ++ with_hppa64 := disabled for snapshot build ++ endif ++ ifneq ($(findstring nohppa64, $(DEB_BUILD_OPTIONS)),) ++ with_hppa64 := disabled by DEB_BUILD_OPTIONS ++ endif ++ with_hppa64 := $(call envfilt, hppa64, , , $(with_hppa64)) ++ #with_hppa64 := disabled for GCC 15 ++ ++ ifeq ($(DEB_STAGE),rtlibs) ++ with_libasan := disabled for rtlibs stage ++ with_liblsan := disabled for rtlibs stage ++ with_libtsan := disabled for rtlibs stage ++ with_libubsan := disabled for rtlibs stage ++ with_libhwasan := disabled for rtlibs stage ++ with_hppa64 := disabled for rtlibs stage ++ endif ++endif ++ ++# run testsuite --------------- ++with_check := yes ++# if you don't want to run the gcc testsuite, uncomment the next line ++#with_check := disabled by hand ++ifeq ($(with_base_only),yes) ++ with_check := no ++endif ++ifeq ($(DEB_CROSS),yes) ++ with_check := disabled for cross compiler package ++endif ++ifneq (,$(findstring cross-build-,$(build_type))) ++ with_check := disabled for cross building the compiler ++endif ++ifneq (,$(with_rtlibs)) ++ with_check := disabled for rtlibs stage ++endif ++#check_no_cpus := m68k ++ifeq ($(derivative),Ubuntu) ++ # test suite times out on the buildds ++ #check_no_cpus += arm64 ++else ifeq ($(derivative),Debian) ++ # test suite times out on the buildds ++ check_no_cpus += alpha ++endif ++check_no_systems := gnu ++ifneq (,$(filter $(DEB_TARGET_ARCH_CPU),$(check_no_cpus))) ++ with_check := disabled for cpu $(DEB_TARGET_ARCH_CPU) ++endif ++ifneq (,$(filter $(DEB_TARGET_GNU_SYSTEM),$(check_no_systems))) ++ with_check := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++ifneq (,$(filter $(DEB_TARGET_ARCH),x32)) ++ with_check := disabled for architecture $(DEB_TARGET_ARCH) ++endif ++with_check := $(call envfilt, check, , , $(with_check)) ++ifdef WITHOUT_CHECK ++ with_check := disabled by environment ++endif ++ifneq ($(findstring nocheck, $(DEB_BUILD_OPTIONS)),) ++ with_check := disabled by DEB_BUILD_OPTIONS ++endif ++#ifneq (,$(filter $(DEB_HOST_ARCH), hppa mips)) ++# ifneq ($(single_package),yes) ++# with_check := disabled for $(DEB_HOST_ARCH), testsuite timeouts with expect ++# endif ++#endif ++# override the Debian porters, we need to know about the test results ++ifeq ($(distribution),Debian) ++ ifneq (,$(filter $(DEB_HOST_ARCH), m68k sh4)) ++# with_check := yes ++ endif ++endif ++ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-riscv64) ++ with_check := disabled for $(DEB_HOST_ARCH) on Ubuntu, qemu builders ++endif ++#with_check := disabled for this upload ++ ++# not a dependency on all archs, but if available, use it for the testsuite ++ifneq (,$(wildcard /usr/bin/localedef)) ++ locale_data = generate ++endif ++# try to b-d on locales-all ++locale_data = ++ ++ifneq (,$(filter $(build_type), build-cross cross-build-cross)) ++ ldconfig_arg = --noscripts ++endif ++ ++all_enabled_languages := $(enabled_languages) ++languages_without_lang_opt := c++ objc obj-c++ ++ ++debian_extra_langs := $(subst obj-c++,objcp,$(debian_extra_langs)) ++export debian_extra_langs ++ ++# multilib ++biarch_map := i686=x86_64 powerpc=powerpc64 sparc=sparc64 sparc64=sparc s390=s390x s390x=s390 \ ++ x86_64=i686 powerpc64=powerpc mips=mips64 mipsel=mips64el \ ++ mips64=mips mips64el=mipsel mipsn32=mips mipsn32el=mipsel \ ++ mipsr6=mips64r6 mipsr6el=mips64r6el mips64r6=mipsr6 mips64r6el=mipsr6el \ ++ mipsn32r6=mipsr6 mipsn32r6el=mipsr6el ++# FIXME: why still? ++biarch_map := $(subst i686=,i486=,$(biarch_map)) ++ ++biarch_cpu := $(strip $(patsubst $(DEB_TARGET_GNU_CPU)=%,%, \ ++ $(filter $(DEB_TARGET_GNU_CPU)=%,$(biarch_map)))) ++ ++biarch64 := no ++biarch32 := no ++biarchn32 := no ++biarchx32 := no ++flavours := ++define gen_biarch ++ ifneq (yes,$$(call envfilt, biarch, , ,yes)) ++ biarch$1archs := ++ endif ++ ifneq (,$$(findstring /$$(DEB_TARGET_ARCH)/,$$(biarch$1archs))) ++ biarch$1 := yes ++ flavours += $1 ++ #biarch$1subdir = $$(biarch_cpu)-$$(DEB_TARGET_GNU_SYSTEM) ++ biarch$1subdir = $1 ++ ifeq ($$(with_libgcc),yes) ++ with_lib$1gcc := yes ++ endif ++ ifeq ($$(with_cdev),yes) ++ with_lib$1gccdev := yes ++ endif ++ ifeq ($$(with_libcxx),yes) ++ with_lib$1cxx := yes ++ endif ++ ifeq ($$(with_libcxxdbg),yes) ++ with_lib$1cxxdbg := yes ++ endif ++ ifeq ($$(with_cxxdev),yes) ++ with_lib$1cxxdev := yes ++ endif ++ ifeq ($$(with_libobjc),yes) ++ with_lib$1objc := yes ++ endif ++ ifeq ($$(with_objcdev),yes) ++ with_lib$1objcdev := yes ++ endif ++ ifeq ($$(with_libgfortran),yes) ++ with_lib$1gfortran := yes ++ endif ++ ifeq ($$(with_fdev),yes) ++ with_lib$1gfortrandev := yes ++ endif ++ ifeq ($$(with_libphobos),yes) ++ with_lib$1phobos := yes ++ endif ++ ifeq ($$(with_libphobosdev),yes) ++ with_lib$1phobosdev := yes ++ endif ++ ifeq ($$(with_libssp),yes) ++ with_lib$1ssp := yes ++ endif ++ ifeq ($$(with_libgomp),yes) ++ with_lib$1gomp:= yes ++ endif ++ ifeq ($$(with_libitm),yes) ++ with_lib$1itm:= yes ++ endif ++ ifeq ($$(with_libatomic),yes) ++ with_lib$1atomic:= yes ++ endif ++ ifeq ($$(with_libbacktrace),yes) ++ with_lib$1backtrace:= yes ++ endif ++ ifeq ($$(with_libasan),yes) ++ with_lib$1asan:= yes ++ endif ++ ifeq ($$(with_liblsan),yes) ++ ifneq (,$$(filter $$(distrelease),lunar jammy focal)) ++ with_lib$1lsan := yes ++ endif ++ endif ++ ifeq ($$(with_libtsan),yes) ++ with_lib$1tsan:= yes ++ endif ++ ifeq ($$(with_libubsan),yes) ++ with_lib$1ubsan := yes ++ endif ++ ifeq ($$(with_libhwasan),yes) ++ ifeq ($$(DEB_TARGET_ARCH)-$1,i386-64) ++ with_lib$1hwasan:= yes ++ endif ++ ifeq ($$(DEB_TARGET_ARCH)-$1,x32-64) ++ with_lib$1hwasan:= yes ++ endif ++ endif ++ ifeq ($$(with_libvtv),yes) ++ with_lib$1vtv := yes ++ endif ++ ifeq ($$(with_libqmath),yes) ++ with_lib$1qmath := yes ++ endif ++ ifeq ($$(with_libgo),yes) ++ with_lib$1go := yes ++ endif ++ ifeq ($$(with_godev),yes) ++ with_lib$1godev := yes ++ endif ++ ++ biarch_multidir_names = libiberty libgcc libbacktrace libatomic libgomp ++ ifneq (,$$(findstring gcc-, $$(PKGSOURCE))) ++ biarch_multidir_names += libstdc++-v3 libobjc libgfortran libssp \ ++ zlib libitm libsanitizer ++ ifeq ($$(with_objc_gc),yes) ++ biarch_multidir_names += boehm-gc ++ endif ++ endif ++ ifneq (,$(findstring yes, $(with_go))) ++ biarch_multidir_names += libffi ++ endif ++ ifeq ($(with_fortran),yes) ++ biarch_multidir_names += libquadmath ++ endif ++ ifeq ($(with_go),yes) ++ biarch_multidir_names += libgo ++ endif ++ ifeq ($(with_phobos),yes) ++ biarch_multidir_names += libphobos ++ endif ++ # FIXME: it now builds, but installs everything into the same $libdir ++ #ifeq ($(with_m2),yes) ++ # biarch_multidir_names += libgm2 ++ #endif ++ ifneq (,$$(findstring 32,$1)) ++ TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ ++ $$(TARGET_ALIAS))) ++ TARGET32_MACHINE := $$(TARGET_ALIAS) ++ else ++ TARGET64_MACHINE := $$(TARGET_ALIAS) ++ TARGET64_MACHINE := $$(strip $$(subst $$(DEB_TARGET_GNU_CPU),$$(biarch_cpu), \ ++ $$(TARGET_ALIAS))) ++ endif ++ export TARGET32_MACHINE ++ export TARGET64_MACHINE ++ endif ++endef ++biarch32archs := /amd64/ppc64/s390x/sparc64/x32/mipsn32/mipsn32el/mips64/mips64el/ ++ifeq ($(derivative),Ubuntu) ++ ifeq (,$(filter $(distrelease),trusty xenial bionic focal jammy mantic noble)) ++ biarch32archs := $(subst s390x/,,$(biarch32archs)) ++ endif ++else ifeq ($(derivative),Debian) ++ ifeq (,$(filter $(distrelease),stretch buster bullseye bookworm trixie)) ++ biarch32archs := $(subst s390x/,,$(biarch32archs)) ++ endif ++endif ++ ++biarch64archs := /i386/powerpc/sparc/s390/mips/mipsel/mipsn32/mipsn32el/ ++biarchn32archs := /mips/mipsel/mips64/mips64el/ ++ifeq (yes,$(MIPS_R6_ENABLED)) ++ biarch32archs += /mipsn32r6/mipsn32r6el/mips64r6/mips64r6el/ ++ biarch64archs += /mipsr6/mipsr6el/mipsn32r6/mipsn32r6el/x32/ ++ biarchn32archs += /mipsr6/mipsr6el/mips64r6/mips64r6el/ ++endif ++ ++biarch32_conflicts := $(filter-out mips64%, $(strip $(subst /, ,$(biarch32archs)))) ++ ++ifeq ($(derivative),Ubuntu) ++ ifeq (,$(filter $(distrelease), precise)) ++ biarchx32archs := /amd64/i386/ ++ endif ++else ifeq ($(derivative),Debian) ++ biarchx32archs := /amd64/i386/ ++endif ++$(foreach x,32 64 n32 x32,$(eval $(call gen_biarch,$(x)))) ++ ++ifeq ($(DEB_TARGET_ARCH),sh4) ++ biarch_multidir_names=none ++endif ++export biarch_multidir_names ++ ++#ifeq ($(trunk_build),yes) ++# no_biarch_libs := yes ++#endif ++no_biarch_libs := ++ ++ifeq ($(no_biarch_libs),yes) ++ with_lib64gcc := no ++ with_lib64cxx := no ++ with_lib64cxxdbg := no ++ with_lib64objc := no ++ with_lib64ffi := no ++ with_lib64gfortran := no ++ with_lib64ssp := no ++ with_lib64go := no ++ with_lib64gomp := no ++ with_lib64itm := no ++ with_lib64qmath := no ++ with_lib64atomic := no ++ with_lib64backtrace := no ++ with_lib64asan := no ++ with_lib64lsan := no ++ with_lib64tsan := no ++ with_lib64ubsan := no ++ with_lib64hwasan := no ++ with_lib64vtv := no ++ with_lib64gccdev := no ++ with_lib64cxxdev := no ++ with_lib64objcdev := no ++ with_lib64gfortrandev := no ++ with_lib64phobosdev := no ++ ++ with_lib32gcc := no ++ with_lib32cxx := no ++ with_lib32cxxdbg := no ++ with_lib32objc := no ++ with_lib32ffi := no ++ with_lib32gfortran := no ++ with_lib32ssp := no ++ with_lib32go := no ++ with_lib32gomp := no ++ with_lib32itm := no ++ with_lib32qmath := no ++ with_lib32atomic := no ++ with_lib32backtrace := no ++ with_lib32asan := no ++ with_lib32lsan := no ++ with_lib32tsan := no ++ with_lib32ubsan := no ++ with_lib32hwasan := no ++ with_lib32vtv := no ++ with_lib32gccdev := no ++ with_lib32cxxdev := no ++ with_lib32objcdev := no ++ with_lib32gfortrandev := no ++ with_lib32phobosdev := no ++ ++ with_libn32gcc := no ++ with_libn32cxx := no ++ with_libn32cxxdbg := no ++ with_libn32objc := no ++ with_libn32ffi := no ++ with_libn32gfortran := no ++ with_libn32ssp := no ++ with_libn32go := no ++ with_libn32gomp := no ++ with_libn32itm := no ++ with_libn32qmath := no ++ with_libn32atomic := no ++ with_libn32backtrace := no ++ with_libn32asan := no ++ with_libn32lsan := no ++ with_libn32tsan := no ++ with_libn32ubsan := no ++ with_libn32hwasan := no ++ with_libn32gccdev := no ++ with_libn32cxxdev := no ++ with_libn32objcdev := no ++ with_libn32gfortrandev:= no ++ with_libn32phobosdev := no ++ ++ with_libx32gcc := no ++ with_libx32cxx := no ++ with_libx32cxxdbg := no ++ with_libx32objc := no ++ with_libx32ffi := no ++ with_libx32gfortran := no ++ with_libx32ssp := no ++ with_libx32go := no ++ with_libx32gomp := no ++ with_libx32itm := no ++ with_libx32qmath := no ++ with_libx32atomic := no ++ with_libx32backtrace := no ++ with_libx32asan := no ++ with_libx32lsan := no ++ with_libx32tsan := no ++ with_libx32ubsan := no ++ with_libx32hwasan := no ++ with_libx32vtv := no ++ with_libx32gccdev := no ++ with_libx32cxxdev := no ++ with_libx32objcdev := no ++ with_libx32gfortrandev:= no ++ with_libx32phobosdev := no ++endif ++ ++ifneq (,$(filter yes,$(biarch32) $(biarch64) $(biarchn32) $(biarchx32))) ++ multilib := yes ++endif ++ ++multilib_archs = $(sort $(subst /, , $(biarch64archs) $(biarch32archs) $(biarchn32archs) $(biarchx32archs))) ++ ++biarchsubdirs := \ ++ $(if $(filter yes,$(biarch64)),$(biarch64subdir),) \ ++ $(if $(filter yes,$(biarch32)),$(biarch32subdir),) \ ++ $(if $(filter yes,$(biarchn32)),$(biarchn32subdir),) \ ++ $(if $(filter yes,$(biarchx32)),$(biarchx32subdir),) ++biarchsubdirs := {$(strip $(shell echo $(biarchsubdirs) | tr " " ","))} ++ ++# GNU locales ++force_gnu_locales := yes ++locale_no_cpus := ++locale_no_systems := ++ifneq (,$(findstring $(DEB_TARGET_GNU_SYSTEM),$(locale_no_systems))) ++ force_gnu_locales := disabled for system $(DEB_TARGET_GNU_SYSTEM) ++endif ++ ++gcc_tarpath := $(firstword $(wildcard gcc-*.tar.* /usr/src/gcc-15/gcc-*.tar.*)) ++gcc_tarball := $(notdir $(gcc_tarpath)) ++gcc_srcdir := $(subst -dfsg,,$(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(gcc_tarball:.tar.bz2=))))) ++ ++binutils_dsc := $(notdir $(firstword $(wildcard binutils_*.dsc))) ++binutils_srcdir := $(shell echo $(binutils_dsc) | sed 's/-.*//;s/_/-/') ++ ++ifneq (,$(filter yes, $(with_offload_nvptx) $(with_offload_gcn))) ++ newlib_tarpath := $(firstword $(wildcard newlib-*.tar.* /usr/src/gcc-$(BASE_VERSION)/newlib-*.tar.*)) ++ newlib_tarball := $(notdir $(newlib_tarpath)) ++ newlib_srcdir := $(patsubst %.tar.xz,%,$(patsubst %.tar.lzma,%,$(patsubst %.tar.gz,%,$(newlib_tarball:.tar.bz2=)))) ++endif ++ ++# NOTE: This is not yet used. when building gdc or gnat using the ++# gcc-source package, we don't require an exact binary dependency. ++ifneq ($(dir $(gcc_tarpath)),./) ++ built_using_external_source := yes ++else ++ built_using_external_source := ++endif ++ifeq ($(DEB_CROSS),yes) ++ add_built_using = yes ++endif ++ ++unpack_stamp := $(stampdir)/01-unpack-stamp ++pre_patch_stamp := $(stampdir)/02-pre-patch-stamp ++patch_stamp := $(stampdir)/02-patch-stamp ++control_stamp := $(stampdir)/03-control-stamp ++configure_stamp := $(stampdir)/04-configure-stamp ++build_stamp := $(stampdir)/05-build-stamp ++build_arch_stamp := $(stampdir)/05-build-arch-stamp ++build_indep_stamp := $(stampdir)/05-build-indep-stamp ++build_html_stamp := $(stampdir)/05-build-html-stamp ++build_locale_stamp := $(stampdir)/05-build-locale-stamp ++build_doxygen_stamp := $(stampdir)/05-build-doxygen-stamp ++build_gnatdoc_stamp := $(stampdir)/05-build-gnatdoc-stamp ++check_stamp := $(stampdir)/06-check-stamp ++check_inst_stamp := $(stampdir)/06-check-inst-stamp ++install_stamp := $(stampdir)/07-install-stamp ++install_snap_stamp := $(stampdir)/07-install-snap-stamp ++install_tc_stamp := $(stampdir)/07-install-tc-stamp ++binary_stamp := $(stampdir)/08-binary-stamp ++ ++configure_dummy_stamp := $(stampdir)/04-configure-dummy-stamp ++build_dummy_stamp := $(stampdir)/05-build-dummy-stamp ++install_dummy_stamp := $(stampdir)/07-install-dummy-stamp ++ ++configure_jit_stamp := $(stampdir)/04-configure-jit-stamp ++build_jit_stamp := $(stampdir)/05-build-jit-stamp ++install_jit_stamp := $(stampdir)/07-install-jit-stamp ++ ++# installation of the offload compilers is required for the check target ++# name it 06-install-*-stamp ++configure_nvptx_stamp := $(stampdir)/04-configure-nvptx-stamp ++build_nvptx_stamp := $(stampdir)/05-build-nvptx-stamp ++install_nvptx_stamp := $(stampdir)/06-install-nvptx-stamp ++ ++configure_gcn_stamp := $(stampdir)/04-configure-gcn-stamp ++build_gcn_stamp := $(stampdir)/05-build-gcn-stamp ++install_gcn_stamp := $(stampdir)/06-install-gcn-stamp ++ ++configure_hppa64_stamp := $(stampdir)/04-configure-hppa64-stamp ++build_hppa64_stamp := $(stampdir)/05-build-hppa64-stamp ++install_hppa64_stamp := $(stampdir)/07-install-hppa64-stamp ++ ++control_dependencies := $(patch_stamp) ++ ++ifeq ($(single_package),yes) ++ ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) ++ configure_dependencies = $(configure_stamp) ++ build_dependencies = $(build_stamp) ++ install_dependencies = $(install_snap_stamp) ++ ifeq ($(with_check),yes) ++ check_dependencies += $(check_stamp) ++ endif ++ else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++ configure_dependencies = $(configure_stamp) ++ build_dependencies = $(build_stamp) ++ install_dependencies = $(install_tc_stamp) ++ ifeq ($(with_check),yes) ++ check_dependencies += $(check_stamp) ++ endif ++ else ++ $(error Unknown single-package $(PKGSOURCE)) ++ endif ++else ++ ifeq ($(with_base_only),yes) ++ configure_dependencies = $(configure_dummy_stamp) ++ build_dependencies = $(build_dummy_stamp) ++ install_dependencies = $(install_dummy_stamp) ++ else ++ configure_dependencies = $(configure_stamp) ++ build_dependencies = $(build_stamp) ++ install_dependencies = $(install_stamp) ++ ifeq ($(with_check),yes) ++ check_dependencies += $(check_stamp) ++ endif ++ endif ++endif ++ ++ifeq ($(with_jit),yes) ++ build_dependencies += $(build_jit_stamp) ++ install_dependencies += $(install_jit_stamp) ++endif ++ ++ifeq ($(with_offload_nvptx),yes) ++ build_dependencies += $(build_nvptx_stamp) ++ install_dependencies += $(install_nvptx_stamp) ++endif ++ ++ifeq ($(with_offload_gcn),yes) ++ build_dependencies += $(build_gcn_stamp) ++ install_dependencies += $(install_gcn_stamp) ++endif ++ ++ifeq ($(with_hppa64),yes) ++ build_dependencies += $(build_hppa64_stamp) ++ ifneq ($(trunk_build),yes) ++ install_dependencies += $(install_hppa64_stamp) ++ endif ++endif ++ ++build_dependencies += $(check_dependencies) ++ ++build_arch_dependencies = $(build_dependencies) ++build_indep_dependencies = $(build_dependencies) ++ ++ifneq (,$(findstring build-native, $(build_type))) ++ ifneq ($(single_package),yes) ++ build_indep_dependencies += $(build_html_stamp) ++ ifeq ($(with_cxx),yes) ++ build_indep_dependencies += $(build_doxygen_stamp) ++ endif ++ ifeq ($(with_ada),yes) ++ build_indep_dependencies += $(build_gnatdoc_stamp) ++ endif ++ endif ++endif ++ ++stamp-dir: ++ mkdir -p $(stampdir) ++ ++ifeq ($(DEB_CROSS),yes) ++ define cross_mangle_shlibs ++ if [ -f debian/$(1)/DEBIAN/shlibs ]; then \ ++ sed -i s/$(cross_lib_arch)/:$(DEB_TARGET_ARCH)/g debian/$(1)/DEBIAN/shlibs; \ ++ fi ++ endef ++ define cross_mangle_substvars ++ if [ -f debian/$(1).substvars ]; then \ ++ sed -i \ ++ -e 's/:$(DEB_TARGET_ARCH)/$(cross_lib_arch)/g' \ ++ -e 's/\(libc[.0-9]*-[^:]*\):\([a-z0-9-]*\)/\1-\2-cross/g' \ ++ $(if $(filter armel,$(DEB_TARGET_ARCH)),-e 's/:armhf/-armhf-cross/g') \ ++ $(if $(filter armhf,$(DEB_TARGET_ARCH)),-e 's/:armel/-armel-cross/g') \ ++ debian/$(1).substvars; \ ++ fi ++ endef ++else ++ define cross_mangle_shlibs ++ endef ++ define cross_mangle_substvars ++ endef ++ # precise's dh_shlibdeps doesn't work well for ARM multilibs ++ # and dh_shlibdeps doesn't work well for cross builds, see #698881. ++ ifneq (,$(filter $(distrelease),precise quantal raring)) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), armel armhf arm64)) ++ ignshld = - ++ endif ++ endif ++ # FIXME: don't stop at the first shlibdeps failure ... ++ ignshld = - ++endif ++ifeq ($(DEB_STAGE),rtlibs) ++ define cross_mangle_shlibs ++ endef ++ define cross_mangle_substvars ++ endef ++endif ++ ++# takes a *list* of package names as $1, the multilib dirname as $2 ++_shlibdirs = \ ++ $(if $(strip $(1)), \ ++ $(shell find $(foreach p,$(1),$(CURDIR)/debian/$(p)) \ ++ -name '*.so.*' -printf '%h ' | uniq)) \ ++ $(with_build_sysroot)/lib/$(call mlib_to_march,$(2)) \ ++ $(with_build_sysroot)/usr/lib/$(call mlib_to_march,$(2)) \ ++ $(with_build_sysroot)$(subst /usr,,/$(usr_lib$(2))) \ ++ $(with_build_sysroot)/$(usr_lib$(2)) \ ++ $(if $(findstring mips64,$(DEB_TARGET_ARCH)), \ ++ $(with_build_sysroot)/$(usr_lib64)) \ ++ $(if $(findstring mipsn32,$(DEB_TARGET_ARCH)), \ ++ $(with_build_sysroot)/$(usr_libn32)) \ ++ $(if $(filter sparc64,$(DEB_TARGET_ARCH)), \ ++ $(with_build_sysroot)/$(usr_lib64)) \ ++ $(if $(filter yes, $(with_common_libs)),, \ ++ $(CURDIR)/$(d)/$(usr_lib$(2)) \ ++ $(CURDIR)/$(d)/usr/$(call mlib_to_march,$(2))/lib) ++shlibdirs_to_search = -l$(subst $(SPACE),:,$(foreach d,$(_shlibdirs),$(d))) diff --cc debian/rules.parameters index 0000000,0000000..90e5fbe new file mode 100644 --- /dev/null +++ b/debian/rules.parameters @@@ -1,0 -1,0 +1,44 @@@ ++# configuration parameters taken from upstream source files ++GCC_VERSION := 15.3.0 ++NEXT_GCC_VERSION := 15.3.1 ++BASE_VERSION := 15 ++SOURCE_VERSION := 15.3.0-1 ++DEB_VERSION := 15.3.0-1 ++DEB_EVERSION := 1:15.3.0-1 ++DEB_GDC_VERSION := 15.3.0-1 ++DEB_SOVERSION := 5 ++DEB_SOEVERSION := 1:5 ++DEB_LIBGCC_SOVERSION := ++DEB_LIBGCC_VERSION := 15.3.0-1 ++DEB_STDCXX_SOVERSION := 5 ++DEB_GOMP_SOVERSION := 5 ++GCC_SONAME := 1 ++CXX_SONAME := 6 ++FORTRAN_SONAME := 5 ++OBJC_SONAME := 4 ++GDC_VERSION := 15 ++GNAT_VERSION := 15 ++GNAT_SONAME := 15 ++FFI_SONAME := 9 ++SSP_SONAME := 0 ++GOMP_SONAME := 1 ++ITM_SONAME := 1 ++ATOMIC_SONAME := 1 ++BTRACE_SONAME := 1 ++ASAN_SONAME := 8 ++LSAN_SONAME := 0 ++TSAN_SONAME := 2 ++UBSAN_SONAME := 1 ++HWASAN_SONAME := 0 ++VTV_SONAME := 0 ++QUADMATH_SONAME := 0 ++GO_SONAME := 24 ++CC1_SONAME := 0 ++GCCJIT_SONAME := 15 ++GPHOBOS_SONAME := 6 ++GDRUNTIME_SONAME := 6 ++GM2_SONAME := 20 ++DIAGNOSTICS_SONAME:= 0 ++GCOBOL_SONAME := 1 ++GA68_SONAME := 1 ++LIBC_DEP := libc6 diff --cc debian/rules.patch index 0000000,0000000..ebbf709 new file mode 100644 --- /dev/null +++ b/debian/rules.patch @@@ -1,0 -1,0 +1,426 @@@ ++# -*- makefile -*- ++# rules to patch the unpacked files in the source directory ++# --------------------------------------------------------------------------- ++# various rules to unpack addons and (un)apply patches. ++# - patch / apply-patches ++# - unpatch / reverse-patches ++ ++.NOTPARALLEL: ++ ++patchdir ?= debian/patches ++series_file ?= $(patchdir)/series ++ ++# which patches should be applied? ++ ++debian_patches += \ ++ git-updates \ ++ ++# git-updates \ ++ ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ debian_patches += \ ++ rename-info-files \ ++ ++# git-doc-updates \ ++ ++else ++ debian_patches += \ ++ gcc-gfdl-build ++endif ++ ++# libstdc++-pic \ ++ ++ ++debian_patches += \ ++ 0001-Ada-merge-all-timeval-and-timespec-definitions-and-c \ ++ 0002-Ada-select-64-bits-time-functions-from-GNU-libc-when \ ++ ++debian_patches += \ ++ gcc-textdomain \ ++ gcc-distro-specs \ ++ gcc-driver-extra-langs \ ++ gcc-hash-style-gnu \ ++ libstdc++-doclink \ ++ libstdc++-man-3cxx \ ++ libstdc++-test-installed \ ++ libstdc++-doxygen-SOURCE_DATE_EPOCH \ ++ alpha-no-ev4-directive \ ++ note-gnu-stack \ ++ libgomp-omp_h-multilib \ ++ libgo-cleanfiles \ ++ gcc-target-include-asm \ ++ libgo-revert-timeout-exp \ ++ libgo-setcontext-config \ ++ gcc-auto-build \ ++ libitm-no-fortify-source \ ++ sparc64-biarch-long-double-128 \ ++ pr66368 \ ++ pr67590 \ ++ libffi-race-condition \ ++ cuda-float128 \ ++ t-libunwind-elf-Wl-z-defs \ ++ gcc-force-cross-layout \ ++ gcc-search-prefixed-as-ld \ ++ pr87808 \ ++ pr94253 \ ++ gcc-arm-disable-guality-tests \ ++ musl-ssp \ ++ arc-stddef \ ++ gccrs-bootstrap-mipsel \ ++ sh-math-fixes \ ++ gcc-riscv-extensions \ ++ libphobos-ppc64el \ ++ D-22464 \ ++ pr106641 \ ++ libsanitizer-static-tls \ ++ pr123853 \ ++ pr124637 \ ++ ++# see https://bugs.debian.org/1108322 ++ifneq (,$(filter $(DEB_TARGET_ARCH),hppa m68k powerpc)) ++ debian_patches += ada-tv_nsec-size ++endif ++ ++ifneq (,$(newlib_tarball)) ++ debian_patches += ++endif ++ ++ifneq (,$(filter $(distrelease),lunar)) ++ debian_patches += rust-enabled ++endif ++ ++ifneq (,$(filter $(distrelease), jessie stretch buster bullseye precise trusty xenial bionic focal groovy hirsute)) ++ debian_patches += dwarf5-revert-default ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ debian_patches += dwarf5-revert-default-doc ++ endif ++endif ++ ++# TODO: ++# pr81829 \ ++ ++# $(if $(filter yes, $(DEB_CROSS)),,gcc-print-file-name) \ ++# libstdc++-nothumb-check \ ++ ++hardening_patches = ++ifneq (,$(filter $(derivative),Ubuntu)) ++ ifneq (,$(findstring gcc-15, $(PKGSOURCE))) ++ hardening_patches += \ ++ gcc-distro-specs-ubuntu-doc \ ++ testsuite-hardening-format \ ++ testsuite-hardening-printf-types \ ++ testsuite-hardening-updates \ ++ testsuite-glibc-warnings ++ endif ++else ifneq (,$(filter $(derivative),Debian)) ++ ifneq (,$(findstring gcc-15, $(PKGSOURCE))) ++# ifneq ($(with_pie),yes) ++# hardening_patches += \ ++# ignore-pie-specs-when-not-enabled ++# endif ++ endif ++endif ++ ++# FIXME 4.5: Drop and adjust symbols files ++ifneq (,$(findstring 4.4, $(PKGSOURCE))) ++ debian_patches += pr39491 ++endif ++ ++# Patches for non-core languages. ++ ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ debian_patches += gm2-texinfo ++endif ++ ++# Most of the time, it would be safe to apply them whether the ++# language is selected or not. But when working on a new GCC version, ++# it is convenient to concentrate on core languages, and refresh them ++# later when working on the specific language. ++ifeq ($(with_ada),yes) ++ debian_patches += ada-gcc-name ++ debian_patches += ada-link-lib ++ debian_patches += ada-gnattools-cross ++ ifeq ($(with_gnatsjlj),yes) ++ debian_patches += ada-sjlj ++ endif ++ debian_patches += ada-lib-info-source-date-epoch ++ debian_patches += ada-perl-shebang ++endif ++ ++# FIXME: still relevant? ++# gdc-multiarch ++ ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ debian_patches += gdc-texinfo ++endif ++ifeq (,$(filter $(DEB_TARGET_ARCH),amd64 i386 armhf)) ++ debian_patches += disable-gdc-tests ++endif ++ ++debian_patches += alpha-ieee ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ debian_patches += alpha-ieee-doc ++endif ++ ++# see https://bugs.debian.org/1107416 ++ifeq ($(DEB_TARGET_ARCH),m68k) ++ debian_patches += gcc-m68k-no-fold-mem-offsets ++endif ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ debian_patches += gcc-m68k-no-fold-mem-offsets-doc ++endif ++ ++# see https://gcc.gnu.org/bugzilla/PR55212 ++# based on https://github.com/olegendo/gcc/tree/devel/sh-lra ++# plus the patch 59550 from the bug report 55212#comment-422 ++# and the changes to the documentation omitted due to DFSG ++ifeq ($(DEB_TARGET_ARCH),sh4) ++ debian_patches += sh-lra-support ++ ifneq ($(GFDL_INVARIANT_FREE),yes) ++ debian_patches += sh-lra-support-doc ++ endif ++endif ++debian_patches += sh-bootstrap-compare ++ ++# all patches below this line are applied for gcc-snapshot builds as well ++ ++ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) ++ debian_patches = ++endif ++ ++debian_patches += \ ++ gdc-dynamic-link-phobos \ ++ libstdc++-pythondir \ ++ gcc-verbose-lto-link \ ++ ++ifeq ($(with_ada),yes) ++ debian_patches += ada-verbose ++ debian_patches += ada-gnat-name ++ debian_patches += \ ++ ada-armel-libatomic ++endif ++ ++ifeq ($(with_ibm_branch),yes) ++ debian_patches += ibm-branch ++endif ++ ++ifeq ($(with_softfloat),yes) ++ debian_patches += arm-multilib-soft-float ++endif ++ifneq (,$(filter $(distrelease), precise trusty xenial bionic focal groovy hirsute)) ++ debian_patches += arm-multilib-defaults ++endif ++ ++ifneq (,$(filter $(build_type), build-cross cross-build-cross)) ++ debian_patches += cross-fixes ++ debian_patches += cross-install-location ++endif ++ ++debian_patches += hurd-multiarch ++debian_patches += hurd-multilib-multiarch ++ifeq ($(DEB_TARGET_ARCH_OS),hurd) ++ debian_patches += hurd-changes ++ # FIXME: #1005297, PR 104660 ++ debian_patches += libgo-hurd-hack ++endif ++ ++debian_patches += gcc-ice-dump ++debian_patches += gcc-ice-apport ++debian_patches += skip-bootstrap-multilib ++debian_patches += libffi-ro-eh_frame_sect ++debian_patches += libgo-testsuite ++debian_patches += gcc-no-multilib-dejagnu ++debian_patches += libphobos-unittest ++debian_patches += hppa64-libgcov-fallback ++ ++debian_patches += algol68 ++debian_patches += algol68-link-dynamic ++debian_patches += algol68-sparc ++ifeq ($(single_package),yes) ++ debian_patches += algol68-doc ++else ifeq ($(GFDL_INVARIANT_FREE),yes) ++ debian_patches += ga68-texinfo ++else ++ debian_patches += algol68-doc ++endif ++ ++debian_patches += gcc-vhdl ++ ++# sigaction on sparc changed between glibc 2.19 and 2.21 ++ifeq (,$(filter 2.1%, $(shell dpkg-query -l libc-bin | awk '/^.i/ {print $$3}'))) ++ # keep it, gets remove in GCC from time to time ++ #debian_patches += pr67899 ++endif ++ ++debian_patches += gcc-multiarch ++debian_patches += config-ml ++ifneq ($(single_package),yes) ++ ifeq ($(with_multiarch_cxxheaders),yes) ++ debian_patches += g++-multiarch-incdir ++ debian_patches += canonical-cpppath ++ endif ++endif ++ifneq (,$(filter $(build_type), build-cross cross-build-cross)) ++ debian_patches += cross-no-locale-include ++ debian_patches += cross-biarch ++endif ++debian_patches += gcc-multilib-multiarch ++ ++ifneq ($(trunk_build),yes) ++ifneq (,$(filter $(derivative),Ubuntu)) ++ debian_patches += gcc-as-needed ++ ifeq (,$(filter $(distrelease), precise trusty xenial)) ++ debian_patches += gcc-as-needed-gold ++ endif ++else # Debian ++ ifeq (,$(filter $(distrelease), jessie stretch)) ++ debian_patches += gcc-as-needed gcc-as-needed-gold ++ endif ++endif ++endif ++ ++debian_patches += go-testsuite ++ ++# don't remove, this is regularly overwritten, see PR sanitizer/63958. ++#debian_patches += libasan-sparc ++ ++series_stamp = $(stampdir)/02-series-stamp ++series: $(series_stamp) ++$(series_stamp): ++ echo $(strip $(addsuffix .diff,$(debian_patches))) \ ++ | sed -r 's/ +/ /g' | tr " " "\n" > $(series_file) ++ifneq (,$(strip $(hardening_patches))) ++ ifneq ($(trunk_build),yes) ++ echo $(strip $(addsuffix .diff,$(hardening_patches))) \ ++ | sed -r 's/ +/ /g' | tr " " "\n" >> $(series_file) ++ endif ++endif ++ sed -r 's/(.)$$/\1 -p1/' -i $(series_file) ++ touch $@ ++ ++autoconf_files = $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ ++ | sed -rn '/(configure\.ac|acinclude.m4)$$/s:[^/]+/src/:src/:p' | sort -u) ++autoconf_dirs = $(sort $(dir $(autoconf_files))) ++ ++automake_files = $(addprefix ./, $(filter-out none, \ ++ $(shell lsdiff --no-filename $(foreach patch,$(debian_patches),$(patchdir)/$(patch).diff) \ ++ | sed -rn '/Makefile\.(am|in)$$/s:[^/]+/src/:src/:p' | sort -u))) ++ ++autoconf_version = 2.69 ++ifneq (,$(filter $(distrelease),stretch buster trusty xenial bionic focal groovy)) ++ autoconf_version = ++endif ++ifeq ($(trunk_build),yes) ++ # The actual version depends on the build-dependencies set by ++ # variable AUTO_BUILD_DEP in rules.conf. Here, we assume the ++ # correct version is installed. ++ #autoconf_version = ++endif ++ ++# FIXME: the auto* stuff is done every time for every subdir, which ++# leads to build errors. Idea: record the auto* calls in the patch ++# files (AUTO ) and run them separately, ++# maybe only once per directory). ++$(patch_stamp): $(unpack_stamp) $(series_stamp) ++ sync ++ QUILT_PATCHES=$(patchdir) QUILT_PATCH_OPTS='-E' \ ++ quilt --quiltrc /dev/null push -a || test $$? = 2 ++ ++ : # only needed when we have changes, and currently fails with autogen 5.18 ++ : #cd $(srcdir)/fixincludes && ./genfixes ++ ++ sync ++ echo -n $(autoconf_dirs) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ ++ sh -c 'echo "Running autoconf$(autoconf_version) in {}..." ; \ ++ cd $(CURDIR)/{} && rm -f configure && \ ++ AUTOM4TE=/usr/bin/autom4te$(autoconf_version) autoconf$(autoconf_version)' ++ find $(srcdir) -name autom4te.cache | xargs -r rm -rf ++ ++ for i in $(debian_patches) $(hardening_patches); do \ ++ echo -e "\n$$i:" >> pxxx; \ ++ sed -n 's/^# *DP: */ /p' $(patchdir)/$$i.diff >> pxxx; \ ++ done ++# -$(srcdir)/move-if-change pxxx $@ ++ ++ : # generate the distro-defaults.h header ++ rm -f $(srcdir)/gcc/distro-defaults.h ++ ( \ ++ echo '/* distro specific configuration injected by the distro build. */'; \ ++ echo ''; \ ++ echo '#ifndef ACCEL_COMPILER' \ ++ ) >> $(srcdir)/gcc/distro-defaults.h ++ifeq ($(with_async_unwind),yes) ++ echo '#define DIST_DEFAULT_ASYNC_UNWIND 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++endif ++ifeq ($(with_ssp)-$(with_ssp_default),yes-yes) ++ echo '#define DIST_DEFAULT_SSP 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ ifeq (,$(filter $(distrelease), precise trusty)) ++ echo '#define DIST_DEFAULT_SSP_STRONG 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ endif ++ echo '#define DIST_DEFAULT_FORMAT_SECURITY 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++endif ++ifneq (,$(filter $(derivative),Ubuntu)) ++ ifneq (,$(filter $(distrelease),lucid precise trusty xenial bionic focal jammy kinetic lunar mantic)) ++ ( \ ++ echo '#define DIST_DEFAULT_FORTIFY_SOURCE 2'; \ ++ echo '#define DIST_DEFAULT_FORTIFY_SOURCE_S "2"' \ ++ ) >> $(srcdir)/gcc/distro-defaults.h ++ else ++ ( \ ++ echo '#define DIST_DEFAULT_FORTIFY_SOURCE 3'; \ ++ echo '#define DIST_DEFAULT_FORTIFY_SOURCE_S "3"' \ ++ ) >> $(srcdir)/gcc/distro-defaults.h ++ endif ++ echo '#define DIST_DEFAULT_RELRO 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ echo '#define DIST_DEFAULT_BIND_NOW 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ ifeq ($(with_stack_clash),yes) ++ echo '#define DIST_DEFAULT_STACK_CLASH 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ endif ++ ifeq ($(with_cf_protection),yes) ++ echo '#define DIST_DEFAULT_CF_PROTECTION 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ endif ++ ifeq (,$(filter $(distrelease),xenial bionic focal jammy noble oracular plucky)) ++ echo '#define DIST_DEFAULT_INIT_ZERO_ALL 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ echo '#define DIST_DEFAULT_BIDI_WARNING 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ endif ++else ifneq (,$(filter $(derivative),Debian)) ++ ifneq (,$(findstring gcc-15, $(PKGSOURCE))) ++ endif ++endif ++ifeq ($(with_timet64),yes) ++ echo '#define DIST_DEFAULT_TIMET64 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++endif ++ifeq ($(with_sframe),yes) ++ echo '#define DIST_DEFAULT_SFRAME 1' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++endif ++ echo '#endif' \ ++ >> $(srcdir)/gcc/distro-defaults.h ++ ++ mv pxxx $@ ++ ++unpatch: ++ QUILT_PATCHES=$(patchdir) \ ++ quilt --quiltrc /dev/null pop -a -R || test $$? = 2 ++ rm -rf .pc ++ ++update-patches: $(series_stamp) ++ export QUILT_PATCHES=$(patchdir); \ ++ quilt pop -a; \ ++ export QUILT_REFRESH_ARGS="--no-timestamps --no-index -pab"; \ ++ export QUILT_DIFF_ARGS="--no-timestamps --no-index -pab"; \ ++ while quilt push; do quilt refresh --no-timestamps --no-index -pab; done ++ ++patch: $(patch_stamp) ++.PHONY: patch series quilt autotools diff --cc debian/rules.sonames index 0000000,0000000..e57c5aa new file mode 100644 --- /dev/null +++ b/debian/rules.sonames @@@ -1,0 -1,0 +1,107 @@@ ++ifneq ($(vafilt_defined),1) ++ $(error rules.defs must be included before rules.sonames) ++endif ++ ++ifeq (,$(wildcard debian/soname-cache)) ++ SONAME_VARS := $(shell \ ++ cache=debian/soname-cache; \ ++ rm -f $$cache; \ ++ v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libstdc++-v3/acinclude.m4`; \ ++ echo CXX_SONAME=$$v >> $$cache; \ ++ v=`awk -F= '/^VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libobjc/configure.ac`; \ ++ echo OBJC_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libgfortran/libtool-version | cut -d: -f1`; \ ++ echo FORTRAN_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libssp/libtool-version | cut -d: -f1`; \ ++ echo SSP_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libffi/libtool-version | cut -d: -f1`; \ ++ echo FFI_SONAME=$$v >> $$cache; \ ++ v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libgomp/configure.ac`; \ ++ echo GOMP_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libsanitizer/asan/libtool-version | cut -d: -f1`; \ ++ echo ASAN_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libsanitizer/lsan/libtool-version | cut -d: -f1`; \ ++ echo LSAN_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libsanitizer/tsan/libtool-version | cut -d: -f1`; \ ++ echo TSAN_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libsanitizer/ubsan/libtool-version | cut -d: -f1`; \ ++ echo UBSAN_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libsanitizer/hwasan/libtool-version | cut -d: -f1`; \ ++ echo HWASAN_SONAME=$$v >> $$cache; \ ++ v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libatomic/configure.ac`; \ ++ v=1; \ ++ echo ATOMIC_SONAME=$$v >> $$cache; \ ++ v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libbacktrace/configure.ac`; \ ++ echo BTRACE_SONAME=$$v >> $$cache; \ ++ v=`tail -1 $(srcdir)/libquadmath/libtool-version | cut -d: -f1`; \ ++ echo QUADMATH_SONAME=$$v >> $$cache; \ ++ v=`grep '[^_]Library_Version.*:' $(srcdir)/gcc/ada/gnatvsn.ads \ ++ | sed -e 's/.*"\([^"]*\)".*/\1/'`; \ ++ echo GNAT_SONAME=$$v >> $$cache; \ ++ v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libgo/configure.ac`; \ ++ echo GO_SONAME=$$v >> $$cache; \ ++ echo ITM_SONAME=1 >> $$cache; \ ++ v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libvtv/configure.ac`; \ ++ v=0; \ ++ echo VTV_SONAME=$$v >> $$cache; \ ++ echo CC1_SONAME=0 >> $$cache; \ ++ echo GCCJIT_SONAME=$(if $(filter yes, $(with_versioned_libgccjit)),$(BASE_VERSION),0) >> $$cache; \ ++ v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libphobos/configure.ac`; \ ++ echo GPHOBOS_SONAME=$$v >> $$cache; \ ++ echo GDRUNTIME_SONAME=$$v >> $$cache; \ ++ v=`awk -F= '/^libtool_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libgm2/configure.ac`; \ ++ echo GM2_SONAME=$$v >> $$cache; \ ++ v=`awk -F= '/^LIBGDIAGNOSTICS_VERSION_NUM/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/gcc/Makefile.in`; \ ++ echo DIAGNOSTICS_SONAME=$$(echo $$v |sed 's/ //g') >> $$cache; \ ++ v=`awk -F= '/^LIBGCOBOL_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libgcobol/configure.ac`; \ ++ echo GCOBOL_SONAME=$$v >> $$cache; \ ++ v=`awk -F= '/^libga68_VERSION/ {split($$2,v,":"); print v[1]}' \ ++ $(srcdir)/libga68/configure.ac`; \ ++ echo GA68_SONAME=$$v >> $$cache; \ ++ cat $$cache) ++else ++ SONAME_VARS := $(shell cat debian/soname-cache) ++endif ++CXX_SONAME = $(call vafilt,$(SONAME_VARS),CXX_SONAME) ++OBJC_SONAME = $(call vafilt,$(SONAME_VARS),OBJC_SONAME) ++FORTRAN_SONAME = $(call vafilt,$(SONAME_VARS),FORTRAN_SONAME) ++SSP_SONAME = $(call vafilt,$(SONAME_VARS),SSP_SONAME) ++FFI_SONAME = $(call vafilt,$(SONAME_VARS),FFI_SONAME) ++GOMP_SONAME = $(call vafilt,$(SONAME_VARS),GOMP_SONAME) ++ATOMIC_SONAME = $(call vafilt,$(SONAME_VARS),ATOMIC_SONAME) ++BTRACE_SONAME = $(call vafilt,$(SONAME_VARS),BTRACE_SONAME) ++ASAN_SONAME = $(call vafilt,$(SONAME_VARS),ASAN_SONAME) ++LSAN_SONAME = $(call vafilt,$(SONAME_VARS),LSAN_SONAME) ++TSAN_SONAME = $(call vafilt,$(SONAME_VARS),TSAN_SONAME) ++UBSAN_SONAME = $(call vafilt,$(SONAME_VARS),UBSAN_SONAME) ++VTV_SONAME = $(call vafilt,$(SONAME_VARS),VTV_SONAME) ++CILKRTS_SONAME = $(call vafilt,$(SONAME_VARS),CILKRTS_SONAME) ++QUADMATH_SONAME = $(call vafilt,$(SONAME_VARS),QUADMATH_SONAME) ++GNAT_SONAME = $(call vafilt,$(SONAME_VARS),GNAT_SONAME) ++GO_SONAME = $(call vafilt,$(SONAME_VARS),GO_SONAME) ++ITM_SONAME = $(call vafilt,$(SONAME_VARS),ITM_SONAME) ++CC1_SONAME = $(call vafilt,$(SONAME_VARS),CC1_SONAME) ++GCCJIT_SONAME = $(call vafilt,$(SONAME_VARS),GCCJIT_SONAME) ++GPHOBOS_SONAME = $(call vafilt,$(SONAME_VARS),GPHOBOS_SONAME) ++GDRUNTIME_SONAME= $(call vafilt,$(SONAME_VARS),GDRUNTIME_SONAME) ++GM2_SONAME = $(call vafilt,$(SONAME_VARS),GM2_SONAME) ++HWASAN_SONAME = $(call vafilt,$(SONAME_VARS),HWASAN_SONAME) ++DIAGNOSTICS_SONAME = $(call vafilt,$(SONAME_VARS),DIAGNOSTICS_SONAME) ++GCOBOL_SONAME = $(call vafilt,$(SONAME_VARS),GCOBOL_SONAME) ++GA68_SONAME = $(call vafilt,$(SONAME_VARS),GA68_SONAME) ++ ++# alias ++GFORTRAN_SONAME = $(FORTRAN_SONAME) ++STDC++_SONAME = $(CXX_SONAME) ++GDIAGNOSTICS_SONAME = $(DIAGNOSTICS_SONAME) diff --cc debian/rules.source index 0000000,0000000..a11b595 new file mode 100644 --- /dev/null +++ b/debian/rules.source @@@ -1,0 -1,0 +1,15 @@@ ++SOURCE_DIR := $(dir $(lastword $(MAKEFILE_LIST))) ++patchdir = $(SOURCE_DIR)/patches ++ ++include $(SOURCE_DIR)/debian/rules.defs ++include $(SOURCE_DIR)/debian/rules.patch ++include $(SOURCE_DIR)/debian/rules.unpack ++ ++patch-source: $(patch_stamp) ++ ++clean-source: ++ rm -rf $(stampdir) ++ rm -rf $(gcc_srcdir) $(gdc_srcdir) ++ rm -rf bin ++ rm -rf $(srcdir) ++ diff --cc debian/rules.unpack index 0000000,0000000..23c49dd new file mode 100644 --- /dev/null +++ b/debian/rules.unpack @@@ -1,0 -1,0 +1,210 @@@ ++# -*- makefile -*- ++# rules to unpack the source tarballs in $(srcdir); if the source dir already ++# exists, the rule exits with an error to prevent deletion of modified ++# source files. It has to be deleted manually. ++ ++tarballs = $(gcc_tarball) ++ifneq (,$(filter yes, $(with_offload_nvptx) $(with_offload_gcn))) ++ tarballs += $(newlib_tarball) ++endif ++ifeq ($(with_binutils),yes) ++ tarballs += $(binutils_dsc) ++endif ++ ++unpack_stamps = $(foreach i,$(tarballs),$(unpack_stamp)-$(i)) ++ ++unpack: stamp-dir $(unpack_stamp) debian-chmod ++$(unpack_stamp): $(unpack_stamps) ++$(unpack_stamp): $(foreach p,$(debian_tarballs),unpacked-$(p)) ++ echo -e "\nBuilt from Debian source package $(PKGSOURCE)-$(SOURCE_VERSION)" \ ++ > pxxx ++ echo -e "Integrated upstream packages in this version:\n" >> pxxx ++ for i in $(tarballs); do echo " $$i" >> pxxx; done ++ mv -f pxxx $@ ++ ++debian-chmod: ++ @chmod 755 debian/dh_* ++ ++# --------------------------------------------------------------------------- ++ ++gfdl_texinfo_files = \ ++ gcc/doc/analyzer.texi \ ++ gcc/doc/avr-mmcu.texi \ ++ gcc/doc/bugreport.texi \ ++ gcc/doc/cfg.texi \ ++ gcc/doc/collect2.texi \ ++ gcc/doc/compat.texi \ ++ gcc/doc/configfiles.texi \ ++ gcc/doc/configterms.texi \ ++ gcc/doc/contrib.texi \ ++ gcc/doc/contribute.texi \ ++ gcc/doc/cpp.texi \ ++ gcc/doc/cppdiropts.texi \ ++ gcc/doc/cppenv.texi \ ++ gcc/doc/cppinternals.texi \ ++ gcc/doc/cppopts.texi \ ++ gcc/doc/cppwarnopts.texi \ ++ gcc/doc/extend.texi \ ++ gcc/doc/fragments.texi \ ++ gcc/doc/frontends.texi \ ++ gcc/doc/gccint.texi \ ++ gcc/doc/gcov.texi \ ++ gcc/doc/gcov-dump.texi \ ++ gcc/doc/gcov-tool.texi \ ++ gcc/doc/generic.texi \ ++ gcc/doc/gimple.texi \ ++ gcc/doc/gnu.texi \ ++ gcc/doc/gty.texi \ ++ gcc/doc/headerdirs.texi \ ++ gcc/doc/hostconfig.texi \ ++ gcc/doc/implement-c.texi \ ++ gcc/doc/implement-cxx.texi \ ++ gcc/doc/install-old.texi \ ++ gcc/doc/install.texi \ ++ gcc/doc/interface.texi \ ++ gcc/doc/invoke.texi \ ++ gcc/doc/languages.texi \ ++ gcc/doc/libgcc.texi \ ++ gcc/doc/loop.texi \ ++ gcc/doc/lto.texi \ ++ gcc/doc/makefile.texi \ ++ gcc/doc/match-and-simplify.texi \ ++ gcc/doc/md.texi \ ++ gcc/doc/objc.texi \ ++ gcc/doc/optinfo.texi \ ++ gcc/doc/options.texi \ ++ gcc/doc/passes.texi \ ++ gcc/doc/plugins.texi \ ++ gcc/doc/poly-int.texi \ ++ gcc/doc/portability.texi \ ++ gcc/doc/rtl.texi \ ++ gcc/doc/service.texi \ ++ gcc/doc/sourcebuild.texi \ ++ gcc/doc/standards.texi \ ++ gcc/doc/tm.texi.in \ ++ gcc/doc/tm.texi \ ++ gcc/doc/tree-ssa.texi \ ++ gcc/doc/trouble.texi \ ++ gcc/doc/ux.texi \ ++ gcc/doc/include/gcc-common.texi \ ++ gcc/doc/include/funding.texi \ ++ gcc/fortran/gfc-internals.texi \ ++ gcc/fortran/invoke.texi \ ++ gcc/fortran/intrinsic.texi \ ++ ++ ++gfdl_toplevel_texinfo_files = \ ++ gcc/doc/gcc.texi \ ++ gcc/doc/lto-dump.texi \ ++ gcc/ada/gnat-style.texi \ ++ gcc/ada/gnat_rm.texi \ ++ gcc/ada/gnat_ugn.texi \ ++ gcc/fortran/gfortran.texi \ ++ gcc/go/gccgo.texi \ ++ libgomp/libgomp.texi \ ++ libquadmath/libquadmath.texi \ ++ ++gfdl_manpages = \ ++ gcc/doc/cpp.1 \ ++ gcc/doc/g++.1 \ ++ gcc/doc/gc-analyze.1 \ ++ gcc/doc/gcc.1 \ ++ gcc/doc/gccgo.1 \ ++ gcc/doc/gcov.1 \ ++ gcc/doc/gcov-dump.1 \ ++ gcc/doc/gcov-tool.1 \ ++ gcc/doc/gfortran.1 \ ++ gcc/lto/lto-dump.1 \ ++ gcc/doc/fsf-funding.7 \ ++ ++# --------------------------------------------------------------------------- ++$(unpack_stamp)-$(gcc_tarball): $(gcc_tarpath) ++ @echo "Build environment: derivative=$(derivative), release=$(distrelease)" ++ : # unpack gcc tarball ++ mkdir -p $(stampdir) ++ if [ -d $(srcdir) ]; then \ ++ echo >&2 "Source directory $(srcdir) exists. Delete by hand"; \ ++ false; \ ++ fi ++ rm -rf $(gcc_srcdir) ++ tar -x -f $(gcc_tarpath) ++ mv $(gcc_srcdir) $(srcdir) ++ ln -sf libsanitizer $(srcdir)/libasan ++ifeq (0,1) ++ cd $(srcdir) && tar cfj ../gcc-4.1.1-doc.tar.bz2 \ ++ $(gfdl_texinfo_files) \ ++ $(gfdl_toplevel_texinfo_files) \ ++ $(gfdl_manpages) ++endif ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ ifneq ($(single_package),yes) ++ rm -f $(srcdir)/gcc/doc/*.1 ++ rm -f $(srcdir)/gcc/doc/fsf-funding.7 ++ rm -f $(srcdir)/gcc/doc/*.info ++ rm -f $(srcdir)/gcc/fortran/*.info ++ rm -f $(srcdir)/libgomp/*.info ++ rm -f $(srcdir)/libquadmath/*.info ++ for i in $(gfdl_texinfo_files); do \ ++ if [ -f $(srcdir)/$$i ]; then \ ++ cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ ++ else \ ++ cp $(SOURCE_DIR)debian/dummy.texi $(srcdir)/$$i; \ ++ echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ ++ fi; \ ++ done ++ ( \ ++ echo '@include gcc-vers.texi'; \ ++ echo '@macro versionsubtitle'; \ ++ echo '@subtitle For @sc{gcc} version @value{version-GCC}'; \ ++ echo '@vskip 0pt plus 1filll'; \ ++ echo '@end macro'; \ ++ ) > $(srcdir)/gcc/doc/include/gcc-common.texi ++ for i in $(gfdl_toplevel_texinfo_files); do \ ++ n=$$(basename $$i .texi); \ ++ if [ -f $(srcdir)/$$i ]; then \ ++ sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ ++ > $(srcdir)/$$i; \ ++ else \ ++ sed "s/@name@/$$n/g" $(SOURCE_DIR)debian/gcc-dummy.texi \ ++ > $(srcdir)/$$i; \ ++ echo >&2 "$$i does not exist, fix debian/rules.unpack"; \ ++ fi; \ ++ done ++ for i in $(gfdl_manpages); do \ ++ touch $(srcdir)/$$i; \ ++ done ++ rm -f $(srcdir)/INSTALL/*.html ++ rm -f $(srcdir)/zlib/contrib/dotzlib/DotZLib.chm ++ endif ++endif ++ echo "$(gcc_tarball) unpacked." > $@ ++ ++# --------------------------------------------------------------------------- ++ifneq (,$(newlib_tarball)) ++$(unpack_stamp)-$(newlib_tarball): $(newlib_tarpath) $(unpack_stamp)-$(gcc_tarball) ++ : # unpack newlib tarball ++ mkdir -p $(stampdir) ++ : # rm -rf $(newlib_srcdir) ++ tar -x -f $(newlib_tarpath) ++ echo "$(newlib_tarball) unpacked." > $@ ++endif ++ ++# --------------------------------------------------------------------------- ++ifneq (,$(binutils_dsc)) ++$(unpack_stamp)-$(binutils_dsc): $(binutils_tarpath) $(unpack_stamp)-$(gcc_tarball) ++ : # unpack binutils package ++ mkdir -p $(stampdir) ++ : # rm -rf $(binutils_srcdir) ++ dpkg-source -x $(binutils_dsc) ++ ++ : # symlink binutilds toplevel dirs into the gcc tree ++ for d in $(binutils_srcdir)/*; do \ ++ [ -d $$d ] || continue; \ ++ b=$$(basename $$d); \ ++ if [ ! -e $(srcdir)/$$b ]; then \ ++ ln -s ../$(binutils_srcdir)/$$b $(srcdir)/$$b; \ ++ fi; \ ++ done ++ ++ echo "$(binutils_dsc) unpacked." > $@ ++endif diff --cc debian/rules2 index 0000000,0000000..a1024d1 new file mode 100644 --- /dev/null +++ b/debian/rules2 @@@ -1,0 -1,0 +1,3197 @@@ ++#! /usr/bin/make -f ++# -*- makefile -*- ++ ++# Uncomment this to turn on verbose mode. ++#export DH_VERBOSE=1 ++ ++.SUFFIXES: ++ ++include debian/rules.defs ++include debian/rules.parameters ++ ++ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++ include $(binutils_srcdir)/debian/rules.defs ++endif ++ ++dh_compat2 := $(shell dpkg --compare-versions "$$(dpkg-query -f '$${Version}' -W debhelper)" lt 9.20150811ubuntu2 \ ++ && echo DH_COMPAT=2) ++ ++# some tools ++SHELL = /bin/bash -e # brace expansion in rules file ++IR = install -m 644 # Install regular file ++IP = install -m 755 # Install program ++IS = install -m 755 # Install script ++ ++DWZ = dwz ++ifneq (,$(filter $(distrelease),jessie stretch trusty xenial bionic)) ++ DWZ = : dwz ++endif ++ ++# dwz: debian/gccgo-11/usr/lib/gcc/mips64el-linux-gnuabi64/11/go1: Found two copies of .debug_line_str section ++ifneq (,$(filter $(DEB_HOST_ARCH),mips64el hurd-amd64 hurd-i386)) ++ DWZ = : dwz ++endif ++ ++# kernel-specific ulimit hack ++ifeq ($(findstring linux,$(DEB_HOST_GNU_SYSTEM)),linux) ++ ULIMIT_M = if [ -e /proc/meminfo ]; then \ ++ m=`awk '/^((Mem|Swap)Free|Cached)/{m+=$$2}END{print int(m*.9)}' \ ++ /proc/meminfo`; \ ++ else \ ++ m=`vmstat --free --swap-free --kilobytes|awk '{m+=$$2}END{print int(m*.9)}'`; \ ++ fi; \ ++ echo "Limiting memory for test runs to $${m}kB"; \ ++ if ulimit -m $$m; then \ ++ echo " limited to `ulimit -m`kB"; \ ++ else \ ++ echo " failed"; \ ++ fi ++else ++ ULIMIT_M = true ++endif ++ ++#time_command = /usr/bin/time -v ++ifeq ($(usage_stats),yes) ++ time_command += $(CURDIR)/debian/usage-wrapper.py $(NJOBS) --base-memory -m 2.0 -o usage-$(shell echo $@ | sed 's/.*0[1-9]-//;s/-stamp//').svg ++endif ++ ++ifeq ($(locale_data),generate) ++ SET_LOCPATH = LOCPATH=$(CURDIR)/locales ++endif ++ ++SET_PATH = PATH=$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH ++ifeq ($(trunk_build),yes) ++ ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) ++ SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH ++ endif ++ ifneq (,$(findstring ppc64-linux,$(DEB_TARGET_GNU_TYPE))) ++ SET_PATH = PATH=/usr/lib/gcc-snapshot/bin:$(CURDIR)/bin:/usr/$(libdir)/gcc/bin:$$PATH ++ endif ++endif ++ ++# the recipient for the test summaries. Send with: debian/rules mail-summary ++S_EMAIL = gcc@packages.debian.org gcc-testresults@gcc.gnu.org ++ ++# build not yet prepared to take variables from the environment ++define unsetenv ++ unexport $(1) ++ $(1) = ++endef ++$(foreach v, CPPFLAGS CFLAGS CXXFLAGS DFLAGS FFLAGS FCFLAGS LDFLAGS OBJCFLAGS OBJCXXFLAGS, $(if $(filter environment,$(origin $(v))),$(eval $(call unsetenv, $(v))))) ++ ++CC = $(notdir $(firstword $(wildcard \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-15 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-14 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-13 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-12 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-11 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-10 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-9 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc-8 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc))) ++CXX = $(notdir $(firstword $(wildcard \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-15 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-14 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-13 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-12 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-11 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-10 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-9 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++-8 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-g++))) ++GDC = $(notdir $(firstword $(wildcard \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-15 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-14 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-13 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-12 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-11 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-10 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc-9 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gdc))) ++ifeq ($(with_ada),yes) ++ GNAT = $(notdir $(firstword $(wildcard \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-15 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-14 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-13 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-12 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-11 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-10 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-9 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat-8 \ ++ /usr/bin/$(DEB_HOST_GNU_TYPE)-gnat))) ++ ifneq (,$(GNAT)) ++ CC = $(subst gnat,gcc,$(GNAT)) ++ else ifneq (,$(filter $(distrelease), trusty)) ++ CC = gcc-4.8 ++ else ifneq (,$(wildcard /usr/bin/$(DEB_HOST_GNU_TYPE)-gcc)) ++ CC = $(DEB_HOST_GNU_TYPE)-gcc ++ else ++ CC = gcc ++ endif ++ CXX = $(subst gcc,g++,$(CC)) ++ GDC = $(subst gcc,gdc,$(CC)) ++ GNATBIND = $(subst gnat,gnatbind,$(GNAT)) ++ GNATMAKE = $(subst gnat,gnatmake,$(GNAT)) ++endif ++ ++ifneq (,$(filter $(build_type),cross-build-native cross-build-cross)) ++ export GNATMAKE_FOR_BUILD = $(DEB_BUILD_GNU_TYPE)-gnatmake-$(BASE_VERSION) ++ SET_TARGET_TOOLS = \ ++ CC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gcc-$(BASE_VERSION) \ ++ CXX_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-g++-$(BASE_VERSION) \ ++ GFORTRAN_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gfortran-$(BASE_VERSION) \ ++ GOC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gccgo-$(BASE_VERSION) \ ++ GNAT_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gnat-$(BASE_VERSION) \ ++ GDC_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gdc-$(BASE_VERSION) \ ++ GM2_FOR_TARGET=$(DEB_TARGET_GNU_TYPE)-gm2-$(BASE_VERSION) ++endif ++ ++ifeq ($(DEB_BUILD_GNU_TYPE),$(DEB_TARGET_GNU_TYPE)) ++ CC_FOR_TARGET = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ ++else ++ CC_FOR_TARGET = $(DEB_TARGET_GNU_TYPE)-gcc ++endif ++ ++ifneq ($(derivative),Ubuntu) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), arm armel mips mipsel)) ++ STAGE1_CFLAGS = -g -O2 ++ endif ++endif ++ ++ifeq ($(with_ssp_default),yes) ++ STAGE1_CFLAGS = -g ++ ifeq (,$(BOOT_CFLAGS)) ++ BOOT_CFLAGS = -g -O2 ++ endif ++ LIBCFLAGS = -g -O2 ++ LIBCXXFLAGS = -g -O2 -fno-implicit-templates ++ # Only use -fno-stack-protector when known to the stage1 compiler. ++ cc-fno-stack-protector := $(shell if $(CC) $(CFLAGS) -fno-stack-protector \ ++ -S -o /dev/null -xc /dev/null > /dev/null 2>&1; \ ++ then echo "-fno-stack-protector"; fi;) ++ $(foreach var,STAGE1_CFLAGS BOOT_CFLAGS LIBCFLAGS LIBCXXFLAGS,$(eval \ ++ $(var) += $(cc-fno-stack-protector))) ++endif ++ ++# FIXME: passing LDFLAGS for native doesn't do anything ++ifneq (,$(filter $(build_type), build-cross cross-build-cross)) ++ CFLAGS = -g -O2 ++ LDFLAGS = -Wl,-z,relro ++ ifeq ($(DEB_TARGET_ARCH),alpha) ++ LDFLAGS += -Wl,--no-relax ++ endif ++else ++ BOOT_CFLAGS = -g -O2 ++ BOOT_LDFLAGS = -Wl,-z,relro ++ ifeq ($(DEB_TARGET_ARCH),alpha) ++ BOOT_LDFLAGS += -Wl,--no-relax ++ endif ++endif ++LDFLAGS_FOR_TARGET = -Wl,-z,relro ++ifeq ($(DEB_TARGET_ARCH),alpha) ++ LDFLAGS := $(filter-out -Wl$(COMMA)--no-relax, $(LDFLAGS)) -Wl,--no-relax ++endif ++ ++ifneq (,$(findstring static,$(DEB_BUILD_OPTIONS))) ++ LDFLAGS += -static ++endif ++ ++ifneq ($(findstring gccdebug, $(DEB_BUILD_OPTIONS)),) ++ CFLAGS = -O0 -g3 -fno-inline ++ CXXFLAGS = -O0 -g3 -fno-inline ++ CFLAGS_FOR_BUILD = -O0 -g3 -fno-inline ++ CXXFLAGS_FOR_BUILD = -O0 -g3 -fno-inline ++ CFLAGS_FOR_TARGET = -O0 -g3 -fno-inline ++ CXXFLAGS_FOR_TARGET = -O0 -g3 -fno-inline ++ BOOT_CFLAGS = ++ BOOT_LDFLAGS = ++ STAGE1_CFLAGS = ++ STAGE1_LDFLAGS = ++endif ++ ++ifeq ($(DEB_TARGET_ARCH),arm64) ++ # Build with PAC/BTI support if enabled in the build flags ++ # https://wiki.debian.org/ToolChain/PACBTI ++ ifneq (,$(findstring -mbranch-protection=standard,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get CFLAGS))) ++ CFLAGS_SECURE = -mbranch-protection=standard ++ else ++ CFLAGS_SECURE = ++ endif ++ ++ ifneq (,$(findstring -mbranch-protection=standard,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get FCFLAGS))) ++ FCFLAGS += -mbranch-protection=standard ++ endif ++ ++ ifeq ($(DEB_CROSS),yes) ++ # Building cross compilers ++ CFLAGS_FOR_TARGET += $(CFLAGS_SECURE) ++ CXXFLAGS_FOR_TARGET += $(CFLAGS_SECURE) ++ else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) ++ # Cross build of the native compiler ++ CFLAGS_FOR_TARGET += $(CFLAGS_SECURE) ++ CXXFLAGS_FOR_TARGET += $(CFLAGS_SECURE) ++ else ++ # Native build ++ CFLAGS += $(CFLAGS_SECURE) ++ CXXFLAGS += $(CFLAGS_SECURE) ++ BOOT_CFLAGS += $(CFLAGS_SECURE) ++ endif ++endif ++ ++ifneq (,$(findstring -fno-omit-frame-pointer,$(shell DEB_HOST_ARCH=$(DEB_TARGET_ARCH) dpkg-buildflags --get CFLAGS))) ++ CFLAGS_FRAME_POINTER = -fno-omit-frame-pointer ++else ++ CFLAGS_FRAME_POINTER = ++endif ++ ++ifeq ($(DEB_CROSS),yes) ++ # Building cross compilers ++ CFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) ++ CXXFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) ++else ifneq ($(DEB_BUILD_GNU_TYPE),$(DEB_HOST_GNU_TYPE)) ++ # Cross build of the native compiler ++ CFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) ++ CXXFLAGS_FOR_TARGET += $(CFLAGS_FRAME_POINTER) ++else ++ # Native build ++ CFLAGS += $(CFLAGS_FRAME_POINTER) ++ CXXFLAGS += $(CFLAGS_FRAME_POINTER) ++endif ++ ++# set CFLAGS/LDFLAGS for the configure step only, maybe be modifed for some target ++# all other flags are passed to the make step. ++pass_vars = $(foreach v,$(1),$(if $($(v)),$(v)="$($(v))")) ++flags_to_pass := CFLAGS CXXFLAGS LIBCFLAGS LIBCXXFLAGS LDFLAGS FCFLAGS ++ ++docdir = usr/share/doc ++ ++# no prefix for regular builds, would disable searching for as / ld ++binutils_prefix = ++ifneq (,$(with_build_sysroot)) ++ binutils_prefix = $(with_build_sysroot)/usr/bin ++endif ++ ++CONFARGS = -v \ ++ --with-pkgversion='$(distribution)$(if $(with_ibm_branch),/IBM)___$(DEB_VERSION)' \ ++ --with-bugurl='file:///usr/share/doc/$(PKGSOURCE)/README.Bugs' ++ ++CONFARGS += \ ++ --enable-languages=$(subst $(SPACE),$(COMMA),$(enabled_languages)) \ ++ --prefix=/$(PF) \ ++ --with-gcc-major-version-only \ ++ ++ifneq (,$(with_build_sysroot)) ++ CONFARGS += \ ++ --with-as=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-as \ ++ --with-ld=$(binutils_prefix)/$(DEB_TARGET_GNU_TYPE)-ld ++endif ++ ++ifeq ($(versioned_packages),yes) ++ CONFARGS += --program-suffix=-$(BASE_VERSION) ++endif ++ifneq (,$(filter $(build_type),build-native cross-build-native)) ++ CONFARGS += --program-prefix=$(cmd_prefix) ++endif ++ ++ifneq (,$(filter $(DEB_STAGE),stage1 stage2)) ++ CONFARGS += \ ++ --disable-decimal-float \ ++ --disable-libatomic \ ++ --disable-libga68 \ ++ --disable-libgcobol \ ++ --disable-libgomp \ ++ --disable-libssp \ ++ --disable-libquadmath \ ++ --disable-libsanitizer \ ++ --disable-threads \ ++ --disable-bootstrap \ ++ --libexecdir=/$(libexecdir) \ ++ --libdir=/$(PF)/$(configured_libdir) \ ++ $(if $(with_build_sysroot),--with-build-sysroot=$(with_build_sysroot)) \ ++ $(if $(findstring build-cross, $(build_type)), \ ++ $(if $(with_sysroot),--with-sysroot=$(with_sysroot))) \ ++ --enable-linker-build-id ++ ++ ifeq ($(DEB_STAGE),stage1) ++ CONFARGS += \ ++ --disable-shared \ ++ --with-newlib \ ++ --without-headers ++ else ++ # stage2 ++ CONFARGS += \ ++ --enable-shared ++ endif ++else ++ CONFARGS += \ ++ --enable-shared \ ++ --enable-linker-build-id \ ++ ++ifneq ($(single_package),yes) ++ CONFARGS += \ ++ --libexecdir=/$(libexecdir) \ ++ --without-included-gettext \ ++ --enable-threads=posix \ ++ --libdir=/$(PF)/$(configured_libdir) ++endif ++ ++ifneq ($(with_cpp),yes) ++ CONFARGS += --disable-cpp ++endif ++ ++ifeq ($(with_nls),yes) ++ CONFARGS += --enable-nls ++else ++ CONFARGS += --disable-nls ++endif ++ ++ifeq ($(with_bootstrap),off) ++ CONFARGS += --disable-bootstrap ++else ifneq ($(with_bootstrap),) ++ CONFARGS += --enable-bootstrap ++endif ++ ++ifneq ($(with_sysroot),) ++ CONFARGS += --with-sysroot=$(with_sysroot) ++endif ++ifneq ($(with_build_sysroot),) ++ CONFARGS += --with-build-sysroot=$(with_build_sysroot) ++endif ++ ++ifeq ($(force_gnu_locales),yes) ++ CONFARGS += --enable-clocale=gnu ++endif ++ ++ifeq ($(with_cxx)-$(with_cxx_debug),yes-yes) ++ CONFARGS += --enable-libstdcxx-debug ++endif ++CONFARGS += --enable-libstdcxx-time=yes ++CONFARGS += --with-default-libstdcxx-abi=$(libstdcxx_abi) ++ifeq ($(libstdcxx_abi),gcc4-compatible) ++ CONFARGS += --disable-libstdcxx-dual-abi ++endif ++CONFARGS += --enable-libstdcxx-backtrace ++ ++ifeq (,$(filter $(DEB_TARGET_ARCH), hurd-amd64 hurd-i386)) ++ CONFARGS += --enable-gnu-unique-object ++endif ++ ++ifneq ($(with_ssp),yes) ++ CONFARGS += --disable-libssp ++endif ++ ++ifneq ($(with_gomp),yes) ++ CONFARGS += --disable-libgomp ++endif ++ ++ifneq ($(with_itm),yes) ++ CONFARGS += --disable-libitm ++endif ++ ++ifneq ($(with_atomic),yes) ++ CONFARGS += --disable-libatomic ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH),$(vtv_archs))) ++ ifeq ($(with_vtv),yes) ++ CONFARGS += --enable-vtable-verify ++ else ++ CONFARGS += --disable-vtable-verify ++ endif ++endif ++ ++ifneq ($(with_asan),yes) ++ CONFARGS += --disable-libsanitizer ++endif ++ ++ifneq ($(with_qmath),yes) ++ CONFARGS += --disable-libquadmath --disable-libquadmath-support ++endif ++ ++ifeq ($(with_plugins),yes) ++ CONFARGS += --enable-plugin ++endif ++ ++#ifeq ($(with_gold),yes) ++# CONFARGS += --enable-gold --enable-ld=default ++#endif ++ ++#CONFARGS += --with-plugin-ld=ld.gold ++#CONFARGS += --with-plugin-ld ++ ++# enable pie-by-default on pie_archs ++ifeq ($(with_pie),yes) ++ CONFARGS += --enable-default-pie ++endif ++ ++endif # !DEB_STAGE ++ ++CONFARGS += --with-system-zlib ++ ++ifeq ($(with_phobos),yes) ++ CONFARGS += --enable-libphobos-checking=release ++ ifeq ($(DEB_CROSS),yes) ++ CONFARGS += --without-target-system-zlib ++ else ++ CONFARGS += --with-target-system-zlib=auto ++ endif ++endif ++ ++ifeq ($(with_d),yes) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), $(druntime_only_archs))) ++ CONFARGS += --with-libphobos-druntime-only=yes ++ else ifneq ($(with_phobos),yes) ++ CONFARGS += --disable-libphobos ++ endif ++endif ++ ++ifeq ($(with_objc)-$(with_objc_gc),yes-yes) ++ CONFARGS += --enable-objc-gc=auto ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), i486-linux-gnu i586-linux-gnu i686-linux-gnu)) ++ ifeq ($(multilib),yes) ++ ifeq ($(biarch64),yes) ++ CONFARGS += --enable-targets=all ++ endif ++ endif ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), x86_64-linux-gnu x86_64-linux-gnux32 x86_64-gnu s390x-linux-gnu sparc64-linux-gnu)) ++ ifneq ($(biarch32),yes) ++ CONFARGS += --disable-multilib ++ endif ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_GNU_TYPE), powerpc-linux-gnu powerpc-linux-gnuspe)) ++ CONFARGS += --enable-secureplt ++ ifeq ($(biarch64),yes) ++ CONFARGS += --disable-softfloat --with-cpu=default32 ++ ifeq ($(multilib),yes) ++ CONFARGS += --disable-softfloat \ ++ --enable-targets=powerpc-linux,powerpc64-linux ++ endif ++ else ++ CONFARGS += --disable-multilib ++ endif ++endif ++ ++ifneq (,$(findstring powerpc64le-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --enable-secureplt ++ ifeq ($(derivative),Ubuntu) ++ ifneq (,$(filter $(distrelease), jessie trusty)) ++ CONFARGS += --with-cpu=power7 --with-tune=power8 ++ else ifneq (,$(filter $(distrelease), xenial bionic focal hirsute impish)) ++ CONFARGS += --with-cpu=power8 ++ else ++ CONFARGS += --with-cpu=power9 ++ endif ++ endif ++ CONFARGS += --enable-targets=powerpcle-linux ++ CONFARGS += --disable-multilib ++endif ++ ++ifneq (,$(findstring powerpc64-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --enable-secureplt ++ ifeq ($(biarch32),yes) ++ ifeq ($(multilib),yes) ++ CONFARGS += --disable-softfloat --enable-targets=powerpc64-linux,powerpc-linux ++ endif ++ else ++ CONFARGS += --disable-multilib ++ endif ++ ifeq ($(derivative),Ubuntu) ++ CONFARGS += --with-cpu-32=power7 --with-cpu-64=power7 ++ endif ++endif ++ ++# FIXME: only needed for isl-0.13 for now ++#CONFARGS += --disable-isl-version-check ++ ++ifneq (,$(findstring cross-build-,$(build_type))) ++ # FIXME: requires isl headers for the target ++ #CONFARGS += --without-isl ++ # FIXME: build currently fails build the precompiled headers ++ CONFARGS += --disable-libstdcxx-pch ++endif ++ ++ifeq ($(with_multiarch_lib),yes) ++ CONFARGS += --enable-multiarch ++endif ++ ++ifneq (,$(findstring alpha,$(DEB_TARGET_GNU_CPU))) ++ CONFARGS += --with-cpu=ev56 ++endif ++ ++ifneq (,$(findstring aarch64,$(DEB_TARGET_GNU_CPU))) ++ # requires binutils 2.25.90 or newer ++ ifeq (,$(filter $(distrelease), precise trusty)) ++ CONFARGS += --enable-fix-cortex-a53-843419 ++ endif ++endif ++ ++ifneq (,$(findstring softfloat,$(DEB_TARGET_GNU_CPU))) ++ CONFARGS += --with-float=soft ++endif ++ ++ifneq (,$(findstring arc-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --disable-multilib ++endif ++ ++ifneq (,$(findstring arm-vfp,$(DEB_TARGET_GNU_CPU))) ++ CONFARGS += --with-fpu=vfp ++endif ++ ++ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) ++ ifeq ($(multilib),yes) ++ CONFARGS += --enable-multilib ++ endif ++ CONFARGS += --disable-sjlj-exceptions ++ ifneq (,$(filter %armhf,$(DEB_TARGET_ARCH))) ++ ifeq ($(distribution),Raspbian) ++ with_arm_arch = armv6+fp ++ else ++ ifneq (,$(filter $(distrelease), jessie stretch buster bullseye xenial bionic focal hirsute)) ++ with_arm_fpu = vfpv3-d16 ++ with_arm_arch = armv7-a ++ else ++ with_arm_fpu = ++ with_arm_arch = armv7-a+fp ++ endif ++ endif ++ else ++ # armel ++ ifeq ($(derivative),Debian) ++ ifneq (,$(filter $(distrelease), jessie stretch)) ++ with_arm_arch = armv4t ++ else ++ with_arm_arch = armv5te ++ endif ++ else ifneq (,$(filter $(distrelease), precise)) ++ with_arm_arch = armv7-a+fp ++ else ++ with_arm_arch = armv5t # starting with quantal ++ CONFARGS += --with-specs='%{mfloat-abi=hard:-march=armv7-a___-mcpu=generic-armv7-a___-mfloat-abi=hard}' ++ endif ++ endif ++ CONFARGS += --with-arch=$(with_arm_arch) ++ ifneq (,$(with_arm_fpu)) ++ CONFARGS += --with-fpu=$(with_arm_fpu) ++ endif ++ CONFARGS += --with-float=$(float_abi) ++ ifeq ($(with_arm_thumb),yes) ++ CONFARGS += --with-mode=thumb ++ endif ++endif ++ ++ifeq ($(DEB_TARGET_GNU_CPU),$(findstring $(DEB_TARGET_GNU_CPU),m68k)) ++ CONFARGS += --disable-werror ++endif ++# FIXME: correct fix-warnings.dpatch ++ifeq ($(derivative),Ubuntu) ++ CONFARGS += --disable-werror ++else ifeq ($(derivative),Debian) ++ CONFARGS += --disable-werror ++endif ++ ++ifneq (,$(findstring loongarch64-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --disable-multilib ++endif ++ ++ifneq (,$(findstring sparc-linux,$(DEB_TARGET_GNU_TYPE))) ++ ifeq ($(biarch64),yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-cpu-32=ultrasparc ++ else ++ CONFARGS += --with-cpu=ultrasparc ++ endif ++endif ++ ++ifneq (,$(findstring sparc64-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-cpu-32=ultrasparc ++ ifeq ($(biarch32),yes) ++ CONFARGS += --enable-targets=all ++ endif ++endif ++ ++ifneq (,$(findstring ia64-linux,$(DEB_TARGET_GNU_TYPE))) ++ ifneq ($(with_internal_libunwind),yes) ++ CONFARGS += --with-system-libunwind ++ endif ++endif ++ ++ifneq (,$(findstring sh4-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-cpu=sh4 --with-multilib-list=m4,m4-nofpu ++endif ++ ++ifneq (,$(findstring m68k-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --disable-multilib ++endif ++ ++ifneq (,$(findstring riscv64-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --disable-multilib ++ CONFARGS += --with-abi=lp64d ++ ifeq ($(derivative),Ubuntu) ++ ifneq (,$(filter $(distrelease), focal jammy noble oracular plucky)) ++ CONFARGS += --with-arch=rv64gc ++ else ++ # Ubuntu 25.10 Questing Quokka is built for the RVA23 family of profiles. ++ # The 'RVA23 Profiles' specification is available in ++ # https://drive.google.com/file/d/12QKRm92cLcEk8-5J9NI91m0fAQOxqNAq/view ++ # ++ # Here we select the RVA23U64 profile and the zifencei extension. ++ # The zifencei extension is in RVA23S64 but fence.i is a U-mode ++ # instruction. ++ RV_EXT = i m a f d c b v zic64b \ ++ zicbom zicbop zicboz ziccamoa ziccif \ ++ zicclsm ziccrse zicntr zicond zicsr \ ++ zifencei zihintntl zihintpause zihpm zimop \ ++ zmmul za64rs zaamo zalrsc zawrs zfa \ ++ zfhmin zca zcb zcd zcmop zba zbb \ ++ zbs zkt zvbb zve32f zve32x zve64d \ ++ zve64f zve64x zvfhmin zvkb zvkt zvl128b \ ++ zvl32b zvl64b supm ++ CONFARGS += --with-arch=rv64$(subst $(SPACE),_,$(RV_EXT)) ++ endif ++ else # Debian ++ CONFARGS += --with-arch=rv64gc ++ endif ++endif ++ ++ifneq (,$(findstring s390x-linux,$(DEB_TARGET_GNU_TYPE))) ++ ifeq ($(derivative),Ubuntu) ++ ifneq (,$(filter $(distrelease),xenial bionic focal)) ++ CONFARGS += --with-arch=zEC12 ++ else ifneq (,$(filter $(distrelease),jammy kinetic)) ++ CONFARGS += --with-arch=z13 --with-tune=z15 ++ else ifneq (,$(filter $(distrelease),lunar mantic noble oracular plucky questing)) ++ CONFARGS += --with-arch=z13 --with-tune=z16 ++ else ++ CONFARGS += --with-arch=z15 --with-tune=z16 ++ endif ++ else # Debian ++ CONFARGS += --with-arch=z196 ++ endif ++ ifneq (,$(filter $(distrelease),stretch buster bullseye bookworm xenial bionic focal jammy lunar mantic)) ++ CONFARGS += --enable-s390-excess-float-precision ++ else ++ CONFARGS += --disable-s390-excess-float-precision ++ endif ++endif ++ ++ifeq ($(DEB_TARGET_ARCH_OS),linux) ++ ifneq (,$(findstring $(DEB_TARGET_ARCH), alpha powerpc ppc64 ppc64el s390 s390x sparc sparc64)) ++ CONFARGS += --with-long-double-128 ++ endif ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH), ppc64el)) ++ ifneq (,$(filter $(distrelease), $(ppc64el_ibm128_distreleases))) ++ # default to IBM double ++ else ++ CONFARGS += --with-long-double-format=ieee ++ endif ++endif ++ ++ifneq (,$(filter $(derivative),Ubuntu)) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 x32)) ++ ifneq (,$(filter $(distrelease),precise xenial bionic)) ++ CONFARGS += --disable-cet ++ else ++ CONFARGS += --enable-cet ++ endif ++ endif ++else ifneq (,$(filter $(derivative),Debian)) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 x32)) ++ ifneq (,$(filter $(distrelease),jessie stretch buster bullseye)) ++ CONFARGS += --disable-cet ++ else ++ CONFARGS += --enable-cet ++ endif ++ endif ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386)) ++ ifneq (,$(filter $(derivative),Ubuntu)) ++ CONFARGS += --with-arch-32=i686 ++ else # Debian ++ ifneq (,$(filter $(distrelease), jessie)) ++ CONFARGS += --with-arch-32=i586 ++ else ++ CONFARGS += --with-arch-32=i686 ++ endif ++ endif ++endif ++ ++ifneq (,$(filter $(derivative),Ubuntu)) ++ ifeq ($(DEB_TARGET_ARCH),amd64) ++ # only passed in the environment by dpkg-buildpackage ++ ifeq ($(DEB_HOST_ARCH_VARIANT),amd64v3) ++ CONFARGS += --with-arch-64=x86-64-v3 ++ else ifeq ($(DEB_HOST_ARCH_VARIANT),amd64v4) ++ CONFARGS += --with-arch-64=x86-64-v4 ++ endif ++ endif ++endif ++ ++ifeq ($(DEB_TARGET_ARCH),amd64) ++ CONFARGS += --with-abi=m64 ++endif ++ifeq ($(DEB_TARGET_ARCH),x32) ++ CONFARGS += --with-abi=mx32 ++endif ++ifeq ($(multilib),yes) ++ ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386)) ++ CONFARGS += --with-multilib-list=m32,m64$(if $(filter yes,$(biarchx32)),$(COMMA)mx32) ++ else ifeq ($(DEB_TARGET_ARCH),x32) ++ CONFARGS += --with-multilib-list=mx32,m64,m32 ++ endif ++ CONFARGS += --enable-multilib ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-i386)) ++ CONFARGS += --with-arch=i686 ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH), hurd-amd64)) ++ CONFARGS += --disable-multilib ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 i386 hurd-amd64 hurd-i386)) ++ CONFARGS += --with-tune=generic ++endif ++ ++ifneq (,$(findstring mips-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx ++ CONFARGS += --with-lxc1-sxc1=no ++ ifeq ($(multilib),yes) ++ ifeq ($(biarchn32)-$(biarch64),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-64=mips64r2 ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mipsel-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx ++ CONFARGS += --with-madd4=no ++ CONFARGS += --with-lxc1-sxc1=no ++ ifeq ($(multilib),yes) ++ ifeq ($(biarchn32)-$(biarch64),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-64=mips64r2 ++ endif ++ endif ++endif ++ ++#FIXME: howto for mipsn32? ++ifneq (,$(findstring mips64el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-madd4=no ++ ifeq ($(multilib),yes) ++ ifeq ($(biarch64)-$(biarch32),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-64=mips64r2 ++ CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mips64-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) ++ ifeq ($(multilib),yes) ++ ifeq ($(biarch64)-$(biarch32),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-64=mips64r2 ++ CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mips64el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-mips-plt ++ CONFARGS += --with-arch-64=mips64r2 ++ CONFARGS += --with-madd4=no ++ ifeq ($(multilib),yes) ++ ifeq ($(biarchn32)-$(biarch32),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mips64-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-mips-plt ++ CONFARGS += --with-arch-64=mips64r2 ++ ifeq ($(multilib),yes) ++ ifeq ($(biarchn32)-$(biarch32),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-32=mips32r2 --with-fp-32=xx ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mipsisa32r6-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 ++ ifeq ($(multilib),yes) ++ ifeq ($(biarchn32)-$(biarch64),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mipsisa32r6el-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 ++ ifeq ($(multilib),yes) ++ ifeq ($(biarchn32)-$(biarch64),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 ++ endif ++ endif ++endif ++ ++#FIXME: howto for mipsn32? ++ifneq (,$(findstring mipsisa64r6el-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-mips-plt ++ ifeq ($(multilib),yes) ++ ifeq ($(biarch64)-$(biarch32),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 ++ CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mipsisa64r6-linux-gnuabin32,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-mips-plt ++ ifeq ($(multilib),yes) ++ ifeq ($(biarch64)-$(biarch32),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 ++ CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mipsisa64r6el-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-mips-plt ++ CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 ++ ifeq ($(multilib),yes) ++ ifeq ($(biarchn32)-$(biarch32),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mipsisa64r6-linux-gnuabi64,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --with-mips-plt ++ CONFARGS += --with-arch-64=mips64r6 --with-tune-64=mips64r6 ++ ifeq ($(multilib),yes) ++ ifeq ($(biarchn32)-$(biarch32),yes-yes) ++ CONFARGS += --enable-targets=all ++ CONFARGS += --with-arch-32=mips32r6 --with-tune-32=mips32r6 ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) ++ ifeq (,$(filter yes,$(biarch32) $(biarchn32) $(biarch64))) ++ CONFARGS += --disable-multilib ++ endif ++endif ++ ++ifneq (,$(findstring s390-linux,$(DEB_TARGET_GNU_TYPE))) ++ ifeq ($(multilib),yes) ++ ifeq ($(biarch64),yes) ++ CONFARGS += --enable-targets=all ++ endif ++ endif ++endif ++ ++ifneq (,$(findstring hppa-linux,$(DEB_TARGET_GNU_TYPE))) ++ CONFARGS += --disable-libstdcxx-pch ++endif ++ ++ifneq (,$(offload_targets)) ++ ifneq (,$(filter nvptx-none, $(offload_targets))) ++ offload_opt = nvptx-none=$(CURDIR)/$(d)-nvptx/$(PF) ++ endif ++ ifneq (,$(filter $(gcn_target_name), $(offload_targets))) ++ offload_opt += $(gcn_target_name)=$(CURDIR)/$(d)-gcn/$(PF) ++ endif ++ CONFARGS += \ ++ --enable-offload-targets=$(subst $(SPACE),$(COMMA),$(strip $(offload_opt))) \ ++ --enable-offload-defaulted ++ ifeq ($(with_offload_nvptx),yes) ++ CONFARGS += --without-cuda-driver ++ endif ++endif ++ ++ifeq ($(trunk_build),yes) ++ ifeq ($(findstring --disable-werror, $(CONFARGS)),) ++ CONFARGS += --disable-werror ++ endif ++ enable_checking = yes ++ ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 mips64el ppc64 ppc64el s390x)) ++ enable_checking = yes,extra,rtl ++ endif ++else ++ enable_checking = yes ++ ifneq (,$(filter $(DEB_TARGET_ARCH), amd64 arm64 mips64el ppc64 ppc64el s390x)) ++ enable_checking = yes,extra,rtl ++ endif ++ enable_checking = release ++endif ++CONFARGS += --enable-checking=$(enable_checking) ++ ++ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++ CONFARGS += $(BINUTILS_GCCCONF) ++endif ++ ++CONFARGS += \ ++ --build=$(DEB_BUILD_GNU_TYPE) \ ++ --host=$(DEB_HOST_GNU_TYPE) \ ++ --target=$(TARGET_ALIAS) ++ ++ifeq ($(DEB_CROSS),yes) ++ CONFARGS += \ ++ --program-prefix=$(TARGET_ALIAS)- \ ++ --includedir=/$(PFL)/include ++endif ++ ++ifeq ($(with_bootstrap),off) ++ bootstrap_target = ++else ifeq ($(with_bootstrap),profiled) ++ bootstrap_target = profiledbootstrap ++ bootstrap_target = profiledbootstrap-lean ++else ifeq ($(with_bootstrap),) ++ ifneq (, $(filter $(PKGSOURCE),gcc-$(BASE_VERSION) gcc-snapshot)) ++ bootstrap_target = bootstrap ++ endif ++ ifneq (,$(DEB_STAGE)) ++ bootstrap_target = bootstrap ++ endif ++endif ++ ++ifeq ($(with_lto_build),yes) ++ CONFARGS += \ ++ --with-build-config=bootstrap-lto-lean \ ++ --enable-link-serialization=$(CPUS_LTOLINK) ++endif ++ ++# this is the default, set in /usr/share/dejagnu/remote.exp ++# by a local dejagnu patch. ++DEJAGNU_TIMEOUT=300 ++# Increase the timeout for one testrun on slow architectures ++ifeq ($(derivative),Debian) ++ ifneq (,$(findstring $(DEB_TARGET_ARCH),armel armhf arm64)) ++ DEJAGNU_TIMEOUT=300 ++ else ifneq (,$(findstring $(DEB_TARGET_ARCH),hppa m68k riscv64 sparc)) ++ DEJAGNU_TIMEOUT=600 ++ else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),x86_64 i386 i486 i586 i686)) ++ DEJAGNU_TIMEOUT=180 ++ endif ++ ifeq ($(DEB_TARGET_GNU_SYSTEM),gnu) ++ DEJAGNU_TIMEOUT=900 ++ endif ++else ifeq ($(derivative),Ubuntu) ++ ifneq (,$(findstring $(DEB_TARGET_ARCH), armel armhf arm64)) ++ DEJAGNU_TIMEOUT=300 ++ else ifneq (,$(findstring $(DEB_TARGET_ARCH), riscv64)) ++ DEJAGNU_TIMEOUT=600 ++ else ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),x86_64 i386 i486 i586 i686 power)) ++ DEJAGNU_TIMEOUT=180 ++ endif ++endif ++ ++DEJAGNU_RUNS = ++ifneq ($(trunk_build),yes) ++ifeq ($(with_ssp),yes) ++ # the buildds are just slow ... don't check the non-default ++ ifneq (,$(findstring $(DEB_TARGET_GNU_CPU),hppa m68k mips sh4)) ++ DEJAGNU_RUNS = ++ else ifneq (,$(filter $(DEB_TARGET_ARCH),armel)) ++ DEJAGNU_RUNS = ++ else ifneq ($(single_package),yes) ++ DEJAGNU_RUNS += $(if $(filter yes,$(with_ssp_default)),-fno-stack-protector,-fstack-protector) ++ endif ++endif ++endif ++ ++ifeq ($(derivative),Ubuntu) ++ ifneq (,$(findstring arm, $(DEB_TARGET_GNU_CPU))) ++ ifeq ($(with_arm_thumb),yes) ++ #DEJAGNU_RUNS += -marm ++ else ++ DEJAGNU_RUNS += -mthumb ++ endif ++ endif ++endif ++ ++# no b-d on g++-multilib, this is run by the built compiler ++abi_run_check = $(strip $(if $(wildcard build/runcheck$(1).out), \ ++ $(shell cat build/runcheck$(1).out), \ ++ $(shell CC="$(builddir)/gcc/xgcc -B$(builddir)/gcc/ -static-libgcc $(1)" bash debian/runcheck.sh))) ++ifeq ($(biarch32),yes) ++ DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips64 mips64el mipsn32 mipsn32el),-mabi=32,-m32)) ++endif ++ifeq ($(biarch64),yes) ++ DEJAGNU_RUNS += $(call abi_run_check,$(if $(filter $(DEB_TARGET_ARCH_CPU),mips mipsel),-mabi=64,-m64)) ++endif ++ifeq ($(biarchn32),yes) ++ DEJAGNU_RUNS += $(call abi_run_check,-mabi=n32) ++endif ++ifeq ($(biarchx32),yes) ++ DEJAGNU_RUNS += $(call abi_run_check,-mx32) ++endif ++ ++ifneq (,$(strip $(DEJAGNU_RUNS))) ++ RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix\{,$(subst $(SPACE),$(COMMA),$(strip $(DEJAGNU_RUNS)))\}" ++else ++ RUNTESTFLAGS = RUNTESTFLAGS="--target_board=unix" ++endif ++ ++# used in the libgo testsuite, not using dejagnu ++export CHECK_MULTISUBDIRS = \ ++ $(if $(filter -m32 -mabi=32, $(DEJAGNU_RUNS)), /32) \ ++ $(if $(filter -m64 -mabi=64, $(DEJAGNU_RUNS)), /64) \ ++ $(if $(filter -mabi=n32, $(DEJAGNU_RUNS)), /n32) \ ++ $(if $(filter -mx32, $(DEJAGNU_RUNS)), /x32) ++ ++# PF is the installation prefix for the package without the leading slash. ++# It's "usr" for gcc releases. ++ifneq (,$(PF)) ++ # use value set in the environment ++else ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) ++ PF = usr/lib/gcc-snapshot ++else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++ PF = usr/lib/gcc-toolchain-$(BASE_VERSION) ++else ++ PF = usr ++endif ++ ++# PFL is the installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds ++PFL = $(PF) ++# RPF is the base prefix or installation prefix with DEB_TARGET_GNU_TYPE attached for cross builds ++# DEP17: move to /usr in trixie and noble ++ifneq (,$(filter $(distrelease),jessie stretch buster bullseye bookworm precise trusty xenial bionic focal groovy hirsute impish jammy kinetic lunar mantic)) ++ RPF = ++else ++ RPF = $(PF) ++endif ++ ++ifeq ($(DEB_CROSS),yes) ++ifneq ($(DEB_STAGE),rtlibs) ++ PFL = $(PF)/$(DEB_TARGET_GNU_TYPE) ++ RPF = $(PF)/$(DEB_TARGET_GNU_TYPE) ++endif ++endif ++ ++ifeq ($(with_multiarch_lib),yes) ++ ifeq ($(DEB_CROSS),yes) ++ libdir = lib ++ else ++ libdir = lib/$(DEB_TARGET_MULTIARCH) ++ endif ++else ++ libdir = lib ++endif ++configured_libdir = lib ++ ++hppa64libexecdir= $(PF)/libexec ++ ++# /usr/libexec doesn't follow the FHS ++ifeq ($(single_package),yes) ++ libdir = lib ++ libexecdir = $(PF)/libexec ++ versiondir = $(BASE_VERSION) ++else ++ libexecdir = $(PF)/$(configured_libdir) ++ libexecdir = $(PF)/libexec ++ versiondir = $(BASE_VERSION) ++endif ++buildlibdir = $(builddir)/$(TARGET_ALIAS) ++ ++# install cross compilers in /usr/lib/gcc-cross, native ones in /usr/lib/gcc ++gcc_subdir_name = gcc ++ifneq ($(single_package),yes) ++ ifeq ($(DEB_CROSS),yes) ++ gcc_subdir_name = gcc-cross ++ endif ++endif ++ ++gcc_lib_dir = $(PF)/$(configured_libdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) ++gcc_lexec_dir = $(libexecdir)/$(gcc_subdir_name)/$(TARGET_ALIAS)/$(versiondir) ++ ++lib32loc = lib32 ++ifneq (,$(findstring mips,$(DEB_TARGET_GNU_TYPE))) ++lib32loc = libo32 ++endif ++lib32 = $(PF)/$(lib32loc) ++lib64 = lib64 ++libn32 = lib32 ++libx32 = libx32 ++ ++p_l= $(1)$(cross_lib_arch) ++p_d= $(1)-dbg$(cross_lib_arch) ++d_l= debian/$(p_l) ++d_d= debian/$(p_d) ++ ++ifeq ($(DEB_CROSS),yes) ++ usr_lib = $(PFL)/lib ++else ++ usr_lib = $(PFL)/$(libdir) ++endif ++usr_lib32 = $(PFL)/$(lib32loc) ++usr_libn32 = $(PFL)/lib32 ++usr_libx32 = $(PFL)/libx32 ++usr_lib64 = $(PFL)/lib64 ++ ++ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) ++ libdir = lib/$(DEB_TARGET_MULTIARCH) ++ usr_lib = $(PF)/lib/$(DEB_TARGET_MULTIARCH) ++endif ++ ++gcc_lib_dir32 = $(gcc_lib_dir)/$(biarch32subdir) ++gcc_lib_dirn32 = $(gcc_lib_dir)/$(biarchn32subdir) ++gcc_lib_dirx32 = $(gcc_lib_dir)/$(biarchx32subdir) ++gcc_lib_dir64 = $(gcc_lib_dir)/$(biarch64subdir) ++ ++libgcc_dir = $(RPF)/$(libdir) ++# yes, really; lib32gcc_s ends up in usr ++libgcc_dir32 = $(PFL)/$(lib32loc) ++libgcc_dirn32 = $(RPF)/lib32 ++# libx32gcc_s also ends up in usr ++libgcc_dirx32 = $(PFL)/libx32 ++libgcc_dir64 = $(RPF)/lib64 ++ ++# install_gcc_lib(lib,soname,flavour,package) ++define install_gcc_lib ++ mv $(d)/$(usr_lib$(3))/$(1)*.a debian/$(4)/$(gcc_lib_dir$(3))/ ++ rm -f $(d)/$(usr_lib$(3))/$(1)*.{la,so} ++ dh_link -p$(4) \ ++ /$(usr_lib$(3))/$(1).so.$(2) /$(gcc_lib_dir$(3))/$(1).so ++endef ++ ++# do_strip_lib_dbg(pkg,pkg_dbg,version,excludes) ++define do_strip_lib_dbg ++ dh_strip -p$(strip $(1)) $(4) \ ++ $(if $(with_dbg),--dbg-package=$(strip $(2)),--dbgsym-migration='$(strip $(2)) (<< $(strip $(3)))') ++endef ++ ++checkdirs = $(builddir) ++ ++# FIXME: MULTIARCH_DIRNAME needed for g++-multiarch-incdir.diff ++MULTIARCH_DIRNAME := $(DEB_TARGET_MULTIARCH) ++export MULTIARCH_DIRNAME ++ ++default: build ++ ++configure: $(configure_dependencies) ++ ++$(configure_dummy_stamp): ++ touch $(configure_dummy_stamp) ++ ++$(configure_stamp): ++ dh_testdir ++ : # give information about the build process ++ @echo "------------------------ Build process variables ------------------------" ++ @echo "Disk space on this machine:" ++ @-df -h . /tmp/. ++ @echo "Memory on this machine:" ++ @egrep '^(Mem|Swap)' /proc/meminfo || true ++ @echo "Number of parallel processes used for the build: $(USE_CPUS)" ++ @echo "DEB_BUILD_OPTIONS: $$DEB_BUILD_OPTIONS" ++ @echo "Package source: $(PKGSOURCE)" ++ @echo "GCC version: $(GCC_VERSION)" ++ @echo "Base Debian version: $(BASE_VERSION)" ++ @echo 'Package Metadata: $(ELF_PACKAGE_METADATA)' ++ @echo -e "Configured with: $(subst ___, ,$(foreach i,$(CONFARGS),$(i)\n\t))" ++ifeq ($(DEB_CROSS),yes) ++ @echo "Building cross compiler for $(DEB_TARGET_ARCH)" ++endif ++ @echo "Using shell $(SHELL)" ++ @echo "Architecture: $(DEB_TARGET_ARCH) (GNU: $(TARGET_ALIAS))" ++ @echo "Compilers: $(CC) / $(CXX) / $(GDC) / $(GNAT)" ++ @echo "CPPFLAGS: $(CPPFLAGS)" ++ @echo "CFLAGS: $(CFLAGS)" ++ @echo "LDFLAGS: $(LDFLAGS)" ++ @echo "FCFLAGS: $(FCFLAGS)" ++ @echo "STAGE1_CFLAGS: $(STAGE1_CFLAGS)" ++ @echo "BOOT_CFLAGS: $(BOOT_CFLAGS)" ++ @echo "BOOT_LDFLAGS: $(BOOT_LDFLAGS)" ++ @echo "DEBIAN_BUILDARCH: $(DEBIAN_BUILDARCH)" ++ @echo "Install prefix: /$(PF)" ++ifeq ($(biarchn32)-$(biarch64),yes-yes) ++ @echo "Will build the triarch compilers (o32/n32/64, defaulting to o32)" ++else ifeq ($(biarchn32)-$(biarch32),yes-yes) ++ @echo "Will build the triarch compilers (o32/n32/64, defaulting to 64)" ++else ifeq ($(biarch64)-$(biarch32),yes-yes) ++ @echo "Will build the triarch compilers (x32/64/32, defaulting to x32)" ++else ifeq ($(biarch64)-$(biarchx32),yes-yes) ++ @echo "Will build the triarch compilers (32/64/x32, defaulting to 32bit)" ++else ifeq ($(biarch32)-$(biarchx32),yes-yes) ++ @echo "Will build the triarch compilers (64/32/x32, defaulting to 64bit)" ++else ++ ifeq ($(biarch64),yes) ++ @echo "Will build the biarch compilers (32/64, defaulting to 32bit)" ++ else ++ ifeq ($(biarch32),yes) ++ @echo "Will build the biarch compilers (64/32, defaulting to 64bit)" ++ else ++ @echo "Will not build the biarch compilers" ++ endif ++ endif ++endif ++ ++ifeq ($(with_cxx),yes) ++ @echo "Will build the C++ compiler" ++else ++ @echo "Will not build the C++ compiler: $(with_cxx)" ++endif ++ifeq ($(with_objc),yes) ++ @echo "Will build the ObjC compiler." ++ ifeq ($(with_objc_gc),yes) ++ @echo "Will build the extra ObjC runtime for garbage collection." ++ else ++ @echo "Will not build the extra ObjC runtime for garbage collection." ++ endif ++else ++ @echo "Will not build the ObjC compiler: $(with_objc)" ++endif ++ifeq ($(with_objcxx),yes) ++ @echo "Will build the Obj-C++ compiler" ++else ++ @echo "Will not build the Obj-C++ compiler: $(with_objcxx)" ++endif ++ifeq ($(with_fortran),yes) ++ @echo "Will build the Fortran 95 compiler." ++else ++ @echo "Will not build the Fortran 95 compiler: $(with_fortran)" ++endif ++ifeq ($(with_ada),yes) ++ @echo "Will build the Ada compiler." ++ ifeq ($(with_libgnat),yes) ++ @echo "Will build the shared Ada libraries." ++ else ++ @echo "Will not build the shared Ada libraries." ++ endif ++else ++ @echo "Will not build the Ada compiler: $(with_ada)" ++endif ++ifeq ($(with_go),yes) ++ @echo "Will build the Go compiler." ++else ++ @echo "Will not build the Go compiler: $(with_go)" ++endif ++ifeq ($(with_d),yes) ++ @echo "Will build the D compiler" ++ ifeq ($(with_phobos),yes) ++ @echo "Will build the phobos D runtime library." ++ else ++ @echo "Will not build the phobos D runtime library: $(with_phobos)" ++ endif ++else ++ @echo "Will not build the D compiler: $(with_d)" ++endif ++ifeq ($(with_m2),yes) ++ @echo "Will build the Modula-2 compiler." ++else ++ @echo "Will not build the Modula-2 compiler: $(with_m2)" ++endif ++ifeq ($(with_rs),yes) ++ @echo "Will build the Rust compiler." ++else ++ @echo "Will not build the Rust compiler: $(with_rs)" ++endif ++ifeq ($(with_cobol),yes) ++ @echo "Will build the COBOL compiler." ++else ++ @echo "Will not build the COBOL compiler: $(with_cobol)" ++endif ++ifeq ($(with_algol),yes) ++ @echo "Will build the Algol 68 compiler." ++else ++ @echo "Will not build the Algol 68 compiler: $(with_algol)" ++endif ++ifneq (,$(offload_targets)) ++ @echo "Will build with offload compilers: $(offload_targets)." ++else ++ @echo "Will build without offload compilers: $(with_offload_nvptx) / $(with_offload_gcn)" ++endif ++ifeq ($(with_ssp),yes) ++ @echo "Will build with SSP support." ++else ++ @echo "Will build without SSP support: $(with_ssp)" ++endif ++ifeq ($(with_check),yes) ++ @echo "Will run the testsuite." ++else ++ @echo "Will not run the testsuite: $(with_check)" ++endif ++ifeq ($(with_nls),yes) ++ @echo "Will enable national language support." ++else ++ @echo "Will disable national language support: $(with_nls)" ++endif ++ @echo "-----------------------------------------------------------------------------" ++ @echo "" ++ifeq ($(with_check),yes) ++ @if echo "spawn true" | /usr/bin/expect -f - >/dev/null; then \ ++ : ; \ ++ else \ ++ echo "expect is failing on your system with the above error, which means the GCC"; \ ++ echo "testsuite will fail. Please resolve the above issues and retry the build."; \ ++ echo "-----------------------------------------------------------------------------"; \ ++ exit 1; \ ++ fi ++endif ++ rm -f $(configure_stamp) $(build_stamp) ++ cat debian/README.Debian $(patch_stamp) > debian/README.Debian.$(DEB_TARGET_ARCH) ++ ++ rm -rf $(builddir) ++ mkdir $(builddir) ++ ++ifneq (,$(filter musl-%,$(DEB_TARGET_ARCH))) ++ # We have to unconditionally link -lssp_nonshared on musl (see ++ # musl-ssp.diff). While gcc provides it, it comes a little late in the ++ # build for bootstrapping so we provide an empty one. ++ mkdir $(builddir)/gcc ++ ar rcs $(builddir)/gcc/libssp_nonshared.a ++endif ++ ++ : # some tools like gettext are built with a newer libstdc++ ++ mkdir -p bin ++ for i in msgfmt; do \ ++ install -m755 debian/bin-wrapper.in bin/$$i; \ ++ done ++ ++ : # configure ++ if cd $(builddir) \ ++ && $(SET_PATH) \ ++ $(call pass_vars, CC CXX GDC GNATBIND GNATMAKE $(flags_to_pass) \ ++ CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ ++ CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ ++ $(SET_SHELL) $(SET_TARGET_TOOLS) \ ++ $(BINUTILS_GCCENV) \ ++ ../src/configure $(subst ___, ,$(CONFARGS)); \ ++ then \ ++ : ; \ ++ else \ ++ s=$$?; \ ++ cat $(builddir)/config.log; \ ++ exit $$s; \ ++ fi ++ ++ : # multilib builds without b-d on gcc-multilib (used in FLAGS_FOR_TARGET) ++ if [ -d /usr/include/$(DEB_TARGET_MULTIARCH)/asm ]; then \ ++ mkdir -p $(builddir)/sys-include; \ ++ ln -sf /usr/include/$(DEB_TARGET_MULTIARCH)/asm $(builddir)/sys-include/asm; \ ++ fi ++ : # Fall back to the host crypt.h when target is unavailable as the ++ : #sizeof(struct crypt_data) is unlikely to change, needed by libsanitizer. ++ if [ ! -f /usr/include/crypt.h ] && \ ++ [ ! -f /usr/include/$(DEB_TARGET_MULTIARCH)/crypt.h ] && \ ++ [ -f /usr/include/$(DEB_HOST_MULTIARCH)/crypt.h ]; then \ ++ mkdir -p $(builddir)/sys-include; \ ++ ln -sf /usr/include/$(DEB_HOST_MULTIARCH)/crypt.h \ ++ $(builddir)/sys-include/crypt.h; \ ++ fi ++ ++ touch $(configure_stamp) ++ ++build: $(sort $(build_arch_dependencies) $(build_indep_dependencies)) ++build-arch: $(build_arch_dependencies) ++build-indep: $(build_indep_dependencies) ++ ++$(build_dummy_stamp): ++ touch $(build_dummy_stamp) ++ ++$(build_locale_stamp): ++ifeq ($(locale_data)-$(with_cxx),generate-yes) ++ : # build locales needed by libstdc++ testsuite ++ rm -rf locales ++ mkdir locales ++ -USE_CPUS=$(USE_CPUS) sh debian/locale-gen ++endif ++ touch $(build_locale_stamp) ++ ++MAX_BUILD_TRIES = 1 ++ifeq ($(distribution)-$(DEB_HOST_ARCH),Ubuntu-armhf) ++ MAX_BUILD_TRIES = 3 ++endif ++ ++$(build_stamp): $(configure_stamp) $(build_locale_stamp) ++ @echo === START $@ === ++ dh_testdir ++ rm -f bootstrap-protocol* ++ @echo TTTTT $$(date -R) ++ifeq ($(build_type),build-native) ++ : # build native compiler ++ set +e; \ ++ set -o pipefail; \ ++ try=0; \ ++ while [ $$try -lt $(MAX_BUILD_TRIES) ]; do \ ++ try=$$(expr $$try + 1); \ ++ echo "=========== BUILD ($$try) =========="; \ ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ $(SET_LOCPATH) \ ++ $(BINUTILS_GCCENV) \ ++ $(time_command) $(MAKE) $(NJOBS) -C $(builddir) $(bootstrap_target) \ ++ $(call pass_vars, CC $(flags_to_pass) \ ++ STAGE1_CFLAGS STAGE1_LDFLAGS \ ++ BOOT_CFLAGS BOOT_LDFLAGS \ ++ CFLAGS_FOR_BUILD CXXFLAGS_FOR_BUILD LDFLAGS_FOR_BUILD \ ++ CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ ++ 2>&1 | tee bootstrap-protocol$$try \ ++ ; \ ++ status=$$?; \ ++ echo $$status > status; \ ++ echo === TIME $@ ===; \ ++ [ $$status -eq 0 ] && exit $$status; \ ++ done; \ ++ exit 0 ++else ifneq (,$(filter $(build_type),build-cross cross-build-native cross-build-cross)) ++ : # build cross compiler for $(TARGET_ALIAS) ++ ( \ ++ set +e; \ ++ $(SET_PATH) \ ++ $(SET_LOCPATH) \ ++ $(time_command) $(MAKE) $(NJOBS) -C $(builddir) \ ++ $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ ++ CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET FCFLAGS) \ ++ ; \ ++ echo $$? > status; \ ++ echo === TIME $@ ===; \ ++ ) 2>&1 | tee bootstrap-protocol ++endif ++ @echo TTTTT $$(date -R) ++ s=`cat status`; rm -f status; \ ++ if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ ++ for log in $$(find $(builddir) -name config.log); do \ ++ case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ ++ echo LOGFILE START $$log; \ ++ cat $$log; \ ++ echo LOGFILE END $$log; \ ++ done; \ ++ fi; \ ++ test $$s -eq 0 ++ ++ for h in $$(find $(builddir) -name omp.h); do \ ++ echo "=================== OMP_H HEADER $$h ====================== "; \ ++ cat $$h; \ ++ done ++ ++ if [ -f $(srcdir)/contrib/warn_summary ]; then \ ++ rm -f bootstrap-summary; \ ++ /bin/sh $(srcdir)/contrib/warn_summary $$(ls bootstrap-protocol* | head -1) \ ++ > bootstrap-summary; \ ++ fi ++ ++ touch $(build_stamp) ++ @echo === END $@ === ++ ++ifneq ($(build_type),build-native) ++ BUILT_CC = $(CC) ++ BUILT_CXX = $(CXX) ++else ++ BUILT_CC = $(builddir)/gcc/xgcc -B$(builddir)/gcc/ ++ BUILT_CXX = $(builddir)/gcc/xg++ -B$(builddir)/gcc/ \ ++ -B$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ ++ -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ ++ -B$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs \ ++ -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include \ ++ -I$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/include/$(TARGET_ALIAS) \ ++ -I$(srcdir)/libstdc++-v3/libsupc++ \ ++ -L$(builddir)/$(TARGET_ALIAS)/libatomic/.libs \ ++ -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/src/.libs \ ++ -L$(builddir)/$(TARGET_ALIAS)/libstdc++-v3/libsupc++/.libs ++endif ++ ++CONFARGS_JIT := \ ++ $(filter-out --enable-languages=% \ ++ --enable-libstdcxx-debug %bootstrap,\ ++ $(CONFARGS)) \ ++ --enable-languages=c++,jit \ ++ $(if $(filter yes, $(with_versioned_libgccjit)),--enable-versioned-jit) \ ++ --enable-host-shared \ ++ --disable-bootstrap ++ ++# this needs --enable-host-shared, build it in the jit compiler ++CONFARGS_JIT += --enable-libgdiagnostics ++ ++# are other libs also safe to disable? ++CONFARGS_JIT += \ ++ --disable-libada \ ++ --disable-libga68 \ ++ --disable-libgcobol \ ++ --disable-libgfortran \ ++ --disable-libgm2 \ ++ --disable-libgo \ ++ --disable-libphobos \ ++ --disable-libquadmath \ ++ ++$(configure_jit_stamp): $(build_stamp) ++ @echo === START $@ === ++ dh_testdir ++ rm -f $(configure_jit_stamp) $(build_jit_stamp) ++ rm -rf $(builddir_jit) ++ mkdir $(builddir_jit) ++ ++ : # configure jit ++ cd $(builddir_jit) && \ ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ CC="$(BUILT_CC)" \ ++ CXX="$(BUILT_CXX)" \ ++ $(BINUTILS_GCCENV) \ ++ ../src/configure $(subst ___, ,$(CONFARGS_JIT)) ++ touch $(configure_jit_stamp) ++ ++$(build_jit_stamp): $(configure_jit_stamp) ++ @echo === START $@ === ++ dh_testdir ++ ( \ ++ set +e; \ ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ $(SET_LOCPATH) \ ++ $(BINUTILS_GCCENV) \ ++ LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ ++ biarch_multidir_names=none \ ++ $(time_command) $(MAKE) $(NJOBS) -C $(builddir_jit) \ ++ $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ ++ CFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) \ ++ ; \ ++ echo $$? > status; \ ++ echo === TIME $@ ===; \ ++ ) 2>&1 | tee jit-protocol ++ ++ s=`cat status`; rm -f status; \ ++ if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ ++ for log in $$(find $(builddir_jit) -name config.log); do \ ++ case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ ++ echo LOGFILE START $$log; \ ++ cat $$log; \ ++ echo LOGFILE END $$log; \ ++ done; \ ++ fi; \ ++ test $$s -eq 0 ++ ++ifeq ($(with_check),yes) ++ # FIXME: #782444 ++ -DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ ++ $(MAKE) -C $(builddir_jit)/gcc check-jit \ ++ RUNTESTFLAGS="-v -v" ++ mkdir -p $(builddir)/gcc/testsuite/jit ++ cp -p $(builddir_jit)/gcc/testsuite/jit/jit.{log,sum} \ ++ $(builddir)/gcc/testsuite/jit/. ++endif ++ ++ : # do the install in the build target, to save disk space ++ rm -rf $(d)-jit ++ mkdir -p $(d)-jit/$(PF) ++ ++ $(SET_PATH) \ ++ biarch_multidir_names=none \ ++ $(MAKE) -C $(builddir_jit) \ ++ CC="$(CC_FOR_TARGET)" \ ++ $(call pass_vars, $(flags_to_pass)) \ ++ DESTDIR=$(CURDIR)/$(d)-jit \ ++ install ++ ++ find $(d)-jit ! -type d ++ ++ mkdir -p $(d)-jit/$(usr_lib) ++ifneq ($(single_package),yes) ++ mkdir -p $(d)-jit/$(gcc_lib_dir)/include ++ mv $(d)-jit/$(PF)/include/libgccjit*.h \ ++ $(d)-jit/$(gcc_lib_dir)/include/. ++ mv $(d)-jit/$(PF)/include/libgdiagnostics*.h \ ++ $(d)-jit/$(gcc_lib_dir)/include/. ++endif ++ifneq ($(PF)/lib,$(usr_lib)) ++ mv $(d)-jit/$(PF)/lib/libgccjit.so* \ ++ $(d)-jit/$(usr_lib)/. ++ mv $(d)-jit/$(PF)/lib/libgdiagnostics.so* \ ++ $(d)-jit/$(usr_lib)/. ++endif ++ifeq ($(single_package),yes) ++ cd $(d)-jit && tar cvfJ ../../installed-jit.tar.xz \ ++ $(PF)/include/libgccjit*.h \ ++ $(usr_lib)/libgccjit.so* \ ++ $(PF)/share/info/libgccjit* \ ++ $(PF)/include/libgdiagnostics*.h \ ++ $(usr_lib)/libgdiagnostics.so* \ ++ $(PF)/bin/$(cmd_prefix)sarif-replay* ++else ++ cd $(d)-jit && tar cvfJ ../../installed-jit.tar.xz \ ++ $(gcc_lib_dir)/include/libgccjit*.h \ ++ $(usr_lib)/libgccjit.so* \ ++ $(PF)/share/info/libgccjit* \ ++ $(gcc_lib_dir)/include/libgdiagnostics*.h \ ++ $(usr_lib)/libgdiagnostics.so* \ ++ $(PF)/bin/$(cmd_prefix)sarif-replay* ++endif ++ if which help2man >/dev/null 2>&1; then \ ++ LD_LIBRARY_PATH=$(CURDIR)/$(d)-jit/$(usr_lib)${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH} \ ++ help2man --no-discard-stderr --help-option=--usage --no-info \ ++ $(d)-jit/$(PF)/bin/$(cmd_prefix)sarif-replay* \ ++ $(if $(cmd_prefix),| sed -e "s/$(cmd_prefix)//g" -e "s/$$(echo $(cmd_prefix) | tr 'a-z' 'A-Z')//g") \ ++ > debian/sarif-replay.1; \ ++ fi ++ rm -rf $(d)-jit ++ ++ifeq ($(save_disk_space),yes) ++ rm -rf $(builddir_jit) ++endif ++ ++ touch $(build_jit_stamp) ++ @echo === END $@ === ++ ++CONFARGS_NVPTX := \ ++ --prefix=/$(PF) \ ++ --libexecdir=/$(libexecdir) \ ++ --with-gcc-major-version-only \ ++ --disable-bootstrap \ ++ --disable-sjlj-exceptions \ ++ --enable-newlib-io-long-long \ ++ --target=nvptx-none \ ++ --enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \ ++ --enable-languages=c,c++,fortran,lto \ ++ --enable-checking=release \ ++ --with-system-zlib \ ++ --without-isl \ ++ --disable-libga68 ++ ++# --with-build-time-tools=/$(PF)/nvptx-none/bin ++ ++CONFARGS_NVPTX += --program-prefix=nvptx-none- ++ifeq ($(versioned_packages),yes) ++ CONFARGS_NVPTX += --program-suffix=-$(BASE_VERSION) ++endif ++ ++# FIXME: must not be run in parallel with jit and hppa64 builds ... ++$(configure_nvptx_stamp): $(build_stamp) \ ++ $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ ++ $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) ++ @echo === START $@ === ++ dh_testdir ++ rm -f $(configure_nvptx_stamp) $(build_nvptx_stamp) ++ rm -rf src-nvptx $(builddir_nvptx) ++ cp -al src src-nvptx ++ rm -rf src-nvptx/newlib ++ cp -a $(newlib_srcdir)/newlib src-nvptx/newlib ++ mkdir $(builddir_nvptx) ++ ++ : # configure nvptx offload ++ cd $(builddir_nvptx) && \ ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ CC="$(BUILT_CC)" \ ++ CXX="$(BUILT_CXX)" \ ++ ../src-nvptx/configure $(subst ___, ,$(CONFARGS_NVPTX)) ++ touch $(configure_nvptx_stamp) ++ ++$(build_nvptx_stamp): $(configure_nvptx_stamp) \ ++ $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ ++ $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) ++ @echo === START $@ === ++ ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib ++ ( \ ++ set +e; \ ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ $(SET_LOCPATH) \ ++ LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ ++ biarch_multidir_names=none \ ++ $(time_command) $(MAKE) $(NJOBS) -C $(builddir_nvptx) \ ++ $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ ++ CFLAGS_FOR_TARGET) \ ++ ; \ ++ echo $$? > status; \ ++ echo === TIME $@ ===; \ ++ ) 2>&1 | tee nvptx-protocol ++ ++ s=`cat status`; rm -f status; \ ++ if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ ++ for log in $$(find $(builddir_nvptx) -name config.log); do \ ++ case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ ++ echo LOGFILE START $$log; \ ++ cat $$log; \ ++ echo LOGFILE END $$log; \ ++ done; \ ++ fi; \ ++ test $$s -eq 0 ++ ++ rm -f $(srcdir)/newlib ++ touch $(build_nvptx_stamp) ++ @echo === END $@ === ++ ++CONFARGS_GCN := \ ++ --prefix=/$(PF) \ ++ --libexecdir=/$(libexecdir) \ ++ --with-gcc-major-version-only \ ++ --disable-bootstrap \ ++ --disable-sjlj-exceptions \ ++ --enable-newlib-io-long-long \ ++ --target=$(gcn_target_name) \ ++ --enable-as-accelerator-for=$(DEB_TARGET_GNU_TYPE) \ ++ --enable-languages=c,c++,fortran,lto \ ++ --enable-checking=release \ ++ --disable-libstdcxx-pch \ ++ --disable-libquadmath-support \ ++ --disable-libga68 \ ++ --with-system-zlib \ ++ --without-isl \ ++ --without-gnu-as \ ++ --without-gnu-ld \ ++ --with-build-time-tools=$(CURDIR)/bin-gcn ++ ++# --without-headers \ ++ ++CONFARGS_GCN += --program-prefix=$(gcn_target_name)- ++ifeq ($(versioned_packages),yes) ++ CONFARGS_GCN += --program-suffix=-$(BASE_VERSION) ++endif ++ ++# FIXME: must not be run in parallel with jit and hppa64 builds ... ++$(configure_gcn_stamp): $(build_stamp) \ ++ $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ ++ $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) \ ++ $(if $(filter yes, $(with_offload_nvptx)), $(build_nvptx_stamp)) ++ @echo === START $@ === ++ dh_testdir ++ ++ rm -rf bin-gcn ++ifeq ($(gcn_tools_llvm_version),tools) ++ ln -s /usr/$(gcn_target_name)/bin bin-gcn ++else ++ mkdir bin-gcn ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar bin-gcn/ar ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc bin-gcn/as ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld bin-gcn/ld ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm bin-gcn/nm ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib bin-gcn/ranlib ++endif ++ ls -l / ++ ls -l /usr ++ -ls -l usr/$(gcn_target_name) ++ -ls -l usr/$(gcn_target_name)/bin ++ ls -l bin-gcn ++ ls -lL bin-gcn ++ bin-gcn/as --version ++ bin-gcn/ld --version ++ ++ rm -f $(configure_gcn_stamp) $(build_gcn_stamp) ++ rm -rf src-gcn $(builddir_gcn) ++ cp -al src src-gcn ++ rm -rf src-gcn/newlib ++ cp -a $(newlib_srcdir)/newlib src-gcn/newlib ++ mkdir $(builddir_gcn) ++ ++ : # configure gcn offload ++ cd $(builddir_gcn) && \ ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ CC="$(BUILT_CC)" \ ++ CXX="$(BUILT_CXX)" \ ++ ../src-gcn/configure $(subst ___, ,$(CONFARGS_GCN)) ++ touch $(configure_gcn_stamp) ++ ++$(build_gcn_stamp): $(configure_gcn_stamp) \ ++ $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) \ ++ $(if $(filter yes, $(with_hppa64)), $(build_hppa64_stamp)) \ ++ $(if $(filter yes, $(with_offload_nvptx)), $(build_nvptx_stamp)) ++ @echo === START $@ === ++ ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib ++ ( \ ++ set +e; \ ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ $(SET_LOCPATH) \ ++ LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ ++ biarch_multidir_names=none \ ++ $(time_command) $(MAKE) $(NJOBS) -C $(builddir_gcn) \ ++ $(call pass_vars, BOOT_CFLAGS BOOT_LDFLAGS \ ++ CFLAGS_FOR_TARGET) \ ++ ; \ ++ echo $$? > status; \ ++ echo === TIME $@ ===; \ ++ ) 2>&1 | tee amdgcn-protocol ++ ++ s=`cat status`; rm -f status; \ ++ if [ $$s -ne 0 ] && [ -z "$$NO_CONFIG_LOG_DUMP$$NO_CONFIG_LOG_DUMPS" ]; then \ ++ for log in $$(find $(builddir_gcn) -name config.log); do \ ++ case "$$log" in */build/build-*|*/stage1-*|*/prev-*) continue; esac; \ ++ echo LOGFILE START $$log; \ ++ cat $$log; \ ++ echo LOGFILE END $$log; \ ++ done; \ ++ fi; \ ++ test $$s -eq 0 ++ ++ rm -f $(srcdir)/newlib ++ touch $(build_gcn_stamp) ++ @echo === END $@ === ++ ++ifeq ($(versioned_packages),yes) ++ hppa64_configure_flags += --program-suffix=-$(BASE_VERSION) ++endif ++ ++$(configure_hppa64_stamp): $(build_stamp) \ ++ $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) ++ @echo === START $@ === ++ dh_testdir ++ rm -f $(configure_hppa64_stamp) $(build_hppa64_stamp) ++ rm -rf $(builddir_hppa64) ++ mkdir $(builddir_hppa64) ++ : # configure hppa64 ++ cd $(builddir_hppa64) && \ ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ CC="$(BUILT_CC)" \ ++ CXX="$(BUILT_CXX)" \ ++ $(call pass_vars, $(flags_to_pass)) \ ++ ../src/configure \ ++ --enable-languages=c \ ++ --prefix=/$(PF) \ ++ --libexecdir=/$(hppa64libexecdir) \ ++ --with-gcc-major-version-only \ ++ --disable-shared \ ++ --disable-nls \ ++ --disable-threads \ ++ --disable-libatomic \ ++ --disable-libgomp \ ++ --disable-libitm \ ++ --disable-libssp \ ++ --disable-libquadmath \ ++ --disable-libga68 \ ++ --enable-plugin \ ++ --with-system-zlib \ ++ --with-as=/usr/bin/hppa64-linux-gnu-as \ ++ --with-ld=/usr/bin/hppa64-linux-gnu-ld \ ++ --includedir=/usr/hppa64-linux-gnu/include \ ++ --build=$(DEB_BUILD_GNU_TYPE) \ ++ --host=$(DEB_HOST_GNU_TYPE) \ ++ --target=hppa64-linux-gnu ++ touch $(configure_hppa64_stamp) ++ ++$(build_hppa64_stamp): $(configure_hppa64_stamp) \ ++ $(if $(filter yes, $(with_jit)), $(build_jit_stamp)) ++ @echo === START $@ === ++ if [ -f $(srcdir)/gcc/distro-defaults.h ]; then \ ++ if [ ! -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \ ++ mv $(srcdir)/gcc/distro-defaults.h $(srcdir)/gcc/distro-defaults.h.saved; \ ++ fi; \ ++ echo '/* Empty distro-defaults for hppa64 cross build */' \ ++ > $(srcdir)/gcc/distro-defaults.h; \ ++ fi ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ $(SET_LOCPATH) \ ++ LD_LIBRARY_PATH=$${LD_LIBRARY_PATH:+$$LD_LIBRARY_PATH:}$(builddir)/gcc \ ++ $(time_command) $(MAKE) $(NJOBS) -C $(builddir_hppa64) \ ++ $(call pass_vars, \ ++ CFLAGS_FOR_TARGET CXXFLAGS_FOR_TARGET LDFLAGS_FOR_TARGET) ++ if [ -f $(srcdir)/gcc/distro-defaults.h.saved ]; then \ ++ mv -f $(srcdir)/gcc/distro-defaults.h.saved $(srcdir)/gcc/distro-defaults.h; \ ++ fi ++ ++ : # do the install in the build target, to save disk space ++ rm -rf $(d_hppa64) ++ mkdir -p $(d_hppa64)/$(PF) ++ ++ $(SET_PATH) \ ++ $(MAKE) -C $(builddir_hppa64) \ ++ $(call pass_vars, CC $(flags_to_pass)) \ ++ DESTDIR=$(CURDIR)/$(d_hppa64) \ ++ install ++ ++ : # remove files not needed ++ rm -rf $(d_hppa64)/$(PF)/info $(d_hppa64)/$(PF)/share/info ++ rm -rf $(d_hppa64)/$(PF)/man $(d_hppa64)/$(PF)/share/man ++ rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/plugin ++ rm -f $(d_hppa64)/$(PF)/lib/libiberty.a ++ rm -f $(d_hppa64)/$(PF)/lib/libcc1.* ++ rm -f $(d_hppa64)/$(PF)/bin/*{gcov,gcov-dump,gcov-tool,gccbug,gcc,lto-dump} ++ ++ rm -rf $(d_hppa64)/$(PF)/hppa64-linux-gnu ++ rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/install-tools ++ rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/g++-mapper-server ++ rm -rf $(d_hppa64)/$(PF)/lib/gcc/hppa64-linux-gnu/$(BASE_VERSION)/include-fixed ++ ++ifeq ($(versioned_packages),yes) ++ for i in cpp gcc-ar gcc-nm gcc-ranlib; do \ ++ mv -f $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i \ ++ $(d_hppa64)/$(PF)/bin/hppa64-linux-gnu-$$i$(pkg_ver); \ ++ done ++endif ++ mkdir -p $(d_hppa64)/$(PF)/share/man/man1 ++ for i in gcc-ar gcc-nm gcc-ranlib; do \ ++ ln -sf $$i$(pkg_ver).1.gz \ ++ $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ ++ done ++ifneq ($(GFDL_INVARIANT_FREE),yes) ++ for i in cpp gcc; do \ ++ ln -sf $$i$(pkg_ver).1.gz \ ++ $(d_hppa64)/$(PF)/share/man/man1/hppa64-linux-gnu-$$i$(pkg_ver).1.gz; \ ++ done ++endif ++ ++ : # remove '*.la' and '*.lai' files, not shipped in any package. ++ find $(d_hppa64) -name '*.la' -o -name '*.lai' | xargs -r rm -f ++ ++ : # remove rpath settings from binaries and shared libs ++ for i in $$(chrpath -k $(d_hppa64)/$(PF)/bin/* $(d_hppa64)/$(PFL)/lib*/lib*.so.* \ ++ $(d_hppa64)/$(gcc_lib_dir)/plugin/* \ ++ $(if $(filter $(with_multiarch_lib),yes), \ ++ $(d_hppa64)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ ++ 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ ++ do \ ++ [ -h $$i ] && continue; \ ++ chrpath --delete $$i; \ ++ echo "removed RPATH/RUNPATH: $$i"; \ ++ done ++ ++ : # fix permissions of liblto_plugin.so ++ chmod 644 $(d_hppa64)/$(PF)/libexec/gcc/hppa64-linux-gnu/$(BASE_VERSION)/liblto_plugin.so ++ ++ cd $(d_hppa64) && tar cvfJ ../../installed-hppa64.tar.xz usr ++ rm -rf $(d_hppa64) ++ ++ifeq ($(save_disk_space),yes) ++ rm -rf $(builddir_hppa64) ++endif ++ touch $(build_hppa64_stamp) ++ @echo === END $@ === ++ ++ifeq ($(with_ada),yes) ++ MANUALS = \ ++ $(srcdir)/gcc/ada/gnat_ugn.texi \ ++ $(srcdir)/gcc/ada/gnat_rm.texi ++endif ++MANUALS += \ ++ $(srcdir)/gcc/doc/gccint.texi \ ++ $(srcdir)/gcc/doc/gcc.texi \ ++ $(srcdir)/gcc/doc/cpp.texi \ ++ $(srcdir)/gcc/doc/cppinternals.texi ++ifeq ($(with_fortran),yes) ++ MANUALS += $(srcdir)/gcc/fortran/gfortran.texi ++endif ++ifeq ($(with_ada),yes) ++ MANUALS += $(srcdir)/gcc/ada/gnat-style.texi ++endif ++ifeq ($(with_gomp),yes) ++ MANUALS += $(srcdir)/libgomp/libgomp.texi ++endif ++ifeq ($(with_itm),yes) ++ MANUALS += $(srcdir)/libitm/libitm.texi ++endif ++ifeq ($(with_qmath),yes) ++ MANUALS += $(srcdir)/libquadmath/libquadmath.texi ++endif ++ifeq ($(with_go),yes) ++ MANUALS += $(srcdir)/gcc/go/gccgo.texi ++endif ++ifeq ($(with_d),yes) ++ MANUALS += $(srcdir)/gcc/d/gdc.texi ++endif ++ifeq ($(with_m2),yes) ++ MANUALS += $(srcdir)/gcc/doc/gm2.texi ++endif ++ifeq ($(with_algol),yes) ++ MANUALS += $(srcdir)/gcc/algol68/ga68.texi ++endif ++ ++html-docs: $(build_html_stamp) ++#$(build_html_stamp): $(stampdir)/05-build-html-split ++$(build_html_stamp): $(stampdir)/05-build-html-nosplit ++ ++html-makeinfo-split: $(stampdir)/05-build-html-split ++$(stampdir)/05-build-html-split: $(build_stamp) ++ mkdir -p html ++ rm -f html/*.html ++ cd $(builddir)/gcc; \ ++ echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ ++ sh -c 'outname=`basename {} .texi`.html; \ ++ outname=`basename {} .texi`; \ ++ echo "generating $$outname ..."; \ ++ makeinfo --html --number-sections \ ++ -I $(srcdir)/gcc/doc/include -I `dirname {}` \ ++ -I $(srcdir)/gcc/p/doc \ ++ -I $(srcdir)/gcc/p/doc/generated \ ++ -I $(builddir)/gcc \ ++ -I $(builddir)/gcc/m2 \ ++ -I $(buildlibdir)/libquadmath \ ++ -o $${outname} \ ++ {}' ++ touch $@ ++ ++html-makeinfo-nosplit: $(stampdir)/05-build-html-nosplit ++$(stampdir)/05-build-html-nosplit: $(build_stamp) ++ mkdir -p html ++ rm -f html/*.html ++ cd $(builddir)/gcc; \ ++ echo -n $(MANUALS) | xargs -d ' ' -L 1 -P $(USE_CPUS) -I{} \ ++ sh -c 'outname=`basename {} .texi`.html; \ ++ echo "generating $$outname ..."; \ ++ makeinfo --html --number-sections --no-split \ ++ -I $(srcdir)/gcc/doc/include -I `dirname {}` \ ++ -I $(srcdir)/gcc/p/doc \ ++ -I $(srcdir)/gcc/p/doc/generated \ ++ -I $(builddir)/gcc \ ++ -I $(builddir)/gcc/m2 \ ++ -I $(buildlibdir)/libquadmath \ ++ -o $(CURDIR)/html/$${outname} \ ++ {}' ++ touch $@ ++ ++# start the script only on architectures known to have slow autobuilders ... ++logwatch_archs := amd64 i386 alpha armel armhf arm64 loong64 m68k \ ++ mips mipsel mips64el riscv64 s390x sparc x32 hurd-amd64 hurd-i386 ++ifneq (,$(filter $(DEB_HOST_ARCH),$(logwatch_archs))) ++ start_logwatch = yes ++endif ++ ++check: $(check_stamp) ++$(check_stamp): $(filter $(build_stamp) $(build_jit_stamp) $(build_hppa64_stamp) $(build_nvptx_stamp) $(build_gcn_stamp), $(build_dependencies)) \ ++ $(if $(filter nvptx-none, $(offload_targets)), $(install_nvptx_stamp)) \ ++ $(if $(filter $(gcn_target_name), $(offload_targets)), $(install_gcn_stamp)) ++ @echo === START $@ === ++ rm -f test-protocol ++ rm -f $(builddir)/runcheck* ++ ++ -chmod 755 $(srcdir)/contrib/test_summary ++ ++ : # needed for the plugin tests to succeed ++ ln -sf gcc $(builddir)/prev-gcc ++ ln -sf $(DEB_TARGET_GNU_TYPE) $(builddir)/prev-$(DEB_TARGET_GNU_TYPE) ++ ++ifneq ($(with_common_libs),yes) ++ ifeq ($(with_cxx),yes) ++ ifeq (,$(filter $(DEB_TARGET_ARCH), armel armhf mipsel mips64el)) ++ : # libstdc++6 built from newer gcc-X source, run testsuite against the installed lib ++ ++ : # jit test results should not end up in the libstdc++-test-summary report ++ if [ -f $(builddir)/gcc/testsuite/jit/jit.sum ]; then \ ++ mv $(builddir)/gcc/testsuite/jit/jit.log $(builddir)/gcc/testsuite/jit/jit.LOG; \ ++ mv $(builddir)/gcc/testsuite/jit/jit.sum $(builddir)/gcc/testsuite/jit/jit.SUM; \ ++ fi ++ ++ sed 's/-L[^ "]*//g' $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags \ ++ > $(buildlibdir)/libstdc++-v3/scripts/testsuite_flags.installed ++ -$(ULIMIT_M); \ ++ set +e; \ ++ for d in $(buildlibdir)/libstdc++-v3/testsuite; do \ ++ echo "Running testsuite in $$d ..."; \ ++ TEST_INSTALLED=1 \ ++ $(SET_SHELL) \ ++ $(SET_LOCPATH) \ ++ $(SET_PATH) \ ++ DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ ++ DEB_GCC_NO_O3=1 \ ++ $(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \ ++ done 2>&1 | tee test-protocol2 ++ ++ cd $(builddir); \ ++ BOOT_CFLAGS="$(BOOT_CFLAGS)" \ ++ $(srcdir)/contrib/test_summary -m "$(S_EMAIL)" > ../raw-test-summary ++ -( \ ++ sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary; \ ++ awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF; \ ++ ) > libstdc++-test-summary ++ echo 'BEGIN installed libstdc++-v3 test-summary' ++ cat libstdc++-test-summary ++ echo 'END installed libstdc++-v3 test-summary' ++ find $(buildlibdir)/libstdc++-v3/testsuite -name '*.log' -o -name '*.sum' \ ++ | xargs -r rm -f ++ ++ if [ -f $(builddir)/gcc/testsuite/jit/jit.SUM ]; then \ ++ mv $(builddir)/gcc/testsuite/jit/jit.LOG $(builddir)/gcc/testsuite/jit/jit.log; \ ++ mv $(builddir)/gcc/testsuite/jit/jit.SUM $(builddir)/gcc/testsuite/jit/jit.sum; \ ++ fi ++ endif ++ endif ++endif ++ ++ifeq ($(start_logwatch),yes) ++ : # start logwatch script for regular output during test runs ++ chmod +x debian/logwatch.sh ++ -debian/logwatch.sh -t 900 -p $(builddir)/logwatch.pid \ ++ -m 'testsuite still running ...' \ ++ test-protocol \ ++ $(builddir) \ ++ & ++endif ++ ++ : # FIXME: https://gcc.gnu.org/PR103944 ++ rm -f $(srcdir)/libphobos/testsuite/libphobos.gc/forkgc2.d ++ ++ -$(ULIMIT_M); \ ++ set +e; \ ++ for d in $(checkdirs); do \ ++ echo "Running testsuite in $$d ..."; \ ++ $(SET_SHELL) \ ++ $(SET_LOCPATH) \ ++ $(SET_PATH) \ ++ EXTRA_TEST_PFLAGS=-g0 \ ++ DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ ++ DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ ++ DEB_GCC_NO_O3=1 \ ++ $(time_command) $(MAKE) -k -C $$d $(NJOBS_TESTS) check $(RUNTESTFLAGS); \ ++ done 2>&1 | tee test-protocol ++ ++ -ps aux | fgrep logwatch | fgrep -v fgrep ++ -if [ -f $(builddir)/logwatch.pid ]; then \ ++ kill -1 `cat $(builddir)/logwatch.pid`; \ ++ sleep 1; \ ++ kill -9 `cat $(builddir)/logwatch.pid`; \ ++ rm -f $(builddir)/logwatch.pid; \ ++ fi ++ -ps aux | fgrep logwatch | fgrep -v fgrep ++ ++ifeq ($(with_ada),yes) ++ -if [ -f $(builddir)/acats-killer.pid ]; then \ ++ kill -1 `cat $(builddir)/acats-killer.pid`; \ ++ sleep 1; \ ++ kill -9 `cat $(builddir)/acats-killer.pid`; \ ++ rm -f $(builddir)/acats-killer.pid; \ ++ fi ++endif ++ ++ if [ -x $(srcdir)/contrib/test_summary ]; then \ ++ rm -f test-summary; \ ++ ( \ ++ cd $(builddir); \ ++ echo '' > ts-include; \ ++ echo '' >> ts-include; \ ++ if [ -f $(builddir)/gcc/.bad_compare ]; then \ ++ echo 'Bootstrap comparison failure:' >> ts-include; \ ++ cat $(builddir)/gcc/.bad_compare >> ts-include; \ ++ echo '' >> ts-include; \ ++ echo '' >> ts-include; \ ++ fi; \ ++ echo "Build Dependencies:" >> ts-include; \ ++ dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ ++ libgmp*-dev libmpfr-dev libmpc-dev libisl-dev \ ++ | fgrep -v '' >> ts-include; \ ++ echo '' >> ts-include; \ ++ cat ../$(patch_stamp) >> ts-include; \ ++ BOOT_CFLAGS="$(BOOT_CFLAGS)" \ ++ $(srcdir)/contrib/test_summary \ ++ -i ts-include -m "$(S_EMAIL)" \ ++ ) > raw-test-summary; \ ++ if [ -n "$(testsuite_tarball)" ]; then \ ++ echo "Test suite used: $(testsuite_srcdir)" > test-summary; \ ++ echo " Do not interpret the results on its own" >> test-summary; \ ++ echo " but compare them with the results from" >> test-summary; \ ++ echo " the gcc-snapshot package." >> test-summary; \ ++ fi; \ ++ sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-summary \ ++ >> test-summary; \ ++ awk '/^cat/, /^EOF/' raw-test-summary | grep -v EOF >> test-summary; \ ++ if [ -f bootstrap-summary -a "$(bootstrap_target)" != profiledbootstrap ]; then \ ++ echo '' >> test-summary; \ ++ cat bootstrap-summary >> test-summary; \ ++ fi; \ ++ echo 'BEGIN test-summary'; \ ++ cat test-summary; \ ++ echo 'END test-summary'; \ ++ fi ++ifeq ($(with_d),yes) ++ : # the D test failures for the non-default multilibs are known, ignore them ++ egrep -v '^(FAIL|UNRESOLVED): (runnable|fail_c|comp)' test-summary > test-summary.tmp ++ mv -f test-summary.tmp test-summary ++endif ++ ++ : # prepare the inclusion of the test results ++ rm -rf $(d_tst) ++ mkdir -p $(d_tst)/$(docdir)/$(p_xbase)/test ++ echo "TEST COMPARE BEGIN" ++ for i in test-summary testsuite-comparision; do \ ++ [ -f $$i ] || continue; \ ++ cp -p $$i $(d_tst)/$(docdir)/$(p_xbase)/$$i; \ ++ done ++# more than one libgo.sum, avoid it ++ cp -p $$(find $(builddir)/gcc/testsuite -maxdepth 2 \( -name '*.sum' -o -name '*.log' \)) \ ++ $$(find $(buildlibdir)/*/testsuite -maxdepth 1 \( -name '*.sum' -o -name '*.log' \) ! -name 'libgo.*') \ ++ $(d_tst)/$(docdir)/$(p_xbase)/test/ ++ifeq ($(with_go),yes) ++ cp -p $(buildlibdir)/libgo/libgo.sum \ ++ $(d_tst)/$(docdir)/$(p_xbase)/test/ ++endif ++ifeq (0,1) ++ cd $(builddir); \ ++ for i in $(CURDIR)/$(d_tst)/$(docdir)/$(p_xbase)/test/*.sum; do \ ++ b=$$(basename $$i); \ ++ if [ -f /usr/share/doc/$(p_xbase)/test/$$b.gz ]; then \ ++ zcat /usr/share/doc/$(p_xbase)/test/$$b.gz > /tmp/$$b; \ ++ if sh $(srcdir)/contrib/test_summary /tmp/$$b $$i; then \ ++ echo "$$b: OK"; \ ++ else \ ++ echo "$$b: FAILURES"; \ ++ fi; \ ++ rm -f /tmp/$$b; \ ++ else \ ++ echo "Test summary for $$b is not available"; \ ++ fi; \ ++ done ++endif ++ echo "TEST COMPARE END" ++ ++ifneq ($(with_common_libs),yes) ++ if [ -f libstdc++-test-summary ]; then \ ++ cp libstdc++-test-summary \ ++ $(d_tst)/$(docdir)/$(p_xbase)/libstdc++-installed-test-summary; \ ++ fi ++ if [ -f $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.LOG ]; then \ ++ cp $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.LOG \ ++ $(d_tst)/$(docdir)/$(p_xbase)/test/libstdc++-installed.log; \ ++ cp $(buildlibdir)/libstdc++-v3/testsuite/libstdc++-installed.SUM \ ++ $(d_tst)/$(docdir)/$(p_xbase)/test/libstdc++-installed.sum; \ ++ fi ++endif ++ ++ if which xz 2>&1 >/dev/null; then \ ++ echo -n $(d_tst)/$(docdir)/$(p_xbase)/test/* \ ++ | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -9v; \ ++ fi ++ ++ -cp usage-*.svg $(d_tst)/$(docdir)/$(p_xbase)/. ++ -if which xz 2>&1 >/dev/null; then \ ++ echo -n $(d_tst)/$(docdir)/$(p_xbase)/*.svg \ ++ | xargs -d ' ' -L 1 -P $(USE_CPUS) xz -9v; \ ++ fi ++ ++ cd $(d_tst) && tar cvf ../../installed-testlogs.tar usr ++ rm -rf $(d_tst) ++ ++ifeq ($(save_disk_space),yes) ++ rm -rf $(builddir)/gcc/testsuite/* ++ rm -f usage-*.svg ++endif ++ touch $(check_stamp) ++ ++$(check_inst_stamp): $(check_stamp) ++ rm -f test-inst-protocol ++ @echo === START $@ === ++ ++ifeq ($(start_logwatch),yes) ++ : # start logwatch script for regular output during test runs ++ chmod +x debian/logwatch.sh ++ -debian/logwatch.sh -t 900 -p $(builddir)/logwatch-inst.pid \ ++ -m 'testsuite (installed) still running ...' \ ++ test-inst-protocol \ ++ $(builddir) \ ++ & ++endif ++ ++ rm -rf check-inst ++ mkdir check-inst ++ ++ echo "Running testsuite ..." ++ -$(ULIMIT_M) ; \ ++ $(SET_SHELL) \ ++ $(SET_LOCPATH) \ ++ EXTRA_TEST_PFLAGS=-g0 \ ++ DEJAGNU_TIMEOUT=$(DEJAGNU_TIMEOUT) \ ++ DEB_BUILD_OPTIONS='$(DEB_BUILD_OPTIONS) gcc-ice=nodump,norepro' \ ++ cd check-inst && $(srcdir)/contrib/test_installed \ ++ --with-gcc=gcc-$(CC) --with-g++=$(CXX) --with-g77=$(subst gcc,gfortran,$(CC)) \ ++ 2>&1 | tee test-inst-protocol ++ ++ -ps aux | fgrep logwatch | fgrep -v fgrep ++ if [ -f $(builddir)/logwatch-inst.pid ]; then \ ++ kill -1 `cat $(builddir)/logwatch-inst.pid`; \ ++ else \ ++ true; \ ++ fi ++ -ps aux | fgrep logwatch | fgrep -v fgrep ++ ++ -chmod 755 $(srcdir)/contrib/test_summary ++ if [ -x $(srcdir)/contrib/test_summary ]; then \ ++ rm -f test-inst-summary; \ ++ ( \ ++ cd check-inst; \ ++ echo '' > ts-include; \ ++ echo '' >> ts-include; \ ++ echo "Build Dependencies:" >> ts-include; \ ++ dpkg -l g++-* binutils* `echo '$(LIBC_DEP)' | awk '{print $$1}'` \ ++ libgmp*-dev libmpfr-dev libmpc-dev libisl*-dev \ ++ | fgrep -v '' >> ts-include; \ ++ echo '' >> ts-include; \ ++ echo 'Results for the installed GCC-3.3 compilers' >> ts-include; \ ++ $(srcdir)/contrib/test_summary \ ++ -i ts-include -m "$(S_EMAIL)" \ ++ ) > raw-test-inst-summary; \ ++ sed -n '/^Mail/s/.*"\([^"][^"]*\)".*/\1/p' raw-test-inst-summary \ ++ >> test-inst-summary; \ ++ awk '/^cat/, /^EOF/' raw-test-inst-summary \ ++ | grep -v EOF >> test-inst-summary; \ ++ echo 'BEGIN test-installed-summary'; \ ++ cat test-inst-summary; \ ++ echo 'END test-installed-summary'; \ ++ fi ++ ++ chmod 755 debian/reduce-test-diff.awk ++ if diff -u test-inst-summary test-summary \ ++ | debian/reduce-test-diff.awk > diff-summary; \ ++ then \ ++ mv -f diff-summary testsuite-comparision; \ ++ else \ ++ ( \ ++ echo "WARNING: New failures in gcc-3.4 compared to gcc-3.3"; \ ++ echo ''; \ ++ cat diff-summary; \ ++ ) > testsuite-comparision; \ ++ rm -f diff-summary; \ ++ fi ++ touch $(check_inst_stamp) ++ ++clean: debian/control ++ dh_testdir ++ rm -f pxxx status ++ rm -f *-summary *-protocol testsuite-comparision summary-diff ++ rm -f $(srcdir)/gcc/po/*.gmo ++ rm -rf src-nvptx src-gcn ++ rm -f debian/lib{gcc,objc,stdc++}{-v3,[0-9]}*.{{pre,post}{inst,rm},shlibs} ++ fs=`echo debian/*BV* debian/*CXX* debian/*LC* debian/*MF* | sort -u`; \ ++ for f in $$fs; do \ ++ [ -f $$f ] || continue; \ ++ f2=$$(echo $$f \ ++ | sed 's/BV/$(BASE_VERSION)/;s/CXX/$(CXX_SONAME)/;s/LC/$(GCC_SONAME)/;s/-CRB/$(cross_bin_arch)/;s/\.in$$//'); \ ++ rm -f $$f2; \ ++ done ++ rm -f debian/lib*gcc-s1.symbols ++ifneq ($(single_package),yes) ++ rm -f debian/lib*{atomic$(ATOMIC_SONAME),gfortran$(FORTRAN_SONAME),gomp$(GOMP_SONAME),itm$(ITM_SONAME),quadmath$(QUADMATH_SONAME),stdc++$(CXX_SONAME)}.symbols ++endif ++ find debian -maxdepth 1 -name '*-cross.symbols' -type l | xargs -r rm -f ++ rm -f debian/gcc-{XX,ar,nm,ranlib}-$(BASE_VERSION).1 ++ rm -f debian/shlibs.local debian/shlibs.common* debian/substvars.local ++ rm -f debian/*.debhelper ++ -[ -d debian/bugs ] && $(MAKE) -C debian/bugs clean ++ rm -f debian/README.libstdc++-baseline debian/README.Bugs debian/README.Debian.$(DEB_TARGET_ARCH) ++ rm -f debian/arch_binaries* debian/indep_binaries* ++ rm -rf bin bin-gcn locales share ++ rm -rf check-inst ++ rm -f usage-*.svg ++ rm -f installed-*.tar* ++ dh_clean ++ifneq (,$(filter $(build_type), build-cross cross-build-cross)) ++ $(cross_clean) dh_clean ++endif ++ ++# ----------------------------------------------------------------------------- ++# some abbrevations for the package names and directories; ++# p_XXX is the package name, d_XXX is the package directory ++# these macros are only used in the binary-* targets. ++ ++ifeq ($(versioned_packages),yes) ++ pkg_ver := -$(BASE_VERSION) ++endif ++ ++# if native or rtlibs build ++ifeq ($(if $(filter yes,$(DEB_CROSS)),$(if $(filter rtlibs,$(DEB_STAGE)),native,cross),native),native) ++ p_base = gcc$(pkg_ver)-base ++ p_lbase = $(p_base) ++ p_xbase = gcc$(pkg_ver)-base ++else ++ # only triggered if DEB_CROSS set ++ p_base = gcc$(pkg_ver)$(cross_bin_arch)-base ++ p_lbase = gcc$(pkg_ver)-cross-base$(GCC_PORTS_BUILD) ++ p_xbase = gcc$(pkg_ver)$(cross_bin_arch)-base ++endif ++p_cpp_b = cpp$(pkg_ver)-for-build ++p_hppa64 = gcc$(pkg_ver)-hppa64-linux-gnu ++ ++# needed for shlibs.common* generation ++ifeq (,$(p_lgcc)) ++ p_lgcc = libgcc-s$(GCC_SONAME)$(cross_lib_arch) ++endif ++ifeq (,$(p_lib)) ++ p_lib = libstdc++$(CXX_SONAME)$(cross_lib_arch) ++endif ++p_tst = gcc$(pkg_ver)-test-results ++ ++d = debian/tmp ++d_base = debian/$(p_base) ++d_xbase = debian/$(p_xbase) ++d_lgcc = debian/$(p_lgcc) ++d_hppa64= debian/$(p_hppa64) ++d_tst = debian/$(p_tst) ++ ++common_substvars = \ ++ $(shell awk "{printf \"'-V%s' \", \$$0}" debian/substvars.local) ++ ++ifeq ($(DEB_CROSS),yes) ++ lib_binaries := indep_binaries ++else ++ lib_binaries := arch_binaries ++endif ++ ++# --------------------------------------------------------------------------- ++ ++ifneq (,$(findstring gcc-snapshot, $(PKGSOURCE))) ++ include debian/rules.d/binary-snapshot.mk ++else ifneq (,$(findstring gcc-toolchain, $(PKGSOURCE))) ++ include debian/rules.d/binary-toolchain.mk ++else ++ ++ifneq ($(with_base_only),yes) ++ifneq ($(DEB_CROSS),yes) ++ifeq ($(with_source),yes) ++ include debian/rules.d/binary-source.mk ++endif ++endif ++endif ++ ++ifneq ($(BACKPORT),true) ++ ++ifeq ($(with_gccbase),yes) ++ include debian/rules.d/binary-base.mk ++endif ++ ++ifneq ($(with_base_only),yes) ++ ++# always include to get some definitions ++include debian/rules.d/binary-libgcc.mk ++ ++ifeq ($(with_libqmath),yes) ++ include debian/rules.d/binary-libquadmath.mk ++endif ++ ++ifeq ($(with_libgmath),yes) ++ include debian/rules.d/binary-libgccmath.mk ++endif ++ ++ifeq ($(with_libgomp),yes) ++ include debian/rules.d/binary-libgomp.mk ++endif ++ ++ifeq ($(with_libitm),yes) ++ include debian/rules.d/binary-libitm.mk ++endif ++ ++ifeq ($(with_libatomic),yes) ++ include debian/rules.d/binary-libatomic.mk ++endif ++ ++ifeq ($(with_libbacktrace),yes) ++ include debian/rules.d/binary-libbacktrace.mk ++endif ++ ++ifeq ($(with_cdev),yes) ++ include debian/rules.d/binary-cpp.mk ++endif ++ ++ifeq ($(with_libssp),yes) ++ include debian/rules.d/binary-libssp.mk ++endif ++ ++ifeq ($(with_objcxx),yes) ++ include debian/rules.d/binary-objcxx.mk ++endif ++ ++ifeq ($(with_objc),yes) ++ include debian/rules.d/binary-objc.mk ++ include debian/rules.d/binary-libobjc.mk ++endif ++ ++ifeq ($(with_go),yes) ++ include debian/rules.d/binary-go.mk ++endif ++ ++ifeq ($(with_cxxdev),yes) ++ include debian/rules.d/binary-cxx.mk ++endif ++ifeq ($(with_cxx),yes) ++ include debian/rules.d/binary-libstdcxx.mk ++endif ++ ++ifeq ($(with_libasan),yes) ++ include debian/rules.d/binary-libasan.mk ++endif ++ ++ifeq ($(with_liblsan),yes) ++ include debian/rules.d/binary-liblsan.mk ++endif ++ ++ifeq ($(with_libtsan),yes) ++ include debian/rules.d/binary-libtsan.mk ++endif ++ ++ifeq ($(with_libubsan),yes) ++ include debian/rules.d/binary-libubsan.mk ++endif ++ ++ifeq ($(with_libhwasan),yes) ++ include debian/rules.d/binary-libhwasan.mk ++endif ++ ++ifeq ($(with_libvtv),yes) ++ include debian/rules.d/binary-libvtv.mk ++endif ++ ++ifeq ($(with_f77),yes) ++ include debian/rules.d/binary-f77.mk ++endif ++ ++ifeq ($(with_fortran),yes) ++ include debian/rules.d/binary-fortran.mk ++endif ++ ++ifeq ($(with_ada),yes) ++ include debian/rules.d/binary-ada.mk ++endif ++ ++ifeq ($(with_d),yes) ++ include debian/rules.d/binary-d.mk ++endif ++ ++ifeq ($(with_m2),yes) ++ include debian/rules.d/binary-m2.mk ++endif ++ ++ifeq ($(with_rs),yes) ++ include debian/rules.d/binary-rust.mk ++endif ++ ++ifeq ($(with_cobol),yes) ++ include debian/rules.d/binary-cobol.mk ++endif ++ ++ifeq ($(with_algol),yes) ++ include debian/rules.d/binary-algol68.mk ++endif ++ ++ifeq ($(with_libcc1),yes) ++ include debian/rules.d/binary-libcc1.mk ++endif ++ ++ifeq ($(with_jit),yes) ++ include debian/rules.d/binary-libgccjit.mk ++ include debian/rules.d/binary-libdiag.mk ++endif ++ ++ifeq ($(with_offload_nvptx),yes) ++ include debian/rules.d/binary-nvptx.mk ++endif ++ ++ifeq ($(with_offload_gcn),yes) ++ include debian/rules.d/binary-gcn.mk ++endif ++ ++ifeq ($(with_libnof),yes) ++ ifeq ($(DEB_TARGET_GNU_CPU),powerpc) ++ include debian/rules.d/binary-nof.mk ++ endif ++endif ++ ++ifeq ($(with_softfloat),yes) ++ include debian/rules.d/binary-softfloat.mk ++endif ++ ++# gcc must be moved/built after g77 and g++ ++ifeq ($(with_cdev),yes) ++ include debian/rules.d/binary-gcc.mk ++endif ++ ++ifeq ($(with_hppa64),yes) ++ include debian/rules.d/binary-hppa64.mk ++endif ++ ++endif # with_base_only ++endif # BACKPORT ++endif # ($(single_package),yes) ++ ++# ---------------------------------------------------------------------- ++install: $(install_dependencies) ++ ++$(install_dummy_stamp): $(build_dummy_stamp) ++ @echo === START $@ === ++ touch $(install_dummy_stamp) ++ ++$(install_snap_stamp): $(build_dependencies) ++ @echo === START $@ === ++ dh_testdir ++ dh_testroot ++ dh_prep ++ ++ : # Install directories ++ rm -rf $(d) ++ mkdir -p $(d)/$(PF) ++ ++ifeq ($(with_hppa64),yes) ++ : # install files prepared in the hppa64 build target ++ cd $(d) && tar xvf ../../installed-hppa64.tar.xz ++endif ++ ++ : # Install everything ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ $(MAKE) -C $(builddir) \ ++ $(call pass_vars, $(flags_to_pass)) \ ++ DESTDIR=$(CURDIR)/$(d) \ ++ infodir=/$(PF)/share/info \ ++ mandir=/$(PF)/share/man \ ++ install ++ ++ ls -l $(d)/$(PF)/bin ++ ++ for i in ar nm ranlib; do \ ++ cp debian/gcc-$$i-$(BASE_VERSION).1 \ ++ $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \ ++ done ++ ++ if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ ++ mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-15* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ ++ else \ ++ rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-15*; \ ++ fi ++ rm -rf $(d)/$(gcc_lib_dir)/include-fixed ++ ++ifneq ($(configured_libdir),$(libdir)) ++ for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \ ++ mv $(d)/$(PF)/$(configured_libdir)/$$i \ ++ $(d)/$(PF)/$(libdir)/. || true; \ ++ done ++endif ++ ++ifeq ($(with_jit),yes) ++ : # install files prepared in the jit build target ++ cd $(d) && tar xvf ../../installed-jit.tar.xz ++endif ++ ++ -ls -l $(d)/usr ++ if [ -d $(d)/usr/man/man1 ]; then \ ++ mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ ++ fi ++ ++ chmod 755 debian/dh_* ++ touch $(install_snap_stamp) ++ ++ ++$(install_tc_stamp): $(build_dependencies) ++ @echo === START $@ === ++ dh_testdir ++ dh_testroot ++ dh_prep ++ ++ : # Install directories ++ rm -rf $(d) ++ mkdir -p $(d)/$(PF) ++ ++ifeq ($(with_hppa64),yes) ++ : # install files prepared in the hppa64 build target ++ cd $(d) && tar xvf ../../installed-hppa64.tar.xz ++endif ++ ++ : # Install everything ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ $(MAKE) -C $(builddir) \ ++ $(call pass_vars, $(flags_to_pass)) \ ++ DESTDIR=$(CURDIR)/$(d) \ ++ infodir=/$(PF)/share/info \ ++ mandir=/$(PF)/share/man \ ++ install ++ ++ ls -l $(d)/$(PF)/bin ++ ++ for i in ar nm ranlib; do \ ++ cp debian/gcc-$$i-$(BASE_VERSION).1 \ ++ $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i.1; \ ++ done ++ ++ if [ ! -x $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc ]; then \ ++ mv $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-13* $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc; \ ++ else \ ++ rm -f $(d)/$(PF)/bin/$(TARGET_ALIAS)-gcc-13*; \ ++ fi ++ rm -rf $(d)/$(gcc_lib_dir)/include-fixed ++ ++ifneq ($(configured_libdir),$(libdir)) ++ for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.py' '*.spec'; do \ ++ mv $(d)/$(PF)/$(configured_libdir)/$$i \ ++ $(d)/$(PF)/$(libdir)/. || true; \ ++ done ++endif ++ ++ifeq ($(with_jit),yes) ++ : # install files prepared in the jit build target ++ cd $(d) && tar xvf ../../installed-jit.tar.xz ++endif ++ ++ -ls -l $(d)/usr ++ if [ -d $(d)/usr/man/man1 ]; then \ ++ mv $(d)/usr/man/man1/* $(d)/usr/share/man/man1/; \ ++ fi ++ ++ chmod 755 debian/dh_* ++ touch $(install_tc_stamp) ++ ++ ++$(install_stamp): $(build_stamp) ++ @echo === START $@ === ++ dh_testdir ++ dh_testroot ++ dh_prep $(if $(filter yes,$(with_hppa64)),-N$(p_hppa64)) ++ ++ if [ -f $(binary_stamp)-hppa64 ]; then \ ++ mv $(binary_stamp)-hppa64 saved-stamp-hppa64; \ ++ fi ++ rm -f $(binary_stamp)* ++ if [ -f saved-stamp-hppa64 ]; then \ ++ mv saved-stamp-hppa64 $(binary_stamp)-hppa64; \ ++ fi ++ ++ : # Install directories ++ rm -rf $(d) ++ mkdir -p $(d)/$(libdir) $(d)/$(PF) $(d)/$(PF)/$(libdir)/debug ++ifeq ($(biarch32),yes) ++ mkdir -p $(d)/$(PF)/$(lib32loc)/debug ++endif ++ifeq ($(biarch64),yes) ++ mkdir -p $(d)/$(PF)/lib64/debug ++endif ++ifeq ($(biarchn32),yes) ++ mkdir -p $(d)/$(PF)/$(libn32)/debug ++endif ++ifeq ($(biarchx32),yes) ++ mkdir -p $(d)/$(PF)/libx32/debug ++endif ++ ++ifneq (,$(filter $(DEB_TARGET_GNU_CPU),x86_64 sparc64 s390x powerpc64)) ++ifneq ($(DEB_TARGET_ARCH),x32) ++ : # link lib to lib64 and $(PF)/lib to $(PF)/lib64 ++ : # (this works when CONFARGS contains '--disable-multilib') ++ ln -s $(configured_libdir) $(d)/lib64 ++ mkdir -p $(d)/$(PF)/$(configured_libdir) ++ ln -s $(configured_libdir) $(d)/$(PF)/lib64 ++endif ++endif ++ifeq ($(DEB_TARGET_ARCH),x32) ++ : # link lib to libx32 and $(PF)/lib to $(PF)/libx32 ++ ln -s $(configured_libdir) $(d)/libx32 ++ mkdir -p $(d)/$(PF)/$(configured_libdir) ++ ln -s $(configured_libdir) $(d)/$(PF)/libx32 ++endif ++ ++ : # Install everything ++ $(SET_PATH) \ ++ $(SET_SHELL) \ ++ $(MAKE) -C $(builddir) \ ++ $(call pass_vars, $(flags_to_pass)) \ ++ DESTDIR=$(CURDIR)/$(d) \ ++ infodir=/$(PF)/share/info \ ++ mandir=/$(PF)/share/man \ ++ install ++ ++ @echo III: =============== upstream install $(DEB_TARGET_ARCH) =============== ++ find $(d) ! -type d ++ @echo III: =============== end upstream install $(DEB_TARGET_ARCH) =============== ++ ++ifeq ($(with_m2),yes) ++ ifneq (,$(filter $(build_type), build-cross cross-build-cross)) ++ : # FIXME: libm2 libs are installed wrong for libgm2 ++ for i in $(d)/$(PF)/lib/libm2*; do \ ++ test -e $$i || continue; \ ++ echo mv $$i $(d)/$(PFL)/lib/. ; \ ++ mv $$i $(d)/$(PFL)/lib/. ; \ ++ done ++ endif ++endif ++ ++ rm -rf $(d)/$(gcc_lib_dir)/include-fixed ++ ++ifeq ($(DEB_STAGE)-$(DEB_CROSS),rtlibs-yes) ++ @echo configured_libdir=$(configured_libdir) / libdir=$(libdir) / usr_lib=$(usr_lib) ++ ls $(d)/$(PF)/$(TARGET_ALIAS)/lib ++ set -x; \ ++ if [ -d $(d)/$(PF)/$(TARGET_ALIAS)/lib ]; then \ ++ cp -a $(d)/$(PF)/$(TARGET_ALIAS)/lib/* $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/.; \ ++ fi ++ for d in $$(cd $(d)/$(PF)/$(TARGET_ALIAS); echo lib?*); do \ ++ [ -d $(d)/$(PF)/$(TARGET_ALIAS)/$$d ] || continue; \ ++ cp -a $(d)/$(PF)/$(TARGET_ALIAS)/$$d/* $(d)/$(PF)/$$d/.; \ ++ done ++else ++ ifneq ($(configured_libdir),$(libdir)) ++ for i in ada debug go pkgconfig '*.so' '*.so.*' '*.a' '*.la' '*.o' '*.py' '*.spec' '*.modules.json'; do \ ++ mv $(d)/$(PF)/$(configured_libdir)/$$i \ ++ $(d)/$(PF)/$(libdir)/. || true; \ ++ done ++ endif ++endif ++ ++ifneq (,$(cmd_prefix)) ++ for i in $(d)/$(PF)/share/info/$(cmd_prefix)*; do \ ++ [ -f "$$i" ] || continue; \ ++ mv $$i $$(echo $$i | sed 's/$(cmd_prefix)//'); \ ++ done ++endif ++ ++ifeq ($(with_libcxxdbg),yes) ++ : # FIXME: the libstdc++ gdb.py file is installed with a wrong name ++ for i in $$(find $(d)/$(PF) -name libstdc++_pic.a-gdb.py); do \ ++ [ -f $$i ] || continue; \ ++ d=$$(dirname $$i); \ ++ b=$$(basename $$i); \ ++ t=$$(cd $$d; echo libstdc++.so.*.*.*)-gdb.py; \ ++ mv $$i $$d/$$t; \ ++ done ++endif ++ ++ : # fix permissions of liblto_plugin.so ++ chmod 644 $(d)/$(gcc_lexec_dir)/liblto_plugin.so ++ ++ : # remove rpath settings from binaries and shared libs ++ -chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \ ++ $(d)/$(gcc_lib_dir)/plugin/* \ ++ $(if $(filter $(with_multiarch_lib),yes), \ ++ $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) ++ ++ for i in $$(chrpath -k $(d)/$(PF)/bin/* $(d)/$(PFL)/lib*/lib*.so.* \ ++ $(d)/$(gcc_lib_dir)/plugin/* \ ++ $(if $(filter $(with_multiarch_lib),yes), \ ++ $(d)/$(PF)/lib/$(DEB_TARGET_MULTIARCH)/lib*.so.*) \ ++ 2>/dev/null | awk -F: '/R(UN)?PATH=/ {print $$1}'); \ ++ do \ ++ [ -h $$i ] && continue; \ ++ chrpath --delete $$i; \ ++ echo "removed RPATH/RUNPATH: $$i"; \ ++ done ++ ++ : # remove '*.la' and '*.lai' files, not shipped in any package. ++ find $(d) -name '*.la' -o -name '*.lai' | xargs -r rm -f ++ ++ifeq ($(GFDL_INVARIANT_FREE),yes) ++ for i in gcc gcov; do \ ++ I=`echo $$i | tr a-z A-Z`; \ ++ sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ ++ debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ ++ done ++ ++ ifeq ($(with_fortran),yes) ++ for i in g77; do \ ++ I=`echo $$i | tr a-z A-Z`; \ ++ sed -e "s/@NAME@/$$I$(pkg_ver)/g" -e "s/@name@/$$i$(pkg_ver)/g" \ ++ debian/dummy-man.1 > $(d)/$(PF)/share/man/man1/$$i.1; \ ++ done ++ endif ++endif ++ ++ifneq ($(with_libgnat),yes) ++ rm -f $(d)/$(gcc_lib_dir)/adalib/lib*.so* ++endif ++ ++# ifeq ($(with_ada),yes) ++# : # rename files (versioned ada binaries) ++# for i in ; do \ ++# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ ++# mv $(d)/$(PF)/share/man/man1/$$i.1 \ ++# $(d)/$(PF)/share/man/man1/$$i-$(GNAT_VERSION).1; \ ++# done ++# for i in $(GNAT_TOOLS); do \ ++# mv $(d)/$(PF)/bin/$$i $(d)/$(PF)/bin/$$i-$(GNAT_VERSION); \ ++# done ++# endif ++ ++ for i in ar nm ranlib; do \ ++ cp debian/gcc-$$i-$(BASE_VERSION).1 \ ++ $(d)/$(PF)/share/man/man1/$(cmd_prefix)gcc-$$i$(pkg_ver).1; \ ++ done ++ ++ chmod 755 debian/dh_* ++ ++ifneq ($(with_common_libs),yes) ++# for native builds, the default ml libs are always available; no need for a placeholder ++# apparently this changed with newer dpkg versions (1.18.7?) ... ++ ( \ ++ echo 'libgcc_s $(GCC_SONAME) $(p_lgcc)'; \ ++ echo 'libstdc++ $(CXX_SONAME) $(p_lib)'; \ ++ echo 'libquadmath $(QUADMATH_SONAME) libquadmath$(QUADMATH_SONAME)$(cross_lib_arch)'; \ ++ echo 'libatomic $(ATOMIC_SONAME) libatomic$(ATOMIC_SONAME)$(cross_lib_arch)'; \ ++ echo 'libgdiagnostics $(DIAGNOSTICS_SONAME) libgdiagnostocs$(DIAGNOSTICS_SONAME)$(cross_lib_arch)'; \ ++ ) > debian/shlibs.common ++ $(foreach ml,32 64 n32 x32, \ ++ ( \ ++ echo 'libgcc_s $(GCC_SONAME) $(subst lib,lib$(ml),$(p_lgcc))'; \ ++ echo 'libstdc++ $(CXX_SONAME) $(subst lib,lib$(ml),$(p_lib))'; \ ++ echo 'libquadmath $(QUADMATH_SONAME) lib$(ml)quadmath$(QUADMATH_SONAME)$(cross_lib_arch)'; \ ++ echo 'libatomic $(ATOMIC_SONAME) lib$(ml)atomic$(ATOMIC_SONAME)$(cross_lib_arch)'; \ ++ ) > debian/shlibs.common$(ml); \ ++ ) ++endif ++ ++ @echo III: =============== fixed install $(DEB_TARGET_ARCH) =============== ++ find $(d) ! -type d -print ++ @echo III: =============== end fixed install $(DEB_TARGET_ARCH) =============== ++ touch $(install_stamp) ++ ++$(install_jit_stamp): $(build_jit_stamp) $(install_stamp) ++ @echo === START $@ === ++ dh_testdir ++ dh_testroot ++ ++ : # install files prepared in the jit build target ++ cd $(d) && tar xvf ../../installed-jit.tar.xz ++ ++ @echo XXXXX `date -R` ++ touch $(install_jit_stamp) ++ ++$(install_nvptx_stamp): $(build_nvptx_stamp) ++ @echo === START $@ === ++ dh_testdir ++ ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib ++ rm -rf $(d)-nvptx ++ mkdir -p $(d)-nvptx/$(PF) ++ ++ $(SET_PATH) \ ++ biarch_multidir_names=none \ ++ $(MAKE) -C $(builddir_nvptx) \ ++ CC="$(CC_FOR_TARGET)" \ ++ $(call pass_vars, $(flags_to_pass)) \ ++ DESTDIR=$(CURDIR)/$(d)-nvptx \ ++ install ++ ++ find $(d)-nvptx ++ @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ++ rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/nvptx-none/$(versiondir)/install-tools ++ rm -rf $(d)-nvptx/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,cc1,cc1plus,f951} ++ rm -rf $(d)-nvptx/$(PF)/share/{info,man/man7,locale} ++ rm -rf $(d)-nvptx/$(PF)/share/man/man1/*-{gcov,gfortran,g++,cpp}.1 ++ rm -rf $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/{install-tools,plugin} ++ rm -rf $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/{install-tools,plugin,include-fixed} ++ rm -rf $(d)-nvptx/$(PF)/lib/libc[cp]1* ++ rm -rf $(d)-nvptx/$(PF)/lib{32,64,n32,x32} ++ ++ mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/*.{a,spec} \ ++ $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ ++ mv -f $(d)-nvptx/$(PF)/nvptx-none/lib/mgomp/*.{a,spec} \ ++ $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ ++ mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/*.a \ ++ $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/ ++ mv -f $(d)-nvptx/$(PF)/lib/gcc/nvptx-none/$(versiondir)/mgomp/*.a \ ++ $(d)-nvptx/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/nvptx-none/mgomp/ ++ find $(d)-nvptx -name \*.la | xargs rm -f ++ rm -rf $(d)-nvptx/$(PF)/nvptx-none/include ++ -find $(d)-nvptx -type d -empty -delete ++ ++ : # a complete compiler installation needed for running the tests ++ ln -sf /usr/bin/nvptx-none-ar $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ar ++ ln -sf /usr/bin/nvptx-none-as $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/as ++ ln -sf /usr/bin/nvptx-none-ld $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ld ++ ln -sf /usr/bin/nvptx-none-ranlib $(d)-nvptx/$(gcc_lexec_dir)/accel/nvptx-none/ranlib ++ ++ @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ++ find $(d)-nvptx ++ @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ++ ++ rm -f $(srcdir)/newlib ++ @echo XXXXX `date -R` ++ touch $(install_nvptx_stamp) ++ ++$(install_gcn_stamp): $(build_gcn_stamp) ++ @echo === START $@ === ++ dh_testdir ++ ln -sf ../$(newlib_srcdir)/newlib $(srcdir)/newlib ++ rm -rf $(d)-gcn ++ mkdir -p $(d)-gcn/$(PF) ++ ++ $(SET_PATH) \ ++ biarch_multidir_names=none \ ++ $(MAKE) -C $(builddir_gcn) \ ++ CC="$(CC_FOR_TARGET)" \ ++ $(call pass_vars, $(flags_to_pass)) \ ++ DESTDIR=$(CURDIR)/$(d)-gcn \ ++ install ++ ++ find $(d)-gcn ++ @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ++ rm -rf $(d)-gcn/$(libexecdir)/$(gcc_subdir_name)/$(gcn_target_name)/$(versiondir)/install-tools ++ rm -rf $(d)-gcn/$(libexecdir)/$(gcc_subdir_name)/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/{install-tools,plugin,cc1,cc1plus,f951} ++ rm -rf $(d)-gcn/$(PF)/share/{info,man/man7,locale} ++ rm -rf $(d)-gcn/$(PF)/bin/*-{gcov*,lto-dump}-$(versiondir) ++ rm -rf $(d)-gcn/$(PF)/share/man/man1/*-{cpp,gcov*,gfortran,g++,lto-dump}-$(versiondir).1 ++ rm -rf $(d)-gcn/$(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/{install-tools,plugin} ++ rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/{install-tools,plugin,include-fixed} ++ rm -rf $(d)-gcn/$(PF)/lib/libc[cp]1* ++ rm -rf $(d)-gcn/$(PF)/lib{32,64,n32,x32} ++ ++ for d in . $$(cd $(d)-gcn/$(PF)/$(gcn_target_name)/lib && echo gfx9* gfx1*); do \ ++ mv -f $(d)-gcn/$(PF)/$(gcn_target_name)/lib/$$d/*.{a,spec} \ ++ $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/$$d/.; \ ++ mv -f $(d)-gcn/$(PF)/lib/gcc/$(gcn_target_name)/$(versiondir)/$$d/*.a \ ++ $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/accel/$(gcn_target_name)/$$d/.; \ ++ done ++ ++ find $(d)-gcn -name \*.la | xargs rm -f ++ rm -rf $(d)-gcn/$(PF)/$(gcn_target_name)/include ++ rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/include ++ rm -rf $(d)-gcn/$(PF)/lib/gcc/$(DEB_HOST_GNU_TYPE)/$(versiondir)/gfx* ++ ++ : # a complete compiler installation needed for running the tests ++ifeq ($(gcn_tools_llvm_version),tools) ++ for t in ar as ld nm ranlib; do \ ++ ln -sf /usr/$(gcn_target_name)/bin/$$t \ ++ $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/$$t; \ ++ done ++else ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ar \ ++ $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ar ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-mc \ ++ $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/as ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/lld \ ++ $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ld ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-nm \ ++ $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/nm ++ ln -sf /usr/lib/llvm-$(gcn_tools_llvm_version)/bin/llvm-ranlib \ ++ $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/ranlib ++endif ++ : # fix permissions of liblto_plugin.so ++ chmod 644 $(d)-gcn/$(gcc_lexec_dir)/accel/$(gcn_target_name)/liblto_plugin.so ++ ++ -find $(d)-gcn -type d -empty -delete ++ @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ++ find $(d)-gcn ++ @echo XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ++ ++ rm -f $(srcdir)/newlib ++ @echo XXXXX `date -R` ++ touch $(install_gcn_stamp) ++ ++$(install_hppa64_stamp): $(build_hppa64_stamp) ++ @echo === START $@ === ++ dh_testdir ++ dh_testroot ++ rm -rf $(d_hppa64) ++ mkdir -p $(d_hppa64)/$(PF) ++ ++ : # install files prepared in the hppa64 build target ++ cd $(d_hppa64) && tar xvf ../../installed-hppa64.tar.xz ++ ++ touch $(install_hppa64_stamp) ++ ++# ---------------------------------------------------------------------- ++# Build architecture-dependent files here. ++debian/arch_binaries.all: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) ++ cd debian; xargs -r du -s < arch_binaries | sort -nr | awk '{print $$2}' \ ++ > arch_binaries.tmp ++ mv debian/arch_binaries.tmp debian/arch_binaries ++ sed -i 's/ /\n/g' debian/arch_binaries.epoch || touch debian/arch_binaries.epoch ++ cat debian/arch_binaries debian/arch_binaries.epoch > debian/arch_binaries.all ++ ++# see #879054 for the "test ! -s" tests, needed for the rtlibs stage ++binary-arch: $(foreach i,$(arch_binaries),$(binary_stamp)-$(i)) debian/arch_binaries.all ++ test ! -s debian/arch_binaries.all || \ ++ dh_compress $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) \ ++ -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs ++ @echo LTO_PLUGIN debug ++ -find debian -name liblto_plugin.so -ls ++ test ! -s debian/arch_binaries.all || \ ++ dh_fixperms $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) ++ -find debian -name liblto_plugin.so -ls ++ifeq ($(with_ada),yes) ++ find $$(ls -d $(d_gnat) $(d_gnatsjlj) $(d_snap) 2>/dev/null) \ ++ -name '*.ali' | xargs -r chmod 444 ++endif ++ @set -e; \ ++ pkgs="$$(sed 's/^/-p/;/-for-host/d' debian/arch_binaries | xargs)"; \ ++ if [ -n "$$pkgs" ]; then \ ++ echo dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ ++ dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ ++ fi ++ @set -e; \ ++ pkgs="$$(sed -n 's/^/-p/;/-for-host/p' debian/arch_binaries | xargs)"; \ ++ if [ -n "$$pkgs" ]; then \ ++ echo $(cross_gencontrol) dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ ++ $(cross_gencontrol) dh_gencontrol $$pkgs -- -v$(DEB_VERSION) $(common_substvars) $(shell debian/ada/libgnat_alihash); \ ++ fi ++ @set -e; \ ++ pkgs='$(strip $(foreach p,$(shell echo `cat debian/arch_binaries.epoch`),-p$(p)))'; \ ++ if [ -n "$$pkgs" ]; then \ ++ echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ ++ dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ ++ fi ++ifneq ($(single_package),yes) ++ ifeq ($(with_libcompatgcc),yes) ++ cp -p debian/.debhelper/generated/$(p_lgcc)/triggers \ ++ debian/.debhelper/generated/$(subst gcc-s,gcc,$(p_lgcc))/. ++ endif ++endif ++ test ! -s debian/arch_binaries.all || \ ++ dh_installdeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) ++ test ! -s debian/arch_binaries.all || \ ++ dh_md5sums $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) ++ test ! -s debian/arch_binaries.all || \ ++ dh_builddeb $(foreach p,$(shell echo `cat debian/arch_binaries.all`),-p$(p)) ++ifeq ($(with_check),yes) ++ @echo Done ++# : # Send Email about sucessfull build. ++# # cat raw-test-summary | sh; echo "Sent mail to $(S_EMAIL)" ++endif ++ ++ifneq ($(single_package),yes) ++ : # remove empty directories, when all components are in place ++ -find $(d) -type d -empty -delete ++ ++ @echo "Listing installed files not included in any package:" ++ -find $(d) ! -type d ++endif ++ -du -s -BM . ++ -du -s -BM .. ++ @echo XXXXX `date -R` ++ ++# ---------------------------------------------------------------------- ++# Build architecture-independent files here. ++debian/indep_binaries.all: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) ++ cd debian; xargs -r du -s < indep_binaries | sort -nr | awk '{print $$2}' \ ++ > indep_binaries.tmp ++ mv debian/indep_binaries.tmp debian/indep_binaries ++ sed -i 's/ /\n/g' debian/indep_binaries.epoch || touch debian/indep_binaries.epoch ++ cat debian/indep_binaries debian/indep_binaries.epoch > debian/indep_binaries.all ++ ++binary-indep: $(foreach i,$(indep_binaries),$(binary_stamp)-$(i)) debian/indep_binaries.all ++ find debian -name _formulas.log -delete -print ++ dh_compress $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) \ ++ -X.log.xz -X.sum.xz -X.c -X.txt -X.tag -X.map -XREADME.Bugs ++ dh_fixperms $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) ++ : # the export should be harmless for the binary indep packages of a native build ++ export DEB_HOST_ARCH=$(TARGET); \ ++ dh_gencontrol $(foreach p,$(shell echo `cat debian/indep_binaries`),-p$(p)) \ ++ -- -v$(DEB_VERSION) $(common_substvars) ++ @set -e; \ ++ export DEB_HOST_ARCH=$(TARGET); \ ++ pkgs='$(strip $(foreach p,$(shell echo `cat debian/indep_binaries.epoch`),-p$(p)))'; \ ++ if [ -n "$$pkgs" ]; then \ ++ echo dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ ++ dh_gencontrol $$pkgs -- -v$(DEB_EVERSION) $(common_substvars); \ ++ fi ++ ++ifneq (,$(filter $(DEB_TARGET_ARCH), mips mipsel mips64 mips64el mipsn32 mipsn32el)) ++ for p in `cat debian/indep_binaries debian/indep_binaries.epoch`; do \ ++ p=$${p#-p*}; \ ++ case "$$p" in \ ++ lib64*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/libn?32[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_l64gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ ++ libn32*) echo mangle $$p; sed -i -r '/^(Dep|Rec|Sug)/s/lib64[^,]+(, *|$$)//g;/^(Dep|Rec|Sug)/s/$(p_lgcc)/$(p_ln32gcc)/;/^(Dep|Rec|Sug)/s/ *, *$$//' debian/$$p/DEBIAN/control;; \ ++ esac; \ ++ done ++endif ++ ++ dh_installdeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) ++ dh_md5sums $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) ++ dh_builddeb $(foreach p,$(shell echo `cat debian/indep_binaries.all`),-p$(p)) ++ ++ @echo XXXXX `date -R` ++ ++source diff: ++ @echo >&2 'source and diff are obsolete - use dpkg-source -b'; false ++ ++binary: binary-indep binary-arch ++.PHONY: build build-indep build-arch clean binary-indep binary-arch binary ++.PRECIOUS: $(stampdir)/%-stamp debian/indep_binaries.all debian/arch_binaries.all ++.NOTPARALLEL: diff --cc debian/runcheck.sh index 0000000,0000000..c7d6cfb new file mode 100644 --- /dev/null +++ b/debian/runcheck.sh @@@ -1,0 -1,0 +1,23 @@@ ++#! /bin/sh ++ ++mkdir -p build ++ ++abi=${CC##* } ++base=build/runcheck$abi ++ ++cat >$base.c < ++int main() ++{ ++ printf("$abi"); ++ return 0; ++} ++EOF ++ ++ ++if ${CC:-gcc} -o $base $base.c 2>/dev/null; then ++ if [ "$($base 2>&1)" = "$abi" ]; then ++ printf "%s" $abi > $base.out ++ printf "%s" $abi ++ fi ++fi diff --cc debian/sarif-replay.1 index 0000000,0000000..8680eae new file mode 100644 --- /dev/null +++ b/debian/sarif-replay.1 @@@ -1,0 -1,0 +1,6 @@@ ++.\" DO NOT MODIFY THIS FILE! It was generated by help2man 1.49.3. ++.TH SARIF-REPLAY-15 "1" "June 2026" "sarif-replay-15 15" "User Commands" ++.SH NAME ++sarif-replay-15 \- Replay results from one or more .sarif files as if they were GCC diagnostics ++.SH DESCRIPTION ++debian/gcc\-15\-diagnostics/usr/bin/sarif\-replay\-15: error while loading shared libraries: libgdiagnostics.so.0: cannot open shared object file: No such file or directory diff --cc debian/source/format index 0000000,0000000..163aaf8 new file mode 100644 --- /dev/null +++ b/debian/source/format @@@ -1,0 -1,0 +1,1 @@@ ++3.0 (quilt) diff --cc debian/source/lintian-overrides index 0000000,0000000..32ab49b new file mode 100644 --- /dev/null +++ b/debian/source/lintian-overrides @@@ -1,0 -1,0 +1,12 @@@ ++invalid-arch-string-in-source-relation ++ ++quilt-build-dep-but-no-series-file ++ ++# lintian can't handle (>= ${gcc:Version}) ++weak-library-dev-dependency ++ ++# yes, still generating the series file for the build ++patch-file-present-but-not-mentioned-in-series ++ ++# lintian is so wrong ... ++field-too-long diff --cc debian/tests/control index 0000000,0000000..c757929 new file mode 100644 --- /dev/null +++ b/debian/tests/control @@@ -1,0 -1,0 +1,38 @@@ ++Tests: runtime-libs ++Depends: apt, python3-minimal ++Restrictions: allow-stderr ++ ++Tests: libc-link ++Depends: gcc-15, libc6-dev | libc-dev ++ ++Tests: libstdcxx-link ++Depends: g++-15 ++ ++Tests: libgfortran-link ++Depends: gfortran-15 ++ ++Tests: libgo-link ++Depends: gccgo-15 ++ ++Tests: libgomp-link ++Depends: gfortran-15, gcc-15 ++ ++Tests: libgm2-link ++Depends: gm2-15 ++ ++Tests: libgnat-link ++Depends: gnat-15 ++ ++Tests: libgcobol-link ++Architecture: arm64 amd64 ++Depends: gcobol-15 ++ ++Tests: libga68-link ++Depends: ga68-15 ++ ++Tests: libgphobos-link ++Depends: gdc-15 ++Architecture: !powerpc !ppc64 !ppc64el ++ ++Tests: shlib-build ++Depends: gcc-15, libc6-dev | libc-dev diff --cc debian/tests/libc-link index 0000000,0000000..fbe4224 new file mode 100755 --- /dev/null +++ b/debian/tests/libc-link @@@ -1,0 -1,0 +1,30 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libc, to verify ++# basic compile-time and run-time linking functionality. ++# ++# (C) 2012 Canonical Ltd. ++# Author: Martin Pitt ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++CC=gcc-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < libctest.c ++#include ++#include ++ ++int main() ++{ ++ assert (1 > 0); ++ assert (strcmp ("hello", "hello") == 0); ++ return 0; ++} ++EOF ++ ++$CC -o libctest libctest.c ++echo "build: OK" ++[ -x libctest ] ++./libctest ++echo "run: OK" diff --cc debian/tests/libga68-link index 0000000,0000000..9b7bd94 new file mode 100755 --- /dev/null +++ b/debian/tests/libga68-link @@@ -1,0 -1,0 +1,28 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libga68, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++GA68=ga68-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < hello.a68 ++begin ++ putchar ("H"); ++ putchar ("e"); ++ putchar ("l"); ++ putchar ("l"); ++ putchar ("o"); ++ putchar ("!"); ++ puts ("\n") ++end ++EOF ++ ++$GA68 hello.a68 ++echo "build: OK" ++ldd a.out ++[ -x a.out ] ++./a.out ++echo "run: OK" diff --cc debian/tests/libgcobol-link index 0000000,0000000..7767ba6 new file mode 100755 --- /dev/null +++ b/debian/tests/libgcobol-link @@@ -1,0 -1,0 +1,30 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libgcobol, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++GCOB=gcobol-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < hello.cob ++ ++ IDENTIFICATION DIVISION. ++ PROGRAM-ID. hello. ++ ++ PROCEDURE DIVISION. ++ DISPLAY "Howdy!". ++ ++ ++ ++ ++ ++EOF ++ ++$GCOB hello.cob ++echo "build: OK" ++ldd a.out ++[ -x a.out ] ++./a.out ++echo "run: OK" diff --cc debian/tests/libgfortran-link index 0000000,0000000..70bf6b2 new file mode 100755 --- /dev/null +++ b/debian/tests/libgfortran-link @@@ -1,0 -1,0 +1,22 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libgfortran, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++F95=gfortran-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < libgfortran.f ++ program hello ++ print *, "Hello World!" ++ end program hello ++EOF ++ ++$F95 -o ftest libgfortran.f ++echo "build: OK" ++ldd ftest ++[ -x ftest ] ++./ftest ++echo "run: OK" diff --cc debian/tests/libgm2-link index 0000000,0000000..2f975c3 new file mode 100755 --- /dev/null +++ b/debian/tests/libgm2-link @@@ -1,0 -1,0 +1,26 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libgo, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++GM2=gm2-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < hello.mod ++MODULE hello ; ++ ++FROM StrIO IMPORT WriteString, WriteLn ; ++ ++BEGIN ++ WriteString ('hello world') ; WriteLn ++END hello. ++EOF ++ ++$GM2 -g -o hello hello.mod ++echo "build: OK" ++ldd hello ++[ -x hello ] ++./hello ++echo "run: OK" diff --cc debian/tests/libgnat-link index 0000000,0000000..c357a55 new file mode 100755 --- /dev/null +++ b/debian/tests/libgnat-link @@@ -1,0 -1,0 +1,24 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libgnat, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++GNATMAKE=gnatmake-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < hello.adb ++with Ada.Text_IO; use Ada.Text_IO; ++procedure Hello is ++begin ++ Put_Line("Hello gnatmake."); ++end Hello; ++EOF ++ ++$GNATMAKE -eS -vm -o adatest hello.adb ++echo "build: OK" ++ldd adatest ++[ -x adatest ] ++./adatest ++echo "run: OK" diff --cc debian/tests/libgo-link index 0000000,0000000..76a3f2a new file mode 100755 --- /dev/null +++ b/debian/tests/libgo-link @@@ -1,0 -1,0 +1,25 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libgo, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++GO=go-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < hello.go ++package main ++import "fmt" ++func main() { ++ fmt.Println("hello world") ++} ++EOF ++ ++$GO run hello.go ++$GO build hello.go ++echo "build: OK" ++ldd hello ++[ -x hello ] ++./hello ++echo "run: OK" diff --cc debian/tests/libgomp-link index 0000000,0000000..ec7dbc4 new file mode 100755 --- /dev/null +++ b/debian/tests/libgomp-link @@@ -1,0 -1,0 +1,76 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libgfortran, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++CC=gcc-$BV ++F95=gfortran-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < hello-gomp.c ++#include ++#include ++#include ++int main (int argc, char *argv[]) { ++ ++int nthreads, tid; ++ ++/* Fork a team of threads giving them their own copies of variables */ ++#pragma omp parallel private(nthreads, tid) ++ { ++ ++ /* Obtain thread number */ ++ tid = omp_get_thread_num(); ++ printf("Hello World from thread = %d\n", tid); ++ ++ /* Only master thread does this */ ++ if (tid == 0) ++ { ++ nthreads = omp_get_num_threads(); ++ printf("Number of threads = %d\n", nthreads); ++ } ++ ++ } /* All threads join master thread and disband */ ++} ++EOF ++ ++$CC -fopenmp -o gctest hello-gomp.c ++echo "build: OK" ++ldd gctest ++[ -x gctest ] ++./gctest ++echo "run: OK" ++ ++cat < hello-gomp.f ++ program omp_par_do ++ implicit none ++ ++ integer, parameter :: n = 100 ++ real, dimension(n) :: dat, result ++ integer :: i ++ ++ !$OMP PARALLEL DO ++ do i = 1, n ++ result(i) = my_function(dat(i)) ++ end do ++ !$OMP END PARALLEL DO ++ ++ contains ++ ++ function my_function(d) result(y) ++ real, intent(in) :: d ++ real :: y ++ ++ ! do something complex with data to calculate y ++ end function my_function ++ end program omp_par_do ++EOF ++ ++$F95 -fopenmp -o gftest hello-gomp.f ++echo "build: OK" ++ldd gftest ++[ -x gftest ] ++./gftest ++echo "run: OK" diff --cc debian/tests/libgphobos-link index 0000000,0000000..8c1fe26 new file mode 100755 --- /dev/null +++ b/debian/tests/libgphobos-link @@@ -1,0 -1,0 +1,32 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libgphobos, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++GDC=gdc-$BV ++ ++if ! dpkg -l libgphobos-$BV-dev >/dev/null 2>&1; then ++ echo "skip test on architecture without libgphobos-dev" ++ exit 0 ++fi ++ ++cd "$AUTOPKGTEST_TMP" ++cat < libgphobos.d ++immutable str = "Hello, World!"; ++ ++void main() ++{ ++ // Scoped and selective imports can be used. ++ import std.stdio : writeln; ++ writeln(str); ++} ++EOF ++ ++$GDC -o dtest libgphobos.d ++echo "build: OK" ++ldd dtest ++[ -x dtest ] ++./dtest ++echo "run: OK" diff --cc debian/tests/libstdcxx-link index 0000000,0000000..ca39928 new file mode 100755 --- /dev/null +++ b/debian/tests/libstdcxx-link @@@ -1,0 -1,0 +1,26 @@@ ++#!/bin/sh ++# autopkgtest check: Build and run a simple program against libstdc++, ++# to verify basic compile-time and run-time linking functionality. ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++CXX=g++-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < libstdcxx.cc ++#include ++using namespace std; ++ ++int main() { ++ cout << "Hello! World!\n"; ++ return 0; ++} ++EOF ++ ++$CXX -o cxxtest libstdcxx.cc ++echo "build: OK" ++ldd cxxtest ++[ -x cxxtest ] ++./cxxtest ++echo "run: OK" diff --cc debian/tests/runtime-libs index 0000000,0000000..b849ae1 new file mode 100755 --- /dev/null +++ b/debian/tests/runtime-libs @@@ -1,0 -1,0 +1,29 @@@ ++#!/bin/sh ++# autopkgtest check: start a "simple" program and check that ++# dynamic loading of modules works ++ ++set -e ++ ++ ++cd "$AUTOPKGTEST_TMP" ++ ++echo "Running exexutable linked with libgcc and libstdc++ (apt)..." ++if [ -x /usr/bin/apt ]; then ++ apt=/usr/bin/apt ++elif [ -x /bin/apt ]; then ++ apt=/bin/apt ++else ++ echo "apt not found" ++ exit 1 ++fi ++ ++ldd $apt ++apt show libgcc-s1 libstdc++6 ++ ++echo "Running dynamically linked executable (python3)..." ++python3 -c 'print("Hello World!")' ++echo "OK" ++ ++echo "Loading extension module..." ++python3 -c 'import _hashlib; print(_hashlib.__dict__)' ++echo "OK" diff --cc debian/tests/shlib-build index 0000000,0000000..751fadf new file mode 100755 --- /dev/null +++ b/debian/tests/shlib-build @@@ -1,0 -1,0 +1,45 @@@ ++#!/bin/sh ++# autopkgtest check: Build and link against a simple shared library, to test ++# basic binutils compile-time and run-time linking functionality. ++# ++# (C) 2012 Canonical Ltd. ++# Author: Martin Pitt ++ ++set -e ++ ++BV=$(sed '/^Depends: gcc-\([0-9.]\+\).*/!d;s//\1/;q' debian/tests/control) ++CC=gcc-$BV ++ ++cd "$AUTOPKGTEST_TMP" ++cat < testlib.c ++ ++int ultimate_answer() ++{ ++ return 42; ++} ++EOF ++ ++$CC -Wall -Werror -shared -o libultimate.so testlib.c ++echo "library build: OK" ++ ++# should export the symbol ++nm -D libultimate.so | grep -q 'T ultimate_answer' ++ ++# link it against a program ++cat < testprog.c ++#include ++ ++int ultimate_answer(); ++ ++int main() ++{ ++ assert (ultimate_answer() == 42); ++ return 0; ++} ++EOF ++ ++$CC -Wall -Werror -L . -o testprog testprog.c -lultimate ++echo "program build: OK" ++[ -x testprog ] ++LD_LIBRARY_PATH=. ./testprog ++echo "run: OK" diff --cc debian/usage-wrapper.py index 0000000,0000000..bf8831f new file mode 100755 --- /dev/null +++ b/debian/usage-wrapper.py @@@ -1,0 -1,0 +1,399 @@@ ++#!/usr/bin/env python3 ++ ++import argparse ++import math ++import os ++import subprocess ++import sys ++import threading ++import time ++ ++try: ++ import psutil ++except ImportError: ++ print(f'{sys.argv[0]}: the psutil module is required.', file=sys.stderr) ++ sys.exit(1) ++ ++try: ++ import matplotlib ++ import matplotlib.pyplot as plt ++ from matplotlib.lines import Line2D ++except ImportError: ++ plt = None ++ ++ ++def to_gigabyte(value): ++ return value / 1024**3 ++ ++ ++INTERVAL = 0.33 ++LW = 0.5 ++ ++global_n = 0 ++global_cpu_data_sum = 0 ++global_memory_data_sum = 0 ++global_cpu_data_max = 0 ++global_memory_data_min = to_gigabyte(psutil.virtual_memory().total) ++global_memory_data_max = 0 ++global_swap_data_min = to_gigabyte(psutil.swap_memory().total) ++global_swap_data_max = 0 ++global_disk_data_total = to_gigabyte(psutil.disk_usage('.').total) ++global_disk_data_start = to_gigabyte(psutil.disk_usage('.').used) ++ ++global_timestamps = [] ++global_cpu_data = [] ++global_memory_data = [] ++global_process_usage = [] ++global_process_hogs = {} ++ ++process_name_map = {} ++lock = threading.Lock() ++ ++done = False ++start_ts = time.monotonic() ++cpu_count = psutil.cpu_count() ++ ++special_processes = {'ld': 'gold', ++ 'WPA': 'deepskyblue', ++ 'WPA-stream': 'lightblue', ++ 'ltrans': 'forestgreen', ++ 'as': 'coral', ++ 'GCC': 'gray', ++ 'clang': 'darkgray', ++ 'rust': 'brown', ++ 'go': 'hotpink', ++ 'dwz': 'limegreen', ++ 'rpm/dpkg': 'plum'} ++for i, k in enumerate(special_processes.keys()): ++ process_name_map[k] = i ++ ++ ++descr = 'Run command and measure memory and CPU utilization' ++parser = argparse.ArgumentParser(description=descr) ++parser.add_argument('command', metavar='command', ++ help='Command', nargs=argparse.REMAINDER) ++parser.add_argument('-c', '--command', dest='command1', ++ help='command as a single argument') ++parser.add_argument('-v', '--verbose', action='store_true', help='Verbose') ++parser.add_argument('--summary-only', dest='summary_only', ++ action='store_true', ++ help='No plot, just a summary at the end') ++parser.add_argument('--base-memory', action='store_true', ++ help='Adjust memory to include the system load') ++parser.add_argument('-s', '--separate-ltrans', action='store_true', ++ help='Separate LTRANS processes in graph') ++parser.add_argument('-o', '--output', default='usage.svg', ++ help='Path to output image (default: usage.svg)') ++parser.add_argument('-r', '--ranges', ++ help='Plot only the selected time ranges ' ++ '(e.g. 20-30, 0-1000)') ++parser.add_argument('-t', '--title', help='Graph title') ++parser.add_argument('-m', '--memory-hog-threshold', type=float, ++ help='Report about processes that consume the amount of ' ++ 'memory (in GB)') ++parser.add_argument('-f', '--frequency', type=float, ++ default=INTERVAL, ++ help='Frequency of measuring (in seconds)') ++parser.add_argument('-j', '--jobs', type=int, ++ default=cpu_count, dest='used_cpus', ++ help='Scale up CPU data to used CPUs ' ++ 'instead of available CPUs') ++args = parser.parse_args() ++ ++if args.command1 and args.command: ++ print(f'{sys.argv[0]}: either use -c "", ' ++ 'or append the command', file=sys.stderr) ++ sys.exit(1) ++ ++if not args.summary_only and plt is None: ++ print(f'{sys.argv[0]}: use --summary-only, ' ++ 'or install the matplotlib module', file=sys.stderr) ++ sys.exit(1) ++ ++cpu_scale = cpu_count / args.used_cpus ++ ++ ++def get_process_name(proc): ++ name = proc.name() ++ cmdline = proc.cmdline() ++ if name == 'ld' or name == 'ld.gold': ++ return 'ld' ++ elif name == 'lto1-wpa': ++ return 'WPA' ++ elif name == 'lto1-wpa-stream': ++ return 'WPA-stream-out' ++ elif name in ('cc1', 'cc1plus', 'cc1objc', 'f951', 'd21', 'go1', 'gnat1'): ++ return 'GCC' ++ elif name.startswith('clang'): ++ return 'clang' ++ elif name.startswith('rust'): ++ return 'rust' ++ elif name in ('as', 'dwz', 'go'): ++ return name ++ elif name == 'rpmbuild' or name.startswith('dpkg'): ++ return 'rpm/dpkg' ++ elif '-fltrans' in cmdline: ++ if args.separate_ltrans: ++ return 'ltrans-%d' % proc.pid ++ else: ++ return 'ltrans' ++ return None ++ ++ ++def record_process_memory_hog(proc, memory, timestamp): ++ if args.memory_hog_threshold: ++ if memory >= args.memory_hog_threshold: ++ cmd = ' '.join(proc.cmdline()) ++ tpl = (memory, timestamp) ++ if cmd not in global_process_hogs: ++ global_process_hogs[cmd] = tpl ++ elif memory > global_process_hogs[cmd][0]: ++ global_process_hogs[cmd] = tpl ++ ++ ++def record(): ++ global global_n, global_cpu_data_sum, global_cpu_data_max ++ global global_memory_data_sum, global_memory_data_min ++ global global_memory_data_max ++ global global_swap_data_min, global_swap_data_max ++ ++ active_pids = {} ++ while not done: ++ timestamp = time.monotonic() - start_ts ++ used_cpu = psutil.cpu_percent(interval=args.frequency) * cpu_scale ++ used_memory = to_gigabyte(psutil.virtual_memory().used) ++ used_swap = to_gigabyte(psutil.swap_memory().used) ++ if not args.summary_only: ++ global_timestamps.append(timestamp) ++ global_memory_data.append(used_memory) ++ global_cpu_data.append(used_cpu) ++ ++ global_n += 1 ++ global_cpu_data_sum += used_cpu ++ global_memory_data_sum += used_memory ++ global_cpu_data_max = max(global_cpu_data_max, used_cpu) ++ global_memory_data_min = min(global_memory_data_min, used_memory) ++ global_memory_data_max = max(global_memory_data_max, used_memory) ++ global_swap_data_min = min(global_swap_data_min, used_swap) ++ global_swap_data_max = max(global_swap_data_max, used_swap) ++ ++ entry = {} ++ seen_pids = set() ++ for proc in psutil.Process().children(recursive=True): ++ try: ++ memory = to_gigabyte(proc.memory_info().rss) ++ record_process_memory_hog(proc, memory, timestamp) ++ name = get_process_name(proc) ++ if name: ++ seen_pids.add(proc.pid) ++ if proc.pid not in active_pids: ++ active_pids[proc.pid] = proc ++ else: ++ proc = active_pids[proc.pid] ++ cpu = proc.cpu_percent() / args.used_cpus ++ if name not in process_name_map: ++ length = len(process_name_map) ++ process_name_map[name] = length ++ if name not in entry: ++ entry[name] = {'memory': 0, 'cpu': 0} ++ entry[name]['cpu'] += cpu ++ # FIXME: ignore WPA streaming memory - COW makes it bogus ++ if name != 'WPA-stream-out': ++ entry[name]['memory'] += memory ++ except Exception: ++ # the process can be gone ++ pass ++ for pid in list(active_pids.keys()): ++ if pid not in seen_pids: ++ del active_pids[pid] ++ if args.verbose: ++ print(entry, flush=True) ++ if not args.summary_only: ++ global_process_usage.append(entry) ++ ++ ++def stack_values(process_usage, key): ++ stacks = [] ++ for _ in range(len(process_name_map)): ++ stacks.append([]) ++ for values in process_usage: ++ for k, v in process_name_map.items(): ++ if k in values: ++ stacks[v].append(values[k][key]) ++ else: ++ stacks[v].append(0) ++ return stacks ++ ++ ++def get_footnote(): ++ hostname = os.uname()[1].split('.')[0] ++ cpu_average = global_cpu_data_sum / global_n ++ cpu_max = global_cpu_data_max ++ base_memory = global_memory_data_min ++ peak_memory = global_memory_data_max ++ total_mem = to_gigabyte(psutil.virtual_memory().total) ++ return (f'host: {hostname}; CPUs: {args.used_cpus}/{cpu_count};' ++ f' CPU avg: {cpu_average:.0f}%;' ++ f' CPU max: {cpu_max:.0f}%;' ++ f' base memory: {base_memory:.1f} GB;' ++ f' peak memory: {peak_memory:.1f} GB;' ++ f' total memory: {total_mem:.1f} GB') ++ ++ ++def get_footnote2(): ++ peak_swap = global_swap_data_max ++ total_swap = to_gigabyte(psutil.swap_memory().total) ++ disk_total = global_disk_data_total ++ disk_start = global_disk_data_start ++ disk_end = to_gigabyte(psutil.disk_usage('.').used) ++ disk_delta = disk_end - disk_start ++ return (f'swap peak/total: {peak_swap:.1f}/{total_swap:.1f} GB;' ++ f' disk start/end/total: {disk_start:.1f}/{disk_end:.1f}/{disk_total:.1f} GB;' ++ f' disk delta: {disk_delta:.1f} GB') ++ ++ ++def generate_graph(time_range): ++ timestamps = [] ++ cpu_data = [] ++ memory_data = [] ++ process_usage = [] ++ ++ # filter date by timestamp ++ for i, ts in enumerate(global_timestamps): ++ if not time_range or time_range[0] <= ts and ts <= time_range[1]: ++ timestamps.append(ts) ++ cpu_data.append(global_cpu_data[i]) ++ memory_data.append(global_memory_data[i]) ++ process_usage.append(global_process_usage[i]) ++ ++ if not timestamps: ++ if args.verbose: ++ print('No data for range: %s' % str(time_range)) ++ return ++ ++ peak_memory = max(memory_data) ++ ++ fig, (cpu_subplot, mem_subplot) = plt.subplots(2, sharex=True) ++ title = args.title if args.title else '' ++ if time_range: ++ title += ' (%d-%d s)' % (time_range[0], time_range[1]) ++ fig.suptitle(title, fontsize=17) ++ fig.set_figheight(5) ++ fig.set_figwidth(10) ++ # scale cpu axis ++ local_peak_cpu = max(cpu_data) ++ cpu_ylimit = (local_peak_cpu // 10) * 11 + 5 ++ if cpu_ylimit > 200: ++ cpu_ylimit = 200 ++ cpu_subplot.set_title('CPU usage') ++ cpu_subplot.set_ylabel('%') ++ cpu_subplot.plot(timestamps, cpu_data, c='blue', lw=LW, label='total') ++ cpu_subplot.set_ylim([0, cpu_ylimit]) ++ cpu_subplot.axhline(color='r', alpha=0.5, y=100.0 / args.used_cpus, lw=LW, ++ linestyle='dotted', label='single core') ++ cpu_subplot.set_xlim(left=time_range[0] if time_range else 0) ++ cpu_subplot.grid(True) ++ ++ mem_subplot.plot(timestamps, memory_data, c='blue', lw=LW, label='total') ++ mem_subplot.set_title('Memory usage') ++ mem_subplot.set_ylabel('GB') ++ mem_subplot.set_xlabel('time') ++ ++ # scale it to a reasonable limit ++ limit = 1 ++ while peak_memory > limit: ++ limit *= 2 ++ if limit > 2 and limit * 0.75 >= peak_memory: ++ limit = int(limit * 0.75) ++ mem_subplot.set_ylim([0, 1.1 * limit]) ++ mem_subplot.set_yticks(range(0, limit + 1, math.ceil(limit / 8))) ++ mem_subplot.grid(True) ++ ++ # Try to use the newer colormaps attribute; if not available, fallback ++ try: ++ colors = list(matplotlib.colormaps['tab20c'].colors * 100) ++ except AttributeError: ++ colors = list(plt.cm.get_cmap('tab20c').colors * 100) ++ for name, color in special_processes.items(): ++ if name in process_name_map: ++ colors[process_name_map[name]] = color ++ ++ mem_stacks = stack_values(process_usage, 'memory') ++ cpu_stacks = stack_values(process_usage, 'cpu') ++ if mem_stacks: ++ mem_subplot.stackplot(timestamps, mem_stacks, ++ colors=colors) ++ cpu_subplot.stackplot(timestamps, cpu_stacks, ++ colors=colors) ++ ++ # generate custom legend ++ colors = special_processes.values() ++ custom_lines = [Line2D([0], [0], color=x, lw=5) for x in colors] ++ custom_lines.insert(0, Line2D([0], [0], color='b', lw=LW)) ++ custom_lines.insert(0, Line2D([0], [0], color='r', alpha=0.5, ++ linestyle='dotted', lw=LW)) ++ names = ['single core', 'total'] + list(special_processes.keys()) ++ fig.legend(custom_lines, names, loc='right', prop={'size': 6}) ++ ++ filename = args.output ++ if time_range: ++ tr = '-%d-%d' % (time_range[0], time_range[1]) ++ filename = os.path.splitext(args.output)[0] + tr + '.svg' ++ plt.subplots_adjust(bottom=0.15) ++ plt.figtext(0.1, 0.04, get_footnote(), fontsize='small') ++ plt.figtext(0.1, 0.01, get_footnote2(), fontsize='small') ++ plt.savefig(filename) ++ if args.verbose: ++ print('Saving plot to %s' % filename) ++ ++ ++def summary(): ++ print(f'SUMMARY: {get_footnote()}') ++ print(f'SUMMARY: {get_footnote2()}') ++ if global_process_hogs: ++ print(f'PROCESS MEMORY HOGS (>={args.memory_hog_threshold:.1f} GB):') ++ items = sorted(global_process_hogs.items(), key=lambda x: x[1][0], ++ reverse=True) ++ for cmdline, (memory, ts) in items: ++ print(f' {memory:.1f} GB: {ts:.1f} s: {cmdline}') ++ ++ ++thread = threading.Thread(target=record, args=()) ++thread.start() ++ ++ranges = [] ++if args.ranges: ++ for r in args.ranges.split(','): ++ parts = r.split('-') ++ assert len(parts) == 2 ++ ranges.append([int(x) for x in parts]) ++ ++if args.verbose: ++ print('Ranges are %s' % str(ranges)) ++ print('Running command', flush=True) ++ ++cp = None ++try: ++ if args.command1: ++ cp = subprocess.run(args.command1, shell=True) ++ else: ++ cp = subprocess.run(args.command) ++except KeyboardInterrupt: ++ rv = 2 ++finally: ++ done = True ++ thread.join() ++ summary() ++ if global_memory_data: ++ min_memory = min(global_memory_data) ++ if not args.base_memory: ++ global_memory_data = [x - min_memory for x in global_memory_data] ++ ++ if plt: ++ generate_graph(None) ++ for r in ranges: ++ generate_graph(r) ++ if cp: ++ rv = cp.returncode ++ ++sys.exit(rv) diff --cc debian/watch index 0000000,0000000..e20ee9a new file mode 100644 --- /dev/null +++ b/debian/watch @@@ -1,0 -1,0 +1,3 @@@ ++version=4 ++ftp://gcc.gnu.org/pub/gcc/releases/gcc-(15\.[\d\.]*)/ \ ++ gcc-([\d\.]+)\.tar\.xz debian uupdate diff --cc debian/watch.snap index 0000000,0000000..5bf474e new file mode 100644 --- /dev/null +++ b/debian/watch.snap @@@ -1,0 -1,0 +1,3 @@@ ++version=4 ++ftp://gcc.gnu.org/pub/gcc/snapshots/(16-[\d]+)/ \ ++ gcc-16-([\d\.]+)\.tar\.xz debian uupdate